Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@datagrok-libraries/utils

Package Overview
Dependencies
Maintainers
2
Versions
231
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@datagrok-libraries/utils - npm Package Compare versions

Comparing version 4.1.43 to 4.1.44

2

package.json

@@ -11,3 +11,3 @@ {

"fullName": "Utils",
"version": "4.1.43",
"version": "4.1.44",
"description": "Common utilities",

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

@@ -5,2 +5,3 @@ import * as DG from 'datagrok-api/dg';

get type(): string;
compoundSize: string;
fieldsColumnNames: string[];

@@ -7,0 +8,0 @@ colorCode: boolean;

@@ -39,2 +39,3 @@ import * as DG from 'datagrok-api/dg';

this.showSelectedRows = this.bool('showSelectedRows', true);
this.compoundSize = this.string('compoundSize', 'small', { choices: ['small', 'normal', 'large'] });
//fields

@@ -178,2 +179,4 @@ this.indexes = [];

if (input) {
if (this.dataFrame.col(name).semType === DG.SEMTYPE.MOLECULE)
input.input.classList.add(`d4-multi-form-molecule-input-${this.compoundSize}`);
input.input.setAttribute('column', name);

@@ -185,5 +188,4 @@ input.value = this.dataFrame.get(name, row);

const color = grid.cell(name, row).color;
if ((_b = grid.col(name)) === null || _b === void 0 ? void 0 : _b.isTextColorCoded) {
if ((_b = grid.col(name)) === null || _b === void 0 ? void 0 : _b.isTextColorCoded)
input.input.setAttribute('style', `color:${DG.Color.toHtml(color)}!important;`);
}
else {

@@ -246,2 +248,2 @@ input.input.setAttribute('style', `color:${DG.Color.toHtml(DG.Color.getContrastColor(color))}!important;`);

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMtdmlld2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZm9ybXMtdmlld2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEMsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEtBQUssSUFBSSxNQUFNLG1CQUFtQixDQUFDO0FBRTFDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0QyxPQUFPLHFCQUFxQixDQUFDO0FBRTdCLE1BQU0sMkJBQTJCLEdBQUcsK0RBQStELENBQUM7QUFDcEcsTUFBTSx3QkFBd0IsR0FBRyxFQUFFLENBQUM7QUFFcEMsTUFBTSxPQUFPLFdBQVksU0FBUSxFQUFFLENBQUMsUUFBUTtJQUMxQyxJQUFJLElBQUksS0FBYSxPQUFPLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFlNUMsSUFBSSxTQUFTLENBQUMsRUFBZ0I7UUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLGVBQWUsQ0FBQyxJQUFjO1FBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUM5QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLFFBQWtCO1FBQzVCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUM7UUFDbEMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENB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LGdCQUFnQixFQUFFO2dCQUN6QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDckQsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzthQUNsRTs7Z0JBRUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7U0FDckI7UUFFRCxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRWhDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVwQixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNyRixDQUFDLENBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtmaWx0ZXJ9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCAnLi4vLi4vY3NzL2Zvcm1zLmNzcyc7XG5cbmNvbnN0IENPTFNfTElNSVRfRVhDRUVERURfV0FSTklORyA9IGBOdW1iZXIgb2YgY29sdW1ucyBpcyBtb3JlIHRoYW4gMjAuIEZpcnN0IDIwIGNvbHVtbnMgYXJlIHNob3duYDtcbmNvbnN0IEJPT0xFQU5fSU5QVVRfVE9QX01BUkdJTiA9IDE1O1xuXG5leHBvcnQgY2xhc3MgRm9ybXNWaWV3ZXIgZXh0ZW5kcyBERy5Kc1ZpZXdlciB7XG4gIGdldCB0eXBlKCk6IHN0cmluZyB7IHJldHVybiAnRm9ybXNWaWV3ZXInOyB9XG5cbiAgZmllbGRzQ29sdW1uTmFtZXM6IHN0cmluZ1tdO1xuICBjb2xvckNvZGU6IGJvb2xlYW47XG4gIHNob3dDdXJyZW50Um93OiBib29sZWFuO1xuICBzaG93TW91c2VPdmVyUm93OiBib29sZWFuO1xuICBzaG93U2VsZWN0ZWRSb3dzOiBib29sZWFuO1xuICBzaG93Rml4ZWRSb3dzID0gZmFsc2U7XG4gIGluZGV4ZXM6IG51bWJlcltdO1xuICBjb2x1bW5IZWFkZXJzRGl2OiBIVE1MRGl2RWxlbWVudDtcbiAgdmlydHVhbFZpZXc6IERHLlZpcnR1YWxWaWV3O1xuICBjb2x1bW5MYWJlbFdpZHRoOiBudW1iZXIgPSAwO1xuICBjdXJyZW50Um93SW5kaWNhdG9yID0gdWkuZGl2KCcnLCAnZDQtbXVsdGktZm9ybS1mb3JtLWluZGljYXRvciBkNC1tdWx0aS1mb3JtLWZvcm0taW5kaWNhdG9yLWN1cnJlbnQtcm93Jyk7XG4gIG1vdXNlT3ZlclJvd0luZGljYXRvciA9IHVpLmRpdignJywgJ2Q0LW11bHRpLWZvcm0tZm9ybS1pbmRpY2F0b3IgZDQtbXVsdGktZm9ybS1mb3JtLWluZGljYXRvci1tb3VzZS1vdmVyLXJvdycpO1xuXG4gIHNldCBkYXRhZnJhbWUoZGY6IERHLkRhdGFGcmFtZSkge1xuICAgIHRoaXMuZGF0YUZyYW1lID0gZGY7XG4gICAgdGhpcy5vblRhYmxlQXR0YWNoZWQoKTtcbiAgfVxuXG4gIHNldCBmaXhlZFJvd051bWJlcnMoaWR4czogbnVtYmVyW10pIHtcbiAgICB0aGlzLmluZGV4ZXMgPSBpZHhzO1xuICAgIHRoaXMuc2hvd0N1cnJlbnRSb3cgPSBmYWxzZTtcbiAgICB0aGlzLnNob3dNb3VzZU92ZXJSb3cgPSBmYWxzZTtcbiAgICB0aGlzLnNob3dTZWxlY3RlZFJvd3MgPSBmYWxzZTtcbiAgICB0aGlzLnNob3dGaXhlZFJvd3MgPSB0cnVlO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBzZXQgY29sdW1ucyhjb2xOYW1lczogc3RyaW5nW10pIHtcbiAgICB0aGlzLmZpZWxkc0NvbHVtbk5hbWVzID0gY29sTmFtZXM7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmhlbHBVcmwgPSAnaHR0cHM6Ly9kYXRhZ3Jvay5haS9oZWxwL3Zpc3VhbGl6ZS92aWV3ZXJzL2Zvcm1zJztcblxuICAgIC8vIHByb3BlcnRpZXNcbiAgICB0aGlzLmZpZWxkc0NvbHVtbk5hbWVzID0gdGhpcy5hZGRQcm9wZXJ0eSgnZmllbGRzQ29sdW1uTmFtZXMnLCBERy5UWVBFLkNPTFVNTl9MSVNUKTtcbiAgICB0aGlzLmNvbG9yQ29kZSA9IHRoaXMuYm9vbCgnY29sb3JDb2RlJywgdHJ1ZSk7XG4gICAgdGhpcy5zaG93Q3VycmVudFJvdyA9IHRoaXMuYm9vbCgnc2hvd0N1cnJlbnRSb3cnLCB0cnVlKTtcbiAgICB0aGlzLnNob3dNb3VzZU92ZXJSb3cgPSB0aGlzLmJvb2woJ3Nob3dNb3VzZU92ZXJSb3cnLCB0cnVlKTtcbiAgICB0aGlzLnNob3dTZWxlY3RlZFJvd3MgPSB0aGlzLmJvb2woJ3Nob3dTZWxlY3RlZFJvd3MnLCB0cnVlKTtcblxuICAgIC8vZmllbGRzXG4gICAgdGhpcy5pbmRleGVzID0gW107XG5cbiAgICAvLyBpbml0XG4gICAgdGhpcy5yb290LmNsYXNzTGlzdC5hZGQoJ2Q0LW11bHRpLWZvcm0nKTtcbiAgICB0aGlzLmNvbHVtbkhlYWRlcnNEaXYgPSB1aS5kaXYoW10sICdkNC1tdWx0aS1mb3JtLWhlYWRlcicpO1xuICAgIHRoaXMudmlydHVhbFZpZXcgPSB1aS52aXJ0dWFsVmlldygwLCAoaTogbnVtYmVyKSA9PiB0aGlzLnJlbmRlckZvcm0oaSksIGZhbHNlLCAxKTtcbiAgICBjb25zdCBjb2x1bW5IZWFkZXJzQm94ID0gdWkuZGl2KHRoaXMuY29sdW1uSGVhZGVyc0Rpdik7XG4gICAgY29uc3QgZm9ybVdpdGhIZWFkZXJEaXYgPSB1aS5zcGxpdEgoW2NvbHVtbkhlYWRlcnNCb3gsIHRoaXMudmlydHVhbFZpZXcucm9vdF0sIG51bGwsIHRydWUpO1xuICAgIHRoaXMucm9vdC5hcHBlbmRDaGlsZChmb3JtV2l0aEhlYWRlckRpdik7XG5cbiAgICBjb25zdCBzcGxpdENvbExlZnQgPSBmb3JtV2l0aEhlYWRlckRpdi5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRWxlbWVudDtcbiAgICBjb25zdCBzcGxpdENvbFJpZ2h0ID0gZm9ybVdpdGhIZWFkZXJEaXYubGFzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRWxlbWVudDtcblxuICAgIHVpLnRvb2x0aXAuYmluZCh0aGlzLmN1cnJlbnRSb3dJbmRpY2F0b3IsICdDdXJyZW50IHJvdycpO1xuICAgIHVpLnRvb2x0aXAuYmluZCh0aGlzLm1vdXNlT3ZlclJvd0luZGljYXRvciwgJ01vdXNlIG92ZXIgcm93Jyk7XG5cbiAgICB1aS50b29scy53YWl0Rm9yRWxlbWVudEluRG9tKHRoaXMucm9vdCkudGhlbigoXykgPT4ge1xuICAgICAgdGhpcy5jb2x1bW5IZWFkZXJzRGl2LnN0eWxlLmNzc1RleHQgPSBgXG4gICAgICAgIG92ZWZsb3c6aGlkZGVuIWltcG9ydGFudDtcbiAgICAgICAgbWluLXdpZHRoOiAxNTBweDtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICBgO1xuICAgICAgc3BsaXRDb2xMZWZ0LnN0eWxlLmNzc1RleHQgPSBgXG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW4haW1wb3J0YW50O1xuICAgICAgYDtcbiAgICAgIGNvbHVtbkhlYWRlcnNCb3guc3R5bGUuY3NzVGV4dCA9IGBcbiAgICAgICAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gICAgICAgIHdpZHRoOjEwMCU7XG4gICAgICAgIHBvc2l0aW9uOnJlbGF0aXZlO1xuICAgICAgICBkaXNwbGF5OmZsZXg7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6MTdweDtcbiAgICAgICAgb3ZlcmZsb3c6IHNjcm9sbCFpbXBvcnRhbnQ7XG4gICAgICBgO1xuXG4gICAgICBjb2x1bW5IZWFkZXJzQm94LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIChlOiBFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLnZpcnR1YWxWaWV3LnJvb3Quc2Nyb2xsVG9wID0gY29sdW1uSGVhZGVyc0JveC5zY3JvbGxUb3A7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy52aXJ0dWFsVmlldy5yb290LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIChlOiBFdmVudCkgPT4ge1xuICAgICAgICBjb2x1bW5IZWFkZXJzQm94LnNjcm9sbFRvcCA9IHRoaXMudmlydHVhbFZpZXcucm9vdC5zY3JvbGxUb3A7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHVpLnRvb2xzLndhaXRGb3JFbGVtZW50SW5Eb20odGhpcy52aXJ0dWFsVmlldy5yb290KS50aGVuKChfKSA9PiB7XG4gICAgICBjb25zdCByb290V2lkdGggPSB0aGlzLnJvb3QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgICBzcGxpdENvbExlZnQuc3R5bGUud2lkdGggPSBgJHt0aGlzLmNvbHVtbkxhYmVsV2lkdGgrMzB9cHhgO1xuICAgICAgc3BsaXRDb2xSaWdodC5zdHlsZS53aWR0aCA9IGAke3Jvb3RXaWR0aC10aGlzLmNvbHVtbkxhYmVsV2lkdGgtMzAtNH1weGA7XG4gICAgfSk7XG4gICAgXG4gIH1cblxuICBnZXRDb2x1bW5XaWR0aChlbDpIVE1MRWxlbWVudCl7XG4gICAgcmV0dXJuIHBhcnNlSW50KGVsLnN0eWxlLndpZHRoKTtcbiAgfVxuICBcbiAgb25UYWJsZUF0dGFjaGVkKCkge1xuICAgIGlmICh0aGlzLmZpZWxkc0NvbHVtbk5hbWVzID09PSBudWxsKVxuICAgICAgdGhpcy5zZXRmaWVsZHNDb2x1bW5OYW1lcyh0aGlzLmRhdGFGcmFtZS5jb2x1bW5zLm5hbWVzKCkpO1xuXG4gICAgY29uc3Qgc3ViID0gKHN0cmVhbTogT2JzZXJ2YWJsZTx1bmtub3duPiwgYWN0aW9uOiBGdW5jdGlvbikgPT4ge1xuICAgICAgdGhpcy5zdWJzLnB1c2goREcuZGVib3VuY2Uoc3RyZWFtLCA1MCkuc3Vic2NyaWJlKChfKSA9PiBhY3Rpb24oKSkpO1xuICAgIH07XG5cbiAgICBzdWIodGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLm9uQ2hhbmdlZCwgKCkgPT4gdGhpcy5yZW5kZXIoKSk7XG4gICAgc3ViKHRoaXMuZGF0YUZyYW1lLmZpbHRlci5vbkNoYW5nZWQsICgpID0+IHRoaXMucmVuZGVyKCkpO1xuXG4gICAgc3ViKHRoaXMuZGF0YUZyYW1lLm9uTWV0YWRhdGFDaGFuZ2VkLCAoKSA9PiB0aGlzLnJlbmRlcigpKTtcblxuICAgIHN1Yih0aGlzLmRhdGFGcmFtZS5vbkNvbHVtbnNSZW1vdmVkLCAoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZWZpZWxkc0NvbHVtbk5hbWVzKCk7XG4gICAgICB0aGlzLnJlbmRlcigpO1xuICAgIH0pO1xuXG4gICAgc3ViKHRoaXMuZGF0YUZyYW1lLm9uQ3VycmVudFJvd0NoYW5nZWQucGlwZShmaWx0ZXIoKF8pID0+IHRoaXMuc2hvd0N1cnJlbnRSb3cpKSxcbiAgICAgICgpID0+IHRoaXMudmlydHVhbFZpZXcucmVmcmVzaEl0ZW0odGhpcy5jdXJyZW50Um93UG9zISkpO1xuXG4gICAgc3ViKHRoaXMuZGF0YUZyYW1lLm9uTW91c2VPdmVyUm93Q2hhbmdlZC5waXBlKGZpbHRlcigoXykgPT4gdGhpcy5zaG93TW91c2VPdmVyUm93KSksXG4gICAgICAoKSA9PiB0aGlzLnZpcnR1YWxWaWV3LnJlZnJlc2hJdGVtKHRoaXMubW91c2VPdmVyUG9zISkpO1xuXG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHNldGZpZWxkc0NvbHVtbk5hbWVzKGRmQ29sdW1uczogc3RyaW5nW10pIHtcbiAgICBpZiAoZGZDb2x1bW5zLmxlbmd0aCA+IDIwKSB7XG4gICAgICBncm9rLnNoZWxsLndhcm5pbmcoQ09MU19MSU1JVF9FWENFRURFRF9XQVJOSU5HKTtcbiAgICAgIHRoaXMuZmllbGRzQ29sdW1uTmFtZXMgPSBkZkNvbHVtbnMuc2xpY2UoMCwgMjApO1xuICAgIH1cbiAgICBlbHNlXG4gICAgICB0aGlzLmZpZWxkc0NvbHVtbk5hbWVzID0gZGZDb2x1bW5zO1xuICB9XG5cbiAgdXBkYXRlZmllbGRzQ29sdW1uTmFtZXMoKSB7XG4gICAgY29uc3QgbmV3Q29sdW1ucyA9IHRoaXMuZGF0YUZyYW1lLmNvbHVtbnMubmFtZXMoKTtcbiAgICBsZXQgY291bnRlciA9IHRoaXMuZmllbGRzQ29sdW1uTmFtZXMubGVuZ3RoO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnRlcjsgaSsrKSB7XG4gICAgICBjb25zdCBjb2xJZHggPSBuZXdDb2x1bW5zLmluZGV4T2YodGhpcy5maWVsZHNDb2x1bW5OYW1lc1tpXSk7XG4gICAgICBpZiAoY29sSWR4ID09PSAtMSkge1xuICAgICAgICB0aGlzLmZpZWxkc0NvbHVtbk5hbWVzLnNwbGljZShpLCAxKTtcbiAgICAgICAgY291bnRlci0tO1xuICAgICAgICBpLS07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25Qcm9wZXJ0eUNoYW5nZWQocHJvcGVydHk6IERHLlByb3BlcnR5KTogdm9pZCB7XG4gICAgaWYgKChwcm9wZXJ0eS5uYW1lID09PSAnc2hvd0N1cnJlbnRSb3cnIHx8IHByb3BlcnR5Lm5hbWUgPT09ICdzaG93TW91c2VPdmVyUm93JyB8fFxuICAgICAgcHJvcGVydHkubmFtZSA9PT0gJ3Nob3dTZWxlY3RlZFJvd3MnICYmIHByb3BlcnR5LmdldCh0aGlzKSA9PT0gdHJ1ZSkgJiYgdGhpcy5zaG93Rml4ZWRSb3dzKVxuICAgICAgZ3Jvay5zaGVsbC53YXJuaW5nKGBDYW5ub3Qgc2V0ICR7cHJvcGVydHkubmFtZX0gdG8gdHJ1ZSBzaW5jZSBmaXhlZCByb3dzIGFyZSBzZXRgKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgcmVuZGVySGVhZGVyKCkge1xuICAgIHVpLmVtcHR5KHRoaXMuY29sdW1uSGVhZGVyc0Rpdik7XG4gICAgY29uc3QgZm9ybSA9IHRoaXMucmVuZGVyRm9ybSgwLCB0cnVlKTtcbiAgICBmb3JtLmNsYXNzTGlzdC5hZGQoJ3RlbXAnKTtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZvcm0pO1xuXG4gICAgZm9yIChjb25zdCBuYW1lIG9mIHRoaXMuZmllbGRzQ29sdW1uTmFtZXMpIHtcbiAgICAgIGNvbnN0IGZvcm1GaWVsZCA9IGZvcm0ucXVlcnlTZWxlY3RvcignW2NvbHVtbj1cIicgKyBuYW1lICsgJ1wiXScpIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICBpZiAoZm9ybUZpZWxkKSB7XG4gICAgICAgIGNvbnN0IGNvbHVtbkxhYmVsID0gdWkuYmluZCh0aGlzLmRhdGFGcmFtZS5jb2wobmFtZSksIHVpLmRpdlRleHQobmFtZSkpO1xuICAgICAgICBjb25zdCBjbG9zZUljb24gPSB1aS5pY29uRkEoJ3RpbWVzJywgKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZmllbGRzQ29sdW1uTmFtZXMgPSB0aGlzLmZpZWxkc0NvbHVtbk5hbWVzLmZpbHRlcigodmFsdWUpID0+IHZhbHVlICE9PSBuYW1lKTtcbiAgICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgY29sdW1uTGFiZWxDb250YWluZXIgPSB1aS5kaXYoW2NvbHVtbkxhYmVsLCBjbG9zZUljb25dLCAnZDQtbXVsdGktZm9ybS1jb2x1bW4tbmFtZSBkNC1mbGV4LXJvdycpO1xuICAgICAgICBjb25zdCBvZmZzZXRUb3AgPSBmb3JtRmllbGQudHlwZSA9PT0gJ2NoZWNrYm94JyA/XG4gICAgICAgICAgZm9ybUZpZWxkLm9mZnNldFRvcCAtIEJPT0xFQU5fSU5QVVRfVE9QX01BUkdJTiA6IGZvcm1GaWVsZC5vZmZzZXRUb3A7XG4gICAgICAgIGNvbHVtbkxhYmVsQ29udGFpbmVyLnN0eWxlLnRvcCA9IGAke29mZnNldFRvcCArIDEwfXB4YDtcbiAgICAgICAgdGhpcy5jb2x1bW5IZWFkZXJzRGl2LmFwcGVuZENoaWxkKGNvbHVtbkxhYmVsQ29udGFpbmVyKTtcbiAgICAgICAgY29sdW1uTGFiZWwub25jbGljayA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgdGhpcy5kYXRhRnJhbWUuY3VycmVudENvbCA9IHRoaXMuZGF0YUZyYW1lLmNvbChuYW1lKSE7XG4gICAgICAgIH07XG4gICAgICAgIGlmIChjb2x1bW5MYWJlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCA+IHRoaXMuY29sdW1uTGFiZWxXaWR0aClcbiAgICAgICAgICB0aGlzLmNvbHVtbkxhYmVsV2lkdGggPSBjb2x1bW5MYWJlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICAgICAgY29sdW1uTGFiZWxDb250YWluZXIub25tb3VzZWVudGVyID0gKGU6IE1vdXNlRXZlbnQpID0+IGNsb3NlSWNvbi5zdHlsZS52aXNpYmlsaXR5ID0gJ3Zpc2libGUnO1xuICAgICAgICBjb2x1bW5MYWJlbENvbnRhaW5lci5vbm1vdXNlbGVhdmUgPSAoZTogTW91c2VFdmVudCkgPT4gY2xvc2VJY29uLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3JtLnJlbW92ZSgpO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRSb3dQb3MoKSB7IHJldHVybiB0aGlzLnNob3dDdXJyZW50Um93ID8gMCA6IG51bGw7IH1cbiAgZ2V0IG1vdXNlT3ZlclBvcygpIHsgcmV0dXJuIHRoaXMuc2hvd01vdXNlT3ZlclJvdyA/ICh0aGlzLnNob3dDdXJyZW50Um93ID8gMSA6IDApIDogbnVsbDsgfVxuXG4gIHJlbmRlckZvcm0ocm93OiBudW1iZXIsIGhlYWRlcj86IGJvb2xlYW4pIHtcbiAgICBjb25zdCBzYXZlZElkeCA9IHJvdztcbiAgICBpZiAoaGVhZGVyKVxuICAgICAgcm93ID0gMDtcbiAgICBlbHNlIHtcbiAgICAgIGlmICh0aGlzLnNob3dDdXJyZW50Um93ICYmIHJvdyA9PT0gdGhpcy5jdXJyZW50Um93UG9zKVxuICAgICAgICByb3cgPSB0aGlzLmRhdGFGcmFtZS5jdXJyZW50Um93SWR4O1xuICAgICAgZWxzZSBpZiAodGhpcy5zaG93TW91c2VPdmVyUm93ICYmIHJvdyA9PT0gdGhpcy5tb3VzZU92ZXJQb3MpXG4gICAgICAgIHJvdyA9IHRoaXMuZGF0YUZyYW1lLm1vdXNlT3ZlclJvd0lkeDtcbiAgICAgIGVsc2VcbiAgICAgICAgcm93ID0gdGhpcy5pbmRleGVzW3JvdyAtICh0aGlzLnNob3dDdXJyZW50Um93ID8gMSA6IDApIC0gKHRoaXMuc2hvd01vdXNlT3ZlclJvdyA/IDEgOiAwKV07XG4gICAgfVxuXG4gICAgY29uc3QgZm9ybSA9IHVpLmRpdlYoXG4gICAgICB0aGlzLmZpZWxkc0NvbHVtbk5hbWVzLm1hcCgobmFtZSkgPT4ge1xuICAgICAgICBpZiAocm93ID09PSAtMSlcbiAgICAgICAgICByZXR1cm4gdWkuZGl2KCk7XG5cbiAgICAgICAgY29uc3QgaW5wdXQgPSBERy5JbnB1dEJhc2UuZm9yQ29sdW1uKHRoaXMuZGF0YUZyYW1lLmNvbChuYW1lKSEpO1xuICAgICAgICBpZiAoaW5wdXQpIHtcbiAgICAgICAgICBpbnB1dC5pbnB1dC5zZXRBdHRyaWJ1dGUoJ2NvbHVtbicsIG5hbWUpO1xuICAgICAgICAgIGlucHV0LnZhbHVlID0gdGhpcy5kYXRhRnJhbWUuZ2V0KG5hbWUsIHJvdyk7XG4gICAgICAgICAgaW5wdXQucmVhZE9ubHkgPSB0cnVlO1xuXG4gICAgICAgICAgaWYgKHRoaXMuY29sb3JDb2RlKSB7XG4gICAgICAgICAgICBjb25zdCBncmlkID0gKCh0aGlzLnZpZXcgPz8gZ3Jvay5zaGVsbC50dikgYXMgREcuVGFibGVWaWV3KS5ncmlkO1xuICAgICAgICAgICAgY29uc3QgY29sb3IgPSBncmlkLmNlbGwobmFtZSwgcm93KS5jb2xvcjtcbiAgICAgICAgICAgIGlmIChncmlkLmNvbChuYW1lKT8uaXNUZXh0Q29sb3JDb2RlZCkge1xuICAgICAgICAgICAgICBpbnB1dC5pbnB1dC5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgYGNvbG9yOiR7REcuQ29sb3IudG9IdG1sKGNvbG9yKX0haW1wb3J0YW50O2ApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgIGlucHV0LmlucHV0LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCBgY29sb3I6JHtERy5Db2xvci50b0h0bWwoREcuQ29sb3IuZ2V0Q29udHJhc3RDb2xvcihjb2xvcikpfSFpbXBvcnRhbnQ7YCk7XG4gICAgICAgICAgICAgIGlucHV0LmlucHV0LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IERHLkNvbG9yLnRvSHRtbChjb2xvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlucHV0LmlucHV0Lm9uY2xpY2sgPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5kYXRhRnJhbWUuY3VycmVudENlbGwgPSB0aGlzLmRhdGFGcmFtZS5jZWxsKHJvdywgbmFtZSk7XG4gICAgICAgICAgfTtcbiAgICAgICAgICB1aS50b29sdGlwLmJpbmQoaW5wdXQuaW5wdXQsIG5hbWUpO1xuXG4gICAgICAgICAgcmV0dXJuIGlucHV0LmlucHV0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1aS5kaXYoKTtcbiAgICAgIH1cbiAgICAgICksICdkNC1tdWx0aS1mb3JtLWZvcm0nKTtcblxuICAgIGlmICh0aGlzLnNob3dNb3VzZU92ZXJSb3cgJiYgc2F2ZWRJZHggPT0gdGhpcy5tb3VzZU92ZXJQb3MpXG4gICAgICBmb3JtLmFwcGVuZCh0aGlzLm1vdXNlT3ZlclJvd0luZGljYXRvcik7XG4gICAgaWYgKHRoaXMuc2hvd0N1cnJlbnRSb3cgJiYgc2F2ZWRJZHggPT09IHRoaXMuY3VycmVudFJvd1BvcylcbiAgICAgIGZvcm0uYXBwZW5kKHRoaXMuY3VycmVudFJvd0luZGljYXRvcik7XG5cbiAgICBmb3JtLm9uY2xpY2sgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudC5jdHJsS2V5ICYmIGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IHJvdzsgaSsrKVxuICAgICAgICAgIHRoaXMuZGF0YUZyYW1lLnNlbGVjdGlvbi5zZXQoaSwgZmFsc2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGV2ZW50LmN0cmxLZXkpIHtcbiAgICAgICAgICBjb25zdCBjdXJyZW50U2VsZWN0aW9uID0gdGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLmdldChyb3cpO1xuICAgICAgICAgIHRoaXMuZGF0YUZyYW1lLnNlbGVjdGlvbi5zZXQocm93LCAhY3VycmVudFNlbGVjdGlvbik7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSB0aGlzLmRhdGFGcmFtZS5yb3dDb3VudDsgaSsrKVxuICAgICAgICAgICAgdGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLnNldChpLCBpIDw9IHJvdyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKCF0aGlzLnNob3dDdXJyZW50Um93IHx8IHNhdmVkSWR4ICE9PSB0aGlzLmN1cnJlbnRSb3dQb3MpXG4gICAgICAgICAgICB0aGlzLmRhdGFGcmFtZS5jdXJyZW50Um93SWR4ID0gcm93O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgICBpZiAoIXRoaXMuc2hvd01vdXNlT3ZlclJvdyB8fCBzYXZlZElkeCAhPT0gdGhpcy5tb3VzZU92ZXJQb3MpIHtcbiAgICAgIGZvcm0ub25tb3VzZWVudGVyID0gKCkgPT4gdGhpcy5kYXRhRnJhbWUubW91c2VPdmVyUm93SWR4ID0gcm93O1xuICAgICAgZm9ybS5vbm1vdXNlbGVhdmUgPSAoKSA9PiB0aGlzLmRhdGFGcmFtZS5tb3VzZU92ZXJSb3dJZHggPSAtMTtcbiAgICB9XG4gICAgcmV0dXJuIGZvcm07XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgaWYgKCF0aGlzLnNob3dGaXhlZFJvd3MpIHtcbiAgICAgIGlmICh0aGlzLnNob3dTZWxlY3RlZFJvd3MpIHtcbiAgICAgICAgdGhpcy5pbmRleGVzID0gdGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLnRydWVDb3VudCA+IDAgP1xuICAgICAgICAgIEFycmF5LmZyb20odGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLmdldFNlbGVjdGVkSW5kZXhlcygpKSA6IFtdO1xuICAgICAgfVxuICAgICAgZWxzZVxuICAgICAgICB0aGlzLmluZGV4ZXMgPSBbXTtcbiAgICB9XG5cbiAgICB1aS5lbXB0eSh0aGlzLmNvbHVtbkhlYWRlcnNEaXYpO1xuXG4gICAgdGhpcy5yZW5kZXJIZWFkZXIoKTtcblxuICAgIHRoaXMudmlydHVhbFZpZXcuc2V0RGF0YShcbiAgICAgIHRoaXMuaW5kZXhlcy5sZW5ndGggKyAodGhpcy5zaG93Q3VycmVudFJvdyA/IDEgOiAwKSArICh0aGlzLnNob3dNb3VzZU92ZXJSb3cgPyAxIDogMCksXG4gICAgICAoaTogbnVtYmVyKSA9PiB0aGlzLnJlbmRlckZvcm0oaSkpO1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMtdmlld2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZm9ybXMtdmlld2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEMsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEtBQUssSUFBSSxNQUFNLG1CQUFtQixDQUFDO0FBRTFDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0QyxPQUFPLHFCQUFxQixDQUFDO0FBRTdCLE1BQU0sMkJBQTJCLEdBQUcsK0RBQStELENBQUM7QUFDcEcsTUFBTSx3QkFBd0IsR0FBRyxFQUFFLENBQUM7QUFFcEMsTUFBTSxPQUFPLFdBQVksU0FBUSxFQUFFLENBQUMsUUFBUTtJQUMxQyxJQUFJLElBQUksS0FBYSxPQUFPLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFlNUMsSUFBSSxTQUFTLENBQUMsRUFBZ0I7UUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLGVBQWUsQ0FBQyxJQUFjO1FBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUM5QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLFFBQWtCO1FBQzVCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUM7UUFDbEMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFRDtRQUNFLEtBQUssRUFBRSxDQUFDO1FBNUJWLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBSXRCLHFCQUFnQixHQUFXLENBQUMsQ0FBQztRQUM3Qix3QkFBbUIsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSx1RUFBdUUsQ0FBQyxDQUFDO1FBQzFHLDBCQUFxQixHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLDBFQUEwRSxDQUFDLENBQUM7UUF3QjdHLElBQUksQ0FBQyxPQUFPLEdBQUcsa0RBQWtELENBQUM7UUFFbEUsYUFBYTtRQUNiLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLG1CQUFtQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDcEYsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxPQUFPLEVBQUUsRUFBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFDLENBQUMsQ0FBQztRQUVsRyxRQUFRO1FBQ1IsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFFbEIsT0FBTztRQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsRixNQUFNLGdCQUFnQixHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDdkQsTUFBTSxpQkFBaUIsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDM0YsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUV6QyxNQUFNLFlBQVksR0FBRyxpQkFBaUIsQ0FBQyxpQkFBZ0MsQ0FBQztRQUN4RSxNQUFNLGFBQWEsR0FBRyxpQkFBaUIsQ0FBQyxnQkFBK0IsQ0FBQztRQUV4RSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDekQsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFFOUQsRUFBRSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDakQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUc7Ozs7T0FJckMsQ0FBQztZQUNGLFlBQVksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHOztPQUU1QixDQUFDO1lBQ0YsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRzs7Ozs7OztPQU9oQyxDQUFDO1lBRUYsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBUSxFQUFFLEVBQUU7Z0JBQ3ZELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUM7WUFDL0QsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFRLEVBQUUsRUFBRTtnQkFDNUQsZ0JBQWdCLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUMvRCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQzdELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDMUQsWUFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEdBQUMsRUFBRSxJQUFJLENBQUM7WUFDM0QsYUFBYSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsR0FBRyxTQUFTLEdBQUMsSUFBSSxDQUFDLGdCQUFnQixHQUFDLEVBQUUsR0FBQyxDQUFDLElBQUksQ0FBQztRQUMxRSxDQUFDLENBQUMsQ0FBQztJQUVMLENBQUM7SUFFRCxjQUFjLENBQUMsRUFBYztRQUMzQixPQUFPLFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEtBQUssSUFBSTtZQUNqQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUU1RCxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQTJCLEVBQUUsTUFBZ0IsRUFBRSxFQUFFO1lBQzVELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLENBQUMsQ0FBQztRQUVGLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDN0QsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUUxRCxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUUzRCxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7WUFDeEMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO1FBRUgsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQzdFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxhQUFjLENBQUMsQ0FBQyxDQUFDO1FBRTNELEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQ2pGLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxZQUFhLENBQUMsQ0FBQyxDQUFDO1FBRTFELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRUQsb0JBQW9CLENBQUMsU0FBbUI7UUFDdEMsSUFBSSxTQUFTLENBQUMsTUFBTSxHQUFHLEVBQUUsRUFBRTtZQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1lBQ2hELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUNqRDs7WUFFQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCx1QkFBdUI7UUFDckIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbEQsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQztRQUM1QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2hDLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0QsSUFBSSxNQUFNLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNwQyxPQUFPLEVBQUUsQ0FBQztnQkFDVixDQUFDLEVBQUUsQ0FBQzthQUNMO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsUUFBcUI7UUFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssZ0JBQWdCLElBQUksUUFBUSxDQUFDLElBQUksS0FBSyxrQkFBa0I7WUFDN0UsUUFBUSxDQUFDLElBQUksS0FBSyxrQkFBa0IsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxhQUFhO1lBQzFGLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGNBQWMsUUFBUSxDQUFDLElBQUksbUNBQW1DLENBQUMsQ0FBQztRQUNyRixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVELFlBQVk7UUFDVixFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2hDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNCLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWhDLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQ3pDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxHQUFHLElBQUksR0FBRyxJQUFJLENBQXFCLENBQUM7WUFDcEYsSUFBSSxTQUFTLEVBQUU7Z0JBQ2IsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ3hFLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRTtvQkFDeEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQztvQkFDbEYsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNoQixDQUFDLENBQUMsQ0FBQztnQkFDSCxNQUFNLG9CQUFvQixHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLEVBQUUsdUNBQXVDLENBQUMsQ0FBQztnQkFDdkcsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsQ0FBQztvQkFDL0MsU0FBUyxDQUFDLFNBQVMsR0FBRyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQztnQkFDdkUsb0JBQW9CLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLFNBQVMsR0FBRyxFQUFFLElBQUksQ0FBQztnQkFDdkQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2dCQUN4RCxXQUFXLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBYSxFQUFFLEVBQUU7b0JBQ3RDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBRSxDQUFDO2dCQUN4RCxDQUFDLENBQUM7Z0JBQ0YsSUFBSSxXQUFXLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQjtvQkFDbkUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFdBQVcsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEtBQUssQ0FBQztnQkFDcEUsb0JBQW9CLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBYSxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7Z0JBQzlGLG9CQUFvQixDQUFDLFlBQVksR0FBRyxDQUFDLENBQWEsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDO2FBQzlGO1NBQ0Y7UUFFRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVELElBQUksYUFBYSxLQUFLLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzlELElBQUksWUFBWSxLQUFLLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFFM0YsVUFBVSxDQUFDLEdBQVcsRUFBRSxNQUFnQjtRQUN0QyxNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUM7UUFDckIsSUFBSSxNQUFNO1lBQ1IsR0FBRyxHQUFHLENBQUMsQ0FBQzthQUNMO1lBQ0gsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLEdBQUcsS0FBSyxJQUFJLENBQUMsYUFBYTtnQkFDbkQsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDO2lCQUNoQyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxHQUFHLEtBQUssSUFBSSxDQUFDLFlBQVk7Z0JBQ3pELEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQzs7Z0JBRXJDLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM3RjtRQUVELE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQ2xCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTs7WUFDbEMsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDO2dCQUNaLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBRWxCLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBRSxDQUFDLENBQUM7WUFDaEUsSUFBSSxLQUFLLEVBQUU7Z0JBQ1QsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUUsQ0FBQyxPQUFPLEtBQUssRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRO29CQUMzRCxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsZ0NBQWdDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO2dCQUNqRixLQUFLLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3pDLEtBQUssQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUM1QyxLQUFLLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztnQkFFdEIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO29CQUNsQixNQUFNLElBQUksR0FBSSxDQUFDLE1BQUEsSUFBSSxDQUFDLElBQUksbUNBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQWtCLENBQUMsSUFBSSxDQUFDO29CQUNqRSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7b0JBQ3pDLElBQUksTUFBQSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQywwQ0FBRSxnQkFBZ0I7d0JBQ2xDLEtBQUssQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQzt5QkFDN0U7d0JBQ0gsS0FBSyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUM5QixTQUFTLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUM7d0JBQzNFLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztxQkFDNUQ7aUJBQ0Y7Z0JBQ0QsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFhLEVBQUUsRUFBRTtvQkFDdEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUM5RCxDQUFDLENBQUM7Z0JBQ0YsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFFbkMsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDO2FBQ3BCO1lBQ0QsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDbEIsQ0FBQyxDQUNBLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztRQUUzQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxRQUFRLElBQUksSUFBSSxDQUFDLFlBQVk7WUFDeEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUMxQyxJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksUUFBUSxLQUFLLElBQUksQ0FBQyxhQUFhO1lBQ3hELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFeEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtZQUNuQyxJQUFJLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRTtnQkFDbkMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLEVBQUU7b0JBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDMUM7aUJBQU07Z0JBQ0wsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFO29CQUNqQixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDM0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLENBQUM7aUJBQ3REO3FCQUFNLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRTtvQkFDekIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRTt3QkFDL0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7aUJBQzdDO3FCQUFNO29CQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLFFBQVEsS0FBSyxJQUFJLENBQUMsYUFBYTt3QkFDekQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDO2lCQUN0QzthQUNGO1FBQ0gsQ0FBQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxRQUFRLEtBQUssSUFBSSxDQUFDLFlBQVksRUFBRTtZQUM1RCxJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxHQUFHLEdBQUcsQ0FBQztZQUMvRCxJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQy9EO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3ZCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO2dCQUN6QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDckQsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzthQUNsRTs7Z0JBRUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7U0FDckI7UUFFRCxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRWhDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVwQixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNyRixDQUFDLENBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtmaWx0ZXJ9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCAnLi4vLi4vY3NzL2Zvcm1zLmNzcyc7XG5cbmNvbnN0IENPTFNfTElNSVRfRVhDRUVERURfV0FSTklORyA9IGBOdW1iZXIgb2YgY29sdW1ucyBpcyBtb3JlIHRoYW4gMjAuIEZpcnN0IDIwIGNvbHVtbnMgYXJlIHNob3duYDtcbmNvbnN0IEJPT0xFQU5fSU5QVVRfVE9QX01BUkdJTiA9IDE1O1xuXG5leHBvcnQgY2xhc3MgRm9ybXNWaWV3ZXIgZXh0ZW5kcyBERy5Kc1ZpZXdlciB7XG4gIGdldCB0eXBlKCk6IHN0cmluZyB7IHJldHVybiAnRm9ybXNWaWV3ZXInOyB9XG4gIGNvbXBvdW5kU2l6ZTogc3RyaW5nO1xuICBmaWVsZHNDb2x1bW5OYW1lczogc3RyaW5nW107XG4gIGNvbG9yQ29kZTogYm9vbGVhbjtcbiAgc2hvd0N1cnJlbnRSb3c6IGJvb2xlYW47XG4gIHNob3dNb3VzZU92ZXJSb3c6IGJvb2xlYW47XG4gIHNob3dTZWxlY3RlZFJvd3M6IGJvb2xlYW47XG4gIHNob3dGaXhlZFJvd3MgPSBmYWxzZTtcbiAgaW5kZXhlczogbnVtYmVyW107XG4gIGNvbHVtbkhlYWRlcnNEaXY6IEhUTUxEaXZFbGVtZW50O1xuICB2aXJ0dWFsVmlldzogREcuVmlydHVhbFZpZXc7XG4gIGNvbHVtbkxhYmVsV2lkdGg6IG51bWJlciA9IDA7XG4gIGN1cnJlbnRSb3dJbmRpY2F0b3IgPSB1aS5kaXYoJycsICdkNC1tdWx0aS1mb3JtLWZvcm0taW5kaWNhdG9yIGQ0LW11bHRpLWZvcm0tZm9ybS1pbmRpY2F0b3ItY3VycmVudC1yb3cnKTtcbiAgbW91c2VPdmVyUm93SW5kaWNhdG9yID0gdWkuZGl2KCcnLCAnZDQtbXVsdGktZm9ybS1mb3JtLWluZGljYXRvciBkNC1tdWx0aS1mb3JtLWZvcm0taW5kaWNhdG9yLW1vdXNlLW92ZXItcm93Jyk7XG5cbiAgc2V0IGRhdGFmcmFtZShkZjogREcuRGF0YUZyYW1lKSB7XG4gICAgdGhpcy5kYXRhRnJhbWUgPSBkZjtcbiAgICB0aGlzLm9uVGFibGVBdHRhY2hlZCgpO1xuICB9XG5cbiAgc2V0IGZpeGVkUm93TnVtYmVycyhpZHhzOiBudW1iZXJbXSkge1xuICAgIHRoaXMuaW5kZXhlcyA9IGlkeHM7XG4gICAgdGhpcy5zaG93Q3VycmVudFJvdyA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd01vdXNlT3ZlclJvdyA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd1NlbGVjdGVkUm93cyA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd0ZpeGVkUm93cyA9IHRydWU7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHNldCBjb2x1bW5zKGNvbE5hbWVzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuZmllbGRzQ29sdW1uTmFtZXMgPSBjb2xOYW1lcztcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuaGVscFVybCA9ICdodHRwczovL2RhdGFncm9rLmFpL2hlbHAvdmlzdWFsaXplL3ZpZXdlcnMvZm9ybXMnO1xuXG4gICAgLy8gcHJvcGVydGllc1xuICAgIHRoaXMuZmllbGRzQ29sdW1uTmFtZXMgPSB0aGlzLmFkZFByb3BlcnR5KCdmaWVsZHNDb2x1bW5OYW1lcycsIERHLlRZUEUuQ09MVU1OX0xJU1QpO1xuICAgIHRoaXMuY29sb3JDb2RlID0gdGhpcy5ib29sKCdjb2xvckNvZGUnLCB0cnVlKTtcbiAgICB0aGlzLnNob3dDdXJyZW50Um93ID0gdGhpcy5ib29sKCdzaG93Q3VycmVudFJvdycsIHRydWUpO1xuICAgIHRoaXMuc2hvd01vdXNlT3ZlclJvdyA9IHRoaXMuYm9vbCgnc2hvd01vdXNlT3ZlclJvdycsIHRydWUpO1xuICAgIHRoaXMuc2hvd1NlbGVjdGVkUm93cyA9IHRoaXMuYm9vbCgnc2hvd1NlbGVjdGVkUm93cycsIHRydWUpO1xuICAgIHRoaXMuY29tcG91bmRTaXplID0gdGhpcy5zdHJpbmcoJ2NvbXBvdW5kU2l6ZScsICdzbWFsbCcsIHtjaG9pY2VzOiBbJ3NtYWxsJywgJ25vcm1hbCcsICdsYXJnZSddfSk7XG5cbiAgICAvL2ZpZWxkc1xuICAgIHRoaXMuaW5kZXhlcyA9IFtdO1xuXG4gICAgLy8gaW5pdFxuICAgIHRoaXMucm9vdC5jbGFzc0xpc3QuYWRkKCdkNC1tdWx0aS1mb3JtJyk7XG4gICAgdGhpcy5jb2x1bW5IZWFkZXJzRGl2ID0gdWkuZGl2KFtdLCAnZDQtbXVsdGktZm9ybS1oZWFkZXInKTtcbiAgICB0aGlzLnZpcnR1YWxWaWV3ID0gdWkudmlydHVhbFZpZXcoMCwgKGk6IG51bWJlcikgPT4gdGhpcy5yZW5kZXJGb3JtKGkpLCBmYWxzZSwgMSk7XG4gICAgY29uc3QgY29sdW1uSGVhZGVyc0JveCA9IHVpLmRpdih0aGlzLmNvbHVtbkhlYWRlcnNEaXYpO1xuICAgIGNvbnN0IGZvcm1XaXRoSGVhZGVyRGl2ID0gdWkuc3BsaXRIKFtjb2x1bW5IZWFkZXJzQm94LCB0aGlzLnZpcnR1YWxWaWV3LnJvb3RdLCBudWxsLCB0cnVlKTtcbiAgICB0aGlzLnJvb3QuYXBwZW5kQ2hpbGQoZm9ybVdpdGhIZWFkZXJEaXYpO1xuXG4gICAgY29uc3Qgc3BsaXRDb2xMZWZ0ID0gZm9ybVdpdGhIZWFkZXJEaXYuZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgY29uc3Qgc3BsaXRDb2xSaWdodCA9IGZvcm1XaXRoSGVhZGVyRGl2Lmxhc3RFbGVtZW50Q2hpbGQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICB1aS50b29sdGlwLmJpbmQodGhpcy5jdXJyZW50Um93SW5kaWNhdG9yLCAnQ3VycmVudCByb3cnKTtcbiAgICB1aS50b29sdGlwLmJpbmQodGhpcy5tb3VzZU92ZXJSb3dJbmRpY2F0b3IsICdNb3VzZSBvdmVyIHJvdycpO1xuXG4gICAgdWkudG9vbHMud2FpdEZvckVsZW1lbnRJbkRvbSh0aGlzLnJvb3QpLnRoZW4oKF8pID0+IHtcbiAgICAgIHRoaXMuY29sdW1uSGVhZGVyc0Rpdi5zdHlsZS5jc3NUZXh0ID0gYFxuICAgICAgICBvdmVmbG93OmhpZGRlbiFpbXBvcnRhbnQ7XG4gICAgICAgIG1pbi13aWR0aDogMTUwcHg7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgYDtcbiAgICAgIHNwbGl0Q29sTGVmdC5zdHlsZS5jc3NUZXh0ID0gYFxuICAgICAgICBvdmVyZmxvdzogaGlkZGVuIWltcG9ydGFudDtcbiAgICAgIGA7XG4gICAgICBjb2x1bW5IZWFkZXJzQm94LnN0eWxlLmNzc1RleHQgPSBgXG4gICAgICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICAgICAgICB3aWR0aDoxMDAlO1xuICAgICAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgICAgICAgZGlzcGxheTpmbGV4O1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OjE3cHg7XG4gICAgICAgIG92ZXJmbG93OiBzY3JvbGwhaW1wb3J0YW50O1xuICAgICAgYDtcblxuICAgICAgY29sdW1uSGVhZGVyc0JveC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCAoZTogRXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy52aXJ0dWFsVmlldy5yb290LnNjcm9sbFRvcCA9IGNvbHVtbkhlYWRlcnNCb3guc2Nyb2xsVG9wO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMudmlydHVhbFZpZXcucm9vdC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCAoZTogRXZlbnQpID0+IHtcbiAgICAgICAgY29sdW1uSGVhZGVyc0JveC5zY3JvbGxUb3AgPSB0aGlzLnZpcnR1YWxWaWV3LnJvb3Quc2Nyb2xsVG9wO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB1aS50b29scy53YWl0Rm9yRWxlbWVudEluRG9tKHRoaXMudmlydHVhbFZpZXcucm9vdCkudGhlbigoXykgPT4ge1xuICAgICAgY29uc3Qgcm9vdFdpZHRoID0gdGhpcy5yb290LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgICAgc3BsaXRDb2xMZWZ0LnN0eWxlLndpZHRoID0gYCR7dGhpcy5jb2x1bW5MYWJlbFdpZHRoKzMwfXB4YDtcbiAgICAgIHNwbGl0Q29sUmlnaHQuc3R5bGUud2lkdGggPSBgJHtyb290V2lkdGgtdGhpcy5jb2x1bW5MYWJlbFdpZHRoLTMwLTR9cHhgO1xuICAgIH0pO1xuICAgIFxuICB9XG5cbiAgZ2V0Q29sdW1uV2lkdGgoZWw6SFRNTEVsZW1lbnQpe1xuICAgIHJldHVybiBwYXJzZUludChlbC5zdHlsZS53aWR0aCk7XG4gIH1cbiAgXG4gIG9uVGFibGVBdHRhY2hlZCgpIHtcbiAgICBpZiAodGhpcy5maWVsZHNDb2x1bW5OYW1lcyA9PT0gbnVsbClcbiAgICAgIHRoaXMuc2V0ZmllbGRzQ29sdW1uTmFtZXModGhpcy5kYXRhRnJhbWUuY29sdW1ucy5uYW1lcygpKTtcblxuICAgIGNvbnN0IHN1YiA9IChzdHJlYW06IE9ic2VydmFibGU8dW5rbm93bj4sIGFjdGlvbjogRnVuY3Rpb24pID0+IHtcbiAgICAgIHRoaXMuc3Vicy5wdXNoKERHLmRlYm91bmNlKHN0cmVhbSwgNTApLnN1YnNjcmliZSgoXykgPT4gYWN0aW9uKCkpKTtcbiAgICB9O1xuXG4gICAgc3ViKHRoaXMuZGF0YUZyYW1lLnNlbGVjdGlvbi5vbkNoYW5nZWQsICgpID0+IHRoaXMucmVuZGVyKCkpO1xuICAgIHN1Yih0aGlzLmRhdGFGcmFtZS5maWx0ZXIub25DaGFuZ2VkLCAoKSA9PiB0aGlzLnJlbmRlcigpKTtcblxuICAgIHN1Yih0aGlzLmRhdGFGcmFtZS5vbk1ldGFkYXRhQ2hhbmdlZCwgKCkgPT4gdGhpcy5yZW5kZXIoKSk7XG5cbiAgICBzdWIodGhpcy5kYXRhRnJhbWUub25Db2x1bW5zUmVtb3ZlZCwgKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVmaWVsZHNDb2x1bW5OYW1lcygpO1xuICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICB9KTtcblxuICAgIHN1Yih0aGlzLmRhdGFGcmFtZS5vbkN1cnJlbnRSb3dDaGFuZ2VkLnBpcGUoZmlsdGVyKChfKSA9PiB0aGlzLnNob3dDdXJyZW50Um93KSksXG4gICAgICAoKSA9PiB0aGlzLnZpcnR1YWxWaWV3LnJlZnJlc2hJdGVtKHRoaXMuY3VycmVudFJvd1BvcyEpKTtcblxuICAgIHN1Yih0aGlzLmRhdGFGcmFtZS5vbk1vdXNlT3ZlclJvd0NoYW5nZWQucGlwZShmaWx0ZXIoKF8pID0+IHRoaXMuc2hvd01vdXNlT3ZlclJvdykpLFxuICAgICAgKCkgPT4gdGhpcy52aXJ0dWFsVmlldy5yZWZyZXNoSXRlbSh0aGlzLm1vdXNlT3ZlclBvcyEpKTtcblxuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBzZXRmaWVsZHNDb2x1bW5OYW1lcyhkZkNvbHVtbnM6IHN0cmluZ1tdKSB7XG4gICAgaWYgKGRmQ29sdW1ucy5sZW5ndGggPiAyMCkge1xuICAgICAgZ3Jvay5zaGVsbC53YXJuaW5nKENPTFNfTElNSVRfRVhDRUVERURfV0FSTklORyk7XG4gICAgICB0aGlzLmZpZWxkc0NvbHVtbk5hbWVzID0gZGZDb2x1bW5zLnNsaWNlKDAsIDIwKTtcbiAgICB9XG4gICAgZWxzZVxuICAgICAgdGhpcy5maWVsZHNDb2x1bW5OYW1lcyA9IGRmQ29sdW1ucztcbiAgfVxuXG4gIHVwZGF0ZWZpZWxkc0NvbHVtbk5hbWVzKCkge1xuICAgIGNvbnN0IG5ld0NvbHVtbnMgPSB0aGlzLmRhdGFGcmFtZS5jb2x1bW5zLm5hbWVzKCk7XG4gICAgbGV0IGNvdW50ZXIgPSB0aGlzLmZpZWxkc0NvbHVtbk5hbWVzLmxlbmd0aDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50ZXI7IGkrKykge1xuICAgICAgY29uc3QgY29sSWR4ID0gbmV3Q29sdW1ucy5pbmRleE9mKHRoaXMuZmllbGRzQ29sdW1uTmFtZXNbaV0pO1xuICAgICAgaWYgKGNvbElkeCA9PT0gLTEpIHtcbiAgICAgICAgdGhpcy5maWVsZHNDb2x1bW5OYW1lcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIGNvdW50ZXItLTtcbiAgICAgICAgaS0tO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uUHJvcGVydHlDaGFuZ2VkKHByb3BlcnR5OiBERy5Qcm9wZXJ0eSk6IHZvaWQge1xuICAgIGlmICgocHJvcGVydHkubmFtZSA9PT0gJ3Nob3dDdXJyZW50Um93JyB8fCBwcm9wZXJ0eS5uYW1lID09PSAnc2hvd01vdXNlT3ZlclJvdycgfHxcbiAgICAgIHByb3BlcnR5Lm5hbWUgPT09ICdzaG93U2VsZWN0ZWRSb3dzJyAmJiBwcm9wZXJ0eS5nZXQodGhpcykgPT09IHRydWUpICYmIHRoaXMuc2hvd0ZpeGVkUm93cylcbiAgICAgIGdyb2suc2hlbGwud2FybmluZyhgQ2Fubm90IHNldCAke3Byb3BlcnR5Lm5hbWV9IHRvIHRydWUgc2luY2UgZml4ZWQgcm93cyBhcmUgc2V0YCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHJlbmRlckhlYWRlcigpIHtcbiAgICB1aS5lbXB0eSh0aGlzLmNvbHVtbkhlYWRlcnNEaXYpO1xuICAgIGNvbnN0IGZvcm0gPSB0aGlzLnJlbmRlckZvcm0oMCwgdHJ1ZSk7XG4gICAgZm9ybS5jbGFzc0xpc3QuYWRkKCd0ZW1wJyk7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmb3JtKTtcblxuICAgIGZvciAoY29uc3QgbmFtZSBvZiB0aGlzLmZpZWxkc0NvbHVtbk5hbWVzKSB7XG4gICAgICBjb25zdCBmb3JtRmllbGQgPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoJ1tjb2x1bW49XCInICsgbmFtZSArICdcIl0nKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgaWYgKGZvcm1GaWVsZCkge1xuICAgICAgICBjb25zdCBjb2x1bW5MYWJlbCA9IHVpLmJpbmQodGhpcy5kYXRhRnJhbWUuY29sKG5hbWUpLCB1aS5kaXZUZXh0KG5hbWUpKTtcbiAgICAgICAgY29uc3QgY2xvc2VJY29uID0gdWkuaWNvbkZBKCd0aW1lcycsICgpID0+IHtcbiAgICAgICAgICB0aGlzLmZpZWxkc0NvbHVtbk5hbWVzID0gdGhpcy5maWVsZHNDb2x1bW5OYW1lcy5maWx0ZXIoKHZhbHVlKSA9PiB2YWx1ZSAhPT0gbmFtZSk7XG4gICAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGNvbHVtbkxhYmVsQ29udGFpbmVyID0gdWkuZGl2KFtjb2x1bW5MYWJlbCwgY2xvc2VJY29uXSwgJ2Q0LW11bHRpLWZvcm0tY29sdW1uLW5hbWUgZDQtZmxleC1yb3cnKTtcbiAgICAgICAgY29uc3Qgb2Zmc2V0VG9wID0gZm9ybUZpZWxkLnR5cGUgPT09ICdjaGVja2JveCcgP1xuICAgICAgICAgIGZvcm1GaWVsZC5vZmZzZXRUb3AgLSBCT09MRUFOX0lOUFVUX1RPUF9NQVJHSU4gOiBmb3JtRmllbGQub2Zmc2V0VG9wO1xuICAgICAgICBjb2x1bW5MYWJlbENvbnRhaW5lci5zdHlsZS50b3AgPSBgJHtvZmZzZXRUb3AgKyAxMH1weGA7XG4gICAgICAgIHRoaXMuY29sdW1uSGVhZGVyc0Rpdi5hcHBlbmRDaGlsZChjb2x1bW5MYWJlbENvbnRhaW5lcik7XG4gICAgICAgIGNvbHVtbkxhYmVsLm9uY2xpY2sgPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgIHRoaXMuZGF0YUZyYW1lLmN1cnJlbnRDb2wgPSB0aGlzLmRhdGFGcmFtZS5jb2wobmFtZSkhO1xuICAgICAgICB9O1xuICAgICAgICBpZiAoY29sdW1uTGFiZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggPiB0aGlzLmNvbHVtbkxhYmVsV2lkdGgpXG4gICAgICAgICAgdGhpcy5jb2x1bW5MYWJlbFdpZHRoID0gY29sdW1uTGFiZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgICAgIGNvbHVtbkxhYmVsQ29udGFpbmVyLm9ubW91c2VlbnRlciA9IChlOiBNb3VzZUV2ZW50KSA9PiBjbG9zZUljb24uc3R5bGUudmlzaWJpbGl0eSA9ICd2aXNpYmxlJztcbiAgICAgICAgY29sdW1uTGFiZWxDb250YWluZXIub25tb3VzZWxlYXZlID0gKGU6IE1vdXNlRXZlbnQpID0+IGNsb3NlSWNvbi5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9ybS5yZW1vdmUoKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50Um93UG9zKCkgeyByZXR1cm4gdGhpcy5zaG93Q3VycmVudFJvdyA/IDAgOiBudWxsOyB9XG4gIGdldCBtb3VzZU92ZXJQb3MoKSB7IHJldHVybiB0aGlzLnNob3dNb3VzZU92ZXJSb3cgPyAodGhpcy5zaG93Q3VycmVudFJvdyA/IDEgOiAwKSA6IG51bGw7IH1cblxuICByZW5kZXJGb3JtKHJvdzogbnVtYmVyLCBoZWFkZXI/OiBib29sZWFuKSB7XG4gICAgY29uc3Qgc2F2ZWRJZHggPSByb3c7XG4gICAgaWYgKGhlYWRlcilcbiAgICAgIHJvdyA9IDA7XG4gICAgZWxzZSB7XG4gICAgICBpZiAodGhpcy5zaG93Q3VycmVudFJvdyAmJiByb3cgPT09IHRoaXMuY3VycmVudFJvd1BvcylcbiAgICAgICAgcm93ID0gdGhpcy5kYXRhRnJhbWUuY3VycmVudFJvd0lkeDtcbiAgICAgIGVsc2UgaWYgKHRoaXMuc2hvd01vdXNlT3ZlclJvdyAmJiByb3cgPT09IHRoaXMubW91c2VPdmVyUG9zKVxuICAgICAgICByb3cgPSB0aGlzLmRhdGFGcmFtZS5tb3VzZU92ZXJSb3dJZHg7XG4gICAgICBlbHNlXG4gICAgICAgIHJvdyA9IHRoaXMuaW5kZXhlc1tyb3cgLSAodGhpcy5zaG93Q3VycmVudFJvdyA/IDEgOiAwKSAtICh0aGlzLnNob3dNb3VzZU92ZXJSb3cgPyAxIDogMCldO1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm0gPSB1aS5kaXZWKFxuICAgICAgdGhpcy5maWVsZHNDb2x1bW5OYW1lcy5tYXAoKG5hbWUpID0+IHtcbiAgICAgICAgaWYgKHJvdyA9PT0gLTEpXG4gICAgICAgICAgcmV0dXJuIHVpLmRpdigpO1xuXG4gICAgICAgIGNvbnN0IGlucHV0ID0gREcuSW5wdXRCYXNlLmZvckNvbHVtbih0aGlzLmRhdGFGcmFtZS5jb2wobmFtZSkhKTtcbiAgICAgICAgaWYgKGlucHV0KSB7XG4gICAgICAgICAgaWYgKHRoaXMuZGF0YUZyYW1lLmNvbChuYW1lKSEuc2VtVHlwZSA9PT0gREcuU0VNVFlQRS5NT0xFQ1VMRSlcbiAgICAgICAgICAgIGlucHV0LmlucHV0LmNsYXNzTGlzdC5hZGQoYGQ0LW11bHRpLWZvcm0tbW9sZWN1bGUtaW5wdXQtJHt0aGlzLmNvbXBvdW5kU2l6ZX1gKTtcbiAgICAgICAgICBpbnB1dC5pbnB1dC5zZXRBdHRyaWJ1dGUoJ2NvbHVtbicsIG5hbWUpO1xuICAgICAgICAgIGlucHV0LnZhbHVlID0gdGhpcy5kYXRhRnJhbWUuZ2V0KG5hbWUsIHJvdyk7XG4gICAgICAgICAgaW5wdXQucmVhZE9ubHkgPSB0cnVlO1xuXG4gICAgICAgICAgaWYgKHRoaXMuY29sb3JDb2RlKSB7XG4gICAgICAgICAgICBjb25zdCBncmlkID0gKCh0aGlzLnZpZXcgPz8gZ3Jvay5zaGVsbC50dikgYXMgREcuVGFibGVWaWV3KS5ncmlkO1xuICAgICAgICAgICAgY29uc3QgY29sb3IgPSBncmlkLmNlbGwobmFtZSwgcm93KS5jb2xvcjtcbiAgICAgICAgICAgIGlmIChncmlkLmNvbChuYW1lKT8uaXNUZXh0Q29sb3JDb2RlZClcbiAgICAgICAgICAgICAgaW5wdXQuaW5wdXQuc2V0QXR0cmlidXRlKCdzdHlsZScsIGBjb2xvcjoke0RHLkNvbG9yLnRvSHRtbChjb2xvcil9IWltcG9ydGFudDtgKTtcbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICBpbnB1dC5pbnB1dC5zZXRBdHRyaWJ1dGUoJ3N0eWxlJyxcbiAgICAgICAgICAgICAgICBgY29sb3I6JHtERy5Db2xvci50b0h0bWwoREcuQ29sb3IuZ2V0Q29udHJhc3RDb2xvcihjb2xvcikpfSFpbXBvcnRhbnQ7YCk7XG4gICAgICAgICAgICAgIGlucHV0LmlucHV0LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IERHLkNvbG9yLnRvSHRtbChjb2xvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlucHV0LmlucHV0Lm9uY2xpY2sgPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5kYXRhRnJhbWUuY3VycmVudENlbGwgPSB0aGlzLmRhdGFGcmFtZS5jZWxsKHJvdywgbmFtZSk7XG4gICAgICAgICAgfTtcbiAgICAgICAgICB1aS50b29sdGlwLmJpbmQoaW5wdXQuaW5wdXQsIG5hbWUpO1xuXG4gICAgICAgICAgcmV0dXJuIGlucHV0LmlucHV0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1aS5kaXYoKTtcbiAgICAgIH1cbiAgICAgICksICdkNC1tdWx0aS1mb3JtLWZvcm0nKTtcblxuICAgIGlmICh0aGlzLnNob3dNb3VzZU92ZXJSb3cgJiYgc2F2ZWRJZHggPT0gdGhpcy5tb3VzZU92ZXJQb3MpXG4gICAgICBmb3JtLmFwcGVuZCh0aGlzLm1vdXNlT3ZlclJvd0luZGljYXRvcik7XG4gICAgaWYgKHRoaXMuc2hvd0N1cnJlbnRSb3cgJiYgc2F2ZWRJZHggPT09IHRoaXMuY3VycmVudFJvd1BvcylcbiAgICAgIGZvcm0uYXBwZW5kKHRoaXMuY3VycmVudFJvd0luZGljYXRvcik7XG5cbiAgICBmb3JtLm9uY2xpY2sgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudC5jdHJsS2V5ICYmIGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IHJvdzsgaSsrKVxuICAgICAgICAgIHRoaXMuZGF0YUZyYW1lLnNlbGVjdGlvbi5zZXQoaSwgZmFsc2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGV2ZW50LmN0cmxLZXkpIHtcbiAgICAgICAgICBjb25zdCBjdXJyZW50U2VsZWN0aW9uID0gdGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLmdldChyb3cpO1xuICAgICAgICAgIHRoaXMuZGF0YUZyYW1lLnNlbGVjdGlvbi5zZXQocm93LCAhY3VycmVudFNlbGVjdGlvbik7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSB0aGlzLmRhdGFGcmFtZS5yb3dDb3VudDsgaSsrKVxuICAgICAgICAgICAgdGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLnNldChpLCBpIDw9IHJvdyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKCF0aGlzLnNob3dDdXJyZW50Um93IHx8IHNhdmVkSWR4ICE9PSB0aGlzLmN1cnJlbnRSb3dQb3MpXG4gICAgICAgICAgICB0aGlzLmRhdGFGcmFtZS5jdXJyZW50Um93SWR4ID0gcm93O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgICBpZiAoIXRoaXMuc2hvd01vdXNlT3ZlclJvdyB8fCBzYXZlZElkeCAhPT0gdGhpcy5tb3VzZU92ZXJQb3MpIHtcbiAgICAgIGZvcm0ub25tb3VzZWVudGVyID0gKCkgPT4gdGhpcy5kYXRhRnJhbWUubW91c2VPdmVyUm93SWR4ID0gcm93O1xuICAgICAgZm9ybS5vbm1vdXNlbGVhdmUgPSAoKSA9PiB0aGlzLmRhdGFGcmFtZS5tb3VzZU92ZXJSb3dJZHggPSAtMTtcbiAgICB9XG4gICAgcmV0dXJuIGZvcm07XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgaWYgKCF0aGlzLnNob3dGaXhlZFJvd3MpIHtcbiAgICAgIGlmICh0aGlzLnNob3dTZWxlY3RlZFJvd3MpIHtcbiAgICAgICAgdGhpcy5pbmRleGVzID0gdGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLnRydWVDb3VudCA+IDAgP1xuICAgICAgICAgIEFycmF5LmZyb20odGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLmdldFNlbGVjdGVkSW5kZXhlcygpKSA6IFtdO1xuICAgICAgfVxuICAgICAgZWxzZVxuICAgICAgICB0aGlzLmluZGV4ZXMgPSBbXTtcbiAgICB9XG5cbiAgICB1aS5lbXB0eSh0aGlzLmNvbHVtbkhlYWRlcnNEaXYpO1xuXG4gICAgdGhpcy5yZW5kZXJIZWFkZXIoKTtcblxuICAgIHRoaXMudmlydHVhbFZpZXcuc2V0RGF0YShcbiAgICAgIHRoaXMuaW5kZXhlcy5sZW5ndGggKyAodGhpcy5zaG93Q3VycmVudFJvdyA/IDEgOiAwKSArICh0aGlzLnNob3dNb3VzZU92ZXJSb3cgPyAxIDogMCksXG4gICAgICAoaTogbnVtYmVyKSA9PiB0aGlzLnJlbmRlckZvcm0oaSkpO1xuICB9XG59XG4iXX0=

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

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