@datagrok/bio 2.11.13 → 2.11.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/dist/23.js +2 -0
  2. package/dist/23.js.map +1 -0
  3. package/dist/282.js +2 -0
  4. package/dist/282.js.map +1 -0
  5. package/dist/361.js +1 -1
  6. package/dist/361.js.map +1 -1
  7. package/dist/40.js +2 -0
  8. package/dist/40.js.map +1 -0
  9. package/dist/562.js +2 -0
  10. package/dist/562.js.map +1 -0
  11. package/dist/586.js +2 -0
  12. package/dist/586.js.map +1 -0
  13. package/dist/65.js +2 -0
  14. package/dist/65.js.map +1 -0
  15. package/dist/{931.js → 935.js} +3 -3
  16. package/dist/935.js.map +1 -0
  17. package/dist/package-test.js +1 -1
  18. package/dist/package-test.js.map +1 -1
  19. package/dist/package.js +1 -1
  20. package/dist/package.js.map +1 -1
  21. package/package.json +4 -4
  22. package/scripts/sequence_generator.py +24 -22
  23. package/src/demo/bio05-helm-msa-sequence-space.ts +53 -13
  24. package/src/demo/utils.ts +2 -1
  25. package/src/function-edtiors/split-to-monomers-editor.ts +2 -2
  26. package/src/package.ts +80 -177
  27. package/src/tests/pepsea-tests.ts +1 -1
  28. package/src/tests/sequence-space-utils.ts +6 -2
  29. package/src/tests/similarity-diversity-tests.ts +16 -4
  30. package/src/utils/cell-renderer.ts +1 -1
  31. package/src/utils/helm-to-molfile.ts +1 -1
  32. package/src/utils/monomer-lib.ts +1 -1
  33. package/src/utils/pepsea.ts +16 -1
  34. package/src/viewers/vd-regions-viewer.ts +42 -16
  35. package/src/viewers/web-logo-viewer.ts +40 -20
  36. package/dist/1.js +0 -2
  37. package/dist/1.js.map +0 -1
  38. package/dist/190.js +0 -2
  39. package/dist/190.js.map +0 -1
  40. package/dist/381.js +0 -2
  41. package/dist/381.js.map +0 -1
  42. package/dist/770.js +0 -2
  43. package/dist/770.js.map +0 -1
  44. package/dist/868.js +0 -2
  45. package/dist/868.js.map +0 -1
  46. package/dist/931.js.map +0 -1
  47. package/src/utils/err-info.ts +0 -28
  48. /package/dist/{931.js.LICENSE.txt → 935.js.LICENSE.txt} +0 -0
@@ -1,10 +1,12 @@
1
- import {category, test, expect, awaitCheck, delay} from '@datagrok-libraries/utils/src/test';
2
1
  import * as DG from 'datagrok-api/dg';
3
- import {createTableView} from './utils';
4
2
  import * as grok from 'datagrok-api/grok';
3
+
4
+ import {category, test, expect, awaitCheck, delay} from '@datagrok-libraries/utils/src/test';
5
5
  import {SequenceSimilarityViewer} from '../analysis/sequence-similarity-viewer';
6
6
  import {SequenceDiversityViewer} from '../analysis/sequence-diversity-viewer';
7
7
 
8
+ import {_package} from '../package-test';
9
+
8
10
  category('similarity/diversity', async () => {
9
11
  test('similaritySearchViewer', async () => {
10
12
  await _testSimilaritySearchViewer();
@@ -16,7 +18,12 @@ category('similarity/diversity', async () => {
16
18
  });
17
19
 
18
20
  async function _testSimilaritySearchViewer() {
19
- const moleculesView = await createTableView('tests/sample_MSA_data.csv');
21
+ const csv = await _package.files.readAsText('tests/sample_MSA_data.csv');
22
+ const df = DG.DataFrame.fromCsv(csv);
23
+ await grok.data.detectSemanticTypes(df);
24
+ const moleculesView = grok.shell.addTableView(df);
25
+ const seqCol = moleculesView.dataFrame.getCol('MSA');
26
+ expect(seqCol.semType, DG.SEMTYPE.MACROMOLECULE);
20
27
 
21
28
  const viewer: SequenceSimilarityViewer = (await moleculesView.dataFrame.plot
22
29
  .fromType('Sequence Similarity Search')) as SequenceSimilarityViewer;
@@ -61,7 +68,12 @@ async function _testSimilaritySearchViewer() {
61
68
  }
62
69
 
63
70
  async function _testDiversitySearchViewer() {
64
- const moleculesView = await createTableView('tests/sample_MSA_data.csv');
71
+ const csv = await _package.files.readAsText('tests/sample_MSA_data.csv');
72
+ const df = DG.DataFrame.fromCsv(csv);
73
+ const moleculesView = grok.shell.addTableView(df);
74
+ await grok.data.detectSemanticTypes(df);
75
+ const seqCol = moleculesView.dataFrame.getCol('MSA');
76
+ expect(seqCol.semType, DG.SEMTYPE.MACROMOLECULE);
65
77
 
66
78
  const viewer: SequenceDiversityViewer = (await moleculesView.dataFrame.plot
67
79
  .fromType('Sequence Diversity Search')) as SequenceDiversityViewer;
@@ -27,7 +27,7 @@ import * as C from './constants';
27
27
  import {_package, getBioLib} from '../package';
28
28
  import {ISeqSplitted} from '@datagrok-libraries/bio/src/utils/macromolecule/types';
29
29
  import {getSplitter} from '@datagrok-libraries/bio/src/utils/macromolecule/utils';
30
- import {errInfo} from './err-info';
30
+ import {errInfo} from '@datagrok-libraries/bio/src/utils/err-info';
31
31
 
32
32
 
33
33
  type TempType = { [tagName: string]: any };
@@ -7,9 +7,9 @@ import {MolfileHandler} from '@datagrok-libraries/chem-meta/src/parsing-utils/mo
7
7
  import {MolfileHandlerBase} from '@datagrok-libraries/chem-meta/src/parsing-utils/molfile-handler-base';
8
8
  import {RDMol, RDModule} from '@datagrok-libraries/chem-meta/src/rdkit-api';
9
9
  import {HELM_POLYMER_TYPE, HELM_RGROUP_FIELDS} from '@datagrok-libraries/bio/src/utils/const';
10
+ import {errInfo} from '@datagrok-libraries/bio/src/utils/err-info';
10
11
 
11
12
  import {MonomerLibHelper} from './monomer-lib';
12
- import {errInfo} from './err-info';
13
13
 
14
14
  import {_package} from '../package';
15
15
 
@@ -42,7 +42,7 @@ export async function manageFiles() {
42
42
  export async function getLibraryPanelUI(): Promise<DG.Widget> {
43
43
  //@ts-ignore
44
44
  const filesButton: HTMLButtonElement = ui.button('Manage', manageFiles);
45
- const inputsForm: HTMLDivElement = ui.inputs([]);
45
+ const inputsForm: HTMLElement = ui.inputs([]);
46
46
  const libFileNameList: string[] = await getLibFileNameList();
47
47
 
48
48
  const settings = await getUserLibSettings();
@@ -1,9 +1,24 @@
1
1
  /* Do not change these import lines to match external modules in webpack configuration */
2
2
  import * as grok from 'datagrok-api/grok';
3
3
  import * as DG from 'datagrok-api/dg';
4
+
5
+ import {Subject} from 'rxjs';
6
+
7
+ import {testEvent} from '@datagrok-libraries/utils/src/test';
4
8
  import {NOTATION, TAGS as bioTAGS, ALIGNMENT, ALPHABET} from '@datagrok-libraries/bio/src/utils/macromolecule';
9
+
5
10
  import * as C from './constants';
6
11
 
12
+ import {_package} from '../package';
13
+
14
+ export const Pepsea = new class {
15
+ public readonly dcName: string = 'bio';
16
+
17
+ public async getDockerContainer(): Promise<DG.DockerContainer> {
18
+ return await grok.dapi.docker.dockerContainers.filter(this.dcName).first();
19
+ }
20
+ }();
21
+
7
22
  export const pepseaMethods = ['mafft --auto', 'mafft', 'linsi', 'ginsi', 'einsi', 'fftns', 'fftnsi', 'nwns', 'nwnsi'];
8
23
  const alignmentObjectMetaKeys = ['AlignedSeq', 'AlignedSubpeptide', 'HELM', 'ID', 'PolymerID'];
9
24
  type PepseaResponse = {
@@ -28,7 +43,7 @@ export async function runPepsea(srcCol: DG.Column<string>, unUsedName: string,
28
43
  method: typeof pepseaMethods[number] = 'ginsi', gapOpen: number = 1.53, gapExtend: number = 0.0,
29
44
  clustersCol: DG.Column<string | number> | null = null,
30
45
  ): Promise<DG.Column<string> | null> {
31
- const pepseaContainer = await grok.dapi.docker.dockerContainers.filter('bio').first();
46
+ const pepseaContainer = await Pepsea.getDockerContainer();
32
47
  if (pepseaContainer.status !== 'started' && pepseaContainer.status !== 'checking') {
33
48
  grok.log.warning('PepSeA container has not started yet');
34
49
  return null;
@@ -2,17 +2,20 @@ import * as ui from 'datagrok-api/ui';
2
2
  import * as grok from 'datagrok-api/grok';
3
3
  import * as DG from 'datagrok-api/dg';
4
4
 
5
- import {fromEvent, Unsubscribable} from 'rxjs';
5
+ import {fromEvent, Observable, Subject, Unsubscribable} from 'rxjs';
6
6
 
7
+ import {testEvent} from '@datagrok-libraries/utils/src/test';
7
8
  import {
8
9
  IVdRegionsViewer,
9
10
  VdRegion, VdRegionType,
10
11
  VdRegionsProps, VdRegionsPropsDefault,
11
12
  } from '@datagrok-libraries/bio/src/viewers/vd-regions';
13
+ import {PromiseSyncer} from '@datagrok-libraries/bio/src/utils/syncer';
12
14
  import {FilterSources, IWebLogoViewer, PositionHeight} from '@datagrok-libraries/bio/src/viewers/web-logo';
15
+ import {errInfo} from '@datagrok-libraries/bio/src/utils/err-info';
16
+
13
17
 
14
18
  import {WebLogoViewer, PROPS as wlPROPS} from '../viewers/web-logo-viewer';
15
- import {errInfo} from '../utils/err-info';
16
19
 
17
20
  import {_package} from '../package';
18
21
 
@@ -121,8 +124,15 @@ export class VdRegionsViewer extends DG.JsViewer implements IVdRegionsViewer {
121
124
  // -- Behavior --
122
125
  this.filterSource = this.string(PROPS.filterSource, defaults.filterSource,
123
126
  {category: PROPS_CATS.BEHAVIOR, choices: Object.values(FilterSources)}) as FilterSources;
127
+
128
+ this.viewSyncer = new PromiseSyncer(_package.logger);
124
129
  }
125
130
 
131
+ private static viewerCounter: number = -1;
132
+ private readonly viewerId: number = ++VdRegionsViewer.viewerCounter;
133
+
134
+ private viewerToLog(): string { return `VdRegionsViewer<${this.viewerId}>`; }
135
+
126
136
  public async init() {
127
137
  //#region regionsDF with filter
128
138
  // this.regionsDf = DG.DataFrame.fromObjects(this.regions);
@@ -153,19 +163,16 @@ export class VdRegionsViewer extends DG.JsViewer implements IVdRegionsViewer {
153
163
  }
154
164
 
155
165
  override detach() {
166
+ const logPrefix = `${this.viewerToLog()}.detach()`;
156
167
  const superDetach = super.detach.bind(this);
157
- this.viewPromise = this.viewPromise.then(async () => { // detach
168
+ this.viewSyncer.sync(`${logPrefix}`, async () => { // detach
158
169
  if (this.setDataInProgress) return; // check setDataInProgress synced
159
170
  if (this.viewed) {
160
171
  await this.destroyView('detach');
161
172
  this.viewed = false;
162
173
  }
163
174
  superDetach();
164
- })
165
- .catch((err: any) => {
166
- const [errMsg, errStack] = errInfo(err);
167
- _package.logger.error(errMsg, undefined, errStack);
168
- });
175
+ });
169
176
  }
170
177
 
171
178
  override onTableAttached() {
@@ -228,13 +235,14 @@ export class VdRegionsViewer extends DG.JsViewer implements IVdRegionsViewer {
228
235
 
229
236
  // TODO: .onTableAttached is not calling on dataFrame set, onPropertyChanged also not calling
230
237
  public setData(regions: VdRegion[]) {
238
+ const logPrefix = `${this.viewerToLog()}.setData()`;
231
239
  // const setDataInId = ++this.setDataInCount;
232
- _package.logger.debug('Bio: VdRegionsViewer.setData(), in, ' +
240
+ _package.logger.debug(`${logPrefix}, in, ` +
233
241
  // `viewerId = ${this.viewerId}, setDataInId = ${setDataInId}, ` +
234
242
  `regions.length = ${regions.length}`
235
243
  );
236
244
 
237
- this.viewPromise = this.viewPromise.then(async () => { // setData
245
+ this.viewSyncer.sync(`${logPrefix}`, async () => { // setData
238
246
  // _package.logger.debug('Bio: VdRegionsViewer.setData(), in sync, ' +
239
247
  // `viewerId = ${this.viewerId}, setDataInId = ${setDataInId}, ` +
240
248
  // `regions.length = ${regions.length}`);
@@ -261,10 +269,6 @@ export class VdRegionsViewer extends DG.JsViewer implements IVdRegionsViewer {
261
269
  await this.buildView('setData');
262
270
  this.viewed = true;
263
271
  }
264
- } catch (err: any) {
265
- const [errMsg, errStack] = errInfo(err);
266
- grok.shell.error(errMsg);
267
- _package.logger.error(errMsg, undefined, errStack);
268
272
  } finally {
269
273
  // _package.logger.debug('Bio: VdRegionsViewer.setData(), finally, ' +
270
274
  // `viewerId = ${this.viewerId}, setDataInId = ${setDataInId}, ` +
@@ -276,7 +280,7 @@ export class VdRegionsViewer extends DG.JsViewer implements IVdRegionsViewer {
276
280
 
277
281
  // -- View --
278
282
 
279
- private viewPromise: Promise<void> = Promise.resolve();
283
+ private viewSyncer: PromiseSyncer;
280
284
  private setDataInProgress: boolean = false;
281
285
 
282
286
  private host: HTMLElement | null = null;
@@ -479,9 +483,10 @@ export class VdRegionsViewer extends DG.JsViewer implements IVdRegionsViewer {
479
483
  }
480
484
 
481
485
  private filterSourceInputOnValueChanged(): void {
486
+ const logPrefix = `${this.viewerToLog()}.filterSourceInputOnValueChanged()`;
482
487
  const filterSourceValue = this.filterSourceInput.value;
483
488
  // Using promise to prevent 'Bad state: Cannot fire new event. Controller is already firing an event'
484
- this.viewPromise = this.viewPromise.then(() => {
489
+ this.viewSyncer.sync(`${logPrefix}`, async () => {
485
490
  if (this.filterSource !== filterSourceValue) {
486
491
  this.props.getProperty(PROPS.filterSource).set(this, filterSourceValue); // to update value in property panel
487
492
 
@@ -495,4 +500,25 @@ export class VdRegionsViewer extends DG.JsViewer implements IVdRegionsViewer {
495
500
  }
496
501
  });
497
502
  }
503
+
504
+ // -- IRenderer --
505
+
506
+ private _onRendered: Subject<void> = new Subject<void>();
507
+
508
+ public get onRendered(): Observable<void> { return this._onRendered; }
509
+
510
+ public invalidate(): void {
511
+ const logPrefix = `${this.viewerToLog()}.invalidate()`;
512
+ // Put the event trigger in the tail of the synced calls queue.
513
+ this.viewSyncer.sync(`${logPrefix}`, async () => {
514
+ // update view / render
515
+ this._onRendered.next();
516
+ });
517
+ }
518
+
519
+ public async awaitRendered(timeout: number | undefined = 5000): Promise<void> {
520
+ await testEvent(this.onRendered, () => {}, () => {
521
+ this.invalidate();
522
+ }, timeout);
523
+ }
498
524
  }
@@ -17,9 +17,11 @@ import {
17
17
  import {errorToConsole} from '@datagrok-libraries/utils/src/to-console';
18
18
  import {intToHtmlA} from '@datagrok-libraries/utils/src/color';
19
19
  import {ISeqSplitted} from '@datagrok-libraries/bio/src/utils/macromolecule/types';
20
+ import {errInfo} from '@datagrok-libraries/bio/src/utils/err-info';
21
+ import {testEvent} from '@datagrok-libraries/utils/src/test';
22
+ import {PromiseSyncer} from '@datagrok-libraries/bio/src/utils/syncer';
20
23
 
21
24
  import {AggFunc, getAgg} from '../utils/agg';
22
- import {errInfo} from '../utils/err-info';
23
25
  import {buildCompositionTable} from '../widgets/composition-analysis-widget';
24
26
 
25
27
  import {_package} from '../package';
@@ -295,11 +297,9 @@ const POSITION_LABELS_HEIGHT: number = 12;
295
297
 
296
298
  export class WebLogoViewer extends DG.JsViewer implements IWebLogoViewer {
297
299
  public static residuesSet = 'nucleotides';
298
- private static viewerCount: number = 0;
299
300
 
300
301
  private viewed: boolean = false;
301
302
 
302
- private readonly viewerId: number = -1;
303
303
  private unitsHandler: UnitsHandler | null;
304
304
  private initialized: boolean = false;
305
305
 
@@ -381,9 +381,6 @@ export class WebLogoViewer extends DG.JsViewer implements IWebLogoViewer {
381
381
  constructor() {
382
382
  super();
383
383
 
384
- this.viewerId = WebLogoViewer.viewerCount;
385
- WebLogoViewer.viewerCount += 1;
386
-
387
384
  this.textBaseline = 'top';
388
385
  this.unitsHandler = null;
389
386
 
@@ -449,13 +446,20 @@ export class WebLogoViewer extends DG.JsViewer implements IWebLogoViewer {
449
446
  this.canvas.style.width = '100%';
450
447
 
451
448
  /* this.root.style.background = '#FFEEDD'; */
449
+ this.viewSyncer = new PromiseSyncer(_package.logger);
452
450
  }
453
451
 
452
+ private static viewerCounter: number = -1;
453
+ private readonly viewerId: number = ++WebLogoViewer.viewerCounter;
454
+
455
+ private viewerToLog(): string { return `MolstarViewer<${this.viewerId}>`; }
456
+
454
457
  // -- Data --
455
458
 
456
459
  setData(): void {
457
- _package.logger.debug(`Bio: WebLogoViewer<${this.viewerId}>.setData(), in`);
458
- this.viewPromise = this.viewPromise.then(async () => { // setData
460
+ const logPrefix = `${this.viewerToLog()}.setData()`;
461
+ _package.logger.debug(`${logPrefix}, in`);
462
+ this.viewSyncer.sync(`${logPrefix}`, async () => { // setData
459
463
  if (!this.setDataInProgress) this.setDataInProgress = true; else return; // check setDataInProgress synced
460
464
  try {
461
465
  if (this.viewed) {
@@ -471,19 +475,16 @@ export class WebLogoViewer extends DG.JsViewer implements IWebLogoViewer {
471
475
  await this.buildView(); //requests rendering
472
476
  this.viewed = true;
473
477
  }
474
- } catch (err: any) {
475
- const [errMsg, errStack] = errInfo(err);
476
- grok.shell.error(errMsg);
477
- _package.logger.error(errMsg, undefined, errStack);
478
478
  } finally {
479
479
  this.setDataInProgress = false;
480
480
  }
481
481
  });
482
+ _package.logger.debug(`${logPrefix}, out`);
482
483
  }
483
484
 
484
485
  // -- View --
485
486
 
486
- private viewPromise: Promise<void> = Promise.resolve();
487
+ private viewSyncer: PromiseSyncer;
487
488
  private setDataInProgress: boolean = false;
488
489
  private viewSubs: Unsubscribable[] = [];
489
490
 
@@ -892,21 +893,19 @@ export class WebLogoViewer extends DG.JsViewer implements IWebLogoViewer {
892
893
 
893
894
  /** Remove all handlers when table is a detach */
894
895
  public override async detach() {
895
- _package.logger.debug(`Bio: WebLogoViewer<${this.viewerId}>.detach(), `);
896
+ const logPrefix = `${this.viewerToLog()}.detach()`;
897
+ _package.logger.debug(`${logPrefix}, in`);
896
898
 
897
899
  const superDetach = super.detach.bind(this);
898
- this.viewPromise = this.viewPromise.then(async () => { // detach
900
+ this.viewSyncer.sync(`${logPrefix}`, async () => { // detach
899
901
  if (this.setDataInProgress) return; // check setDataInProgress synced
900
902
  if (this.viewed) {
901
903
  await this.destroyView();
902
904
  this.viewed = false;
903
905
  }
904
906
  superDetach();
905
- })
906
- .catch((err: any) => {
907
- const [errMsg, errStack] = errInfo(err);
908
- _package.logger.error(errMsg, undefined, errStack);
909
- });
907
+ });
908
+ _package.logger.debug(`${logPrefix}, out`);
910
909
  }
911
910
 
912
911
  private _onSizeChanged: Subject<void> = new Subject<void>();
@@ -1275,6 +1274,27 @@ export class WebLogoViewer extends DG.JsViewer implements IWebLogoViewer {
1275
1274
  //throw err; // Do not throw to prevent disabling event handler
1276
1275
  }
1277
1276
  }
1277
+
1278
+ // -- IRenderer --
1279
+
1280
+ private _onRendered: Subject<void> = new Subject<void>();
1281
+
1282
+ public get onRendered(): Observable<void> { return this._onRendered; }
1283
+
1284
+ public invalidate(): void {
1285
+ const logPrefix = `${this.viewerToLog()}.invalidate()`;
1286
+ // Put the event trigger in the tail of the synced calls queue.
1287
+ this.viewSyncer.sync(`${logPrefix}`, async () => {
1288
+ this.invalidate();
1289
+ this._onRendered.next();
1290
+ });
1291
+ }
1292
+
1293
+ public async awaitRendered(timeout: number | undefined = 5000): Promise<void> {
1294
+ await testEvent(this.onRendered, () => {}, () => {
1295
+ this.invalidate();
1296
+ }, timeout);
1297
+ }
1278
1298
  }
1279
1299
 
1280
1300
  function renderPositionLabels(g: CanvasRenderingContext2D,
package/dist/1.js DELETED
@@ -1,2 +0,0 @@
1
- "use strict";(self.webpackChunkbio=self.webpackChunkbio||[]).push([[1],{6814:(t,e,n)=>{n.d(e,{k:()=>r});const r=t=>null==t},779:(t,e,n)=>{function r(t={}){const e=function(){if(!t||!t.scoringMatrix||!t.alphabetIndexes)return(t,e)=>t===e?0:1;if(t.scoringMatrix.length!==Object.keys(t.alphabetIndexes).length)throw new Error("Scoring matrix and alphabet indexes should have the same length");const e=t.alphabetIndexes,n=t.scoringMatrix,r=Math.min(...Object.keys(e).map((t=>t.charCodeAt(0))))+1,a=new Float32Array((n.length+r)*(n.length+r));return Object.entries(e).forEach((([t,r])=>{const h=n[r];Object.entries(e).forEach((([e,r])=>{a[t.charCodeAt(0)*n.length+e.charCodeAt(0)]=h[r]}))})),(t,e)=>a[t.charCodeAt(0)*n.length+e.charCodeAt(0)]}(),n=t?.threshold??0;return(t,r)=>{let a=0;const h=t.length,o=r.length,l=Math.max(h,o)*(1-n);h!==o&&(a=Math.abs(h-o));let c=0;for(let n=0;n<Math.min(h,o);n++)if(t[n]!==r[n]&&(c+=e(t[n],r[n]),c>l))return 1;return c+=a,c/=Math.max(h,o),c}}n.d(e,{j:()=>r})},458:(t,e,n)=>{n.d(e,{r:()=>a});var r=n(1811);function a(){return(t,e)=>(0,r.T)(t,e)/Math.max(t.length,e.length)}},6683:(t,e,n)=>{n.d(e,{n:()=>a});const r={gapOpen:1,gapExtend:.6,scoringMatrix:[[4,-1,-2,-2,0,-1,-1,0,-2,-1,-1,-1,-1,-2,-1,1,0,-3,-2,0,-2,-1,0,-4],[-1,5,0,-2,-3,1,0,-2,0,-3,-2,2,-1,-3,-2,-1,-1,-3,-2,-3,-1,0,-1,-4],[-2,0,6,1,-3,0,0,0,1,-3,-3,0,-2,-3,-2,1,0,-4,-2,-3,3,0,-1,-4],[-2,-2,1,6,-3,0,2,-1,-1,-3,-4,-1,-3,-3,-1,0,-1,-4,-3,-3,4,1,-1,-4],[0,-3,-3,-3,9,-3,-4,-3,-3,-1,-1,-3,-1,-2,-3,-1,-1,-2,-2,-1,-3,-3,-2,-4],[-1,1,0,0,-3,5,2,-2,0,-3,-2,1,0,-3,-1,0,-1,-2,-1,-2,0,3,-1,-4],[-1,0,0,2,-4,2,5,-2,0,-3,-3,1,-2,-3,-1,0,-1,-3,-2,-2,1,4,-1,-4],[0,-2,0,-1,-3,-2,-2,6,-2,-4,-4,-2,-3,-3,-2,0,-2,-2,-3,-3,-1,-2,-1,-4],[-2,0,1,-1,-3,0,0,-2,8,-3,-3,-1,-2,-1,-2,-1,-2,-2,2,-3,0,0,-1,-4],[-1,-3,-3,-3,-1,-3,-3,-4,-3,4,2,-3,1,0,-3,-2,-1,-3,-1,3,-3,-3,-1,-4],[-1,-2,-3,-4,-1,-2,-3,-4,-3,2,4,-2,2,0,-3,-2,-1,-2,-1,1,-4,-3,-1,-4],[-1,2,0,-1,-3,1,1,-2,-1,-3,-2,5,-1,-3,-1,0,-1,-3,-2,-2,0,1,-1,-4],[-1,-1,-2,-3,-1,0,-2,-3,-2,1,2,-1,5,0,-2,-1,-1,-1,-1,1,-3,-1,-1,-4],[-2,-3,-3,-3,-2,-3,-3,-3,-1,0,0,-3,0,6,-4,-2,-2,1,3,-1,-3,-3,-1,-4],[-1,-2,-2,-1,-3,-1,-1,-2,-2,-3,-3,-1,-2,-4,7,-1,-1,-4,-3,-2,-2,-1,-2,-4],[1,-1,1,0,-1,0,0,0,-1,-2,-2,0,-1,-2,-1,4,1,-3,-2,-2,0,0,0,-4],[0,-1,0,-1,-1,-1,-1,-2,-2,-1,-1,-1,-1,-2,-1,1,5,-2,-2,0,-1,-1,0,-4],[-3,-3,-4,-4,-2,-2,-3,-2,-2,-3,-2,-3,-1,1,-4,-3,-2,11,2,-3,-4,-3,-2,-4],[-2,-2,-2,-3,-2,-1,-2,-3,2,-1,-1,-2,-1,3,-3,-2,-2,2,7,-1,-3,-2,-1,-4],[0,-3,-3,-3,-1,-2,-2,-3,-3,3,1,-2,1,-1,-2,-2,0,-3,-1,4,-3,-2,-1,-4],[-2,-1,3,4,-3,0,1,-1,0,-3,-4,0,-3,-3,-2,0,-1,-4,-3,-3,4,1,-1,-4],[-1,0,0,1,-3,3,4,-2,0,-3,-3,1,-1,-3,-1,0,-1,-3,-2,-2,1,4,-1,-4],[0,-1,-1,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,0,0,-2,-1,-1,-1,-1,-1,-4],[-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,1]],alphabetIndexes:{A:0,R:1,N:2,D:3,C:4,Q:5,E:6,G:7,H:8,I:9,L:10,K:11,M:12,F:13,P:14,S:15,T:16,W:17,Y:18,V:19,B:20,Z:21,X:22,"*":23}};function a(t){const e=new Uint16Array(65536),{gapOpen:n,gapExtend:a,scoringMatrix:h,alphabetIndexes:o}={...r,...t};Object.entries(o).forEach((([t,n])=>e[t.charCodeAt(0)]=n));const l=[new Float32Array(1e4),new Float32Array(1e4)];return(t,r)=>{const o=new Array(t.length+1).fill(!1),c=new Array(t.length+1).fill(!1);let s=0,g=1;for(let e=1;e<t.length+1;e++)l[0][e]=-n-(e-1)*a,l[1][e]=0;for(let i=1;i<r.length+1;i++){l[g][0]=-n-(i-1)*a;for(let d=1;d<t.length+1;d++){const f=l[s][d-1]+h[e[t.charCodeAt(d-1)]][e[r.charCodeAt(i-1)]],A=l[s][d]-(o[d]?a:n),u=l[g][d-1]-(c[d-1]?a:n);l[g][d]=Math.max(f,u,A),l[g][d]===f?(o[d]=!1,c[d]=!1):l[g][d]===u?(o[d]=!1,c[d]=!0):(o[d]=!0,c[d]=!1)}s=g,g=(g+1)%2}const i=Math.max(t.length,r.length);return(i-l[s][t.length])/i}}},1811:(t,e,n)=>{n.d(e,{T:()=>a});const r=new Uint32Array(65536),a=(t,e)=>{if(t.length<e.length){const n=e;e=t,t=n}return 0===e.length?t.length:t.length<=32?((t,e)=>{const n=t.length,a=e.length,h=1<<n-1;let o=-1,l=0,c=n,s=n;for(;s--;)r[t.charCodeAt(s)]|=1<<s;for(s=0;s<a;s++){let t=r[e.charCodeAt(s)];const n=t|l;t|=(t&o)+o^o,l|=~(t|o),o&=t,l&h&&c++,o&h&&c--,l=l<<1|1,o=o<<1|~(n|l),l&=n}for(s=n;s--;)r[t.charCodeAt(s)]=0;return c})(t,e):((t,e)=>{const n=e.length,a=t.length,h=[],o=[],l=Math.ceil(n/32),c=Math.ceil(a/32);for(let t=0;t<l;t++)o[t]=-1,h[t]=0;let s=0;for(;s<c-1;s++){let l=0,c=-1;const g=32*s,i=Math.min(32,a)+g;for(let e=g;e<i;e++)r[t.charCodeAt(e)]|=1<<e;for(let t=0;t<n;t++){const n=r[e.charCodeAt(t)],a=o[t/32|0]>>>t&1,s=h[t/32|0]>>>t&1,g=n|l,i=((n|s)&c)+c^c|n|s;let d=l|~(i|c),f=c&i;d>>>31^a&&(o[t/32|0]^=1<<t),f>>>31^s&&(h[t/32|0]^=1<<t),d=d<<1|a,f=f<<1|s,c=f|~(g|d),l=d&g}for(let e=g;e<i;e++)r[t.charCodeAt(e)]=0}let g=0,i=-1;const d=32*s,f=Math.min(32,a-d)+d;for(let e=d;e<f;e++)r[t.charCodeAt(e)]|=1<<e;let A=a;for(let t=0;t<n;t++){const n=r[e.charCodeAt(t)],l=o[t/32|0]>>>t&1,c=h[t/32|0]>>>t&1,s=n|g,d=((n|c)&i)+i^i|n|c;let f=g|~(d|i),u=i&d;A+=f>>>a-1&1,A-=u>>>a-1&1,f>>>31^l&&(o[t/32|0]^=1<<t),u>>>31^c&&(h[t/32|0]^=1<<t),f=f<<1|l,u=u<<1|c,i=u|~(s|f),g=f&s}for(let e=d;e<f;e++)r[t.charCodeAt(e)]=0;return A})(t,e)}}}]);
2
- //# sourceMappingURL=1.js.map
package/dist/1.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"1.js","mappings":"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","sources":["webpack://bio/./node_modules/@datagrok-libraries/ml/src/distance-matrix/utils.js","webpack://bio/./node_modules/@datagrok-libraries/ml/src/macromolecule-distance-functions/hamming.js","webpack://bio/./node_modules/@datagrok-libraries/ml/src/macromolecule-distance-functions/levenstein.js","webpack://bio/./node_modules/@datagrok-libraries/ml/src/macromolecule-distance-functions/needleman-wunsch.js","webpack://bio/./node_modules/fastest-levenshtein/esm/mod.js"],"sourcesContent":["export const isNil = (x) => x === null || x === undefined;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ1dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBpc05pbCA9ICh4OiBhbnkpID0+IHggPT09IG51bGwgfHwgeCA9PT0gdW5kZWZpbmVkO1xuIl19","export function hamming(args = {}) {\n function getDistanceF() {\n if (!args || !args.scoringMatrix || !args.alphabetIndexes)\n return (a, b) => a === b ? 0 : 1;\n if (args.scoringMatrix.length !== Object.keys(args.alphabetIndexes).length)\n throw new Error('Scoring matrix and alphabet indexes should have the same length');\n const indexes = args.alphabetIndexes;\n const matrix = args.scoringMatrix;\n //const matrixMap = new Map<string, Map<string, number>>();\n //const map2: any = {};\n const minCharCode = Math.min(...Object.keys(indexes).map(k => k.charCodeAt(0))) + 1;\n const scorringArray = new Float32Array((matrix.length + minCharCode) * (matrix.length + minCharCode));\n Object.entries(indexes).forEach(([key, index]) => {\n //matrixMap.set(key, new Map<string, number>());\n //map2[key] = {};\n const matrixRow = matrix[index];\n Object.entries(indexes).forEach(([key2, index2]) => {\n //matrixMap.get(key)!.set(key2, matrixRow[index2]);\n scorringArray[key.charCodeAt(0) * matrix.length + key2.charCodeAt(0)] = matrixRow[index2];\n //map2[key][key2] = matrixRow[index2];\n });\n });\n return (a, b) => {\n return scorringArray[a.charCodeAt(0) * matrix.length + b.charCodeAt(0)];\n };\n }\n const distanceF = getDistanceF();\n const threshold = args?.threshold ?? 0;\n return (seq1, seq2) => {\n // hamming distance should only be used with same size strings,\n // but still, lets add a check and if they are not same length add the difference to the result\n let diff = 0;\n const s1l = seq1.length;\n const s2l = seq2.length;\n const thresholdLimit = Math.max(s1l, s2l) * (1 - threshold);\n if (s1l !== s2l)\n diff = Math.abs(s1l - s2l);\n let result = 0;\n for (let i = 0; i < Math.min(s1l, s2l); i++) {\n if (seq1[i] !== seq2[i]) {\n result += distanceF(seq1[i], seq2[i]);\n if (result > thresholdLimit)\n return 1;\n }\n }\n result += diff;\n result /= Math.max(s1l, s2l);\n return result;\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFtbWluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImhhbW1pbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxVQUFVLE9BQU8sQ0FBQyxPQUF3QyxFQUFFO0lBRWhFLFNBQVMsWUFBWTtRQUNuQixJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlO1lBQ3ZELE9BQU8sQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLE1BQU07WUFDeEUsTUFBTSxJQUFJLEtBQUssQ0FBQyxpRUFBaUUsQ0FBQyxDQUFDO1FBQ3JGLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDckMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUNsQywyREFBMkQ7UUFDM0QsdUJBQXVCO1FBQ3ZCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVwRixNQUFNLGFBQWEsR0FBRyxJQUFJLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDdEcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1lBQy9DLGdEQUFnRDtZQUNoRCxpQkFBaUI7WUFDakIsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRTtnQkFDakQsbURBQW1EO2dCQUNuRCxhQUFhLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzFGLHNDQUFzQztZQUN4QyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxDQUFDLENBQVMsRUFBRSxDQUFTLEVBQUUsRUFBRTtZQUM5QixPQUFPLGFBQWEsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFFLENBQUMsQ0FBQTtJQUNILENBQUM7SUFDRCxNQUFNLFNBQVMsR0FBRyxZQUFZLEVBQUUsQ0FBQztJQUVqQyxNQUFNLFNBQVMsR0FBRyxJQUFJLEVBQUUsU0FBUyxJQUFJLENBQUMsQ0FBQztJQUV2QyxPQUFPLENBQUMsSUFBWSxFQUFFLElBQVksRUFBRSxFQUFFO1FBQ3BDLCtEQUErRDtRQUMvRCwrRkFBK0Y7UUFDL0YsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUN4QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3hCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDO1FBQzVELElBQUksR0FBRyxLQUFLLEdBQUc7WUFDYixJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFFN0IsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzNDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDdkIsTUFBTSxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RDLElBQUksTUFBTSxHQUFHLGNBQWM7b0JBQ3pCLE9BQU8sQ0FBQyxDQUFDO2FBQ1o7U0FDRjtRQUNELE1BQU0sSUFBSSxJQUFJLENBQUM7UUFDZixNQUFNLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDN0IsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7bW1EaXN0YW5jZUZ1bmN0aW9uQXJncywgbW1EaXN0YW5jZUZ1bmN0aW9uVHlwZX0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBoYW1taW5nKGFyZ3M6IFBhcnRpYWw8bW1EaXN0YW5jZUZ1bmN0aW9uQXJncz4gPSB7fSk6IG1tRGlzdGFuY2VGdW5jdGlvblR5cGUge1xuXG4gIGZ1bmN0aW9uIGdldERpc3RhbmNlRigpOiAoYTogc3RyaW5nLCBiOiBzdHJpbmcpID0+IG51bWJlciB7XG4gICAgaWYgKCFhcmdzIHx8ICFhcmdzLnNjb3JpbmdNYXRyaXggfHwgIWFyZ3MuYWxwaGFiZXRJbmRleGVzKVxuICAgICAgcmV0dXJuIChhOiBzdHJpbmcsIGI6IHN0cmluZykgPT4gYSA9PT0gYiA/IDAgOiAxO1xuICAgIGlmIChhcmdzLnNjb3JpbmdNYXRyaXgubGVuZ3RoICE9PSBPYmplY3Qua2V5cyhhcmdzLmFscGhhYmV0SW5kZXhlcykubGVuZ3RoKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTY29yaW5nIG1hdHJpeCBhbmQgYWxwaGFiZXQgaW5kZXhlcyBzaG91bGQgaGF2ZSB0aGUgc2FtZSBsZW5ndGgnKTtcbiAgICBjb25zdCBpbmRleGVzID0gYXJncy5hbHBoYWJldEluZGV4ZXM7XG4gICAgY29uc3QgbWF0cml4ID0gYXJncy5zY29yaW5nTWF0cml4O1xuICAgIC8vY29uc3QgbWF0cml4TWFwID0gbmV3IE1hcDxzdHJpbmcsIE1hcDxzdHJpbmcsIG51bWJlcj4+KCk7XG4gICAgLy9jb25zdCBtYXAyOiBhbnkgPSB7fTtcbiAgICBjb25zdCBtaW5DaGFyQ29kZSA9IE1hdGgubWluKC4uLk9iamVjdC5rZXlzKGluZGV4ZXMpLm1hcChrID0+IGsuY2hhckNvZGVBdCgwKSkpICsgMTtcblxuICAgIGNvbnN0IHNjb3JyaW5nQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KChtYXRyaXgubGVuZ3RoICsgbWluQ2hhckNvZGUpICogKG1hdHJpeC5sZW5ndGggKyBtaW5DaGFyQ29kZSkpO1xuICAgIE9iamVjdC5lbnRyaWVzKGluZGV4ZXMpLmZvckVhY2goKFtrZXksIGluZGV4XSkgPT4ge1xuICAgICAgLy9tYXRyaXhNYXAuc2V0KGtleSwgbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKSk7XG4gICAgICAvL21hcDJba2V5XSA9IHt9O1xuICAgICAgY29uc3QgbWF0cml4Um93ID0gbWF0cml4W2luZGV4XTtcbiAgICAgIE9iamVjdC5lbnRyaWVzKGluZGV4ZXMpLmZvckVhY2goKFtrZXkyLCBpbmRleDJdKSA9PiB7XG4gICAgICAgIC8vbWF0cml4TWFwLmdldChrZXkpIS5zZXQoa2V5MiwgbWF0cml4Um93W2luZGV4Ml0pO1xuICAgICAgICBzY29ycmluZ0FycmF5W2tleS5jaGFyQ29kZUF0KDApICogbWF0cml4Lmxlbmd0aCArIGtleTIuY2hhckNvZGVBdCgwKV0gPSBtYXRyaXhSb3dbaW5kZXgyXTtcbiAgICAgICAgLy9tYXAyW2tleV1ba2V5Ml0gPSBtYXRyaXhSb3dbaW5kZXgyXTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiAoYTogc3RyaW5nLCBiOiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiBzY29ycmluZ0FycmF5W2EuY2hhckNvZGVBdCgwKSAqIG1hdHJpeC5sZW5ndGggKyBiLmNoYXJDb2RlQXQoMCldO1xuICAgIH1cbiAgfVxuICBjb25zdCBkaXN0YW5jZUYgPSBnZXREaXN0YW5jZUYoKTtcblxuICBjb25zdCB0aHJlc2hvbGQgPSBhcmdzPy50aHJlc2hvbGQgPz8gMDtcblxuICByZXR1cm4gKHNlcTE6IHN0cmluZywgc2VxMjogc3RyaW5nKSA9PiB7XG4gICAgLy8gaGFtbWluZyBkaXN0YW5jZSBzaG91bGQgb25seSBiZSB1c2VkIHdpdGggc2FtZSBzaXplIHN0cmluZ3MsXG4gICAgLy8gYnV0IHN0aWxsLCBsZXRzIGFkZCBhIGNoZWNrIGFuZCBpZiB0aGV5IGFyZSBub3Qgc2FtZSBsZW5ndGggYWRkIHRoZSBkaWZmZXJlbmNlIHRvIHRoZSByZXN1bHRcbiAgICBsZXQgZGlmZiA9IDA7XG4gICAgY29uc3QgczFsID0gc2VxMS5sZW5ndGg7XG4gICAgY29uc3QgczJsID0gc2VxMi5sZW5ndGg7XG4gICAgY29uc3QgdGhyZXNob2xkTGltaXQgPSBNYXRoLm1heChzMWwsIHMybCkgKiAoMSAtIHRocmVzaG9sZCk7XG4gICAgaWYgKHMxbCAhPT0gczJsKVxuICAgICAgZGlmZiA9IE1hdGguYWJzKHMxbCAtIHMybCk7XG5cbiAgICBsZXQgcmVzdWx0ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IE1hdGgubWluKHMxbCwgczJsKTsgaSsrKSB7XG4gICAgICBpZiAoc2VxMVtpXSAhPT0gc2VxMltpXSkge1xuICAgICAgICByZXN1bHQgKz0gZGlzdGFuY2VGKHNlcTFbaV0sIHNlcTJbaV0pO1xuICAgICAgICBpZiAocmVzdWx0ID4gdGhyZXNob2xkTGltaXQpXG4gICAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9XG4gICAgfVxuICAgIHJlc3VsdCArPSBkaWZmO1xuICAgIHJlc3VsdCAvPSBNYXRoLm1heChzMWwsIHMybCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn1cbiJdfQ==","import { distance } from 'fastest-levenshtein';\nexport function levenstein() {\n return (seq1, seq2) => {\n return distance(seq1, seq2) / Math.max(seq1.length, seq2.length);\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGV2ZW5zdGVpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImxldmVuc3RlaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRzdDLE1BQU0sVUFBVSxVQUFVO0lBQ3hCLE9BQU8sQ0FBQyxJQUFZLEVBQUUsSUFBWSxFQUFFLEVBQUU7UUFDcEMsT0FBTyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkUsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZGlzdGFuY2V9IGZyb20gJ2Zhc3Rlc3QtbGV2ZW5zaHRlaW4nO1xuaW1wb3J0IHttbURpc3RhbmNlRnVuY3Rpb25UeXBlfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGxldmVuc3RlaW4oKTogbW1EaXN0YW5jZUZ1bmN0aW9uVHlwZSB7XG4gIHJldHVybiAoc2VxMTogc3RyaW5nLCBzZXEyOiBzdHJpbmcpID0+IHtcbiAgICByZXR1cm4gZGlzdGFuY2Uoc2VxMSwgc2VxMikgLyBNYXRoLm1heChzZXExLmxlbmd0aCwgc2VxMi5sZW5ndGgpO1xuICB9O1xufVxuIl19","// Blosum 62 matrix for protein sequences\nconst BLOSUM62 = [[4, -1, -2, -2, 0, -1, -1, 0, -2, -1, -1, -1, -1, -2, -1, 1, 0, -3, -2, 0, -2, -1, 0, -4],\n [-1, 5, 0, -2, -3, 1, 0, -2, 0, -3, -2, 2, -1, -3, -2, -1, -1, -3, -2, -3, -1, 0, -1, -4],\n [-2, 0, 6, 1, -3, 0, 0, 0, 1, -3, -3, 0, -2, -3, -2, 1, 0, -4, -2, -3, 3, 0, -1, -4],\n [-2, -2, 1, 6, -3, 0, 2, -1, -1, -3, -4, -1, -3, -3, -1, 0, -1, -4, -3, -3, 4, 1, -1, -4],\n [0, -3, -3, -3, 9, -3, -4, -3, -3, -1, -1, -3, -1, -2, -3, -1, -1, -2, -2, -1, -3, -3, -2, -4],\n [-1, 1, 0, 0, -3, 5, 2, -2, 0, -3, -2, 1, 0, -3, -1, 0, -1, -2, -1, -2, 0, 3, -1, -4],\n [-1, 0, 0, 2, -4, 2, 5, -2, 0, -3, -3, 1, -2, -3, -1, 0, -1, -3, -2, -2, 1, 4, -1, -4],\n [0, -2, 0, -1, -3, -2, -2, 6, -2, -4, -4, -2, -3, -3, -2, 0, -2, -2, -3, -3, -1, -2, -1, -4],\n [-2, 0, 1, -1, -3, 0, 0, -2, 8, -3, -3, -1, -2, -1, -2, -1, -2, -2, 2, -3, 0, 0, -1, -4],\n [-1, -3, -3, -3, -1, -3, -3, -4, -3, 4, 2, -3, 1, 0, -3, -2, -1, -3, -1, 3, -3, -3, -1, -4],\n [-1, -2, -3, -4, -1, -2, -3, -4, -3, 2, 4, -2, 2, 0, -3, -2, -1, -2, -1, 1, -4, -3, -1, -4],\n [-1, 2, 0, -1, -3, 1, 1, -2, -1, -3, -2, 5, -1, -3, -1, 0, -1, -3, -2, -2, 0, 1, -1, -4],\n [-1, -1, -2, -3, -1, 0, -2, -3, -2, 1, 2, -1, 5, 0, -2, -1, -1, -1, -1, 1, -3, -1, -1, -4],\n [-2, -3, -3, -3, -2, -3, -3, -3, -1, 0, 0, -3, 0, 6, -4, -2, -2, 1, 3, -1, -3, -3, -1, -4],\n [-1, -2, -2, -1, -3, -1, -1, -2, -2, -3, -3, -1, -2, -4, 7, -1, -1, -4, -3, -2, -2, -1, -2, -4],\n [1, -1, 1, 0, -1, 0, 0, 0, -1, -2, -2, 0, -1, -2, -1, 4, 1, -3, -2, -2, 0, 0, 0, -4],\n [0, -1, 0, -1, -1, -1, -1, -2, -2, -1, -1, -1, -1, -2, -1, 1, 5, -2, -2, 0, -1, -1, 0, -4],\n [-3, -3, -4, -4, -2, -2, -3, -2, -2, -3, -2, -3, -1, 1, -4, -3, -2, 11, 2, -3, -4, -3, -2, -4],\n [-2, -2, -2, -3, -2, -1, -2, -3, 2, -1, -1, -2, -1, 3, -3, -2, -2, 2, 7, -1, -3, -2, -1, -4],\n [0, -3, -3, -3, -1, -2, -2, -3, -3, 3, 1, -2, 1, -1, -2, -2, 0, -3, -1, 4, -3, -2, -1, -4],\n [-2, -1, 3, 4, -3, 0, 1, -1, 0, -3, -4, 0, -3, -3, -2, 0, -1, -4, -3, -3, 4, 1, -1, -4],\n [-1, 0, 0, 1, -3, 3, 4, -2, 0, -3, -3, 1, -1, -3, -1, 0, -1, -3, -2, -2, 1, 4, -1, -4],\n [0, -1, -1, -1, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, 0, 0, -2, -1, -1, -1, -1, -1, -4],\n [-4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, 1]];\n// Protein indexes for BLOSUM matrix\nconst ProtIndexes = {\n 'A': 0, 'R': 1, 'N': 2, 'D': 3, 'C': 4, 'Q': 5, 'E': 6, 'G': 7, 'H': 8,\n 'I': 9, 'L': 10, 'K': 11, 'M': 12, 'F': 13, 'P': 14, 'S': 15, 'T': 16,\n 'W': 17, 'Y': 18, 'V': 19, 'B': 20, 'Z': 21, 'X': 22, '*': 23\n};\nconst defaultArgs = {\n gapOpen: 1,\n gapExtend: 0.6,\n scoringMatrix: BLOSUM62,\n alphabetIndexes: ProtIndexes\n};\n/** Returns a function that calculates the distance between two sequences based on gap penalty and matrix\n * @param {Partial<NeedlemanWunchArgs>}args - arguments for Needleman-Wunch algorithm like gap penalty, Scoring matrix..\n * @return {mmDistanceFunctionType} - function that calculates the distance between two sequences\n*/\nexport function needlemanWunch(args) {\n const maxLen = 10000;\n const charCodeArray = new Uint16Array(0x10000);\n const { gapOpen, gapExtend, scoringMatrix, alphabetIndexes } = { ...defaultArgs, ...args };\n Object.entries(alphabetIndexes).forEach(([k, v]) => charCodeArray[k.charCodeAt(0)] = v);\n // As we don't need traceback, no need to store the whole matrix\n // Intead, we will store only the last two rows\n const matrix = [\n new Float32Array(maxLen),\n new Float32Array(maxLen)\n ];\n return (seq1, seq2) => {\n // similarly, we need to keep track of what operation led to the current cell\n // i.e. whether we came from the left, top or diagonal to assign gap open/gap extend penalty\n const verticalGaps = new Array(seq1.length + 1).fill(false);\n const horizontalGaps = new Array(seq1.length + 1).fill(false);\n //variables to keep track which row we are in\n // they will swap places on each iteration\n let prevRow = 0;\n let currRow = 1;\n // Initialize first row\n for (let i = 1; i < seq1.length + 1; i++) {\n matrix[0][i] = -gapOpen - (i - 1) * gapExtend;\n matrix[1][i] = 0;\n }\n // Calculate the rest of the matrix\n for (let i = 1; i < seq2.length + 1; i++) {\n matrix[currRow][0] = -gapOpen - (i - 1) * gapExtend;\n for (let j = 1; j < seq1.length + 1; j++) {\n const diagonal = matrix[prevRow][j - 1] + scoringMatrix[charCodeArray[seq1.charCodeAt(j - 1)]][charCodeArray[seq2.charCodeAt(i - 1)]];\n const top = matrix[prevRow][j] - (verticalGaps[j] ? gapExtend : gapOpen);\n const left = matrix[currRow][j - 1] - (horizontalGaps[j - 1] ? gapExtend : gapOpen);\n matrix[currRow][j] = Math.max(diagonal, left, top);\n // update gap arrays\n if (matrix[currRow][j] === diagonal) {\n verticalGaps[j] = false;\n horizontalGaps[j] = false;\n }\n else if (matrix[currRow][j] === left) {\n verticalGaps[j] = false;\n horizontalGaps[j] = true;\n }\n else {\n verticalGaps[j] = true;\n horizontalGaps[j] = false;\n }\n }\n // Swap rows\n prevRow = currRow;\n currRow = (currRow + 1) % 2;\n }\n // as the matrix is the similarity matrix, but we are interested in distance,\n // we need compare it to perfect match score to get reasonable distance\n // const perfectMatchSeq1 = seq1.split('').map((c) => scoringMatrix[alphabetIndexes[c]][alphabetIndexes[c]])\n // .reduce((a, b) => a + b, 0);\n // const perfectMatchSeq2 = seq2.split('').map((c) => scoringMatrix[alphabetIndexes[c]][alphabetIndexes[c]])\n // .reduce((a, b) => a + b, 0);\n // const maxScore = Math.max(perfectMatchSeq1, perfectMatchSeq2);\n const maxScore = Math.max(seq1.length, seq2.length);\n return (maxScore - matrix[prevRow][seq1.length]) / maxScore;\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVlZGxlbWFuLXd1bnNjaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm5lZWRsZW1hbi13dW5zY2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEseUNBQXlDO0FBQ3pDLE1BQU0sUUFBUSxHQUNkLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEYsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekYsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6RixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUYsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RGLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVGLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4RixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0YsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNGLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4RixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFGLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUYsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0YsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFGLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUYsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUYsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxRixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZGLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RGLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDN0YsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFD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QUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUM7SUFDOUQsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7bW1EaXN0YW5jZUZ1bmN0aW9uQXJncywgbW1EaXN0YW5jZUZ1bmN0aW9uVHlwZX0gZnJvbSAnLi90eXBlcyc7XG5cbi8vIEJsb3N1bSA2MiBtYXRyaXggZm9yIHByb3RlaW4gc2VxdWVuY2VzXG5jb25zdCBCTE9TVU02MjpBcnJheTxBcnJheTxudW1iZXI+PiA9XG5bWzQsIC0xLCAtMiwgLTIsIDAsIC0xLCAtMSwgMCwgLTIsIC0xLCAtMSwgLTEsIC0xLCAtMiwgLTEsIDEsIDAsIC0zLCAtMiwgMCwgLTIsIC0xLCAwLCAtNF0sXG4gIFstMSwgNSwgMCwgLTIsIC0zLCAxLCAwLCAtMiwgMCwgLTMsIC0yLCAyLCAtMSwgLTMsIC0yLCAtMSwgLTEsIC0zLCAtMiwgLTMsIC0xLCAwLCAtMSwgLTRdLFxuICBbLTIsIDAsIDYsIDEsIC0zLCAwLCAwLCAwLCAxLCAtMywgLTMsIDAsIC0yLCAtMywgLTIsIDEsIDAsIC00LCAtMiwgLTMsIDMsIDAsIC0xLCAtNF0sXG4gIFstMiwgLTIsIDEsIDYsIC0zLCAwLCAyLCAtMSwgLTEsIC0zLCAtNCwgLTEsIC0zLCAtMywgLTEsIDAsIC0xLCAtNCwgLTMsIC0zLCA0LCAxLCAtMSwgLTRdLFxuICBbMCwgLTMsIC0zLCAtMywgOSwgLTMsIC00LCAtMywgLTMsIC0xLCAtMSwgLTMsIC0xLCAtMiwgLTMsIC0xLCAtMSwgLTIsIC0yLCAtMSwgLTMsIC0zLCAtMiwgLTRdLFxuICBbLTEsIDEsIDAsIDAsIC0zLCA1LCAyLCAtMiwgMCwgLTMsIC0yLCAxLCAwLCAtMywgLTEsIDAsIC0xLCAtMiwgLTEsIC0yLCAwLCAzLCAtMSwgLTRdLFxuICBbLTEsIDAsIDAsIDIsIC00LCAyLCA1LCAtMiwgMCwgLTMsIC0zLCAxLCAtMiwgLTMsIC0xLCAwLCAtMSwgLTMsIC0yLCAtMiwgMSwgNCwgLTEsIC00XSxcbiAgWzAsIC0yLCAwLCAtMSwgLTMsIC0yLCAtMiwgNiwgLTIsIC00LCAtNCwgLTIsIC0zLCAtMywgLTIsIDAsIC0yLCAtMiwgLTMsIC0zLCAtMSwgLTIsIC0xLCAtNF0sXG4gIFstMiwgMCwgMSwgLTEsIC0zLCAwLCAwLCAtMiwgOCwgLTMsIC0zLCAtMSwgLTIsIC0xLCAtMiwgLTEsIC0yLCAtMiwgMiwgLTMsIDAsIDAsIC0xLCAtNF0sXG4gIFstMSwgLTMsIC0zLCAtMywgLTEsIC0zLCAtMywgLTQsIC0zLCA0LCAyLCAtMywgMSwgMCwgLTMsIC0yLCAtMSwgLTMsIC0xLCAzLCAtMywgLTMsIC0xLCAtNF0sXG4gIFstMSwgLTIsIC0zLCAtNCwgLTEsIC0yLCAtMywgLTQsIC0zLCAyLCA0LCAtMiwgMiwgMCwgLTMsIC0yLCAtMSwgLTIsIC0xLCAxLCAtNCwgLTMsIC0xLCAtNF0sXG4gIFstMSwgMiwgMCwgLTEsIC0zLCAxLCAxLCAtMiwgLTEsIC0zLCAtMiwgNSwgLTEsIC0zLCAtMSwgMCwgLTEsIC0zLCAtMiwgLTIsIDAsIDEsIC0xLCAtNF0sXG4gIFstMSwgLTEsIC0yLCAtMywgLTEsIDAsIC0yLCAtMywgLTIsIDEsIDIsIC0xLCA1LCAwLCAtMiwgLTEsIC0xLCAtMSwgLTEsIDEsIC0zLCAtMSwgLTEsIC00XSxcbiAgWy0yLCAtMywgLTMsIC0zLCAtMiwgLTMsIC0zLCAtMywgLTEsIDAsIDAsIC0zLCAwLCA2LCAtNCwgLTIsIC0yLCAxLCAzLCAtMSwgLTMsIC0zLCAtMSwgLTRdLFxuICBbLTEsIC0yLCAtMiwgLTEsIC0zLCAtMSwgLTEsIC0yLCAtMiwgLTMsIC0zLCAtMSwgLTIsIC00LCA3LCAtMSwgLTEsIC00LCAtMywgLTIsIC0yLCAtMSwgLTIsIC00XSxcbiAgWzEsIC0xLCAxLCAwLCAtMSwgMCwgMCwgMCwgLTEsIC0yLCAtMiwgMCwgLTEsIC0yLCAtMSwgNCwgMSwgLTMsIC0yLCAtMiwgMCwgMCwgMCwgLTRdLFxuICBbMCwgLTEsIDAsIC0xLCAtMSwgLTEsIC0xLCAtMiwgLTIsIC0xLCAtMSwgLTEsIC0xLCAtMiwgLTEsIDEsIDUsIC0yLCAtMiwgMCwgLTEsIC0xLCAwLCAtNF0sXG4gIFstMywgLTMsIC00LCAtNCwgLTIsIC0yLCAtMywgLTIsIC0yLCAtMywgLTIsIC0zLCAtMSwgMSwgLTQsIC0zLCAtMiwgMTEsIDIsIC0zLCAtNCwgLTMsIC0yLCAtNF0sXG4gIFstMiwgLTIsIC0yLCAtMywgLTIsIC0xLCAtMiwgLTMsIDIsIC0xLCAtMSwgLTIsIC0xLCAzLCAtMywgLTIsIC0yLCAyLCA3LCAtMSwgLTMsIC0yLCAtMSwgLTRdLFxuICBbMCwgLTMsIC0zLCAtMywgLTEsIC0yLCAtMiwgLTMsIC0zLCAzLCAxLCAtMiwgMSwgLTEsIC0yLCAtMiwgMCwgLTMsIC0xLCA0LCAtMywgLTIsIC0xLCAtNF0sXG4gIFstMiwgLTEsIDMsIDQsIC0zLCAwLCAxLCAtMSwgMCwgLTMsIC00LCAwLCAtMywgLTMsIC0yLCAwLCAtMSwgLTQsIC0zLCAtMywgNCwgMSwgLTEsIC00XSxcbiAgWy0xLCAwLCAwLCAxLCAtMywgMywgNCwgLTIsIDAsIC0zLCAtMywgMSwgLTEsIC0zLCAtMSwgMCwgLTEsIC0zLCAtMiwgLTIsIDEsIDQsIC0xLCAtNF0sXG4gIFswLCAtMSwgLTEsIC0xLCAtMiwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTIsIDAsIDAsIC0yLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC00XSxcbiAgWy00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgMV1dO1xuXG4vLyBQcm90ZWluIGluZGV4ZXMgZm9yIEJMT1NVTSBtYXRyaXhcbmNvbnN0IFByb3RJbmRleGVzOiB7W2lkOnN0cmluZ106bnVtYmVyfSA9IHtcbiAgJ0EnOiAwLCAnUic6IDEsICdOJzogMiwgJ0QnOiAzLCAnQyc6IDQsICdRJzogNSwgJ0UnOiA2LCAnRyc6IDcsICdIJzogOCxcbiAgJ0knOiA5LCAnTCc6IDEwLCAnSyc6IDExLCAnTSc6IDEyLCAnRic6IDEzLCAnUCc6IDE0LCAnUyc6IDE1LCAnVCc6IDE2LFxuICAnVyc6IDE3LCAnWSc6IDE4LCAnVic6IDE5LCAnQic6IDIwLCAnWic6IDIxLCAnWCc6IDIyLCAnKic6IDIzXG59O1xuXG50eXBlIE5lZWRsZW1hbld1bmNoQXJncyA9IG1tRGlzdGFuY2VGdW5jdGlvbkFyZ3MgJiB7XG4gIGdhcE9wZW46IG51bWJlcjtcbiAgZ2FwRXh0ZW5kOiBudW1iZXI7XG59XG5cbmNvbnN0IGRlZmF1bHRBcmdzOiBOZWVkbGVtYW5XdW5jaEFyZ3MgPSB7XG4gIGdhcE9wZW46IDEsXG4gIGdhcEV4dGVuZDogMC42LFxuICBzY29yaW5nTWF0cml4OiBCTE9TVU02MixcbiAgYWxwaGFiZXRJbmRleGVzOiBQcm90SW5kZXhlc1xufTtcblxuLyoqIFJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGNhbGN1bGF0ZXMgdGhlIGRpc3RhbmNlIGJldHdlZW4gdHdvIHNlcXVlbmNlcyBiYXNlZCBvbiBnYXAgcGVuYWx0eSBhbmQgbWF0cml4XG4gKiBAcGFyYW0ge1BhcnRpYWw8TmVlZGxlbWFuV3VuY2hBcmdzPn1hcmdzIC0gYXJndW1lbnRzIGZvciBOZWVkbGVtYW4tV3VuY2ggYWxnb3JpdGhtIGxpa2UgZ2FwIHBlbmFsdHksIFNjb3JpbmcgbWF0cml4Li5cbiAqIEByZXR1cm4ge21tRGlzdGFuY2VGdW5jdGlvblR5cGV9IC0gZnVuY3Rpb24gdGhhdCBjYWxjdWxhdGVzIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHR3byBzZXF1ZW5jZXNcbiovXG5leHBvcnQgZnVuY3Rpb24gbmVlZGxlbWFuV3VuY2goYXJnczogUGFydGlhbDxOZWVkbGVtYW5XdW5jaEFyZ3M+KTogbW1EaXN0YW5jZUZ1bmN0aW9uVHlwZSB7XG4gIGNvbnN0IG1heExlbiA9IDEwMDAwO1xuICBjb25zdCBjaGFyQ29kZUFycmF5ID0gbmV3IFVpbnQxNkFycmF5KDB4MTAwMDApO1xuICBcbiAgY29uc3Qge2dhcE9wZW4sIGdhcEV4dGVuZCwgc2NvcmluZ01hdHJpeCwgYWxwaGFiZXRJbmRleGVzfSA9IHsuLi5kZWZhdWx0QXJncywgLi4uYXJnc307XG4gIE9iamVjdC5lbnRyaWVzKGFscGhhYmV0SW5kZXhlcykuZm9yRWFjaCgoW2ssIHZdKSA9PiBjaGFyQ29kZUFycmF5W2suY2hhckNvZGVBdCgwKV0gPSB2KTtcbiAgLy8gQXMgd2UgZG9uJ3QgbmVlZCB0cmFjZWJhY2ssIG5vIG5lZWQgdG8gc3RvcmUgdGhlIHdob2xlIG1hdHJpeFxuICAvLyBJbnRlYWQsIHdlIHdpbGwgc3RvcmUgb25seSB0aGUgbGFzdCB0d28gcm93c1xuICBjb25zdCBtYXRyaXg6IEFycmF5PEZsb2F0MzJBcnJheT4gPSBbXG4gICAgbmV3IEZsb2F0MzJBcnJheShtYXhMZW4pLFxuICAgIG5ldyBGbG9hdDMyQXJyYXkobWF4TGVuKVxuICBdO1xuICByZXR1cm4gKHNlcTE6IHN0cmluZywgc2VxMjogc3RyaW5nKSA6IG51bWJlciA9PiB7XG4gICAgLy8gc2ltaWxhcmx5LCB3ZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2Ygd2hhdCBvcGVyYXRpb24gbGVkIHRvIHRoZSBjdXJyZW50IGNlbGxcbiAgICAvLyBpLmUuIHdoZXRoZXIgd2UgY2FtZSBmcm9tIHRoZSBsZWZ0LCB0b3Agb3IgZGlhZ29uYWwgdG8gYXNzaWduIGdhcCBvcGVuL2dhcCBleHRlbmQgcGVuYWx0eVxuXG4gICAgY29uc3QgdmVydGljYWxHYXBzOiBib29sZWFuW10gPSBuZXcgQXJyYXk8Ym9vbGVhbj4oc2VxMS5sZW5ndGggKzEpLmZpbGwoZmFsc2UpO1xuICAgIGNvbnN0IGhvcml6b250YWxHYXBzOiBib29sZWFuW10gPSBuZXcgQXJyYXk8Ym9vbGVhbj4oc2VxMS5sZW5ndGggKzEpLmZpbGwoZmFsc2UpO1xuICAgIC8vdmFyaWFibGVzIHRvIGtlZXAgdHJhY2sgd2hpY2ggcm93IHdlIGFyZSBpblxuICAgIC8vIHRoZXkgd2lsbCBzd2FwIHBsYWNlcyBvbiBlYWNoIGl0ZXJhdGlvblxuICAgIGxldCBwcmV2Um93ID0gMDtcbiAgICBsZXQgY3VyclJvdyA9IDE7XG4gICAgLy8gSW5pdGlhbGl6ZSBmaXJzdCByb3dcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IHNlcTEubGVuZ3RoICsgMTsgaSsrKSB7XG4gICAgICBtYXRyaXhbMF1baV0gPSAtZ2FwT3BlbiAtIChpIC0gMSkgKiBnYXBFeHRlbmQ7XG4gICAgICBtYXRyaXhbMV1baV0gPSAwO1xuICAgIH1cblxuICAgIC8vIENhbGN1bGF0ZSB0aGUgcmVzdCBvZiB0aGUgbWF0cml4XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCBzZXEyLmxlbmd0aCArIDE7IGkrKykge1xuICAgICAgbWF0cml4W2N1cnJSb3ddWzBdID0gLWdhcE9wZW4gLSAoaSAtIDEpICogZ2FwRXh0ZW5kO1xuICAgICAgZm9yIChsZXQgaiA9IDE7IGogPCBzZXExLmxlbmd0aCArIDE7IGorKykge1xuICAgICAgICBjb25zdCBkaWFnb25hbCA9XG4gICAgICAgICAgbWF0cml4W3ByZXZSb3ddW2ogLSAxXSArIHNjb3JpbmdNYXRyaXhbY2hhckNvZGVBcnJheVtzZXExLmNoYXJDb2RlQXQoaiAtIDEpXV1bY2hhckNvZGVBcnJheVtzZXEyLmNoYXJDb2RlQXQoaSAtIDEpXV07XG4gICAgICAgIGNvbnN0IHRvcCA9IG1hdHJpeFtwcmV2Um93XVtqXSAtICh2ZXJ0aWNhbEdhcHNbal0gPyBnYXBFeHRlbmQgOiBnYXBPcGVuICk7XG4gICAgICAgIGNvbnN0IGxlZnQgPSBtYXRyaXhbY3VyclJvd11baiAtIDFdIC0gKGhvcml6b250YWxHYXBzW2ogLSAxXSA/IGdhcEV4dGVuZCA6IGdhcE9wZW4pO1xuICAgICAgICBtYXRyaXhbY3VyclJvd11bal0gPSBNYXRoLm1heChcbiAgICAgICAgICBkaWFnb25hbCwgbGVmdCwgdG9wXG4gICAgICAgICk7XG4gICAgICAgIC8vIHVwZGF0ZSBnYXAgYXJyYXlzXG4gICAgICAgIGlmIChtYXRyaXhbY3VyclJvd11bal0gPT09IGRpYWdvbmFsKSB7XG4gICAgICAgICAgdmVydGljYWxHYXBzW2pdID0gZmFsc2U7XG4gICAgICAgICAgaG9yaXpvbnRhbEdhcHNbal0gPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIGlmIChtYXRyaXhbY3VyclJvd11bal0gPT09IGxlZnQpIHtcbiAgICAgICAgICB2ZXJ0aWNhbEdhcHNbal0gPSBmYWxzZTtcbiAgICAgICAgICBob3Jpem9udGFsR2Fwc1tqXSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmVydGljYWxHYXBzW2pdID0gdHJ1ZTtcbiAgICAgICAgICBob3Jpem9udGFsR2Fwc1tqXSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBTd2FwIHJvd3NcbiAgICAgIHByZXZSb3cgPSBjdXJyUm93O1xuICAgICAgY3VyclJvdyA9IChjdXJyUm93ICsgMSkgJSAyO1xuICAgIH1cbiAgICAvLyBhcyB0aGUgbWF0cml4IGlzIHRoZSBzaW1pbGFyaXR5IG1hdHJpeCwgYnV0IHdlIGFyZSBpbnRlcmVzdGVkIGluIGRpc3RhbmNlLFxuICAgIC8vIHdlIG5lZWQgY29tcGFyZSBpdCB0byBwZXJmZWN0IG1hdGNoIHNjb3JlIHRvIGdldCByZWFzb25hYmxlIGRpc3RhbmNlXG4gICAgLy8gY29uc3QgcGVyZmVjdE1hdGNoU2VxMSA9IHNlcTEuc3BsaXQoJycpLm1hcCgoYykgPT4gc2NvcmluZ01hdHJpeFthbHBoYWJldEluZGV4ZXNbY11dW2FscGhhYmV0SW5kZXhlc1tjXV0pXG4gICAgLy8gICAucmVkdWNlKChhLCBiKSA9PiBhICsgYiwgMCk7XG4gICAgLy8gY29uc3QgcGVyZmVjdE1hdGNoU2VxMiA9IHNlcTIuc3BsaXQoJycpLm1hcCgoYykgPT4gc2NvcmluZ01hdHJpeFthbHBoYWJldEluZGV4ZXNbY11dW2FscGhhYmV0SW5kZXhlc1tjXV0pXG4gICAgLy8gICAucmVkdWNlKChhLCBiKSA9PiBhICsgYiwgMCk7XG4gICAgLy8gY29uc3QgbWF4U2NvcmUgPSBNYXRoLm1heChwZXJmZWN0TWF0Y2hTZXExLCBwZXJmZWN0TWF0Y2hTZXEyKTtcbiAgICBjb25zdCBtYXhTY29yZSA9IE1hdGgubWF4KHNlcTEubGVuZ3RoLCBzZXEyLmxlbmd0aCk7XG4gICAgcmV0dXJuIChtYXhTY29yZSAtIG1hdHJpeFtwcmV2Um93XVtzZXExLmxlbmd0aF0pIC8gbWF4U2NvcmU7XG4gIH07XG59XG4iXX0=","const peq = new Uint32Array(0x10000);\nconst myers_32 = (a, b) => {\n const n = a.length;\n const m = b.length;\n const lst = 1 << (n - 1);\n let pv = -1;\n let mv = 0;\n let sc = n;\n let i = n;\n while (i--) {\n peq[a.charCodeAt(i)] |= 1 << i;\n }\n for (i = 0; i < m; i++) {\n let eq = peq[b.charCodeAt(i)];\n const xv = eq | mv;\n eq |= ((eq & pv) + pv) ^ pv;\n mv |= ~(eq | pv);\n pv &= eq;\n if (mv & lst) {\n sc++;\n }\n if (pv & lst) {\n sc--;\n }\n mv = (mv << 1) | 1;\n pv = (pv << 1) | ~(xv | mv);\n mv &= xv;\n }\n i = n;\n while (i--) {\n peq[a.charCodeAt(i)] = 0;\n }\n return sc;\n};\nconst myers_x = (b, a) => {\n const n = a.length;\n const m = b.length;\n const mhc = [];\n const phc = [];\n const hsize = Math.ceil(n / 32);\n const vsize = Math.ceil(m / 32);\n for (let i = 0; i < hsize; i++) {\n phc[i] = -1;\n mhc[i] = 0;\n }\n let j = 0;\n for (; j < vsize - 1; j++) {\n let mv = 0;\n let pv = -1;\n const start = j * 32;\n const vlen = Math.min(32, m) + start;\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] |= 1 << k;\n }\n for (let i = 0; i < n; i++) {\n const eq = peq[a.charCodeAt(i)];\n const pb = (phc[(i / 32) | 0] >>> i) & 1;\n const mb = (mhc[(i / 32) | 0] >>> i) & 1;\n const xv = eq | mv;\n const xh = ((((eq | mb) & pv) + pv) ^ pv) | eq | mb;\n let ph = mv | ~(xh | pv);\n let mh = pv & xh;\n if ((ph >>> 31) ^ pb) {\n phc[(i / 32) | 0] ^= 1 << i;\n }\n if ((mh >>> 31) ^ mb) {\n mhc[(i / 32) | 0] ^= 1 << i;\n }\n ph = (ph << 1) | pb;\n mh = (mh << 1) | mb;\n pv = mh | ~(xv | ph);\n mv = ph & xv;\n }\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] = 0;\n }\n }\n let mv = 0;\n let pv = -1;\n const start = j * 32;\n const vlen = Math.min(32, m - start) + start;\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] |= 1 << k;\n }\n let score = m;\n for (let i = 0; i < n; i++) {\n const eq = peq[a.charCodeAt(i)];\n const pb = (phc[(i / 32) | 0] >>> i) & 1;\n const mb = (mhc[(i / 32) | 0] >>> i) & 1;\n const xv = eq | mv;\n const xh = ((((eq | mb) & pv) + pv) ^ pv) | eq | mb;\n let ph = mv | ~(xh | pv);\n let mh = pv & xh;\n score += (ph >>> (m - 1)) & 1;\n score -= (mh >>> (m - 1)) & 1;\n if ((ph >>> 31) ^ pb) {\n phc[(i / 32) | 0] ^= 1 << i;\n }\n if ((mh >>> 31) ^ mb) {\n mhc[(i / 32) | 0] ^= 1 << i;\n }\n ph = (ph << 1) | pb;\n mh = (mh << 1) | mb;\n pv = mh | ~(xv | ph);\n mv = ph & xv;\n }\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] = 0;\n }\n return score;\n};\nconst distance = (a, b) => {\n if (a.length < b.length) {\n const tmp = b;\n b = a;\n a = tmp;\n }\n if (b.length === 0) {\n return a.length;\n }\n if (a.length <= 32) {\n return myers_32(a, b);\n }\n return myers_x(a, b);\n};\nconst closest = (str, arr) => {\n let min_distance = Infinity;\n let min_index = 0;\n for (let i = 0; i < arr.length; i++) {\n const dist = distance(str, arr[i]);\n if (dist < min_distance) {\n min_distance = dist;\n min_index = i;\n }\n }\n return arr[min_index];\n};\nexport { closest, distance };\n"],"names":["isNil","x","hamming","args","distanceF","scoringMatrix","alphabetIndexes","a","b","length","Object","keys","Error","indexes","matrix","minCharCode","Math","min","map","k","charCodeAt","scorringArray","Float32Array","entries","forEach","key","index","matrixRow","key2","index2","getDistanceF","threshold","seq1","seq2","diff","s1l","s2l","thresholdLimit","max","abs","result","i","levenstein","defaultArgs","gapOpen","gapExtend","needlemanWunch","charCodeArray","Uint16Array","v","verticalGaps","Array","fill","horizontalGaps","prevRow","currRow","j","diagonal","top","left","maxScore","peq","Uint32Array","distance","tmp","n","m","lst","pv","mv","sc","eq","xv","myers_32","mhc","phc","hsize","ceil","vsize","start","vlen","pb","mb","xh","ph","mh","score","myers_x"],"sourceRoot":""}
package/dist/190.js DELETED
@@ -1,2 +0,0 @@
1
- var bio;(()=>{"use strict";var r,e,t={3190:(r,e,t)=>{var o,n=t(6814),a=t(779),i=t(458),c=t(6683);!function(r){r.HAMMING="Hamming",r.LEVENSHTEIN="Levenshtein",r.NEEDLEMANN_WUNSCH="Needlemann-Wunsch",r.MONOMER_CHEMICAL_DISTANCE="Monomer chemical distance"}(o||(o={}));const s={[o.HAMMING]:a.j,[o.LEVENSHTEIN]:i.r,[o.NEEDLEMANN_WUNSCH]:c.n,[o.MONOMER_CHEMICAL_DISTANCE]:a.j};onmessage=r=>{const{fnName:e,values:t,templateIdx:o,start:a,end:i}=r.data,c={};try{let r=0,p=Number.MIN_VALUE;const l=new Float32Array(i-a),u=s[e]();for(let e=a;e<i;e++){const i=(0,n.k)(t[e])||(0,n.k)(t[o])?1:u(t[e],t[o]);l[e-a]=i,i<r&&(r=i),i>p&&(p=i)}c.distanceArrayData=l,c.min=r,c.max=p}catch(r){c.error=r}postMessage(c)}}},o={};function n(r){var e=o[r];if(void 0!==e)return e.exports;var a=o[r]={exports:{}};return t[r](a,a.exports,n),a.exports}n.m=t,n.x=()=>{var r=n.O(void 0,[1],(()=>n(3190)));return n.O(r)},r=[],n.O=(e,t,o,a)=>{if(!t){var i=1/0;for(l=0;l<r.length;l++){for(var[t,o,a]=r[l],c=!0,s=0;s<t.length;s++)(!1&a||i>=a)&&Object.keys(n.O).every((r=>n.O[r](t[s])))?t.splice(s--,1):(c=!1,a<i&&(i=a));if(c){r.splice(l--,1);var p=o();void 0!==p&&(e=p)}}return e}a=a||0;for(var l=r.length;l>0&&r[l-1][2]>a;l--)r[l]=r[l-1];r[l]=[t,o,a]},n.d=(r,e)=>{for(var t in e)n.o(e,t)&&!n.o(r,t)&&Object.defineProperty(r,t,{enumerable:!0,get:e[t]})},n.f={},n.e=r=>Promise.all(Object.keys(n.f).reduce(((e,t)=>(n.f[t](r,e),e)),[])),n.u=r=>r+".js",n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(r){if("object"==typeof window)return window}}(),n.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),(()=>{var r;n.g.importScripts&&(r=n.g.location+"");var e=n.g.document;if(!r&&e&&(e.currentScript&&(r=e.currentScript.src),!r)){var t=e.getElementsByTagName("script");if(t.length)for(var o=t.length-1;o>-1&&!r;)r=t[o--].src}if(!r)throw new Error("Automatic publicPath is not supported in this browser");r=r.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),n.p=r})(),(()=>{var r={190:1};n.f.i=(e,t)=>{r[e]||importScripts(n.p+n.u(e))};var e=self.webpackChunkbio=self.webpackChunkbio||[],t=e.push.bind(e);e.push=e=>{var[o,a,i]=e;for(var c in a)n.o(a,c)&&(n.m[c]=a[c]);for(i&&i(n);o.length;)r[o.pop()]=1;t(e)}})(),e=n.x,n.x=()=>n.e(1).then(e);var a=n.x();bio=a})();
2
- //# sourceMappingURL=190.js.map
package/dist/190.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"190.js","mappings":"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","sources":["webpack://bio/webpack/runtime/chunk loaded","webpack://bio/webpack/runtime/startup chunk dependencies","webpack://bio/./node_modules/@datagrok-libraries/ml/src/macromolecule-distance-functions/macromolecule-distance-functions.js","webpack://bio/./src/analysis/workers/mm-distance-array-worker.ts","webpack://bio/webpack/bootstrap","webpack://bio/webpack/runtime/define property getters","webpack://bio/webpack/runtime/ensure chunk","webpack://bio/webpack/runtime/get javascript chunk filename","webpack://bio/webpack/runtime/global","webpack://bio/webpack/runtime/hasOwnProperty shorthand","webpack://bio/webpack/runtime/publicPath","webpack://bio/webpack/runtime/importScripts chunk loading","webpack://bio/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var next = __webpack_require__.x;\n__webpack_require__.x = () => {\n\treturn __webpack_require__.e(1).then(next);\n};","import { hamming } from './hamming';\nimport { levenstein } from './levenstein';\nimport { needlemanWunch } from './needleman-wunsch';\n/** Enum containing currently supported macromolecule distance functions\n * Hamming distance will be used if the sequences are already aligned\n * Needleman distance will be used for protein sequences with known BLOSUM62 matrix\n * Levenshtein distance will be used for nucleotide sequences as for them substitution matrix is same as identity matrix\n */\nexport var MmDistanceFunctionsNames;\n(function (MmDistanceFunctionsNames) {\n MmDistanceFunctionsNames[\"HAMMING\"] = \"Hamming\";\n MmDistanceFunctionsNames[\"LEVENSHTEIN\"] = \"Levenshtein\";\n MmDistanceFunctionsNames[\"NEEDLEMANN_WUNSCH\"] = \"Needlemann-Wunsch\";\n MmDistanceFunctionsNames[\"MONOMER_CHEMICAL_DISTANCE\"] = \"Monomer chemical distance\";\n})(MmDistanceFunctionsNames || (MmDistanceFunctionsNames = {}));\n;\nexport const mmDistanceFunctions = {\n [MmDistanceFunctionsNames.HAMMING]: hamming,\n [MmDistanceFunctionsNames.LEVENSHTEIN]: levenstein,\n [MmDistanceFunctionsNames.NEEDLEMANN_WUNSCH]: needlemanWunch,\n [MmDistanceFunctionsNames.MONOMER_CHEMICAL_DISTANCE]: hamming\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFjcm9tb2xlY3VsZS1kaXN0YW5jZS1mdW5jdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtYWNyb21vbGVjdWxlLWRpc3RhbmNlLWZ1bmN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBR2xEOzs7O0dBSUc7QUFDSCxNQUFNLENBQU4sSUFBWSx3QkFLWDtBQUxELFdBQVksd0JBQXdCO0lBQ2hDLCtDQUFtQixDQUFBO0lBQ25CLHVEQUEyQixDQUFBO0lBQzNCLG1FQUF1QyxDQUFBO0lBQ3ZDLG1GQUF1RCxDQUFBO0FBQzNELENBQUMsRUFMVyx3QkFBd0IsS0FBeEIsd0JBQXdCLFFBS25DO0FBQUEsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUE4RTtJQUM1RyxDQUFDLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU87SUFDM0MsQ0FBQyx3QkFBd0IsQ0FBQyxXQUFXLENBQUMsRUFBRSxVQUFVO0lBQ2xELENBQUMsd0JBQXdCLENBQUMsaUJBQWlCLENBQUMsRUFBRSxjQUFjO0lBQzVELENBQUMsd0JBQXdCLENBQUMseUJBQXlCLENBQUMsRUFBRSxPQUFPO0NBQzlELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2hhbW1pbmd9IGZyb20gJy4vaGFtbWluZyc7XG5pbXBvcnQge2xldmVuc3RlaW59IGZyb20gJy4vbGV2ZW5zdGVpbic7XG5pbXBvcnQge25lZWRsZW1hbld1bmNofSBmcm9tICcuL25lZWRsZW1hbi13dW5zY2gnO1xuaW1wb3J0IHttbURpc3RhbmNlRnVuY3Rpb25UeXBlfSBmcm9tICcuL3R5cGVzJztcblxuLyoqIEVudW0gY29udGFpbmluZyBjdXJyZW50bHkgc3VwcG9ydGVkIG1hY3JvbW9sZWN1bGUgZGlzdGFuY2UgZnVuY3Rpb25zXG4gKiBIYW1taW5nIGRpc3RhbmNlIHdpbGwgYmUgdXNlZCBpZiB0aGUgc2VxdWVuY2VzIGFyZSBhbHJlYWR5IGFsaWduZWRcbiAqIE5lZWRsZW1hbiBkaXN0YW5jZSB3aWxsIGJlIHVzZWQgZm9yIHByb3RlaW4gc2VxdWVuY2VzIHdpdGgga25vd24gQkxPU1VNNjIgbWF0cml4XG4gKiBMZXZlbnNodGVpbiBkaXN0YW5jZSB3aWxsIGJlIHVzZWQgZm9yIG51Y2xlb3RpZGUgc2VxdWVuY2VzIGFzIGZvciB0aGVtIHN1YnN0aXR1dGlvbiBtYXRyaXggaXMgc2FtZSBhcyBpZGVudGl0eSBtYXRyaXhcbiAqL1xuZXhwb3J0IGVudW0gTW1EaXN0YW5jZUZ1bmN0aW9uc05hbWVzIHtcbiAgICBIQU1NSU5HID0gJ0hhbW1pbmcnLFxuICAgIExFVkVOU0hURUlOID0gJ0xldmVuc2h0ZWluJyxcbiAgICBORUVETEVNQU5OX1dVTlNDSCA9ICdOZWVkbGVtYW5uLVd1bnNjaCcsXG4gICAgTU9OT01FUl9DSEVNSUNBTF9ESVNUQU5DRSA9ICdNb25vbWVyIGNoZW1pY2FsIGRpc3RhbmNlJ1xufTtcblxuZXhwb3J0IGNvbnN0IG1tRGlzdGFuY2VGdW5jdGlvbnM6IFJlY29yZDxNbURpc3RhbmNlRnVuY3Rpb25zTmFtZXMsICh2YWx1ZT86IGFueSkgPT4gbW1EaXN0YW5jZUZ1bmN0aW9uVHlwZT4gPSB7XG4gIFtNbURpc3RhbmNlRnVuY3Rpb25zTmFtZXMuSEFNTUlOR106IGhhbW1pbmcsXG4gIFtNbURpc3RhbmNlRnVuY3Rpb25zTmFtZXMuTEVWRU5TSFRFSU5dOiBsZXZlbnN0ZWluLFxuICBbTW1EaXN0YW5jZUZ1bmN0aW9uc05hbWVzLk5FRURMRU1BTk5fV1VOU0NIXTogbmVlZGxlbWFuV3VuY2gsXG4gIFtNbURpc3RhbmNlRnVuY3Rpb25zTmFtZXMuTU9OT01FUl9DSEVNSUNBTF9ESVNUQU5DRV06IGhhbW1pbmdcbn07XG4iXX0=","import {isNil} from '@datagrok-libraries/ml/src/distance-matrix';\nimport {mmDistanceFunctions} from '@datagrok-libraries/ml/src/macromolecule-distance-functions';\n\nonmessage = (event) => {\n const {fnName, values, templateIdx, start, end} = event.data;\n const data: { error?: any, distanceArrayData?: Float32Array, min?: number, max?: number} = {};\n try {\n let lmin = 0;\n let lmax = Number.MIN_VALUE;\n const retVal = new Float32Array(end - start);\n const distanceFn = mmDistanceFunctions[fnName as keyof typeof mmDistanceFunctions]();\n\n for (let i = start; i < end; i++) {\n const value = !isNil(values[i]) && !isNil(values[templateIdx]) ?\n distanceFn(values[i], values[templateIdx]) : 1;\n retVal[i - start] = value;\n if (value < lmin)\n lmin = value;\n if (value > lmax)\n lmax = value;\n }\n data.distanceArrayData = retVal;\n data.min = lmin;\n data.max = lmax;\n } catch (e) {\n data.error = e;\n }\n postMessage(data);\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n// the startup function\n__webpack_require__.x = () => {\n\t// Load entry module and return exports\n\t// This entry module depends on other loaded chunks and execution need to be delayed\n\tvar __webpack_exports__ = __webpack_require__.O(undefined, [1], () => (__webpack_require__(3190)))\n\t__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n\treturn __webpack_exports__;\n};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks and sibling chunks for the entrypoint\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".js\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && !scriptUrl) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","// no baseURI\n\n// object to store loaded chunks\n// \"1\" means \"already loaded\"\nvar installedChunks = {\n\t190: 1\n};\n\n// importScripts chunk loading\nvar installChunk = (data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\tfor(var moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) runtime(__webpack_require__);\n\twhile(chunkIds.length)\n\t\tinstalledChunks[chunkIds.pop()] = 1;\n\tparentChunkLoadingFunction(data);\n};\n__webpack_require__.f.i = (chunkId, promises) => {\n\t// \"1\" is the signal for \"already loaded\"\n\tif(!installedChunks[chunkId]) {\n\t\tif(true) { // all chunks have JS\n\t\t\timportScripts(__webpack_require__.p + __webpack_require__.u(chunkId));\n\t\t}\n\t}\n};\n\nvar chunkLoadingGlobal = self[\"webpackChunkbio\"] = self[\"webpackChunkbio\"] || [];\nvar parentChunkLoadingFunction = chunkLoadingGlobal.push.bind(chunkLoadingGlobal);\nchunkLoadingGlobal.push = installChunk;\n\n// no HMR\n\n// no HMR manifest","// run startup\nvar __webpack_exports__ = __webpack_require__.x();\n"],"names":["deferred","next","MmDistanceFunctionsNames","mmDistanceFunctions","HAMMING","hamming","LEVENSHTEIN","levenstein","NEEDLEMANN_WUNSCH","n","MONOMER_CHEMICAL_DISTANCE","onmessage","event","fnName","values","templateIdx","start","end","data","lmin","lmax","Number","MIN_VALUE","retVal","Float32Array","distanceFn","i","value","distanceArrayData","min","max","e","error","postMessage","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","m","x","__webpack_exports__","O","result","chunkIds","fn","priority","notFulfilled","Infinity","length","fulfilled","j","Object","keys","every","key","splice","r","d","definition","o","defineProperty","enumerable","get","f","chunkId","Promise","all","reduce","promises","u","g","globalThis","this","Function","window","obj","prop","prototype","hasOwnProperty","call","scriptUrl","importScripts","location","document","currentScript","src","scripts","getElementsByTagName","Error","replace","p","installedChunks","chunkLoadingGlobal","self","parentChunkLoadingFunction","push","bind","moreModules","runtime","pop","then"],"sourceRoot":""}
package/dist/381.js DELETED
@@ -1,2 +0,0 @@
1
- var bio;(()=>{"use strict";var e,r,t={2381:(e,r,t)=>{var o=t(6814),n=t(6361),a=t(9657);onmessage=async e=>{const{values:r,startIdx:t,endIdx:s,threshold:i,fnName:c,opts:l}=e.data;try{const e=[],p=[],h=[],f=s-t;if((0,n.sQ)(c))for(let e=0;e<r.length;++e)(0,o.k)(r[e])||(r[e]=new a.Z(r[e]._data,r[e]._length));let u=0;const g=new n.UH(c).getMeasure(l),v=r.length-2-Math.floor(Math.sqrt(-8*t+4*r.length*(r.length-1)-7)/2-.5),b=t-r.length*v+Math.floor((v+1)*(v+2)/2);let d=v,w=b;for(;u<f;){const t=(0,o.k)(r[d])||(0,o.k)(r[w])?1:g(r[d],r[w]);1-t>=i&&(e.push(d),p.push(w),h.push(t)),u++,w++,w===r.length&&(d++,w=d+1)}const y=new Int32Array(e),m=new Int32Array(p),x=new Float32Array(h);postMessage({i:y,j:m,distance:x})}catch(e){postMessage({error:e})}}}},o={};function n(e){var r=o[e];if(void 0!==r)return r.exports;var a=o[e]={exports:{}};return t[e](a,a.exports,n),a.exports}n.m=t,n.x=()=>{var e=n.O(void 0,[1,44,361],(()=>n(2381)));return n.O(e)},e=[],n.O=(r,t,o,a)=>{if(!t){var s=1/0;for(p=0;p<e.length;p++){for(var[t,o,a]=e[p],i=!0,c=0;c<t.length;c++)(!1&a||s>=a)&&Object.keys(n.O).every((e=>n.O[e](t[c])))?t.splice(c--,1):(i=!1,a<s&&(s=a));if(i){e.splice(p--,1);var l=o();void 0!==l&&(r=l)}}return r}a=a||0;for(var p=e.length;p>0&&e[p-1][2]>a;p--)e[p]=e[p-1];e[p]=[t,o,a]},n.d=(e,r)=>{for(var t in r)n.o(r,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce(((r,t)=>(n.f[t](e,r),r)),[])),n.u=e=>e+".js",n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),(()=>{var e;n.g.importScripts&&(e=n.g.location+"");var r=n.g.document;if(!e&&r&&(r.currentScript&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var o=t.length-1;o>-1&&!e;)e=t[o--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),n.p=e})(),(()=>{var e={381:1};n.f.i=(r,t)=>{e[r]||importScripts(n.p+n.u(r))};var r=self.webpackChunkbio=self.webpackChunkbio||[],t=r.push.bind(r);r.push=r=>{var[o,a,s]=r;for(var i in a)n.o(a,i)&&(n.m[i]=a[i]);for(s&&s(n);o.length;)e[o.pop()]=1;t(r)}})(),r=n.x,n.x=()=>Promise.all([1,44,361].map(n.e,n)).then(r);var a=n.x();bio=a})();
2
- //# sourceMappingURL=381.js.map