@jax-data-science/sci-image-visualizer 0.2.9 → 0.2.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/contracts/instance-segmenter.contract.mjs +1 -1
- package/esm2022/lib/toolbar/segmentation/yolo-segmenter.service.mjs +6 -2
- package/fesm2022/jax-data-science-sci-image-visualizer.mjs +5 -1
- package/fesm2022/jax-data-science-sci-image-visualizer.mjs.map +1 -1
- package/lib/contracts/instance-segmenter.contract.d.ts +24 -0
- package/package.json +2 -2
|
@@ -9,4 +9,4 @@ export const INSTANCE_SEGMENTER = new InjectionToken('INSTANCE_SEGMENTER', {
|
|
|
9
9
|
providedIn: 'root',
|
|
10
10
|
factory: () => inject(YoloSegmenterService),
|
|
11
11
|
});
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFuY2Utc2VnbWVudGVyLmNvbnRyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb250cmFjdHMvaW5zdGFuY2Utc2VnbWVudGVyLmNvbnRyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBK0h0Rjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxjQUFjLENBQXFCLG9CQUFvQixFQUFFO0lBQzdGLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUM7Q0FDNUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBZb2xvU2VnbWVudGVyU2VydmljZSB9IGZyb20gJy4uL3Rvb2xiYXIvc2VnbWVudGF0aW9uL3lvbG8tc2VnbWVudGVyLnNlcnZpY2UnO1xuXG4vKipcbiAqIFBvcnQgZm9yIGFuIGF1dG9tYXRpYyAqKmluc3RhbmNlKiogc2VnbWVudGVyIOKAlCBvbmUgdGhhdCByZXR1cm5zIGRpc2NyZXRlLFxuICogY2xhc3NpZmllZCBvYmplY3RzIHJhdGhlciB0aGFuIGEgcGVyLXBpeGVsIGxhYmVsIG1hcC5cbiAqXG4gKiBUaGlzIGlzIGEgc2libGluZyBvZiB7QGxpbmsgSUNlbGxTZWdtZW50ZXJ9LCBub3QgYSByZXBsYWNlbWVudC4gQ2VsbHBvc2Utc3R5bGVcbiAqIHNlZ21lbnRlcnMgcHJvZHVjZSBvbmUgZXhjbHVzaXZlIGxhYmVsIHBlciBwaXhlbCwgd2hpY2ggaXMgZXhhY3RseSByaWdodCBmb3JcbiAqIGRlbnNlbHkgcGFja2VkIGNlbGxzOyBhIGRldGVjdG9yIGxpa2UgWU9MTyBwcm9kdWNlcyBvdmVybGFwcGluZyBpbnN0YW5jZXMsXG4gKiBlYWNoIHdpdGggaXRzIG93biBjbGFzcyBhbmQgY29uZmlkZW5jZSwgYW5kIGZsYXR0ZW5pbmcgdGhvc2UgaW50byBhIGxhYmVsIG1hcFxuICogd291bGQgc2lsZW50bHkgZGlzY2FyZCBib3RoIHRoZSBvdmVybGFwIGFuZCB0aGUgY2xhc3NpZmljYXRpb24uIFRoZSB0d29cbiAqIG91dHB1dHMgYXJlIGdlbnVpbmVseSBkaWZmZXJlbnQgc2hhcGVzLCBzbyB0aGV5IGdldCBkaWZmZXJlbnQgcG9ydHMuXG4gKlxuICogR2VvbWV0cnkgaXMgcmV0dXJuZWQgYXMgcG9seWdvbiByaW5ncyBpbiAqKmltYWdlIHBpeGVscyoqLCByZWFkeSB0byBiZWNvbWVcbiAqIHtAbGluayBSZWdpb259cyB3aXRob3V0IGEgc2Vjb25kIGNvbnZlcnNpb24gc3RlcC5cbiAqL1xuXG4vKiogQSBjbG9zZWQgcmluZzsgdGhlIGxhc3QgcG9pbnQgaXMgTk9UIGEgcmVwZWF0IG9mIHRoZSBmaXJzdC4gKi9cbmV4cG9ydCB0eXBlIEluc3RhbmNlUmluZyA9IEFycmF5PFtudW1iZXIsIG51bWJlcl0+O1xuXG4vKiogT25lIHBvbHlnb24gd2l0aCBvcHRpb25hbCBpbnRlcmlvciByaW5ncyAoZG9udXQgaG9sZXMpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnN0YW5jZVBvbHlnb24ge1xuICBleHRlcmlvcjogSW5zdGFuY2VSaW5nO1xuICBob2xlczogSW5zdGFuY2VSaW5nW107XG59XG5cbi8qKiBPbmUgZGV0ZWN0ZWQgb2JqZWN0LiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnN0YW5jZURldGVjdGlvbiB7XG4gIC8qKlxuICAgKiBPdXRsaW5lKHMpIG9mIHRoaXMgaW5zdGFuY2UuIFVzdWFsbHkgb25lLCBidXQgYSBtYXNrIHRoYXQgc3BsaXRzIHVuZGVyXG4gICAqIHRocmVzaG9sZGluZyB5aWVsZHMgc2V2ZXJhbCDigJQgdGhleSBhbGwgYmVsb25nIHRvIHRoZSBzYW1lIGRldGVjdGlvbi5cbiAgICovXG4gIHBvbHlnb25zOiBJbnN0YW5jZVBvbHlnb25bXTtcbiAgLyoqIGBbeDEsIHkxLCB4MiwgeTJdYCBpbiBpbWFnZSBwaXhlbHMuICovXG4gIGJveDogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gIC8qKiBNb2RlbCBjb25maWRlbmNlLCAwLi4xLiAqL1xuICBzY29yZTogbnVtYmVyO1xuICBjbGFzc0lkOiBudW1iZXI7XG4gIGNsYXNzTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEluc3RhbmNlU2VnbWVudGF0aW9uIHtcbiAgZGV0ZWN0aW9uczogSW5zdGFuY2VEZXRlY3Rpb25bXTtcbiAgd2lkdGg6IG51bWJlcjtcbiAgaGVpZ2h0OiBudW1iZXI7XG4gIC8qKiBDbGFzcyBuYW1lcyBpbmRleGVkIGJ5IGNsYXNzIGlkLCBmcm9tIHRoZSBtb2RlbCdzIG93biBtZXRhZGF0YS4gKi9cbiAgY2xhc3NOYW1lczogc3RyaW5nW107XG59XG5cbi8qKlxuICogVHVuYWJsZXMgZm9yIG9uZSBydW4uXG4gKlxuICogVGhyZWUgc2VwYXJhdGUgdGhyZXNob2xkcyBhcmUgaW4gcGxheSBhbmQgdGhleSBhcmUgZWFzeSB0byBjb25mbGF0ZTpcbiAqIGBjb25maWRlbmNlYCBhbmQgYGlvdVRocmVzaG9sZGAgYWN0IHBlciB0aWxlLCB3aGlsZSBgbWVyZ2VUaHJlc2hvbGRgIGdvdmVybnNcbiAqIHRoZSBjcm9zcy10aWxlIHJlY29uY2lsaWF0aW9uLiBUaGV5IGNvbWUgZnJvbSBkaWZmZXJlbnQgc3RhZ2VzIG9mIHRoZVxuICogcGlwZWxpbmUgYW5kIGFyZSBub3QgaW50ZXJjaGFuZ2VhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluc3RhbmNlU2VnbWVudE9wdGlvbnMge1xuICAvKiogV2hpY2ggcmVnaXN0ZXJlZCBtb2RlbCB0byBydW4uIERlZmF1bHRzIHRvIHRoZSByZWdpc3RyeSdzIGRlZmF1bHQuICovXG4gIG1vZGVsSWQ/OiBzdHJpbmc7XG4gIC8qKiBNaW5pbXVtIGRldGVjdGlvbiBjb25maWRlbmNlLCBwZXIgdGlsZS4gKi9cbiAgY29uZmlkZW5jZT86IG51bWJlcjtcbiAgLyoqIE5NUyBJb1Ugd2l0aGluIGEgc2luZ2xlIHRpbGUuICovXG4gIGlvdVRocmVzaG9sZD86IG51bWJlcjtcbiAgLyoqIEludGVyc2VjdGlvbi1vdmVyLXNtYWxsZXIgdGhyZXNob2xkIGZvciBtZXJnaW5nIGFjcm9zcyB0aWxlIHNlYW1zLiAqL1xuICBtZXJnZVRocmVzaG9sZD86IG51bWJlcjtcbiAgLyoqIFRpbGUgb3ZlcmxhcCwgcGVyY2VudC4gKi9cbiAgb3ZlcmxhcFg/OiBudW1iZXI7XG4gIG92ZXJsYXBZPzogbnVtYmVyO1xuICAvKiogUHJvYmFiaWxpdHkgYXQgd2hpY2ggYSBtYXNrIHBpeGVsIGNvdW50cyBhcyBpbnNpZGUuICovXG4gIG1hc2tUaHJlc2hvbGQ/OiBudW1iZXI7XG4gIC8qKiBDYXAgb24gZGV0ZWN0aW9ucyBwZXIgdGlsZS4gKi9cbiAgbWF4RGV0ZWN0aW9ucz86IG51bWJlcjtcbiAgLyoqIEtlZXAgb25seSB0aGVzZSBjbGFzcyBpZHM7IG9taXQgZm9yIGFsbCBjbGFzc2VzIHRoZSBtb2RlbCBkZWNsYXJlcy4gKi9cbiAgY2xhc3NGaWx0ZXI/OiBudW1iZXJbXTtcbiAgLyoqIERvdWdsYXMtUGV1Y2tlciB0b2xlcmFuY2UgaW4gcGl4ZWxzIGZvciBvdXRsaW5lIHNpbXBsaWZpY2F0aW9uOyAwIGRpc2FibGVzLiAqL1xuICBzaW1wbGlmeVRvbGVyYW5jZT86IG51bWJlcjtcbiAgLyoqIERyb3AgaW5zdGFuY2VzIHdob3NlIG91dGxpbmUgYXJlYSBpcyBiZWxvdyB0aGlzLCBpbiBzcXVhcmUgcGl4ZWxzLiAqL1xuICBtaW5BcmVhPzogbnVtYmVyO1xuICAvKipcbiAgICogU2V0IGZhbHNlIHRvIGRldGVjdCBib3hlcyB3aXRob3V0IGFzc2VtYmxpbmcgbWFza3Mg4oCUIHN1YnN0YW50aWFsbHkgZmFzdGVyLFxuICAgKiBzaW5jZSBtYXNrIGFzc2VtYmx5IGRvbWluYXRlcyB0aGUgY29zdCBvZiBhIHJ1bi4gRGV0ZWN0aW9ucyB0aGVuIGNhcnJ5IGFcbiAgICogYm94IGFuZCBjbGFzcyBidXQgbm8gb3V0bGluZSwgc28gbm90aGluZyBjYW4gYmUgY29tbWl0dGVkIGFzIGEgcmVnaW9uLlxuICAgKi9cbiAgd2l0aE1hc2tzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEFib3J0IGFuIGluLXByb2dyZXNzIHJ1bi5cbiAgICpcbiAgICogQ2FuY2VsbGF0aW9uIGlzIGNvb3BlcmF0aXZlIGFuZCBjaGVja2VkIGF0IHRpbGUgYm91bmRhcmllcywgc28gaXQgdGFrZXNcbiAgICogZWZmZWN0IHdpdGhpbiByb3VnaGx5IG9uZSB0aWxlIHJhdGhlciB0aGFuIGluc3RhbnRseSDigJQgYSBgc2Vzc2lvbi5ydW4oKWBcbiAgICogYWxyZWFkeSBpbiBmbGlnaHQgY2Fubm90IGJlIGludGVycnVwdGVkLlxuICAgKi9cbiAgc2lnbmFsPzogQWJvcnRTaWduYWw7XG59XG5cbi8qKlxuICogUHJvZ3Jlc3Mvc3RhdHVzIGNhbGxiYWNrcyAoYWxsIG9wdGlvbmFsKS5cbiAqXG4gKiBEZWxpYmVyYXRlbHkgbWlycm9ycyB7QGxpbmsgQ2VsbFNlZ21lbnRQcm9ncmVzc30gaW4gc2hhcGUgcmF0aGVyIHRoYW4gaW1wb3J0aW5nXG4gKiBpdCDigJQgdGhlIHR3byBjb250cmFjdHMgc3RheSBpbmRlcGVuZGVudGx5IHZlcnNpb25hYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluc3RhbmNlU2VnbWVudFByb2dyZXNzIHtcbiAgLyoqIE1vZGVsLWRvd25sb2FkIHByb2dyZXNzLCAwLi4xIChmaXJzdCBydW4gb25seSkuICovXG4gIG9uUHJvZ3Jlc3M/OiAoZnJhY3Rpb246IG51bWJlcikgPT4gdm9pZDtcbiAgLyoqXG4gICAqIFJhdyBkb3dubG9hZCBieXRlIGNvdW50cywgZm9yIGhvc3RzIHRoYXQgcmVuZGVyIGEgc2l6ZSAoXCIxNDIgLyAyODcgTUJcIilcbiAgICogcmF0aGVyIHRoYW4gYSBiYXJlIHBlcmNlbnRhZ2UuIGB0b3RhbGAgaXMgbnVsbCB3aGVuIHRoZSByZXNwb25zZSBjYXJyaWVkIG5vXG4gICAqIENvbnRlbnQtTGVuZ3RoLlxuICAgKlxuICAgKiBBIGZyYWN0aW9uIGFsb25lIGNhbm5vdCBiZSB0dXJuZWQgYmFjayBpbnRvIGJ5dGVzLCBzbyBhIGhvc3QgZ2l2ZW4gb25seVxuICAgKiB7QGxpbmsgb25Qcm9ncmVzc30gaGFzIHRvIGludmVudCB0aGUgbnVtYmVycyDigJQgd2hpY2ggcmVhZHMgYXMgXCIwIE1CIC8gMCBNQlwiXG4gICAqIHRoZSBtb21lbnQgaXQgZG9lcy5cbiAgICovXG4gIG9uQnl0ZXM/OiAobG9hZGVkOiBudW1iZXIsIHRvdGFsOiBudW1iZXIgfCBudWxsKSA9PiB2b2lkO1xuICAvKiogSHVtYW4tcmVhZGFibGUgcGhhc2UsIGUuZy4gJ1J1bm5pbmcgaW5mZXJlbmNlICh0aWxlIDMvOCnigKYnLiAqL1xuICBvblN0YXR1cz86IChzdGF0dXM6IHN0cmluZykgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJSW5zdGFuY2VTZWdtZW50ZXIge1xuICAvKiogRGV0ZWN0IGFuZCBvdXRsaW5lIGFsbCBpbnN0YW5jZXMgaW4gYW4gUkdCQSBpbWFnZS4gKi9cbiAgc2VnbWVudEluc3RhbmNlcyhcbiAgICBpbWFnZTogeyBkYXRhOiBVaW50OENsYW1wZWRBcnJheTsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfSxcbiAgICBvcHRzPzogSW5zdGFuY2VTZWdtZW50T3B0aW9ucyxcbiAgICBwcm9ncmVzcz86IEluc3RhbmNlU2VnbWVudFByb2dyZXNzLFxuICApOiBQcm9taXNlPEluc3RhbmNlU2VnbWVudGF0aW9uPjtcbn1cblxuLyoqXG4gKiBESSB0b2tlbiBmb3IgdGhlIGF1dG9tYXRpYyBpbnN0YW5jZSBzZWdtZW50ZXIuIERlZmF1bHRzIHRvIHRoZSBpbi1saWJyYXJ5XG4gKiB7QGxpbmsgWW9sb1NlZ21lbnRlclNlcnZpY2V9ICh5b2xvLXNlZ2RldGVjdC1qcywgbGF6eS1sb2FkZWQpOyBvdmVycmlkZSBpdCBpblxuICogdGhlIGhvc3QgdG8gc3dhcCBpbXBsZW1lbnRhdGlvbnMg4oCUIGZvciBleGFtcGxlIHRvIGRlbGVnYXRlIHRvIHRoZSBzZXJ2ZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBJTlNUQU5DRV9TRUdNRU5URVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48SUluc3RhbmNlU2VnbWVudGVyPignSU5TVEFOQ0VfU0VHTUVOVEVSJywge1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIGZhY3Rvcnk6ICgpID0+IGluamVjdChZb2xvU2VnbWVudGVyU2VydmljZSksXG59KTtcbiJdfQ==
|
|
@@ -29,6 +29,7 @@ export class YoloSegmenterService {
|
|
|
29
29
|
const seg = await this.getModel(modelId, (loaded, total) => {
|
|
30
30
|
if (total)
|
|
31
31
|
progress?.onProgress?.(loaded / total);
|
|
32
|
+
progress?.onBytes?.(loaded, total);
|
|
32
33
|
if (loaded > 0 && !announcedDownload) {
|
|
33
34
|
announcedDownload = true;
|
|
34
35
|
progress?.onStatus?.(`Downloading ${def.label} model…`);
|
|
@@ -44,7 +45,10 @@ export class YoloSegmenterService {
|
|
|
44
45
|
...(opts.maskThreshold !== undefined ? { maskThreshold: opts.maskThreshold } : {}),
|
|
45
46
|
...(opts.maxDetections !== undefined ? { maxDetections: opts.maxDetections } : {}),
|
|
46
47
|
...(opts.classFilter ? { classFilter: opts.classFilter } : {}),
|
|
47
|
-
|
|
48
|
+
...(opts.withMasks !== undefined ? { withMasks: opts.withMasks } : {}),
|
|
49
|
+
...(opts.signal ? { signal: opts.signal } : {}),
|
|
50
|
+
// Only worth tracing when there are masks to trace.
|
|
51
|
+
tracePolygons: opts.withMasks !== false,
|
|
48
52
|
traceOptions: {
|
|
49
53
|
...(opts.simplifyTolerance !== undefined ? { simplifyTolerance: opts.simplifyTolerance } : {}),
|
|
50
54
|
...(opts.minArea !== undefined ? { minArea: opts.minArea } : {}),
|
|
@@ -162,4 +166,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
|
|
|
162
166
|
type: Injectable,
|
|
163
167
|
args: [{ providedIn: 'root' }]
|
|
164
168
|
}] });
|
|
165
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieW9sby1zZWdtZW50ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvdG9vbGJhci9zZWdtZW50YXRpb24veW9sby1zZWdtZW50ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsWUFBWSxFQUFxQixNQUFNLHVCQUF1QixDQUFDOztBQVcvRjs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE1BQU0sT0FBTyxvQkFBb0I7SUFEakM7UUFFbUIsY0FBUyxHQUFHLElBQUksR0FBRyxFQUF5QixDQUFDO1FBQzdDLFlBQU8sR0FBRyxJQUFJLEdBQUcsRUFBa0MsQ0FBQztLQTRKdEU7SUExSkMsS0FBSyxDQUFDLGdCQUFnQixDQUNwQixLQUFpRSxFQUNqRSxPQUErQixFQUFFLEVBQ2pDLFFBQWtDO1FBRWxDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUkscUJBQXFCLEVBQUUsQ0FBQztRQUN4RCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXZDLElBQUksaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzlCLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FDN0IsT0FBTyxFQUNQLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ2hCLElBQUksS0FBSztnQkFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDO1lBQ2xELElBQUksTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3JDLGlCQUFpQixHQUFHLElBQUksQ0FBQztnQkFD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RXhCLElBQUksTUFBTTtZQUFFLE1BQU0sTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTztRQUVyQiwwRUFBMEU7UUFDMUUsMkVBQTJFO1FBQzNFLG9FQUFvRTtRQUNwRSx1REFBdUQ7UUFDdkQsTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxHQUFHLElBQUksR0FBRyxLQUFLLE1BQU07WUFBRSxPQUFPO1FBQ25DLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssR0FBRztZQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzlELE1BQU0sR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFTyxZQUFZLENBQUMsT0FBZTtRQUNsQyxNQUFNLEdBQUcsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLEdBQUc7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixPQUFPLElBQUksQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7WUFDekIsTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLE9BQU8sOENBQThDLENBQUMsQ0FBQztRQUN4RixDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDOzhHQTdKVSxvQkFBb0I7a0hBQXBCLG9CQUFvQixjQURQLE1BQU07OzJGQUNuQixvQkFBb0I7a0JBRGhDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZ2V0T3J0V2FzbUJhc2UgfSBmcm9tICcuL29ydC1ydW50aW1lLWNvbmZpZyc7XG5pbXBvcnQgeyBnZXREZWZhdWx0WW9sb01vZGVsSWQsIGdldFlvbG9Nb2RlbCwgdHlwZSBZb2xvTW9kZWxEZWYgfSBmcm9tICcuL3lvbG8tbW9kZWwtcmVnaXN0cnknO1xuXG5pbXBvcnQgdHlwZSB7XG4gIElJbnN0YW5jZVNlZ21lbnRlcixcbiAgSW5zdGFuY2VEZXRlY3Rpb24sXG4gIEluc3RhbmNlU2VnbWVudGF0aW9uLFxuICBJbnN0YW5jZVNlZ21lbnRPcHRpb25zLFxuICBJbnN0YW5jZVNlZ21lbnRQcm9ncmVzcyxcbn0gZnJvbSAnLi4vLi4vY29udHJhY3RzL2luc3RhbmNlLXNlZ21lbnRlci5jb250cmFjdCc7XG5pbXBvcnQgdHlwZSB7IFlvbG9TZWdtZW50ZXIgfSBmcm9tICd5b2xvLXNlZ2RldGVjdC1qcyc7XG5cbi8qKlxuICogRGVmYXVsdCBpbi1saWJyYXJ5IHtAbGluayBJSW5zdGFuY2VTZWdtZW50ZXJ9LCBiYWNrZWQgYnkgeW9sby1zZWdkZXRlY3QtanNcbiAqIChZT0xPdjgtc2VnIG9uIFdlYkdQVSwgZmFsbGluZyBiYWNrIHRvIFdBU00pLlxuICpcbiAqIGB5b2xvLXNlZ2RldGVjdC1qc2AgaXMgYSByZWd1bGFyIGRlcGVuZGVuY3kgYnV0IGlzICoqbGF6eS1pbXBvcnRlZCoqIG9uIGZpcnN0XG4gKiB1c2UsIHNvIGFwcHMgdGhhdCBuZXZlciBydW4gWU9MTyBwYXkgbm90aGluZyBmb3IgaXQg4oCUIG9yIGZvciBvbm54cnVudGltZS13ZWIg4oCUXG4gKiBpbiB0aGVpciBpbml0aWFsIGJ1bmRsZS4gVGhpcyBtaXJyb3JzIHtAbGluayBDZWxscG9zZVNlZ21lbnRlclNlcnZpY2V9LlxuICpcbiAqIFRoZSBvbmUgc3RydWN0dXJhbCBkaWZmZXJlbmNlIGZyb20gdGhlIENlbGxwb3NlIHNlcnZpY2U6IHRoZXJlIGFyZSBmb3VyIFlPTE9cbiAqIGNoZWNrcG9pbnRzLCBub3Qgb25lLCBzbyBpbnN0YW5jZXMgYXJlIGNhY2hlZCAqKnBlciBtb2RlbCBpZCoqIHJhdGhlciB0aGFuIGFzXG4gKiBhIHNpbmdsZSBzaW5nbGV0b24uIEVhY2ggZW50cnkgb3ducyBpdHMgb3duIHdvcmtlciBhbmQgT1JUIHNlc3Npb24sIHNvIGEgaG9zdFxuICogdGhhdCBzd2l0Y2hlcyBtb2RlbHMgcGF5cyBhIHNlY29uZCBsb2FkIGJ1dCBrZWVwcyB0aGUgZmlyc3Qgb25lIHdhcm0uIE5vdGhpbmdcbiAqIGV2aWN0cyBhdXRvbWF0aWNhbGx5IOKAlCB0aGVzZSBhcmUgfjE0NCBNQiBlYWNoLCBzbyBhIGhvc3QgdGhhdCBjeWNsZXMgdGhyb3VnaFxuICogYWxsIGZvdXIgc2hvdWxkIGNhbGwge0BsaW5rIGRpc3Bvc2V9IGZvciB0aGUgb25lcyBpdCBpcyBkb25lIHdpdGguXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgWW9sb1NlZ21lbnRlclNlcnZpY2UgaW1wbGVtZW50cyBJSW5zdGFuY2VTZWdtZW50ZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IGluc3RhbmNlcyA9IG5ldyBNYXA8c3RyaW5nLCBZb2xvU2VnbWVudGVyPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IGxvYWRpbmcgPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZTxZb2xvU2VnbWVudGVyPj4oKTtcblxuICBhc3luYyBzZWdtZW50SW5zdGFuY2VzKFxuICAgIGltYWdlOiB7IGRhdGE6IFVpbnQ4Q2xhbXBlZEFycmF5OyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlciB9LFxuICAgIG9wdHM6IEluc3RhbmNlU2VnbWVudE9wdGlvbnMgPSB7fSxcbiAgICBwcm9ncmVzcz86IEluc3RhbmNlU2VnbWVudFByb2dyZXNzLFxuICApOiBQcm9taXNlPEluc3RhbmNlU2VnbWVudGF0aW9uPiB7XG4gICAgY29uc3QgbW9kZWxJZCA9IG9wdHMubW9kZWxJZCA/PyBnZXREZWZhdWx0WW9sb01vZGVsSWQoKTtcbiAgICBjb25zdCBkZWYgPSB0aGlzLnJlcXVpcmVNb2RlbChtb2RlbElkKTtcblxuICAgIGxldCBhbm5vdW5jZWREb3dubG9hZCA9IGZhbHNlO1xuICAgIGNvbnN0IHNlZyA9IGF3YWl0IHRoaXMuZ2V0TW9kZWwoXG4gICAgICBtb2RlbElkLFxuICAgICAgKGxvYWRlZCwgdG90YWwpID0+IHtcbiAgICAgICAgaWYgKHRvdGFsKSBwcm9ncmVzcz8ub25Qcm9ncmVzcz8uKGxvYWRlZCAvIHRvdGFsKTtcbiAgICAgICAgaWYgKGxvYWRlZCA+IDAgJiYgIWFubm91bmNlZERvd25sb2FkKSB7XG4gICAgICAgICAgYW5ub3VuY2VkRG93bmxvYWQgPSB0cnVlO1xuICAgICAgICAgIHByb2dyZXNzPy5vblN0YXR1cz8uKGBEb3dubG9hZGluZyAke2RlZi5sYWJlbH0gbW9kZWzigKZgKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIChzdGF0dXMpID0+IHByb2dyZXNzPy5vblN0YXR1cz8uKHN0YXR1cyksXG4gICAgKTtcblxuICAgIHByb2dyZXNzPy5vblN0YXR1cz8uKCdSdW5uaW5nIGluZmVyZW5jZeKApicpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNlZy5zZWdtZW50KFxuICAgICAgeyBkYXRhOiBpbWFnZS5kYXRhLCB3aWR0aDogaW1hZ2Uud2lkdGgsIGhlaWdodDogaW1hZ2UuaGVpZ2h0IH0sXG4gICAgICB7XG4gICAgICAgIGNvbmZUaHJlc2hvbGQ6IG9wdHMuY29uZmlkZW5jZSA/PyBkZWYuZGVmYXVsdHMuY29uZmlkZW5jZSxcbiAgICAgICAgaW91VGhyZXNob2xkOiBvcHRzLmlvdVRocmVzaG9sZCA/PyBkZWYuZGVmYXVsdHMuaW91VGhyZXNob2xkLFxuICAgICAgICB0aHJlc2hvbGQ6IG9wdHMubWVyZ2VUaHJlc2hvbGQgPz8gZGVmLmRlZmF1bHRzLm1lcmdlVGhyZXNob2xkLFxuICAgICAgICBvdmVybGFwWDogb3B0cy5vdmVybGFwWCA/PyBkZWYuZGVmYXVsdHMub3ZlcmxhcFgsXG4gICAgICAgIG92ZXJsYXBZOiBvcHRzLm92ZXJsYXBZID8/IGRlZi5kZWZhdWx0cy5vdmVybGFwWSxcbiAgICAgICAgLi4uKG9wdHMubWFza1RocmVzaG9sZCAhPT0gdW5kZWZpbmVkID8geyBtYXNrVGhyZXNob2xkOiBvcHRzLm1hc2tUaHJlc2hvbGQgfSA6IHt9KSxcbiAgICAgICAgLi4uKG9wdHMubWF4RGV0ZWN0aW9ucyAhPT0gdW5kZWZpbmVkID8geyBtYXhEZXRlY3Rpb25zOiBvcHRzLm1heERldGVjdGlvbnMgfSA6IHt9KSxcbiAgICAgICAgLi4uKG9wdHMuY2xhc3NGaWx0ZXIgPyB7IGNsYXNzRmlsdGVyOiBvcHRzLmNsYXNzRmlsdGVyIH0gOiB7fSksXG4gICAgICAgIHRyYWNlUG9seWdvbnM6IHRydWUsXG4gICAgICAgIHRyYWNlT3B0aW9uczoge1xuICAgICAgICAgIC4uLihvcHRzLnNpbXBsaWZ5VG9sZXJhbmNlICE9PSB1bmRlZmluZWQgPyB7IHNpbXBsaWZ5VG9sZXJhbmNlOiBvcHRzLnNpbXBsaWZ5VG9sZXJhbmNlIH0gOiB7fSksXG4gICAgICAgICAgLi4uKG9wdHMubWluQXJlYSAhPT0gdW5kZWZpbmVkID8geyBtaW5BcmVhOiBvcHRzLm1pbkFyZWEgfSA6IHt9KSxcbiAgICAgICAgfSxcbiAgICAgICAgb25UaWxlUHJvZ3Jlc3M6IChkb25lLCB0b3RhbCkgPT5cbiAgICAgICAgICBwcm9ncmVzcz8ub25TdGF0dXM/Lihkb25lIDwgdG90YWwgPyBgUnVubmluZyBpbmZlcmVuY2UgKHRpbGUgJHtkb25lfS8ke3RvdGFsfSnigKZgIDogJ1RyYWNpbmcgb3V0bGluZXPigKYnKSxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIC8vIERldGVjdGlvbnMgd2l0aG91dCBnZW9tZXRyeSBhcmUgZHJvcHBlZCByYXRoZXIgdGhhbiBzdXJmYWNlZCBhcyBlbXB0eVxuICAgIC8vIHJlZ2lvbnMg4oCUIGEgZGV0ZWN0aW9uIHdob3NlIG1hc2sgdmFuaXNoZWQgdW5kZXIgdGhyZXNob2xkaW5nIGhhcyBub3RoaW5nXG4gICAgLy8gbWVhbmluZ2Z1bCB0byBkcmF3IG9yIGVkaXQuXG4gICAgY29uc3QgZGV0ZWN0aW9uczogSW5zdGFuY2VEZXRlY3Rpb25bXSA9IFtdO1xuICAgIGZvciAoY29uc3QgZCBvZiByZXN1bHQuZGV0ZWN0aW9ucykge1xuICAgICAgaWYgKCFkLnBvbHlnb25zIHx8IGQucG9seWdvbnMubGVuZ3RoID09PSAwKSBjb250aW51ZTtcbiAgICAgIGRldGVjdGlvbnMucHVzaCh7XG4gICAgICAgIHBvbHlnb25zOiBkLnBvbHlnb25zLm1hcCgocCkgPT4gKHtcbiAgICAgICAgICBleHRlcmlvcjogcC5leHRlcmlvci5tYXAoKFt4LCB5XSk6IFtudW1iZXIsIG51bWJlcl0gPT4gW3gsIHldKSxcbiAgICAgICAgICBob2xlczogcC5ob2xlcy5tYXAoKGgpID0+IGgubWFwKChbeCwgeV0pOiBbbnVtYmVyLCBudW1iZXJdID0+IFt4LCB5XSkpLFxuICAgICAgICB9KSksXG4gICAgICAgIGJveDogW2QuYm94WzBdLCBkLmJveFsxXSwgZC5ib3hbMl0sIGQuYm94WzNdXSxcbiAgICAgICAgc2NvcmU6IGQuc2NvcmUsXG4gICAgICAgIGNsYXNzSWQ6IGQuY2xhc3NJZCxcbiAgICAgICAgY2xhc3NOYW1lOiBkLmNsYXNzTmFtZSA/PyBgY2xhc3Mke2QuY2xhc3NJZH1gLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRldGVjdGlvbnMsXG4gICAgICB3aWR0aDogcmVzdWx0LndpZHRoLFxuICAgICAgaGVpZ2h0OiByZXN1bHQuaGVpZ2h0LFxuICAgICAgY2xhc3NOYW1lczogcmVzdWx0LmNsYXNzTmFtZXMsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgc2hhcmVkIHNlZ21lbnRlciBmb3IgYSBtb2RlbCBpZCwgY3JlYXRlZCBvbiBmaXJzdCB1c2UgYW5kIHJldXNlZFxuICAgKiB0aGVyZWFmdGVyIChkZWR1cGVkIGFjcm9zcyBjb25jdXJyZW50IGNhbGxlcnMpLiBFeHBvc2VkIHNvIGEgaG9zdCdzXG4gICAqIHByb2Nlc3NpbmcgcGlwZWxpbmUgY2FuIGRyaXZlIHJpY2hlciBgc2VnbWVudCgpYCBvcHRpb25zIG9uIHRoZSBzYW1lIGxvYWRlZFxuICAgKiBzZXNzaW9uIGluc3RlYWQgb2YgbG9hZGluZyB0aGUgbW9kZWwgdHdpY2UuXG4gICAqL1xuICBnZXRNb2RlbChcbiAgICBtb2RlbElkOiBzdHJpbmcgPSBnZXREZWZhdWx0WW9sb01vZGVsSWQoKSxcbiAgICBvblByb2dyZXNzPzogKGxvYWRlZDogbnVtYmVyLCB0b3RhbDogbnVtYmVyIHwgbnVsbCkgPT4gdm9pZCxcbiAgICBvblN0YXR1cz86IChzdGF0dXM6IHN0cmluZykgPT4gdm9pZCxcbiAgKTogUHJvbWlzZTxZb2xvU2VnbWVudGVyPiB7XG4gICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLmluc3RhbmNlcy5nZXQobW9kZWxJZCk7XG4gICAgaWYgKGV4aXN0aW5nKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGV4aXN0aW5nKTtcblxuICAgIGNvbnN0IGluRmxpZ2h0ID0gdGhpcy5sb2FkaW5nLmdldChtb2RlbElkKTtcbiAgICBpZiAoaW5GbGlnaHQpIHJldHVybiBpbkZsaWdodDtcblxuICAgIGNvbnN0IGRlZiA9IHRoaXMucmVxdWlyZU1vZGVsKG1vZGVsSWQpO1xuICAgIGNvbnN0IGxvYWQgPSAoYXN5bmMgKCkgPT4ge1xuICAgICAgLy8gTGF6eToga2VlcCB5b2xvLXNlZ2RldGVjdC1qcyArIGl0cyBPUlQgcnVudGltZSBvdXQgb2YgdGhlIGluaXRpYWwgYnVuZGxlLlxuICAgICAgY29uc3QgeyBZb2xvU2VnbWVudGVyLCBjb25maWd1cmVPcnQgfSA9IGF3YWl0IGltcG9ydCgneW9sby1zZWdkZXRlY3QtanMnKTtcbiAgICAgIGNvbmZpZ3VyZU9ydCh7IHdhc21QYXRoczogZ2V0T3J0V2FzbUJhc2UoKSB9KTtcbiAgICAgIGNvbnN0IHNlZyA9IGF3YWl0IFlvbG9TZWdtZW50ZXIuZnJvbVByZXRyYWluZWQoZGVmLm1vZGVsVXJsLCB7XG4gICAgICAgIHByZWxvYWQ6IHRydWUsXG4gICAgICAgIC4uLihkZWYubWV0YVVybCA/IHsgbWV0YVVybDogZGVmLm1ldGFVcmwgfSA6IHt9KSxcbiAgICAgICAgb25Qcm9ncmVzczogKHsgbG9hZGVkLCB0b3RhbCB9KSA9PiBvblByb2dyZXNzPy4obG9hZGVkLCB0b3RhbCksXG4gICAgICAgIG9uU3RhdHVzOiAocykgPT4gb25TdGF0dXM/LihzKSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5pbnN0YW5jZXMuc2V0KG1vZGVsSWQsIHNlZyk7XG4gICAgICByZXR1cm4gc2VnO1xuICAgIH0pKCk7XG5cbiAgICB0aGlzLmxvYWRpbmcuc2V0KG1vZGVsSWQsIGxvYWQpO1xuICAgIC8vIEEgZmFpbGVkIGxvYWQgbXVzdCBub3QgcG9pc29uIHRoZSBjYWNoZSDigJQgdGhlIG5leHQgY2FsbGVyIHNob3VsZCByZXRyeVxuICAgIC8vIHJhdGhlciB0aGFuIGluaGVyaXQgdGhlIHJlamVjdGVkIHByb21pc2UgZm9yZXZlci5cbiAgICBsb2FkLmNhdGNoKCgpID0+IHRoaXMubG9hZGluZy5kZWxldGUobW9kZWxJZCkpO1xuICAgIHJldHVybiBsb2FkO1xuICB9XG5cbiAgLyoqIFdoZXRoZXIgYSBtb2RlbCBpcyBhbHJlYWR5IGxvYWRlZCAod2FybSkuICovXG4gIGlzTG9hZGVkKG1vZGVsSWQ6IHN0cmluZyA9IGdldERlZmF1bHRZb2xvTW9kZWxJZCgpKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaW5zdGFuY2VzLmhhcyhtb2RlbElkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWxlYXNlIG9uZSBtb2RlbCwgb3IgYWxsIG9mIHRoZW0uIFNhZmUgdG8gY2FsbCBvbiBhIG1vZGVsIG5ldmVyIGxvYWRlZC5cbiAgICpcbiAgICogSW4tZmxpZ2h0IGxvYWRzIGFyZSB0b3JuIGRvd24gdG9vLCBub3QganVzdCB3YXJtIG9uZXMuIFNpbXBseSBkcm9wcGluZyB0aGVcbiAgICogcGVuZGluZyBwcm9taXNlIGFuZCByZXR1cm5pbmcgd291bGQgbGV0IHRoZSBsb2FkIGZpbmlzaCBhZnRlcndhcmRzLFxuICAgKiByZS1wb3B1bGF0ZSB7QGxpbmsgaW5zdGFuY2VzfSwgYW5kIHN0cmFuZCBhIGxpdmUgd29ya2VyIGFuZCBPUlQgc2Vzc2lvbiB0aGF0XG4gICAqIG5vdGhpbmcgb3ducyDigJQgZGlzcG9zYWwgd291bGQgaGF2ZSByZXBvcnRlZCBzdWNjZXNzIHdoaWxlIGxlYWtpbmcuIFNvIGEgbG9hZFxuICAgKiB0aGF0IGlzIHN0aWxsIHJ1bm5pbmcgaXMgYXdhaXRlZCBhbmQgdGhlbiByZWxlYXNlZC5cbiAgICovXG4gIGFzeW5jIGRpc3Bvc2UobW9kZWxJZD86IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGlkcyA9IG1vZGVsSWQgPyBbbW9kZWxJZF0gOiBbLi4ubmV3IFNldChbLi4udGhpcy5pbnN0YW5jZXMua2V5cygpLCAuLi50aGlzLmxvYWRpbmcua2V5cygpXSldO1xuICAgIGF3YWl0IFByb21pc2UuYWxsKGlkcy5tYXAoKGlkKSA9PiB0aGlzLmRpc3Bvc2VPbmUoaWQpKSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGRpc3Bvc2VPbmUoaWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHBlbmRpbmcgPSB0aGlzLmxvYWRpbmcuZ2V0KGlkKTtcbiAgICBjb25zdCBsb2FkZWQgPSB0aGlzLmluc3RhbmNlcy5nZXQoaWQpO1xuICAgIHRoaXMuaW5zdGFuY2VzLmRlbGV0ZShpZCk7XG4gICAgdGhpcy5sb2FkaW5nLmRlbGV0ZShpZCk7XG5cbiAgICBpZiAobG9hZGVkKSBhd2FpdCBsb2FkZWQuZGlzcG9zZSgpO1xuICAgIGlmICghcGVuZGluZykgcmV0dXJuO1xuXG4gICAgLy8gQSBwZW5kaW5nIGxvYWQgYXNzaWducyBpbnN0YW5jZXNbaWRdIGJlZm9yZSBpdHMgcHJvbWlzZSByZXNvbHZlcywgc28gYnlcbiAgICAvLyB0aGUgdGltZSB0aGlzIGF3YWl0IHJldHVybnMgdGhlIGVudHJ5IGlzIGJhY2suIENsZWFyIGl0IG9ubHkgaWYgaXQgc3RpbGxcbiAgICAvLyBwb2ludHMgYXQgd2hhdCAqdGhpcyogbG9hZCBwcm9kdWNlZCDigJQgYSBuZXdlciBsb2FkIHN0YXJ0ZWQgaW4gdGhlXG4gICAgLy8gbWVhbnRpbWUgb3ducyBpdHMgb3duIGVudHJ5IGFuZCBtdXN0IG5vdCBiZSBldmljdGVkLlxuICAgIGNvbnN0IHNlZyA9IGF3YWl0IHBlbmRpbmcuY2F0Y2goKCkgPT4gbnVsbCk7XG4gICAgaWYgKCFzZWcgfHwgc2VnID09PSBsb2FkZWQpIHJldHVybjtcbiAgICBpZiAodGhpcy5pbnN0YW5jZXMuZ2V0KGlkKSA9PT0gc2VnKSB0aGlzLmluc3RhbmNlcy5kZWxldGUoaWQpO1xuICAgIGF3YWl0IHNlZy5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIHJlcXVpcmVNb2RlbChtb2RlbElkOiBzdHJpbmcpOiBZb2xvTW9kZWxEZWYge1xuICAgIGNvbnN0IGRlZiA9IGdldFlvbG9Nb2RlbChtb2RlbElkKTtcbiAgICBpZiAoIWRlZikgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIFlPTE8gbW9kZWwgaWQgXCIke21vZGVsSWR9XCIuYCk7XG4gICAgaWYgKCFkZWYubW9kZWxVcmwudHJpbSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFlPTE8gbW9kZWwgXCIke21vZGVsSWR9XCIgaXMgbm90IGNvbmZpZ3VyZWQg4oCUIGl0cyBtb2RlbFVybCBpcyBlbXB0eS5gKTtcbiAgICB9XG4gICAgcmV0dXJuIGRlZjtcbiAgfVxufVxuIl19
|
|
169
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieW9sby1zZWdtZW50ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvdG9vbGJhci9zZWdtZW50YXRpb24veW9sby1zZWdtZW50ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsWUFBWSxFQUFxQixNQUFNLHVCQUF1QixDQUFDOztBQVcvRjs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE1BQU0sT0FBTyxvQkFBb0I7SUFEakM7UUFFbUIsY0FBUyxHQUFHLElBQUksR0FBRyxFQUF5QixDQUFDO1FBQzdDLFlBQU8sR0FBRyxJQUFJLEdBQUcsRUFBa0MsQ0FBQztLQWdLdEU7SUE5SkMsS0FBSyxDQUFDLGdCQUFnQixDQUNwQixLQUFpRSxFQUNqRSxPQUErQixFQUFFLEVBQ2pDLFFBQWtDO1FBRWxDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUkscUJBQXFCLEVBQUUsQ0FBQztRQUN4RCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXZDLElBQUksaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzlCLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FDN0IsT0FBTyxFQUNQLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ2hCLElBQUksS0FBSztnQkFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDO1lBQ2xELFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDbkMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxJQUFJ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QUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUN6QixNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsT0FBTyw4Q0FBOEMsQ0FBQyxDQUFDO1FBQ3hGLENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7OEdBaktVLG9CQUFvQjtrSEFBcEIsb0JBQW9CLGNBRFAsTUFBTTs7MkZBQ25CLG9CQUFvQjtrQkFEaEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBnZXRPcnRXYXNtQmFzZSB9IGZyb20gJy4vb3J0LXJ1bnRpbWUtY29uZmlnJztcbmltcG9ydCB7IGdldERlZmF1bHRZb2xvTW9kZWxJZCwgZ2V0WW9sb01vZGVsLCB0eXBlIFlvbG9Nb2RlbERlZiB9IGZyb20gJy4veW9sby1tb2RlbC1yZWdpc3RyeSc7XG5cbmltcG9ydCB0eXBlIHtcbiAgSUluc3RhbmNlU2VnbWVudGVyLFxuICBJbnN0YW5jZURldGVjdGlvbixcbiAgSW5zdGFuY2VTZWdtZW50YXRpb24sXG4gIEluc3RhbmNlU2VnbWVudE9wdGlvbnMsXG4gIEluc3RhbmNlU2VnbWVudFByb2dyZXNzLFxufSBmcm9tICcuLi8uLi9jb250cmFjdHMvaW5zdGFuY2Utc2VnbWVudGVyLmNvbnRyYWN0JztcbmltcG9ydCB0eXBlIHsgWW9sb1NlZ21lbnRlciB9IGZyb20gJ3lvbG8tc2VnZGV0ZWN0LWpzJztcblxuLyoqXG4gKiBEZWZhdWx0IGluLWxpYnJhcnkge0BsaW5rIElJbnN0YW5jZVNlZ21lbnRlcn0sIGJhY2tlZCBieSB5b2xvLXNlZ2RldGVjdC1qc1xuICogKFlPTE92OC1zZWcgb24gV2ViR1BVLCBmYWxsaW5nIGJhY2sgdG8gV0FTTSkuXG4gKlxuICogYHlvbG8tc2VnZGV0ZWN0LWpzYCBpcyBhIHJlZ3VsYXIgZGVwZW5kZW5jeSBidXQgaXMgKipsYXp5LWltcG9ydGVkKiogb24gZmlyc3RcbiAqIHVzZSwgc28gYXBwcyB0aGF0IG5ldmVyIHJ1biBZT0xPIHBheSBub3RoaW5nIGZvciBpdCDigJQgb3IgZm9yIG9ubnhydW50aW1lLXdlYiDigJRcbiAqIGluIHRoZWlyIGluaXRpYWwgYnVuZGxlLiBUaGlzIG1pcnJvcnMge0BsaW5rIENlbGxwb3NlU2VnbWVudGVyU2VydmljZX0uXG4gKlxuICogVGhlIG9uZSBzdHJ1Y3R1cmFsIGRpZmZlcmVuY2UgZnJvbSB0aGUgQ2VsbHBvc2Ugc2VydmljZTogdGhlcmUgYXJlIGZvdXIgWU9MT1xuICogY2hlY2twb2ludHMsIG5vdCBvbmUsIHNvIGluc3RhbmNlcyBhcmUgY2FjaGVkICoqcGVyIG1vZGVsIGlkKiogcmF0aGVyIHRoYW4gYXNcbiAqIGEgc2luZ2xlIHNpbmdsZXRvbi4gRWFjaCBlbnRyeSBvd25zIGl0cyBvd24gd29ya2VyIGFuZCBPUlQgc2Vzc2lvbiwgc28gYSBob3N0XG4gKiB0aGF0IHN3aXRjaGVzIG1vZGVscyBwYXlzIGEgc2Vjb25kIGxvYWQgYnV0IGtlZXBzIHRoZSBmaXJzdCBvbmUgd2FybS4gTm90aGluZ1xuICogZXZpY3RzIGF1dG9tYXRpY2FsbHkg4oCUIHRoZXNlIGFyZSB+MTQ0IE1CIGVhY2gsIHNvIGEgaG9zdCB0aGF0IGN5Y2xlcyB0aHJvdWdoXG4gKiBhbGwgZm91ciBzaG91bGQgY2FsbCB7QGxpbmsgZGlzcG9zZX0gZm9yIHRoZSBvbmVzIGl0IGlzIGRvbmUgd2l0aC5cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBZb2xvU2VnbWVudGVyU2VydmljZSBpbXBsZW1lbnRzIElJbnN0YW5jZVNlZ21lbnRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW5zdGFuY2VzID0gbmV3IE1hcDxzdHJpbmcsIFlvbG9TZWdtZW50ZXI+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbG9hZGluZyA9IG5ldyBNYXA8c3RyaW5nLCBQcm9taXNlPFlvbG9TZWdtZW50ZXI+PigpO1xuXG4gIGFzeW5jIHNlZ21lbnRJbnN0YW5jZXMoXG4gICAgaW1hZ2U6IHsgZGF0YTogVWludDhDbGFtcGVkQXJyYXk7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH0sXG4gICAgb3B0czogSW5zdGFuY2VTZWdtZW50T3B0aW9ucyA9IHt9LFxuICAgIHByb2dyZXNzPzogSW5zdGFuY2VTZWdtZW50UHJvZ3Jlc3MsXG4gICk6IFByb21pc2U8SW5zdGFuY2VTZWdtZW50YXRpb24+IHtcbiAgICBjb25zdCBtb2RlbElkID0gb3B0cy5tb2RlbElkID8/IGdldERlZmF1bHRZb2xvTW9kZWxJZCgpO1xuICAgIGNvbnN0IGRlZiA9IHRoaXMucmVxdWlyZU1vZGVsKG1vZGVsSWQpO1xuXG4gICAgbGV0IGFubm91bmNlZERvd25sb2FkID0gZmFsc2U7XG4gICAgY29uc3Qgc2VnID0gYXdhaXQgdGhpcy5nZXRNb2RlbChcbiAgICAgIG1vZGVsSWQsXG4gICAgICAobG9hZGVkLCB0b3RhbCkgPT4ge1xuICAgICAgICBpZiAodG90YWwpIHByb2dyZXNzPy5vblByb2dyZXNzPy4obG9hZGVkIC8gdG90YWwpO1xuICAgICAgICBwcm9ncmVzcz8ub25CeXRlcz8uKGxvYWRlZCwgdG90YWwpO1xuICAgICAgICBpZiAobG9hZGVkID4gMCAmJiAhYW5ub3VuY2VkRG93bmxvYWQpIHtcbiAgICAgICAgICBhbm5vdW5jZWREb3dubG9hZCA9IHRydWU7XG4gICAgICAgICAgcHJvZ3Jlc3M/Lm9uU3RhdHVzPy4oYERvd25sb2FkaW5nICR7ZGVmLmxhYmVsfSBtb2RlbOKApmApO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgKHN0YXR1cykgPT4gcHJvZ3Jlc3M/Lm9uU3RhdHVzPy4oc3RhdHVzKSxcbiAgICApO1xuXG4gICAgcHJvZ3Jlc3M/Lm9uU3RhdHVzPy4oJ1J1bm5pbmcgaW5mZXJlbmNl4oCmJyk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2VnLnNlZ21lbnQoXG4gICAgICB7IGRhdGE6IGltYWdlLmRhdGEsIHdpZHRoOiBpbWFnZS53aWR0aCwgaGVpZ2h0OiBpbWFnZS5oZWlnaHQgfSxcbiAgICAgIHtcbiAgICAgICAgY29uZlRocmVzaG9sZDogb3B0cy5jb25maWRlbmNlID8/IGRlZi5kZWZhdWx0cy5jb25maWRlbmNlLFxuICAgICAgICBpb3VUaHJlc2hvbGQ6IG9wdHMuaW91VGhyZXNob2xkID8/IGRlZi5kZWZhdWx0cy5pb3VUaHJlc2hvbGQsXG4gICAgICAgIHRocmVzaG9sZDogb3B0cy5tZXJnZVRocmVzaG9sZCA/PyBkZWYuZGVmYXVsdHMubWVyZ2VUaHJlc2hvbGQsXG4gICAgICAgIG92ZXJsYXBYOiBvcHRzLm92ZXJsYXBYID8/IGRlZi5kZWZhdWx0cy5vdmVybGFwWCxcbiAgICAgICAgb3ZlcmxhcFk6IG9wdHMub3ZlcmxhcFkgPz8gZGVmLmRlZmF1bHRzLm92ZXJsYXBZLFxuICAgICAgICAuLi4ob3B0cy5tYXNrVGhyZXNob2xkICE9PSB1bmRlZmluZWQgPyB7IG1hc2tUaHJlc2hvbGQ6IG9wdHMubWFza1RocmVzaG9sZCB9IDoge30pLFxuICAgICAgICAuLi4ob3B0cy5tYXhEZXRlY3Rpb25zICE9PSB1bmRlZmluZWQgPyB7IG1heERldGVjdGlvbnM6IG9wdHMubWF4RGV0ZWN0aW9ucyB9IDoge30pLFxuICAgICAgICAuLi4ob3B0cy5jbGFzc0ZpbHRlciA/IHsgY2xhc3NGaWx0ZXI6IG9wdHMuY2xhc3NGaWx0ZXIgfSA6IHt9KSxcbiAgICAgICAgLi4uKG9wdHMud2l0aE1hc2tzICE9PSB1bmRlZmluZWQgPyB7IHdpdGhNYXNrczogb3B0cy53aXRoTWFza3MgfSA6IHt9KSxcbiAgICAgICAgLi4uKG9wdHMuc2lnbmFsID8geyBzaWduYWw6IG9wdHMuc2lnbmFsIH0gOiB7fSksXG4gICAgICAgIC8vIE9ubHkgd29ydGggdHJhY2luZyB3aGVuIHRoZXJlIGFyZSBtYXNrcyB0byB0cmFjZS5cbiAgICAgICAgdHJhY2VQb2x5Z29uczogb3B0cy53aXRoTWFza3MgIT09IGZhbHNlLFxuICAgICAgICB0cmFjZU9wdGlvbnM6IHtcbiAgICAgICAgICAuLi4ob3B0cy5zaW1wbGlmeVRvbGVyYW5jZSAhPT0gdW5kZWZpbmVkID8geyBzaW1wbGlmeVRvbGVyYW5jZTogb3B0cy5zaW1wbGlmeVRvbGVyYW5jZSB9IDoge30pLFxuICAgICAgICAgIC4uLihvcHRzLm1pbkFyZWEgIT09IHVuZGVmaW5lZCA/IHsgbWluQXJlYTogb3B0cy5taW5BcmVhIH0gOiB7fSksXG4gICAgICAgIH0sXG4gICAgICAgIG9uVGlsZVByb2dyZXNzOiAoZG9uZSwgdG90YWwpID0+XG4gICAgICAgICAgcHJvZ3Jlc3M/Lm9uU3RhdHVzPy4oZG9uZSA8IHRvdGFsID8gYFJ1bm5pbmcgaW5mZXJlbmNlICh0aWxlICR7ZG9uZX0vJHt0b3RhbH0p4oCmYCA6ICdUcmFjaW5nIG91dGxpbmVz4oCmJyksXG4gICAgICB9LFxuICAgICk7XG5cbiAgICAvLyBEZXRlY3Rpb25zIHdpdGhvdXQgZ2VvbWV0cnkgYXJlIGRyb3BwZWQgcmF0aGVyIHRoYW4gc3VyZmFjZWQgYXMgZW1wdHlcbiAgICAvLyByZWdpb25zIOKAlCBhIGRldGVjdGlvbiB3aG9zZSBtYXNrIHZhbmlzaGVkIHVuZGVyIHRocmVzaG9sZGluZyBoYXMgbm90aGluZ1xuICAgIC8vIG1lYW5pbmdmdWwgdG8gZHJhdyBvciBlZGl0LlxuICAgIGNvbnN0IGRldGVjdGlvbnM6IEluc3RhbmNlRGV0ZWN0aW9uW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGQgb2YgcmVzdWx0LmRldGVjdGlvbnMpIHtcbiAgICAgIGlmICghZC5wb2x5Z29ucyB8fCBkLnBvbHlnb25zLmxlbmd0aCA9PT0gMCkgY29udGludWU7XG4gICAgICBkZXRlY3Rpb25zLnB1c2goe1xuICAgICAgICBwb2x5Z29uczogZC5wb2x5Z29ucy5tYXAoKHApID0+ICh7XG4gICAgICAgICAgZXh0ZXJpb3I6IHAuZXh0ZXJpb3IubWFwKChbeCwgeV0pOiBbbnVtYmVyLCBudW1iZXJdID0+IFt4LCB5XSksXG4gICAgICAgICAgaG9sZXM6IHAuaG9sZXMubWFwKChoKSA9PiBoLm1hcCgoW3gsIHldKTogW251bWJlciwgbnVtYmVyXSA9PiBbeCwgeV0pKSxcbiAgICAgICAgfSkpLFxuICAgICAgICBib3g6IFtkLmJveFswXSwgZC5ib3hbMV0sIGQuYm94WzJdLCBkLmJveFszXV0sXG4gICAgICAgIHNjb3JlOiBkLnNjb3JlLFxuICAgICAgICBjbGFzc0lkOiBkLmNsYXNzSWQsXG4gICAgICAgIGNsYXNzTmFtZTogZC5jbGFzc05hbWUgPz8gYGNsYXNzJHtkLmNsYXNzSWR9YCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkZXRlY3Rpb25zLFxuICAgICAgd2lkdGg6IHJlc3VsdC53aWR0aCxcbiAgICAgIGhlaWdodDogcmVzdWx0LmhlaWdodCxcbiAgICAgIGNsYXNzTmFtZXM6IHJlc3VsdC5jbGFzc05hbWVzLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVGhlIHNoYXJlZCBzZWdtZW50ZXIgZm9yIGEgbW9kZWwgaWQsIGNyZWF0ZWQgb24gZmlyc3QgdXNlIGFuZCByZXVzZWRcbiAgICogdGhlcmVhZnRlciAoZGVkdXBlZCBhY3Jvc3MgY29uY3VycmVudCBjYWxsZXJzKS4gRXhwb3NlZCBzbyBhIGhvc3Qnc1xuICAgKiBwcm9jZXNzaW5nIHBpcGVsaW5lIGNhbiBkcml2ZSByaWNoZXIgYHNlZ21lbnQoKWAgb3B0aW9ucyBvbiB0aGUgc2FtZSBsb2FkZWRcbiAgICogc2Vzc2lvbiBpbnN0ZWFkIG9mIGxvYWRpbmcgdGhlIG1vZGVsIHR3aWNlLlxuICAgKi9cbiAgZ2V0TW9kZWwoXG4gICAgbW9kZWxJZDogc3RyaW5nID0gZ2V0RGVmYXVsdFlvbG9Nb2RlbElkKCksXG4gICAgb25Qcm9ncmVzcz86IChsb2FkZWQ6IG51bWJlciwgdG90YWw6IG51bWJlciB8IG51bGwpID0+IHZvaWQsXG4gICAgb25TdGF0dXM/OiAoc3RhdHVzOiBzdHJpbmcpID0+IHZvaWQsXG4gICk6IFByb21pc2U8WW9sb1NlZ21lbnRlcj4ge1xuICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5pbnN0YW5jZXMuZ2V0KG1vZGVsSWQpO1xuICAgIGlmIChleGlzdGluZykgcmV0dXJuIFByb21pc2UucmVzb2x2ZShleGlzdGluZyk7XG5cbiAgICBjb25zdCBpbkZsaWdodCA9IHRoaXMubG9hZGluZy5nZXQobW9kZWxJZCk7XG4gICAgaWYgKGluRmxpZ2h0KSByZXR1cm4gaW5GbGlnaHQ7XG5cbiAgICBjb25zdCBkZWYgPSB0aGlzLnJlcXVpcmVNb2RlbChtb2RlbElkKTtcbiAgICBjb25zdCBsb2FkID0gKGFzeW5jICgpID0+IHtcbiAgICAgIC8vIExhenk6IGtlZXAgeW9sby1zZWdkZXRlY3QtanMgKyBpdHMgT1JUIHJ1bnRpbWUgb3V0IG9mIHRoZSBpbml0aWFsIGJ1bmRsZS5cbiAgICAgIGNvbnN0IHsgWW9sb1NlZ21lbnRlciwgY29uZmlndXJlT3J0IH0gPSBhd2FpdCBpbXBvcnQoJ3lvbG8tc2VnZGV0ZWN0LWpzJyk7XG4gICAgICBjb25maWd1cmVPcnQoeyB3YXNtUGF0aHM6IGdldE9ydFdhc21CYXNlKCkgfSk7XG4gICAgICBjb25zdCBzZWcgPSBhd2FpdCBZb2xvU2VnbWVudGVyLmZyb21QcmV0cmFpbmVkKGRlZi5tb2RlbFVybCwge1xuICAgICAgICBwcmVsb2FkOiB0cnVlLFxuICAgICAgICAuLi4oZGVmLm1ldGFVcmwgPyB7IG1ldGFVcmw6IGRlZi5tZXRhVXJsIH0gOiB7fSksXG4gICAgICAgIG9uUHJvZ3Jlc3M6ICh7IGxvYWRlZCwgdG90YWwgfSkgPT4gb25Qcm9ncmVzcz8uKGxvYWRlZCwgdG90YWwpLFxuICAgICAgICBvblN0YXR1czogKHMpID0+IG9uU3RhdHVzPy4ocyksXG4gICAgICB9KTtcbiAgICAgIHRoaXMuaW5zdGFuY2VzLnNldChtb2RlbElkLCBzZWcpO1xuICAgICAgcmV0dXJuIHNlZztcbiAgICB9KSgpO1xuXG4gICAgdGhpcy5sb2FkaW5nLnNldChtb2RlbElkLCBsb2FkKTtcbiAgICAvLyBBIGZhaWxlZCBsb2FkIG11c3Qgbm90IHBvaXNvbiB0aGUgY2FjaGUg4oCUIHRoZSBuZXh0IGNhbGxlciBzaG91bGQgcmV0cnlcbiAgICAvLyByYXRoZXIgdGhhbiBpbmhlcml0IHRoZSByZWplY3RlZCBwcm9taXNlIGZvcmV2ZXIuXG4gICAgbG9hZC5jYXRjaCgoKSA9PiB0aGlzLmxvYWRpbmcuZGVsZXRlKG1vZGVsSWQpKTtcbiAgICByZXR1cm4gbG9hZDtcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIGEgbW9kZWwgaXMgYWxyZWFkeSBsb2FkZWQgKHdhcm0pLiAqL1xuICBpc0xvYWRlZChtb2RlbElkOiBzdHJpbmcgPSBnZXREZWZhdWx0WW9sb01vZGVsSWQoKSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmluc3RhbmNlcy5oYXMobW9kZWxJZCk7XG4gIH1cblxuICAvKipcbiAgICogUmVsZWFzZSBvbmUgbW9kZWwsIG9yIGFsbCBvZiB0aGVtLiBTYWZlIHRvIGNhbGwgb24gYSBtb2RlbCBuZXZlciBsb2FkZWQuXG4gICAqXG4gICAqIEluLWZsaWdodCBsb2FkcyBhcmUgdG9ybiBkb3duIHRvbywgbm90IGp1c3Qgd2FybSBvbmVzLiBTaW1wbHkgZHJvcHBpbmcgdGhlXG4gICAqIHBlbmRpbmcgcHJvbWlzZSBhbmQgcmV0dXJuaW5nIHdvdWxkIGxldCB0aGUgbG9hZCBmaW5pc2ggYWZ0ZXJ3YXJkcyxcbiAgICogcmUtcG9wdWxhdGUge0BsaW5rIGluc3RhbmNlc30sIGFuZCBzdHJhbmQgYSBsaXZlIHdvcmtlciBhbmQgT1JUIHNlc3Npb24gdGhhdFxuICAgKiBub3RoaW5nIG93bnMg4oCUIGRpc3Bvc2FsIHdvdWxkIGhhdmUgcmVwb3J0ZWQgc3VjY2VzcyB3aGlsZSBsZWFraW5nLiBTbyBhIGxvYWRcbiAgICogdGhhdCBpcyBzdGlsbCBydW5uaW5nIGlzIGF3YWl0ZWQgYW5kIHRoZW4gcmVsZWFzZWQuXG4gICAqL1xuICBhc3luYyBkaXNwb3NlKG1vZGVsSWQ/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBpZHMgPSBtb2RlbElkID8gW21vZGVsSWRdIDogWy4uLm5ldyBTZXQoWy4uLnRoaXMuaW5zdGFuY2VzLmtleXMoKSwgLi4udGhpcy5sb2FkaW5nLmtleXMoKV0pXTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChpZHMubWFwKChpZCkgPT4gdGhpcy5kaXNwb3NlT25lKGlkKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBkaXNwb3NlT25lKGlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBwZW5kaW5nID0gdGhpcy5sb2FkaW5nLmdldChpZCk7XG4gICAgY29uc3QgbG9hZGVkID0gdGhpcy5pbnN0YW5jZXMuZ2V0KGlkKTtcbiAgICB0aGlzLmluc3RhbmNlcy5kZWxldGUoaWQpO1xuICAgIHRoaXMubG9hZGluZy5kZWxldGUoaWQpO1xuXG4gICAgaWYgKGxvYWRlZCkgYXdhaXQgbG9hZGVkLmRpc3Bvc2UoKTtcbiAgICBpZiAoIXBlbmRpbmcpIHJldHVybjtcblxuICAgIC8vIEEgcGVuZGluZyBsb2FkIGFzc2lnbnMgaW5zdGFuY2VzW2lkXSBiZWZvcmUgaXRzIHByb21pc2UgcmVzb2x2ZXMsIHNvIGJ5XG4gICAgLy8gdGhlIHRpbWUgdGhpcyBhd2FpdCByZXR1cm5zIHRoZSBlbnRyeSBpcyBiYWNrLiBDbGVhciBpdCBvbmx5IGlmIGl0IHN0aWxsXG4gICAgLy8gcG9pbnRzIGF0IHdoYXQgKnRoaXMqIGxvYWQgcHJvZHVjZWQg4oCUIGEgbmV3ZXIgbG9hZCBzdGFydGVkIGluIHRoZVxuICAgIC8vIG1lYW50aW1lIG93bnMgaXRzIG93biBlbnRyeSBhbmQgbXVzdCBub3QgYmUgZXZpY3RlZC5cbiAgICBjb25zdCBzZWcgPSBhd2FpdCBwZW5kaW5nLmNhdGNoKCgpID0+IG51bGwpO1xuICAgIGlmICghc2VnIHx8IHNlZyA9PT0gbG9hZGVkKSByZXR1cm47XG4gICAgaWYgKHRoaXMuaW5zdGFuY2VzLmdldChpZCkgPT09IHNlZykgdGhpcy5pbnN0YW5jZXMuZGVsZXRlKGlkKTtcbiAgICBhd2FpdCBzZWcuZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXF1aXJlTW9kZWwobW9kZWxJZDogc3RyaW5nKTogWW9sb01vZGVsRGVmIHtcbiAgICBjb25zdCBkZWYgPSBnZXRZb2xvTW9kZWwobW9kZWxJZCk7XG4gICAgaWYgKCFkZWYpIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBZT0xPIG1vZGVsIGlkIFwiJHttb2RlbElkfVwiLmApO1xuICAgIGlmICghZGVmLm1vZGVsVXJsLnRyaW0oKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBZT0xPIG1vZGVsIFwiJHttb2RlbElkfVwiIGlzIG5vdCBjb25maWd1cmVkIOKAlCBpdHMgbW9kZWxVcmwgaXMgZW1wdHkuYCk7XG4gICAgfVxuICAgIHJldHVybiBkZWY7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -521,6 +521,7 @@ class YoloSegmenterService {
|
|
|
521
521
|
const seg = await this.getModel(modelId, (loaded, total) => {
|
|
522
522
|
if (total)
|
|
523
523
|
progress?.onProgress?.(loaded / total);
|
|
524
|
+
progress?.onBytes?.(loaded, total);
|
|
524
525
|
if (loaded > 0 && !announcedDownload) {
|
|
525
526
|
announcedDownload = true;
|
|
526
527
|
progress?.onStatus?.(`Downloading ${def.label} model…`);
|
|
@@ -536,7 +537,10 @@ class YoloSegmenterService {
|
|
|
536
537
|
...(opts.maskThreshold !== undefined ? { maskThreshold: opts.maskThreshold } : {}),
|
|
537
538
|
...(opts.maxDetections !== undefined ? { maxDetections: opts.maxDetections } : {}),
|
|
538
539
|
...(opts.classFilter ? { classFilter: opts.classFilter } : {}),
|
|
539
|
-
|
|
540
|
+
...(opts.withMasks !== undefined ? { withMasks: opts.withMasks } : {}),
|
|
541
|
+
...(opts.signal ? { signal: opts.signal } : {}),
|
|
542
|
+
// Only worth tracing when there are masks to trace.
|
|
543
|
+
tracePolygons: opts.withMasks !== false,
|
|
540
544
|
traceOptions: {
|
|
541
545
|
...(opts.simplifyTolerance !== undefined ? { simplifyTolerance: opts.simplifyTolerance } : {}),
|
|
542
546
|
...(opts.minArea !== undefined ? { minArea: opts.minArea } : {}),
|