Socket
Socket
Sign inDemoInstall

@neo-one/monitor

Package Overview
Dependencies
Maintainers
2
Versions
71
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@neo-one/monitor - npm Package Compare versions

Comparing version 1.1.2 to 1.1.3

11

CHANGELOG.md

@@ -6,2 +6,13 @@ # Change Log

## [1.1.3](https://github.com/neo-one-suite/neo-one/compare/@neo-one/monitor@1.1.2...@neo-one/monitor@1.1.3) (2019-06-20)
### Bug Fixes
* **deps:** update dependency typescript to v3.5.1 ([#1365](https://github.com/neo-one-suite/neo-one/issues/1365)) ([ec89546](https://github.com/neo-one-suite/neo-one/commit/ec89546))
## [1.1.2](https://github.com/neo-one-suite/neo-one/compare/@neo-one/monitor@1.1.1...@neo-one/monitor@1.1.2) (2019-06-04)

@@ -8,0 +19,0 @@

2

CollectingLogger.d.ts

@@ -5,4 +5,4 @@ import { CollectedLoggerLogOptions, Logger, LoggerLogOptions } from './types';

log(options: LoggerLogOptions): void;
collect(): ReadonlyArray<CollectedLoggerLogOptions>;
collect(): readonly CollectedLoggerLogOptions[];
close(callback: () => void): void;
}

@@ -40,2 +40,2 @@ "use strict";

//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNvbGxlY3RpbmdMb2dnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFFQSxNQUFhLGdCQUFnQjtJQUE3QjtRQUNFLDJEQUEyRDtRQUNuRCxTQUFJLEdBQWdDLEVBQUUsQ0FBQztJQW9DakQsQ0FBQztJQWxDUSxHQUFHLENBQUMsT0FBeUI7UUFDbEMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQWdELENBQUM7UUFDdkUsTUFBTSxVQUFVLEdBQUc7WUFDakIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO1lBQ2xCLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztZQUNwQixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87WUFDeEIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO1lBQ3RCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtZQUNsQixLQUFLLEVBQ0gsS0FBSyxLQUFLLFNBQVM7Z0JBQ2pCLENBQUMsQ0FBQyxTQUFTO2dCQUNYLENBQUMsQ0FBQztvQkFDRSxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87b0JBQ3RCLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztvQkFDbEIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFO2lCQUMxRTtTQUNSLENBQUM7UUFFRiw2Q0FBNkM7UUFDN0MsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVNLE9BQU87UUFDWixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzVCLDhDQUE4QztRQUM5QyxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUVmLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCwyQkFBMkI7SUFDcEIsS0FBSyxDQUFDLFFBQW9CO1FBQy9CLFFBQVEsRUFBRSxDQUFDO0lBQ2IsQ0FBQztDQUNGO0FBdENELDRDQXNDQyIsImZpbGUiOiJuZW8tb25lLW1vbml0b3Ivc3JjL0NvbGxlY3RpbmdMb2dnZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2xsZWN0ZWRMb2dnZXJMb2dPcHRpb25zLCBMb2dnZXIsIExvZ2dlckxvZ09wdGlvbnMgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGNsYXNzIENvbGxlY3RpbmdMb2dnZXIgaW1wbGVtZW50cyBMb2dnZXIge1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgcmVhZG9ubHktYXJyYXkgcmVhZG9ubHkta2V5d29yZFxuICBwcml2YXRlIGxvZ3M6IENvbGxlY3RlZExvZ2dlckxvZ09wdGlvbnNbXSA9IFtdO1xuXG4gIHB1YmxpYyBsb2cob3B0aW9uczogTG9nZ2VyTG9nT3B0aW9ucyk6IHZvaWQge1xuICAgIGNvbnN0IGVycm9yID0gb3B0aW9ucy5lcnJvciBhcyAoRXJyb3IgJiB7IGNvZGU/OiBudW1iZXIgfSkgfCB1bmRlZmluZWQ7XG4gICAgY29uc3QgbG9nT3B0aW9ucyA9IHtcbiAgICAgIG5hbWU6IG9wdGlvbnMubmFtZSxcbiAgICAgIGxldmVsOiBvcHRpb25zLmxldmVsLFxuICAgICAgbWVzc2FnZTogb3B0aW9ucy5tZXNzYWdlLFxuICAgICAgbGFiZWxzOiBvcHRpb25zLmxhYmVscyxcbiAgICAgIGRhdGE6IG9wdGlvbnMuZGF0YSxcbiAgICAgIGVycm9yOlxuICAgICAgICBlcnJvciA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgICAgICAgICAgc3RhY2s6IGVycm9yLnN0YWNrLFxuICAgICAgICAgICAgICBjb2RlOiBlcnJvci5jb2RlID09PSB1bmRlZmluZWQgPyBlcnJvci5jb25zdHJ1Y3Rvci5uYW1lIDogYCR7ZXJyb3IuY29kZX1gLFxuICAgICAgICAgICAgfSxcbiAgICB9O1xuXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG5vLWFycmF5LW11dGF0aW9uXG4gICAgdGhpcy5sb2dzLnB1c2gobG9nT3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgY29sbGVjdCgpOiBSZWFkb25seUFycmF5PENvbGxlY3RlZExvZ2dlckxvZ09wdGlvbnM+IHtcbiAgICBjb25zdCBsb2NhbExvZ3MgPSB0aGlzLmxvZ3M7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG5vLW9iamVjdC1tdXRhdGlvblxuICAgIHRoaXMubG9ncyA9IFtdO1xuXG4gICAgcmV0dXJuIGxvY2FsTG9ncztcbiAgfVxuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxuICBwdWJsaWMgY2xvc2UoY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBjYWxsYmFjaygpO1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNvbGxlY3RpbmdMb2dnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFFQSxNQUFhLGdCQUFnQjtJQUE3QjtRQUNFLDJEQUEyRDtRQUNuRCxTQUFJLEdBQWdDLEVBQUUsQ0FBQztJQW9DakQsQ0FBQztJQWxDUSxHQUFHLENBQUMsT0FBeUI7UUFDbEMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQWdELENBQUM7UUFDdkUsTUFBTSxVQUFVLEdBQUc7WUFDakIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO1lBQ2xCLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztZQUNwQixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87WUFDeEIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO1lBQ3RCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtZQUNsQixLQUFLLEVBQ0gsS0FBSyxLQUFLLFNBQVM7Z0JBQ2pCLENBQUMsQ0FBQyxTQUFTO2dCQUNYLENBQUMsQ0FBQztvQkFDRSxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87b0JBQ3RCLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztvQkFDbEIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFO2lCQUMxRTtTQUNSLENBQUM7UUFFRiw2Q0FBNkM7UUFDN0MsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVNLE9BQU87UUFDWixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzVCLDhDQUE4QztRQUM5QyxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUVmLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCwyQkFBMkI7SUFDcEIsS0FBSyxDQUFDLFFBQW9CO1FBQy9CLFFBQVEsRUFBRSxDQUFDO0lBQ2IsQ0FBQztDQUNGO0FBdENELDRDQXNDQyIsImZpbGUiOiJuZW8tb25lLW1vbml0b3Ivc3JjL0NvbGxlY3RpbmdMb2dnZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2xsZWN0ZWRMb2dnZXJMb2dPcHRpb25zLCBMb2dnZXIsIExvZ2dlckxvZ09wdGlvbnMgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGNsYXNzIENvbGxlY3RpbmdMb2dnZXIgaW1wbGVtZW50cyBMb2dnZXIge1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgcmVhZG9ubHktYXJyYXkgcmVhZG9ubHkta2V5d29yZFxuICBwcml2YXRlIGxvZ3M6IENvbGxlY3RlZExvZ2dlckxvZ09wdGlvbnNbXSA9IFtdO1xuXG4gIHB1YmxpYyBsb2cob3B0aW9uczogTG9nZ2VyTG9nT3B0aW9ucyk6IHZvaWQge1xuICAgIGNvbnN0IGVycm9yID0gb3B0aW9ucy5lcnJvciBhcyAoRXJyb3IgJiB7IGNvZGU/OiBudW1iZXIgfSkgfCB1bmRlZmluZWQ7XG4gICAgY29uc3QgbG9nT3B0aW9ucyA9IHtcbiAgICAgIG5hbWU6IG9wdGlvbnMubmFtZSxcbiAgICAgIGxldmVsOiBvcHRpb25zLmxldmVsLFxuICAgICAgbWVzc2FnZTogb3B0aW9ucy5tZXNzYWdlLFxuICAgICAgbGFiZWxzOiBvcHRpb25zLmxhYmVscyxcbiAgICAgIGRhdGE6IG9wdGlvbnMuZGF0YSxcbiAgICAgIGVycm9yOlxuICAgICAgICBlcnJvciA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgICAgICAgICAgc3RhY2s6IGVycm9yLnN0YWNrLFxuICAgICAgICAgICAgICBjb2RlOiBlcnJvci5jb2RlID09PSB1bmRlZmluZWQgPyBlcnJvci5jb25zdHJ1Y3Rvci5uYW1lIDogYCR7ZXJyb3IuY29kZX1gLFxuICAgICAgICAgICAgfSxcbiAgICB9O1xuXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG5vLWFycmF5LW11dGF0aW9uXG4gICAgdGhpcy5sb2dzLnB1c2gobG9nT3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgY29sbGVjdCgpOiByZWFkb25seSBDb2xsZWN0ZWRMb2dnZXJMb2dPcHRpb25zW10ge1xuICAgIGNvbnN0IGxvY2FsTG9ncyA9IHRoaXMubG9ncztcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgbm8tb2JqZWN0LW11dGF0aW9uXG4gICAgdGhpcy5sb2dzID0gW107XG5cbiAgICByZXR1cm4gbG9jYWxMb2dzO1xuICB9XG5cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gIHB1YmxpYyBjbG9zZShjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIGNhbGxiYWNrKCk7XG4gIH1cbn1cbiJdfQ==
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
/// <reference types="@neo-one/types" />
var CollectingLogger_1 = require("./CollectingLogger");

@@ -22,2 +21,2 @@ exports.CollectingLogger = CollectingLogger_1.CollectingLogger;

//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHdDQUF3QztBQUN4Qyx1REFBc0Q7QUFBN0MsOENBQUEsZ0JBQWdCLENBQUE7QUFDekIsNkNBQThEO0FBQXJELHVDQUFBLFdBQVcsQ0FBa0I7QUFDdEMsdUNBQXNDO0FBQTdCLDhCQUFBLFFBQVEsQ0FBQTtBQUNqQiwyREFBK0M7QUFBdEMsdUNBQUEsT0FBTyxDQUFBO0FBQ2hCLDJEQUFxRTtBQUE1RCw4Q0FBQSxXQUFXLENBQWtCO0FBQ3RDLHVFQUErRDtBQUF0RCx1REFBQSxpQkFBaUIsQ0FBQTtBQUMxQiwrQ0FBOEM7QUFBckMsc0NBQUEsWUFBWSxDQUFBO0FBRXJCLHdEQUE4QjtBQUM5QixrREFBd0IiLCJmaWxlIjoibmVvLW9uZS1tb25pdG9yL3NyYy9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vLyA8cmVmZXJlbmNlIHR5cGVzPVwiQG5lby1vbmUvdHlwZXNcIiAvPlxuZXhwb3J0IHsgQ29sbGVjdGluZ0xvZ2dlciB9IGZyb20gJy4vQ29sbGVjdGluZ0xvZ2dlcic7XG5leHBvcnQgeyBOb2RlTW9uaXRvciBhcyBEZWZhdWx0TW9uaXRvciB9IGZyb20gJy4vTm9kZU1vbml0b3InO1xuZXhwb3J0IHsgUmVwb3J0ZXIgfSBmcm9tICcuL1JlcG9ydGVyJztcbmV4cG9ydCB7IG1ldHJpY3MgfSBmcm9tICcuL05vT3BNZXRyaWNzRmFjdG9yeSc7XG5leHBvcnQgeyBub2RlTWV0cmljcyBhcyBkZWZhdWx0TWV0cmljcyB9IGZyb20gJy4vTm9kZU1ldHJpY3NGYWN0b3J5JztcbmV4cG9ydCB7IGNvbGxlY3RpbmdNZXRyaWNzIH0gZnJvbSAnLi9Db2xsZWN0aW5nTWV0cmljc0ZhY3RvcnknO1xuZXhwb3J0IHsgY3JlYXRlVHJhY2VyIH0gZnJvbSAnLi9jcmVhdGVUcmFjZXInO1xuXG5leHBvcnQgKiBmcm9tICcuL01vbml0b3JCYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuIl19
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVEQUFzRDtBQUE3Qyw4Q0FBQSxnQkFBZ0IsQ0FBQTtBQUN6Qiw2Q0FBOEQ7QUFBckQsdUNBQUEsV0FBVyxDQUFrQjtBQUN0Qyx1Q0FBc0M7QUFBN0IsOEJBQUEsUUFBUSxDQUFBO0FBQ2pCLDJEQUErQztBQUF0Qyx1Q0FBQSxPQUFPLENBQUE7QUFDaEIsMkRBQXFFO0FBQTVELDhDQUFBLFdBQVcsQ0FBa0I7QUFDdEMsdUVBQStEO0FBQXRELHVEQUFBLGlCQUFpQixDQUFBO0FBQzFCLCtDQUE4QztBQUFyQyxzQ0FBQSxZQUFZLENBQUE7QUFFckIsd0RBQThCO0FBQzlCLGtEQUF3QiIsImZpbGUiOiJuZW8tb25lLW1vbml0b3Ivc3JjL2luZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgQ29sbGVjdGluZ0xvZ2dlciB9IGZyb20gJy4vQ29sbGVjdGluZ0xvZ2dlcic7XG5leHBvcnQgeyBOb2RlTW9uaXRvciBhcyBEZWZhdWx0TW9uaXRvciB9IGZyb20gJy4vTm9kZU1vbml0b3InO1xuZXhwb3J0IHsgUmVwb3J0ZXIgfSBmcm9tICcuL1JlcG9ydGVyJztcbmV4cG9ydCB7IG1ldHJpY3MgfSBmcm9tICcuL05vT3BNZXRyaWNzRmFjdG9yeSc7XG5leHBvcnQgeyBub2RlTWV0cmljcyBhcyBkZWZhdWx0TWV0cmljcyB9IGZyb20gJy4vTm9kZU1ldHJpY3NGYWN0b3J5JztcbmV4cG9ydCB7IGNvbGxlY3RpbmdNZXRyaWNzIH0gZnJvbSAnLi9Db2xsZWN0aW5nTWV0cmljc0ZhY3RvcnknO1xuZXhwb3J0IHsgY3JlYXRlVHJhY2VyIH0gZnJvbSAnLi9jcmVhdGVUcmFjZXInO1xuXG5leHBvcnQgKiBmcm9tICcuL01vbml0b3JCYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuIl19

@@ -11,5 +11,5 @@ import { BucketedMetricOptions, Counter, CounterBase, Gauge, GaugeBase, Histogram, HistogramBase, Labels, MetricOptions, MetricsFactory, PercentiledMetricOptions, Summary, SummaryBase } from './types';

protected readonly metric: T | undefined;
protected readonly labelNames: ReadonlyArray<string>;
constructor(metric?: T | undefined, labelNames?: ReadonlyArray<string>);
getLabelNames(): ReadonlyArray<string>;
protected readonly labelNames: readonly string[];
constructor(metric?: T | undefined, labelNames?: readonly string[]);
getLabelNames(): readonly string[];
protected getLabels(countOrLabels?: Labels | number): Labels | number | void;

@@ -16,0 +16,0 @@ }

@@ -161,2 +161,2 @@ "use strict";

//# sourceMappingURL=data:application/json;charset=utf8;base64,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Q0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRU8sbUJBQW1CLENBQUMsT0FBaUM7UUFDM0QsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLFNBQVMsRUFBRTtZQUNyQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ25EO1FBRUQsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0MsQ0FBQztDQUNGO0FBekhELGtEQXlIQyIsImZpbGUiOiJuZW8tb25lLW1vbml0b3Ivc3JjL01ldHJpY3NGYWN0b3J5UHJveHkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCdWNrZXRlZE1ldHJpY09wdGlvbnMsXG4gIENvdW50ZXIsXG4gIENvdW50ZXJCYXNlLFxuICBHYXVnZSxcbiAgR2F1Z2VCYXNlLFxuICBIaXN0b2dyYW0sXG4gIEhpc3RvZ3JhbUJhc2UsXG4gIExhYmVscyxcbiAgTWV0cmljT3B0aW9ucyxcbiAgTWV0cmljc0ZhY3RvcnksXG4gIFBlcmNlbnRpbGVkTWV0cmljT3B0aW9ucyxcbiAgU3VtbWFyeSxcbiAgU3VtbWFyeUJhc2UsXG59IGZyb20gJy4vdHlwZXMnO1xuXG5pbXBvcnQgeyBjb252ZXJ0TWV0cmljTGFiZWwsIGNvbnZlcnRNZXRyaWNMYWJlbHMgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBNZXRyaWNDb25zdHJ1Y3Qge1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGhlbHA6IHN0cmluZztcbiAgLy8gdHNsaW50OmRpc2FibGUgcmVhZG9ubHktYXJyYXlcbiAgcmVhZG9ubHkgbGFiZWxOYW1lczogc3RyaW5nW107XG4gIHJlYWRvbmx5IGJ1Y2tldHM/OiBudW1iZXJbXTtcbiAgcmVhZG9ubHkgcGVyY2VudGlsZXM/OiBudW1iZXJbXTtcbiAgLy8gdHNsaW50OmVuYWJsZSByZWFkb25seS1hcnJheVxufVxuXG5leHBvcnQgY2xhc3MgTWV0cmljUHJveHk8VD4ge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWV0cmljOiBUIHwgdW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbGFiZWxOYW1lczogUmVhZG9ubHlBcnJheTxzdHJpbmc+O1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXRyaWM/OiBUIHwgdW5kZWZpbmVkLCBsYWJlbE5hbWVzOiBSZWFkb25seUFycmF5PHN0cmluZz4gPSBbXSkge1xuICAgIHRoaXMubWV0cmljID0gbWV0cmljO1xuICAgIHRoaXMubGFiZWxOYW1lcyA9IGxhYmVsTmFtZXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0TGFiZWxOYW1lcygpOiBSZWFkb25seUFycmF5PHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmxhYmVsTmFtZXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0TGFiZWxzKGNvdW50T3JMYWJlbHM/OiBMYWJlbHMgfCBudW1iZXIpOiBMYWJlbHMgfCBudW1iZXIgfCB2b2lkIHtcbiAgICBpZiAoY291bnRPckxhYmVscyAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBjb3VudE9yTGFiZWxzID09PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIGNvbnZlcnRNZXRyaWNMYWJlbHMoY291bnRPckxhYmVscyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvdW50T3JMYWJlbHM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvdW50ZXJQcm94eSBleHRlbmRzIE1ldHJpY1Byb3h5PENvdW50ZXJCYXNlPiBpbXBsZW1lbnRzIENvdW50ZXIge1xuICBwdWJsaWMgaW5jKGNvdW50T3JMYWJlbHM/OiBMYWJlbHMgfCBudW1iZXIsIGNvdW50PzogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubWV0cmljICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMubWV0cmljLmluYyh0aGlzLmdldExhYmVscyhjb3VudE9yTGFiZWxzKSBhcyBMYWJlbHMsIGNvdW50KTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdhdWdlUHJveHkgZXh0ZW5kcyBNZXRyaWNQcm94eTxHYXVnZUJhc2U+IGltcGxlbWVudHMgR2F1Z2Uge1xuICBwdWJsaWMgaW5jKGNvdW50T3JMYWJlbHM/OiBMYWJlbHMgfCBudW1iZXIsIGNvdW50PzogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubWV0cmljICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMubWV0cmljLmluYyh0aGlzLmdldExhYmVscyhjb3VudE9yTGFiZWxzKSBhcyBMYWJlbHMsIGNvdW50KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZGVjKGNvdW50T3JMYWJlbHM/OiBMYWJlbHMgfCBudW1iZXIsIGNvdW50PzogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubWV0cmljICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMubWV0cmljLmRlYyh0aGlzLmdldExhYmVscyhjb3VudE9yTGFiZWxzKSBhcyBMYWJlbHMsIGNvdW50KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0KGNvdW50T3JMYWJlbHM6IExhYmVscyB8IG51bWJlciwgY291bnQ/OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tZXRyaWMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5tZXRyaWMuc2V0KHRoaXMuZ2V0TGFiZWxzKGNvdW50T3JMYWJlbHMpIGFzIExhYmVscywgY291bnQgYXMgbnVtYmVyKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEhpc3RvZ3JhbVByb3h5IGV4dGVuZHMgTWV0cmljUHJveHk8SGlzdG9ncmFtQmFzZT4gaW1wbGVtZW50cyBIaXN0b2dyYW0ge1xuICBwdWJsaWMgb2JzZXJ2ZShjb3VudE9yTGFiZWxzOiBMYWJlbHMgfCBudW1iZXIsIGNvdW50PzogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubWV0cmljICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMubWV0cmljLm9ic2VydmUodGhpcy5nZXRMYWJlbHMoY291bnRPckxhYmVscykgYXMgTGFiZWxzLCBjb3VudCBhcyBudW1iZXIpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU3VtbWFyeVByb3h5IGV4dGVuZHMgTWV0cmljUHJveHk8U3VtbWFyeUJhc2U+IGltcGxlbWVudHMgU3VtbWFyeSB7XG4gIHB1YmxpYyBvYnNlcnZlKGNvdW50T3JMYWJlbHM6IExhYmVscyB8IG51bWJlciwgY291bnQ/OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tZXRyaWMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5tZXRyaWMub2JzZXJ2ZSh0aGlzLmdldExhYmVscyhjb3VudE9yTGFiZWxzKSBhcyBMYWJlbHMsIGNvdW50IGFzIG51bWJlcik7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNZXRyaWNzRmFjdG9yeVByb3h5IGltcGxlbWVudHMgTWV0cmljc0ZhY3Rvcnkge1xuICBwcm90ZWN0ZWQgbXV0YWJsZUNvdW50ZXJzOiB7IFtLIGluIHN0cmluZ10/OiBDb3VudGVyIH0gPSB7fTtcbiAgcHJvdGVjdGVkIG11dGFibGVIaXN0b2dyYW1zOiB7IFtLIGluIHN0cmluZ10/OiBIaXN0b2dyYW0gfSA9IHt9O1xuICBwcm90ZWN0ZWQgbXV0YWJsZUdhdWdlczogeyBbSyBpbiBzdHJpbmddPzogR2F1Z2UgfSA9IHt9O1xuICBwcm90ZWN0ZWQgbXV0YWJsZVN1bW1hcmllczogeyBbSyBpbiBzdHJpbmddPzogU3VtbWFyeSB9ID0ge307XG5cbiAgcHJpdmF0ZSBtdXRhYmxlRmFjdG9yeTogTWV0cmljc0ZhY3RvcnkgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIHJlc2V0X2ZvclRlc3QoKTogdm9pZCB7XG4gICAgdGhpcy5tdXRhYmxlQ291bnRlcnMgPSB7fTtcbiAgICB0aGlzLm11dGFibGVIaXN0b2dyYW1zID0ge307XG4gICAgdGhpcy5tdXRhYmxlR2F1Z2VzID0ge307XG4gICAgdGhpcy5tdXRhYmxlU3VtbWFyaWVzID0ge307XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlQ291bnRlcihvcHRpb25zOiBNZXRyaWNPcHRpb25zKTogQ291bnRlciB7XG4gICAgbGV0IGNvdW50ZXIgPSB0aGlzLm11dGFibGVDb3VudGVyc1tvcHRpb25zLm5hbWVdO1xuICAgIGlmIChjb3VudGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvdW50ZXIgPSB0aGlzLmNyZWF0ZUNvdW50ZXJIZWxwZXIob3B0aW9ucyk7XG4gICAgICB0aGlzLm11dGFibGVDb3VudGVyc1tvcHRpb25zLm5hbWVdID0gY291bnRlcjtcbiAgICB9XG5cbiAgICByZXR1cm4gY291bnRlcjtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVHYXVnZShvcHRpb25zOiBNZXRyaWNPcHRpb25zKTogR2F1Z2Uge1xuICAgIGxldCBnYXVnZSA9IHRoaXMubXV0YWJsZUdhdWdlc1tvcHRpb25zLm5hbWVdO1xuICAgIGlmIChnYXVnZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBnYXVnZSA9IHRoaXMuY3JlYXRlR2F1Z2VIZWxwZXIob3B0aW9ucyk7XG4gICAgICB0aGlzLm11dGFibGVHYXVnZXNbb3B0aW9ucy5uYW1lXSA9IGdhdWdlO1xuICAgIH1cblxuICAgIHJldHVybiBnYXVnZTtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVIaXN0b2dyYW0ob3B0aW9uczogTWV0cmljT3B0aW9ucyk6IEhpc3RvZ3JhbSB7XG4gICAgbGV0IGhpc3RvZ3JhbSA9IHRoaXMubXV0YWJsZUhpc3RvZ3JhbXNbb3B0aW9ucy5uYW1lXTtcbiAgICBpZiAoaGlzdG9ncmFtID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGhpc3RvZ3JhbSA9IHRoaXMuY3JlYXRlSGlzdG9ncmFtSGVscGVyKG9wdGlvbnMpO1xuICAgICAgdGhpcy5tdXRhYmxlSGlzdG9ncmFtc1tvcHRpb25zLm5hbWVdID0gaGlzdG9ncmFtO1xuICAgIH1cblxuICAgIHJldHVybiBoaXN0b2dyYW07XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlU3VtbWFyeShvcHRpb25zOiBNZXRyaWNPcHRpb25zKTogU3VtbWFyeSB7XG4gICAgbGV0IHN1bW1hcnkgPSB0aGlzLm11dGFibGVTdW1tYXJpZXNbb3B0aW9ucy5uYW1lXTtcbiAgICBpZiAoc3VtbWFyeSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBzdW1tYXJ5ID0gdGhpcy5jcmVhdGVTdW1tYXJ5SGVscGVyKG9wdGlvbnMpO1xuICAgICAgdGhpcy5tdXRhYmxlU3VtbWFyaWVzW29wdGlvbnMubmFtZV0gPSBzdW1tYXJ5O1xuICAgIH1cblxuICAgIHJldHVybiBzdW1tYXJ5O1xuICB9XG5cbiAgcHVibGljIHNldEZhY3RvcnkobXV0YWJsZUZhY3Rvcnk6IE1ldHJpY3NGYWN0b3J5KTogdm9pZCB7XG4gICAgdGhpcy5tdXRhYmxlRmFjdG9yeSA9IG11dGFibGVGYWN0b3J5O1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZUNvdW50ZXJJbnRlcm5hbChfb3B0aW9uczogTWV0cmljT3B0aW9ucyk6IENvdW50ZXIge1xuICAgIHJldHVybiBuZXcgQ291bnRlclByb3h5KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlR2F1Z2VJbnRlcm5hbChfb3B0aW9uczogTWV0cmljT3B0aW9ucyk6IEdhdWdlIHtcbiAgICByZXR1cm4gbmV3IEdhdWdlUHJveHkoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjcmVhdGVIaXN0b2dyYW1JbnRlcm5hbChfb3B0aW9uczogQnVja2V0ZWRNZXRyaWNPcHRpb25zKTogSGlzdG9ncmFtIHtcbiAgICByZXR1cm4gbmV3IEhpc3RvZ3JhbVByb3h5KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlU3VtbWFyeUludGVybmFsKF9vcHRpb25zOiBQZXJjZW50aWxlZE1ldHJpY09wdGlvbnMpOiBTdW1tYXJ5IHtcbiAgICByZXR1cm4gbmV3IFN1bW1hcnlQcm94eSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldE1ldHJpY0NvbnN0cnVjdChcbiAgICBvcHRpb25zOiBNZXRyaWNPcHRpb25zIHwgQnVja2V0ZWRNZXRyaWNPcHRpb25zIHwgUGVyY2VudGlsZWRNZXRyaWNPcHRpb25zLFxuICApOiBNZXRyaWNDb25zdHJ1Y3Qge1xuICAgIGNvbnN0IHsgbmFtZSwgaGVscCA9ICdwbGFjZWhvbGRlcicsIGxhYmVsTmFtZXM6IGxhYmVsTmFtZXNJbiA9IFtdIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IGxhYmVsTmFtZXMgPSBsYWJlbE5hbWVzSW4ubWFwKGNvbnZlcnRNZXRyaWNMYWJlbCk7XG4gICAgbGV0IGNvbnN0cnVjdDogTWV0cmljQ29uc3RydWN0ID0geyBuYW1lLCBoZWxwLCBsYWJlbE5hbWVzIH07XG4gICAgaWYgKCdwZXJjZW50aWxlcycgaW4gb3B0aW9ucyAmJiBvcHRpb25zLnBlcmNlbnRpbGVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0cnVjdCA9IHsgbmFtZSwgaGVscCwgbGFiZWxOYW1lcywgcGVyY2VudGlsZXM6IFsuLi5vcHRpb25zLnBlcmNlbnRpbGVzXSB9O1xuICAgIH0gZWxzZSBpZiAoJ2J1Y2tldHMnIGluIG9wdGlvbnMgJiYgb3B0aW9ucy5idWNrZXRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0cnVjdCA9IHsgbmFtZSwgaGVscCwgbGFiZWxOYW1lcywgYnVja2V0czogWy4uLm9wdGlvbnMuYnVja2V0c10gfTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29uc3RydWN0O1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVDb3VudGVySGVscGVyKG9wdGlvbnM6IE1ldHJpY09wdGlvbnMpOiBDb3VudGVyIHtcbiAgICBpZiAodGhpcy5tdXRhYmxlRmFjdG9yeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5tdXRhYmxlRmFjdG9yeS5jcmVhdGVDb3VudGVyKG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNyZWF0ZUNvdW50ZXJJbnRlcm5hbChvcHRpb25zKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlR2F1Z2VIZWxwZXIob3B0aW9uczogTWV0cmljT3B0aW9ucyk6IEdhdWdlIHtcbiAgICBpZiAodGhpcy5tdXRhYmxlRmFjdG9yeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5tdXRhYmxlRmFjdG9yeS5jcmVhdGVHYXVnZShvcHRpb25zKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jcmVhdGVHYXVnZUludGVybmFsKG9wdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVIaXN0b2dyYW1IZWxwZXIob3B0aW9uczogQnVja2V0ZWRNZXRyaWNPcHRpb25zKTogSGlzdG9ncmFtIHtcbiAgICBpZiAodGhpcy5tdXRhYmxlRmFjdG9yeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5tdXRhYmxlRmFjdG9yeS5jcmVhdGVIaXN0b2dyYW0ob3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlSGlzdG9ncmFtSW50ZXJuYWwob3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVN1bW1hcnlIZWxwZXIob3B0aW9uczogUGVyY2VudGlsZWRNZXRyaWNPcHRpb25zKTogU3VtbWFyeSB7XG4gICAgaWYgKHRoaXMubXV0YWJsZUZhY3RvcnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRoaXMubXV0YWJsZUZhY3RvcnkuY3JlYXRlU3VtbWFyeShvcHRpb25zKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jcmVhdGVTdW1tYXJ5SW50ZXJuYWwob3B0aW9ucyk7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1ldHJpY3NGYWN0b3J5UHJveHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFnQkEsbUNBQWtFO0FBWWxFLE1BQWEsV0FBVztJQUl0QixZQUFtQixNQUFzQixFQUFFLGFBQWdDLEVBQUU7UUFDM0UsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDL0IsQ0FBQztJQUVNLGFBQWE7UUFDbEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFUyxTQUFTLENBQUMsYUFBK0I7UUFDakQsSUFBSSxhQUFhLEtBQUssU0FBUyxJQUFJLE9BQU8sYUFBYSxLQUFLLFFBQVEsRUFBRTtZQUNwRSxPQUFPLDJCQUFtQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQzNDO1FBRUQsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztDQUNGO0FBcEJELGtDQW9CQztBQUVELE1BQWEsWUFBYSxTQUFRLFdBQXdCO0lBQ2pELEdBQUcsQ0FBQyxhQUErQixFQUFFLEtBQWM7UUFDeEQsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLFNBQVMsRUFBRTtZQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ2pFO0lBQ0gsQ0FBQztDQUNGO0FBTkQsb0NBTUM7QUFFRCxNQUFhLFVBQVcsU0FBUSxXQUFzQjtJQUM3QyxHQUFHLENBQUMsYUFBK0IsRUFBRSxLQUFjO1FBQ3hELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUU7WUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNqRTtJQUNILENBQUM7SUFFTSxHQUFHLENBQUMsYUFBK0IsRUFBRSxLQUFjO1FBQ3hELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUU7WUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNqRTtJQUNILENBQUM7SUFFTSxHQUFHLENBQUMsYUFBOEIsRUFBRSxLQUFjO1FBQ3ZELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUU7WUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQVcsRUFBRSxLQUFlLENBQUMsQ0FBQztTQUMzRTtJQUNILENBQUM7Q0FDRjtBQWxCRCxnQ0FrQkM7QUFFRCxNQUFhLGNBQWUsU0FBUSxXQUEwQjtJQUNyRCxPQUFPLENBQUMsYUFBOEIsRUFBRSxLQUFjO1FBQzNELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUU7WUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQVcsRUFBRSxLQUFlLENBQUMsQ0FBQztTQUMvRTtJQUNILENBQUM7Q0FDRjtBQU5ELHdDQU1DO0FBRUQsTUFBYSxZQUFhLFNBQVEsV0FBd0I7SUFDakQsT0FBTyxDQUFDLGFBQThCLEVBQUUsS0FBYztRQUMzRCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssU0FBUyxFQUFFO1lBQzdCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFXLEVBQUUsS0FBZSxDQUFDLENBQUM7U0FDL0U7SUFDSCxDQUFDO0NBQ0Y7QUFORCxvQ0FNQztBQUVELE1BQWEsbUJBQW1CO0lBQWhDO1FBQ1ksb0JBQWUsR0FBZ0MsRUFBRSxDQUFDO1FBQ2xELHNCQUFpQixHQUFrQyxFQUFFLENBQUM7UUFDdEQsa0JBQWEsR0FBOEIsRUFBRSxDQUFDO1FBQzlDLHFCQUFnQixHQUFnQyxFQUFFLENBQUM7SUFxSC9ELENBQUM7SUFqSFEsYUFBYTtRQUNsQixJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVNLGFBQWEsQ0FBQyxPQUFzQjtRQUN6QyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqRCxJQUFJLE9BQU8sS0FBSyxTQUFTLEVBQUU7WUFDekIsT0FBTyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM1QyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUM7U0FDOUM7UUFFRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRU0sV0FBVyxDQUFDLE9BQXNCO1FBQ3ZDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdDLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtZQUN2QixLQUFLLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQztTQUMxQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVNLGVBQWUsQ0FBQyxPQUFzQjtRQUMzQyxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JELElBQUksU0FBUyxLQUFLLFNBQVMsRUFBRTtZQUMzQixTQUFTLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2hELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDO1NBQ2xEO1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVNLGFBQWEsQ0FBQyxPQUFzQjtRQUN6QyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xELElBQUksT0FBTyxLQUFLLFNBQVMsRUFBRTtZQUN6QixPQUFPLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDO1NBQy9DO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVNLFVBQVUsQ0FBQyxjQUE4QjtRQUM5QyxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztJQUN2QyxDQUFDO0lBRVMscUJBQXFCLENBQUMsUUFBdUI7UUFDckQsT0FBTyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFUyxtQkFBbUIsQ0FBQyxRQUF1QjtRQUNuRCxPQUFPLElBQUksVUFBVSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVTLHVCQUF1QixDQUFDLFFBQStCO1FBQy9ELE9BQU8sSUFBSSxjQUFjLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRVMscUJBQXFCLENBQUMsUUFBa0M7UUFDaEUsT0FBTyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFUyxrQkFBa0IsQ0FDMUIsT0FBeUU7UUFFekUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEdBQUcsYUFBYSxFQUFFLFVBQVUsRUFBRSxZQUFZLEdBQUcsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDO1FBQzlFLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsMEJBQWtCLENBQUMsQ0FBQztRQUN4RCxJQUFJLFNBQVMsR0FBb0IsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDO1FBQzVELElBQUksYUFBYSxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsV0FBVyxLQUFLLFNBQVMsRUFBRTtZQUNqRSxTQUFTLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1NBQy9FO2FBQU0sSUFBSSxTQUFTLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFO1lBQ2hFLFNBQVMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7U0FDdkU7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRU8sbUJBQW1CLENBQUMsT0FBc0I7UUFDaEQsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLFNBQVMsRUFBRTtZQUNyQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ25EO1FBRUQsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVPLGlCQUFpQixDQUFDLE9BQXNCO1FBQzlDLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxTQUFTLEVBQUU7WUFDckMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNqRDtRQUVELE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxPQUE4QjtRQUMxRCxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssU0FBUyxFQUFFO1lBQ3JDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDckQ7UUFFRCxPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRU8sbUJBQW1CLENBQUMsT0FBaUM7UUFDM0QsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLFNBQVMsRUFBRTtZQUNyQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ25EO1FBRUQsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0MsQ0FBQztDQUNGO0FBekhELGtEQXlIQyIsImZpbGUiOiJuZW8tb25lLW1vbml0b3Ivc3JjL01ldHJpY3NGYWN0b3J5UHJveHkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCdWNrZXRlZE1ldHJpY09wdGlvbnMsXG4gIENvdW50ZXIsXG4gIENvdW50ZXJCYXNlLFxuICBHYXVnZSxcbiAgR2F1Z2VCYXNlLFxuICBIaXN0b2dyYW0sXG4gIEhpc3RvZ3JhbUJhc2UsXG4gIExhYmVscyxcbiAgTWV0cmljT3B0aW9ucyxcbiAgTWV0cmljc0ZhY3RvcnksXG4gIFBlcmNlbnRpbGVkTWV0cmljT3B0aW9ucyxcbiAgU3VtbWFyeSxcbiAgU3VtbWFyeUJhc2UsXG59IGZyb20gJy4vdHlwZXMnO1xuXG5pbXBvcnQgeyBjb252ZXJ0TWV0cmljTGFiZWwsIGNvbnZlcnRNZXRyaWNMYWJlbHMgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBNZXRyaWNDb25zdHJ1Y3Qge1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGhlbHA6IHN0cmluZztcbiAgLy8gdHNsaW50OmRpc2FibGUgcmVhZG9ubHktYXJyYXlcbiAgcmVhZG9ubHkgbGFiZWxOYW1lczogc3RyaW5nW107XG4gIHJlYWRvbmx5IGJ1Y2tldHM/OiBudW1iZXJbXTtcbiAgcmVhZG9ubHkgcGVyY2VudGlsZXM/OiBudW1iZXJbXTtcbiAgLy8gdHNsaW50OmVuYWJsZSByZWFkb25seS1hcnJheVxufVxuXG5leHBvcnQgY2xhc3MgTWV0cmljUHJveHk8VD4ge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWV0cmljOiBUIHwgdW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbGFiZWxOYW1lczogcmVhZG9ubHkgc3RyaW5nW107XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKG1ldHJpYz86IFQgfCB1bmRlZmluZWQsIGxhYmVsTmFtZXM6IHJlYWRvbmx5IHN0cmluZ1tdID0gW10pIHtcbiAgICB0aGlzLm1ldHJpYyA9IG1ldHJpYztcbiAgICB0aGlzLmxhYmVsTmFtZXMgPSBsYWJlbE5hbWVzO1xuICB9XG5cbiAgcHVibGljIGdldExhYmVsTmFtZXMoKTogcmVhZG9ubHkgc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmxhYmVsTmFtZXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0TGFiZWxzKGNvdW50T3JMYWJlbHM/OiBMYWJlbHMgfCBudW1iZXIpOiBMYWJlbHMgfCBudW1iZXIgfCB2b2lkIHtcbiAgICBpZiAoY291bnRPckxhYmVscyAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBjb3VudE9yTGFiZWxzID09PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIGNvbnZlcnRNZXRyaWNMYWJlbHMoY291bnRPckxhYmVscyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvdW50T3JMYWJlbHM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvdW50ZXJQcm94eSBleHRlbmRzIE1ldHJpY1Byb3h5PENvdW50ZXJCYXNlPiBpbXBsZW1lbnRzIENvdW50ZXIge1xuICBwdWJsaWMgaW5jKGNvdW50T3JMYWJlbHM/OiBMYWJlbHMgfCBudW1iZXIsIGNvdW50PzogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubWV0cmljICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMubWV0cmljLmluYyh0aGlzLmdldExhYmVscyhjb3VudE9yTGFiZWxzKSBhcyBMYWJlbHMsIGNvdW50KTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdhdWdlUHJveHkgZXh0ZW5kcyBNZXRyaWNQcm94eTxHYXVnZUJhc2U+IGltcGxlbWVudHMgR2F1Z2Uge1xuICBwdWJsaWMgaW5jKGNvdW50T3JMYWJlbHM/OiBMYWJlbHMgfCBudW1iZXIsIGNvdW50PzogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubWV0cmljICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMubWV0cmljLmluYyh0aGlzLmdldExhYmVscyhjb3VudE9yTGFiZWxzKSBhcyBMYWJlbHMsIGNvdW50KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZGVjKGNvdW50T3JMYWJlbHM/OiBMYWJlbHMgfCBudW1iZXIsIGNvdW50PzogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubWV0cmljICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMubWV0cmljLmRlYyh0aGlzLmdldExhYmVscyhjb3VudE9yTGFiZWxzKSBhcyBMYWJlbHMsIGNvdW50KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0KGNvdW50T3JMYWJlbHM6IExhYmVscyB8IG51bWJlciwgY291bnQ/OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tZXRyaWMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5tZXRyaWMuc2V0KHRoaXMuZ2V0TGFiZWxzKGNvdW50T3JMYWJlbHMpIGFzIExhYmVscywgY291bnQgYXMgbnVtYmVyKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEhpc3RvZ3JhbVByb3h5IGV4dGVuZHMgTWV0cmljUHJveHk8SGlzdG9ncmFtQmFzZT4gaW1wbGVtZW50cyBIaXN0b2dyYW0ge1xuICBwdWJsaWMgb2JzZXJ2ZShjb3VudE9yTGFiZWxzOiBMYWJlbHMgfCBudW1iZXIsIGNvdW50PzogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubWV0cmljICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMubWV0cmljLm9ic2VydmUodGhpcy5nZXRMYWJlbHMoY291bnRPckxhYmVscykgYXMgTGFiZWxzLCBjb3VudCBhcyBudW1iZXIpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU3VtbWFyeVByb3h5IGV4dGVuZHMgTWV0cmljUHJveHk8U3VtbWFyeUJhc2U+IGltcGxlbWVudHMgU3VtbWFyeSB7XG4gIHB1YmxpYyBvYnNlcnZlKGNvdW50T3JMYWJlbHM6IExhYmVscyB8IG51bWJlciwgY291bnQ/OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tZXRyaWMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5tZXRyaWMub2JzZXJ2ZSh0aGlzLmdldExhYmVscyhjb3VudE9yTGFiZWxzKSBhcyBMYWJlbHMsIGNvdW50IGFzIG51bWJlcik7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNZXRyaWNzRmFjdG9yeVByb3h5IGltcGxlbWVudHMgTWV0cmljc0ZhY3Rvcnkge1xuICBwcm90ZWN0ZWQgbXV0YWJsZUNvdW50ZXJzOiB7IFtLIGluIHN0cmluZ10/OiBDb3VudGVyIH0gPSB7fTtcbiAgcHJvdGVjdGVkIG11dGFibGVIaXN0b2dyYW1zOiB7IFtLIGluIHN0cmluZ10/OiBIaXN0b2dyYW0gfSA9IHt9O1xuICBwcm90ZWN0ZWQgbXV0YWJsZUdhdWdlczogeyBbSyBpbiBzdHJpbmddPzogR2F1Z2UgfSA9IHt9O1xuICBwcm90ZWN0ZWQgbXV0YWJsZVN1bW1hcmllczogeyBbSyBpbiBzdHJpbmddPzogU3VtbWFyeSB9ID0ge307XG5cbiAgcHJpdmF0ZSBtdXRhYmxlRmFjdG9yeTogTWV0cmljc0ZhY3RvcnkgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIHJlc2V0X2ZvclRlc3QoKTogdm9pZCB7XG4gICAgdGhpcy5tdXRhYmxlQ291bnRlcnMgPSB7fTtcbiAgICB0aGlzLm11dGFibGVIaXN0b2dyYW1zID0ge307XG4gICAgdGhpcy5tdXRhYmxlR2F1Z2VzID0ge307XG4gICAgdGhpcy5tdXRhYmxlU3VtbWFyaWVzID0ge307XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlQ291bnRlcihvcHRpb25zOiBNZXRyaWNPcHRpb25zKTogQ291bnRlciB7XG4gICAgbGV0IGNvdW50ZXIgPSB0aGlzLm11dGFibGVDb3VudGVyc1tvcHRpb25zLm5hbWVdO1xuICAgIGlmIChjb3VudGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvdW50ZXIgPSB0aGlzLmNyZWF0ZUNvdW50ZXJIZWxwZXIob3B0aW9ucyk7XG4gICAgICB0aGlzLm11dGFibGVDb3VudGVyc1tvcHRpb25zLm5hbWVdID0gY291bnRlcjtcbiAgICB9XG5cbiAgICByZXR1cm4gY291bnRlcjtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVHYXVnZShvcHRpb25zOiBNZXRyaWNPcHRpb25zKTogR2F1Z2Uge1xuICAgIGxldCBnYXVnZSA9IHRoaXMubXV0YWJsZUdhdWdlc1tvcHRpb25zLm5hbWVdO1xuICAgIGlmIChnYXVnZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBnYXVnZSA9IHRoaXMuY3JlYXRlR2F1Z2VIZWxwZXIob3B0aW9ucyk7XG4gICAgICB0aGlzLm11dGFibGVHYXVnZXNbb3B0aW9ucy5uYW1lXSA9IGdhdWdlO1xuICAgIH1cblxuICAgIHJldHVybiBnYXVnZTtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVIaXN0b2dyYW0ob3B0aW9uczogTWV0cmljT3B0aW9ucyk6IEhpc3RvZ3JhbSB7XG4gICAgbGV0IGhpc3RvZ3JhbSA9IHRoaXMubXV0YWJsZUhpc3RvZ3JhbXNbb3B0aW9ucy5uYW1lXTtcbiAgICBpZiAoaGlzdG9ncmFtID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGhpc3RvZ3JhbSA9IHRoaXMuY3JlYXRlSGlzdG9ncmFtSGVscGVyKG9wdGlvbnMpO1xuICAgICAgdGhpcy5tdXRhYmxlSGlzdG9ncmFtc1tvcHRpb25zLm5hbWVdID0gaGlzdG9ncmFtO1xuICAgIH1cblxuICAgIHJldHVybiBoaXN0b2dyYW07XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlU3VtbWFyeShvcHRpb25zOiBNZXRyaWNPcHRpb25zKTogU3VtbWFyeSB7XG4gICAgbGV0IHN1bW1hcnkgPSB0aGlzLm11dGFibGVTdW1tYXJpZXNbb3B0aW9ucy5uYW1lXTtcbiAgICBpZiAoc3VtbWFyeSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBzdW1tYXJ5ID0gdGhpcy5jcmVhdGVTdW1tYXJ5SGVscGVyKG9wdGlvbnMpO1xuICAgICAgdGhpcy5tdXRhYmxlU3VtbWFyaWVzW29wdGlvbnMubmFtZV0gPSBzdW1tYXJ5O1xuICAgIH1cblxuICAgIHJldHVybiBzdW1tYXJ5O1xuICB9XG5cbiAgcHVibGljIHNldEZhY3RvcnkobXV0YWJsZUZhY3Rvcnk6IE1ldHJpY3NGYWN0b3J5KTogdm9pZCB7XG4gICAgdGhpcy5tdXRhYmxlRmFjdG9yeSA9IG11dGFibGVGYWN0b3J5O1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZUNvdW50ZXJJbnRlcm5hbChfb3B0aW9uczogTWV0cmljT3B0aW9ucyk6IENvdW50ZXIge1xuICAgIHJldHVybiBuZXcgQ291bnRlclByb3h5KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlR2F1Z2VJbnRlcm5hbChfb3B0aW9uczogTWV0cmljT3B0aW9ucyk6IEdhdWdlIHtcbiAgICByZXR1cm4gbmV3IEdhdWdlUHJveHkoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjcmVhdGVIaXN0b2dyYW1JbnRlcm5hbChfb3B0aW9uczogQnVja2V0ZWRNZXRyaWNPcHRpb25zKTogSGlzdG9ncmFtIHtcbiAgICByZXR1cm4gbmV3IEhpc3RvZ3JhbVByb3h5KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlU3VtbWFyeUludGVybmFsKF9vcHRpb25zOiBQZXJjZW50aWxlZE1ldHJpY09wdGlvbnMpOiBTdW1tYXJ5IHtcbiAgICByZXR1cm4gbmV3IFN1bW1hcnlQcm94eSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldE1ldHJpY0NvbnN0cnVjdChcbiAgICBvcHRpb25zOiBNZXRyaWNPcHRpb25zIHwgQnVja2V0ZWRNZXRyaWNPcHRpb25zIHwgUGVyY2VudGlsZWRNZXRyaWNPcHRpb25zLFxuICApOiBNZXRyaWNDb25zdHJ1Y3Qge1xuICAgIGNvbnN0IHsgbmFtZSwgaGVscCA9ICdwbGFjZWhvbGRlcicsIGxhYmVsTmFtZXM6IGxhYmVsTmFtZXNJbiA9IFtdIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IGxhYmVsTmFtZXMgPSBsYWJlbE5hbWVzSW4ubWFwKGNvbnZlcnRNZXRyaWNMYWJlbCk7XG4gICAgbGV0IGNvbnN0cnVjdDogTWV0cmljQ29uc3RydWN0ID0geyBuYW1lLCBoZWxwLCBsYWJlbE5hbWVzIH07XG4gICAgaWYgKCdwZXJjZW50aWxlcycgaW4gb3B0aW9ucyAmJiBvcHRpb25zLnBlcmNlbnRpbGVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0cnVjdCA9IHsgbmFtZSwgaGVscCwgbGFiZWxOYW1lcywgcGVyY2VudGlsZXM6IFsuLi5vcHRpb25zLnBlcmNlbnRpbGVzXSB9O1xuICAgIH0gZWxzZSBpZiAoJ2J1Y2tldHMnIGluIG9wdGlvbnMgJiYgb3B0aW9ucy5idWNrZXRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0cnVjdCA9IHsgbmFtZSwgaGVscCwgbGFiZWxOYW1lcywgYnVja2V0czogWy4uLm9wdGlvbnMuYnVja2V0c10gfTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29uc3RydWN0O1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVDb3VudGVySGVscGVyKG9wdGlvbnM6IE1ldHJpY09wdGlvbnMpOiBDb3VudGVyIHtcbiAgICBpZiAodGhpcy5tdXRhYmxlRmFjdG9yeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5tdXRhYmxlRmFjdG9yeS5jcmVhdGVDb3VudGVyKG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNyZWF0ZUNvdW50ZXJJbnRlcm5hbChvcHRpb25zKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlR2F1Z2VIZWxwZXIob3B0aW9uczogTWV0cmljT3B0aW9ucyk6IEdhdWdlIHtcbiAgICBpZiAodGhpcy5tdXRhYmxlRmFjdG9yeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5tdXRhYmxlRmFjdG9yeS5jcmVhdGVHYXVnZShvcHRpb25zKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jcmVhdGVHYXVnZUludGVybmFsKG9wdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVIaXN0b2dyYW1IZWxwZXIob3B0aW9uczogQnVja2V0ZWRNZXRyaWNPcHRpb25zKTogSGlzdG9ncmFtIHtcbiAgICBpZiAodGhpcy5tdXRhYmxlRmFjdG9yeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5tdXRhYmxlRmFjdG9yeS5jcmVhdGVIaXN0b2dyYW0ob3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlSGlzdG9ncmFtSW50ZXJuYWwob3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVN1bW1hcnlIZWxwZXIob3B0aW9uczogUGVyY2VudGlsZWRNZXRyaWNPcHRpb25zKTogU3VtbWFyeSB7XG4gICAgaWYgKHRoaXMubXV0YWJsZUZhY3RvcnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRoaXMubXV0YWJsZUZhY3RvcnkuY3JlYXRlU3VtbWFyeShvcHRpb25zKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jcmVhdGVTdW1tYXJ5SW50ZXJuYWwob3B0aW9ucyk7XG4gIH1cbn1cbiJdfQ==

@@ -20,3 +20,3 @@ /// <reference types="node" />

export interface TracerStartSpanOptions {
readonly references?: ReadonlyArray<TracerReference>;
readonly references?: readonly TracerReference[];
readonly tags?: object;

@@ -23,0 +23,0 @@ readonly startTime?: number;

@@ -466,2 +466,2 @@ "use strict";

//# sourceMappingURL=data:application/json;charset=utf8;base64,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LElBQUksQ0FBQyxXQUFXLEVBQUssU0FBUyxDQUFFLENBQUM7U0FDcEQ7UUFFRCxrQ0FBa0M7UUFDbEMsT0FBTyxJQUFLLElBQUksQ0FBQyxXQUFtQixDQUFDO1lBQ25DLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixTQUFTLEVBQUUsU0FBUyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUztZQUMvRCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztZQUNiLE1BQU0sRUFBRSxZQUFZO1lBQ3BCLElBQUksRUFBRSxVQUFVO1lBQ2hCLElBQUksRUFBRSxJQUFJLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBQzNDLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMvQixhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7U0FDbEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBdGpCRCxrQ0FzakJDIiwiZmlsZSI6Im5lby1vbmUtbW9uaXRvci9zcmMvTW9uaXRvckJhc2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmNvbWluZ01lc3NhZ2UgfSBmcm9tICdodHRwJztcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tICdrb2EnO1xuXG5pbXBvcnQgeyB1dGlscyB9IGZyb20gJ0BuZW8tb25lL3V0aWxzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7IFJlcG9ydEhhbmRsZXIgfSBmcm9tICcuL1JlcG9ydEhhbmRsZXInO1xuaW1wb3J0IHtcbiAgQ2FwdHVyZUxvZ09wdGlvbnMsXG4gIENhcHR1cmVNb25pdG9yLFxuICBDYXB0dXJlU3BhbkxvZ09wdGlvbnMsXG4gIENhcHR1cmVTcGFuT3B0aW9ucyxcbiAgQ2FycmllcixcbiAgQ291bnRlcixcbiAgRm9ybWF0LFxuICBIaXN0b2dyYW0sXG4gIEtub3duTGFiZWwsXG4gIExhYmVscyxcbiAgTG9nRXJyb3JPcHRpb25zLFxuICBMb2dnZXIsXG4gIExvZ0xldmVsLFxuICBMb2dMZXZlbE9wdGlvbixcbiAgTG9nT3B0aW9ucyxcbiAgTWV0cmljLFxuICBNb25pdG9yLFxuICBSZXBvcnQsXG4gIFNwYW4sXG4gIFNwYW5Db250ZXh0LFxuICBTcGFuT3B0aW9ucyxcbiAgU3VtbWFyeSxcbn0gZnJvbSAnLi90eXBlcyc7XG5cbmltcG9ydCB7IGNyZWF0ZVRyYWNlciB9IGZyb20gJy4vY3JlYXRlVHJhY2VyJztcbmltcG9ydCB7IGNvbnZlcnRUYWdMYWJlbHMgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBGdWxsTG9nTGV2ZWxPcHRpb24ge1xuICByZWFkb25seSBsb2c6IExvZ0xldmVsO1xuICByZWFkb25seSBzcGFuOiBMb2dMZXZlbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFjZXJTcGFuIHtcbiAgcmVhZG9ubHkgbG9nOiAoZGF0YTogb2JqZWN0KSA9PiB2b2lkO1xuICByZWFkb25seSBzZXRUYWc6IChuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuKSA9PiB2b2lkO1xuICByZWFkb25seSBmaW5pc2g6IChmaW5pc2hUaW1lPzogbnVtYmVyKSA9PiB2b2lkO1xuICByZWFkb25seSBjb250ZXh0OiAoKSA9PiBTcGFuQ29udGV4dDtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgVHJhY2VyUmVmZXJlbmNlIHtcbiAgcmVhZG9ubHkgX190cmFjZXI6IHVuZGVmaW5lZDtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgVHJhY2VyU3RhcnRTcGFuT3B0aW9ucyB7XG4gIHJlYWRvbmx5IHJlZmVyZW5jZXM/OiBSZWFkb25seUFycmF5PFRyYWNlclJlZmVyZW5jZT47XG4gIHJlYWRvbmx5IHRhZ3M/OiBvYmplY3Q7XG4gIHJlYWRvbmx5IHN0YXJ0VGltZT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFjZXIge1xuICByZWFkb25seSBzdGFydFNwYW46IChuYW1lOiBzdHJpbmcsIG9wdGlvbnM/OiBUcmFjZXJTdGFydFNwYW5PcHRpb25zKSA9PiBUcmFjZXJTcGFuO1xuICByZWFkb25seSBjaGlsZE9mOiAoc3BhbjogU3BhbkNvbnRleHQgfCBUcmFjZXJTcGFuKSA9PiBUcmFjZXJSZWZlcmVuY2U7XG4gIHJlYWRvbmx5IGZvbGxvd3NGcm9tOiAoc3BhbjogU3BhbkNvbnRleHQgfCBUcmFjZXJTcGFuKSA9PiBUcmFjZXJSZWZlcmVuY2U7XG4gIHJlYWRvbmx5IGV4dHJhY3Q6IChmb3JtYXQ6IEZvcm1hdCwgY2FycmllcjogQ2FycmllcikgPT4gU3BhbkNvbnRleHQgfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IGluamVjdDogKGNvbnRleHQ6IFNwYW5Db250ZXh0LCBmb3JtYXQ6IEZvcm1hdCwgY2FycmllcjogQ2FycmllcikgPT4gdm9pZDtcbiAgcmVhZG9ubHkgY2xvc2U6IChjYWxsYmFjazogKCkgPT4gdm9pZCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IHR5cGUgTm93ID0gKCkgPT4gbnVtYmVyO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNwYW5EYXRhIHtcbiAgcmVhZG9ubHkgbWV0cmljPzoge1xuICAgIHJlYWRvbmx5IHRvdGFsOiBIaXN0b2dyYW0gfCBTdW1tYXJ5O1xuICAgIHJlYWRvbmx5IGVycm9yOiBDb3VudGVyO1xuICB9O1xuICByZWFkb25seSB0aW1lOiBudW1iZXI7XG4gIHJlYWRvbmx5IHNwYW4/OiBUcmFjZXJTcGFuO1xuICByZWFkb25seSBwYXJlbnQ/OiBNb25pdG9yQmFzZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNb25pdG9yQmFzZU9wdGlvbnMge1xuICByZWFkb25seSBzZXJ2aWNlOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNvbXBvbmVudDogc3RyaW5nO1xuICByZWFkb25seSBsYWJlbHM/OiBMYWJlbHM7XG4gIHJlYWRvbmx5IGRhdGE/OiBMYWJlbHM7XG4gIHJlYWRvbmx5IGxvZ2dlcjogTG9nZ2VyO1xuICByZWFkb25seSB0cmFjZXI/OiBUcmFjZXI7XG4gIHJlYWRvbmx5IG5vdzogTm93O1xuICByZWFkb25seSBzcGFuTG9nTGV2ZWw/OiBMb2dMZXZlbDtcbiAgcmVhZG9ubHkgc3Bhbj86IFNwYW5EYXRhIHwgdm9pZDtcbiAgcmVhZG9ubHkgcmVwb3J0SGFuZGxlcj86IFJlcG9ydEhhbmRsZXI7XG59XG5cbmVudW0gTG9nTGV2ZWxUb0xldmVsIHtcbiAgZXJyb3IgPSAwLFxuICB3YXJuID0gMSxcbiAgaW5mbyA9IDIsXG4gIHZlcmJvc2UgPSAzLFxuICBkZWJ1ZyA9IDQsXG4gIHNpbGx5ID0gNSxcbn1cblxudHlwZSBSZWZlcmVuY2VUeXBlID0gJ2NoaWxkT2YnIHwgJ2ZvbGxvd3NGcm9tJztcblxuYWJzdHJhY3QgY2xhc3MgRGVmYXVsdFJlZmVyZW5jZSB7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCByZWFkb25seSB0eXBlOiBSZWZlcmVuY2VUeXBlO1xuICBwcml2YXRlIHJlYWRvbmx5IHNwYW46IFNwYW5Db250ZXh0IHwgTW9uaXRvckJhc2U7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNwYW46IFNwYW5Db250ZXh0IHwgTW9uaXRvckJhc2UpIHtcbiAgICB0aGlzLnNwYW4gPSBzcGFuO1xuICB9XG5cbiAgcHVibGljIGlzVmFsaWQoKTogYm9vbGVhbiB7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVjbGFyZVxuICAgIHJldHVybiAhKHRoaXMuc3BhbiBpbnN0YW5jZW9mIE1vbml0b3JCYXNlKSB8fCB0aGlzLnNwYW4uaGFzU3BhbigpO1xuICB9XG5cbiAgcHVibGljIGdldFRyYWNlclJlZmVyZW5jZSh0cmFjZXI6IFRyYWNlcik6IFRyYWNlclJlZmVyZW5jZSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcm9ncmFtbWluZyBlcnJvcicpO1xuICAgIH1cblxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlY2xhcmVcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5zcGFuIGluc3RhbmNlb2YgTW9uaXRvckJhc2UgPyB0aGlzLnNwYW4uZ2V0U3BhbigpLnNwYW4gOiB0aGlzLnNwYW47XG5cbiAgICBpZiAoY29udGV4dCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnR5cGUgPT09ICdjaGlsZE9mJyA/IHRyYWNlci5jaGlsZE9mKGNvbnRleHQpIDogdHJhY2VyLmZvbGxvd3NGcm9tKGNvbnRleHQpO1xuICB9XG59XG5cbmNsYXNzIENoaWxkT2ZSZWZlcmVuY2UgZXh0ZW5kcyBEZWZhdWx0UmVmZXJlbmNlIHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHR5cGU6IFJlZmVyZW5jZVR5cGUgPSAnY2hpbGRPZic7XG59XG5cbmNsYXNzIEZvbGxvd3NGcm9tUmVmZXJlbmNlIGV4dGVuZHMgRGVmYXVsdFJlZmVyZW5jZSB7XG4gIHByb3RlY3RlZCByZWFkb25seSB0eXBlOiBSZWZlcmVuY2VUeXBlID0gJ2ZvbGxvd3NGcm9tJztcbn1cblxuaW50ZXJmYWNlIENvbW1vbkxvZ09wdGlvbnMge1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG1lc3NhZ2U/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGxldmVsPzogTG9nTGV2ZWw7XG5cbiAgcmVhZG9ubHkgbWV0cmljPzogQ291bnRlcjtcblxuICByZWFkb25seSBlcnJvcj86IHtcbiAgICByZWFkb25seSBtZXRyaWM/OiBDb3VudGVyO1xuICAgIHJlYWRvbmx5IGVycm9yPzogRXJyb3IgfCB1bmRlZmluZWQ7XG4gICAgcmVhZG9ubHkgbWVzc2FnZT86IHN0cmluZztcbiAgICByZWFkb25seSBsZXZlbD86IExvZ0xldmVsO1xuICB9O1xufVxuXG5leHBvcnQgY2xhc3MgTW9uaXRvckJhc2UgaW1wbGVtZW50cyBTcGFuIHtcbiAgcHVibGljIHJlYWRvbmx5IGxhYmVscyA9IEtub3duTGFiZWw7XG4gIHB1YmxpYyByZWFkb25seSBmb3JtYXRzID0gRm9ybWF0O1xuICBwdWJsaWMgcmVhZG9ubHkgbm93OiBOb3c7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2VydmljZTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbXBvbmVudDogc3RyaW5nO1xuICBwcml2YXRlIG11dGFibGVDdXJyZW50TGFiZWxzOiBMYWJlbHM7XG4gIHByaXZhdGUgbXV0YWJsZURhdGE6IExhYmVscztcbiAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXI6IExvZ2dlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBzcGFuTG9nTGV2ZWw6IExvZ0xldmVsO1xuICBwcml2YXRlIHJlYWRvbmx5IHRyYWNlcjogVHJhY2VyO1xuICBwcml2YXRlIHJlYWRvbmx5IHNwYW46IFNwYW5EYXRhIHwgdm9pZDtcbiAgcHJpdmF0ZSByZWFkb25seSByZXBvcnRIYW5kbGVyOiBSZXBvcnRIYW5kbGVyO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcih7XG4gICAgc2VydmljZSxcbiAgICBjb21wb25lbnQsXG4gICAgbGFiZWxzID0ge30sXG4gICAgZGF0YSA9IHt9LFxuICAgIGxvZ2dlcixcbiAgICBzcGFuTG9nTGV2ZWwgPSAnaW5mbycsXG4gICAgdHJhY2VyID0gY3JlYXRlVHJhY2VyKCksXG4gICAgbm93LFxuICAgIHNwYW4sXG4gICAgcmVwb3J0SGFuZGxlciA9IG5ldyBSZXBvcnRIYW5kbGVyKGxvZ2dlciksXG4gIH06IE1vbml0b3JCYXNlT3B0aW9ucykge1xuICAgIHRoaXMuc2VydmljZSA9IHNlcnZpY2U7XG4gICAgdGhpcy5jb21wb25lbnQgPSBjb21wb25lbnQ7XG4gICAgdGhpcy5tdXRhYmxlQ3VycmVudExhYmVscyA9IGxhYmVscztcbiAgICB0aGlzLm11dGFibGVEYXRhID0gZGF0YTtcbiAgICB0aGlzLmxvZ2dlciA9IGxvZ2dlcjtcbiAgICB0aGlzLnNwYW5Mb2dMZXZlbCA9IHNwYW5Mb2dMZXZlbDtcbiAgICB0aGlzLnRyYWNlciA9IHRyYWNlcjtcbiAgICB0aGlzLm5vdyA9IG5vdztcbiAgICB0aGlzLnNwYW4gPSBzcGFuO1xuICAgIHRoaXMucmVwb3J0SGFuZGxlciA9IHJlcG9ydEhhbmRsZXI7XG4gIH1cblxuICBwdWJsaWMgbm93U2Vjb25kcygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm5vdygpIC8gMTAwMDtcbiAgfVxuXG4gIHB1YmxpYyBhdChjb21wb25lbnQ6IHN0cmluZyk6IE1vbml0b3Ige1xuICAgIHJldHVybiB0aGlzLmNsb25lKHsgY29tcG9uZW50IH0pO1xuICB9XG5cbiAgcHVibGljIHdpdGhMYWJlbHMobGFiZWxzOiBMYWJlbHMpOiBNb25pdG9yIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSh7IG1lcmdlTGFiZWxzOiBsYWJlbHMgfSk7XG4gIH1cblxuICBwdWJsaWMgd2l0aERhdGEoZGF0YTogTGFiZWxzKTogTW9uaXRvciB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoeyBtZXJnZURhdGE6IGRhdGEgfSk7XG4gIH1cblxuICBwdWJsaWMgZm9yQ29udGV4dChfY3R4OiBDb250ZXh0KTogTW9uaXRvciB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZm9yTWVzc2FnZShfY3R4OiBJbmNvbWluZ01lc3NhZ2UpOiBNb25pdG9yIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBsb2coeyBuYW1lLCBtZXNzYWdlLCBsZXZlbCwgbWV0cmljLCBlcnJvciB9OiBMb2dPcHRpb25zKTogdm9pZCB7XG4gICAgdGhpcy5jb21tb25Mb2coeyBuYW1lLCBtZXNzYWdlLCBsZXZlbCwgbWV0cmljLCBlcnJvciB9KTtcbiAgfVxuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby1hbnlcbiAgcHVibGljIGNhcHR1cmVMb2coZnVuYzogKG1vbml0b3I6IENhcHR1cmVNb25pdG9yKSA9PiBhbnksIG9wdGlvbnM6IENhcHR1cmVMb2dPcHRpb25zLCBjbG9uZWQgPSBmYWxzZSk6IGFueSB7XG4gICAgbGV0IHsgZXJyb3I6IGVycm9yT2JqIH0gPSBvcHRpb25zO1xuICAgIGlmIChlcnJvck9iaiAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBlcnJvck9iaiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGVycm9yT2JqID0geyBtZXRyaWM6IHVuZGVmaW5lZCwgbWVzc2FnZTogZXJyb3JPYmosIGxldmVsOiAnZXJyb3InIH07XG4gICAgfVxuICAgIGNvbnN0IGVycm9yT2JqRmluYWwgPSBlcnJvck9iajtcbiAgICBjb25zdCBsb2cgPSBjbG9uZWQgPyB0aGlzIDogdGhpcy5jbG9uZSgpO1xuICAgIGNvbnN0IGRvTG9nID0gKGVycm9yPzogRXJyb3IgfCB1bmRlZmluZWQpID0+XG4gICAgICBsb2cuY29tbW9uTG9nKHtcbiAgICAgICAgbmFtZTogb3B0aW9ucy5uYW1lLFxuICAgICAgICBtZXNzYWdlOiBvcHRpb25zLm1lc3NhZ2UsXG4gICAgICAgIGxldmVsOiBvcHRpb25zLmxldmVsLFxuICAgICAgICBtZXRyaWM6IG9wdGlvbnMubWV0cmljLFxuICAgICAgICBlcnJvcjpcbiAgICAgICAgICBlcnJvck9iakZpbmFsID09PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICBtZXRyaWM6IGVycm9yT2JqRmluYWwubWV0cmljLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yT2JqRmluYWwubWVzc2FnZSxcbiAgICAgICAgICAgICAgICBlcnJvcixcbiAgICAgICAgICAgICAgICBsZXZlbDogZXJyb3JPYmpGaW5hbC5sZXZlbCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGZ1bmMobG9nKTtcblxuICAgICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkICYmIHJlc3VsdC50aGVuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICByZXN1bHRcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby1hbnlcbiAgICAgICAgICAgIC50aGVuKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBkb0xvZygpO1xuXG4gICAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgICAgIGRvTG9nKGVycik7XG4gICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGRvTG9nKCk7XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGRvTG9nKGVycm9yKTtcbiAgICAgIHRocm93IGVycm9yIGFzIEVycm9yO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBsb2dFcnJvcih7IG5hbWUsIG1lc3NhZ2UsIGxldmVsLCBlcnJvciwgbWV0cmljIH06IExvZ0Vycm9yT3B0aW9ucyk6IHZvaWQge1xuICAgIGxldCBlcnJvckxldmVsID0gbGV2ZWw7XG4gICAgaWYgKGVycm9yTGV2ZWwgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZXJyb3JMZXZlbCA9ICdlcnJvcic7XG4gICAgfVxuXG4gICAgdGhpcy5jb21tb25Mb2coe1xuICAgICAgbmFtZSxcbiAgICAgIG1lc3NhZ2UsXG4gICAgICBsZXZlbDogbGV2ZWwgPT09IHVuZGVmaW5lZCA/ICdlcnJvcicgOiBsZXZlbCxcbiAgICAgIGVycm9yOiB7IG1ldHJpYywgZXJyb3IsIG1lc3NhZ2UsIGxldmVsOiBlcnJvckxldmVsIH0sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhcnRTcGFuKHsgbmFtZSwgbGV2ZWwsIG1ldHJpYywgcmVmZXJlbmNlcyA9IFtdLCB0cmFjZSB9OiBTcGFuT3B0aW9ucyk6IE1vbml0b3JCYXNlIHtcbiAgICBsZXQgc3BhbjtcbiAgICBsZXQgcGFyZW50O1xuXG4gICAgY29uc3QgZnVsbExldmVsID0gdGhpcy5nZXRGdWxsTGV2ZWwobGV2ZWwpO1xuICAgIGNvbnN0IHRyYWNlclJlZmVyZW5jZXMgPSByZWZlcmVuY2VzXG4gICAgICAuY29uY2F0KFt0aGlzLmNoaWxkT2YodGhpcyldKVxuICAgICAgLm1hcCgocmVmZXJlbmNlKSA9PiB7XG4gICAgICAgIGlmIChyZWZlcmVuY2UgaW5zdGFuY2VvZiBEZWZhdWx0UmVmZXJlbmNlICYmIHJlZmVyZW5jZS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICByZXR1cm4gcmVmZXJlbmNlLmdldFRyYWNlclJlZmVyZW5jZSh0aGlzLnRyYWNlcik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIodXRpbHMubm90TnVsbCk7XG4gICAgaWYgKFxuICAgICAgTG9nTGV2ZWxUb0xldmVsW2Z1bGxMZXZlbC5zcGFuXSA8PSBMb2dMZXZlbFRvTGV2ZWxbdGhpcy5zcGFuTG9nTGV2ZWxdICYmXG4gICAgICAodHJhY2UgIT09IHVuZGVmaW5lZCB8fCB0cmFjZXJSZWZlcmVuY2VzLmxlbmd0aCA+IDApXG4gICAgKSB7XG4gICAgICBzcGFuID0gdGhpcy50cmFjZXIuc3RhcnRTcGFuKG5hbWUsIHtcbiAgICAgICAgcmVmZXJlbmNlczogdHJhY2VyUmVmZXJlbmNlcyxcbiAgICAgICAgdGFnczogdGhpcy5nZXRTcGFuVGFncygpLFxuICAgICAgfSk7XG4gICAgICBwYXJlbnQgPSB0aGlzO1xuICAgIH1cblxuICAgIGxldCBjdXJyZW50UGFyZW50O1xuICAgIGlmICh0aGlzLmhhc1NwYW4oKSkge1xuICAgICAgKHsgcGFyZW50OiBjdXJyZW50UGFyZW50IH0gPSB0aGlzLmdldFNwYW4oKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoe1xuICAgICAgc3Bhbjoge1xuICAgICAgICBtZXRyaWMsXG4gICAgICAgIHRpbWU6IHRoaXMubm93U2Vjb25kcygpLFxuICAgICAgICBzcGFuLFxuICAgICAgICBwYXJlbnQ6IHBhcmVudCA9PT0gdW5kZWZpbmVkID8gY3VycmVudFBhcmVudCA6IHBhcmVudCxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZW5kKGVycm9yID0gZmFsc2UpOiB2b2lkIHtcbiAgICBjb25zdCBzcGFuID0gdGhpcy5nZXRTcGFuKCk7XG4gICAgY29uc3QgeyBtZXRyaWMgfSA9IHNwYW47XG4gICAgaWYgKG1ldHJpYyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMubm93U2Vjb25kcygpIC0gc3Bhbi50aW1lO1xuICAgICAgdGhpcy5pbnZva2VNZXRyaWMobWV0cmljLnRvdGFsLCAodG90YWwpID0+IHRvdGFsLm9ic2VydmUodmFsdWUpLCAodG90YWwsIGxhYmVscykgPT4gdG90YWwub2JzZXJ2ZShsYWJlbHMsIHZhbHVlKSk7XG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgdGhpcy5pbnZva2VNZXRyaWMoXG4gICAgICAgICAgbWV0cmljLmVycm9yLFxuICAgICAgICAgIChlcnJvck1ldHJpYykgPT4gZXJyb3JNZXRyaWMuaW5jKCksXG4gICAgICAgICAgKGVycm9yTWV0cmljLCBsYWJlbHMpID0+IGVycm9yTWV0cmljLmluYyhsYWJlbHMpLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHsgc3BhbjogdHJhY2VyU3BhbiB9ID0gc3BhbjtcbiAgICBpZiAodHJhY2VyU3BhbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0cmFjZXJTcGFuLnNldFRhZyh0aGlzLmxhYmVscy5FUlJPUiwgISFlcnJvcik7XG4gICAgICB0cmFjZXJTcGFuLmZpbmlzaCgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby1hbnlcbiAgcHVibGljIGNhcHR1cmVTcGFuKGZ1bmM6IChzcGFuOiBNb25pdG9yQmFzZSkgPT4gYW55LCBvcHRpb25zOiBDYXB0dXJlU3Bhbk9wdGlvbnMpOiBhbnkge1xuICAgIGNvbnN0IHNwYW4gPSB0aGlzLnN0YXJ0U3Bhbih7XG4gICAgICBuYW1lOiBvcHRpb25zLm5hbWUsXG4gICAgICBsZXZlbDogb3B0aW9ucy5sZXZlbCxcbiAgICAgIG1ldHJpYzogb3B0aW9ucy5tZXRyaWMsXG4gICAgICByZWZlcmVuY2VzOiBvcHRpb25zLnJlZmVyZW5jZXMsXG4gICAgICB0cmFjZTogb3B0aW9ucy50cmFjZSxcbiAgICB9KTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gZnVuYyhzcGFuKTtcblxuICAgICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkICYmIHJlc3VsdC50aGVuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICByZXN1bHRcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby1hbnlcbiAgICAgICAgICAgIC50aGVuKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBzcGFuLmVuZCgpO1xuXG4gICAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgICAgIHNwYW4uZW5kKHRydWUpO1xuICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBzcGFuLmVuZCgpO1xuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBzcGFuLmVuZCh0cnVlKTtcbiAgICAgIHRocm93IGVycm9yIGFzIEVycm9yO1xuICAgIH1cbiAgfVxuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby1hbnlcbiAgcHVibGljIGNhcHR1cmVTcGFuTG9nKGZ1bmM6IChzcGFuOiBDYXB0dXJlTW9uaXRvcikgPT4gYW55LCBvcHRpb25zOiBDYXB0dXJlU3BhbkxvZ09wdGlvbnMpOiBhbnkge1xuICAgIGNvbnN0IGxldmVsID0gdGhpcy5nZXRGdWxsTGV2ZWwob3B0aW9ucy5sZXZlbCk7XG5cbiAgICByZXR1cm4gdGhpcy5jYXB0dXJlU3BhbihcbiAgICAgIChzcGFuKSA9PlxuICAgICAgICBzcGFuLmNhcHR1cmVMb2coXG4gICAgICAgICAgZnVuYyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBvcHRpb25zLm5hbWUsXG4gICAgICAgICAgICBsZXZlbDogbGV2ZWwubG9nLFxuICAgICAgICAgICAgbWVzc2FnZTogb3B0aW9ucy5tZXNzYWdlLFxuICAgICAgICAgICAgZXJyb3I6XG4gICAgICAgICAgICAgIHR5cGVvZiBvcHRpb25zLmVycm9yID09PSAnb2JqZWN0J1xuICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICBsZXZlbDogb3B0aW9ucy5lcnJvci5sZXZlbCxcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogb3B0aW9ucy5lcnJvci5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDogb3B0aW9ucy5lcnJvcixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRydWUsXG4gICAgICAgICksXG4gICAgICB7XG4gICAgICAgIG5hbWU6IG9wdGlvbnMubmFtZSxcbiAgICAgICAgbGV2ZWw6IGxldmVsLnNwYW4sXG4gICAgICAgIG1ldHJpYzogb3B0aW9ucy5tZXRyaWMsXG4gICAgICAgIHJlZmVyZW5jZXM6IG9wdGlvbnMucmVmZXJlbmNlcyxcbiAgICAgICAgdHJhY2U6IG9wdGlvbnMudHJhY2UsXG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgbm8tYW55XG4gIHB1YmxpYyBjaGlsZE9mKHNwYW46IFNwYW5Db250ZXh0IHwgTW9uaXRvciB8IHZvaWQpOiBhbnkge1xuICAgIGlmIChzcGFuID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG5vLWFueVxuICAgIHJldHVybiBuZXcgQ2hpbGRPZlJlZmVyZW5jZShzcGFuIGFzIGFueSkgYXMgYW55O1xuICB9XG5cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG5vLWFueVxuICBwdWJsaWMgZm9sbG93c0Zyb20oc3BhbjogU3BhbkNvbnRleHQgfCBNb25pdG9yIHwgdm9pZCk6IGFueSB7XG4gICAgaWYgKHNwYW4gPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgbm8tYW55XG4gICAgcmV0dXJuIG5ldyBGb2xsb3dzRnJvbVJlZmVyZW5jZShzcGFuIGFzIGFueSkgYXMgYW55O1xuICB9XG5cbiAgcHVibGljIGV4dHJhY3QoZm9ybWF0OiBGb3JtYXQsIGNhcnJpZXI6IENhcnJpZXIpOiBTcGFuQ29udGV4dCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMudHJhY2VyLmV4dHJhY3QoZm9ybWF0LCBjYXJyaWVyKTtcbiAgfVxuXG4gIHB1YmxpYyBpbmplY3QoZm9ybWF0OiBGb3JtYXQsIGNhcnJpZXI6IENhcnJpZXIpOiB2b2lkIHtcbiAgICBjb25zdCBzcGFuID0gdGhpcy5zcGFuO1xuICAgIGlmIChzcGFuICE9PSB1bmRlZmluZWQgJiYgc3Bhbi5zcGFuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMudHJhY2VyLmluamVjdChzcGFuLnNwYW4uY29udGV4dCgpLCBmb3JtYXQsIGNhcnJpZXIpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZXBvcnQocmVwb3J0OiBSZXBvcnQpOiB2b2lkIHtcbiAgICB0aGlzLnJlcG9ydEhhbmRsZXIucmVwb3J0KHJlcG9ydCk7XG4gIH1cblxuICBwdWJsaWMgc2VydmVNZXRyaWNzKF9wb3J0OiBudW1iZXIpOiB2b2lkIHtcbiAgICAvLyBkbyBub3RoaW5nXG4gIH1cblxuICBwdWJsaWMgY2xvc2UoY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlSW50ZXJuYWwoKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRMYWJlbHMobGFiZWxzOiBMYWJlbHMpOiB2b2lkIHtcbiAgICB0aGlzLnNldFNwYW5MYWJlbHMobGFiZWxzKTtcbiAgICB0aGlzLm11dGFibGVDdXJyZW50TGFiZWxzID0geyAuLi50aGlzLm11dGFibGVDdXJyZW50TGFiZWxzLCAuLi5sYWJlbHMgfTtcbiAgfVxuXG4gIHB1YmxpYyBzZXREYXRhKGRhdGE6IExhYmVscyk6IHZvaWQge1xuICAgIHRoaXMuc2V0U3BhbkxhYmVscyhkYXRhKTtcbiAgICB0aGlzLm11dGFibGVEYXRhID0geyAuLi50aGlzLm11dGFibGVEYXRhLCAuLi5kYXRhIH07XG4gIH1cblxuICBwdWJsaWMgaGFzU3BhbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zcGFuICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0U3BhbigpOiBTcGFuRGF0YSB7XG4gICAgY29uc3Qgc3BhbiA9IHRoaXMuc3BhbjtcbiAgICBpZiAoc3BhbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Byb2dyYW1taW5nIGVycm9yOiBDYWxsZWQgZW5kIG9uIGEgcmVndWxhciBNb25pdG9yLicpO1xuICAgIH1cblxuICAgIHJldHVybiBzcGFuO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGNsb3NlSW50ZXJuYWwoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICAgICAgdGhpcy5sb2dnZXIuY2xvc2UocmVzb2x2ZSk7XG4gICAgICB9KSxcbiAgICAgIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgICAgIHRoaXMudHJhY2VyLmNsb3NlKHJlc29sdmUpO1xuICAgICAgfSksXG4gICAgXSk7XG4gIH1cblxuICBwcml2YXRlIGludm9rZU1ldHJpYzxUIGV4dGVuZHMgTWV0cmljPihcbiAgICBtZXRyaWM6IFQsXG4gICAgd2l0aG91dExhYmVsczogKG1ldHJpYzogVCkgPT4gdm9pZCxcbiAgICB3aXRoTGFiZWxzOiAobWV0cmljOiBULCBsYWJlbHM6IExhYmVscykgPT4gdm9pZCxcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgbGFiZWxOYW1lcyA9IG1ldHJpYy5nZXRMYWJlbE5hbWVzKCk7XG4gICAgaWYgKGxhYmVsTmFtZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB3aXRob3V0TGFiZWxzKG1ldHJpYyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGxhYmVscyA9IG1ldHJpYy5nZXRMYWJlbE5hbWVzKCkucmVkdWNlPExhYmVscz4oXG4gICAgICAgIChhY2MsIGxhYmVsTmFtZSkgPT4gKHtcbiAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgW2xhYmVsTmFtZV06IHRoaXMubXV0YWJsZUN1cnJlbnRMYWJlbHNbbGFiZWxOYW1lXSxcbiAgICAgICAgfSksXG4gICAgICAgIHt9LFxuICAgICAgKTtcblxuICAgICAgd2l0aExhYmVscyhtZXRyaWMsIGxhYmVscyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjb21tb25Mb2coe1xuICAgIG5hbWUsXG4gICAgbWVzc2FnZTogbWVzc2FnZUluLFxuXG4gICAgbGV2ZWwsXG4gICAgbWV0cmljLFxuXG4gICAgZXJyb3IsXG4gIH06IENvbW1vbkxvZ09wdGlvbnMpOiB2b2lkIHtcbiAgICBjb25zdCBpbmNyZW1lbnRNZXRyaWMgPSAobWF5YmVNZXRyaWM/OiBDb3VudGVyKSA9PiB7XG4gICAgICBpZiAobWF5YmVNZXRyaWMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLmludm9rZU1ldHJpYyhcbiAgICAgICAgICBtYXliZU1ldHJpYyxcbiAgICAgICAgICAodGhlTWV0cmljKSA9PiB0aGVNZXRyaWMuaW5jKCksXG4gICAgICAgICAgKHRoZU1ldHJpYywgbWV0cmljTGFiZWxzKSA9PiB0aGVNZXRyaWMuaW5jKG1ldHJpY0xhYmVscyksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGxldCBsYWJlbHMgPSB7fTtcbiAgICBsZXQgbWVzc2FnZSA9IG1lc3NhZ2VJbjtcbiAgICBjb25zdCBmdWxsTGV2ZWwgPSB0aGlzLmdldEZ1bGxMZXZlbChsZXZlbCk7XG4gICAgbGV0IGxvZ0xldmVsID0gZnVsbExldmVsLmxvZztcbiAgICBpbmNyZW1lbnRNZXRyaWMobWV0cmljKTtcbiAgICBpZiAoZXJyb3IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgeyBlcnJvcjogZXJyb3JPYmogfSA9IGVycm9yO1xuICAgICAgbGFiZWxzID0ge1xuICAgICAgICAuLi5sYWJlbHMsXG4gICAgICAgIFtLbm93bkxhYmVsLkVSUk9SXTogZXJyb3JPYmogIT09IHVuZGVmaW5lZCxcbiAgICAgICAgW0tub3duTGFiZWwuRVJST1JfS0lORF06IGAke3RoaXMuZ2V0RXJyb3JLaW5kKGVycm9yT2JqKX1gLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IGVycm9yTGV2ZWwgPSBlcnJvci5sZXZlbCA9PT0gdW5kZWZpbmVkID8gJ2Vycm9yJyA6IGVycm9yLmxldmVsO1xuICAgICAgaWYgKGVycm9yT2JqICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaW5jcmVtZW50TWV0cmljKGVycm9yLm1ldHJpYyk7XG4gICAgICAgIGxvZ0xldmVsID0gZXJyb3JMZXZlbDtcbiAgICAgICAgY29uc3QgeyBtZXNzYWdlOiBlcnJvck1lc3NhZ2UgfSA9IGVycm9yO1xuICAgICAgICBpZiAoZXJyb3JNZXNzYWdlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBtZXNzYWdlID0gZXJyb3JNZXNzYWdlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGRvdCA9IGVycm9yTWVzc2FnZS5lbmRzV2l0aCgnLicpID8gJycgOiAnLic7XG4gICAgICAgICAgbWVzc2FnZSA9IGAke2Vycm9yTWVzc2FnZX0ke2RvdH0gJHtlcnJvck9iai5tZXNzYWdlfWA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBHYXRoZXIgdXAgYWxsIGluZm9ybWF0aW9uIGZvciBsb2dnaW5nXG4gICAgdGhpcy5sb2dnZXIubG9nKHtcbiAgICAgIG5hbWUsXG4gICAgICBsZXZlbDogbG9nTGV2ZWwsXG4gICAgICBtZXNzYWdlLFxuICAgICAgbGFiZWxzOiBjb252ZXJ0VGFnTGFiZWxzKHRoaXMuZ2V0QWxsUmF3TGFiZWxzKGxhYmVscykpLFxuICAgICAgZGF0YTogY29udmVydFRhZ0xhYmVscyh0aGlzLmdldEFsbFJhd0RhdGEoKSksXG4gICAgICBlcnJvcjogZXJyb3IgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IGVycm9yLmVycm9yLFxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuc3BhbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCB7IHNwYW46IHRyYWNlclNwYW4gfSA9IHRoaXMuc3BhbjtcbiAgICAgIGlmIChMb2dMZXZlbFRvTGV2ZWxbZnVsbExldmVsLnNwYW5dIDw9IExvZ0xldmVsVG9MZXZlbFt0aGlzLnNwYW5Mb2dMZXZlbF0gJiYgdHJhY2VyU3BhbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby1hbnlcbiAgICAgICAgbGV0IHNwYW5Mb2c6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7XG4gICAgICAgICAgZXZlbnQ6IG5hbWUsXG4gICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgICAuLi50aGlzLmdldFNwYW5UYWdzKGxhYmVscyksXG4gICAgICAgIH07XG4gICAgICAgIGlmIChlcnJvciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29uc3QgeyBlcnJvcjogZXJyb3JPYmogfSA9IGVycm9yO1xuICAgICAgICAgIGlmIChlcnJvck9iaiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBzcGFuTG9nID0ge1xuICAgICAgICAgICAgICAuLi5zcGFuTG9nLFxuICAgICAgICAgICAgICBbdGhpcy5sYWJlbHMuRVJST1JfT0JKRUNUXTogZXJyb3JPYmosXG4gICAgICAgICAgICAgIFt0aGlzLmxhYmVscy5FUlJPUl9TVEFDS106IGVycm9yT2JqLnN0YWNrLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gT25seSBsb2cgaW5mb3JtYXRpb24gZnJvbSB0aGUgY3VycmVudCBwb2ludCBpbiB0aW1lXG4gICAgICAgIHRyYWNlclNwYW4ubG9nKHNwYW5Mb2cpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0RXJyb3JLaW5kKGVycm9yPzogRXJyb3IgfCB1bmRlZmluZWQpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgIGlmIChlcnJvciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gJ24vYSc7XG4gICAgfVxuXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG5vLWFueVxuICAgIHJldHVybiAoZXJyb3IgYXMgYW55KS5jb2RlID09PSB1bmRlZmluZWQgPyBlcnJvci5jb25zdHJ1Y3Rvci5uYW1lIDogKGVycm9yIGFzIGFueSkuY29kZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U3BhblRhZ3MobGFiZWxzOiBMYWJlbHMgPSB7fSk6IExhYmVscyB7XG4gICAgbGV0IHNwYW5MYWJlbHMgPSB0aGlzLmdldEFsbFJhd0xhYmVscygpO1xuICAgIGxldCBzcGFuRGF0YSA9IHRoaXMuZ2V0QWxsUmF3RGF0YSgpO1xuICAgIGlmICh0aGlzLmhhc1NwYW4oKSkge1xuICAgICAgY29uc3QgeyBwYXJlbnQgfSA9IHRoaXMuZ2V0U3BhbigpO1xuICAgICAgaWYgKHBhcmVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudExhYmVscyA9IG5ldyBTZXQoT2JqZWN0LmtleXMocGFyZW50LmxhYmVscykpO1xuICAgICAgICBzcGFuTGFiZWxzID0gXy5vbWl0Qnkoc3BhbkxhYmVscywgKF92YWx1ZSwgbGFiZWwpID0+IHBhcmVudExhYmVscy5oYXMobGFiZWwpKTtcbiAgICAgICAgY29uc3QgcGFyZW50RGF0YSA9IG5ldyBTZXQoT2JqZWN0LmtleXMocGFyZW50Lm11dGFibGVEYXRhKSk7XG4gICAgICAgIHNwYW5EYXRhID0gXy5vbWl0Qnkoc3BhbkRhdGEsIChfdmFsdWUsIGxhYmVsKSA9PiBwYXJlbnREYXRhLmhhcyhsYWJlbCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjb252ZXJ0VGFnTGFiZWxzKHtcbiAgICAgIC4uLnNwYW5MYWJlbHMsXG4gICAgICAuLi5zcGFuRGF0YSxcbiAgICAgIC4uLmxhYmVscyxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QWxsUmF3TGFiZWxzKGxhYmVscz86IExhYmVscyk6IExhYmVscyB7XG4gICAgaWYgKGxhYmVscyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5tdXRhYmxlQ3VycmVudExhYmVscztcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5tdXRhYmxlQ3VycmVudExhYmVscyxcbiAgICAgIC4uLmxhYmVscyxcbiAgICAgIFt0aGlzLmxhYmVscy5TRVJWSUNFXTogdGhpcy5zZXJ2aWNlLFxuICAgICAgW3RoaXMubGFiZWxzLkNPTVBPTkVOVF06IHRoaXMuY29tcG9uZW50LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldEFsbFJhd0RhdGEobGFiZWxzPzogTGFiZWxzKTogTGFiZWxzIHtcbiAgICBpZiAobGFiZWxzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLm11dGFibGVEYXRhO1xuICAgIH1cblxuICAgIHJldHVybiB7IC4uLnRoaXMubXV0YWJsZURhdGEsIC4uLmxhYmVscyB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRTcGFuTGFiZWxzKGxhYmVsczogTGFiZWxzKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3BhbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCB7IHNwYW46IHRyYWNlclNwYW4gfSA9IHRoaXMuc3BhbjtcbiAgICAgIGlmICh0cmFjZXJTcGFuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgdGFnTGFiZWxzID0gY29udmVydFRhZ0xhYmVscyhsYWJlbHMpO1xuICAgICAgICBPYmplY3Qua2V5cyh0YWdMYWJlbHMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGFnTGFiZWxzW2tleV07XG4gICAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRyYWNlclNwYW4uc2V0VGFnKGtleSwgdmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRGdWxsTGV2ZWwobGV2ZWxJbj86IExvZ0xldmVsT3B0aW9uKTogRnVsbExvZ0xldmVsT3B0aW9uIHtcbiAgICBsZXQgbGV2ZWwgPSBsZXZlbEluO1xuICAgIGlmIChsZXZlbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBsZXZlbCA9ICdpbmZvJztcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGxldmVsID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbG9nOiBsZXZlbCxcbiAgICAgICAgc3BhbjogbGV2ZWwsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBsb2c6IGxldmVsLmxvZyxcbiAgICAgIHNwYW46IGxldmVsLnNwYW4gPT09IHVuZGVmaW5lZCA/IGxldmVsLmxvZyA6IGxldmVsLnNwYW4sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY2xvbmUoXG4gICAgb3B0aW9uczoge1xuICAgICAgcmVhZG9ubHkgY29tcG9uZW50Pzogc3RyaW5nO1xuICAgICAgcmVhZG9ubHkgbWVyZ2VMYWJlbHM/OiBMYWJlbHM7XG4gICAgICByZWFkb25seSBtZXJnZURhdGE/OiBMYWJlbHM7XG4gICAgICByZWFkb25seSBzcGFuPzogU3BhbkRhdGE7XG4gICAgfSA9IHt9LFxuICApOiB0aGlzIHtcbiAgICBjb25zdCB7IGNvbXBvbmVudCwgbWVyZ2VMYWJlbHMsIG1lcmdlRGF0YSwgc3BhbiB9ID0gb3B0aW9ucztcbiAgICBsZXQgbWVyZ2VkTGFiZWxzID0gdGhpcy5tdXRhYmxlQ3VycmVudExhYmVscztcbiAgICBpZiAobWVyZ2VMYWJlbHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgbWVyZ2VkTGFiZWxzID0geyAuLi50aGlzLm11dGFibGVDdXJyZW50TGFiZWxzLCAuLi5tZXJnZUxhYmVscyB9O1xuICAgIH1cblxuICAgIGxldCBtZXJnZWREYXRhID0gdGhpcy5tdXRhYmxlRGF0YTtcbiAgICBpZiAobWVyZ2VEYXRhICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG1lcmdlZERhdGEgPSB7IC4uLnRoaXMubXV0YWJsZURhdGEsIC4uLm1lcmdlRGF0YSB9O1xuICAgIH1cblxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby1hbnlcbiAgICByZXR1cm4gbmV3ICh0aGlzLmNvbnN0cnVjdG9yIGFzIGFueSkoe1xuICAgICAgc2VydmljZTogdGhpcy5zZXJ2aWNlLFxuICAgICAgY29tcG9uZW50OiBjb21wb25lbnQgPT09IHVuZGVmaW5lZCA/IHRoaXMuY29tcG9uZW50IDogY29tcG9uZW50LFxuICAgICAgbG9nZ2VyOiB0aGlzLmxvZ2dlcixcbiAgICAgIHRyYWNlcjogdGhpcy50cmFjZXIsXG4gICAgICBub3c6IHRoaXMubm93LFxuICAgICAgbGFiZWxzOiBtZXJnZWRMYWJlbHMsXG4gICAgICBkYXRhOiBtZXJnZWREYXRhLFxuICAgICAgc3Bhbjogc3BhbiA9PT0gdW5kZWZpbmVkID8gdGhpcy5zcGFuIDogc3BhbixcbiAgICAgIHNwYW5Mb2dMZXZlbDogdGhpcy5zcGFuTG9nTGV2ZWwsXG4gICAgICByZXBvcnRIYW5kbGVyOiB0aGlzLnJlcG9ydEhhbmRsZXIsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf8;base64,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LElBQUksQ0FBQyxXQUFXLEVBQUssU0FBUyxDQUFFLENBQUM7U0FDcEQ7UUFFRCxrQ0FBa0M7UUFDbEMsT0FBTyxJQUFLLElBQUksQ0FBQyxXQUFtQixDQUFDO1lBQ25DLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixTQUFTLEVBQUUsU0FBUyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUztZQUMvRCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztZQUNiLE1BQU0sRUFBRSxZQUFZO1lBQ3BCLElBQUksRUFBRSxVQUFVO1lBQ2hCLElBQUksRUFBRSxJQUFJLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBQzNDLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMvQixhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7U0FDbEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBdGpCRCxrQ0FzakJDIiwiZmlsZSI6Im5lby1vbmUtbW9uaXRvci9zcmMvTW9uaXRvckJhc2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmNvbWluZ01lc3NhZ2UgfSBmcm9tICdodHRwJztcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tICdrb2EnO1xuXG5pbXBvcnQgeyB1dGlscyB9IGZyb20gJ0BuZW8tb25lL3V0aWxzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7IFJlcG9ydEhhbmRsZXIgfSBmcm9tICcuL1JlcG9ydEhhbmRsZXInO1xuaW1wb3J0IHtcbiAgQ2FwdHVyZUxvZ09wdGlvbnMsXG4gIENhcHR1cmVNb25pdG9yLFxuICBDYXB0dXJlU3BhbkxvZ09wdGlvbnMsXG4gIENhcHR1cmVTcGFuT3B0aW9ucyxcbiAgQ2FycmllcixcbiAgQ291bnRlcixcbiAgRm9ybWF0LFxuICBIaXN0b2dyYW0sXG4gIEtub3duTGFiZWwsXG4gIExhYmVscyxcbiAgTG9nRXJyb3JPcHRpb25zLFxuICBMb2dnZXIsXG4gIExvZ0xldmVsLFxuICBMb2dMZXZlbE9wdGlvbixcbiAgTG9nT3B0aW9ucyxcbiAgTWV0cmljLFxuICBNb25pdG9yLFxuICBSZXBvcnQsXG4gIFNwYW4sXG4gIFNwYW5Db250ZXh0LFxuICBTcGFuT3B0aW9ucyxcbiAgU3VtbWFyeSxcbn0gZnJvbSAnLi90eXBlcyc7XG5cbmltcG9ydCB7IGNyZWF0ZVRyYWNlciB9IGZyb20gJy4vY3JlYXRlVHJhY2VyJztcbmltcG9ydCB7IGNvbnZlcnRUYWdMYWJlbHMgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBGdWxsTG9nTGV2ZWxPcHRpb24ge1xuICByZWFkb25seSBsb2c6IExvZ0xldmVsO1xuICByZWFkb25seSBzcGFuOiBMb2dMZXZlbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFjZXJTcGFuIHtcbiAgcmVhZG9ubHkgbG9nOiAoZGF0YTogb2JqZWN0KSA9PiB2b2lkO1xuICByZWFkb25seSBzZXRUYWc6IChuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuKSA9PiB2b2lkO1xuICByZWFkb25seSBmaW5pc2g6IChmaW5pc2hUaW1lPzogbnVtYmVyKSA9PiB2b2lkO1xuICByZWFkb25seSBjb250ZXh0OiAoKSA9PiBTcGFuQ29udGV4dDtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgVHJhY2VyUmVmZXJlbmNlIHtcbiAgcmVhZG9ubHkgX190cmFjZXI6IHVuZGVmaW5lZDtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgVHJhY2VyU3RhcnRTcGFuT3B0aW9ucyB7XG4gIHJlYWRvbmx5IHJlZmVyZW5jZXM/OiByZWFkb25seSBUcmFjZXJSZWZlcmVuY2VbXTtcbiAgcmVhZG9ubHkgdGFncz86IG9iamVjdDtcbiAgcmVhZG9ubHkgc3RhcnRUaW1lPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyYWNlciB7XG4gIHJlYWRvbmx5IHN0YXJ0U3BhbjogKG5hbWU6IHN0cmluZywgb3B0aW9ucz86IFRyYWNlclN0YXJ0U3Bhbk9wdGlvbnMpID0+IFRyYWNlclNwYW47XG4gIHJlYWRvbmx5IGNoaWxkT2Y6IChzcGFuOiBTcGFuQ29udGV4dCB8IFRyYWNlclNwYW4pID0+IFRyYWNlclJlZmVyZW5jZTtcbiAgcmVhZG9ubHkgZm9sbG93c0Zyb206IChzcGFuOiBTcGFuQ29udGV4dCB8IFRyYWNlclNwYW4pID0+IFRyYWNlclJlZmVyZW5jZTtcbiAgcmVhZG9ubHkgZXh0cmFjdDogKGZvcm1hdDogRm9ybWF0LCBjYXJyaWVyOiBDYXJyaWVyKSA9PiBTcGFuQ29udGV4dCB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgaW5qZWN0OiAoY29udGV4dDogU3BhbkNvbnRleHQsIGZvcm1hdDogRm9ybWF0LCBjYXJyaWVyOiBDYXJyaWVyKSA9PiB2b2lkO1xuICByZWFkb25seSBjbG9zZTogKGNhbGxiYWNrOiAoKSA9PiB2b2lkKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBOb3cgPSAoKSA9PiBudW1iZXI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3BhbkRhdGEge1xuICByZWFkb25seSBtZXRyaWM/OiB7XG4gICAgcmVhZG9ubHkgdG90YWw6IEhpc3RvZ3JhbSB8IFN1bW1hcnk7XG4gICAgcmVhZG9ubHkgZXJyb3I6IENvdW50ZXI7XG4gIH07XG4gIHJlYWRvbmx5IHRpbWU6IG51bWJlcjtcbiAgcmVhZG9ubHkgc3Bhbj86IFRyYWNlclNwYW47XG4gIHJlYWRvbmx5IHBhcmVudD86IE1vbml0b3JCYXNlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1vbml0b3JCYXNlT3B0aW9ucyB7XG4gIHJlYWRvbmx5IHNlcnZpY2U6IHN0cmluZztcbiAgcmVhZG9ubHkgY29tcG9uZW50OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGxhYmVscz86IExhYmVscztcbiAgcmVhZG9ubHkgZGF0YT86IExhYmVscztcbiAgcmVhZG9ubHkgbG9nZ2VyOiBMb2dnZXI7XG4gIHJlYWRvbmx5IHRyYWNlcj86IFRyYWNlcjtcbiAgcmVhZG9ubHkgbm93OiBOb3c7XG4gIHJlYWRvbmx5IHNwYW5Mb2dMZXZlbD86IExvZ0xldmVsO1xuICByZWFkb25seSBzcGFuPzogU3BhbkRhdGEgfCB2b2lkO1xuICByZWFkb25seSByZXBvcnRIYW5kbGVyPzogUmVwb3J0SGFuZGxlcjtcbn1cblxuZW51bSBMb2dMZXZlbFRvTGV2ZWwge1xuICBlcnJvciA9IDAsXG4gIHdhcm4gPSAxLFxuICBpbmZvID0gMixcbiAgdmVyYm9zZSA9IDMsXG4gIGRlYnVnID0gNCxcbiAgc2lsbHkgPSA1LFxufVxuXG50eXBlIFJlZmVyZW5jZVR5cGUgPSAnY2hpbGRPZicgfCAnZm9sbG93c0Zyb20nO1xuXG5hYnN0cmFjdCBjbGFzcyBEZWZhdWx0UmVmZXJlbmNlIHtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHJlYWRvbmx5IHR5cGU6IFJlZmVyZW5jZVR5cGU7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3BhbjogU3BhbkNvbnRleHQgfCBNb25pdG9yQmFzZTtcblxuICBwdWJsaWMgY29uc3RydWN0b3Ioc3BhbjogU3BhbkNvbnRleHQgfCBNb25pdG9yQmFzZSkge1xuICAgIHRoaXMuc3BhbiA9IHNwYW47XG4gIH1cblxuICBwdWJsaWMgaXNWYWxpZCgpOiBib29sZWFuIHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWNsYXJlXG4gICAgcmV0dXJuICEodGhpcy5zcGFuIGluc3RhbmNlb2YgTW9uaXRvckJhc2UpIHx8IHRoaXMuc3Bhbi5oYXNTcGFuKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VHJhY2VyUmVmZXJlbmNlKHRyYWNlcjogVHJhY2VyKTogVHJhY2VyUmVmZXJlbmNlIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Byb2dyYW1taW5nIGVycm9yJyk7XG4gICAgfVxuXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVjbGFyZVxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLnNwYW4gaW5zdGFuY2VvZiBNb25pdG9yQmFzZSA/IHRoaXMuc3Bhbi5nZXRTcGFuKCkuc3BhbiA6IHRoaXMuc3BhbjtcblxuICAgIGlmIChjb250ZXh0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gJ2NoaWxkT2YnID8gdHJhY2VyLmNoaWxkT2YoY29udGV4dCkgOiB0cmFjZXIuZm9sbG93c0Zyb20oY29udGV4dCk7XG4gIH1cbn1cblxuY2xhc3MgQ2hpbGRPZlJlZmVyZW5jZSBleHRlbmRzIERlZmF1bHRSZWZlcmVuY2Uge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdHlwZTogUmVmZXJlbmNlVHlwZSA9ICdjaGlsZE9mJztcbn1cblxuY2xhc3MgRm9sbG93c0Zyb21SZWZlcmVuY2UgZXh0ZW5kcyBEZWZhdWx0UmVmZXJlbmNlIHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHR5cGU6IFJlZmVyZW5jZVR5cGUgPSAnZm9sbG93c0Zyb20nO1xufVxuXG5pbnRlcmZhY2UgQ29tbW9uTG9nT3B0aW9ucyB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgbWVzc2FnZT86IHN0cmluZztcbiAgcmVhZG9ubHkgbGV2ZWw/OiBMb2dMZXZlbDtcblxuICByZWFkb25seSBtZXRyaWM/OiBDb3VudGVyO1xuXG4gIHJlYWRvbmx5IGVycm9yPzoge1xuICAgIHJlYWRvbmx5IG1ldHJpYz86IENvdW50ZXI7XG4gICAgcmVhZG9ubHkgZXJyb3I/OiBFcnJvciB8IHVuZGVmaW5lZDtcbiAgICByZWFkb25seSBtZXNzYWdlPzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGxldmVsPzogTG9nTGV2ZWw7XG4gIH07XG59XG5cbmV4cG9ydCBjbGFzcyBNb25pdG9yQmFzZSBpbXBsZW1lbnRzIFNwYW4ge1xuICBwdWJsaWMgcmVhZG9ubHkgbGFiZWxzID0gS25vd25MYWJlbDtcbiAgcHVibGljIHJlYWRvbmx5IGZvcm1hdHMgPSBGb3JtYXQ7XG4gIHB1YmxpYyByZWFkb25seSBub3c6IE5vdztcbiAgcHJpdmF0ZSByZWFkb25seSBzZXJ2aWNlOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29tcG9uZW50OiBzdHJpbmc7XG4gIHByaXZhdGUgbXV0YWJsZUN1cnJlbnRMYWJlbHM6IExhYmVscztcbiAgcHJpdmF0ZSBtdXRhYmxlRGF0YTogTGFiZWxzO1xuICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlcjogTG9nZ2VyO1xuICBwcml2YXRlIHJlYWRvbmx5IHNwYW5Mb2dMZXZlbDogTG9nTGV2ZWw7XG4gIHByaXZhdGUgcmVhZG9ubHkgdHJhY2VyOiBUcmFjZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3BhbjogU3BhbkRhdGEgfCB2b2lkO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlcG9ydEhhbmRsZXI6IFJlcG9ydEhhbmRsZXI7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHtcbiAgICBzZXJ2aWNlLFxuICAgIGNvbXBvbmVudCxcbiAgICBsYWJlbHMgPSB7fSxcbiAgICBkYXRhID0ge30sXG4gICAgbG9nZ2VyLFxuICAgIHNwYW5Mb2dMZXZlbCA9ICdpbmZvJyxcbiAgICB0cmFjZXIgPSBjcmVhdGVUcmFjZXIoKSxcbiAgICBub3csXG4gICAgc3BhbixcbiAgICByZXBvcnRIYW5kbGVyID0gbmV3IFJlcG9ydEhhbmRsZXIobG9nZ2VyKSxcbiAgfTogTW9uaXRvckJhc2VPcHRpb25zKSB7XG4gICAgdGhpcy5zZXJ2aWNlID0gc2VydmljZTtcbiAgICB0aGlzLmNvbXBvbmVudCA9IGNvbXBvbmVudDtcbiAgICB0aGlzLm11dGFibGVDdXJyZW50TGFiZWxzID0gbGFiZWxzO1xuICAgIHRoaXMubXV0YWJsZURhdGEgPSBkYXRhO1xuICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyO1xuICAgIHRoaXMuc3BhbkxvZ0xldmVsID0gc3BhbkxvZ0xldmVsO1xuICAgIHRoaXMudHJhY2VyID0gdHJhY2VyO1xuICAgIHRoaXMubm93ID0gbm93O1xuICAgIHRoaXMuc3BhbiA9IHNwYW47XG4gICAgdGhpcy5yZXBvcnRIYW5kbGVyID0gcmVwb3J0SGFuZGxlcjtcbiAgfVxuXG4gIHB1YmxpYyBub3dTZWNvbmRzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMubm93KCkgLyAxMDAwO1xuICB9XG5cbiAgcHVibGljIGF0KGNvbXBvbmVudDogc3RyaW5nKTogTW9uaXRvciB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoeyBjb21wb25lbnQgfSk7XG4gIH1cblxuICBwdWJsaWMgd2l0aExhYmVscyhsYWJlbHM6IExhYmVscyk6IE1vbml0b3Ige1xuICAgIHJldHVybiB0aGlzLmNsb25lKHsgbWVyZ2VMYWJlbHM6IGxhYmVscyB9KTtcbiAgfVxuXG4gIHB1YmxpYyB3aXRoRGF0YShkYXRhOiBMYWJlbHMpOiBNb25pdG9yIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSh7IG1lcmdlRGF0YTogZGF0YSB9KTtcbiAgfVxuXG4gIHB1YmxpYyBmb3JDb250ZXh0KF9jdHg6IENvbnRleHQpOiBNb25pdG9yIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBmb3JNZXNzYWdlKF9jdHg6IEluY29taW5nTWVzc2FnZSk6IE1vbml0b3Ige1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGxvZyh7IG5hbWUsIG1lc3NhZ2UsIGxldmVsLCBtZXRyaWMsIGVycm9yIH06IExvZ09wdGlvbnMpOiB2b2lkIHtcbiAgICB0aGlzLmNvbW1vbkxvZyh7IG5hbWUsIG1lc3NhZ2UsIGxldmVsLCBtZXRyaWMsIGVycm9yIH0pO1xuICB9XG5cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG5vLWFueVxuICBwdWJsaWMgY2FwdHVyZUxvZyhmdW5jOiAobW9uaXRvcjogQ2FwdHVyZU1vbml0b3IpID0+IGFueSwgb3B0aW9uczogQ2FwdHVyZUxvZ09wdGlvbnMsIGNsb25lZCA9IGZhbHNlKTogYW55IHtcbiAgICBsZXQgeyBlcnJvcjogZXJyb3JPYmogfSA9IG9wdGlvbnM7XG4gICAgaWYgKGVycm9yT2JqICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGVycm9yT2JqID09PSAnc3RyaW5nJykge1xuICAgICAgZXJyb3JPYmogPSB7IG1ldHJpYzogdW5kZWZpbmVkLCBtZXNzYWdlOiBlcnJvck9iaiwgbGV2ZWw6ICdlcnJvcicgfTtcbiAgICB9XG4gICAgY29uc3QgZXJyb3JPYmpGaW5hbCA9IGVycm9yT2JqO1xuICAgIGNvbnN0IGxvZyA9IGNsb25lZCA/IHRoaXMgOiB0aGlzLmNsb25lKCk7XG4gICAgY29uc3QgZG9Mb2cgPSAoZXJyb3I/OiBFcnJvciB8IHVuZGVmaW5lZCkgPT5cbiAgICAgIGxvZy5jb21tb25Mb2coe1xuICAgICAgICBuYW1lOiBvcHRpb25zLm5hbWUsXG4gICAgICAgIG1lc3NhZ2U6IG9wdGlvbnMubWVzc2FnZSxcbiAgICAgICAgbGV2ZWw6IG9wdGlvbnMubGV2ZWwsXG4gICAgICAgIG1ldHJpYzogb3B0aW9ucy5tZXRyaWMsXG4gICAgICAgIGVycm9yOlxuICAgICAgICAgIGVycm9yT2JqRmluYWwgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgIG1ldHJpYzogZXJyb3JPYmpGaW5hbC5tZXRyaWMsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogZXJyb3JPYmpGaW5hbC5tZXNzYWdlLFxuICAgICAgICAgICAgICAgIGVycm9yLFxuICAgICAgICAgICAgICAgIGxldmVsOiBlcnJvck9iakZpbmFsLmxldmVsLFxuICAgICAgICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gZnVuYyhsb2cpO1xuXG4gICAgICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQgJiYgcmVzdWx0LnRoZW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIHJlc3VsdFxuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG5vLWFueVxuICAgICAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGRvTG9nKCk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKGVycjogRXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgZG9Mb2coZXJyKTtcbiAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgZG9Mb2coKTtcblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgZG9Mb2coZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3IgYXMgRXJyb3I7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGxvZ0Vycm9yKHsgbmFtZSwgbWVzc2FnZSwgbGV2ZWwsIGVycm9yLCBtZXRyaWMgfTogTG9nRXJyb3JPcHRpb25zKTogdm9pZCB7XG4gICAgbGV0IGVycm9yTGV2ZWwgPSBsZXZlbDtcbiAgICBpZiAoZXJyb3JMZXZlbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBlcnJvckxldmVsID0gJ2Vycm9yJztcbiAgICB9XG5cbiAgICB0aGlzLmNvbW1vbkxvZyh7XG4gICAgICBuYW1lLFxuICAgICAgbWVzc2FnZSxcbiAgICAgIGxldmVsOiBsZXZlbCA9PT0gdW5kZWZpbmVkID8gJ2Vycm9yJyA6IGxldmVsLFxuICAgICAgZXJyb3I6IHsgbWV0cmljLCBlcnJvciwgbWVzc2FnZSwgbGV2ZWw6IGVycm9yTGV2ZWwgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGFydFNwYW4oeyBuYW1lLCBsZXZlbCwgbWV0cmljLCByZWZlcmVuY2VzID0gW10sIHRyYWNlIH06IFNwYW5PcHRpb25zKTogTW9uaXRvckJhc2Uge1xuICAgIGxldCBzcGFuO1xuICAgIGxldCBwYXJlbnQ7XG5cbiAgICBjb25zdCBmdWxsTGV2ZWwgPSB0aGlzLmdldEZ1bGxMZXZlbChsZXZlbCk7XG4gICAgY29uc3QgdHJhY2VyUmVmZXJlbmNlcyA9IHJlZmVyZW5jZXNcbiAgICAgIC5jb25jYXQoW3RoaXMuY2hpbGRPZih0aGlzKV0pXG4gICAgICAubWFwKChyZWZlcmVuY2UpID0+IHtcbiAgICAgICAgaWYgKHJlZmVyZW5jZSBpbnN0YW5jZW9mIERlZmF1bHRSZWZlcmVuY2UgJiYgcmVmZXJlbmNlLmlzVmFsaWQoKSkge1xuICAgICAgICAgIHJldHVybiByZWZlcmVuY2UuZ2V0VHJhY2VyUmVmZXJlbmNlKHRoaXMudHJhY2VyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcih1dGlscy5ub3ROdWxsKTtcbiAgICBpZiAoXG4gICAgICBMb2dMZXZlbFRvTGV2ZWxbZnVsbExldmVsLnNwYW5dIDw9IExvZ0xldmVsVG9MZXZlbFt0aGlzLnNwYW5Mb2dMZXZlbF0gJiZcbiAgICAgICh0cmFjZSAhPT0gdW5kZWZpbmVkIHx8IHRyYWNlclJlZmVyZW5jZXMubGVuZ3RoID4gMClcbiAgICApIHtcbiAgICAgIHNwYW4gPSB0aGlzLnRyYWNlci5zdGFydFNwYW4obmFtZSwge1xuICAgICAgICByZWZlcmVuY2VzOiB0cmFjZXJSZWZlcmVuY2VzLFxuICAgICAgICB0YWdzOiB0aGlzLmdldFNwYW5UYWdzKCksXG4gICAgICB9KTtcbiAgICAgIHBhcmVudCA9IHRoaXM7XG4gICAgfVxuXG4gICAgbGV0IGN1cnJlbnRQYXJlbnQ7XG4gICAgaWYgKHRoaXMuaGFzU3BhbigpKSB7XG4gICAgICAoeyBwYXJlbnQ6IGN1cnJlbnRQYXJlbnQgfSA9IHRoaXMuZ2V0U3BhbigpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jbG9uZSh7XG4gICAgICBzcGFuOiB7XG4gICAgICAgIG1ldHJpYyxcbiAgICAgICAgdGltZTogdGhpcy5ub3dTZWNvbmRzKCksXG4gICAgICAgIHNwYW4sXG4gICAgICAgIHBhcmVudDogcGFyZW50ID09PSB1bmRlZmluZWQgPyBjdXJyZW50UGFyZW50IDogcGFyZW50LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBlbmQoZXJyb3IgPSBmYWxzZSk6IHZvaWQge1xuICAgIGNvbnN0IHNwYW4gPSB0aGlzLmdldFNwYW4oKTtcbiAgICBjb25zdCB7IG1ldHJpYyB9ID0gc3BhbjtcbiAgICBpZiAobWV0cmljICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5ub3dTZWNvbmRzKCkgLSBzcGFuLnRpbWU7XG4gICAgICB0aGlzLmludm9rZU1ldHJpYyhtZXRyaWMudG90YWwsICh0b3RhbCkgPT4gdG90YWwub2JzZXJ2ZSh2YWx1ZSksICh0b3RhbCwgbGFiZWxzKSA9PiB0b3RhbC5vYnNlcnZlKGxhYmVscywgdmFsdWUpKTtcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICB0aGlzLmludm9rZU1ldHJpYyhcbiAgICAgICAgICBtZXRyaWMuZXJyb3IsXG4gICAgICAgICAgKGVycm9yTWV0cmljKSA9PiBlcnJvck1ldHJpYy5pbmMoKSxcbiAgICAgICAgICAoZXJyb3JNZXRyaWMsIGxhYmVscykgPT4gZXJyb3JNZXRyaWMuaW5jKGxhYmVscyksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgeyBzcGFuOiB0cmFjZXJTcGFuIH0gPSBzcGFuO1xuICAgIGlmICh0cmFjZXJTcGFuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRyYWNlclNwYW4uc2V0VGFnKHRoaXMubGFiZWxzLkVSUk9SLCAhIWVycm9yKTtcbiAgICAgIHRyYWNlclNwYW4uZmluaXNoKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG5vLWFueVxuICBwdWJsaWMgY2FwdHVyZVNwYW4oZnVuYzogKHNwYW46IE1vbml0b3JCYXNlKSA9PiBhbnksIG9wdGlvbnM6IENhcHR1cmVTcGFuT3B0aW9ucyk6IGFueSB7XG4gICAgY29uc3Qgc3BhbiA9IHRoaXMuc3RhcnRTcGFuKHtcbiAgICAgIG5hbWU6IG9wdGlvbnMubmFtZSxcbiAgICAgIGxldmVsOiBvcHRpb25zLmxldmVsLFxuICAgICAgbWV0cmljOiBvcHRpb25zLm1ldHJpYyxcbiAgICAgIHJlZmVyZW5jZXM6IG9wdGlvbnMucmVmZXJlbmNlcyxcbiAgICAgIHRyYWNlOiBvcHRpb25zLnRyYWNlLFxuICAgIH0pO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBmdW5jKHNwYW4pO1xuXG4gICAgICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQgJiYgcmVzdWx0LnRoZW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIHJlc3VsdFxuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG5vLWFueVxuICAgICAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgICAgIHNwYW4uZW5kKCk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKGVycjogRXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgc3Bhbi5lbmQodHJ1ZSk7XG4gICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHNwYW4uZW5kKCk7XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHNwYW4uZW5kKHRydWUpO1xuICAgICAgdGhyb3cgZXJyb3IgYXMgRXJyb3I7XG4gICAgfVxuICB9XG5cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG5vLWFueVxuICBwdWJsaWMgY2FwdHVyZVNwYW5Mb2coZnVuYzogKHNwYW46IENhcHR1cmVNb25pdG9yKSA9PiBhbnksIG9wdGlvbnM6IENhcHR1cmVTcGFuTG9nT3B0aW9ucyk6IGFueSB7XG4gICAgY29uc3QgbGV2ZWwgPSB0aGlzLmdldEZ1bGxMZXZlbChvcHRpb25zLmxldmVsKTtcblxuICAgIHJldHVybiB0aGlzLmNhcHR1cmVTcGFuKFxuICAgICAgKHNwYW4pID0+XG4gICAgICAgIHNwYW4uY2FwdHVyZUxvZyhcbiAgICAgICAgICBmdW5jLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IG9wdGlvbnMubmFtZSxcbiAgICAgICAgICAgIGxldmVsOiBsZXZlbC5sb2csXG4gICAgICAgICAgICBtZXNzYWdlOiBvcHRpb25zLm1lc3NhZ2UsXG4gICAgICAgICAgICBlcnJvcjpcbiAgICAgICAgICAgICAgdHlwZW9mIG9wdGlvbnMuZXJyb3IgPT09ICdvYmplY3QnXG4gICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBvcHRpb25zLmVycm9yLmxldmVsLFxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBvcHRpb25zLmVycm9yLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOiBvcHRpb25zLmVycm9yLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdHJ1ZSxcbiAgICAgICAgKSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogb3B0aW9ucy5uYW1lLFxuICAgICAgICBsZXZlbDogbGV2ZWwuc3BhbixcbiAgICAgICAgbWV0cmljOiBvcHRpb25zLm1ldHJpYyxcbiAgICAgICAgcmVmZXJlbmNlczogb3B0aW9ucy5yZWZlcmVuY2VzLFxuICAgICAgICB0cmFjZTogb3B0aW9ucy50cmFjZSxcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby1hbnlcbiAgcHVibGljIGNoaWxkT2Yoc3BhbjogU3BhbkNvbnRleHQgfCBNb25pdG9yIHwgdm9pZCk6IGFueSB7XG4gICAgaWYgKHNwYW4gPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgbm8tYW55XG4gICAgcmV0dXJuIG5ldyBDaGlsZE9mUmVmZXJlbmNlKHNwYW4gYXMgYW55KSBhcyBhbnk7XG4gIH1cblxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgbm8tYW55XG4gIHB1YmxpYyBmb2xsb3dzRnJvbShzcGFuOiBTcGFuQ29udGV4dCB8IE1vbml0b3IgfCB2b2lkKTogYW55IHtcbiAgICBpZiAoc3BhbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby1hbnlcbiAgICByZXR1cm4gbmV3IEZvbGxvd3NGcm9tUmVmZXJlbmNlKHNwYW4gYXMgYW55KSBhcyBhbnk7XG4gIH1cblxuICBwdWJsaWMgZXh0cmFjdChmb3JtYXQ6IEZvcm1hdCwgY2FycmllcjogQ2Fycmllcik6IFNwYW5Db250ZXh0IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy50cmFjZXIuZXh0cmFjdChmb3JtYXQsIGNhcnJpZXIpO1xuICB9XG5cbiAgcHVibGljIGluamVjdChmb3JtYXQ6IEZvcm1hdCwgY2FycmllcjogQ2Fycmllcik6IHZvaWQge1xuICAgIGNvbnN0IHNwYW4gPSB0aGlzLnNwYW47XG4gICAgaWYgKHNwYW4gIT09IHVuZGVmaW5lZCAmJiBzcGFuLnNwYW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy50cmFjZXIuaW5qZWN0KHNwYW4uc3Bhbi5jb250ZXh0KCksIGZvcm1hdCwgY2Fycmllcik7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlcG9ydChyZXBvcnQ6IFJlcG9ydCk6IHZvaWQge1xuICAgIHRoaXMucmVwb3J0SGFuZGxlci5yZXBvcnQocmVwb3J0KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXJ2ZU1ldHJpY3MoX3BvcnQ6IG51bWJlcik6IHZvaWQge1xuICAgIC8vIGRvIG5vdGhpbmdcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZShjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2VJbnRlcm5hbCgpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHNldExhYmVscyhsYWJlbHM6IExhYmVscyk6IHZvaWQge1xuICAgIHRoaXMuc2V0U3BhbkxhYmVscyhsYWJlbHMpO1xuICAgIHRoaXMubXV0YWJsZUN1cnJlbnRMYWJlbHMgPSB7IC4uLnRoaXMubXV0YWJsZUN1cnJlbnRMYWJlbHMsIC4uLmxhYmVscyB9O1xuICB9XG5cbiAgcHVibGljIHNldERhdGEoZGF0YTogTGFiZWxzKTogdm9pZCB7XG4gICAgdGhpcy5zZXRTcGFuTGFiZWxzKGRhdGEpO1xuICAgIHRoaXMubXV0YWJsZURhdGEgPSB7IC4uLnRoaXMubXV0YWJsZURhdGEsIC4uLmRhdGEgfTtcbiAgfVxuXG4gIHB1YmxpYyBoYXNTcGFuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNwYW4gIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTcGFuKCk6IFNwYW5EYXRhIHtcbiAgICBjb25zdCBzcGFuID0gdGhpcy5zcGFuO1xuICAgIGlmIChzcGFuID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUHJvZ3JhbW1pbmcgZXJyb3I6IENhbGxlZCBlbmQgb24gYSByZWd1bGFyIE1vbml0b3IuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNwYW47XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgY2xvc2VJbnRlcm5hbCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xuICAgICAgICB0aGlzLmxvZ2dlci5jbG9zZShyZXNvbHZlKTtcbiAgICAgIH0pLFxuICAgICAgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICAgICAgdGhpcy50cmFjZXIuY2xvc2UocmVzb2x2ZSk7XG4gICAgICB9KSxcbiAgICBdKTtcbiAgfVxuXG4gIHByaXZhdGUgaW52b2tlTWV0cmljPFQgZXh0ZW5kcyBNZXRyaWM+KFxuICAgIG1ldHJpYzogVCxcbiAgICB3aXRob3V0TGFiZWxzOiAobWV0cmljOiBUKSA9PiB2b2lkLFxuICAgIHdpdGhMYWJlbHM6IChtZXRyaWM6IFQsIGxhYmVsczogTGFiZWxzKSA9PiB2b2lkLFxuICApOiB2b2lkIHtcbiAgICBjb25zdCBsYWJlbE5hbWVzID0gbWV0cmljLmdldExhYmVsTmFtZXMoKTtcbiAgICBpZiAobGFiZWxOYW1lcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHdpdGhvdXRMYWJlbHMobWV0cmljKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbGFiZWxzID0gbWV0cmljLmdldExhYmVsTmFtZXMoKS5yZWR1Y2U8TGFiZWxzPihcbiAgICAgICAgKGFjYywgbGFiZWxOYW1lKSA9PiAoe1xuICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICBbbGFiZWxOYW1lXTogdGhpcy5tdXRhYmxlQ3VycmVudExhYmVsc1tsYWJlbE5hbWVdLFxuICAgICAgICB9KSxcbiAgICAgICAge30sXG4gICAgICApO1xuXG4gICAgICB3aXRoTGFiZWxzKG1ldHJpYywgbGFiZWxzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbW1vbkxvZyh7XG4gICAgbmFtZSxcbiAgICBtZXNzYWdlOiBtZXNzYWdlSW4sXG5cbiAgICBsZXZlbCxcbiAgICBtZXRyaWMsXG5cbiAgICBlcnJvcixcbiAgfTogQ29tbW9uTG9nT3B0aW9ucyk6IHZvaWQge1xuICAgIGNvbnN0IGluY3JlbWVudE1ldHJpYyA9IChtYXliZU1ldHJpYz86IENvdW50ZXIpID0+IHtcbiAgICAgIGlmIChtYXliZU1ldHJpYyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuaW52b2tlTWV0cmljKFxuICAgICAgICAgIG1heWJlTWV0cmljLFxuICAgICAgICAgICh0aGVNZXRyaWMpID0+IHRoZU1ldHJpYy5pbmMoKSxcbiAgICAgICAgICAodGhlTWV0cmljLCBtZXRyaWNMYWJlbHMpID0+IHRoZU1ldHJpYy5pbmMobWV0cmljTGFiZWxzKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgbGV0IGxhYmVscyA9IHt9O1xuICAgIGxldCBtZXNzYWdlID0gbWVzc2FnZUluO1xuICAgIGNvbnN0IGZ1bGxMZXZlbCA9IHRoaXMuZ2V0RnVsbExldmVsKGxldmVsKTtcbiAgICBsZXQgbG9nTGV2ZWwgPSBmdWxsTGV2ZWwubG9nO1xuICAgIGluY3JlbWVudE1ldHJpYyhtZXRyaWMpO1xuICAgIGlmIChlcnJvciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCB7IGVycm9yOiBlcnJvck9iaiB9ID0gZXJyb3I7XG4gICAgICBsYWJlbHMgPSB7XG4gICAgICAgIC4uLmxhYmVscyxcbiAgICAgICAgW0tub3duTGFiZWwuRVJST1JdOiBlcnJvck9iaiAhPT0gdW5kZWZpbmVkLFxuICAgICAgICBbS25vd25MYWJlbC5FUlJPUl9LSU5EXTogYCR7dGhpcy5nZXRFcnJvcktpbmQoZXJyb3JPYmopfWAsXG4gICAgICB9O1xuICAgICAgY29uc3QgZXJyb3JMZXZlbCA9IGVycm9yLmxldmVsID09PSB1bmRlZmluZWQgPyAnZXJyb3InIDogZXJyb3IubGV2ZWw7XG4gICAgICBpZiAoZXJyb3JPYmogIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpbmNyZW1lbnRNZXRyaWMoZXJyb3IubWV0cmljKTtcbiAgICAgICAgbG9nTGV2ZWwgPSBlcnJvckxldmVsO1xuICAgICAgICBjb25zdCB7IG1lc3NhZ2U6IGVycm9yTWVzc2FnZSB9ID0gZXJyb3I7XG4gICAgICAgIGlmIChlcnJvck1lc3NhZ2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG1lc3NhZ2UgPSBlcnJvck1lc3NhZ2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgZG90ID0gZXJyb3JNZXNzYWdlLmVuZHNXaXRoKCcuJykgPyAnJyA6ICcuJztcbiAgICAgICAgICBtZXNzYWdlID0gYCR7ZXJyb3JNZXNzYWdlfSR7ZG90fSAke2Vycm9yT2JqLm1lc3NhZ2V9YDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEdhdGhlciB1cCBhbGwgaW5mb3JtYXRpb24gZm9yIGxvZ2dpbmdcbiAgICB0aGlzLmxvZ2dlci5sb2coe1xuICAgICAgbmFtZSxcbiAgICAgIGxldmVsOiBsb2dMZXZlbCxcbiAgICAgIG1lc3NhZ2UsXG4gICAgICBsYWJlbHM6IGNvbnZlcnRUYWdMYWJlbHModGhpcy5nZXRBbGxSYXdMYWJlbHMobGFiZWxzKSksXG4gICAgICBkYXRhOiBjb252ZXJ0VGFnTGFiZWxzKHRoaXMuZ2V0QWxsUmF3RGF0YSgpKSxcbiAgICAgIGVycm9yOiBlcnJvciA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogZXJyb3IuZXJyb3IsXG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5zcGFuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHsgc3BhbjogdHJhY2VyU3BhbiB9ID0gdGhpcy5zcGFuO1xuICAgICAgaWYgKExvZ0xldmVsVG9MZXZlbFtmdWxsTGV2ZWwuc3Bhbl0gPD0gTG9nTGV2ZWxUb0xldmVsW3RoaXMuc3BhbkxvZ0xldmVsXSAmJiB0cmFjZXJTcGFuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG5vLWFueVxuICAgICAgICBsZXQgc3BhbkxvZzogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHtcbiAgICAgICAgICBldmVudDogbmFtZSxcbiAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICAgIC4uLnRoaXMuZ2V0U3BhblRhZ3MobGFiZWxzKSxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGVycm9yICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjb25zdCB7IGVycm9yOiBlcnJvck9iaiB9ID0gZXJyb3I7XG4gICAgICAgICAgaWYgKGVycm9yT2JqICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHNwYW5Mb2cgPSB7XG4gICAgICAgICAgICAgIC4uLnNwYW5Mb2csXG4gICAgICAgICAgICAgIFt0aGlzLmxhYmVscy5FUlJPUl9PQkpFQ1RdOiBlcnJvck9iaixcbiAgICAgICAgICAgICAgW3RoaXMubGFiZWxzLkVSUk9SX1NUQUNLXTogZXJyb3JPYmouc3RhY2ssXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBPbmx5IGxvZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBjdXJyZW50IHBvaW50IGluIHRpbWVcbiAgICAgICAgdHJhY2VyU3Bhbi5sb2coc3BhbkxvZyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRFcnJvcktpbmQoZXJyb3I/OiBFcnJvciB8IHVuZGVmaW5lZCk6IHN0cmluZyB8IG51bWJlciB7XG4gICAgaWYgKGVycm9yID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiAnbi9hJztcbiAgICB9XG5cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgbm8tYW55XG4gICAgcmV0dXJuIChlcnJvciBhcyBhbnkpLmNvZGUgPT09IHVuZGVmaW5lZCA/IGVycm9yLmNvbnN0cnVjdG9yLm5hbWUgOiAoZXJyb3IgYXMgYW55KS5jb2RlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTcGFuVGFncyhsYWJlbHM6IExhYmVscyA9IHt9KTogTGFiZWxzIHtcbiAgICBsZXQgc3BhbkxhYmVscyA9IHRoaXMuZ2V0QWxsUmF3TGFiZWxzKCk7XG4gICAgbGV0IHNwYW5EYXRhID0gdGhpcy5nZXRBbGxSYXdEYXRhKCk7XG4gICAgaWYgKHRoaXMuaGFzU3BhbigpKSB7XG4gICAgICBjb25zdCB7IHBhcmVudCB9ID0gdGhpcy5nZXRTcGFuKCk7XG4gICAgICBpZiAocGFyZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgcGFyZW50TGFiZWxzID0gbmV3IFNldChPYmplY3Qua2V5cyhwYXJlbnQubGFiZWxzKSk7XG4gICAgICAgIHNwYW5MYWJlbHMgPSBfLm9taXRCeShzcGFuTGFiZWxzLCAoX3ZhbHVlLCBsYWJlbCkgPT4gcGFyZW50TGFiZWxzLmhhcyhsYWJlbCkpO1xuICAgICAgICBjb25zdCBwYXJlbnREYXRhID0gbmV3IFNldChPYmplY3Qua2V5cyhwYXJlbnQubXV0YWJsZURhdGEpKTtcbiAgICAgICAgc3BhbkRhdGEgPSBfLm9taXRCeShzcGFuRGF0YSwgKF92YWx1ZSwgbGFiZWwpID0+IHBhcmVudERhdGEuaGFzKGxhYmVsKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnZlcnRUYWdMYWJlbHMoe1xuICAgICAgLi4uc3BhbkxhYmVscyxcbiAgICAgIC4uLnNwYW5EYXRhLFxuICAgICAgLi4ubGFiZWxzLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBbGxSYXdMYWJlbHMobGFiZWxzPzogTGFiZWxzKTogTGFiZWxzIHtcbiAgICBpZiAobGFiZWxzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLm11dGFibGVDdXJyZW50TGFiZWxzO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi50aGlzLm11dGFibGVDdXJyZW50TGFiZWxzLFxuICAgICAgLi4ubGFiZWxzLFxuICAgICAgW3RoaXMubGFiZWxzLlNFUlZJQ0VdOiB0aGlzLnNlcnZpY2UsXG4gICAgICBbdGhpcy5sYWJlbHMuQ09NUE9ORU5UXTogdGhpcy5jb21wb25lbnQsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QWxsUmF3RGF0YShsYWJlbHM/OiBMYWJlbHMpOiBMYWJlbHMge1xuICAgIGlmIChsYWJlbHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRoaXMubXV0YWJsZURhdGE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgLi4udGhpcy5tdXRhYmxlRGF0YSwgLi4ubGFiZWxzIH07XG4gIH1cblxuICBwcml2YXRlIHNldFNwYW5MYWJlbHMobGFiZWxzOiBMYWJlbHMpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zcGFuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHsgc3BhbjogdHJhY2VyU3BhbiB9ID0gdGhpcy5zcGFuO1xuICAgICAgaWYgKHRyYWNlclNwYW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCB0YWdMYWJlbHMgPSBjb252ZXJ0VGFnTGFiZWxzKGxhYmVscyk7XG4gICAgICAgIE9iamVjdC5rZXlzKHRhZ0xhYmVscykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSB0YWdMYWJlbHNba2V5XTtcbiAgICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdHJhY2VyU3Bhbi5zZXRUYWcoa2V5LCB2YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEZ1bGxMZXZlbChsZXZlbEluPzogTG9nTGV2ZWxPcHRpb24pOiBGdWxsTG9nTGV2ZWxPcHRpb24ge1xuICAgIGxldCBsZXZlbCA9IGxldmVsSW47XG4gICAgaWYgKGxldmVsID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGxldmVsID0gJ2luZm8nO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgbGV2ZWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBsb2c6IGxldmVsLFxuICAgICAgICBzcGFuOiBsZXZlbCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxvZzogbGV2ZWwubG9nLFxuICAgICAgc3BhbjogbGV2ZWwuc3BhbiA9PT0gdW5kZWZpbmVkID8gbGV2ZWwubG9nIDogbGV2ZWwuc3BhbixcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9uZShcbiAgICBvcHRpb25zOiB7XG4gICAgICByZWFkb25seSBjb21wb25lbnQ/OiBzdHJpbmc7XG4gICAgICByZWFkb25seSBtZXJnZUxhYmVscz86IExhYmVscztcbiAgICAgIHJlYWRvbmx5IG1lcmdlRGF0YT86IExhYmVscztcbiAgICAgIHJlYWRvbmx5IHNwYW4/OiBTcGFuRGF0YTtcbiAgICB9ID0ge30sXG4gICk6IHRoaXMge1xuICAgIGNvbnN0IHsgY29tcG9uZW50LCBtZXJnZUxhYmVscywgbWVyZ2VEYXRhLCBzcGFuIH0gPSBvcHRpb25zO1xuICAgIGxldCBtZXJnZWRMYWJlbHMgPSB0aGlzLm11dGFibGVDdXJyZW50TGFiZWxzO1xuICAgIGlmIChtZXJnZUxhYmVscyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBtZXJnZWRMYWJlbHMgPSB7IC4uLnRoaXMubXV0YWJsZUN1cnJlbnRMYWJlbHMsIC4uLm1lcmdlTGFiZWxzIH07XG4gICAgfVxuXG4gICAgbGV0IG1lcmdlZERhdGEgPSB0aGlzLm11dGFibGVEYXRhO1xuICAgIGlmIChtZXJnZURhdGEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgbWVyZ2VkRGF0YSA9IHsgLi4udGhpcy5tdXRhYmxlRGF0YSwgLi4ubWVyZ2VEYXRhIH07XG4gICAgfVxuXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG5vLWFueVxuICAgIHJldHVybiBuZXcgKHRoaXMuY29uc3RydWN0b3IgYXMgYW55KSh7XG4gICAgICBzZXJ2aWNlOiB0aGlzLnNlcnZpY2UsXG4gICAgICBjb21wb25lbnQ6IGNvbXBvbmVudCA9PT0gdW5kZWZpbmVkID8gdGhpcy5jb21wb25lbnQgOiBjb21wb25lbnQsXG4gICAgICBsb2dnZXI6IHRoaXMubG9nZ2VyLFxuICAgICAgdHJhY2VyOiB0aGlzLnRyYWNlcixcbiAgICAgIG5vdzogdGhpcy5ub3csXG4gICAgICBsYWJlbHM6IG1lcmdlZExhYmVscyxcbiAgICAgIGRhdGE6IG1lcmdlZERhdGEsXG4gICAgICBzcGFuOiBzcGFuID09PSB1bmRlZmluZWQgPyB0aGlzLnNwYW4gOiBzcGFuLFxuICAgICAgc3BhbkxvZ0xldmVsOiB0aGlzLnNwYW5Mb2dMZXZlbCxcbiAgICAgIHJlcG9ydEhhbmRsZXI6IHRoaXMucmVwb3J0SGFuZGxlcixcbiAgICB9KTtcbiAgfVxufVxuIl19
{
"name": "@neo-one/monitor",
"version": "1.1.2",
"version": "1.1.3",
"author": "Alex DiCarlo <alexdicarlo@gmail.com>",

@@ -22,7 +22,6 @@ "description": "NEO•ONE monitoring.",

"dependencies": {
"@neo-one/types": "^1.1.1",
"@neo-one/utils": "^1.1.1",
"@neo-one/utils": "^1.1.2",
"@types/koa": "^2.0.48",
"@types/koa-mount": "^3.0.1",
"@types/lodash": "^4.14.120",
"@types/lodash": "^4.14.134",
"koa": "^2.7.0",

@@ -32,4 +31,4 @@ "koa-mount": "^4.0.0",

"opentracing": "^0.14.3",
"prom-client": "^11.2.1",
"rxjs": "^6.4.0",
"prom-client": "^11.5.1",
"rxjs": "^6.5.2",
"tslib": "^1.9.3"

@@ -41,3 +40,3 @@ },

"engines": {
"node": ">=8.9.0"
"node": ">=8.16.0"
},

@@ -44,0 +43,0 @@ "main": "index.js",

@@ -72,10 +72,10 @@ /// <reference types="node" />

readonly help?: string;
readonly labelNames?: ReadonlyArray<Label>;
readonly labels?: ReadonlyArray<Labels>;
readonly labelNames?: readonly Label[];
readonly labels?: readonly Labels[];
}
export interface BucketedMetricOptions extends MetricOptions {
readonly buckets?: ReadonlyArray<number>;
readonly buckets?: readonly number[];
}
export interface PercentiledMetricOptions extends MetricOptions {
readonly percentiles?: ReadonlyArray<number>;
readonly percentiles?: readonly number[];
}

@@ -89,3 +89,3 @@ export declare type AllMetricOptions = MetricOptions | BucketedMetricOptions | PercentiledMetricOptions;

readonly metric: T;
readonly values: ReadonlyArray<MetricValue>;
readonly values: readonly MetricValue[];
}

@@ -100,3 +100,3 @@ export interface CollectedMetrics<T extends MetricOptions | BucketedMetricOptions> {

export interface Report {
readonly logs: ReadonlyArray<CollectedLoggerLogOptions>;
readonly logs: readonly CollectedLoggerLogOptions[];
readonly metrics: MetricCollection;

@@ -109,3 +109,3 @@ }

export interface Counter extends CounterBase {
readonly getLabelNames: () => ReadonlyArray<Label>;
readonly getLabelNames: () => readonly Label[];
}

@@ -121,3 +121,3 @@ export interface GaugeBase {

export interface Gauge extends GaugeBase {
readonly getLabelNames: () => ReadonlyArray<Label>;
readonly getLabelNames: () => readonly Label[];
}

@@ -129,3 +129,3 @@ export interface HistogramBase {

export interface Histogram extends HistogramBase {
readonly getLabelNames: () => ReadonlyArray<Label>;
readonly getLabelNames: () => readonly Label[];
}

@@ -137,3 +137,3 @@ export interface SummaryBase {

export interface Summary extends SummaryBase {
readonly getLabelNames: () => ReadonlyArray<Label>;
readonly getLabelNames: () => readonly Label[];
}

@@ -140,0 +140,0 @@ export declare type Metric = Counter | Gauge | Histogram | Summary;

@@ -87,2 +87,2 @@ "use strict";

//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBaURBLElBQVksVUE0RVg7QUE1RUQsV0FBWSxVQUFVO0lBQ3BCLGlDQUFtQixDQUFBO0lBQ25CLHFDQUF1QixDQUFBO0lBQ3ZCLG9DQUFvQztJQUNwQyx5Q0FBMkIsQ0FBQTtJQUMzQixzREFBc0Q7SUFDdEQsMkNBQTZCLENBQUE7SUFDN0IseUVBQXlFO0lBQ3pFLDREQUE0RDtJQUM1RCxpQ0FBbUIsQ0FBQTtJQUNuQiw2RUFBNkU7SUFDN0UsaUNBQW1CLENBQUE7SUFDbkIsNkVBQTZFO0lBQzdFLDZCQUFlLENBQUE7SUFDZiw4Q0FBOEM7SUFDOUMsdUNBQXlCLENBQUE7SUFDekIsc0JBQXNCO0lBQ3RCLDJDQUE2QixDQUFBO0lBQzdCLGNBQWM7SUFDZCxtQ0FBcUIsQ0FBQTtJQUNyQiwwRUFBMEU7SUFDMUUseUNBQTJCLENBQUE7SUFDM0IseUVBQXlFO0lBQ3pFLG1EQUFxQyxDQUFBO0lBQ3JDLDZFQUE2RTtJQUM3RSwrREFBK0Q7SUFDL0QsbUNBQXFCLENBQUE7SUFDckIsNEVBQTRFO0lBQzVFLDZFQUE2RTtJQUM3RSx5Q0FBeUM7SUFDekMsaUVBQW1ELENBQUE7SUFDbkQsOEVBQThFO0lBQzlFLDJFQUEyRTtJQUMzRSx5QkFBeUI7SUFDekIsMkNBQTZCLENBQUE7SUFDN0IsK0RBQStEO0lBQy9ELDZDQUErQixDQUFBO0lBQy9CLGdFQUFnRTtJQUNoRSxxQ0FBdUIsQ0FBQTtJQUN2Qix3RUFBd0U7SUFDeEUsa0RBQWtEO0lBQ2xELHFDQUF1QixDQUFBO0lBQ3ZCLHdCQUF3QjtJQUN4QixxQ0FBdUIsQ0FBQTtJQUN2QixzRUFBc0U7SUFDdEUsNkRBQTZEO0lBQzdELDJDQUE2QixDQUFBO0lBQzdCLHdFQUF3RTtJQUN4RSx3RUFBd0U7SUFDeEUsd0RBQXdEO0lBQ3hELHFEQUF1QyxDQUFBO0lBQ3ZDLHVFQUF1RTtJQUN2RSw4RUFBOEU7SUFDOUUscUNBQXVCLENBQUE7SUFFdkIsMENBQTBDO0lBQzFDLDJEQUE2QyxDQUFBO0lBQzdDLHNFQUFzRTtJQUN0RSxtQkFBbUI7SUFDbkIscUNBQXVCLENBQUE7SUFDdkIsOENBQThDO0lBQzlDLDhDQUFnQyxDQUFBO0lBQ2hDLGtDQUFrQztJQUNsQyxpREFBbUMsQ0FBQTtJQUNuQyxpQkFBaUI7SUFDakIscURBQXVDLENBQUE7SUFDdkMsVUFBVTtJQUNWLDJDQUE2QixDQUFBO0lBQzdCLG1CQUFtQjtJQUNuQiw2REFBK0MsQ0FBQTtJQUMvQyxzQkFBc0I7SUFDdEIsdURBQXlDLENBQUE7SUFDekMsb0NBQW9DO0lBQ3BDLHVDQUF5QixDQUFBO0lBQ3pCLDBCQUEwQjtJQUMxQixtQ0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBNUVXLFVBQVUsR0FBVixrQkFBVSxLQUFWLGtCQUFVLFFBNEVyQjtBQUVELElBQVksTUFJWDtBQUpELFdBQVksTUFBTTtJQUNoQiwrQkFBcUIsQ0FBQTtJQUNyQiwyQkFBaUIsQ0FBQTtJQUNqQiwyQkFBaUIsQ0FBQTtBQUNuQixDQUFDLEVBSlcsTUFBTSxHQUFOLGNBQU0sS0FBTixjQUFNLFFBSWpCIiwiZmlsZSI6Im5lby1vbmUtbW9uaXRvci9zcmMvdHlwZXMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmNvbWluZ01lc3NhZ2UgfSBmcm9tICdodHRwJztcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tICdrb2EnO1xuXG5leHBvcnQgdHlwZSBMb2dGaWVsZCA9XG4gIC8vIFRoZSB0eXBlIG9yIFwia2luZFwiIG9mIGFuIGVycm9yIChvbmx5IGZvciBldmVudD1cImVycm9yXCIgbG9ncykuXG4gIC8vIEUuZy4sIFwiRXhjZXB0aW9uXCIsIFwiT1NFcnJvclwiXG4gIHwgJ2Vycm9yLmtpbmQnXG4gIC8vIEZvciBsYW5ndWFnZXMgdGhhdCBzdXBwb3J0IHN1Y2ggYSB0aGluZyAoZS5nLiwgSmF2YSwgUHl0aG9uKSwgdGhlIGFjdHVhbFxuICAvLyBUaHJvd2FibGUvRXhjZXB0aW9uL0Vycm9yIG9iamVjdCBpbnN0YW5jZSBpdHNlbGYuXG4gIC8vIEUuZy4sIEEgamF2YS5sYW5nLlVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIGluc3RhbmNlLCBhIHB5dGhvblxuICAvLyBleGNlcHRpb25zLk5hbWVFcnJvciBpbnN0YW5jZVxuICB8ICdlcnJvci5vYmplY3QnXG4gIC8vIEEgc3RhYmxlIGlkZW50aWZpZXIgZm9yIHNvbWUgbm90YWJsZSBtb21lbnQgaW4gdGhlIGxpZmV0aW1lIG9mIGEgU3Bhbi5cbiAgLy8gRm9yIGluc3RhbmNlLCBhIG11dGV4IGxvY2sgYWNxdWlzaXRpb24gb3IgcmVsZWFzZSBvciB0aGUgc29ydHMgb2YgbGlmZXRpbWVcbiAgLy8gZXZlbnRzIGluIGEgYnJvd3NlciBwYWdlIGxvYWQgZGVzY3JpYmVkIGluIHRoZSBQZXJmb3JtYW5jZS50aW1pbmdcbiAgLy8gc3BlY2lmaWNhdGlvbi4gRS5nLiwgZnJvbSBaaXBraW4sIFwiY3NcIiwgXCJzclwiLCBcInNzXCIsIG9yIFwiY3JcIi5cbiAgLy8gT3IsIG1vcmUgZ2VuZXJhbGx5LCBcImluaXRpYWxpemVkXCIgb3IgXCJ0aW1lZCBvdXRcIi4gRm9yIGVycm9ycywgXCJlcnJvclwiXG4gIHwgJ2V2ZW50J1xuICAvLyBBIGNvbmNpc2UsIGh1bWFuLXJlYWRhYmxlLCBvbmUtbGluZSBtZXNzYWdlIGV4cGxhaW5pbmcgdGhlIGV2ZW50LlxuICAvLyBFLmcuLCBcIkNvdWxkIG5vdCBjb25uZWN0IHRvIGJhY2tlbmRcIiwgXCJDYWNoZSBpbnZhbGlkYXRpb24gc3VjY2VlZGVkXCJcbiAgfCAnbWVzc2FnZSdcbiAgLy8gQSBzdGFjayB0cmFjZSBpbiBwbGF0Zm9ybS1jb252ZW50aW9uYWwgZm9ybWF0OyBtYXkgb3IgbWF5IG5vdCBwZXJ0YWluXG4gIC8vIHRvIGFuIGVycm9yLlxuICB8ICdzdGFjayc7XG5cbmV4cG9ydCB0eXBlIExhYmVsID0gc3RyaW5nO1xuZXhwb3J0IHR5cGUgTGFiZWxWYWx1ZSA9IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCB2b2lkIHwgdW5kZWZpbmVkO1xuZXhwb3J0IGludGVyZmFjZSBMYWJlbHMge1xuICByZWFkb25seSBbbGFiZWw6IHN0cmluZ106IExhYmVsVmFsdWU7XG59XG5cbi8qIEdlbmVyYWwgZ3VpZGVsaW5lcyAtXG4gIC0gJ2luZm8nXG4gICAgLSBmb3IgcHJvZHVjdGlvbiBsb2dnZWQgbWVzc2FnZXNcbiAgICAtIGZvciBwcm9kdWN0aW9uIGxvZ2dlZCBzcGFuc1xuICAtICd2ZXJib3NlJ1xuICAgIC0gZm9yIGRldmVsb3BtZW50IGxvZ2dlZCBtZXNzYWdlcyAoaS5lLiB0byBjb25zb2xlKVxuICAgIC0gZm9yIHByb2R1Y3Rpb24gbG9nZ2VkIG1ldHJpY3NcbiAgLSBGb3JjZSBtZXRyaWNzIGFuZCBzcGFucyB0byBiZSBsb2dnZWQgYnkgdXNpbmcgbWV0cmljTGV2ZWwgYW5kIHNwYW5MZXZlbFxuICAgIHJlc3BlY3RpdmVseSBhdCB2ZXJib3NlIG9yIGhpZ2hlci5cbiovXG5leHBvcnQgdHlwZSBMb2dMZXZlbCA9ICdlcnJvcicgfCAnd2FybicgfCAnaW5mbycgfCAndmVyYm9zZScgfCAnZGVidWcnIHwgJ3NpbGx5JztcbmV4cG9ydCB0eXBlIExvZ0xldmVsT3B0aW9uID1cbiAgfCBMb2dMZXZlbFxuICB8IHtcbiAgICAgIHJlYWRvbmx5IGxvZzogTG9nTGV2ZWw7XG4gICAgICByZWFkb25seSBzcGFuPzogTG9nTGV2ZWw7XG4gICAgfTtcblxuZXhwb3J0IGVudW0gS25vd25MYWJlbCB7XG4gIFNFUlZJQ0UgPSAnc2VydmljZScsXG4gIENPTVBPTkVOVCA9ICdjb21wb25lbnQnLFxuICAvLyBEYXRhYmFzZSBpbnN0YW5jZSBuYW1lLiBFLmcuIG1haW5cbiAgREJfSU5TVEFOQ0UgPSAnZGIuaW5zdGFuY2UnLFxuICAvLyBEYXRhYmFzZSBzdGF0ZW1lbnQuIEUuZy4gU0VMRUNUICogRlJPTSB3dXNlciB0YWJsZTtcbiAgREJfU1RBVEVNRU5UID0gJ2RiLnN0YXRlbWVudCcsXG4gIC8vIERhdGFiYXNlIHR5cGUuIEZvciBhbnkgU1FMIGRhdGFiYXNlLCBcInNxbFwiLiBGb3Igb3RoZXJzLCB0aGUgbG93ZXItY2FzZVxuICAvLyBkYXRhYmFzZSBjYXRlZ29yeSwgZS5nLiBcImNhc3NhbmRyYVwiLCBcImhiYXNlXCIsIG9yIFwicmVkaXNcIi5cbiAgREJfVFlQRSA9ICdkYi50eXBlJyxcbiAgLy8gVXNlcm5hbWUgZm9yIGFjY2Vzc2luZyBkYXRhYmFzZS4gRS5nLiwgXCJyZWFkb25seV91c2VyXCIgb3IgXCJyZXBvcnRpbmdfdXNlclwiXG4gIERCX1VTRVIgPSAnZGIudXNlcicsXG4gIC8vIHRydWUgaWYgYW5kIG9ubHkgaWYgdGhlIGFwcGxpY2F0aW9uIGNvbnNpZGVycyB0aGUgb3BlcmF0aW9uIHRvIGhhdmUgZmFpbGVkXG4gIEVSUk9SID0gJ2Vycm9yJyxcbiAgLy8gRXJyb3IgY29kZSBpZiBhdmFpbGFibGUgb3IgY29uc3RydWN0b3IgbmFtZVxuICBFUlJPUl9LSU5EID0gJ2Vycm9yLmtpbmQnLFxuICAvLyBBY3R1YWwgRXJyb3Igb2JqZWN0XG4gIEVSUk9SX09CSkVDVCA9ICdlcnJvci5vYmplY3QnLFxuICAvLyBFcnJvciBzdGFja1xuICBFUlJPUl9TVEFDSyA9ICdzdGFjaycsXG4gIC8vIEhUVFAgbWV0aG9kIG9mIHRoZSByZXF1ZXN0IGZvciB0aGUgYXNzb2NpYXRlZCBTcGFuLiBFLmcuLCBcIkdFVFwiLCBcIlBPU1RcIlxuICBIVFRQX01FVEhPRCA9ICdodHRwLm1ldGhvZCcsXG4gIC8vIEhUVFAgcmVzcG9uc2Ugc3RhdHVzIGNvZGUgZm9yIHRoZSBhc3NvY2lhdGVkIFNwYW4uIEUuZy4sIDIwMCwgNTAzLCA0MDRcbiAgSFRUUF9TVEFUVVNfQ09ERSA9ICdodHRwLnN0YXR1c19jb2RlJyxcbiAgLy8gVVJMIG9mIHRoZSByZXF1ZXN0IGJlaW5nIGhhbmRsZWQgaW4gdGhpcyBzZWdtZW50IG9mIHRoZSB0cmFjZSwgaW4gc3RhbmRhcmRcbiAgLy8gVVJJIGZvcm1hdC4gRS5nLiwgXCJodHRwczovL2RvbWFpbi5uZXQvcGF0aC90bz9yZXNvdXJjZT1oZXJlXCJcbiAgSFRUUF9VUkwgPSAnaHR0cC51cmwnLFxuICAvLyBBbiBhZGRyZXNzIGF0IHdoaWNoIG1lc3NhZ2VzIGNhbiBiZSBleGNoYW5nZWQuIEUuZy4gQSBLYWZrYSByZWNvcmQgaGFzIGFuXG4gIC8vIGFzc29jaWF0ZWQgXCJ0b3BpYyBuYW1lXCIgdGhhdCBjYW4gYmUgZXh0cmFjdGVkIGJ5IHRoZSBpbnN0cnVtZW50ZWQgcHJvZHVjZXJcbiAgLy8gb3IgY29uc3VtZXIgYW5kIHN0b3JlZCB1c2luZyB0aGlzIHRhZy5cbiAgTUVTU0FHRV9CVVNfREVTVElOQVRJT04gPSAnbWVzc2FnZV9idXMuZGVzdGluYXRpb24nLFxuICAvLyBSZW1vdGUgXCJhZGRyZXNzXCIsIHN1aXRhYmxlIGZvciB1c2UgaW4gYSBuZXR3b3JraW5nIGNsaWVudCBsaWJyYXJ5LiBUaGlzIG1heVxuICAvLyBiZSBhIFwiaXA6cG9ydFwiLCBhIGJhcmUgXCJob3N0bmFtZVwiLCBhIEZRRE4sIG9yIGV2ZW4gYSBKREJDIHN1YnN0cmluZyBsaWtlXG4gIC8vIFwibXlzcWw6Ly9wcm9kLWRiOjMzMDZcIlxuICBQRUVSX0FERFJFU1MgPSAncGVlci5hZGRyZXNzJyxcbiAgLy8gUmVtb3RlIGhvc3RuYW1lLiBFLmcuLCBcIm9wZW50cmFjaW5nLmlvXCIsIFwiaW50ZXJuYWwuZG5zLm5hbWVcIlxuICBQRUVSX0hPU1ROQU1FID0gJ3BlZXIuaG9zdG5hbWUnLFxuICAvLyBSZW1vdGUgSVB2NCBhZGRyZXNzIGFzIGEgLi1zZXBhcmF0ZWQgdHVwbGUuIEUuZy4sIFwiMTI3LjAuMC4xXCJcbiAgUEVFUl9JUFY0ID0gJ3BlZXIuaXB2NCcsXG4gIC8vIFJlbW90ZSBJUHY2IGFkZHJlc3MgYXMgYSBzdHJpbmcgb2YgY29sb24tc2VwYXJhdGVkIDQtY2hhciBoZXggdHVwbGVzLlxuICAvLyBFLmcuLCBcIjIwMDE6MGRiODo4NWEzOjAwMDA6MDAwMDo4YTJlOjAzNzA6NzMzNFwiXG4gIFBFRVJfSVBWNiA9ICdwZWVyLmlwdjYnLFxuICAvLyBSZW1vdGUgcG9ydC4gRS5nLiwgODBcbiAgUEVFUl9QT1JUID0gJ3BlZXIucG9ydCcsXG4gIC8vIFJlbW90ZSBzZXJ2aWNlIG5hbWUgKGZvciBzb21lIHVuc3BlY2lmaWVkIGRlZmluaXRpb24gb2YgXCJzZXJ2aWNlXCIpLlxuICAvLyBFLmcuLCBcImVsYXN0aWNzZWFyY2hcIiwgXCJhX2N1c3RvbV9taWNyb3NlcnZpY2VcIiwgXCJtZW1jYWNoZVwiXG4gIFBFRVJfU0VSVklDRSA9ICdwZWVyLnNlcnZpY2UnLFxuICAvLyBJZiBncmVhdGVyIHRoYW4gMCwgYSBoaW50IHRvIHRoZSBUcmFjZXIgdG8gZG8gaXRzIGJlc3QgdG8gY2FwdHVyZSB0aGVcbiAgLy8gdHJhY2UuIElmIDAsIGEgaGludCB0byB0aGUgdHJhY2UgdG8gbm90LWNhcHR1cmUgdGhlIHRyYWNlLiBJZiBhYnNlbnQsXG4gIC8vIHRoZSBUcmFjZXIgc2hvdWxkIHVzZSBpdHMgZGVmYXVsdCBzYW1wbGluZyBtZWNoYW5pc20uXG4gIFNBTVBMSU5HX1BSSU9SSVRZID0gJ3NhbXBsaW5nLnByaW9yaXR5JyxcbiAgLy8gRWl0aGVyIFwiY2xpZW50XCIgb3IgXCJzZXJ2ZXJcIiBmb3IgdGhlIGFwcHJvcHJpYXRlIHJvbGVzIGluIGFuIFJQQywgYW5kXG4gIC8vIFwicHJvZHVjZXJcIiBvciBcImNvbnN1bWVyXCIgZm9yIHRoZSBhcHByb3ByaWF0ZSByb2xlcyBpbiBhIG1lc3NhZ2luZyBzY2VuYXJpby5cbiAgU1BBTl9LSU5EID0gJ3NwYW4ua2luZCcsXG5cbiAgLy8gTG93IGNhcmRpbmFsaXR5IHZlcnNpb24gb2YgZGIuc3RhdGVtZW50XG4gIERCX1NUQVRFTUVOVF9TVU1NQVJZID0gJ2RiLnN0YXRlbWVudC5zdW1tYXJ5JyxcbiAgLy8gVGhlIHBhdGggb2YgdGhlIHJlcXVlc3QuIE11c3QgYmUgbG93IGNhcmRpbmFsaXR5LiBFLmcuIC9hY2NvdW50LzppZFxuICAvLyBub3QgL2FjY291bnQvMTIzXG4gIEhUVFBfUEFUSCA9ICdodHRwLnBhdGgnLFxuICAvLyBGdWxsIHBhdGggb2YgdGhlIHJlcXVlc3QsIGhpZ2ggY2FyZGluYWxpdHkuXG4gIEhUVFBfRlVMTFBBVEggPSAnaHR0cC5mdWxsX3BhdGgnLFxuICAvLyBUaGUgdXNlciBhZ2VudCBmb3IgdGhlIHJlcXVlc3QuXG4gIEhUVFBfVVNFUl9BR0VOVCA9ICdodHRwLnVzZXJfYWdlbnQnLFxuICAvLyBSZXF1ZXN0IGxlbmd0aFxuICBIVFRQX1JFUVVFU1RfU0laRSA9ICdodHRwLnJlcXVlc3Quc2l6ZScsXG4gIC8vIEhlYWRlcnNcbiAgSFRUUF9IRUFERVJTID0gJ2h0dHAuaGVhZGVycycsXG4gIC8vIFJlcXVlc3QgcHJvdG9jb2xcbiAgSFRUUF9SRVFVRVNUX1BST1RPQ09MID0gJ2h0dHAucmVxdWVzdC5wcm90b2NvbCcsXG4gIC8vIFJlcXVlc3QgcXVlcnlzdHJpbmdcbiAgSFRUUF9SRVFVRVNUX1FVRVJZID0gJ2h0dHAucmVxdWVzdC5xdWVyeScsXG4gIC8vIFJQQyBtZXRob2QgY2FsbGVkLiBFLmcuIGdldGJsb2NrLlxuICBSUENfTUVUSE9EID0gJ3JwYy5tZXRob2QnLFxuICAvLyBSUEMgdHlwZSwgZS5nLiBqc29ucnBjLlxuICBSUENfVFlQRSA9ICdycGMudHlwZScsXG59XG5cbmV4cG9ydCBlbnVtIEZvcm1hdCB7XG4gIEhUVFAgPSAnaHR0cF9oZWFkZXJzJyxcbiAgVEVYVCA9ICd0ZXh0X21hcCcsXG4gIEJJTkFSWSA9ICdiaW5hcnknLFxufVxuZXhwb3J0IGludGVyZmFjZSBDYXJyaWVyIHtcbiAgcmVhZG9ubHkgX19jYXJyaWVyOiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sbGVjdGVkTG9nZ2VyTG9nT3B0aW9ucyB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgbGV2ZWw6IExvZ0xldmVsO1xuICByZWFkb25seSBtZXNzYWdlPzogc3RyaW5nO1xuICByZWFkb25seSBsYWJlbHM/OiBMYWJlbHM7XG4gIHJlYWRvbmx5IGRhdGE/OiBMYWJlbHM7XG4gIHJlYWRvbmx5IGVycm9yPzoge1xuICAgIHJlYWRvbmx5IG1lc3NhZ2U/OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgc3RhY2s/OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgY29kZT86IHN0cmluZztcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZXRyaWNPcHRpb25zIHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBoZWxwPzogc3RyaW5nO1xuICByZWFkb25seSBsYWJlbE5hbWVzPzogUmVhZG9ubHlBcnJheTxMYWJlbD47XG4gIHJlYWRvbmx5IGxhYmVscz86IFJlYWRvbmx5QXJyYXk8TGFiZWxzPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWNrZXRlZE1ldHJpY09wdGlvbnMgZXh0ZW5kcyBNZXRyaWNPcHRpb25zIHtcbiAgcmVhZG9ubHkgYnVja2V0cz86IFJlYWRvbmx5QXJyYXk8bnVtYmVyPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQZXJjZW50aWxlZE1ldHJpY09wdGlvbnMgZXh0ZW5kcyBNZXRyaWNPcHRpb25zIHtcbiAgcmVhZG9ubHkgcGVyY2VudGlsZXM/OiBSZWFkb25seUFycmF5PG51bWJlcj47XG59XG5cbmV4cG9ydCB0eXBlIEFsbE1ldHJpY09wdGlvbnMgPSBNZXRyaWNPcHRpb25zIHwgQnVja2V0ZWRNZXRyaWNPcHRpb25zIHwgUGVyY2VudGlsZWRNZXRyaWNPcHRpb25zO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1ldHJpY1ZhbHVlIHtcbiAgcmVhZG9ubHkgY291bnRPckxhYmVscz86IExhYmVscyB8IG51bWJlcjtcbiAgcmVhZG9ubHkgY291bnQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sbGVjdGVkTWV0cmljPFQgZXh0ZW5kcyBNZXRyaWNPcHRpb25zIHwgQnVja2V0ZWRNZXRyaWNPcHRpb25zPiB7XG4gIHJlYWRvbmx5IG1ldHJpYzogVDtcbiAgcmVhZG9ubHkgdmFsdWVzOiBSZWFkb25seUFycmF5PE1ldHJpY1ZhbHVlPjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ29sbGVjdGVkTWV0cmljczxUIGV4dGVuZHMgTWV0cmljT3B0aW9ucyB8IEJ1Y2tldGVkTWV0cmljT3B0aW9ucz4ge1xuICByZWFkb25seSBbbmFtZTogc3RyaW5nXTogQ29sbGVjdGVkTWV0cmljPFQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1ldHJpY0NvbGxlY3Rpb24ge1xuICByZWFkb25seSBjb3VudGVyczogQ29sbGVjdGVkTWV0cmljczxNZXRyaWNPcHRpb25zPjtcbiAgcmVhZG9ubHkgaGlzdG9ncmFtczogQ29sbGVjdGVkTWV0cmljczxCdWNrZXRlZE1ldHJpY09wdGlvbnM+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydCB7XG4gIHJlYWRvbmx5IGxvZ3M6IFJlYWRvbmx5QXJyYXk8Q29sbGVjdGVkTG9nZ2VyTG9nT3B0aW9ucz47XG4gIHJlYWRvbmx5IG1ldHJpY3M6IE1ldHJpY0NvbGxlY3Rpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ291bnRlckJhc2Uge1xuICAvLyB0c2xpbnQ6ZGlzYWJsZSBuby1tZXRob2Qtc2lnbmF0dXJlXG4gIGluYyhjb3VudD86IG51bWJlcik6IHZvaWQ7XG4gIGluYyhsYWJlbHM/OiBMYWJlbHMsIGNvdW50PzogbnVtYmVyKTogdm9pZDtcbiAgLy8gdHNsaW50OmVuYWJsZSBuby1tZXRob2Qtc2lnbmF0dXJlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ291bnRlciBleHRlbmRzIENvdW50ZXJCYXNlIHtcbiAgcmVhZG9ubHkgZ2V0TGFiZWxOYW1lczogKCkgPT4gUmVhZG9ubHlBcnJheTxMYWJlbD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2F1Z2VCYXNlIHtcbiAgLy8gdHNsaW50OmRpc2FibGUgbm8tbWV0aG9kLXNpZ25hdHVyZVxuICBpbmMoY291bnQ/OiBudW1iZXIpOiB2b2lkO1xuICBpbmMobGFiZWxzPzogTGFiZWxzLCBjb3VudD86IG51bWJlcik6IHZvaWQ7XG4gIGRlYyhjb3VudD86IG51bWJlcik6IHZvaWQ7XG4gIGRlYyhsYWJlbHM/OiBMYWJlbHMsIGNvdW50PzogbnVtYmVyKTogdm9pZDtcbiAgc2V0KHZhbHVlOiBudW1iZXIpOiB2b2lkO1xuICBzZXQobGFiZWxzOiBMYWJlbHMsIHZhbHVlOiBudW1iZXIpOiB2b2lkO1xuICAvLyB0c2xpbnQ6ZW5hYmxlIG5vLW1ldGhvZC1zaWduYXR1cmVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHYXVnZSBleHRlbmRzIEdhdWdlQmFzZSB7XG4gIHJlYWRvbmx5IGdldExhYmVsTmFtZXM6ICgpID0+IFJlYWRvbmx5QXJyYXk8TGFiZWw+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEhpc3RvZ3JhbUJhc2Uge1xuICAvLyB0c2xpbnQ6ZGlzYWJsZSBuby1tZXRob2Qtc2lnbmF0dXJlXG4gIG9ic2VydmUodmFsdWU6IG51bWJlcik6IHZvaWQ7XG4gIG9ic2VydmUobGFiZWxzOiBMYWJlbHMsIHZhbHVlOiBudW1iZXIpOiB2b2lkO1xuICAvLyB0c2xpbnQ6ZW5hYmxlIG5vLW1ldGhvZC1zaWduYXR1cmVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBIaXN0b2dyYW0gZXh0ZW5kcyBIaXN0b2dyYW1CYXNlIHtcbiAgcmVhZG9ubHkgZ2V0TGFiZWxOYW1lczogKCkgPT4gUmVhZG9ubHlBcnJheTxMYWJlbD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3VtbWFyeUJhc2Uge1xuICAvLyB0c2xpbnQ6ZGlzYWJsZSBuby1tZXRob2Qtc2lnbmF0dXJlXG4gIG9ic2VydmUodmFsdWU6IG51bWJlcik6IHZvaWQ7XG4gIG9ic2VydmUobGFiZWxzOiBMYWJlbHMsIHZhbHVlOiBudW1iZXIpOiB2b2lkO1xuICAvLyB0c2xpbnQ6ZW5hYmxlIG5vLW1ldGhvZC1zaWduYXR1cmVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdW1tYXJ5IGV4dGVuZHMgU3VtbWFyeUJhc2Uge1xuICByZWFkb25seSBnZXRMYWJlbE5hbWVzOiAoKSA9PiBSZWFkb25seUFycmF5PExhYmVsPjtcbn1cblxuZXhwb3J0IHR5cGUgTWV0cmljID0gQ291bnRlciB8IEdhdWdlIHwgSGlzdG9ncmFtIHwgU3VtbWFyeTtcblxuZXhwb3J0IGludGVyZmFjZSBNZXRyaWNzRmFjdG9yeSB7XG4gIHJlYWRvbmx5IHJlc2V0X2ZvclRlc3Q6ICgpID0+IHZvaWQ7XG4gIHJlYWRvbmx5IGNyZWF0ZUNvdW50ZXI6IChvcHRpb25zOiBNZXRyaWNPcHRpb25zKSA9PiBDb3VudGVyO1xuICByZWFkb25seSBjcmVhdGVHYXVnZTogKG9wdGlvbnM6IE1ldHJpY09wdGlvbnMpID0+IEdhdWdlO1xuICByZWFkb25seSBjcmVhdGVIaXN0b2dyYW06IChvcHRpb25zOiBCdWNrZXRlZE1ldHJpY09wdGlvbnMpID0+IEhpc3RvZ3JhbTtcbiAgcmVhZG9ubHkgY3JlYXRlU3VtbWFyeTogKG9wdGlvbnM6IFBlcmNlbnRpbGVkTWV0cmljT3B0aW9ucykgPT4gU3VtbWFyeTtcblxuICByZWFkb25seSBzZXRGYWN0b3J5OiAoZmFjdG9yeTogTWV0cmljc0ZhY3RvcnkpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9nT3B0aW9ucyB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgbWVzc2FnZT86IHN0cmluZzsgLy8gSHVtYW4gcmVhZGFibGUgc3RyaW5nLlxuICByZWFkb25seSBsZXZlbD86IExvZ0xldmVsO1xuICByZWFkb25seSBtZXRyaWM/OiBDb3VudGVyO1xuXG4gIHJlYWRvbmx5IGVycm9yPzoge1xuICAgIHJlYWRvbmx5IG1ldHJpYz86IENvdW50ZXI7XG4gICAgcmVhZG9ubHkgZXJyb3I/OiBFcnJvciB8IHVuZGVmaW5lZDtcbiAgICByZWFkb25seSBtZXNzYWdlPzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGxldmVsPzogTG9nTGV2ZWw7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FwdHVyZUxvZ09wdGlvbnMge1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG1lc3NhZ2U/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGxldmVsPzogTG9nTGV2ZWw7XG5cbiAgcmVhZG9ubHkgbWV0cmljPzogQ291bnRlcjtcblxuICByZWFkb25seSBlcnJvcj86XG4gICAgfCBzdHJpbmdcbiAgICB8IHtcbiAgICAgICAgcmVhZG9ubHkgbWV0cmljPzogQ291bnRlcjtcbiAgICAgICAgcmVhZG9ubHkgbWVzc2FnZT86IHN0cmluZztcbiAgICAgICAgcmVhZG9ubHkgbGV2ZWw/OiBMb2dMZXZlbDtcbiAgICAgIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9nRXJyb3JPcHRpb25zIHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBtZXNzYWdlPzogc3RyaW5nO1xuICByZWFkb25seSBlcnJvcjogRXJyb3I7XG4gIHJlYWRvbmx5IGxldmVsPzogTG9nTGV2ZWw7XG4gIHJlYWRvbmx5IG1ldHJpYz86IENvdW50ZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVmZXJlbmNlIHtcbiAgcmVhZG9ubHkgX19icmFuZDogJ1JlZmVyZW5jZSc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3Bhbk9wdGlvbnMge1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGxldmVsPzogTG9nTGV2ZWw7XG5cbiAgcmVhZG9ubHkgbWV0cmljPzoge1xuICAgIHJlYWRvbmx5IHRvdGFsOiBIaXN0b2dyYW0gfCBTdW1tYXJ5O1xuICAgIHJlYWRvbmx5IGVycm9yOiBDb3VudGVyO1xuICB9O1xuXG4gIHJlYWRvbmx5IHJlZmVyZW5jZXM/OiBSZWFkb25seUFycmF5PFJlZmVyZW5jZSB8IHZvaWQ+O1xuICByZWFkb25seSB0cmFjZT86IGJvb2xlYW47IC8vIElzIHRoaXMgYWxsb3dlZCB0byBiZSBhIHRvcCBsZXZlbCBzcGFuP1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENhcHR1cmVTcGFuT3B0aW9ucyB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgbGV2ZWw/OiBMb2dMZXZlbDtcblxuICByZWFkb25seSBtZXRyaWM/OiB7XG4gICAgcmVhZG9ubHkgdG90YWw6IEhpc3RvZ3JhbSB8IFN1bW1hcnk7XG4gICAgcmVhZG9ubHkgZXJyb3I6IENvdW50ZXI7XG4gIH07XG5cbiAgcmVhZG9ubHkgcmVmZXJlbmNlcz86IFJlYWRvbmx5QXJyYXk8UmVmZXJlbmNlIHwgdm9pZD47XG4gIHJlYWRvbmx5IHRyYWNlPzogYm9vbGVhbjsgLy8gSXMgdGhpcyBhbGxvd2VkIHRvIGJlIGEgdG9wIGxldmVsIHNwYW4/XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FwdHVyZVNwYW5Mb2dPcHRpb25zIHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBtZXNzYWdlPzogc3RyaW5nO1xuICByZWFkb25seSBsZXZlbD86IExvZ0xldmVsT3B0aW9uO1xuXG4gIHJlYWRvbmx5IG1ldHJpYz86IHtcbiAgICByZWFkb25seSB0b3RhbDogSGlzdG9ncmFtIHwgU3VtbWFyeTtcbiAgICByZWFkb25seSBlcnJvcjogQ291bnRlcjtcbiAgfTtcblxuICByZWFkb25seSBlcnJvcj86XG4gICAgfCBzdHJpbmdcbiAgICB8IHtcbiAgICAgICAgcmVhZG9ubHkgbWVzc2FnZT86IHN0cmluZztcbiAgICAgICAgcmVhZG9ubHkgbGV2ZWw/OiBMb2dMZXZlbDtcbiAgICAgIH07XG4gIHJlYWRvbmx5IHJlZmVyZW5jZXM/OiBSZWFkb25seUFycmF5PFJlZmVyZW5jZSB8IHZvaWQ+O1xuICByZWFkb25seSB0cmFjZT86IGJvb2xlYW47IC8vIElzIHRoaXMgYWxsb3dlZCB0byBiZSBhIHRvcCBsZXZlbCBzcGFuP1xufVxuXG4vKlxuVXNhZ2U6XG5EbyB5b3Ugd2FudCB0byBsb2cgYSBtZXNzYWdlPyBtb25pdG9yLmxvZ1xuRG8geW91IHdhbnQgdG8gYWRkIG1ldGFkYXRhIHRvIGFsbCBzdWJzZXF1ZW50IG1vbml0b3Jpbmc/IG1vbml0b3Iud2l0aExhYmVsc1xuRG8geW91IHdhbnQgdG8gdGltZSBzb21ldGhpbmc/IG1vbml0b3Iuc3RhcnRTcGFuXG5EaWQgeW91IGVudGVyIGEgbmV3IGNvbXBvbmVudD8gbW9uaXRvci5hdFxuKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW9uaXRvciB7XG4gIHJlYWRvbmx5IGxhYmVsczogdHlwZW9mIEtub3duTGFiZWw7XG4gIHJlYWRvbmx5IGZvcm1hdHM6IHR5cGVvZiBGb3JtYXQ7XG4gIHJlYWRvbmx5IGF0OiAoY29tcG9uZW50OiBzdHJpbmcpID0+IE1vbml0b3I7XG4gIHJlYWRvbmx5IHdpdGhMYWJlbHM6IChsYWJlbHM6IExhYmVscykgPT4gTW9uaXRvcjtcbiAgcmVhZG9ubHkgd2l0aERhdGE6IChkYXRhOiBMYWJlbHMpID0+IE1vbml0b3I7XG4gIHJlYWRvbmx5IGZvckNvbnRleHQ6IChjdHg6IENvbnRleHQpID0+IE1vbml0b3I7XG4gIHJlYWRvbmx5IGZvck1lc3NhZ2U6IChtZXNzYWdlOiBJbmNvbWluZ01lc3NhZ2UpID0+IE1vbml0b3I7XG5cbiAgcmVhZG9ubHkgbG9nOiAob3B0aW9uczogTG9nT3B0aW9ucykgPT4gdm9pZDtcbiAgcmVhZG9ubHkgY2FwdHVyZUxvZzogPFRSZXN1bHQ+KGZ1bmM6IChtb25pdG9yOiBDYXB0dXJlTW9uaXRvcikgPT4gVFJlc3VsdCwgb3B0aW9uczogQ2FwdHVyZUxvZ09wdGlvbnMpID0+IFRSZXN1bHQ7XG4gIHJlYWRvbmx5IGxvZ0Vycm9yOiAob3B0aW9uczogTG9nRXJyb3JPcHRpb25zKSA9PiB2b2lkO1xuXG4gIHJlYWRvbmx5IHN0YXJ0U3BhbjogKG9wdGlvbnM6IFNwYW5PcHRpb25zKSA9PiBTcGFuO1xuICByZWFkb25seSBjYXB0dXJlU3BhbjogPFRSZXN1bHQ+KGZ1bmM6IChzcGFuOiBDYXB0dXJlTW9uaXRvcikgPT4gVFJlc3VsdCwgb3B0aW9uczogQ2FwdHVyZVNwYW5PcHRpb25zKSA9PiBUUmVzdWx0O1xuICByZWFkb25seSBjYXB0dXJlU3BhbkxvZzogPFRSZXN1bHQ+KFxuICAgIGZ1bmM6IChzcGFuOiBDYXB0dXJlTW9uaXRvcikgPT4gVFJlc3VsdCxcbiAgICBvcHRpb25zOiBDYXB0dXJlU3BhbkxvZ09wdGlvbnMsXG4gICkgPT4gVFJlc3VsdDtcblxuICByZWFkb25seSBjaGlsZE9mOiA8VCBleHRlbmRzIFNwYW5Db250ZXh0IHwgTW9uaXRvciB8IHVuZGVmaW5lZD4oXG4gICAgc3BhbjogVCxcbiAgKSA9PiBUIGV4dGVuZHMgdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogUmVmZXJlbmNlO1xuICByZWFkb25seSBmb2xsb3dzRnJvbTogPFQgZXh0ZW5kcyBTcGFuQ29udGV4dCB8IE1vbml0b3IgfCB1bmRlZmluZWQ+KFxuICAgIHNwYW46IFQsXG4gICkgPT4gVCBleHRlbmRzIHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IFJlZmVyZW5jZTtcbiAgcmVhZG9ubHkgZXh0cmFjdDogKGZvcm1hdDogRm9ybWF0LCBjYXJyaWVyOiBDYXJyaWVyKSA9PiBTcGFuQ29udGV4dCB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgaW5qZWN0OiAoZm9ybWF0OiBGb3JtYXQsIGNhcnJpZXI6IENhcnJpZXIpID0+IHZvaWQ7XG5cbiAgLy8gRXF1aXZhbGVudCBvZiBwZXJmb3JtYW5jZS5ub3coKSBpbiB0aGUgYnJvd3NlciBhbmQgcGVyZl9ob29rcyBpbiBub2RlXG4gIC8vIFVzZWQgZm9yIGNvbXBhcmlzb25zLCB2YWx1ZSBpcyBpbiBtaWxsaXNlY29uZHMgd2l0aCBtaWNyb3NlY29uZCBkZWNpbWFscy5cbiAgcmVhZG9ubHkgbm93OiAoKSA9PiBudW1iZXI7XG4gIC8vIG5vdygpIC8gMTAwMFxuICByZWFkb25seSBub3dTZWNvbmRzOiAoKSA9PiBudW1iZXI7XG4gIHJlYWRvbmx5IHNlcnZlTWV0cmljczogKHBvcnQ6IG51bWJlcikgPT4gdm9pZDtcbiAgcmVhZG9ubHkgcmVwb3J0OiAocmVwb3J0OiBSZXBvcnQpID0+IHZvaWQ7XG5cbiAgcmVhZG9ubHkgY2xvc2U6IChjYWxsYmFjazogKCkgPT4gdm9pZCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTcGFuQ29udGV4dCB7XG4gIHJlYWRvbmx5IF9fYnJhbmQ6ICdTcGFuQ29udGV4dCc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FwdHVyZU1vbml0b3IgZXh0ZW5kcyBNb25pdG9yIHtcbiAgcmVhZG9ubHkgc2V0TGFiZWxzOiAobGFiZWxzOiBMYWJlbHMpID0+IHZvaWQ7XG4gIHJlYWRvbmx5IHNldERhdGE6IChkYXRhOiBMYWJlbHMpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3BhbiBleHRlbmRzIENhcHR1cmVNb25pdG9yIHtcbiAgcmVhZG9ubHkgZW5kOiAoZXJyb3I/OiBib29sZWFuKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvZ2dlckxvZ09wdGlvbnMge1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGxldmVsOiBMb2dMZXZlbDtcbiAgcmVhZG9ubHkgbWVzc2FnZT86IHN0cmluZztcbiAgcmVhZG9ubHkgbGFiZWxzPzogTGFiZWxzO1xuICByZWFkb25seSBkYXRhPzogTGFiZWxzO1xuICByZWFkb25seSBlcnJvcj86IEVycm9yIHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvZ2dlciB7XG4gIHJlYWRvbmx5IGxvZzogKG9wdGlvbnM6IExvZ2dlckxvZ09wdGlvbnMpID0+IHZvaWQ7XG4gIHJlYWRvbmx5IGNsb3NlOiAoY2FsbGJhY2s6ICgpID0+IHZvaWQpID0+IHZvaWQ7XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBaURBLElBQVksVUE0RVg7QUE1RUQsV0FBWSxVQUFVO0lBQ3BCLGlDQUFtQixDQUFBO0lBQ25CLHFDQUF1QixDQUFBO0lBQ3ZCLG9DQUFvQztJQUNwQyx5Q0FBMkIsQ0FBQTtJQUMzQixzREFBc0Q7SUFDdEQsMkNBQTZCLENBQUE7SUFDN0IseUVBQXlFO0lBQ3pFLDREQUE0RDtJQUM1RCxpQ0FBbUIsQ0FBQTtJQUNuQiw2RUFBNkU7SUFDN0UsaUNBQW1CLENBQUE7SUFDbkIsNkVBQTZFO0lBQzdFLDZCQUFlLENBQUE7SUFDZiw4Q0FBOEM7SUFDOUMsdUNBQXlCLENBQUE7SUFDekIsc0JBQXNCO0lBQ3RCLDJDQUE2QixDQUFBO0lBQzdCLGNBQWM7SUFDZCxtQ0FBcUIsQ0FBQTtJQUNyQiwwRUFBMEU7SUFDMUUseUNBQTJCLENBQUE7SUFDM0IseUVBQXlFO0lBQ3pFLG1EQUFxQyxDQUFBO0lBQ3JDLDZFQUE2RTtJQUM3RSwrREFBK0Q7SUFDL0QsbUNBQXFCLENBQUE7SUFDckIsNEVBQTRFO0lBQzVFLDZFQUE2RTtJQUM3RSx5Q0FBeUM7SUFDekMsaUVBQW1ELENBQUE7SUFDbkQsOEVBQThFO0lBQzlFLDJFQUEyRTtJQUMzRSx5QkFBeUI7SUFDekIsMkNBQTZCLENBQUE7SUFDN0IsK0RBQStEO0lBQy9ELDZDQUErQixDQUFBO0lBQy9CLGdFQUFnRTtJQUNoRSxxQ0FBdUIsQ0FBQTtJQUN2Qix3RUFBd0U7SUFDeEUsa0RBQWtEO0lBQ2xELHFDQUF1QixDQUFBO0lBQ3ZCLHdCQUF3QjtJQUN4QixxQ0FBdUIsQ0FBQTtJQUN2QixzRUFBc0U7SUFDdEUsNkRBQTZEO0lBQzdELDJDQUE2QixDQUFBO0lBQzdCLHdFQUF3RTtJQUN4RSx3RUFBd0U7SUFDeEUsd0RBQXdEO0lBQ3hELHFEQUF1QyxDQUFBO0lBQ3ZDLHVFQUF1RTtJQUN2RSw4RUFBOEU7SUFDOUUscUNBQXVCLENBQUE7SUFFdkIsMENBQTBDO0lBQzFDLDJEQUE2QyxDQUFBO0lBQzdDLHNFQUFzRTtJQUN0RSxtQkFBbUI7SUFDbkIscUNBQXVCLENBQUE7SUFDdkIsOENBQThDO0lBQzlDLDhDQUFnQyxDQUFBO0lBQ2hDLGtDQUFrQztJQUNsQyxpREFBbUMsQ0FBQTtJQUNuQyxpQkFBaUI7SUFDakIscURBQXVDLENBQUE7SUFDdkMsVUFBVTtJQUNWLDJDQUE2QixDQUFBO0lBQzdCLG1CQUFtQjtJQUNuQiw2REFBK0MsQ0FBQTtJQUMvQyxzQkFBc0I7SUFDdEIsdURBQXlDLENBQUE7SUFDekMsb0NBQW9DO0lBQ3BDLHVDQUF5QixDQUFBO0lBQ3pCLDBCQUEwQjtJQUMxQixtQ0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBNUVXLFVBQVUsR0FBVixrQkFBVSxLQUFWLGtCQUFVLFFBNEVyQjtBQUVELElBQVksTUFJWDtBQUpELFdBQVksTUFBTTtJQUNoQiwrQkFBcUIsQ0FBQTtJQUNyQiwyQkFBaUIsQ0FBQTtJQUNqQiwyQkFBaUIsQ0FBQTtBQUNuQixDQUFDLEVBSlcsTUFBTSxHQUFOLGNBQU0sS0FBTixjQUFNLFFBSWpCIiwiZmlsZSI6Im5lby1vbmUtbW9uaXRvci9zcmMvdHlwZXMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmNvbWluZ01lc3NhZ2UgfSBmcm9tICdodHRwJztcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tICdrb2EnO1xuXG5leHBvcnQgdHlwZSBMb2dGaWVsZCA9XG4gIC8vIFRoZSB0eXBlIG9yIFwia2luZFwiIG9mIGFuIGVycm9yIChvbmx5IGZvciBldmVudD1cImVycm9yXCIgbG9ncykuXG4gIC8vIEUuZy4sIFwiRXhjZXB0aW9uXCIsIFwiT1NFcnJvclwiXG4gIHwgJ2Vycm9yLmtpbmQnXG4gIC8vIEZvciBsYW5ndWFnZXMgdGhhdCBzdXBwb3J0IHN1Y2ggYSB0aGluZyAoZS5nLiwgSmF2YSwgUHl0aG9uKSwgdGhlIGFjdHVhbFxuICAvLyBUaHJvd2FibGUvRXhjZXB0aW9uL0Vycm9yIG9iamVjdCBpbnN0YW5jZSBpdHNlbGYuXG4gIC8vIEUuZy4sIEEgamF2YS5sYW5nLlVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIGluc3RhbmNlLCBhIHB5dGhvblxuICAvLyBleGNlcHRpb25zLk5hbWVFcnJvciBpbnN0YW5jZVxuICB8ICdlcnJvci5vYmplY3QnXG4gIC8vIEEgc3RhYmxlIGlkZW50aWZpZXIgZm9yIHNvbWUgbm90YWJsZSBtb21lbnQgaW4gdGhlIGxpZmV0aW1lIG9mIGEgU3Bhbi5cbiAgLy8gRm9yIGluc3RhbmNlLCBhIG11dGV4IGxvY2sgYWNxdWlzaXRpb24gb3IgcmVsZWFzZSBvciB0aGUgc29ydHMgb2YgbGlmZXRpbWVcbiAgLy8gZXZlbnRzIGluIGEgYnJvd3NlciBwYWdlIGxvYWQgZGVzY3JpYmVkIGluIHRoZSBQZXJmb3JtYW5jZS50aW1pbmdcbiAgLy8gc3BlY2lmaWNhdGlvbi4gRS5nLiwgZnJvbSBaaXBraW4sIFwiY3NcIiwgXCJzclwiLCBcInNzXCIsIG9yIFwiY3JcIi5cbiAgLy8gT3IsIG1vcmUgZ2VuZXJhbGx5LCBcImluaXRpYWxpemVkXCIgb3IgXCJ0aW1lZCBvdXRcIi4gRm9yIGVycm9ycywgXCJlcnJvclwiXG4gIHwgJ2V2ZW50J1xuICAvLyBBIGNvbmNpc2UsIGh1bWFuLXJlYWRhYmxlLCBvbmUtbGluZSBtZXNzYWdlIGV4cGxhaW5pbmcgdGhlIGV2ZW50LlxuICAvLyBFLmcuLCBcIkNvdWxkIG5vdCBjb25uZWN0IHRvIGJhY2tlbmRcIiwgXCJDYWNoZSBpbnZhbGlkYXRpb24gc3VjY2VlZGVkXCJcbiAgfCAnbWVzc2FnZSdcbiAgLy8gQSBzdGFjayB0cmFjZSBpbiBwbGF0Zm9ybS1jb252ZW50aW9uYWwgZm9ybWF0OyBtYXkgb3IgbWF5IG5vdCBwZXJ0YWluXG4gIC8vIHRvIGFuIGVycm9yLlxuICB8ICdzdGFjayc7XG5cbmV4cG9ydCB0eXBlIExhYmVsID0gc3RyaW5nO1xuZXhwb3J0IHR5cGUgTGFiZWxWYWx1ZSA9IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCB2b2lkIHwgdW5kZWZpbmVkO1xuZXhwb3J0IGludGVyZmFjZSBMYWJlbHMge1xuICByZWFkb25seSBbbGFiZWw6IHN0cmluZ106IExhYmVsVmFsdWU7XG59XG5cbi8qIEdlbmVyYWwgZ3VpZGVsaW5lcyAtXG4gIC0gJ2luZm8nXG4gICAgLSBmb3IgcHJvZHVjdGlvbiBsb2dnZWQgbWVzc2FnZXNcbiAgICAtIGZvciBwcm9kdWN0aW9uIGxvZ2dlZCBzcGFuc1xuICAtICd2ZXJib3NlJ1xuICAgIC0gZm9yIGRldmVsb3BtZW50IGxvZ2dlZCBtZXNzYWdlcyAoaS5lLiB0byBjb25zb2xlKVxuICAgIC0gZm9yIHByb2R1Y3Rpb24gbG9nZ2VkIG1ldHJpY3NcbiAgLSBGb3JjZSBtZXRyaWNzIGFuZCBzcGFucyB0byBiZSBsb2dnZWQgYnkgdXNpbmcgbWV0cmljTGV2ZWwgYW5kIHNwYW5MZXZlbFxuICAgIHJlc3BlY3RpdmVseSBhdCB2ZXJib3NlIG9yIGhpZ2hlci5cbiovXG5leHBvcnQgdHlwZSBMb2dMZXZlbCA9ICdlcnJvcicgfCAnd2FybicgfCAnaW5mbycgfCAndmVyYm9zZScgfCAnZGVidWcnIHwgJ3NpbGx5JztcbmV4cG9ydCB0eXBlIExvZ0xldmVsT3B0aW9uID1cbiAgfCBMb2dMZXZlbFxuICB8IHtcbiAgICAgIHJlYWRvbmx5IGxvZzogTG9nTGV2ZWw7XG4gICAgICByZWFkb25seSBzcGFuPzogTG9nTGV2ZWw7XG4gICAgfTtcblxuZXhwb3J0IGVudW0gS25vd25MYWJlbCB7XG4gIFNFUlZJQ0UgPSAnc2VydmljZScsXG4gIENPTVBPTkVOVCA9ICdjb21wb25lbnQnLFxuICAvLyBEYXRhYmFzZSBpbnN0YW5jZSBuYW1lLiBFLmcuIG1haW5cbiAgREJfSU5TVEFOQ0UgPSAnZGIuaW5zdGFuY2UnLFxuICAvLyBEYXRhYmFzZSBzdGF0ZW1lbnQuIEUuZy4gU0VMRUNUICogRlJPTSB3dXNlciB0YWJsZTtcbiAgREJfU1RBVEVNRU5UID0gJ2RiLnN0YXRlbWVudCcsXG4gIC8vIERhdGFiYXNlIHR5cGUuIEZvciBhbnkgU1FMIGRhdGFiYXNlLCBcInNxbFwiLiBGb3Igb3RoZXJzLCB0aGUgbG93ZXItY2FzZVxuICAvLyBkYXRhYmFzZSBjYXRlZ29yeSwgZS5nLiBcImNhc3NhbmRyYVwiLCBcImhiYXNlXCIsIG9yIFwicmVkaXNcIi5cbiAgREJfVFlQRSA9ICdkYi50eXBlJyxcbiAgLy8gVXNlcm5hbWUgZm9yIGFjY2Vzc2luZyBkYXRhYmFzZS4gRS5nLiwgXCJyZWFkb25seV91c2VyXCIgb3IgXCJyZXBvcnRpbmdfdXNlclwiXG4gIERCX1VTRVIgPSAnZGIudXNlcicsXG4gIC8vIHRydWUgaWYgYW5kIG9ubHkgaWYgdGhlIGFwcGxpY2F0aW9uIGNvbnNpZGVycyB0aGUgb3BlcmF0aW9uIHRvIGhhdmUgZmFpbGVkXG4gIEVSUk9SID0gJ2Vycm9yJyxcbiAgLy8gRXJyb3IgY29kZSBpZiBhdmFpbGFibGUgb3IgY29uc3RydWN0b3IgbmFtZVxuICBFUlJPUl9LSU5EID0gJ2Vycm9yLmtpbmQnLFxuICAvLyBBY3R1YWwgRXJyb3Igb2JqZWN0XG4gIEVSUk9SX09CSkVDVCA9ICdlcnJvci5vYmplY3QnLFxuICAvLyBFcnJvciBzdGFja1xuICBFUlJPUl9TVEFDSyA9ICdzdGFjaycsXG4gIC8vIEhUVFAgbWV0aG9kIG9mIHRoZSByZXF1ZXN0IGZvciB0aGUgYXNzb2NpYXRlZCBTcGFuLiBFLmcuLCBcIkdFVFwiLCBcIlBPU1RcIlxuICBIVFRQX01FVEhPRCA9ICdodHRwLm1ldGhvZCcsXG4gIC8vIEhUVFAgcmVzcG9uc2Ugc3RhdHVzIGNvZGUgZm9yIHRoZSBhc3NvY2lhdGVkIFNwYW4uIEUuZy4sIDIwMCwgNTAzLCA0MDRcbiAgSFRUUF9TVEFUVVNfQ09ERSA9ICdodHRwLnN0YXR1c19jb2RlJyxcbiAgLy8gVVJMIG9mIHRoZSByZXF1ZXN0IGJlaW5nIGhhbmRsZWQgaW4gdGhpcyBzZWdtZW50IG9mIHRoZSB0cmFjZSwgaW4gc3RhbmRhcmRcbiAgLy8gVVJJIGZvcm1hdC4gRS5nLiwgXCJodHRwczovL2RvbWFpbi5uZXQvcGF0aC90bz9yZXNvdXJjZT1oZXJlXCJcbiAgSFRUUF9VUkwgPSAnaHR0cC51cmwnLFxuICAvLyBBbiBhZGRyZXNzIGF0IHdoaWNoIG1lc3NhZ2VzIGNhbiBiZSBleGNoYW5nZWQuIEUuZy4gQSBLYWZrYSByZWNvcmQgaGFzIGFuXG4gIC8vIGFzc29jaWF0ZWQgXCJ0b3BpYyBuYW1lXCIgdGhhdCBjYW4gYmUgZXh0cmFjdGVkIGJ5IHRoZSBpbnN0cnVtZW50ZWQgcHJvZHVjZXJcbiAgLy8gb3IgY29uc3VtZXIgYW5kIHN0b3JlZCB1c2luZyB0aGlzIHRhZy5cbiAgTUVTU0FHRV9CVVNfREVTVElOQVRJT04gPSAnbWVzc2FnZV9idXMuZGVzdGluYXRpb24nLFxuICAvLyBSZW1vdGUgXCJhZGRyZXNzXCIsIHN1aXRhYmxlIGZvciB1c2UgaW4gYSBuZXR3b3JraW5nIGNsaWVudCBsaWJyYXJ5LiBUaGlzIG1heVxuICAvLyBiZSBhIFwiaXA6cG9ydFwiLCBhIGJhcmUgXCJob3N0bmFtZVwiLCBhIEZRRE4sIG9yIGV2ZW4gYSBKREJDIHN1YnN0cmluZyBsaWtlXG4gIC8vIFwibXlzcWw6Ly9wcm9kLWRiOjMzMDZcIlxuICBQRUVSX0FERFJFU1MgPSAncGVlci5hZGRyZXNzJyxcbiAgLy8gUmVtb3RlIGhvc3RuYW1lLiBFLmcuLCBcIm9wZW50cmFjaW5nLmlvXCIsIFwiaW50ZXJuYWwuZG5zLm5hbWVcIlxuICBQRUVSX0hPU1ROQU1FID0gJ3BlZXIuaG9zdG5hbWUnLFxuICAvLyBSZW1vdGUgSVB2NCBhZGRyZXNzIGFzIGEgLi1zZXBhcmF0ZWQgdHVwbGUuIEUuZy4sIFwiMTI3LjAuMC4xXCJcbiAgUEVFUl9JUFY0ID0gJ3BlZXIuaXB2NCcsXG4gIC8vIFJlbW90ZSBJUHY2IGFkZHJlc3MgYXMgYSBzdHJpbmcgb2YgY29sb24tc2VwYXJhdGVkIDQtY2hhciBoZXggdHVwbGVzLlxuICAvLyBFLmcuLCBcIjIwMDE6MGRiODo4NWEzOjAwMDA6MDAwMDo4YTJlOjAzNzA6NzMzNFwiXG4gIFBFRVJfSVBWNiA9ICdwZWVyLmlwdjYnLFxuICAvLyBSZW1vdGUgcG9ydC4gRS5nLiwgODBcbiAgUEVFUl9QT1JUID0gJ3BlZXIucG9ydCcsXG4gIC8vIFJlbW90ZSBzZXJ2aWNlIG5hbWUgKGZvciBzb21lIHVuc3BlY2lmaWVkIGRlZmluaXRpb24gb2YgXCJzZXJ2aWNlXCIpLlxuICAvLyBFLmcuLCBcImVsYXN0aWNzZWFyY2hcIiwgXCJhX2N1c3RvbV9taWNyb3NlcnZpY2VcIiwgXCJtZW1jYWNoZVwiXG4gIFBFRVJfU0VSVklDRSA9ICdwZWVyLnNlcnZpY2UnLFxuICAvLyBJZiBncmVhdGVyIHRoYW4gMCwgYSBoaW50IHRvIHRoZSBUcmFjZXIgdG8gZG8gaXRzIGJlc3QgdG8gY2FwdHVyZSB0aGVcbiAgLy8gdHJhY2UuIElmIDAsIGEgaGludCB0byB0aGUgdHJhY2UgdG8gbm90LWNhcHR1cmUgdGhlIHRyYWNlLiBJZiBhYnNlbnQsXG4gIC8vIHRoZSBUcmFjZXIgc2hvdWxkIHVzZSBpdHMgZGVmYXVsdCBzYW1wbGluZyBtZWNoYW5pc20uXG4gIFNBTVBMSU5HX1BSSU9SSVRZID0gJ3NhbXBsaW5nLnByaW9yaXR5JyxcbiAgLy8gRWl0aGVyIFwiY2xpZW50XCIgb3IgXCJzZXJ2ZXJcIiBmb3IgdGhlIGFwcHJvcHJpYXRlIHJvbGVzIGluIGFuIFJQQywgYW5kXG4gIC8vIFwicHJvZHVjZXJcIiBvciBcImNvbnN1bWVyXCIgZm9yIHRoZSBhcHByb3ByaWF0ZSByb2xlcyBpbiBhIG1lc3NhZ2luZyBzY2VuYXJpby5cbiAgU1BBTl9LSU5EID0gJ3NwYW4ua2luZCcsXG5cbiAgLy8gTG93IGNhcmRpbmFsaXR5IHZlcnNpb24gb2YgZGIuc3RhdGVtZW50XG4gIERCX1NUQVRFTUVOVF9TVU1NQVJZID0gJ2RiLnN0YXRlbWVudC5zdW1tYXJ5JyxcbiAgLy8gVGhlIHBhdGggb2YgdGhlIHJlcXVlc3QuIE11c3QgYmUgbG93IGNhcmRpbmFsaXR5LiBFLmcuIC9hY2NvdW50LzppZFxuICAvLyBub3QgL2FjY291bnQvMTIzXG4gIEhUVFBfUEFUSCA9ICdodHRwLnBhdGgnLFxuICAvLyBGdWxsIHBhdGggb2YgdGhlIHJlcXVlc3QsIGhpZ2ggY2FyZGluYWxpdHkuXG4gIEhUVFBfRlVMTFBBVEggPSAnaHR0cC5mdWxsX3BhdGgnLFxuICAvLyBUaGUgdXNlciBhZ2VudCBmb3IgdGhlIHJlcXVlc3QuXG4gIEhUVFBfVVNFUl9BR0VOVCA9ICdodHRwLnVzZXJfYWdlbnQnLFxuICAvLyBSZXF1ZXN0IGxlbmd0aFxuICBIVFRQX1JFUVVFU1RfU0laRSA9ICdodHRwLnJlcXVlc3Quc2l6ZScsXG4gIC8vIEhlYWRlcnNcbiAgSFRUUF9IRUFERVJTID0gJ2h0dHAuaGVhZGVycycsXG4gIC8vIFJlcXVlc3QgcHJvdG9jb2xcbiAgSFRUUF9SRVFVRVNUX1BST1RPQ09MID0gJ2h0dHAucmVxdWVzdC5wcm90b2NvbCcsXG4gIC8vIFJlcXVlc3QgcXVlcnlzdHJpbmdcbiAgSFRUUF9SRVFVRVNUX1FVRVJZID0gJ2h0dHAucmVxdWVzdC5xdWVyeScsXG4gIC8vIFJQQyBtZXRob2QgY2FsbGVkLiBFLmcuIGdldGJsb2NrLlxuICBSUENfTUVUSE9EID0gJ3JwYy5tZXRob2QnLFxuICAvLyBSUEMgdHlwZSwgZS5nLiBqc29ucnBjLlxuICBSUENfVFlQRSA9ICdycGMudHlwZScsXG59XG5cbmV4cG9ydCBlbnVtIEZvcm1hdCB7XG4gIEhUVFAgPSAnaHR0cF9oZWFkZXJzJyxcbiAgVEVYVCA9ICd0ZXh0X21hcCcsXG4gIEJJTkFSWSA9ICdiaW5hcnknLFxufVxuZXhwb3J0IGludGVyZmFjZSBDYXJyaWVyIHtcbiAgcmVhZG9ubHkgX19jYXJyaWVyOiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sbGVjdGVkTG9nZ2VyTG9nT3B0aW9ucyB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgbGV2ZWw6IExvZ0xldmVsO1xuICByZWFkb25seSBtZXNzYWdlPzogc3RyaW5nO1xuICByZWFkb25seSBsYWJlbHM/OiBMYWJlbHM7XG4gIHJlYWRvbmx5IGRhdGE/OiBMYWJlbHM7XG4gIHJlYWRvbmx5IGVycm9yPzoge1xuICAgIHJlYWRvbmx5IG1lc3NhZ2U/OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgc3RhY2s/OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgY29kZT86IHN0cmluZztcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZXRyaWNPcHRpb25zIHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBoZWxwPzogc3RyaW5nO1xuICByZWFkb25seSBsYWJlbE5hbWVzPzogcmVhZG9ubHkgTGFiZWxbXTtcbiAgcmVhZG9ubHkgbGFiZWxzPzogcmVhZG9ubHkgTGFiZWxzW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVja2V0ZWRNZXRyaWNPcHRpb25zIGV4dGVuZHMgTWV0cmljT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGJ1Y2tldHM/OiByZWFkb25seSBudW1iZXJbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQZXJjZW50aWxlZE1ldHJpY09wdGlvbnMgZXh0ZW5kcyBNZXRyaWNPcHRpb25zIHtcbiAgcmVhZG9ubHkgcGVyY2VudGlsZXM/OiByZWFkb25seSBudW1iZXJbXTtcbn1cblxuZXhwb3J0IHR5cGUgQWxsTWV0cmljT3B0aW9ucyA9IE1ldHJpY09wdGlvbnMgfCBCdWNrZXRlZE1ldHJpY09wdGlvbnMgfCBQZXJjZW50aWxlZE1ldHJpY09wdGlvbnM7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWV0cmljVmFsdWUge1xuICByZWFkb25seSBjb3VudE9yTGFiZWxzPzogTGFiZWxzIHwgbnVtYmVyO1xuICByZWFkb25seSBjb3VudD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb2xsZWN0ZWRNZXRyaWM8VCBleHRlbmRzIE1ldHJpY09wdGlvbnMgfCBCdWNrZXRlZE1ldHJpY09wdGlvbnM+IHtcbiAgcmVhZG9ubHkgbWV0cmljOiBUO1xuICByZWFkb25seSB2YWx1ZXM6IHJlYWRvbmx5IE1ldHJpY1ZhbHVlW107XG59XG5leHBvcnQgaW50ZXJmYWNlIENvbGxlY3RlZE1ldHJpY3M8VCBleHRlbmRzIE1ldHJpY09wdGlvbnMgfCBCdWNrZXRlZE1ldHJpY09wdGlvbnM+IHtcbiAgcmVhZG9ubHkgW25hbWU6IHN0cmluZ106IENvbGxlY3RlZE1ldHJpYzxUPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZXRyaWNDb2xsZWN0aW9uIHtcbiAgcmVhZG9ubHkgY291bnRlcnM6IENvbGxlY3RlZE1ldHJpY3M8TWV0cmljT3B0aW9ucz47XG4gIHJlYWRvbmx5IGhpc3RvZ3JhbXM6IENvbGxlY3RlZE1ldHJpY3M8QnVja2V0ZWRNZXRyaWNPcHRpb25zPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnQge1xuICByZWFkb25seSBsb2dzOiByZWFkb25seSBDb2xsZWN0ZWRMb2dnZXJMb2dPcHRpb25zW107XG4gIHJlYWRvbmx5IG1ldHJpY3M6IE1ldHJpY0NvbGxlY3Rpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ291bnRlckJhc2Uge1xuICAvLyB0c2xpbnQ6ZGlzYWJsZSBuby1tZXRob2Qtc2lnbmF0dXJlXG4gIGluYyhjb3VudD86IG51bWJlcik6IHZvaWQ7XG4gIGluYyhsYWJlbHM/OiBMYWJlbHMsIGNvdW50PzogbnVtYmVyKTogdm9pZDtcbiAgLy8gdHNsaW50OmVuYWJsZSBuby1tZXRob2Qtc2lnbmF0dXJlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ291bnRlciBleHRlbmRzIENvdW50ZXJCYXNlIHtcbiAgcmVhZG9ubHkgZ2V0TGFiZWxOYW1lczogKCkgPT4gcmVhZG9ubHkgTGFiZWxbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHYXVnZUJhc2Uge1xuICAvLyB0c2xpbnQ6ZGlzYWJsZSBuby1tZXRob2Qtc2lnbmF0dXJlXG4gIGluYyhjb3VudD86IG51bWJlcik6IHZvaWQ7XG4gIGluYyhsYWJlbHM/OiBMYWJlbHMsIGNvdW50PzogbnVtYmVyKTogdm9pZDtcbiAgZGVjKGNvdW50PzogbnVtYmVyKTogdm9pZDtcbiAgZGVjKGxhYmVscz86IExhYmVscywgY291bnQ/OiBudW1iZXIpOiB2b2lkO1xuICBzZXQodmFsdWU6IG51bWJlcik6IHZvaWQ7XG4gIHNldChsYWJlbHM6IExhYmVscywgdmFsdWU6IG51bWJlcik6IHZvaWQ7XG4gIC8vIHRzbGludDplbmFibGUgbm8tbWV0aG9kLXNpZ25hdHVyZVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdhdWdlIGV4dGVuZHMgR2F1Z2VCYXNlIHtcbiAgcmVhZG9ubHkgZ2V0TGFiZWxOYW1lczogKCkgPT4gcmVhZG9ubHkgTGFiZWxbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBIaXN0b2dyYW1CYXNlIHtcbiAgLy8gdHNsaW50OmRpc2FibGUgbm8tbWV0aG9kLXNpZ25hdHVyZVxuICBvYnNlcnZlKHZhbHVlOiBudW1iZXIpOiB2b2lkO1xuICBvYnNlcnZlKGxhYmVsczogTGFiZWxzLCB2YWx1ZTogbnVtYmVyKTogdm9pZDtcbiAgLy8gdHNsaW50OmVuYWJsZSBuby1tZXRob2Qtc2lnbmF0dXJlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGlzdG9ncmFtIGV4dGVuZHMgSGlzdG9ncmFtQmFzZSB7XG4gIHJlYWRvbmx5IGdldExhYmVsTmFtZXM6ICgpID0+IHJlYWRvbmx5IExhYmVsW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3VtbWFyeUJhc2Uge1xuICAvLyB0c2xpbnQ6ZGlzYWJsZSBuby1tZXRob2Qtc2lnbmF0dXJlXG4gIG9ic2VydmUodmFsdWU6IG51bWJlcik6IHZvaWQ7XG4gIG9ic2VydmUobGFiZWxzOiBMYWJlbHMsIHZhbHVlOiBudW1iZXIpOiB2b2lkO1xuICAvLyB0c2xpbnQ6ZW5hYmxlIG5vLW1ldGhvZC1zaWduYXR1cmVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdW1tYXJ5IGV4dGVuZHMgU3VtbWFyeUJhc2Uge1xuICByZWFkb25seSBnZXRMYWJlbE5hbWVzOiAoKSA9PiByZWFkb25seSBMYWJlbFtdO1xufVxuXG5leHBvcnQgdHlwZSBNZXRyaWMgPSBDb3VudGVyIHwgR2F1Z2UgfCBIaXN0b2dyYW0gfCBTdW1tYXJ5O1xuXG5leHBvcnQgaW50ZXJmYWNlIE1ldHJpY3NGYWN0b3J5IHtcbiAgcmVhZG9ubHkgcmVzZXRfZm9yVGVzdDogKCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgY3JlYXRlQ291bnRlcjogKG9wdGlvbnM6IE1ldHJpY09wdGlvbnMpID0+IENvdW50ZXI7XG4gIHJlYWRvbmx5IGNyZWF0ZUdhdWdlOiAob3B0aW9uczogTWV0cmljT3B0aW9ucykgPT4gR2F1Z2U7XG4gIHJlYWRvbmx5IGNyZWF0ZUhpc3RvZ3JhbTogKG9wdGlvbnM6IEJ1Y2tldGVkTWV0cmljT3B0aW9ucykgPT4gSGlzdG9ncmFtO1xuICByZWFkb25seSBjcmVhdGVTdW1tYXJ5OiAob3B0aW9uczogUGVyY2VudGlsZWRNZXRyaWNPcHRpb25zKSA9PiBTdW1tYXJ5O1xuXG4gIHJlYWRvbmx5IHNldEZhY3Rvcnk6IChmYWN0b3J5OiBNZXRyaWNzRmFjdG9yeSkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2dPcHRpb25zIHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBtZXNzYWdlPzogc3RyaW5nOyAvLyBIdW1hbiByZWFkYWJsZSBzdHJpbmcuXG4gIHJlYWRvbmx5IGxldmVsPzogTG9nTGV2ZWw7XG4gIHJlYWRvbmx5IG1ldHJpYz86IENvdW50ZXI7XG5cbiAgcmVhZG9ubHkgZXJyb3I/OiB7XG4gICAgcmVhZG9ubHkgbWV0cmljPzogQ291bnRlcjtcbiAgICByZWFkb25seSBlcnJvcj86IEVycm9yIHwgdW5kZWZpbmVkO1xuICAgIHJlYWRvbmx5IG1lc3NhZ2U/OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgbGV2ZWw/OiBMb2dMZXZlbDtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYXB0dXJlTG9nT3B0aW9ucyB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgbWVzc2FnZT86IHN0cmluZztcbiAgcmVhZG9ubHkgbGV2ZWw/OiBMb2dMZXZlbDtcblxuICByZWFkb25seSBtZXRyaWM/OiBDb3VudGVyO1xuXG4gIHJlYWRvbmx5IGVycm9yPzpcbiAgICB8IHN0cmluZ1xuICAgIHwge1xuICAgICAgICByZWFkb25seSBtZXRyaWM/OiBDb3VudGVyO1xuICAgICAgICByZWFkb25seSBtZXNzYWdlPzogc3RyaW5nO1xuICAgICAgICByZWFkb25seSBsZXZlbD86IExvZ0xldmVsO1xuICAgICAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2dFcnJvck9wdGlvbnMge1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG1lc3NhZ2U/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGVycm9yOiBFcnJvcjtcbiAgcmVhZG9ubHkgbGV2ZWw/OiBMb2dMZXZlbDtcbiAgcmVhZG9ubHkgbWV0cmljPzogQ291bnRlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWZlcmVuY2Uge1xuICByZWFkb25seSBfX2JyYW5kOiAnUmVmZXJlbmNlJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTcGFuT3B0aW9ucyB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgbGV2ZWw/OiBMb2dMZXZlbDtcblxuICByZWFkb25seSBtZXRyaWM/OiB7XG4gICAgcmVhZG9ubHkgdG90YWw6IEhpc3RvZ3JhbSB8IFN1bW1hcnk7XG4gICAgcmVhZG9ubHkgZXJyb3I6IENvdW50ZXI7XG4gIH07XG5cbiAgcmVhZG9ubHkgcmVmZXJlbmNlcz86IFJlYWRvbmx5QXJyYXk8UmVmZXJlbmNlIHwgdm9pZD47XG4gIHJlYWRvbmx5IHRyYWNlPzogYm9vbGVhbjsgLy8gSXMgdGhpcyBhbGxvd2VkIHRvIGJlIGEgdG9wIGxldmVsIHNwYW4/XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FwdHVyZVNwYW5PcHRpb25zIHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBsZXZlbD86IExvZ0xldmVsO1xuXG4gIHJlYWRvbmx5IG1ldHJpYz86IHtcbiAgICByZWFkb25seSB0b3RhbDogSGlzdG9ncmFtIHwgU3VtbWFyeTtcbiAgICByZWFkb25seSBlcnJvcjogQ291bnRlcjtcbiAgfTtcblxuICByZWFkb25seSByZWZlcmVuY2VzPzogUmVhZG9ubHlBcnJheTxSZWZlcmVuY2UgfCB2b2lkPjtcbiAgcmVhZG9ubHkgdHJhY2U/OiBib29sZWFuOyAvLyBJcyB0aGlzIGFsbG93ZWQgdG8gYmUgYSB0b3AgbGV2ZWwgc3Bhbj9cbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYXB0dXJlU3BhbkxvZ09wdGlvbnMge1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG1lc3NhZ2U/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGxldmVsPzogTG9nTGV2ZWxPcHRpb247XG5cbiAgcmVhZG9ubHkgbWV0cmljPzoge1xuICAgIHJlYWRvbmx5IHRvdGFsOiBIaXN0b2dyYW0gfCBTdW1tYXJ5O1xuICAgIHJlYWRvbmx5IGVycm9yOiBDb3VudGVyO1xuICB9O1xuXG4gIHJlYWRvbmx5IGVycm9yPzpcbiAgICB8IHN0cmluZ1xuICAgIHwge1xuICAgICAgICByZWFkb25seSBtZXNzYWdlPzogc3RyaW5nO1xuICAgICAgICByZWFkb25seSBsZXZlbD86IExvZ0xldmVsO1xuICAgICAgfTtcbiAgcmVhZG9ubHkgcmVmZXJlbmNlcz86IFJlYWRvbmx5QXJyYXk8UmVmZXJlbmNlIHwgdm9pZD47XG4gIHJlYWRvbmx5IHRyYWNlPzogYm9vbGVhbjsgLy8gSXMgdGhpcyBhbGxvd2VkIHRvIGJlIGEgdG9wIGxldmVsIHNwYW4/XG59XG5cbi8qXG5Vc2FnZTpcbkRvIHlvdSB3YW50IHRvIGxvZyBhIG1lc3NhZ2U/IG1vbml0b3IubG9nXG5EbyB5b3Ugd2FudCB0byBhZGQgbWV0YWRhdGEgdG8gYWxsIHN1YnNlcXVlbnQgbW9uaXRvcmluZz8gbW9uaXRvci53aXRoTGFiZWxzXG5EbyB5b3Ugd2FudCB0byB0aW1lIHNvbWV0aGluZz8gbW9uaXRvci5zdGFydFNwYW5cbkRpZCB5b3UgZW50ZXIgYSBuZXcgY29tcG9uZW50PyBtb25pdG9yLmF0XG4qL1xuZXhwb3J0IGludGVyZmFjZSBNb25pdG9yIHtcbiAgcmVhZG9ubHkgbGFiZWxzOiB0eXBlb2YgS25vd25MYWJlbDtcbiAgcmVhZG9ubHkgZm9ybWF0czogdHlwZW9mIEZvcm1hdDtcbiAgcmVhZG9ubHkgYXQ6IChjb21wb25lbnQ6IHN0cmluZykgPT4gTW9uaXRvcjtcbiAgcmVhZG9ubHkgd2l0aExhYmVsczogKGxhYmVsczogTGFiZWxzKSA9PiBNb25pdG9yO1xuICByZWFkb25seSB3aXRoRGF0YTogKGRhdGE6IExhYmVscykgPT4gTW9uaXRvcjtcbiAgcmVhZG9ubHkgZm9yQ29udGV4dDogKGN0eDogQ29udGV4dCkgPT4gTW9uaXRvcjtcbiAgcmVhZG9ubHkgZm9yTWVzc2FnZTogKG1lc3NhZ2U6IEluY29taW5nTWVzc2FnZSkgPT4gTW9uaXRvcjtcblxuICByZWFkb25seSBsb2c6IChvcHRpb25zOiBMb2dPcHRpb25zKSA9PiB2b2lkO1xuICByZWFkb25seSBjYXB0dXJlTG9nOiA8VFJlc3VsdD4oZnVuYzogKG1vbml0b3I6IENhcHR1cmVNb25pdG9yKSA9PiBUUmVzdWx0LCBvcHRpb25zOiBDYXB0dXJlTG9nT3B0aW9ucykgPT4gVFJlc3VsdDtcbiAgcmVhZG9ubHkgbG9nRXJyb3I6IChvcHRpb25zOiBMb2dFcnJvck9wdGlvbnMpID0+IHZvaWQ7XG5cbiAgcmVhZG9ubHkgc3RhcnRTcGFuOiAob3B0aW9uczogU3Bhbk9wdGlvbnMpID0+IFNwYW47XG4gIHJlYWRvbmx5IGNhcHR1cmVTcGFuOiA8VFJlc3VsdD4oZnVuYzogKHNwYW46IENhcHR1cmVNb25pdG9yKSA9PiBUUmVzdWx0LCBvcHRpb25zOiBDYXB0dXJlU3Bhbk9wdGlvbnMpID0+IFRSZXN1bHQ7XG4gIHJlYWRvbmx5IGNhcHR1cmVTcGFuTG9nOiA8VFJlc3VsdD4oXG4gICAgZnVuYzogKHNwYW46IENhcHR1cmVNb25pdG9yKSA9PiBUUmVzdWx0LFxuICAgIG9wdGlvbnM6IENhcHR1cmVTcGFuTG9nT3B0aW9ucyxcbiAgKSA9PiBUUmVzdWx0O1xuXG4gIHJlYWRvbmx5IGNoaWxkT2Y6IDxUIGV4dGVuZHMgU3BhbkNvbnRleHQgfCBNb25pdG9yIHwgdW5kZWZpbmVkPihcbiAgICBzcGFuOiBULFxuICApID0+IFQgZXh0ZW5kcyB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBSZWZlcmVuY2U7XG4gIHJlYWRvbmx5IGZvbGxvd3NGcm9tOiA8VCBleHRlbmRzIFNwYW5Db250ZXh0IHwgTW9uaXRvciB8IHVuZGVmaW5lZD4oXG4gICAgc3BhbjogVCxcbiAgKSA9PiBUIGV4dGVuZHMgdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogUmVmZXJlbmNlO1xuICByZWFkb25seSBleHRyYWN0OiAoZm9ybWF0OiBGb3JtYXQsIGNhcnJpZXI6IENhcnJpZXIpID0+IFNwYW5Db250ZXh0IHwgdW5kZWZpbmVkO1xuICByZWFkb25seSBpbmplY3Q6IChmb3JtYXQ6IEZvcm1hdCwgY2FycmllcjogQ2FycmllcikgPT4gdm9pZDtcblxuICAvLyBFcXVpdmFsZW50IG9mIHBlcmZvcm1hbmNlLm5vdygpIGluIHRoZSBicm93c2VyIGFuZCBwZXJmX2hvb2tzIGluIG5vZGVcbiAgLy8gVXNlZCBmb3IgY29tcGFyaXNvbnMsIHZhbHVlIGlzIGluIG1pbGxpc2Vjb25kcyB3aXRoIG1pY3Jvc2Vjb25kIGRlY2ltYWxzLlxuICByZWFkb25seSBub3c6ICgpID0+IG51bWJlcjtcbiAgLy8gbm93KCkgLyAxMDAwXG4gIHJlYWRvbmx5IG5vd1NlY29uZHM6ICgpID0+IG51bWJlcjtcbiAgcmVhZG9ubHkgc2VydmVNZXRyaWNzOiAocG9ydDogbnVtYmVyKSA9PiB2b2lkO1xuICByZWFkb25seSByZXBvcnQ6IChyZXBvcnQ6IFJlcG9ydCkgPT4gdm9pZDtcblxuICByZWFkb25seSBjbG9zZTogKGNhbGxiYWNrOiAoKSA9PiB2b2lkKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNwYW5Db250ZXh0IHtcbiAgcmVhZG9ubHkgX19icmFuZDogJ1NwYW5Db250ZXh0Jztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYXB0dXJlTW9uaXRvciBleHRlbmRzIE1vbml0b3Ige1xuICByZWFkb25seSBzZXRMYWJlbHM6IChsYWJlbHM6IExhYmVscykgPT4gdm9pZDtcbiAgcmVhZG9ubHkgc2V0RGF0YTogKGRhdGE6IExhYmVscykgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTcGFuIGV4dGVuZHMgQ2FwdHVyZU1vbml0b3Ige1xuICByZWFkb25seSBlbmQ6IChlcnJvcj86IGJvb2xlYW4pID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9nZ2VyTG9nT3B0aW9ucyB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgbGV2ZWw6IExvZ0xldmVsO1xuICByZWFkb25seSBtZXNzYWdlPzogc3RyaW5nO1xuICByZWFkb25seSBsYWJlbHM/OiBMYWJlbHM7XG4gIHJlYWRvbmx5IGRhdGE/OiBMYWJlbHM7XG4gIHJlYWRvbmx5IGVycm9yPzogRXJyb3IgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9nZ2VyIHtcbiAgcmVhZG9ubHkgbG9nOiAob3B0aW9uczogTG9nZ2VyTG9nT3B0aW9ucykgPT4gdm9pZDtcbiAgcmVhZG9ubHkgY2xvc2U6IChjYWxsYmFjazogKCkgPT4gdm9pZCkgPT4gdm9pZDtcbn1cbiJdfQ==
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