New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@datagrok-libraries/chem-meta

Package Overview
Dependencies
Maintainers
3
Versions
28
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@datagrok-libraries/chem-meta - npm Package Compare versions

Comparing version 1.0.6 to 1.0.7

2

package.json

@@ -7,3 +7,3 @@ {

"friendlyName": "Datagrok chem-meta library",
"version": "1.0.6",
"version": "1.0.7",
"description": "",

@@ -10,0 +10,0 @@ "dependencies": {

@@ -8,2 +8,3 @@ export interface ChemicalTableParser {

z: Float32Array;
pairsOfBondedAtoms: Uint16Array[];
}

@@ -22,3 +23,11 @@ export declare type AtomAndBondCounts = {

protected constructor(file: string);
protected static instance: ChemicalTableParserBase;
protected file: string;
protected _atomCount?: number;
protected _bondCount?: number;
protected xyzAtomCoordinates?: CoordinateArrays;
protected _atomTypes?: string[];
protected _pairsOfBondedAtoms?: Uint16Array[];
init(file: string): void;
/** Total number of atoms in a molecule */
get atomCount(): number;

@@ -34,41 +43,24 @@ /** Number of bonds in a molecule */

get atomTypes(): string[];
protected file: string;
/** Index running along the string/file being parsed */
protected _atomCount?: number;
protected _bondCount?: number;
/** The array of X, Y, Z arrays for atomic coordinates */
protected atomCoordinates?: CoordinateArrays;
protected _atomTypes?: string[];
get pairsOfBondedAtoms(): Uint16Array[];
protected abstract parseAtomAndBondCounts(): AtomAndBondCounts;
protected abstract getCountsLineIdx(): number;
/** Get idx of the first line of the atom block containing atom data */
protected abstract getAtomBlockIdx(): number;
/** Get idx of the first line of the bond block containing bond data */
protected abstract getBondBlockIdx(): number;
/** Shift idx from the beginning of the line to X coordinate */
protected abstract shiftIdxToXColumn(lineStartIdx: number): number;
/** Shift idx from the beginning of the line to atom type column */
protected abstract shiftIdxToAtomType(lineStartIdx: number): number;
/** Parse atom type at idx */
protected abstract shiftIdxToBondedAtomsPair(lineStartIdx: number): number;
protected abstract parseAtomType(idx: number): string;
protected setAtomAndBondCounts(): void;
/** Gets the idx of the next column relatively to this._currentIdx */
protected getNextColumnIdx(idx: number): number;
/** Shift idx from beginning of the specified line to the specified column */
protected shiftToSpecifiedColumn(lineStartIdx: number, columnNumber: number): number;
protected shiftIdxToSpecifiedColumn(lineStartIdx: number, columnNumber: number): number;
protected parseAtomTypes(): string[];
protected parseAtomCoordinates(): CoordinateArrays;
/** Check if a character is whitespace including '\t' */
protected parseBondedAtomPairs(): Uint16Array[];
protected isWhitespace(idx: number): boolean;
/** Get index of the next line starting from idx */
protected getNextLineIdx(idx: number): number;
/** Get a float value in the current column (at idx) */
protected parseFloatValue(idx: number): number;
/** Get an int value in the current column (at idx) */
protected parseIntValue(idx: number): number;
/** Parse a numeric value depending on the functional argument */
protected parseNumericValue(parserFunction: (str: string) => number, idx: number): number;
protected static instance: ChemicalTableParserBase;
protected parseFloatValue(idxOfNumber: number): number;
protected parseIntValue(idxOfNumber: number): number;
protected parseNumericValue(parserFunction: (str: string) => number, idxOfNumber: number): number;
}
export {};
//# sourceMappingURL=chemical-table-parser.d.ts.map

@@ -7,4 +7,2 @@ /** Base singleton for Molfile or Mol2 parser/handler */

;
// Public members
// public abstract static createInstance(file: string): ChemicalTableParserBase;
init(file) {

@@ -15,4 +13,6 @@ this.file = file.replace(/\r/g, '');

this._bondCount = undefined;
this.atomCoordinates = undefined;
this.xyzAtomCoordinates = undefined;
this._pairsOfBondedAtoms = undefined;
}
/** Total number of atoms in a molecule */
get atomCount() {

@@ -31,5 +31,5 @@ if (this._atomCount === undefined)

get x() {
if (this.atomCoordinates === undefined)
this.atomCoordinates = this.parseAtomCoordinates();
return this.atomCoordinates.x;
if (this.xyzAtomCoordinates === undefined)
this.xyzAtomCoordinates = this.parseAtomCoordinates();
return this.xyzAtomCoordinates.x;
}

@@ -39,5 +39,5 @@ ;

get y() {
if (this.atomCoordinates === undefined)
this.atomCoordinates = this.parseAtomCoordinates();
return this.atomCoordinates.y;
if (this.xyzAtomCoordinates === undefined)
this.xyzAtomCoordinates = this.parseAtomCoordinates();
return this.xyzAtomCoordinates.y;
}

@@ -47,5 +47,5 @@ ;

get z() {
if (this.atomCoordinates === undefined)
this.atomCoordinates = this.parseAtomCoordinates();
return this.atomCoordinates.z;
if (this.xyzAtomCoordinates === undefined)
this.xyzAtomCoordinates = this.parseAtomCoordinates();
return this.xyzAtomCoordinates.z;
}

@@ -58,2 +58,7 @@ ;

}
get pairsOfBondedAtoms() {
if (this._pairsOfBondedAtoms === undefined)
this._pairsOfBondedAtoms = this.parseBondedAtomPairs();
return this._pairsOfBondedAtoms;
}
setAtomAndBondCounts() {

@@ -64,3 +69,2 @@ const { atomCount, bondCount } = this.parseAtomAndBondCounts();

}
/** Gets the idx of the next column relatively to this._currentIdx */
getNextColumnIdx(idx) {

@@ -75,6 +79,6 @@ // skip non-whitespace, if necessary

}
/** Shift idx from beginning of the specified line to the specified column */
shiftToSpecifiedColumn(lineStartIdx, columnNumber) {
shiftIdxToSpecifiedColumn(lineStartIdx, columnNumber) {
let idx = lineStartIdx;
for (let i = 0; i < columnNumber; i++)
const numberOfJumps = this.isWhitespace(idx) ? columnNumber : columnNumber - 1;
for (let i = 0; i < numberOfJumps; i++)
idx = this.getNextColumnIdx(idx);

@@ -110,7 +114,19 @@ return idx;

}
/** Check if a character is whitespace including '\t' */
parseBondedAtomPairs() {
const bondedAtomPairs = new Array(this.bondCount);
let idx = this.getBondBlockIdx();
for (let i = 0; i < this.bondCount; i++) {
idx = this.shiftIdxToBondedAtomsPair(idx);
const pair = new Uint16Array(2);
pair[0] = this.parseIntValue(idx);
idx = this.getNextColumnIdx(idx);
pair[1] = this.parseIntValue(idx);
bondedAtomPairs[i] = pair;
idx = this.getNextLineIdx(idx);
}
return bondedAtomPairs;
}
isWhitespace(idx) {
return /\s/.test(this.file.at(idx));
}
/** Get index of the next line starting from idx */
getNextLineIdx(idx) {

@@ -122,19 +138,16 @@ if (this.file.at(idx) !== '\n')

}
/** Get a float value in the current column (at idx) */
parseFloatValue(idx) {
return this.parseNumericValue(parseFloat, idx);
parseFloatValue(idxOfNumber) {
return this.parseNumericValue(parseFloat, idxOfNumber);
}
/** Get an int value in the current column (at idx) */
parseIntValue(idx) {
return this.parseNumericValue(parseInt, idx);
parseIntValue(idxOfNumber) {
return this.parseNumericValue(parseInt, idxOfNumber);
}
/** Parse a numeric value depending on the functional argument */
parseNumericValue(parserFunction, idx) {
let end = idx + 1;
parseNumericValue(parserFunction, idxOfNumber) {
let end = idxOfNumber + 1;
while (!this.isWhitespace(end))
++end;
const value = parserFunction(this.file.substring(idx, end));
const value = parserFunction(this.file.substring(idxOfNumber, end));
return value;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlbWljYWwtdGFibGUtcGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2hlbWljYWwtdGFibGUtcGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW9CQSx3REFBd0Q7QUFDeEQsTUFBTSxPQUFnQix1QkFBdUI7SUFDM0MsWUFBc0IsSUFBWTtRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFBQSxDQUFDO0lBRUYsaUJBQWlCO0lBRWpCLGdGQUFnRjtJQUV6RSxJQUFJLENBQUMsSUFBWTtRQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQzVCLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQzVCLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQzVCLElBQUksQ0FBQyxlQUFlLEdBQUcsU0FBUyxDQUFDO0lBQ25DLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssU0FBUztZQUMvQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQyxVQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVELHFDQUFxQztJQUNyQyxJQUFJLFNBQVM7UUFDWCxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssU0FBUztZQUMvQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQyxVQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVELGdEQUFnRDtJQUNoRCxJQUFJLENBQUM7UUFDSCxJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssU0FBUztZQUNwQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQ3JELE9B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QUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxzREFBc0Q7SUFDNUMsYUFBYSxDQUFDLEdBQVc7UUFDakMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxrRUFBa0U7SUFDeEQsaUJBQWlCLENBQ3pCLGNBQXVDLEVBQ3ZDLEdBQVc7UUFFWCxJQUFJLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQztZQUM1QixFQUFFLEdBQUcsQ0FBQztRQUNSLE1BQU0sS0FBSyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM1RCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FHRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQ2hlbWljYWxUYWJsZVBhcnNlciB7XG4gIGluaXQoZmlsZTogc3RyaW5nKTogdm9pZDtcbiAgYXRvbUNvdW50OiBudW1iZXI7XG4gIGJvbmRDb3VudDogbnVtYmVyO1xuICB4OiBGbG9hdDMyQXJyYXk7XG4gIHk6IEZsb2F0MzJBcnJheTtcbiAgejogRmxvYXQzMkFycmF5O1xufVxuXG5leHBvcnQgdHlwZSBBdG9tQW5kQm9uZENvdW50cyA9IHtcbiAgYXRvbUNvdW50OiBudW1iZXIsXG4gIGJvbmRDb3VudDogbnVtYmVyXG59XG5cbnR5cGUgQ29vcmRpbmF0ZUFycmF5cyA9IHtcbiAgeDogRmxvYXQzMkFycmF5LFxuICB5OiBGbG9hdDMyQXJyYXksXG4gIHo6IEZsb2F0MzJBcnJheSxcbn1cblxuLyoqIEJhc2Ugc2luZ2xldG9uIGZvciBNb2xmaWxlIG9yIE1vbDIgcGFyc2VyL2hhbmRsZXIgKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDaGVtaWNhbFRhYmxlUGFyc2VyQmFzZSBpbXBsZW1lbnRzIENoZW1pY2FsVGFibGVQYXJzZXIge1xuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoZmlsZTogc3RyaW5nKSB7XG4gICAgdGhpcy5pbml0KGZpbGUpO1xuICB9O1xuXG4gIC8vIFB1YmxpYyBtZW1iZXJzXG5cbiAgLy8gcHVibGljIGFic3RyYWN0IHN0YXRpYyBjcmVhdGVJbnN0YW5jZShmaWxlOiBzdHJpbmcpOiBDaGVtaWNhbFRhYmxlUGFyc2VyQmFzZTtcblxuICBwdWJsaWMgaW5pdChmaWxlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmZpbGUgPSBmaWxlLnJlcGxhY2UoL1xcci9nLCAnJyk7XG4gICAgdGhpcy5fYXRvbUNvdW50ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuX2F0b21UeXBlcyA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9ib25kQ291bnQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5hdG9tQ29vcmRpbmF0ZXMgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgYXRvbUNvdW50KCk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMuX2F0b21Db3VudCA9PT0gdW5kZWZpbmVkKVxuICAgICAgdGhpcy5zZXRBdG9tQW5kQm9uZENvdW50cygpO1xuICAgIHJldHVybiB0aGlzLl9hdG9tQ291bnQhO1xuICB9XG5cbiAgLyoqIE51bWJlciBvZiBib25kcyBpbiBhIG1vbGVjdWxlICAqL1xuICBnZXQgYm9uZENvdW50KCk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMuX2JvbmRDb3VudCA9PT0gdW5kZWZpbmVkKVxuICAgICAgdGhpcy5zZXRBdG9tQW5kQm9uZENvdW50cygpO1xuICAgIHJldHVybiB0aGlzLl9ib25kQ291bnQhO1xuICB9XG5cbiAgLyoqIFggY29vcmRpbmF0ZXMgb2YgYWxsIGF0b21zIGluIGEgbW9sZWN1bGUgICovXG4gIGdldCB4KCk6IEZsb2F0MzJBcnJheSB7XG4gICAgaWYgKHRoaXMuYXRvbUNvb3JkaW5hdGVzID09PSB1bmRlZmluZWQpXG4gICAgICB0aGlzLmF0b21Db29yZGluYXRlcyA9IHRoaXMucGFyc2VBdG9tQ29vcmRpbmF0ZXMoKTtcbiAgICByZXR1cm4gdGhpcy5hdG9tQ29vcmRpbmF0ZXMueDtcbiAgfTtcblxuICAvKiogWSBjb29yZGluYXRlcyBvZiBhbGwgYXRvbXMgaW4gYSBtb2xlY3VsZSAgKi9cbiAgZ2V0IHkoKTogRmxvYXQzMkFycmF5IHtcbiAgICBpZiAodGhpcy5hdG9tQ29vcmRpbmF0ZXMgPT09IHVuZGVmaW5lZClcbiAgICAgIHRoaXMuYXRvbUNvb3JkaW5hdGVzID0gdGhpcy5wYXJzZUF0b21Db29yZGluYXRlcygpO1xuICAgIHJldHVybiB0aGlzLmF0b21Db29yZGluYXRlcyEueTtcbiAgfTtcblxuICAvKiogWiBjb29yZGluYXRlcyBvZiBhbGwgYXRvbXMgaW4gYSBtb2xlY3VsZSAgKi9cbiAgZ2V0IHooKTogRmxvYXQzMkFycmF5IHtcbiAgICBpZiAodGhpcy5hdG9tQ29vcmRpbmF0ZXMgPT09IHVuZGVmaW5lZClcbiAgICAgIHRoaXMuYXRvbUNvb3JkaW5hdGVzID0gdGhpcy5wYXJzZUF0b21Db29yZGluYXRlcygpO1xuICAgIHJldHVybiB0aGlzLmF0b21Db29yZGluYXRlcyEuejtcbiAgfTtcblxuICBnZXQgYXRvbVR5cGVzKCk6IHN0cmluZ1tdIHtcbiAgICBpZiAodGhpcy5fYXRvbVR5cGVzID09PSB1bmRlZmluZWQpXG4gICAgICB0aGlzLl9hdG9tVHlwZXMgPSB0aGlzLnBhcnNlQXRvbVR5cGVzKCk7XG4gICAgcmV0dXJuIHRoaXMuX2F0b21UeXBlcztcbiAgfVxuXG4gIC8vIFByb3RlY3RlZCBtZW1iZXJzXG5cbiAgcHJvdGVjdGVkIGZpbGUhOiBzdHJpbmc7XG4gIC8qKiBJbmRleCBydW5uaW5nIGFsb25nIHRoZSBzdHJpbmcvZmlsZSBiZWluZyBwYXJzZWQgICovXG4gIHByb3RlY3RlZCBfYXRvbUNvdW50PzogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX2JvbmRDb3VudD86IG51bWJlcjtcbiAgLyoqIFRoZSBhcnJheSBvZiBYLCBZLCBaIGFycmF5cyBmb3IgYXRvbWljIGNvb3JkaW5hdGVzICovXG4gIHByb3RlY3RlZCBhdG9tQ29vcmRpbmF0ZXM/OiBDb29yZGluYXRlQXJyYXlzO1xuICBwcm90ZWN0ZWQgX2F0b21UeXBlcz86IHN0cmluZ1tdO1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBwYXJzZUF0b21BbmRCb25kQ291bnRzKCk6IEF0b21BbmRCb25kQ291bnRzO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0Q291bnRzTGluZUlkeCgpOiBudW1iZXI7XG4gIC8qKiBHZXQgaWR4IG9mIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBhdG9tIGJsb2NrIGNvbnRhaW5pbmcgYXRvbSBkYXRhICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0QXRvbUJsb2NrSWR4KCk6IG51bWJlcjtcbiAgLyoqIEdldCBpZHggb2YgdGhlIGZpcnN0IGxpbmUgb2YgdGhlIGJvbmQgYmxvY2sgY29udGFpbmluZyBib25kIGRhdGEgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldEJvbmRCbG9ja0lkeCgpOiBudW1iZXI7XG4gIC8qKiBTaGlmdCBpZHggZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaW5lIHRvIFggY29vcmRpbmF0ZSAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc2hpZnRJZHhUb1hDb2x1bW4obGluZVN0YXJ0SWR4OiBudW1iZXIpOiBudW1iZXI7XG4gIC8qKiBTaGlmdCBpZHggZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaW5lIHRvIGF0b20gdHlwZSBjb2x1bW4gKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHNoaWZ0SWR4VG9BdG9tVHlwZShsaW5lU3RhcnRJZHg6IG51bWJlcik6IG51bWJlcjtcbiAgLyoqIFBhcnNlIGF0b20gdHlwZSBhdCBpZHggKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHBhcnNlQXRvbVR5cGUoaWR4OiBudW1iZXIpOiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIHNldEF0b21BbmRCb25kQ291bnRzKCk6IHZvaWQge1xuICAgIGNvbnN0IHthdG9tQ291bnQsIGJvbmRDb3VudH0gPSB0aGlzLnBhcnNlQXRvbUFuZEJvbmRDb3VudHMoKTtcbiAgICB0aGlzLl9hdG9tQ291bnQgPSBhdG9tQ291bnQ7XG4gICAgdGhpcy5fYm9uZENvdW50ID0gYm9uZENvdW50O1xuICB9XG5cbiAgLyoqIEdldHMgdGhlIGlkeCBvZiB0aGUgbmV4dCBjb2x1bW4gcmVsYXRpdmVseSB0byB0aGlzLl9jdXJyZW50SWR4ICovXG4gIHByb3RlY3RlZCBnZXROZXh0Q29sdW1uSWR4KGlkeDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAvLyBza2lwIG5vbi13aGl0ZXNwYWNlLCBpZiBuZWNlc3NhcnlcbiAgICB3aGlsZSAoIXRoaXMuaXNXaGl0ZXNwYWNlKGlkeCkpXG4gICAgICArK2lkeDtcbiAgICAvLyBza2lwIHdoaXRlc3BhY2VcbiAgICB3aGlsZSAodGhpcy5pc1doaXRlc3BhY2UoaWR4KSlcbiAgICAgICsraWR4O1xuICAgIHJldHVybiBpZHg7XG4gIH1cblxuICAvKiogU2hpZnQgaWR4IGZyb20gYmVnaW5uaW5nIG9mIHRoZSBzcGVjaWZpZWQgbGluZSB0byB0aGUgc3BlY2lmaWVkIGNvbHVtbiAgKi9cbiAgcHJvdGVjdGVkIHNoaWZ0VG9TcGVjaWZpZWRDb2x1bW4obGluZVN0YXJ0SWR4OiBudW1iZXIsIGNvbHVtbk51bWJlcjogbnVtYmVyKSB7XG4gICAgbGV0IGlkeCA9IGxpbmVTdGFydElkeDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbHVtbk51bWJlcjsgaSsrKVxuICAgICAgaWR4ID0gdGhpcy5nZXROZXh0Q29sdW1uSWR4KGlkeCk7XG4gICAgcmV0dXJuIGlkeDtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXJzZUF0b21UeXBlcygpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgYXRvbUNvdW50ID0gdGhpcy5hdG9tQ291bnQ7XG4gICAgY29uc3QgYXRvbVR5cGVzID0gbmV3IEFycmF5PHN0cmluZz4oYXRvbUNvdW50KTtcbiAgICBsZXQgaWR4ID0gdGhpcy5nZXRBdG9tQmxvY2tJZHgoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGF0b21Db3VudDsgaSsrKSB7XG4gICAgICBpZHggPSB0aGlzLnNoaWZ0SWR4VG9BdG9tVHlwZShpZHgpO1xuICAgICAgYXRvbVR5cGVzW2ldID0gdGhpcy5wYXJzZUF0b21UeXBlKGlkeCk7XG4gICAgICBpZHggPSB0aGlzLmdldE5leHRMaW5lSWR4KGlkeCk7XG4gICAgfVxuICAgIHJldHVybiBhdG9tVHlwZXM7XG4gIH07XG5cbiAgcHJvdGVjdGVkIHBhcnNlQXRvbUNvb3JkaW5hdGVzKCk6IENvb3JkaW5hdGVBcnJheXMge1xuICAgIGNvbnN0IHggPSBuZXcgRmxvYXQzMkFycmF5KHRoaXMuYXRvbUNvdW50KTtcbiAgICBjb25zdCB5ID0gbmV3IEZsb2F0MzJBcnJheSh0aGlzLmF0b21Db3VudCk7XG4gICAgY29uc3QgeiA9IG5ldyBGbG9hdDMyQXJyYXkodGhpcy5hdG9tQ291bnQpO1xuICAgIGxldCBpZHggPSB0aGlzLmdldEF0b21CbG9ja0lkeCgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hdG9tQ291bnQ7IGkrKykge1xuICAgICAgaWR4ID0gdGhpcy5zaGlmdElkeFRvWENvbHVtbihpZHgpO1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIFt4LCB5LCB6XSkge1xuICAgICAgICBpdGVtW2ldID0gdGhpcy5wYXJzZUZsb2F0VmFsdWUoaWR4KTtcbiAgICAgICAgaWR4ID0gdGhpcy5nZXROZXh0Q29sdW1uSWR4KGlkeCk7XG4gICAgICB9XG4gICAgICBpZHggPSB0aGlzLmdldE5leHRMaW5lSWR4KGlkeCk7XG4gICAgfVxuICAgIHJldHVybiB7eDogeCwgeTogeSwgejogen07XG4gIH1cblxuICAvKiogQ2hlY2sgaWYgYSBjaGFyYWN0ZXIgaXMgd2hpdGVzcGFjZSBpbmNsdWRpbmcgJ1xcdCcgICovXG4gIHByb3RlY3RlZCBpc1doaXRlc3BhY2UoaWR4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gL1xccy8udGVzdCh0aGlzLmZpbGUuYXQoaWR4KSEpO1xuICB9XG5cbiAgLyoqIEdldCBpbmRleCBvZiB0aGUgbmV4dCBsaW5lIHN0YXJ0aW5nIGZyb20gaWR4ICAqL1xuICBwcm90ZWN0ZWQgZ2V0TmV4dExpbmVJZHgoaWR4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLmZpbGUuYXQoaWR4KSAhPT0gJ1xcbicpXG4gICAgICByZXR1cm4gdGhpcy5maWxlLmluZGV4T2YoJ1xcbicsIGlkeCkgKyAxO1xuICAgIGVsc2VcbiAgICAgIHJldHVybiBpZHggKyAxO1xuICB9XG5cbiAgLyoqIEdldCBhIGZsb2F0IHZhbHVlIGluIHRoZSBjdXJyZW50IGNvbHVtbiAoYXQgaWR4KSAqL1xuICBwcm90ZWN0ZWQgcGFyc2VGbG9hdFZhbHVlKGlkeDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZU51bWVyaWNWYWx1ZShwYXJzZUZsb2F0LCBpZHgpO1xuICB9XG5cbiAgLyoqIEdldCBhbiBpbnQgdmFsdWUgaW4gdGhlIGN1cnJlbnQgY29sdW1uIChhdCBpZHgpICovXG4gIHByb3RlY3RlZCBwYXJzZUludFZhbHVlKGlkeDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZU51bWVyaWNWYWx1ZShwYXJzZUludCwgaWR4KTtcbiAgfVxuXG4gIC8qKiBQYXJzZSBhIG51bWVyaWMgdmFsdWUgZGVwZW5kaW5nIG9uIHRoZSBmdW5jdGlvbmFsIGFyZ3VtZW50ICAqL1xuICBwcm90ZWN0ZWQgcGFyc2VOdW1lcmljVmFsdWUoXG4gICAgcGFyc2VyRnVuY3Rpb246IChzdHI6IHN0cmluZykgPT4gbnVtYmVyLFxuICAgIGlkeDogbnVtYmVyXG4gICk6IG51bWJlciB7XG4gICAgbGV0IGVuZCA9IGlkeCArIDE7XG4gICAgd2hpbGUgKCF0aGlzLmlzV2hpdGVzcGFjZShlbmQpKVxuICAgICAgKytlbmQ7XG4gICAgY29uc3QgdmFsdWUgPSBwYXJzZXJGdW5jdGlvbih0aGlzLmZpbGUuc3Vic3RyaW5nKGlkeCwgZW5kKSk7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN0YXRpYyBpbnN0YW5jZTogQ2hlbWljYWxUYWJsZVBhcnNlckJhc2U7XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlbWljYWwtdGFibGUtcGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2hlbWljYWwtdGFibGUtcGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXFCQSx3REFBd0Q7QUFDeEQsTUFBTSxPQUFnQix1QkFBdUI7SUFDM0MsWUFBc0IsSUFBWTtRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFBQSxDQUFDO0lBV0ssSUFBSSxDQUFDLElBQVk7UUFDdEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUM1QixJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUM1QixJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUM1QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsU0FBUyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxTQUFTLENBQUM7SUFDdkMsQ0FBQztJQUVELDBDQUEwQztJQUMxQyxJQUFJLFNBQVM7UUFDWCxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssU0FBUztZQUMvQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQyxVQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVELHFDQUFxQztJQUNyQyxJQUFJLFNBQVM7UUFDWCxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssU0FBUztZQUMvQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQyxVQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVELGdEQUFnRDtJQUNoRCxJQUFJLENBQUM7UUFDSCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxTQUFTO1lBQ3ZDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJ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QztJQUN6RCxDQUFDO0lBRVMsYUFBYSxDQUFDLFdBQW1CO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRVMsaUJBQWlCLENBQ3pCLGNBQXVDLEVBQ3ZDLFdBQW1CO1FBRW5CLElBQUksR0FBRyxHQUFHLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDMUIsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDO1lBQzVCLEVBQUUsR0FBRyxDQUFDO1FBQ1IsTUFBTSxLQUFLLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBDaGVtaWNhbFRhYmxlUGFyc2VyIHtcbiAgaW5pdChmaWxlOiBzdHJpbmcpOiB2b2lkO1xuICBhdG9tQ291bnQ6IG51bWJlcjtcbiAgYm9uZENvdW50OiBudW1iZXI7XG4gIHg6IEZsb2F0MzJBcnJheTtcbiAgeTogRmxvYXQzMkFycmF5O1xuICB6OiBGbG9hdDMyQXJyYXk7XG4gIHBhaXJzT2ZCb25kZWRBdG9tczogVWludDE2QXJyYXlbXTtcbn1cblxuZXhwb3J0IHR5cGUgQXRvbUFuZEJvbmRDb3VudHMgPSB7XG4gIGF0b21Db3VudDogbnVtYmVyLFxuICBib25kQ291bnQ6IG51bWJlclxufVxuXG50eXBlIENvb3JkaW5hdGVBcnJheXMgPSB7XG4gIHg6IEZsb2F0MzJBcnJheSxcbiAgeTogRmxvYXQzMkFycmF5LFxuICB6OiBGbG9hdDMyQXJyYXksXG59XG5cbi8qKiBCYXNlIHNpbmdsZXRvbiBmb3IgTW9sZmlsZSBvciBNb2wyIHBhcnNlci9oYW5kbGVyICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ2hlbWljYWxUYWJsZVBhcnNlckJhc2UgaW1wbGVtZW50cyBDaGVtaWNhbFRhYmxlUGFyc2VyIHtcbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGZpbGU6IHN0cmluZykge1xuICAgIHRoaXMuaW5pdChmaWxlKTtcbiAgfTtcblxuICBwcm90ZWN0ZWQgc3RhdGljIGluc3RhbmNlOiBDaGVtaWNhbFRhYmxlUGFyc2VyQmFzZTtcblxuICBwcm90ZWN0ZWQgZmlsZSE6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9hdG9tQ291bnQ/OiBudW1iZXI7XG4gIHByb3RlY3RlZCBfYm9uZENvdW50PzogbnVtYmVyO1xuICBwcm90ZWN0ZWQgeHl6QXRvbUNvb3JkaW5hdGVzPzogQ29vcmRpbmF0ZUFycmF5cztcbiAgcHJvdGVjdGVkIF9hdG9tVHlwZXM/OiBzdHJpbmdbXTtcbiAgcHJvdGVjdGVkIF9wYWlyc09mQm9uZGVkQXRvbXM/OiBVaW50MTZBcnJheVtdO1xuXG4gIHB1YmxpYyBpbml0KGZpbGU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZmlsZSA9IGZpbGUucmVwbGFjZSgvXFxyL2csICcnKTtcbiAgICB0aGlzLl9hdG9tQ291bnQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5fYXRvbVR5cGVzID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuX2JvbmRDb3VudCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnh5ekF0b21Db29yZGluYXRlcyA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9wYWlyc09mQm9uZGVkQXRvbXMgPSB1bmRlZmluZWQ7XG4gIH1cblxuICAvKiogVG90YWwgbnVtYmVyIG9mIGF0b21zIGluIGEgbW9sZWN1bGUgKi9cbiAgZ2V0IGF0b21Db3VudCgpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLl9hdG9tQ291bnQgPT09IHVuZGVmaW5lZClcbiAgICAgIHRoaXMuc2V0QXRvbUFuZEJvbmRDb3VudHMoKTtcbiAgICByZXR1cm4gdGhpcy5fYXRvbUNvdW50ITtcbiAgfVxuXG4gIC8qKiBOdW1iZXIgb2YgYm9uZHMgaW4gYSBtb2xlY3VsZSAgKi9cbiAgZ2V0IGJvbmRDb3VudCgpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLl9ib25kQ291bnQgPT09IHVuZGVmaW5lZClcbiAgICAgIHRoaXMuc2V0QXRvbUFuZEJvbmRDb3VudHMoKTtcbiAgICByZXR1cm4gdGhpcy5fYm9uZENvdW50ITtcbiAgfVxuXG4gIC8qKiBYIGNvb3JkaW5hdGVzIG9mIGFsbCBhdG9tcyBpbiBhIG1vbGVjdWxlICAqL1xuICBnZXQgeCgpOiBGbG9hdDMyQXJyYXkge1xuICAgIGlmICh0aGlzLnh5ekF0b21Db29yZGluYXRlcyA9PT0gdW5kZWZpbmVkKVxuICAgICAgdGhpcy54eXpBdG9tQ29vcmRpbmF0ZXMgPSB0aGlzLnBhcnNlQXRvbUNvb3JkaW5hdGVzKCk7XG4gICAgcmV0dXJuIHRoaXMueHl6QXRvbUNvb3JkaW5hdGVzLng7XG4gIH07XG5cbiAgLyoqIFkgY29vcmRpbmF0ZXMgb2YgYWxsIGF0b21zIGluIGEgbW9sZWN1bGUgICovXG4gIGdldCB5KCk6IEZsb2F0MzJBcnJheSB7XG4gICAgaWYgKHRoaXMueHl6QXRvbUNvb3JkaW5hdGVzID09PSB1bmRlZmluZWQpXG4gICAgICB0aGlzLnh5ekF0b21Db29yZGluYXRlcyA9IHRoaXMucGFyc2VBdG9tQ29vcmRpbmF0ZXMoKTtcbiAgICByZXR1cm4gdGhpcy54eXpBdG9tQ29vcmRpbmF0ZXMhLnk7XG4gIH07XG5cbiAgLyoqIFogY29vcmRpbmF0ZXMgb2YgYWxsIGF0b21zIGluIGEgbW9sZWN1bGUgICovXG4gIGdldCB6KCk6IEZsb2F0MzJBcnJheSB7XG4gICAgaWYgKHRoaXMueHl6QXRvbUNvb3JkaW5hdGVzID09PSB1bmRlZmluZWQpXG4gICAgICB0aGlzLnh5ekF0b21Db29yZGluYXRlcyA9IHRoaXMucGFyc2VBdG9tQ29vcmRpbmF0ZXMoKTtcbiAgICByZXR1cm4gdGhpcy54eXpBdG9tQ29vcmRpbmF0ZXMhLno7XG4gIH07XG5cbiAgZ2V0IGF0b21UeXBlcygpOiBzdHJpbmdbXSB7XG4gICAgaWYgKHRoaXMuX2F0b21UeXBlcyA9PT0gdW5kZWZpbmVkKVxuICAgICAgdGhpcy5fYXRvbVR5cGVzID0gdGhpcy5wYXJzZUF0b21UeXBlcygpO1xuICAgIHJldHVybiB0aGlzLl9hdG9tVHlwZXM7XG4gIH1cblxuICBnZXQgcGFpcnNPZkJvbmRlZEF0b21zKCk6IFVpbnQxNkFycmF5W10ge1xuICAgIGlmICh0aGlzLl9wYWlyc09mQm9uZGVkQXRvbXMgPT09IHVuZGVmaW5lZClcbiAgICAgIHRoaXMuX3BhaXJzT2ZCb25kZWRBdG9tcyA9IHRoaXMucGFyc2VCb25kZWRBdG9tUGFpcnMoKTtcbiAgICByZXR1cm4gdGhpcy5fcGFpcnNPZkJvbmRlZEF0b21zITtcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBwYXJzZUF0b21BbmRCb25kQ291bnRzKCk6IEF0b21BbmRCb25kQ291bnRzO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0Q291bnRzTGluZUlkeCgpOiBudW1iZXI7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRBdG9tQmxvY2tJZHgoKTogbnVtYmVyO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0Qm9uZEJsb2NrSWR4KCk6IG51bWJlcjtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHNoaWZ0SWR4VG9YQ29sdW1uKGxpbmVTdGFydElkeDogbnVtYmVyKTogbnVtYmVyO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc2hpZnRJZHhUb0F0b21UeXBlKGxpbmVTdGFydElkeDogbnVtYmVyKTogbnVtYmVyO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc2hpZnRJZHhUb0JvbmRlZEF0b21zUGFpcihsaW5lU3RhcnRJZHg6IG51bWJlcik6IG51bWJlcjtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHBhcnNlQXRvbVR5cGUoaWR4OiBudW1iZXIpOiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIHNldEF0b21BbmRCb25kQ291bnRzKCk6IHZvaWQge1xuICAgIGNvbnN0IHthdG9tQ291bnQsIGJvbmRDb3VudH0gPSB0aGlzLnBhcnNlQXRvbUFuZEJvbmRDb3VudHMoKTtcbiAgICB0aGlzLl9hdG9tQ291bnQgPSBhdG9tQ291bnQ7XG4gICAgdGhpcy5fYm9uZENvdW50ID0gYm9uZENvdW50O1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldE5leHRDb2x1bW5JZHgoaWR4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIC8vIHNraXAgbm9uLXdoaXRlc3BhY2UsIGlmIG5lY2Vzc2FyeVxuICAgIHdoaWxlICghdGhpcy5pc1doaXRlc3BhY2UoaWR4KSlcbiAgICAgICsraWR4O1xuICAgIC8vIHNraXAgd2hpdGVzcGFjZVxuICAgIHdoaWxlICh0aGlzLmlzV2hpdGVzcGFjZShpZHgpKVxuICAgICAgKytpZHg7XG4gICAgcmV0dXJuIGlkeDtcbiAgfVxuXG4gIHByb3RlY3RlZCBzaGlmdElkeFRvU3BlY2lmaWVkQ29sdW1uKGxpbmVTdGFydElkeDogbnVtYmVyLCBjb2x1bW5OdW1iZXI6IG51bWJlcikge1xuICAgIGxldCBpZHggPSBsaW5lU3RhcnRJZHg7XG4gICAgY29uc3QgbnVtYmVyT2ZKdW1wcyA9IHRoaXMuaXNXaGl0ZXNwYWNlKGlkeCkgPyBjb2x1bW5OdW1iZXIgOiBjb2x1bW5OdW1iZXIgLSAxO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtYmVyT2ZKdW1wczsgaSsrKVxuICAgICAgaWR4ID0gdGhpcy5nZXROZXh0Q29sdW1uSWR4KGlkeCk7XG4gICAgcmV0dXJuIGlkeDtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXJzZUF0b21UeXBlcygpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgYXRvbUNvdW50ID0gdGhpcy5hdG9tQ291bnQ7XG4gICAgY29uc3QgYXRvbVR5cGVzID0gbmV3IEFycmF5PHN0cmluZz4oYXRvbUNvdW50KTtcbiAgICBsZXQgaWR4ID0gdGhpcy5nZXRBdG9tQmxvY2tJZHgoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGF0b21Db3VudDsgaSsrKSB7XG4gICAgICBpZHggPSB0aGlzLnNoaWZ0SWR4VG9BdG9tVHlwZShpZHgpO1xuICAgICAgYXRvbVR5cGVzW2ldID0gdGhpcy5wYXJzZUF0b21UeXBlKGlkeCk7XG4gICAgICBpZHggPSB0aGlzLmdldE5leHRMaW5lSWR4KGlkeCk7XG4gICAgfVxuICAgIHJldHVybiBhdG9tVHlwZXM7XG4gIH07XG5cbiAgcHJvdGVjdGVkIHBhcnNlQXRvbUNvb3JkaW5hdGVzKCk6IENvb3JkaW5hdGVBcnJheXMge1xuICAgIGNvbnN0IHggPSBuZXcgRmxvYXQzMkFycmF5KHRoaXMuYXRvbUNvdW50KTtcbiAgICBjb25zdCB5ID0gbmV3IEZsb2F0MzJBcnJheSh0aGlzLmF0b21Db3VudCk7XG4gICAgY29uc3QgeiA9IG5ldyBGbG9hdDMyQXJyYXkodGhpcy5hdG9tQ291bnQpO1xuICAgIGxldCBpZHggPSB0aGlzLmdldEF0b21CbG9ja0lkeCgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hdG9tQ291bnQ7IGkrKykge1xuICAgICAgaWR4ID0gdGhpcy5zaGlmdElkeFRvWENvbHVtbihpZHgpO1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIFt4LCB5LCB6XSkge1xuICAgICAgICBpdGVtW2ldID0gdGhpcy5wYXJzZUZsb2F0VmFsdWUoaWR4KTtcbiAgICAgICAgaWR4ID0gdGhpcy5nZXROZXh0Q29sdW1uSWR4KGlkeCk7XG4gICAgICB9XG4gICAgICBpZHggPSB0aGlzLmdldE5leHRMaW5lSWR4KGlkeCk7XG4gICAgfVxuICAgIHJldHVybiB7eDogeCwgeTogeSwgejogen07XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFyc2VCb25kZWRBdG9tUGFpcnMoKTogVWludDE2QXJyYXlbXSB7XG4gICAgY29uc3QgYm9uZGVkQXRvbVBhaXJzID0gbmV3IEFycmF5PFVpbnQxNkFycmF5Pih0aGlzLmJvbmRDb3VudCk7XG4gICAgbGV0IGlkeCA9IHRoaXMuZ2V0Qm9uZEJsb2NrSWR4KCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmJvbmRDb3VudDsgaSsrKSB7XG4gICAgICBpZHggPSB0aGlzLnNoaWZ0SWR4VG9Cb25kZWRBdG9tc1BhaXIoaWR4KTtcbiAgICAgIGNvbnN0IHBhaXIgPSBuZXcgVWludDE2QXJyYXkoMik7XG4gICAgICBwYWlyWzBdID0gdGhpcy5wYXJzZUludFZhbHVlKGlkeCk7XG4gICAgICBpZHggPSB0aGlzLmdldE5leHRDb2x1bW5JZHgoaWR4KTtcbiAgICAgIHBhaXJbMV0gPSB0aGlzLnBhcnNlSW50VmFsdWUoaWR4KTtcbiAgICAgIGJvbmRlZEF0b21QYWlyc1tpXSA9IHBhaXI7XG4gICAgICBpZHggPSB0aGlzLmdldE5leHRMaW5lSWR4KGlkeCk7XG4gICAgfVxuICAgIHJldHVybiBib25kZWRBdG9tUGFpcnM7XG4gIH1cblxuICBwcm90ZWN0ZWQgaXNXaGl0ZXNwYWNlKGlkeDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIC9cXHMvLnRlc3QodGhpcy5maWxlLmF0KGlkeCkhKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXROZXh0TGluZUlkeChpZHg6IG51bWJlcik6IG51bWJlciB7XG4gICAgaWYgKHRoaXMuZmlsZS5hdChpZHgpICE9PSAnXFxuJylcbiAgICAgIHJldHVybiB0aGlzLmZpbGUuaW5kZXhPZignXFxuJywgaWR4KSArIDE7XG4gICAgZWxzZVxuICAgICAgcmV0dXJuIGlkeCArIDE7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFyc2VGbG9hdFZhbHVlKGlkeE9mTnVtYmVyOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnBhcnNlTnVtZXJpY1ZhbHVlKHBhcnNlRmxvYXQsIGlkeE9mTnVtYmVyKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXJzZUludFZhbHVlKGlkeE9mTnVtYmVyOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnBhcnNlTnVtZXJpY1ZhbHVlKHBhcnNlSW50LCBpZHhPZk51bWJlcik7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFyc2VOdW1lcmljVmFsdWUoXG4gICAgcGFyc2VyRnVuY3Rpb246IChzdHI6IHN0cmluZykgPT4gbnVtYmVyLFxuICAgIGlkeE9mTnVtYmVyOiBudW1iZXJcbiAgKTogbnVtYmVyIHtcbiAgICBsZXQgZW5kID0gaWR4T2ZOdW1iZXIgKyAxO1xuICAgIHdoaWxlICghdGhpcy5pc1doaXRlc3BhY2UoZW5kKSlcbiAgICAgICsrZW5kO1xuICAgIGNvbnN0IHZhbHVlID0gcGFyc2VyRnVuY3Rpb24odGhpcy5maWxlLnN1YnN0cmluZyhpZHhPZk51bWJlciwgZW5kKSk7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59XG4iXX0=
import { ChemicalTableParser, ChemicalTableParserBase, AtomAndBondCounts } from './chemical-table-parser';
/** Class for handling MDL Molfiles V2000 and V3000 */
export declare class MolfileHandler extends ChemicalTableParserBase implements ChemicalTableParser {

@@ -14,2 +13,3 @@ constructor(molfile: string);

protected getBondBlockIdx: () => number;
protected shiftIdxToBondedAtomsPair: (lineStartIdx: number) => number;
protected parseAtomType(idx: number): string;

@@ -26,2 +26,4 @@ /** Determine whether the file is V2000/V3000, or throw */

private shiftIdxToXColumnV3K;
private shiftIdxToBondedAtomsPairV2K;
private shiftIdxToBondedAtomsPairV3K;
private getBondBlockIdxV2K;

@@ -28,0 +30,0 @@ private getBondBlockIdxV3K;

import { ChemicalTableParserBase } from './chemical-table-parser';
import { MOLFILE_VERSION, V2K } from './molfile-parsing-const';
/** Class for handling MDL Molfiles V2000 and V3000 */
import { MOLFILE_VERSION, V2K_CONST } from './molfile-parsing-const';
export class MolfileHandler extends ChemicalTableParserBase {

@@ -9,3 +8,2 @@ constructor(molfile) {

}
// Public members
/** Init/reset the state of the handler for a new molfile */

@@ -23,6 +21,7 @@ init(molfile) {

this.getBondBlockIdx = isV2K ? this.getBondBlockIdxV2K : this.getBondBlockIdxV3K;
this.shiftIdxToBondedAtomsPair = isV2K ? this.shiftIdxToBondedAtomsPairV2K : this.shiftIdxToBondedAtomsPairV3K;
}
static createInstance(file) {
if (!this.instance)
this.instance = new MolfileHandler(file); // a workaround to define an abstract singleton
this.instance = new MolfileHandler(file);
return this.instance;

@@ -35,3 +34,2 @@ }

}
// Private members
/** Determine whether the file is V2000/V3000, or throw */

@@ -47,11 +45,10 @@ static determineMolfileVersion(molfile) {

shiftIdxToAtomTypeV2K(lineStartIdx) {
return this.shiftToSpecifiedColumn(lineStartIdx, 4);
return this.shiftIdxToSpecifiedColumn(lineStartIdx, V2K_CONST.ATOM_TYPE_COL);
}
shiftIdxToAtomTypeV3K(lineStartIdx) {
return this.shiftToSpecifiedColumn(lineStartIdx, 3);
return this.shiftIdxToSpecifiedColumn(lineStartIdx, 4 /* V3K_CONST.ATOM_TYPE_COL */);
}
getCountsLineV2KIdx() {
let idx = 0;
// 3 is for the number of header lines in molfiles
for (let i = 0; i < 3; ++i)
for (let i = 0; i < V2K_CONST.NUM_OF_HEADER_LINES; ++i)
idx = this.getNextLineIdx(idx);

@@ -61,3 +58,3 @@ return idx;

getCountsLineV3KIdx() {
return this.file.indexOf("M V30 COUNTS " /* V3K.BEGIN_COUNTS_LINE */);
return this.file.indexOf("M V30 COUNTS " /* V3K_CONST.BEGIN_COUNTS_LINE */);
}

@@ -70,3 +67,3 @@ getAtomBlockIdxV2K() {

getAtomBlockIdxV3K() {
let idx = this.file.indexOf("M V30 BEGIN ATOM" /* V3K.BEGIN_ATOM_BLOCK */);
let idx = this.file.indexOf("M V30 BEGIN ATOM" /* V3K_CONST.BEGIN_ATOM_BLOCK */);
idx = this.getNextLineIdx(idx);

@@ -79,4 +76,10 @@ return idx;

shiftIdxToXColumnV3K(lineStartIdx) {
return this.shiftToSpecifiedColumn(lineStartIdx, 4);
return this.shiftIdxToSpecifiedColumn(lineStartIdx, 5 /* V3K_CONST.X_COL */);
}
shiftIdxToBondedAtomsPairV2K(lineStartIdx) {
return this.shiftIdxToSpecifiedColumn(lineStartIdx, V2K_CONST.FIRST_BONDED_ATOM_COL);
}
shiftIdxToBondedAtomsPairV3K(lineStartIdx) {
return this.shiftIdxToSpecifiedColumn(lineStartIdx, 5 /* V3K_CONST.FIRST_BONDED_ATOM_COL */);
}
getBondBlockIdxV2K() {

@@ -89,25 +92,18 @@ let idx = this.getAtomBlockIdx();

getBondBlockIdxV3K() {
return this.getNextLineIdx(this.file.indexOf("M V30 BEGIN BOND" /* V3K.BEGIN_BOND_BLOCK */));
return this.getNextLineIdx(this.file.indexOf("M V30 BEGIN BOND" /* V3K_CONST.BEGIN_BOND_BLOCK */));
}
// todo: devise a more reliable validation
static validateV3K(molfile) {
if (molfile.indexOf("V3000" /* V3K.HEADER */) !== -1 &&
molfile.indexOf("M END" /* V3K.END */) !== -1)
return true;
return false;
return (molfile.indexOf("V3000" /* V3K_CONST.HEADER */) !== -1 &&
molfile.indexOf("M END" /* V3K_CONST.END */) !== -1);
}
// todo: devise a more reliable validation
static validateV2K(molfile) {
if (molfile.indexOf(V2K.HEADER) !== -1 &&
molfile.indexOf(V2K.END) !== -1)
return true;
return false;
return (molfile.indexOf(V2K_CONST.HEADER) !== -1 &&
molfile.indexOf(V2K_CONST.END) !== -1);
}
parseAtomAndBondCountsV2K() {
let begin = this.getCountsLineIdx();
// 3 is the # of digits allocated for atom/bond counts
let end = begin + 3;
let end = begin + V2K_CONST.NUM_OF_COUNTS_DIGITS;
const atomCount = parseInt(this.file.substring(begin, end));
begin = end;
end += 3;
end += V2K_CONST.NUM_OF_COUNTS_DIGITS;
const bondCount = parseInt(this.file.substring(begin, end));

@@ -119,3 +115,3 @@ return { atomCount: atomCount, bondCount: bondCount };

// parse atom count
let begin = this.file.indexOf("M V30 COUNTS " /* V3K.BEGIN_COUNTS_LINE */) + 14 /* V3K.COUNTS_SHIFT */;
let begin = this.file.indexOf("M V30 COUNTS " /* V3K_CONST.BEGIN_COUNTS_LINE */) + 14 /* V3K_CONST.COUNTS_SHIFT */;
let end = this.file.indexOf(' ', begin + 1);

@@ -130,2 +126,2 @@ const numOfAtoms = parseInt(this.file.substring(begin, end));

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9sZmlsZS1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibW9sZmlsZS1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBc0IsdUJBQXVCLEVBQW9CLE1BQU0seUJBQXlCLENBQUM7QUFDeEcsT0FBTyxFQUFDLGVBQWUsRUFBRSxHQUFHLEVBQU0sTUFBTSx5QkFBeUIsQ0FBQztBQUVsRSxzREFBc0Q7QUFDdEQsTUFBTSxPQUFPLGNBQWUsU0FBUSx1QkFBdUI7SUFDekQsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELGlCQUFpQjtJQUVqQiw0REFBNEQ7SUFDckQsSUFBSSxDQUFDLE9BQWU7UUFDekIsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVwQixNQUFNLGNBQWMsR0FBRyxjQUFjLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sS0FBSyxHQUFHLENBQUMsY0FBYyxLQUFLLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV6RCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQztRQUV0RyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUM7UUFFakYsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUM7UUFFcEYsSUFBSSxDQUFDLGlCQUFpQixH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ZVBhcnNlciwgQ2hlbWljYWxUYWJsZVBhcnNlckJhc2UsIEF0b21BbmRCb25kQ291bnRzfSBmcm9tICcuL2NoZW1pY2FsLXRhYmxlLXBhcnNlcic7XG5pbXBvcnQge01PTEZJTEVfVkVSU0lPTiwgVjJLLCBWM0t9IGZyb20gJy4vbW9sZmlsZS1wYXJzaW5nLWNvbnN0JztcblxuLyoqIENsYXNzIGZvciBoYW5kbGluZyBNREwgTW9sZmlsZXMgVjIwMDAgYW5kIFYzMDAwICovXG5leHBvcnQgY2xhc3MgTW9sZmlsZUhhbmRsZXIgZXh0ZW5kcyBDaGVtaWNhbFRhYmxlUGFyc2VyQmFzZSBpbXBsZW1lbnRzIENoZW1pY2FsVGFibGVQYXJzZXIge1xuICBjb25zdHJ1Y3Rvcihtb2xmaWxlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihtb2xmaWxlKTtcbiAgICB0aGlzLmluaXQobW9sZmlsZSk7XG4gIH1cblxuICAvLyBQdWJsaWMgbWVtYmVyc1xuXG4gIC8qKiBJbml0L3Jlc2V0IHRoZSBzdGF0ZSBvZiB0aGUgaGFuZGxlciBmb3IgYSBuZXcgbW9sZmlsZSAqL1xuICBwdWJsaWMgaW5pdChtb2xmaWxlOiBzdHJpbmcpIHtcbiAgICBzdXBlci5pbml0KG1vbGZpbGUpO1xuXG4gICAgY29uc3QgbW9sZmlsZVZlcnNpb24gPSBNb2xmaWxlSGFuZGxlci5kZXRlcm1pbmVNb2xmaWxlVmVyc2lvbih0aGlzLmZpbGUpO1xuICAgIGNvbnN0IGlzVjJLID0gKG1vbGZpbGVWZXJzaW9uID09PSBNT0xGSUxFX1ZFUlNJT04uVjIwMDApO1xuXG4gICAgdGhpcy5wYXJzZUF0b21BbmRCb25kQ291bnRzID0gaXNWMksgPyB0aGlzLnBhcnNlQXRvbUFuZEJvbmRDb3VudHNWMksgOiB0aGlzLnBhcnNlQXRvbUFuZEJvbmRDb3VudHNWM0s7XG5cbiAgICB0aGlzLmdldEF0b21CbG9ja0lkeCA9IGlzVjJLID8gdGhpcy5nZXRBdG9tQmxvY2tJZHhWMksgOiB0aGlzLmdldEF0b21CbG9ja0lkeFYzSztcblxuICAgIHRoaXMuZ2V0Q291bnRzTGluZUlkeCA9IGlzVjJLID8gdGhpcy5nZXRDb3VudHNMaW5lVjJLSWR4IDogdGhpcy5nZXRDb3VudHNMaW5lVjNLSWR4O1xuXG4gICAgdGhpcy5zaGlmdElkeFRvWENvbHVtbiA9IGlzVjJLID8gdGhpcy5zaGlmdElkeFRvWENvbHVtblYySyA6IHRoaXMuc2hpZnRJZHhUb1hDb2x1bW5WM0s7XG5cbiAgICB0aGlzLnNoaWZ0SWR4VG9BdG9tVHlwZSA9IGlzVjJLID8gdGhpcy5zaGlmdElkeFRvQXRvbVR5cGVWMksgOlxuICAgICAgdGhpcy5zaGlmdElkeFRvQXRvbVR5cGVWM0s7XG5cbiAgICB0aGlzLmdldEJvbmRCbG9ja0lkeCA9IGlzVjJLID8gdGhpcy5nZXRCb25kQmxvY2tJZHhWMksgOiB0aGlzLmdldEJvbmRCbG9ja0lkeFYzSztcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlSW5zdGFuY2UoZmlsZTogc3RyaW5nKTogTW9sZmlsZUhhbmRsZXIge1xuICAgIGlmICghdGhpcy5pbnN0YW5jZSlcbiAgICAgIHRoaXMuaW5zdGFuY2UgPSBuZXcgTW9sZmlsZUhhbmRsZXIoZmlsZSk7IC8vIGEgd29ya2Fyb3VuZCB0byBkZWZpbmUgYW4gYWJzdHJhY3Qgc2luZ2xldG9uXG4gICAgcmV0dXJuIHRoaXMuaW5zdGFuY2UgYXMgTW9sZmlsZUhhbmRsZXI7XG4gIH1cblxuICAvLyBQcm90ZWN0ZWQgbWVtYmVyc1xuXG4gIHByb3RlY3RlZCBwYXJzZUF0b21BbmRCb25kQ291bnRzITogKCkgPT4gQXRvbUFuZEJvbmRDb3VudHM7XG4gIHByb3RlY3RlZCBnZXRDb3VudHNMaW5lSWR4ITogKCkgPT4gbnVtYmVyO1xuICBwcm90ZWN0ZWQgZ2V0QXRvbUJsb2NrSWR4ITogKCkgPT4gbnVtYmVyO1xuICBwcm90ZWN0ZWQgc2hpZnRJZHhUb1hDb2x1bW4hOiAobGluZVN0YXJ0SWR4OiBudW1iZXIpID0+IG51bWJlcjtcbiAgcHJvdGVjdGVkIHNoaWZ0SWR4VG9BdG9tVHlwZSE6IChpZHg6IG51bWJlcikgPT4gbnVtYmVyO1xuICBwcm90ZWN0ZWQgZ2V0Qm9uZEJsb2NrSWR4ITogKCkgPT4gbnVtYmVyO1xuXG4gIHByb3RlY3RlZCBwYXJzZUF0b21UeXBlKGlkeDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBiZWdpbiA9IGlkeDtcbiAgICBjb25zdCBlbmQgPSB0aGlzLmZpbGUuaW5kZXhPZignICcsIGJlZ2luKTtcbiAgICByZXR1cm4gdGhpcy5maWxlLnN1YnN0cmluZyhiZWdpbiwgZW5kKTtcbiAgfVxuXG4gIC8vIFByaXZhdGUgbWVtYmVyc1xuXG4gIC8qKiBEZXRlcm1pbmUgd2hldGhlciB0aGUgZmlsZSBpcyBWMjAwMC9WMzAwMCwgb3IgdGhyb3cgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgZGV0ZXJtaW5lTW9sZmlsZVZlcnNpb24obW9sZmlsZTogc3RyaW5nKTogTU9MRklMRV9WRVJTSU9OIHtcbiAgICBpZiAoTW9sZmlsZUhhbmRsZXIudmFsaWRhdGVWM0sobW9sZmlsZSkpXG4gICAgICByZXR1cm4gTU9MRklMRV9WRVJTSU9OLlYzMDAwO1xuICAgIGVsc2UgaWYgKE1vbGZpbGVIYW5kbGVyLnZhbGlkYXRlVjJLKG1vbGZpbGUpKVxuICAgICAgcmV0dXJuIE1PTEZJTEVfVkVSU0lPTi5WMjAwMDtcbiAgICBlbHNlXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01hbGZvcm1lZCBtb2xmaWxlJyk7XG4gIH1cblxuICBwcml2YXRlIHNoaWZ0SWR4VG9BdG9tVHlwZVYySyhsaW5lU3RhcnRJZHg6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc2hpZnRUb1NwZWNpZmllZENvbHVtbihsaW5lU3RhcnRJZHgsIDQpO1xuICB9XG5cbiAgcHJpdmF0ZSBzaGlmdElkeFRvQXRvbVR5cGVWM0sobGluZVN0YXJ0SWR4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnNoaWZ0VG9TcGVjaWZpZWRDb2x1bW4obGluZVN0YXJ0SWR4LCAzKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q291bnRzTGluZVYyS0lkeCgpOiBudW1iZXIge1xuICAgIGxldCBpZHggPSAwO1xuICAgIC8vIDMgaXMgZm9yIHRoZSBudW1iZXIgb2YgaGVhZGVyIGxpbmVzIGluIG1vbGZpbGVzXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAzOyArK2kpXG4gICAgICBpZHggPSB0aGlzLmdldE5leHRMaW5lSWR4KGlkeCk7XG4gICAgcmV0dXJuIGlkeDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q291bnRzTGluZVYzS0lkeCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmZpbGUuaW5kZXhPZihWM0suQkVHSU5fQ09VTlRTX0xJTkUpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBdG9tQmxvY2tJZHhWMksoKTogbnVtYmVyIHtcbiAgICBsZXQgaWR4ID0gdGhpcy5nZXRDb3VudHNMaW5lSWR4KCk7XG4gICAgaWR4ID0gdGhpcy5nZXROZXh0TGluZUlkeChpZHgpO1xuICAgIHJldHVybiBpZHg7XG4gIH1cblxuICBwcml2YXRlIGdldEF0b21CbG9ja0lkeFYzSygpOiBudW1iZXIge1xuICAgIGxldCBpZHggPSB0aGlzLmZpbGUuaW5kZXhPZihWM0suQkVHSU5fQVRPTV9CTE9DSyk7XG4gICAgaWR4ID0gdGhpcy5nZXROZXh0TGluZUlkeChpZHgpO1xuICAgIHJldHVybiBpZHg7XG4gIH1cblxuICBwcml2YXRlIHNoaWZ0SWR4VG9YQ29sdW1uVjJLKGxpbmVTdGFydElkeDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5nZXROZXh0Q29sdW1uSWR4KGxpbmVTdGFydElkeCk7XG4gIH1cblxuICBwcml2YXRlIHNoaWZ0SWR4VG9YQ29sdW1uVjNLKGxpbmVTdGFydElkeDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zaGlmdFRvU3BlY2lmaWVkQ29sdW1uKGxpbmVTdGFydElkeCwgNCk7XG4gIH1cblxuICBwcml2YXRlIGdldEJvbmRCbG9ja0lkeFYySygpOiBudW1iZXIge1xuICAgIGxldCBpZHggPSB0aGlzLmdldEF0b21CbG9ja0lkeCgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hdG9tQ291bnQ7IGkrKylcbiAgICAgIGlkeCA9IHRoaXMuZ2V0TmV4dExpbmVJZHgoaWR4KTtcbiAgICByZXR1cm4gaWR4O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRCb25kQmxvY2tJZHhWM0soKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5nZXROZXh0TGluZUlkeCh0aGlzLmZpbGUuaW5kZXhPZihWM0suQkVHSU5fQk9ORF9CTE9DSykpO1xuICB9XG5cbiAgLy8gdG9kbzogZGV2aXNlIGEgbW9yZSByZWxpYWJsZSB2YWxpZGF0aW9uXG4gIHByaXZhdGUgc3RhdGljIHZhbGlkYXRlVjNLKG1vbGZpbGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmIChtb2xmaWxlLmluZGV4T2YoVjNLLkhFQURFUikgIT09IC0xICYmXG4gICAgbW9sZmlsZS5pbmRleE9mKFYzSy5FTkQpICE9PSAtMSlcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIHRvZG86IGRldmlzZSBhIG1vcmUgcmVsaWFibGUgdmFsaWRhdGlvblxuICBwcml2YXRlIHN0YXRpYyB2YWxpZGF0ZVYySyhtb2xmaWxlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAobW9sZmlsZS5pbmRleE9mKFYySy5IRUFERVIpICE9PSAtMSAmJlxuICAgIG1vbGZpbGUuaW5kZXhPZihWMksuRU5EKSAhPT0gLTEpXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIHBhcnNlQXRvbUFuZEJvbmRDb3VudHNWMksoKTogQXRvbUFuZEJvbmRDb3VudHMge1xuICAgIGxldCBiZWdpbiA9IHRoaXMuZ2V0Q291bnRzTGluZUlkeCgpO1xuICAgIC8vIDMgaXMgdGhlICMgb2YgZGlnaXRzIGFsbG9jYXRlZCBmb3IgYXRvbS9ib25kIGNvdW50c1xuICAgIGxldCBlbmQgPSBiZWdpbiArIDM7XG4gICAgY29uc3QgYXRvbUNvdW50ID0gcGFyc2VJbnQodGhpcy5maWxlLnN1YnN0cmluZyhiZWdpbiwgZW5kKSk7XG4gICAgYmVnaW4gPSBlbmQ7XG4gICAgZW5kICs9IDM7XG4gICAgY29uc3QgYm9uZENvdW50ID0gcGFyc2VJbnQodGhpcy5maWxlLnN1YnN0cmluZyhiZWdpbiwgZW5kKSk7XG4gICAgcmV0dXJuIHthdG9tQ291bnQ6IGF0b21Db3VudCwgYm9uZENvdW50OiBib25kQ291bnR9O1xuICB9O1xuXG4gIHByaXZhdGUgcGFyc2VBdG9tQW5kQm9uZENvdW50c1YzSygpOiBBdG9tQW5kQm9uZENvdW50cyB7XG4gICAgLy8gcGFyc2UgYXRvbSBjb3VudFxuICAgIGxldCBiZWdpbiA9IHRoaXMuZmlsZS5pbmRleE9mKFYzSy5CRUdJTl9DT1VOVFNfTElORSkgKyBWM0suQ09VTlRTX1NISUZUO1xuICAgIGxldCBlbmQgPSB0aGlzLmZpbGUuaW5kZXhPZignICcsIGJlZ2luICsgMSk7XG4gICAgY29uc3QgbnVtT2ZBdG9tcyA9IHBhcnNlSW50KHRoaXMuZmlsZS5zdWJzdHJpbmcoYmVnaW4sIGVuZCkpO1xuXG4gICAgLy8gcGFyc2UgYm9uZCBjb3VudFxuICAgIGJlZ2luID0gZW5kICsgMTtcbiAgICBlbmQgPSB0aGlzLmZpbGUuaW5kZXhPZignICcsIGJlZ2luICsgMSk7XG4gICAgY29uc3QgbnVtT2ZCb25kcyA9IHBhcnNlSW50KHRoaXMuZmlsZS5zdWJzdHJpbmcoYmVnaW4sIGVuZCkpO1xuXG4gICAgcmV0dXJuIHthdG9tQ291bnQ6IG51bU9mQXRvbXMsIGJvbmRDb3VudDogbnVtT2ZCb25kc307XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9sZmlsZS1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibW9sZmlsZS1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBc0IsdUJBQXVCLEVBQW9CLE1BQU0seUJBQXlCLENBQUM7QUFDeEcsT0FBTyxFQUFDLGVBQWUsRUFBRSxTQUFTLEVBQVksTUFBTSx5QkFBeUIsQ0FBQztBQUU5RSxNQUFNLE9BQU8sY0FBZSxTQUFRLHVCQUF1QjtJQUN6RCxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsNERBQTREO0lBQ3JELElBQUksQ0FBQyxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFcEIsTUFBTSxjQUFjLEdBQUcsY0FBYyxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6RSxNQUFNLEtBQUssR0FBRyxDQUFDLGNBQWMsS0FBSyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFekQsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUM7UUFFdEcsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1FBRWpGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1FBRXBGLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElB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QyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRTdELE9BQU8sRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUMsQ0FBQztJQUN4RCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoZW1pY2FsVGFibGVQYXJzZXIsIENoZW1pY2FsVGFibGVQYXJzZXJCYXNlLCBBdG9tQW5kQm9uZENvdW50c30gZnJvbSAnLi9jaGVtaWNhbC10YWJsZS1wYXJzZXInO1xuaW1wb3J0IHtNT0xGSUxFX1ZFUlNJT04sIFYyS19DT05TVCwgVjNLX0NPTlNUfSBmcm9tICcuL21vbGZpbGUtcGFyc2luZy1jb25zdCc7XG5cbmV4cG9ydCBjbGFzcyBNb2xmaWxlSGFuZGxlciBleHRlbmRzIENoZW1pY2FsVGFibGVQYXJzZXJCYXNlIGltcGxlbWVudHMgQ2hlbWljYWxUYWJsZVBhcnNlciB7XG4gIGNvbnN0cnVjdG9yKG1vbGZpbGU6IHN0cmluZykge1xuICAgIHN1cGVyKG1vbGZpbGUpO1xuICAgIHRoaXMuaW5pdChtb2xmaWxlKTtcbiAgfVxuXG4gIC8qKiBJbml0L3Jlc2V0IHRoZSBzdGF0ZSBvZiB0aGUgaGFuZGxlciBmb3IgYSBuZXcgbW9sZmlsZSAqL1xuICBwdWJsaWMgaW5pdChtb2xmaWxlOiBzdHJpbmcpIHtcbiAgICBzdXBlci5pbml0KG1vbGZpbGUpO1xuXG4gICAgY29uc3QgbW9sZmlsZVZlcnNpb24gPSBNb2xmaWxlSGFuZGxlci5kZXRlcm1pbmVNb2xmaWxlVmVyc2lvbih0aGlzLmZpbGUpO1xuICAgIGNvbnN0IGlzVjJLID0gKG1vbGZpbGVWZXJzaW9uID09PSBNT0xGSUxFX1ZFUlNJT04uVjIwMDApO1xuXG4gICAgdGhpcy5wYXJzZUF0b21BbmRCb25kQ291bnRzID0gaXNWMksgPyB0aGlzLnBhcnNlQXRvbUFuZEJvbmRDb3VudHNWMksgOiB0aGlzLnBhcnNlQXRvbUFuZEJvbmRDb3VudHNWM0s7XG5cbiAgICB0aGlzLmdldEF0b21CbG9ja0lkeCA9IGlzVjJLID8gdGhpcy5nZXRBdG9tQmxvY2tJZHhWMksgOiB0aGlzLmdldEF0b21CbG9ja0lkeFYzSztcblxuICAgIHRoaXMuZ2V0Q291bnRzTGluZUlkeCA9IGlzVjJLID8gdGhpcy5nZXRDb3VudHNMaW5lVjJLSWR4IDogdGhpcy5nZXRDb3VudHNMaW5lVjNLSWR4O1xuXG4gICAgdGhpcy5zaGlmdElkeFRvWENvbHVtbiA9IGlzVjJLID8gdGhpcy5zaGlmdElkeFRvWENvbHVtblYySyA6IHRoaXMuc2hpZnRJZHhUb1hDb2x1bW5WM0s7XG5cbiAgICB0aGlzLnNoaWZ0SWR4VG9BdG9tVHlwZSA9IGlzVjJLID8gdGhpcy5zaGlmdElkeFRvQXRvbVR5cGVWMksgOlxuICAgICAgdGhpcy5zaGlmdElkeFRvQXRvbVR5cGVWM0s7XG5cbiAgICB0aGlzLmdldEJvbmRCbG9ja0lkeCA9IGlzVjJLID8gdGhpcy5nZXRCb25kQmxvY2tJZHhWMksgOiB0aGlzLmdldEJvbmRCbG9ja0lkeFYzSztcblxuICAgIHRoaXMuc2hpZnRJZHhUb0JvbmRlZEF0b21zUGFpciA9IGlzVjJLID8gdGhpcy5zaGlmdElkeFRvQm9uZGVkQXRvbXNQYWlyVjJLIDogdGhpcy5zaGlmdElkeFRvQm9uZGVkQXRvbXNQYWlyVjNLO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjcmVhdGVJbnN0YW5jZShmaWxlOiBzdHJpbmcpOiBNb2xmaWxlSGFuZGxlciB7XG4gICAgaWYgKCF0aGlzLmluc3RhbmNlKVxuICAgICAgdGhpcy5pbnN0YW5jZSA9IG5ldyBNb2xmaWxlSGFuZGxlcihmaWxlKTtcbiAgICByZXR1cm4gdGhpcy5pbnN0YW5jZSBhcyBNb2xmaWxlSGFuZGxlcjtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXJzZUF0b21BbmRCb25kQ291bnRzITogKCkgPT4gQXRvbUFuZEJvbmRDb3VudHM7XG4gIHByb3RlY3RlZCBnZXRDb3VudHNMaW5lSWR4ITogKCkgPT4gbnVtYmVyO1xuICBwcm90ZWN0ZWQgZ2V0QXRvbUJsb2NrSWR4ITogKCkgPT4gbnVtYmVyO1xuICBwcm90ZWN0ZWQgc2hpZnRJZHhUb1hDb2x1bW4hOiAobGluZVN0YXJ0SWR4OiBudW1iZXIpID0+IG51bWJlcjtcbiAgcHJvdGVjdGVkIHNoaWZ0SWR4VG9BdG9tVHlwZSE6IChpZHg6IG51bWJlcikgPT4gbnVtYmVyO1xuICBwcm90ZWN0ZWQgZ2V0Qm9uZEJsb2NrSWR4ITogKCkgPT4gbnVtYmVyO1xuICBwcm90ZWN0ZWQgc2hpZnRJZHhUb0JvbmRlZEF0b21zUGFpciE6IChsaW5lU3RhcnRJZHg6IG51bWJlcikgPT4gbnVtYmVyO1xuXG4gIHByb3RlY3RlZCBwYXJzZUF0b21UeXBlKGlkeDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBiZWdpbiA9IGlkeDtcbiAgICBjb25zdCBlbmQgPSB0aGlzLmZpbGUuaW5kZXhPZignICcsIGJlZ2luKTtcbiAgICByZXR1cm4gdGhpcy5maWxlLnN1YnN0cmluZyhiZWdpbiwgZW5kKTtcbiAgfVxuXG4gIC8qKiBEZXRlcm1pbmUgd2hldGhlciB0aGUgZmlsZSBpcyBWMjAwMC9WMzAwMCwgb3IgdGhyb3cgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgZGV0ZXJtaW5lTW9sZmlsZVZlcnNpb24obW9sZmlsZTogc3RyaW5nKTogTU9MRklMRV9WRVJTSU9OIHtcbiAgICBpZiAoTW9sZmlsZUhhbmRsZXIudmFsaWRhdGVWM0sobW9sZmlsZSkpXG4gICAgICByZXR1cm4gTU9MRklMRV9WRVJTSU9OLlYzMDAwO1xuICAgIGVsc2UgaWYgKE1vbGZpbGVIYW5kbGVyLnZhbGlkYXRlVjJLKG1vbGZpbGUpKVxuICAgICAgcmV0dXJuIE1PTEZJTEVfVkVSU0lPTi5WMjAwMDtcbiAgICBlbHNlXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01hbGZvcm1lZCBtb2xmaWxlJyk7XG4gIH1cblxuICBwcml2YXRlIHNoaWZ0SWR4VG9BdG9tVHlwZVYySyhsaW5lU3RhcnRJZHg6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc2hpZnRJZHhUb1NwZWNpZmllZENvbHVtbihsaW5lU3RhcnRJZHgsIFYyS19DT05TVC5BVE9NX1RZUEVfQ09MKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hpZnRJZHhUb0F0b21UeXBlVjNLKGxpbmVTdGFydElkeDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zaGlmdElkeFRvU3BlY2lmaWVkQ29sdW1uKGxpbmVTdGFydElkeCwgVjNLX0NPTlNULkFUT01fVFlQRV9DT0wpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb3VudHNMaW5lVjJLSWR4KCk6IG51bWJlciB7XG4gICAgbGV0IGlkeCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBWMktfQ09OU1QuTlVNX09GX0hFQURFUl9MSU5FUzsgKytpKVxuICAgICAgaWR4ID0gdGhpcy5nZXROZXh0TGluZUlkeChpZHgpO1xuICAgIHJldHVybiBpZHg7XG4gIH1cblxuICBwcml2YXRlIGdldENvdW50c0xpbmVWM0tJZHgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5maWxlLmluZGV4T2YoVjNLX0NPTlNULkJFR0lOX0NPVU5UU19MSU5FKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QXRvbUJsb2NrSWR4VjJLKCk6IG51bWJlciB7XG4gICAgbGV0IGlkeCA9IHRoaXMuZ2V0Q291bnRzTGluZUlkeCgpO1xuICAgIGlkeCA9IHRoaXMuZ2V0TmV4dExpbmVJZHgoaWR4KTtcbiAgICByZXR1cm4gaWR4O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBdG9tQmxvY2tJZHhWM0soKTogbnVtYmVyIHtcbiAgICBsZXQgaWR4ID0gdGhpcy5maWxlLmluZGV4T2YoVjNLX0NPTlNULkJFR0lOX0FUT01fQkxPQ0spO1xuICAgIGlkeCA9IHRoaXMuZ2V0TmV4dExpbmVJZHgoaWR4KTtcbiAgICByZXR1cm4gaWR4O1xuICB9XG5cbiAgcHJpdmF0ZSBzaGlmdElkeFRvWENvbHVtblYySyhsaW5lU3RhcnRJZHg6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0TmV4dENvbHVtbklkeChsaW5lU3RhcnRJZHgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzaGlmdElkeFRvWENvbHVtblYzSyhsaW5lU3RhcnRJZHg6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc2hpZnRJZHhUb1NwZWNpZmllZENvbHVtbihsaW5lU3RhcnRJZHgsIFYzS19DT05TVC5YX0NPTCk7XG4gIH1cblxuICBwcml2YXRlIHNoaWZ0SWR4VG9Cb25kZWRBdG9tc1BhaXJWMksobGluZVN0YXJ0SWR4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnNoaWZ0SWR4VG9TcGVjaWZpZWRDb2x1bW4obGluZVN0YXJ0SWR4LCBWMktfQ09OU1QuRklSU1RfQk9OREVEX0FUT01fQ09MKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hpZnRJZHhUb0JvbmRlZEF0b21zUGFpclYzSyhsaW5lU3RhcnRJZHg6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc2hpZnRJZHhUb1NwZWNpZmllZENvbHVtbihsaW5lU3RhcnRJZHgsIFYzS19DT05TVC5GSVJTVF9CT05ERURfQVRPTV9DT0wpO1xuICB9XG4gIHByaXZhdGUgZ2V0Qm9uZEJsb2NrSWR4VjJLKCk6IG51bWJlciB7XG4gICAgbGV0IGlkeCA9IHRoaXMuZ2V0QXRvbUJsb2NrSWR4KCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmF0b21Db3VudDsgaSsrKVxuICAgICAgaWR4ID0gdGhpcy5nZXROZXh0TGluZUlkeChpZHgpO1xuICAgIHJldHVybiBpZHg7XG4gIH1cblxuICBwcml2YXRlIGdldEJvbmRCbG9ja0lkeFYzSygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmdldE5leHRMaW5lSWR4KHRoaXMuZmlsZS5pbmRleE9mKFYzS19DT05TVC5CRUdJTl9CT05EX0JMT0NLKSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyB2YWxpZGF0ZVYzSyhtb2xmaWxlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKG1vbGZpbGUuaW5kZXhPZihWM0tfQ09OU1QuSEVBREVSKSAhPT0gLTEgJiZcbiAgICBtb2xmaWxlLmluZGV4T2YoVjNLX0NPTlNULkVORCkgIT09IC0xKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHZhbGlkYXRlVjJLKG1vbGZpbGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAobW9sZmlsZS5pbmRleE9mKFYyS19DT05TVC5IRUFERVIpICE9PSAtMSAmJlxuICAgIG1vbGZpbGUuaW5kZXhPZihWMktfQ09OU1QuRU5EKSAhPT0gLTEpO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZUF0b21BbmRCb25kQ291bnRzVjJLKCk6IEF0b21BbmRCb25kQ291bnRzIHtcbiAgICBsZXQgYmVnaW4gPSB0aGlzLmdldENvdW50c0xpbmVJZHgoKTtcbiAgICBsZXQgZW5kID0gYmVnaW4gKyBWMktfQ09OU1QuTlVNX09GX0NPVU5UU19ESUdJVFM7XG4gICAgY29uc3QgYXRvbUNvdW50ID0gcGFyc2VJbnQodGhpcy5maWxlLnN1YnN0cmluZyhiZWdpbiwgZW5kKSk7XG4gICAgYmVnaW4gPSBlbmQ7XG4gICAgZW5kICs9IFYyS19DT05TVC5OVU1fT0ZfQ09VTlRTX0RJR0lUUztcbiAgICBjb25zdCBib25kQ291bnQgPSBwYXJzZUludCh0aGlzLmZpbGUuc3Vic3RyaW5nKGJlZ2luLCBlbmQpKTtcbiAgICByZXR1cm4ge2F0b21Db3VudDogYXRvbUNvdW50LCBib25kQ291bnQ6IGJvbmRDb3VudH07XG4gIH07XG5cbiAgcHJpdmF0ZSBwYXJzZUF0b21BbmRCb25kQ291bnRzVjNLKCk6IEF0b21BbmRCb25kQ291bnRzIHtcbiAgICAvLyBwYXJzZSBhdG9tIGNvdW50XG4gICAgbGV0IGJlZ2luID0gdGhpcy5maWxlLmluZGV4T2YoVjNLX0NPTlNULkJFR0lOX0NPVU5UU19MSU5FKSArIFYzS19DT05TVC5DT1VOVFNfU0hJRlQ7XG4gICAgbGV0IGVuZCA9IHRoaXMuZmlsZS5pbmRleE9mKCcgJywgYmVnaW4gKyAxKTtcbiAgICBjb25zdCBudW1PZkF0b21zID0gcGFyc2VJbnQodGhpcy5maWxlLnN1YnN0cmluZyhiZWdpbiwgZW5kKSk7XG5cbiAgICAvLyBwYXJzZSBib25kIGNvdW50XG4gICAgYmVnaW4gPSBlbmQgKyAxO1xuICAgIGVuZCA9IHRoaXMuZmlsZS5pbmRleE9mKCcgJywgYmVnaW4gKyAxKTtcbiAgICBjb25zdCBudW1PZkJvbmRzID0gcGFyc2VJbnQodGhpcy5maWxlLnN1YnN0cmluZyhiZWdpbiwgZW5kKSk7XG5cbiAgICByZXR1cm4ge2F0b21Db3VudDogbnVtT2ZBdG9tcywgYm9uZENvdW50OiBudW1PZkJvbmRzfTtcbiAgfVxufVxuIl19

@@ -6,3 +6,3 @@ export declare enum MOLFILE_VERSION {

/** Constants relevant for parsing of Molfile V3K */
export declare const enum V3K {
export declare const enum V3K_CONST {
HEADER = "V3000",

@@ -14,9 +14,16 @@ BEGIN_COUNTS_LINE = "M V30 COUNTS ",

BEGIN_BOND_BLOCK = "M V30 BEGIN BOND",
END = "M END"
END = "M END",
ATOM_TYPE_COL = 4,
X_COL = 5,
FIRST_BONDED_ATOM_COL = 5
}
/** Constants relevant for parsing of Molfile V2K */
export declare enum V2K {
export declare enum V2K_CONST {
HEADER = "V2000",
END = "M END"
END = "M END",
NUM_OF_HEADER_LINES = 3,
NUM_OF_COUNTS_DIGITS = 3,
ATOM_TYPE_COL = 4,
FIRST_BONDED_ATOM_COL = 1
}
//# sourceMappingURL=molfile-parsing-const.d.ts.map

@@ -7,7 +7,11 @@ export var MOLFILE_VERSION;

/** Constants relevant for parsing of Molfile V2K */
export var V2K;
(function (V2K) {
V2K["HEADER"] = "V2000";
V2K["END"] = "M END";
})(V2K || (V2K = {}));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9sZmlsZS1wYXJzaW5nLWNvbnN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibW9sZmlsZS1wYXJzaW5nLWNvbnN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLGVBR1g7QUFIRCxXQUFZLGVBQWU7SUFDekIsa0NBQWUsQ0FBQTtJQUNmLGtDQUFlLENBQUE7QUFDakIsQ0FBQyxFQUhXLGVBQWUsS0FBZixlQUFlLFFBRzFCO0FBYUQsb0RBQW9EO0FBQ3BELE1BQU0sQ0FBTixJQUFZLEdBR1g7QUFIRCxXQUFZLEdBQUc7SUFDYix1QkFBZ0IsQ0FBQTtJQUNoQixxQkFBYyxDQUFBO0FBQ2hCLENBQUMsRUFIVyxHQUFHLEtBQUgsR0FBRyxRQUdkIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gTU9MRklMRV9WRVJTSU9OIHtcbiAgVjIwMDAgPSAnVjIwMDAnLFxuICBWMzAwMCA9ICdWMzAwMCcsXG59XG5cbi8qKiBDb25zdGFudHMgcmVsZXZhbnQgZm9yIHBhcnNpbmcgb2YgTW9sZmlsZSBWM0sgKi9cbmV4cG9ydCBjb25zdCBlbnVtIFYzSyB7XG4gIEhFQURFUiA9ICdWMzAwMCcsXG4gIEJFR0lOX0NPVU5UU19MSU5FID0gJ00gIFYzMCBDT1VOVFMgJyxcbiAgLyoqIEluZGV4IHNoaWZ0IGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgJ0NPVU5UUycgbGluZSB0byB0aGUgbnVtYmVyIG9mIGF0b21zICAqL1xuICBDT1VOVFNfU0hJRlQgPSAxNCxcbiAgQkVHSU5fQVRPTV9CTE9DSyA9ICdNICBWMzAgQkVHSU4gQVRPTScsXG4gIEJFR0lOX0JPTkRfQkxPQ0sgPSAnTSAgVjMwIEJFR0lOIEJPTkQnLFxuICBFTkQgPSAnTSAgRU5EJyxcbn1cblxuLyoqIENvbnN0YW50cyByZWxldmFudCBmb3IgcGFyc2luZyBvZiBNb2xmaWxlIFYySyAqL1xuZXhwb3J0IGVudW0gVjJLIHtcbiAgSEVBREVSID0gJ1YyMDAwJyxcbiAgRU5EID0gJ00gIEVORCcsXG59XG5cbiJdfQ==
export var V2K_CONST;
(function (V2K_CONST) {
V2K_CONST["HEADER"] = "V2000";
V2K_CONST["END"] = "M END";
V2K_CONST[V2K_CONST["NUM_OF_HEADER_LINES"] = 3] = "NUM_OF_HEADER_LINES";
V2K_CONST[V2K_CONST["NUM_OF_COUNTS_DIGITS"] = 3] = "NUM_OF_COUNTS_DIGITS";
V2K_CONST[V2K_CONST["ATOM_TYPE_COL"] = 4] = "ATOM_TYPE_COL";
V2K_CONST[V2K_CONST["FIRST_BONDED_ATOM_COL"] = 1] = "FIRST_BONDED_ATOM_COL";
})(V2K_CONST || (V2K_CONST = {}));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9sZmlsZS1wYXJzaW5nLWNvbnN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibW9sZmlsZS1wYXJzaW5nLWNvbnN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLGVBR1g7QUFIRCxXQUFZLGVBQWU7SUFDekIsa0NBQWUsQ0FBQTtJQUNmLGtDQUFlLENBQUE7QUFDakIsQ0FBQyxFQUhXLGVBQWUsS0FBZixlQUFlLFFBRzFCO0FBZ0JELG9EQUFvRDtBQUNwRCxNQUFNLENBQU4sSUFBWSxTQU9YO0FBUEQsV0FBWSxTQUFTO0lBQ25CLDZCQUFnQixDQUFBO0lBQ2hCLDJCQUFjLENBQUE7SUFDZCx1RUFBdUIsQ0FBQTtJQUN2Qix5RUFBd0IsQ0FBQTtJQUN4QiwyREFBaUIsQ0FBQTtJQUNqQiwyRUFBeUIsQ0FBQTtBQUMzQixDQUFDLEVBUFcsU0FBUyxLQUFULFNBQVMsUUFPcEIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBNT0xGSUxFX1ZFUlNJT04ge1xuICBWMjAwMCA9ICdWMjAwMCcsXG4gIFYzMDAwID0gJ1YzMDAwJyxcbn1cblxuLyoqIENvbnN0YW50cyByZWxldmFudCBmb3IgcGFyc2luZyBvZiBNb2xmaWxlIFYzSyAqL1xuZXhwb3J0IGNvbnN0IGVudW0gVjNLX0NPTlNUIHtcbiAgSEVBREVSID0gJ1YzMDAwJyxcbiAgQkVHSU5fQ09VTlRTX0xJTkUgPSAnTSAgVjMwIENPVU5UUyAnLFxuICAvKiogSW5kZXggc2hpZnQgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSAnQ09VTlRTJyBsaW5lIHRvIHRoZSBudW1iZXIgb2YgYXRvbXMgICovXG4gIENPVU5UU19TSElGVCA9IDE0LFxuICBCRUdJTl9BVE9NX0JMT0NLID0gJ00gIFYzMCBCRUdJTiBBVE9NJyxcbiAgQkVHSU5fQk9ORF9CTE9DSyA9ICdNICBWMzAgQkVHSU4gQk9ORCcsXG4gIEVORCA9ICdNICBFTkQnLFxuICBBVE9NX1RZUEVfQ09MID0gNCxcbiAgWF9DT0wgPSA1LFxuICBGSVJTVF9CT05ERURfQVRPTV9DT0wgPSA1LFxufVxuXG4vKiogQ29uc3RhbnRzIHJlbGV2YW50IGZvciBwYXJzaW5nIG9mIE1vbGZpbGUgVjJLICovXG5leHBvcnQgZW51bSBWMktfQ09OU1Qge1xuICBIRUFERVIgPSAnVjIwMDAnLFxuICBFTkQgPSAnTSAgRU5EJyxcbiAgTlVNX09GX0hFQURFUl9MSU5FUyA9IDMsXG4gIE5VTV9PRl9DT1VOVFNfRElHSVRTID0gMyxcbiAgQVRPTV9UWVBFX0NPTCA9IDQsXG4gIEZJUlNUX0JPTkRFRF9BVE9NX0NPTCA9IDEsXG59XG5cbiJdfQ==

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc