@dbx-tools/model 0.9.119 → 0.9.120

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/index.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  // Hand edits are overwritten on the next watch; this file is read-only.
4
4
 
5
5
  export const PACKAGE_IDENTIFIER = "@dbx-tools/model";
6
- export const PACKAGE_VERSION = "0.9.119";
6
+ export const PACKAGE_VERSION = "0.9.120";
7
7
  export * as bindings from "./src/bindings.ts";
8
8
  export * as classes from "./src/classes.ts";
9
9
  export * as classify from "./src/classify.ts";
package/lib/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export declare const PACKAGE_IDENTIFIER = "@dbx-tools/model";
2
- export declare const PACKAGE_VERSION = "0.9.119";
2
+ export declare const PACKAGE_VERSION = "0.9.120";
3
3
  export * as bindings from "./src/bindings.ts";
4
4
  export * as classes from "./src/classes.ts";
5
5
  export * as classify from "./src/classify.ts";
package/lib/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
  // Regenerated from the exporting modules in ./src.
3
3
  // Hand edits are overwritten on the next watch; this file is read-only.
4
4
  export const PACKAGE_IDENTIFIER = "@dbx-tools/model";
5
- export const PACKAGE_VERSION = "0.9.119";
5
+ export const PACKAGE_VERSION = "0.9.120";
6
6
  export * as bindings from "./src/bindings.js";
7
7
  export * as classes from "./src/classes.js";
8
8
  export * as classify from "./src/classify.js";
@@ -24,4 +24,4 @@ export { DEFAULT_MODEL_CLIENT_CACHE_TTL_MS } from "./src/model-client.js";
24
24
  export { ModelFamily } from "./src/policy.js";
25
25
  export { REASONING_LEVELS } from "./src/reasoning-translation.js";
26
26
  export * from "./exports.js";
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztBQUNyRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxRQUFRLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEtBQUssUUFBUSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sS0FBSyxRQUFRLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEtBQUssUUFBUSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sS0FBSyxhQUFhLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxLQUFLLFlBQVksTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEtBQUssV0FBVyxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxLQUFLLG9CQUFvQixNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSwrQkFBK0IsRUFBRSxtQkFBbUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXhOLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxxQkFBcUIsRUFBRSwyQkFBMkIsRUFBRSx1QkFBdUIsRUFBRSxrQkFBa0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWxMLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTdGLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUdsRSxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdFTkVSQVRFRCBieSBwcm9qZW4gd2F0Y2ggLSBETyBOT1QgRURJVC5cbi8vIFJlZ2VuZXJhdGVkIGZyb20gdGhlIGV4cG9ydGluZyBtb2R1bGVzIGluIC4vc3JjLlxuLy8gSGFuZCBlZGl0cyBhcmUgb3ZlcndyaXR0ZW4gb24gdGhlIG5leHQgd2F0Y2g7IHRoaXMgZmlsZSBpcyByZWFkLW9ubHkuXG5cbmV4cG9ydCBjb25zdCBQQUNLQUdFX0lERU5USUZJRVIgPSBcIkBkYngtdG9vbHMvbW9kZWxcIjtcbmV4cG9ydCBjb25zdCBQQUNLQUdFX1ZFUlNJT04gPSBcIjAuOS4xMTlcIjtcbmV4cG9ydCAqIGFzIGJpbmRpbmdzIGZyb20gXCIuL3NyYy9iaW5kaW5ncy50c1wiO1xuZXhwb3J0ICogYXMgY2xhc3NlcyBmcm9tIFwiLi9zcmMvY2xhc3Nlcy50c1wiO1xuZXhwb3J0ICogYXMgY2xhc3NpZnkgZnJvbSBcIi4vc3JjL2NsYXNzaWZ5LnRzXCI7XG5leHBvcnQgKiBhcyBmYWxsYmFjayBmcm9tIFwiLi9zcmMvZmFsbGJhY2sudHNcIjtcbmV4cG9ydCAqIGFzIGludm9rZSBmcm9tIFwiLi9zcmMvaW52b2tlLnRzXCI7XG5leHBvcnQgKiBhcyBtZXRhZGF0YSBmcm9tIFwiLi9zcmMvbWV0YWRhdGEudHNcIjtcbmV4cG9ydCAqIGFzIG1ldGFkYXRhQ2FjaGUgZnJvbSBcIi4vc3JjL21ldGFkYXRhLWNhY2hlLnRzXCI7XG5leHBvcnQgKiBhcyBtb2RlbENhdGFsb2cgZnJvbSBcIi4vc3JjL21vZGVsLWNhdGFsb2cudHNcIjtcbmV4cG9ydCAqIGFzIG1vZGVsQ2xpZW50IGZyb20gXCIuL3NyYy9tb2RlbC1jbGllbnQudHNcIjtcbmV4cG9ydCAqIGFzIHBvbGljeSBmcm9tIFwiLi9zcmMvcG9saWN5LnRzXCI7XG5leHBvcnQgKiBhcyByZWFzb25pbmdUcmFuc2xhdGlvbiBmcm9tIFwiLi9zcmMvcmVhc29uaW5nLXRyYW5zbGF0aW9uLnRzXCI7XG5leHBvcnQgKiBhcyByZXNvbHZlIGZyb20gXCIuL3NyYy9yZXNvbHZlLnRzXCI7XG5leHBvcnQgeyBDSEFUX0NMQVNTX09SREVSLCBNT0RFTF9DTEFTU19PUkRFUiB9IGZyb20gXCIuL3NyYy9jbGFzc2VzLnRzXCI7XG5leHBvcnQgeyBGQUxMQkFDS19NT0RFTF9JRFMgfSBmcm9tIFwiLi9zcmMvZmFsbGJhY2sudHNcIjtcbmV4cG9ydCB7IElOVk9DQVRJT05TX1NVRkZJWCwgU0VSVklOR19FTkRQT0lOVFNfUEFUSCwgUkVTUE9OU0VTX1BBVEgsIE9QRU5fUkVTUE9OU0VTX1BBVEgsIENIQVRfQ09NUExFVElPTlNfUEFUSCwgQUlfR0FURVdBWV9DT0RFWF9SRVNQT05TRVNfUEFUSCwgQU5USFJPUElDX0JBU0VfUEFUSCwgQU5USFJPUElDX01FU1NBR0VTX1BBVEggfSBmcm9tIFwiLi9zcmMvaW52b2tlLnRzXCI7XG5leHBvcnQgdHlwZSB7IEF1dGhlbnRpY2F0aW5nQ2xpZW50TGlrZSB9IGZyb20gXCIuL3NyYy9pbnZva2UudHNcIjtcbmV4cG9ydCB7IE1PREVMX01FVEFEQVRBX1RUTF9NUywgTU9ERUxfUkFURV9MSU1JVFNfVVJMLCBPUEVOQUlfUkVTUE9OU0VTX01PREVMU19VUkwsIFFVRVJZX1JFQVNPTl9NT0RFTFNfVVJMLCBSRVRJUkVEX01PREVMU19VUkwsIFdFQl9TRUFSQ0hfTU9ERUxTX1VSTCB9IGZyb20gXCIuL3NyYy9tZXRhZGF0YS50c1wiO1xuZXhwb3J0IHR5cGUgeyBNZXRhZGF0YUNhY2hlT3B0aW9ucywgTWV0YWRhdGFDYWNoZU1lcmdlSW5wdXQsIE1ldGFkYXRhQ2FjaGUgfSBmcm9tIFwiLi9zcmMvbWV0YWRhdGEtY2FjaGUudHNcIjtcbmV4cG9ydCB7IERFRkFVTFRfTU9ERUxfQ0FDSEVfVFRMX01TLCBERUZBVUxUX0ZVWlpZX1RIUkVTSE9MRCB9IGZyb20gXCIuL3NyYy9tb2RlbC1jYXRhbG9nLnRzXCI7XG5leHBvcnQgdHlwZSB7IFdvcmtzcGFjZUNsaWVudExpa2UsIExpc3RTZXJ2aW5nRW5kcG9pbnRzT3B0aW9ucyB9IGZyb20gXCIuL3NyYy9tb2RlbC1jYXRhbG9nLnRzXCI7XG5leHBvcnQgeyBERUZBVUxUX01PREVMX0NMSUVOVF9DQUNIRV9UVExfTVMgfSBmcm9tIFwiLi9zcmMvbW9kZWwtY2xpZW50LnRzXCI7XG5leHBvcnQgdHlwZSB7IE1vZGVsQXV0aE9wdGlvbnMsIE1vZGVsQ2xpZW50T3B0aW9ucywgTW9kZWxDbGllbnRTdGF0dXMsIE1vZGVsUHJvdG9jb2wsIE1vZGVsUm91dGVJbnB1dCwgTW9kZWxSb3V0ZSwgTW9kZWxDbGllbnQgfSBmcm9tIFwiLi9zcmMvbW9kZWwtY2xpZW50LnRzXCI7XG5leHBvcnQgeyBNb2RlbEZhbWlseSB9IGZyb20gXCIuL3NyYy9wb2xpY3kudHNcIjtcbmV4cG9ydCB7IFJFQVNPTklOR19MRVZFTFMgfSBmcm9tIFwiLi9zcmMvcmVhc29uaW5nLXRyYW5zbGF0aW9uLnRzXCI7XG5leHBvcnQgdHlwZSB7IFJlYXNvbmluZ0xldmVsLCBSZWFzb25pbmdNb2RlbENhdGFsb2d1ZSwgQWRhcHRlZFJlcXVlc3RSZWFzb25pbmcgfSBmcm9tIFwiLi9zcmMvcmVhc29uaW5nLXRyYW5zbGF0aW9uLnRzXCI7XG5leHBvcnQgdHlwZSB7IFNlbGVjdE1vZGVsSW5wdXQsIFNlYXJjaE1vZGVsc0lucHV0IH0gZnJvbSBcIi4vc3JjL3Jlc29sdmUudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2V4cG9ydHMudHNcIjtcbiJdfQ==
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztBQUNyRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxRQUFRLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEtBQUssUUFBUSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sS0FBSyxRQUFRLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEtBQUssUUFBUSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sS0FBSyxhQUFhLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxLQUFLLFlBQVksTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEtBQUssV0FBVyxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxLQUFLLG9CQUFvQixNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSwrQkFBK0IsRUFBRSxtQkFBbUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXhOLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxxQkFBcUIsRUFBRSwyQkFBMkIsRUFBRSx1QkFBdUIsRUFBRSxrQkFBa0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWxMLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTdGLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUdsRSxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdFTkVSQVRFRCBieSBwcm9qZW4gd2F0Y2ggLSBETyBOT1QgRURJVC5cbi8vIFJlZ2VuZXJhdGVkIGZyb20gdGhlIGV4cG9ydGluZyBtb2R1bGVzIGluIC4vc3JjLlxuLy8gSGFuZCBlZGl0cyBhcmUgb3ZlcndyaXR0ZW4gb24gdGhlIG5leHQgd2F0Y2g7IHRoaXMgZmlsZSBpcyByZWFkLW9ubHkuXG5cbmV4cG9ydCBjb25zdCBQQUNLQUdFX0lERU5USUZJRVIgPSBcIkBkYngtdG9vbHMvbW9kZWxcIjtcbmV4cG9ydCBjb25zdCBQQUNLQUdFX1ZFUlNJT04gPSBcIjAuOS4xMjBcIjtcbmV4cG9ydCAqIGFzIGJpbmRpbmdzIGZyb20gXCIuL3NyYy9iaW5kaW5ncy50c1wiO1xuZXhwb3J0ICogYXMgY2xhc3NlcyBmcm9tIFwiLi9zcmMvY2xhc3Nlcy50c1wiO1xuZXhwb3J0ICogYXMgY2xhc3NpZnkgZnJvbSBcIi4vc3JjL2NsYXNzaWZ5LnRzXCI7XG5leHBvcnQgKiBhcyBmYWxsYmFjayBmcm9tIFwiLi9zcmMvZmFsbGJhY2sudHNcIjtcbmV4cG9ydCAqIGFzIGludm9rZSBmcm9tIFwiLi9zcmMvaW52b2tlLnRzXCI7XG5leHBvcnQgKiBhcyBtZXRhZGF0YSBmcm9tIFwiLi9zcmMvbWV0YWRhdGEudHNcIjtcbmV4cG9ydCAqIGFzIG1ldGFkYXRhQ2FjaGUgZnJvbSBcIi4vc3JjL21ldGFkYXRhLWNhY2hlLnRzXCI7XG5leHBvcnQgKiBhcyBtb2RlbENhdGFsb2cgZnJvbSBcIi4vc3JjL21vZGVsLWNhdGFsb2cudHNcIjtcbmV4cG9ydCAqIGFzIG1vZGVsQ2xpZW50IGZyb20gXCIuL3NyYy9tb2RlbC1jbGllbnQudHNcIjtcbmV4cG9ydCAqIGFzIHBvbGljeSBmcm9tIFwiLi9zcmMvcG9saWN5LnRzXCI7XG5leHBvcnQgKiBhcyByZWFzb25pbmdUcmFuc2xhdGlvbiBmcm9tIFwiLi9zcmMvcmVhc29uaW5nLXRyYW5zbGF0aW9uLnRzXCI7XG5leHBvcnQgKiBhcyByZXNvbHZlIGZyb20gXCIuL3NyYy9yZXNvbHZlLnRzXCI7XG5leHBvcnQgeyBDSEFUX0NMQVNTX09SREVSLCBNT0RFTF9DTEFTU19PUkRFUiB9IGZyb20gXCIuL3NyYy9jbGFzc2VzLnRzXCI7XG5leHBvcnQgeyBGQUxMQkFDS19NT0RFTF9JRFMgfSBmcm9tIFwiLi9zcmMvZmFsbGJhY2sudHNcIjtcbmV4cG9ydCB7IElOVk9DQVRJT05TX1NVRkZJWCwgU0VSVklOR19FTkRQT0lOVFNfUEFUSCwgUkVTUE9OU0VTX1BBVEgsIE9QRU5fUkVTUE9OU0VTX1BBVEgsIENIQVRfQ09NUExFVElPTlNfUEFUSCwgQUlfR0FURVdBWV9DT0RFWF9SRVNQT05TRVNfUEFUSCwgQU5USFJPUElDX0JBU0VfUEFUSCwgQU5USFJPUElDX01FU1NBR0VTX1BBVEggfSBmcm9tIFwiLi9zcmMvaW52b2tlLnRzXCI7XG5leHBvcnQgdHlwZSB7IEF1dGhlbnRpY2F0aW5nQ2xpZW50TGlrZSB9IGZyb20gXCIuL3NyYy9pbnZva2UudHNcIjtcbmV4cG9ydCB7IE1PREVMX01FVEFEQVRBX1RUTF9NUywgTU9ERUxfUkFURV9MSU1JVFNfVVJMLCBPUEVOQUlfUkVTUE9OU0VTX01PREVMU19VUkwsIFFVRVJZX1JFQVNPTl9NT0RFTFNfVVJMLCBSRVRJUkVEX01PREVMU19VUkwsIFdFQl9TRUFSQ0hfTU9ERUxTX1VSTCB9IGZyb20gXCIuL3NyYy9tZXRhZGF0YS50c1wiO1xuZXhwb3J0IHR5cGUgeyBNZXRhZGF0YUNhY2hlT3B0aW9ucywgTWV0YWRhdGFDYWNoZU1lcmdlSW5wdXQsIE1ldGFkYXRhQ2FjaGUgfSBmcm9tIFwiLi9zcmMvbWV0YWRhdGEtY2FjaGUudHNcIjtcbmV4cG9ydCB7IERFRkFVTFRfTU9ERUxfQ0FDSEVfVFRMX01TLCBERUZBVUxUX0ZVWlpZX1RIUkVTSE9MRCB9IGZyb20gXCIuL3NyYy9tb2RlbC1jYXRhbG9nLnRzXCI7XG5leHBvcnQgdHlwZSB7IFdvcmtzcGFjZUNsaWVudExpa2UsIExpc3RTZXJ2aW5nRW5kcG9pbnRzT3B0aW9ucyB9IGZyb20gXCIuL3NyYy9tb2RlbC1jYXRhbG9nLnRzXCI7XG5leHBvcnQgeyBERUZBVUxUX01PREVMX0NMSUVOVF9DQUNIRV9UVExfTVMgfSBmcm9tIFwiLi9zcmMvbW9kZWwtY2xpZW50LnRzXCI7XG5leHBvcnQgdHlwZSB7IE1vZGVsQXV0aE9wdGlvbnMsIE1vZGVsQ2xpZW50T3B0aW9ucywgTW9kZWxDbGllbnRTdGF0dXMsIE1vZGVsUHJvdG9jb2wsIE1vZGVsUm91dGVJbnB1dCwgTW9kZWxSb3V0ZSwgTW9kZWxDbGllbnQgfSBmcm9tIFwiLi9zcmMvbW9kZWwtY2xpZW50LnRzXCI7XG5leHBvcnQgeyBNb2RlbEZhbWlseSB9IGZyb20gXCIuL3NyYy9wb2xpY3kudHNcIjtcbmV4cG9ydCB7IFJFQVNPTklOR19MRVZFTFMgfSBmcm9tIFwiLi9zcmMvcmVhc29uaW5nLXRyYW5zbGF0aW9uLnRzXCI7XG5leHBvcnQgdHlwZSB7IFJlYXNvbmluZ0xldmVsLCBSZWFzb25pbmdNb2RlbENhdGFsb2d1ZSwgQWRhcHRlZFJlcXVlc3RSZWFzb25pbmcgfSBmcm9tIFwiLi9zcmMvcmVhc29uaW5nLXRyYW5zbGF0aW9uLnRzXCI7XG5leHBvcnQgdHlwZSB7IFNlbGVjdE1vZGVsSW5wdXQsIFNlYXJjaE1vZGVsc0lucHV0IH0gZnJvbSBcIi4vc3JjL3Jlc29sdmUudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2V4cG9ydHMudHNcIjtcbiJdfQ==
@@ -4,6 +4,7 @@
4
4
  * @module
5
5
  */
6
6
  import { getOrSet } from "@dbx-tools/cache/cache";
7
+ import * as errorUtils from "@dbx-tools/shared-core/error-utils";
7
8
  import * as log from "@dbx-tools/shared-core/log";
8
9
  import { modelMetadataCache } from "./_cache.js";
9
10
  import { MODEL_METADATA_TTL_MS } from "./_metadata-contract.js";
@@ -33,7 +34,7 @@ export function createMetadataCache(options, cache = modelMetadataCache) {
33
34
  catch (error) {
34
35
  logger.warn("metadata cache refresh failed; using cached or committed value", {
35
36
  key: options.key,
36
- error,
37
+ error: errorUtils.toError(error),
37
38
  });
38
39
  staleRefreshFailed = previous !== undefined;
39
40
  }
@@ -74,4 +75,4 @@ export function mergePreferFreshRecord(input) {
74
75
  ...(input.fresh ?? {}),
75
76
  };
76
77
  }
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEtY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWV0YWRhdGEtY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFBZSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRCxPQUFPLEtBQUssR0FBRyxNQUFNLDRCQUE0QixDQUFDO0FBRWxELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVoRSxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7QUFtQ2xELHVFQUF1RTtBQUN2RSxNQUFNLFVBQVUsbUJBQW1CLENBQ2pDLE9BQWdDLEVBQ2hDLFFBQXdDLGtCQUFrQjtJQUUxRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLHFCQUFxQixDQUFDO0lBQ3JELE1BQU0sUUFBUSxHQUFHLHdCQUF3QixPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDdkQsTUFBTSxVQUFVLEdBQUcsMEJBQTBCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUUzRCxNQUFNLElBQUksR0FBRyxHQUEyQixFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBSSxRQUFRLENBQUMsQ0FBQztJQUNsRSxNQUFNLE9BQU8sR0FBRyxLQUFLLEVBQUUsS0FBUSxFQUFjLEVBQUU7UUFDN0MsTUFBTSxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNqQyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsQ0FBQztJQUNGLE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBb0IsRUFBRSxRQUF1QixFQUFLLEVBQUUsQ0FDeEUsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUs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UUFBUSxJQUFJLEVBQUUsQ0FBQztRQUN6QixHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7S0FDdkIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIERhaWx5IG1vZGVsIG1ldGFkYXRhIGNhY2hlIGJ1aWx0IG9uIHRoZSBzaGFyZWQgbWVtb3J5LWZpcnN0IGNhY2hlIHBhY2thZ2UuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IGNyZWF0ZUNhY2hlLCBnZXRPclNldCB9IGZyb20gXCJAZGJ4LXRvb2xzL2NhY2hlL2NhY2hlXCI7XG5pbXBvcnQgKiBhcyBsb2cgZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmUvbG9nXCI7XG5cbmltcG9ydCB7IG1vZGVsTWV0YWRhdGFDYWNoZSB9IGZyb20gXCIuL19jYWNoZS50c1wiO1xuaW1wb3J0IHsgTU9ERUxfTUVUQURBVEFfVFRMX01TIH0gZnJvbSBcIi4vX21ldGFkYXRhLWNvbnRyYWN0LnRzXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJtb2RlbC9tZXRhZGF0YS1jYWNoZVwiKTtcblxuLyoqIEZhY3RvcnkgaW5wdXRzIGZvciBvbmUgbmFtZWQgbWV0YWRhdGEgY2FjaGUuICovXG5leHBvcnQgaW50ZXJmYWNlIE1ldGFkYXRhQ2FjaGVPcHRpb25zPFQ+IHtcbiAgLyoqIFN0YWJsZSBjYWNoZSBrZXkuICovXG4gIHJlYWRvbmx5IGtleTogc3RyaW5nO1xuICAvKiogSGFyZC1jb2RlZCAvIGNvbW1pdHRlZCBiYXNlbGluZSB1c2VkIHdoZW4gc3RvcmUgYW5kIGxvYWQgYm90aCBtaXNzLiAqL1xuICByZWFkb25seSBmYWxsYmFjazogVDtcbiAgLyoqIE9wdGlvbmFsIHJlZnJlc2ggc291cmNlLiAqL1xuICByZWFkb25seSBsb2FkPzogKCkgPT4gUHJvbWlzZTxUPjtcbiAgLyoqIENvbWJpbmUgYSBmcmVzaCBsb2FkLCBwcmlvciBzdG9yZSB2YWx1ZSwgYW5kIHRoZSBoYXJkLWNvZGVkIGZhbGxiYWNrLiAqL1xuICByZWFkb25seSBtZXJnZTogKGlucHV0OiBNZXRhZGF0YUNhY2hlTWVyZ2VJbnB1dDxUPikgPT4gVDtcbiAgLyoqIEZyZXNobmVzcyB3aW5kb3c7IGRlZmF1bHRzIHRvIG9uZSBkYXkuICovXG4gIHJlYWRvbmx5IHR0bE1zPzogbnVtYmVyO1xufVxuXG4vKiogQXJndW1lbnRzIHBhc3NlZCB0byBhIGNhY2hlIG1lcmdlci4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWV0YWRhdGFDYWNoZU1lcmdlSW5wdXQ8VD4ge1xuICByZWFkb25seSBmcmVzaDogVCB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgcHJldmlvdXM6IFQgfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IGZhbGxiYWNrOiBUO1xufVxuXG4vKiogT25lIG5hbWVzcGFjZWQgdmlldyBvdmVyIHRoZSBzaGFyZWQgbWV0YWRhdGEgY2FjaGUuICovXG5leHBvcnQgaW50ZXJmYWNlIE1ldGFkYXRhQ2FjaGU8VD4ge1xuICAvKiogUmV0dXJuIGEgZnJlc2gtb3ItZmFsbGJhY2sgdmFsdWUsIHJlZnJlc2hpbmcgd2hlbiBzdGFsZS4gKi9cbiAgZ2V0KCk6IFByb21pc2U8VD47XG4gIC8qKiBSZWFkIHByb2Nlc3MgbWVtb3J5IHdpdGhvdXQgcmVmcmVzaGluZy4gKi9cbiAgcGVlaygpOiBQcm9taXNlPFQgfCB1bmRlZmluZWQ+O1xuICAvKiogTXV0YXRlIHRoZSBjYWNoZWQgdmFsdWUgYW5kIHBlcnNpc3QgaXQuICovXG4gIHVwZGF0ZShtdXRhdG9yOiAoY3VycmVudDogVCkgPT4gVCk6IFByb21pc2U8VD47XG4gIC8qKiBGb3JjZSBhIHJlZnJlc2ggYXR0ZW1wdCBldmVuIHdoZW4gdGhlIGVudHJ5IGlzIHN0aWxsIGZyZXNoLiAqL1xuICByZWZyZXNoKCk6IFByb21pc2U8VD47XG59XG5cbi8qKiBDcmVhdGUgb25lIG5hbWVzcGFjZWQgdmlldyBvdmVyIHRoZSBzaGFyZWQgbW9kZWwgbWV0YWRhdGEgY2FjaGUuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTWV0YWRhdGFDYWNoZTxUPihcbiAgb3B0aW9uczogTWV0YWRhdGFDYWNoZU9wdGlvbnM8VD4sXG4gIGNhY2hlOiBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVDYWNoZT4gPSBtb2RlbE1ldGFkYXRhQ2FjaGUsXG4pOiBNZXRhZGF0YUNhY2hlPFQ+IHtcbiAgY29uc3QgdHRsTXMgPSBvcHRpb25zLnR0bE1zID8/IE1PREVMX01FVEFEQVRBX1RUTF9NUztcbiAgY29uc3QgdmFsdWVLZXkgPSBgbW9kZWwtbWV0YWRhdGE6dmFsdWU6JHtvcHRpb25zLmtleX1gO1xuICBjb25zdCByZWZyZXNoS2V5ID0gYG1vZGVsLW1ldGFkYXRhOnJlZnJlc2g6JHtvcHRpb25zLmtleX1gO1xuXG4gIGNvbnN0IHJlYWQgPSAoKTogUHJvbWlzZTxUIHwgdW5kZWZpbmVkPiA9PiBjYWNoZS5nZXQ8VD4odmFsdWVLZXkpO1xuICBjb25zdCBwZXJzaXN0ID0gYXN5bmMgKHZhbHVlOiBUKTogUHJvbWlzZTxUPiA9PiB7XG4gICAgYXdhaXQgY2FjaGUuc2V0KHZhbHVlS2V5LCB2YWx1ZSk7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9O1xuICBjb25zdCByZXNvbHZlVmFsdWUgPSAoZnJlc2g6IFQgfCB1bmRlZmluZWQsIHByZXZpb3VzOiBUIHwgdW5kZWZpbmVkKTogVCA9PlxuICAgIG9wdGlvbnMubWVyZ2UoeyBmcmVzaCwgcHJldmlvdXMsIGZhbGxiYWNrOiBvcHRpb25zLmZhbGxiYWNrIH0pO1xuXG4gIGNvbnN0IHJlZnJlc2ggPSBhc3luYyAoZm9yY2U6IGJvb2xlYW4pOiBQcm9taXNlPFQ+ID0+IHtcbiAgICBpZiAoZm9yY2UpIGF3YWl0IGNhY2hlLmRlbGV0ZShyZWZyZXNoS2V5KTtcbiAgICBsZXQgc3RhbGVSZWZyZXNoRmFpbGVkID0gZmFsc2U7XG4gICAgYXdhaXQgZ2V0T3JTZXQoXG4gICAgICBjYWNoZSxcbiAgICAgIHJlZnJlc2hLZXksXG4gICAgICBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzID0gYXdhaXQgcmVhZCgpO1xuICAgICAgICBsZXQgZnJlc2g6IFQgfCB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChvcHRpb25zLmxvYWQpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgZnJlc2ggPSBhd2FpdCBvcHRpb25zLmxvYWQoKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgbG9nZ2VyLndhcm4oXCJtZXRhZGF0YSBjYWNoZSByZWZyZXNoIGZhaWxlZDsgdXNpbmcgY2FjaGVkIG9yIGNvbW1pdHRlZCB2YWx1ZVwiLCB7XG4gICAgICAgICAgICAgIGtleTogb3B0aW9ucy5rZXksXG4gICAgICAgICAgICAgIGVycm9yLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBzdGFsZVJlZnJlc2hGYWlsZWQgPSBwcmV2aW91cyAhPT0gdW5kZWZpbmVkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXNvbHZlZCA9IHJlc29sdmVWYWx1ZShmcmVzaCwgcHJldmlvdXMpO1xuICAgICAgICBpZiAoZnJlc2ggIT09IHVuZGVmaW5lZCB8fCBwcmV2aW91cyA9PT0gdW5kZWZpbmVkKSBhd2FpdCBwZXJzaXN0KHJlc29sdmVkKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9LFxuICAgICAgeyB0dGw6IHR0bE1zLCB0aHJvd0Vycm9yczogdHJ1ZSB9LFxuICAgICk7XG4gICAgaWYgKHN0YWxlUmVmcmVzaEZhaWxlZCkgYXdhaXQgY2FjaGUuZGVsZXRlKHJlZnJlc2hLZXkpO1xuICAgIHJldHVybiByZXNvbHZlVmFsdWUodW5kZWZpbmVkLCBhd2FpdCByZWFkKCkpO1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgZ2V0OiAoKSA9PiByZWZyZXNoKGZhbHNlKSxcbiAgICBwZWVrOiByZWFkLFxuICAgIHJlZnJlc2g6ICgpID0+IHJlZnJlc2godHJ1ZSksXG4gICAgdXBkYXRlOiBhc3luYyAobXV0YXRvcikgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSBhd2FpdCBwZXJzaXN0KG11dGF0b3IocmVzb2x2ZVZhbHVlKHVuZGVmaW5lZCwgYXdhaXQgcmVhZCgpKSkpO1xuICAgICAgYXdhaXQgY2FjaGUuc2V0KHJlZnJlc2hLZXksIHRydWUsIHsgdHRsOiB0dGxNcyB9KTtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICB9O1xufVxuXG4vKiogUHJlZmVyIGEgbm9uLWVtcHR5IGZyZXNoIGFycmF5LCBlbHNlIHByZXZpb3VzLCBlbHNlIGZhbGxiYWNrLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlUHJlZmVyRnJlc2hMaXN0PFQ+KGlucHV0OiBNZXRhZGF0YUNhY2hlTWVyZ2VJbnB1dDxyZWFkb25seSBUW10+KTogVFtdIHtcbiAgaWYgKGlucHV0LmZyZXNoICYmIGlucHV0LmZyZXNoLmxlbmd0aCA+IDApIHJldHVybiBbLi4uaW5wdXQuZnJlc2hdO1xuICBpZiAoaW5wdXQucHJldmlvdXMgJiYgaW5wdXQucHJldmlvdXMubGVuZ3RoID4gMCkgcmV0dXJuIFsuLi5pbnB1dC5wcmV2aW91c107XG4gIHJldHVybiBbLi4uaW5wdXQuZmFsbGJhY2tdO1xufVxuXG4vKiogU2hhbGxvdy1tZXJnZSByZWNvcmQgY2F0YWxvZ3VlczogZmFsbGJhY2ssIHRoZW4gcHJldmlvdXMsIHRoZW4gZnJlc2gga2V5cy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZVByZWZlckZyZXNoUmVjb3JkPFQ+KFxuICBpbnB1dDogTWV0YWRhdGFDYWNoZU1lcmdlSW5wdXQ8UmVhZG9ubHk8UmVjb3JkPHN0cmluZywgVD4+Pixcbik6IFJlY29yZDxzdHJpbmcsIFQ+IHtcbiAgcmV0dXJuIHtcbiAgICAuLi5pbnB1dC5mYWxsYmFjayxcbiAgICAuLi4oaW5wdXQucHJldmlvdXMgPz8ge30pLFxuICAgIC4uLihpbnB1dC5mcmVzaCA/PyB7fSksXG4gIH07XG59XG4iXX0=
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEtY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWV0YWRhdGEtY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFBZSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRCxPQUFPLEtBQUssVUFBVSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2pFLE9BQU8sS0FBSyxHQUFHLE1BQU0sNEJBQTRCLENBQUM7QUFFbEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWhFLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztBQW1DbEQsdUVBQXVFO0FBQ3ZFLE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsT0FBZ0MsRUFDaEMsUUFBd0Msa0JBQWtCO0lBRTFELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLElBQUkscUJBQXFCLENBQUM7SUFDckQsTUFBTSxRQUFRLEdBQUcsd0JBQXdCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUN2RCxNQUFNLFVBQVUsR0FBRywwQkFBMEIsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBRTNELE1BQU0sSUFBSSxHQUFHLEdBQTJCLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFJLFFBQVEsQ0FBQyxDQUFDO0lBQ2xFLE1BQU0sT0FBTyxHQUFHLEtBQUssRUFBRSxLQUFRLEVBQWMsRUFBRTtRQUM3QyxNQUFNLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQyxDQUFDO0lBQ0YsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFvQixFQUFFLFFBQXVCLEVBQUssRUFBRSxDQUN4RSxPQUFPLENB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Q0FDcEMsS0FBMkQ7SUFFM0QsT0FBTztRQUNMLEdBQUcsS0FBSyxDQUFDLFFBQVE7UUFDakIsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDO1FBQ3pCLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztLQUN2QixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRGFpbHkgbW9kZWwgbWV0YWRhdGEgY2FjaGUgYnVpbHQgb24gdGhlIHNoYXJlZCBtZW1vcnktZmlyc3QgY2FjaGUgcGFja2FnZS5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgY3JlYXRlQ2FjaGUsIGdldE9yU2V0IH0gZnJvbSBcIkBkYngtdG9vbHMvY2FjaGUvY2FjaGVcIjtcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmUvZXJyb3ItdXRpbHNcIjtcbmltcG9ydCAqIGFzIGxvZyBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZS9sb2dcIjtcblxuaW1wb3J0IHsgbW9kZWxNZXRhZGF0YUNhY2hlIH0gZnJvbSBcIi4vX2NhY2hlLnRzXCI7XG5pbXBvcnQgeyBNT0RFTF9NRVRBREFUQV9UVExfTVMgfSBmcm9tIFwiLi9fbWV0YWRhdGEtY29udHJhY3QudHNcIjtcblxuY29uc3QgbG9nZ2VyID0gbG9nLmxvZ2dlcihcIm1vZGVsL21ldGFkYXRhLWNhY2hlXCIpO1xuXG4vKiogRmFjdG9yeSBpbnB1dHMgZm9yIG9uZSBuYW1lZCBtZXRhZGF0YSBjYWNoZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWV0YWRhdGFDYWNoZU9wdGlvbnM8VD4ge1xuICAvKiogU3RhYmxlIGNhY2hlIGtleS4gKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG4gIC8qKiBIYXJkLWNvZGVkIC8gY29tbWl0dGVkIGJhc2VsaW5lIHVzZWQgd2hlbiBzdG9yZSBhbmQgbG9hZCBib3RoIG1pc3MuICovXG4gIHJlYWRvbmx5IGZhbGxiYWNrOiBUO1xuICAvKiogT3B0aW9uYWwgcmVmcmVzaCBzb3VyY2UuICovXG4gIHJlYWRvbmx5IGxvYWQ/OiAoKSA9PiBQcm9taXNlPFQ+O1xuICAvKiogQ29tYmluZSBhIGZyZXNoIGxvYWQsIHByaW9yIHN0b3JlIHZhbHVlLCBhbmQgdGhlIGhhcmQtY29kZWQgZmFsbGJhY2suICovXG4gIHJlYWRvbmx5IG1lcmdlOiAoaW5wdXQ6IE1ldGFkYXRhQ2FjaGVNZXJnZUlucHV0PFQ+KSA9PiBUO1xuICAvKiogRnJlc2huZXNzIHdpbmRvdzsgZGVmYXVsdHMgdG8gb25lIGRheS4gKi9cbiAgcmVhZG9ubHkgdHRsTXM/OiBudW1iZXI7XG59XG5cbi8qKiBBcmd1bWVudHMgcGFzc2VkIHRvIGEgY2FjaGUgbWVyZ2VyLiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZXRhZGF0YUNhY2hlTWVyZ2VJbnB1dDxUPiB7XG4gIHJlYWRvbmx5IGZyZXNoOiBUIHwgdW5kZWZpbmVkO1xuICByZWFkb25seSBwcmV2aW91czogVCB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgZmFsbGJhY2s6IFQ7XG59XG5cbi8qKiBPbmUgbmFtZXNwYWNlZCB2aWV3IG92ZXIgdGhlIHNoYXJlZCBtZXRhZGF0YSBjYWNoZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWV0YWRhdGFDYWNoZTxUPiB7XG4gIC8qKiBSZXR1cm4gYSBmcmVzaC1vci1mYWxsYmFjayB2YWx1ZSwgcmVmcmVzaGluZyB3aGVuIHN0YWxlLiAqL1xuICBnZXQoKTogUHJvbWlzZTxUPjtcbiAgLyoqIFJlYWQgcHJvY2VzcyBtZW1vcnkgd2l0aG91dCByZWZyZXNoaW5nLiAqL1xuICBwZWVrKCk6IFByb21pc2U8VCB8IHVuZGVmaW5lZD47XG4gIC8qKiBNdXRhdGUgdGhlIGNhY2hlZCB2YWx1ZSBhbmQgcGVyc2lzdCBpdC4gKi9cbiAgdXBkYXRlKG11dGF0b3I6IChjdXJyZW50OiBUKSA9PiBUKTogUHJvbWlzZTxUPjtcbiAgLyoqIEZvcmNlIGEgcmVmcmVzaCBhdHRlbXB0IGV2ZW4gd2hlbiB0aGUgZW50cnkgaXMgc3RpbGwgZnJlc2guICovXG4gIHJlZnJlc2goKTogUHJvbWlzZTxUPjtcbn1cblxuLyoqIENyZWF0ZSBvbmUgbmFtZXNwYWNlZCB2aWV3IG92ZXIgdGhlIHNoYXJlZCBtb2RlbCBtZXRhZGF0YSBjYWNoZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNZXRhZGF0YUNhY2hlPFQ+KFxuICBvcHRpb25zOiBNZXRhZGF0YUNhY2hlT3B0aW9uczxUPixcbiAgY2FjaGU6IFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZUNhY2hlPiA9IG1vZGVsTWV0YWRhdGFDYWNoZSxcbik6IE1ldGFkYXRhQ2FjaGU8VD4ge1xuICBjb25zdCB0dGxNcyA9IG9wdGlvbnMudHRsTXMgPz8gTU9ERUxfTUVUQURBVEFfVFRMX01TO1xuICBjb25zdCB2YWx1ZUtleSA9IGBtb2RlbC1tZXRhZGF0YTp2YWx1ZToke29wdGlvbnMua2V5fWA7XG4gIGNvbnN0IHJlZnJlc2hLZXkgPSBgbW9kZWwtbWV0YWRhdGE6cmVmcmVzaDoke29wdGlvbnMua2V5fWA7XG5cbiAgY29uc3QgcmVhZCA9ICgpOiBQcm9taXNlPFQgfCB1bmRlZmluZWQ+ID0+IGNhY2hlLmdldDxUPih2YWx1ZUtleSk7XG4gIGNvbnN0IHBlcnNpc3QgPSBhc3luYyAodmFsdWU6IFQpOiBQcm9taXNlPFQ+ID0+IHtcbiAgICBhd2FpdCBjYWNoZS5zZXQodmFsdWVLZXksIHZhbHVlKTtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH07XG4gIGNvbnN0IHJlc29sdmVWYWx1ZSA9IChmcmVzaDogVCB8IHVuZGVmaW5lZCwgcHJldmlvdXM6IFQgfCB1bmRlZmluZWQpOiBUID0+XG4gICAgb3B0aW9ucy5tZXJnZSh7IGZyZXNoLCBwcmV2aW91cywgZmFsbGJhY2s6IG9wdGlvbnMuZmFsbGJhY2sgfSk7XG5cbiAgY29uc3QgcmVmcmVzaCA9IGFzeW5jIChmb3JjZTogYm9vbGVhbik6IFByb21pc2U8VD4gPT4ge1xuICAgIGlmIChmb3JjZSkgYXdhaXQgY2FjaGUuZGVsZXRlKHJlZnJlc2hLZXkpO1xuICAgIGxldCBzdGFsZVJlZnJlc2hGYWlsZWQgPSBmYWxzZTtcbiAgICBhd2FpdCBnZXRPclNldChcbiAgICAgIGNhY2hlLFxuICAgICAgcmVmcmVzaEtleSxcbiAgICAgIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgcHJldmlvdXMgPSBhd2FpdCByZWFkKCk7XG4gICAgICAgIGxldCBmcmVzaDogVCB8IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKG9wdGlvbnMubG9hZCkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmcmVzaCA9IGF3YWl0IG9wdGlvbnMubG9hZCgpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBsb2dnZXIud2FybihcIm1ldGFkYXRhIGNhY2hlIHJlZnJlc2ggZmFpbGVkOyB1c2luZyBjYWNoZWQgb3IgY29tbWl0dGVkIHZhbHVlXCIsIHtcbiAgICAgICAgICAgICAga2V5OiBvcHRpb25zLmtleSxcbiAgICAgICAgICAgICAgZXJyb3I6IGVycm9yVXRpbHMudG9FcnJvcihlcnJvciksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHN0YWxlUmVmcmVzaEZhaWxlZCA9IHByZXZpb3VzICE9PSB1bmRlZmluZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZVZhbHVlKGZyZXNoLCBwcmV2aW91cyk7XG4gICAgICAgIGlmIChmcmVzaCAhPT0gdW5kZWZpbmVkIHx8IHByZXZpb3VzID09PSB1bmRlZmluZWQpIGF3YWl0IHBlcnNpc3QocmVzb2x2ZWQpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0sXG4gICAgICB7IHR0bDogdHRsTXMsIHRocm93RXJyb3JzOiB0cnVlIH0sXG4gICAgKTtcbiAgICBpZiAoc3RhbGVSZWZyZXNoRmFpbGVkKSBhd2FpdCBjYWNoZS5kZWxldGUocmVmcmVzaEtleSk7XG4gICAgcmV0dXJuIHJlc29sdmVWYWx1ZSh1bmRlZmluZWQsIGF3YWl0IHJlYWQoKSk7XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBnZXQ6ICgpID0+IHJlZnJlc2goZmFsc2UpLFxuICAgIHBlZWs6IHJlYWQsXG4gICAgcmVmcmVzaDogKCkgPT4gcmVmcmVzaCh0cnVlKSxcbiAgICB1cGRhdGU6IGFzeW5jIChtdXRhdG9yKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGF3YWl0IHBlcnNpc3QobXV0YXRvcihyZXNvbHZlVmFsdWUodW5kZWZpbmVkLCBhd2FpdCByZWFkKCkpKSk7XG4gICAgICBhd2FpdCBjYWNoZS5zZXQocmVmcmVzaEtleSwgdHJ1ZSwgeyB0dGw6IHR0bE1zIH0pO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0sXG4gIH07XG59XG5cbi8qKiBQcmVmZXIgYSBub24tZW1wdHkgZnJlc2ggYXJyYXksIGVsc2UgcHJldmlvdXMsIGVsc2UgZmFsbGJhY2suICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VQcmVmZXJGcmVzaExpc3Q8VD4oaW5wdXQ6IE1ldGFkYXRhQ2FjaGVNZXJnZUlucHV0PHJlYWRvbmx5IFRbXT4pOiBUW10ge1xuICBpZiAoaW5wdXQuZnJlc2ggJiYgaW5wdXQuZnJlc2gubGVuZ3RoID4gMCkgcmV0dXJuIFsuLi5pbnB1dC5mcmVzaF07XG4gIGlmIChpbnB1dC5wcmV2aW91cyAmJiBpbnB1dC5wcmV2aW91cy5sZW5ndGggPiAwKSByZXR1cm4gWy4uLmlucHV0LnByZXZpb3VzXTtcbiAgcmV0dXJuIFsuLi5pbnB1dC5mYWxsYmFja107XG59XG5cbi8qKiBTaGFsbG93LW1lcmdlIHJlY29yZCBjYXRhbG9ndWVzOiBmYWxsYmFjaywgdGhlbiBwcmV2aW91cywgdGhlbiBmcmVzaCBrZXlzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlUHJlZmVyRnJlc2hSZWNvcmQ8VD4oXG4gIGlucHV0OiBNZXRhZGF0YUNhY2hlTWVyZ2VJbnB1dDxSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBUPj4+LFxuKTogUmVjb3JkPHN0cmluZywgVD4ge1xuICByZXR1cm4ge1xuICAgIC4uLmlucHV0LmZhbGxiYWNrLFxuICAgIC4uLihpbnB1dC5wcmV2aW91cyA/PyB7fSksXG4gICAgLi4uKGlucHV0LmZyZXNoID8/IHt9KSxcbiAgfTtcbn1cbiJdfQ==
@@ -129,7 +129,7 @@ async function pingEmbeddingDimension(client, name) {
129
129
  return undefined;
130
130
  }
131
131
  catch (err) {
132
- logger.warn("embedding ping failed", { name, error: errorUtils.errorMessage(err) });
132
+ logger.warn("embedding ping failed", { name, error: errorUtils.toError(err) });
133
133
  return undefined;
134
134
  }
135
135
  }
@@ -194,4 +194,4 @@ export function resolveModelId(input, endpoints, options = {}) {
194
194
  }
195
195
  return { modelId: input, matched: false };
196
196
  }
197
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtY2F0YWxvZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlbC1jYXRhbG9nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFDTCxLQUFLLEdBS04sTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzRixNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsS0FBSyxDQUFDO0FBRTdCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7QUFTM0MsMEdBQTBHO0FBQzFHLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBRXhELHdFQUF3RTtBQUN4RSxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxHQUFHLENBQUM7QUFFM0MsZ0VBQWdFO0FBQ2hFLE1BQU0sbUJBQW1CLEdBQUcsbUJBQW1CLENBQUM7QUFDaEQsTUFBTSxjQUFjLEdBQUcsbUJBQW1CLENBQUM7QUFtQjNDLGdGQUFnRjtBQUNoRixTQUFTLFlBQVksQ0FBQyxRQUFnQjtJQUNwQyxPQUFPLFNBQVMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztBQUN4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O1FBQ1QsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDM0UsQ0FBQztJQUNELE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUM1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBMaXZlIERhdGFicmlja3MgTW9kZWwgU2VydmluZyBjYXRhbG9ndWUgYWNjZXNzLlxuICpcbiAqIExpc3RzIHRoZSB3b3Jrc3BhY2UncyBgL3NlcnZpbmctZW5kcG9pbnRzYCBhbmQsIHdoZW4gdGhlIGNhbGxlciBzdXBwbGllcyBhXG4gKiB0cnVzdGVkIGNyZWRlbnRpYWwgaWRlbnRpdHksIGNhY2hlcyB0aGUgcmVzdWx0IHBlciBob3N0IGFuZCBpZGVudGl0eSB3aXRoIGFcbiAqIFRUTCB2aWEgYEBkYngtdG9vbHMvY2FjaGVgLiBDb25jdXJyZW50IGNhbGxlcnMgaW4gdGhlIHNhbWUgc2NvcGUgc2hhcmVcbiAqIG9uZSBpbi1mbGlnaHQgcHJvbWlzZS4gU3VyZmFjZXMgZWFjaCBlbmRwb2ludCBhcyBhIHN0YWJsZVxuICoge0BsaW5rIFNlcnZpbmdFbmRwb2ludFN1bW1hcnl9IC0gaW5jbHVkaW5nIHRoZSBGb3VuZGF0aW9uIE1vZGVsIEFQSVxuICogYHF1YWxpdHlgIC8gYHNwZWVkYCAvIGBjb3N0YCBwcm9maWxlIHdoZW4gcHJlc2VudCwgdGhlIGNsYXNzaWZpZWRcbiAqIHtAbGluayBNb2RlbENsYXNzfSwgYW5kIChmb3IgZW1iZWRkaW5nIGVuZHBvaW50cykgdGhlIG1lYXN1cmVkIHZlY3RvclxuICogYGRpbWVuc2lvbmAgLSBhbmQgc25hcHMgbG9vc2UsIGh1bWFuLXR5cGVkIG5hbWVzIHRvIHJlYWwgZW5kcG9pbnQgaWRzXG4gKiB0aHJvdWdoIHRoZSBUeXBlU2NyaXB0IG1vZGVsIHJhbmtlciBzbyB0b2tlbnMgbGlrZSBgXCJjbGF1ZGUgc29ubmV0XCJgIHJlc29sdmUgdG9cbiAqIGBkYXRhYnJpY2tzLWNsYXVkZS1zb25uZXQtNC02YC5cbiAqXG4gKiBUaGUgY2xhc3Mgc3RhbXAgYW5kIGVtYmVkZGluZyBkaW1lbnNpb24gYXJlIGNvbXB1dGVkIG9uY2UgcGVyIGNhY2hlIGxvYWQ6XG4gKiBldmVyeSBlbWJlZGRpbmcgZW5kcG9pbnQgaXMgXCJwaW5nZWRcIiBpbiBwYXJhbGxlbCBhbmQgdGhlIHJlc3VsdGluZyB2ZWN0b3JcbiAqIGxlbmd0aCByZWNvcmRlZCwgc28gdGhlIGNvc3QgaXMgcGFpZCBvbiBhIGNhY2hlIG1pc3MsIG5vdCBwZXIgcmVhZC4gVGhlIHBpbmdcbiAqIGlzIGJlc3QtZWZmb3J0IC0gYSBmYWlsdXJlIGxvZ3MgYXQgZGVidWcgYW5kIGxlYXZlcyBgZGltZW5zaW9uYCB1bnNldCByYXRoZXJcbiAqIHRoYW4gZmFpbGluZyB0aGUgd2hvbGUgbGlzdGluZy5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gXCJub2RlOmNyeXB0b1wiO1xuaW1wb3J0IHsgYXBwa2l0IH0gZnJvbSBcIkBkYngtdG9vbHMvYXBwa2l0XCI7XG5pbXBvcnQgeyBkZWxldGVDYWNoZWRWYWx1ZSwgZ2V0T3JTZXQgfSBmcm9tIFwiQGRieC10b29scy9jYWNoZS9jYWNoZVwiO1xuaW1wb3J0IHsgZXJyb3JVdGlscywgbG9nIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcbmltcG9ydCB7XG4gIG1vZGVsLFxuICB0eXBlIFJlc29sdmVkTW9kZWwsXG4gIHR5cGUgUmVzb2x2ZU1vZGVsT3B0aW9ucyxcbiAgdHlwZSBTY29yZWRFbmRwb2ludCxcbiAgdHlwZSBTZXJ2aW5nRW5kcG9pbnRTdW1tYXJ5LFxufSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtbW9kZWxcIjtcblxuaW1wb3J0IHsgbW9kZWxDYXRhbG9ndWVDYWNoZSB9IGZyb20gXCIuL19jYWNoZS50c1wiO1xuaW1wb3J0IHsgY2xhc3NpZnlFbmRwb2ludENsYXNzZXMsIG5vcm1hbGl6ZUVuZHBvaW50cywgcmFua0VuZHBvaW50cyB9IGZyb20gXCIuL19yYW5raW5nLnRzXCI7XG5cbmNvbnN0IHsgTW9kZWxDbGFzcyB9ID0gbW9kZWw7XG5cbmNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJtb2RlbC9zZXJ2aW5nXCIpO1xuXG4vKipcbiAqIFN0cnVjdHVyYWwgdHlwZSBmb3IgdGhlIERhdGFicmlja3Mgd29ya3NwYWNlIGNsaWVudCwgcmUtZXhwb3J0ZWQgc28gdGhlIHJlc3RcbiAqIG9mIHRoaXMgcGFja2FnZSBjYW4ga2VlcCBpbXBvcnRpbmcgaXQgZnJvbSBoZXJlLiBTZWVcbiAqIGBhcHBraXQuV29ya3NwYWNlQ2xpZW50TGlrZWAgKG5vZGUtYXBwa2l0KSBmb3IgdGhlIGNhbm9uaWNhbCBkZWZpbml0aW9uLlxuICovXG5leHBvcnQgdHlwZSBXb3Jrc3BhY2VDbGllbnRMaWtlID0gUGljazxhcHBraXQuV29ya3NwYWNlQ2xpZW50TGlrZSwgXCJzZXJ2aW5nRW5kcG9pbnRzXCI+O1xuXG4vKiogRGVmYXVsdCBUVEwgZm9yIHRoZSBpbi1tZW1vcnkgZW5kcG9pbnQgY2FjaGUuIE1hdGNoZXMgdGhlIERhdGFicmlja3MgU0RLJ3Mgc2Vzc2lvbiBsaWZldGltZSBidWRnZXQuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9NT0RFTF9DQUNIRV9UVExfTVMgPSA1ICogNjAgKiAxMDAwO1xuXG4vKiogRGVmYXVsdCBmdXp6eSBkaXN0YW5jZSB0aHJlc2hvbGQgYmVsb3cgd2hpY2ggYSBtYXRjaCBpcyBhY2NlcHRlZC4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0ZVWlpZX1RIUkVTSE9MRCA9IDAuNDtcblxuLyoqIENhY2hlIGtleSBwYXJ0cyB1bmRlciB3aGljaCBlbmRwb2ludCBsaXN0aW5ncyBhcmUgc3RvcmVkLiAqL1xuY29uc3QgQ0FDSEVfS0VZX05BTUVTUEFDRSA9IFwic2VydmluZy1lbmRwb2ludHNcIjtcbmNvbnN0IGNhdGFsb2d1ZUNhY2hlID0gbW9kZWxDYXRhbG9ndWVDYWNoZTtcblxuLyoqIE9wdGlvbnMgZm9yIHtAbGluayBsaXN0U2VydmluZ0VuZHBvaW50c30uICovXG5leHBvcnQgaW50ZXJmYWNlIExpc3RTZXJ2aW5nRW5kcG9pbnRzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBPdmVycmlkZSB0aGUgZGVmYXVsdCBjYWNoZSBUVEwgZm9yIHRoaXMgY2FsbCwgaW4gbWlsbGlzZWNvbmRzLlxuICAgKi9cbiAgdHRsTXM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBUcnVzdGVkIGlkZW50aXR5IG9mIHRoZSBjcmVkZW50aWFsIHVzZWQgYnkgYGNsaWVudGAuXG4gICAqXG4gICAqIFRoZSB2YWx1ZSBpcyBoYXNoZWQgYmVmb3JlIGl0IGVudGVycyB0aGUgY2FjaGUga2V5IGFuZCBpcyBuZXZlciBsb2dnZWQuXG4gICAqIE9taXQgaXQgd2hlbiB0aGUgY2FsbGVyIGNhbm5vdCBwcm92ZSB0aGUgY3JlZGVudGlhbCBpZGVudGl0eTsgdGhhdCBjYWxsXG4gICAqIGJ5cGFzc2VzIHNoYXJlZCBjYWNoaW5nIHNvIG9uZSBwcmluY2lwYWwgY2FuIG5ldmVyIHJlYWQgYW5vdGhlcidzXG4gICAqIGNhdGFsb2d1ZS5cbiAgICovXG4gIGNhY2hlSWRlbnRpdHk/OiBzdHJpbmc7XG59XG5cbi8qKiBIYXNoIGFuIG9wYXF1ZSBjcmVkZW50aWFsIGlkZW50aXR5IGJlZm9yZSBoYW5kaW5nIGl0IHRvIHRoZSBzaGFyZWQgY2FjaGUuICovXG5mdW5jdGlvbiBjYWNoZVVzZXJLZXkoaWRlbnRpdHk6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgbW9kZWwtJHtjcmVhdGVIYXNoKFwic2hhMjU2XCIpLnVwZGF0ZShpZGVudGl0eSkuZGlnZXN0KFwiaGV4XCIpfWA7XG59XG5cbi8qKlxuICogTGlzdCBNb2RlbCBTZXJ2aW5nIGVuZHBvaW50cyBmb3IgdGhlIHdvcmtzcGFjZSBvd25pbmcgYGNsaWVudGAsIHJvdXRlZFxuICogdGhyb3VnaCB0aGUgc2hhcmVkIG1lbW9yeS1maXJzdCBjYWNoZSwgaW5jbHVkaW5nIHBlci1lbnRyeSBUVEwsIGluLWZsaWdodFxuICogcmVxdWVzdCBjb2FsZXNjaW5nLCBib3VuZGVkIHByb2Nlc3MgbWVtb3J5LCBhbmQgcG9ydGFibGUgcGVyc2lzdGVuY2UuXG4gKlxuICogUmV0dXJucyBwbGFpbiB7QGxpbmsgU2VydmluZ0VuZHBvaW50U3VtbWFyeX0gb2JqZWN0cyAoYSBzdGFibGUgc3Vic2V0IG9mIHRoZVxuICogU0RLIHR5cGUpIHNvIGNhY2hlIGhpdHMgbmV2ZXIgZXhwb3NlIHN0YWxlIFNESyBpbnRlcm5hbHMuXG4gKlxuICogQHBhcmFtIGhvc3QgLSBXb3Jrc3BhY2UgaG9zdCB1c2VkIGFzIHRoZSBjYWNoZSBrZXkuIFBhc3MgdGhlIHZhbHVlIHJlc29sdmVkXG4gKiAgIGZyb20gYGNsaWVudC5jb25maWcuZ2V0SG9zdCgpYCBzbyBtdWx0aS1ob3N0IGFwcHMgc2hhcmUgb25lIGVudHJ5IHBlclxuICogICB3b3Jrc3BhY2UuXG4gKiBAcGFyYW0gb3B0aW9ucy50dGxNcyAtIE92ZXJyaWRlIHRoZSBkZWZhdWx0IFRUTCBqdXN0IGZvciB0aGlzIGNhbGwuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsaXN0U2VydmluZ0VuZHBvaW50cyhcbiAgY2xpZW50OiBXb3Jrc3BhY2VDbGllbnRMaWtlLFxuICBob3N0OiBzdHJpbmcsXG4gIG9wdGlvbnM6IExpc3RTZXJ2aW5nRW5kcG9pbnRzT3B0aW9ucyA9IHt9LFxuKTogUHJvbWlzZTxTZXJ2aW5nRW5kcG9pbnRTdW1tYXJ5W10+IHtcbiAgaWYgKCFvcHRpb25zLmNhY2hlSWRlbnRpdHkpIHJldHVybiBmZXRjaEVuZHBvaW50cyhjbGllbnQpO1xuICByZXR1cm4gKGF3YWl0IGdldE9yU2V0KFxuICAgIGNhdGFsb2d1ZUNhY2hlLFxuICAgIGNhdGFsb2d1ZUNhY2hlS2V5KGhvc3QsIG9wdGlvbnMuY2FjaGVJZGVudGl0eSksXG4gICAgKCkgPT4gZmV0Y2hFbmRwb2ludHMoY2xpZW50KSxcbiAgICB7XG4gICAgICB0dGw6IG9wdGlvbnMudHRsTXMgPz8gREVGQVVMVF9NT0RFTF9DQUNIRV9UVExfTVMsXG4gICAgICByZXR1cm5DYWNoZWRPbkVycm9yOiB0cnVlLFxuICAgICAgY2FjaGVkT25FcnJvclR0bDogXCI3ZFwiLFxuICAgICAgdGhyb3dFcnJvcnM6IHRydWUsXG4gICAgfSxcbiAgKSkhO1xufVxuXG4vKipcbiAqIExpc3QgdGhlIHdvcmtzcGFjZSdzIHNlcnZpbmcgZW5kcG9pbnRzIGFzIG1pbmltYWxcbiAqIHtAbGluayBTZXJ2aW5nRW5kcG9pbnRTdW1tYXJ5fSBvYmplY3RzIHN0cmFpZ2h0IGZyb20gdGhlIFNESzogbm8gY2FjaGluZywgYW5kXG4gKiBub25lIG9mIHRoZSBjYWNoZS1sb2FkIGVucmljaG1lbnQgKHtAbGluayBsaXN0U2VydmluZ0VuZHBvaW50c30gYWRkcyB0aGVcbiAqIHtAbGluayBNb2RlbENsYXNzfSBzdGFtcCBhbmQgdGhlIGVtYmVkZGluZy1kaW1lbnNpb24gcHJvYmUpLiBVc2UgdGhpcyBmb3IgYVxuICogb25lLXNob3QsIGRlcGVuZGVuY3ktbGlnaHQgbGlzdGluZyAtIGUuZy4gYSBDTEkgdGhhdCBvbmx5IG5lZWRzIG5hbWVzL3Rhc2tzXG4gKiBmb3IgZnV6enkgcmVzb2x1dGlvbiBhbmQgZG9lc24ndCB3YW50IHNoYXJlZCBjYWNoZSBwZXJzaXN0ZW5jZSBvciB0aGVcbiAqIHBlci1lbWJlZGRpbmcgcGluZyBjb3N0LiBQcmVmZXIge0BsaW5rIGxpc3RTZXJ2aW5nRW5kcG9pbnRzfSBmb3IgdGhlIGNhY2hlZCxcbiAqIGVucmljaGVkIHZpZXcuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsaXN0U2VydmluZ0VuZHBvaW50c1VuY2FjaGVkKFxuICBjbGllbnQ6IFdvcmtzcGFjZUNsaWVudExpa2UsXG4pOiBQcm9taXNlPFNlcnZpbmdFbmRwb2ludFN1bW1hcnlbXT4ge1xuICBjb25zdCBlbmRwb2ludHM6IHVua25vd25bXSA9IFtdO1xuICBmb3IgYXdhaXQgKGNvbnN0IGVwIG9mIGNsaWVudC5zZXJ2aW5nRW5kcG9pbnRzLmxpc3QoKSkge1xuICAgIGVuZHBvaW50cy5wdXNoKGVwKTtcbiAgfVxuICByZXR1cm4gbm9ybWFsaXplRW5kcG9pbnRzKGVuZHBvaW50cyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoRW5kcG9pbnRzKGNsaWVudDogV29ya3NwYWNlQ2xpZW50TGlrZSk6IFByb21pc2U8U2VydmluZ0VuZHBvaW50U3VtbWFyeVtdPiB7XG4gIGNvbnN0IHN0YXJ0ZWRBdCA9IERhdGUubm93KCk7XG4gIGNvbnN0IGNsYXNzaWZpZWQgPSBzdGFtcE1vZGVsQ2xhc3Nlcyhhd2FpdCBsaXN0U2VydmluZ0VuZHBvaW50c1VuY2FjaGVkKGNsaWVudCkpO1xuICBjb25zdCBvdXQgPSBhd2FpdCBtZWFzdXJlRW1iZWRkaW5nRGltZW5zaW9ucyhjbGllbnQsIGNsYXNzaWZpZWQpO1xuICBsb2dnZXIuZGVidWcoXCJsaXN0ZWRcIiwgeyBjb3VudDogb3V0Lmxlbmd0aCwgZWxhcHNlZE1zOiBEYXRlLm5vdygpIC0gc3RhcnRlZEF0IH0pO1xuICByZXR1cm4gb3V0O1xufVxuXG4vKipcbiAqIFN0YW1wIGVhY2ggc3VtbWFyeSdzIHtAbGluayBTZXJ2aW5nRW5kcG9pbnRTdW1tYXJ5LmNsYXNzfSBmcm9tIHRoZSByZWxhdGl2ZVxuICogY2xhc3NpZmljYXRpb24gb2YgdGhlIHdob2xlIHNldC4gRW5kcG9pbnRzIHRoZSBjbGFzc2lmaWVyIGRvZXNuJ3QgcmVjb2duaXplXG4gKiAoY3VzdG9tLCB1bnNjb3JlZCwgbm9uLUxMTSkgYXJlIGxlZnQgd2l0aG91dCBhIGNsYXNzLlxuICovXG5mdW5jdGlvbiBzdGFtcE1vZGVsQ2xhc3NlcyhzdW1tYXJpZXM6IHJlYWRvbmx5IFNlcnZpbmdFbmRwb2ludFN1bW1hcnlbXSk6IFNlcnZpbmdFbmRwb2ludFN1bW1hcnlbXSB7XG4gIGNvbnN0IGNsYXNzT2YgPSBjbGFzc2lmeUVuZHBvaW50Q2xhc3NlcyhzdW1tYXJpZXMpO1xuICByZXR1cm4gc3VtbWFyaWVzLm1hcCgoc3VtbWFyeSkgPT4ge1xuICAgIGNvbnN0IGNscyA9IGNsYXNzT2YuZ2V0KHN1bW1hcnkubmFtZSk7XG4gICAgcmV0dXJuIGNscyA9PT0gdW5kZWZpbmVkID8gc3VtbWFyeSA6IHsgLi4uc3VtbWFyeSwgY2xhc3M6IGNscyB9O1xuICB9KTtcbn1cblxuLyoqXG4gKiBNZWFzdXJlIHRoZSBlbWJlZGRpbmcgdmVjdG9yIGRpbWVuc2lvbiBvZiBldmVyeSB7QGxpbmsgTW9kZWxDbGFzcy5FbWJlZGRpbmd9XG4gKiBlbmRwb2ludCBieSBwaW5naW5nIGl0IG9uY2UsIGFsbCBpbiBwYXJhbGxlbC4gUnVucyBvbmx5IG9uIGEgY2FjaGUgbWlzcyAoaXQnc1xuICogY2FsbGVkIGZyb20ge0BsaW5rIGZldGNoRW5kcG9pbnRzfSksIHNvIHRoZSBwcm9iZSBjb3N0IGlzIGFtb3J0aXplZCBhY3Jvc3MgdGhlXG4gKiBjYWNoZWQgVFRMIHdpbmRvdy4gUGVyLWVuZHBvaW50IGZhaWx1cmVzIGFyZSBzd2FsbG93ZWQgKGxvZ2dlZCBhdCB3YXJuKSBzbyBvbmVcbiAqIHVucmVhY2hhYmxlIGVtYmVkZGluZyBtb2RlbCBuZXZlciBmYWlscyB0aGUgbGlzdGluZy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gbWVhc3VyZUVtYmVkZGluZ0RpbWVuc2lvbnMoXG4gIGNsaWVudDogV29ya3NwYWNlQ2xpZW50TGlrZSxcbiAgc3VtbWFyaWVzOiByZWFkb25seSBTZXJ2aW5nRW5kcG9pbnRTdW1tYXJ5W10sXG4pOiBQcm9taXNlPFNlcnZpbmdFbmRwb2ludFN1bW1hcnlbXT4ge1xuICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgc3VtbWFyaWVzLm1hcChhc3luYyAoc3VtbWFyeSkgPT4ge1xuICAgICAgaWYgKHN1bW1hcnkuY2xhc3MgIT09IE1vZGVsQ2xhc3MuRW1iZWRkaW5nKSByZXR1cm4gc3VtbWFyeTtcbiAgICAgIGNvbnN0IGRpbWVuc2lvbiA9IGF3YWl0IHBpbmdFbWJlZGRpbmdEaW1lbnNpb24oY2xpZW50LCBzdW1tYXJ5Lm5hbWUpO1xuICAgICAgcmV0dXJuIGRpbWVuc2lvbiA9PT0gdW5kZWZpbmVkID8gc3VtbWFyeSA6IHsgLi4uc3VtbWFyeSwgZGltZW5zaW9uIH07XG4gICAgfSksXG4gICk7XG59XG5cbi8qKlxuICogQmVzdC1lZmZvcnQgZW1iZWRkaW5nIGRpbWVuc2lvbiBwcm9iZTogcXVlcnkgYG5hbWVgIHdpdGggYSB0aW55IGBcInBpbmdcImBcbiAqIGlucHV0IGFuZCByZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgcmV0dXJuZWQgdmVjdG9yLiBSZXR1cm5zIGB1bmRlZmluZWRgIChhbmRcbiAqIGxvZ3MgYXQgd2Fybikgd2hlbiB0aGUgZW5kcG9pbnQgY2FuJ3QgYmUgcXVlcmllZCBvciByZXR1cm5zIG5vIHZlY3RvciAtIHRoZVxuICogZGltZW5zaW9uIGlzIGluZm9ybWF0aW9uYWwsIG5ldmVyIHJlcXVpcmVkLlxuICovXG5hc3luYyBmdW5jdGlvbiBwaW5nRW1iZWRkaW5nRGltZW5zaW9uKFxuICBjbGllbnQ6IFdvcmtzcGFjZUNsaWVudExpa2UsXG4gIG5hbWU6IHN0cmluZyxcbik6IFByb21pc2U8bnVtYmVyIHwgdW5kZWZpbmVkPiB7XG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuc2VydmluZ0VuZHBvaW50cy5xdWVyeSh7IG5hbWUsIGlucHV0OiBcInBpbmdcIiB9KTtcbiAgICBjb25zdCBkaW1lbnNpb24gPSByZXNwb25zZS5kYXRhPy5bMF0/LmVtYmVkZGluZz8ubGVuZ3RoO1xuICAgIGlmICh0eXBlb2YgZGltZW5zaW9uID09PSBcIm51bWJlclwiICYmIGRpbWVuc2lvbiA+IDApIHJldHVybiBkaW1lbnNpb247XG4gICAgbG9nZ2VyLndhcm4oXCJlbWJlZGRpbmcgcGluZyByZXR1cm5lZCBubyB2ZWN0b3JcIiwgeyBuYW1lIH0pO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZ2dlci53YXJuKFwiZW1iZWRkaW5nIHBpbmcgZmFpbGVkXCIsIHsgbmFtZSwgZXJyb3I6IGVycm9yVXRpbHMuZXJyb3JNZXNzYWdlKGVycikgfSk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKipcbiAqIEZvcmNlLWV2aWN0IGNhY2hlZCBlbmRwb2ludCBsaXN0aW5ncy4gQSBob3N0IGFuZCBpZGVudGl0eSBkZWxldGUgb25seSB0aGF0XG4gKiBwcmluY2lwYWwncyB3b3Jrc3BhY2UgZW50cnkuIE9taXR0aW5nIGVpdGhlciB2YWx1ZSBjbGVhcnMgdGhpcyBjYXRhbG9ndWUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjbGVhclNlcnZpbmdFbmRwb2ludHNDYWNoZShcbiAgaG9zdD86IHN0cmluZyxcbiAgY2FjaGVJZGVudGl0eT86IHN0cmluZyxcbik6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoaG9zdCAmJiBjYWNoZUlkZW50aXR5KSB7XG4gICAgYXdhaXQgZGVsZXRlQ2FjaGVkVmFsdWUoY2F0YWxvZ3VlQ2FjaGUsIGNhdGFsb2d1ZUNhY2hlS2V5KGhvc3QsIGNhY2hlSWRlbnRpdHkpKTtcbiAgfSBlbHNlIHtcbiAgICBhd2FpdCBjYXRhbG9ndWVDYWNoZS5jbGVhcigpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhdGFsb2d1ZUNhY2hlS2V5KGhvc3Q6IHN0cmluZywgY2FjaGVJZGVudGl0eTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KFtDQUNIRV9LRVlfTkFNRVNQQUNFLCBob3N0LCBjYWNoZVVzZXJLZXkoY2FjaGVJZGVudGl0eSldKTtcbn1cblxuLyoqXG4gKiBSZXN1bHQgb2YgZnV6enktcmVzb2x2aW5nIGEgdXNlci1zdXBwbGllZCBtb2RlbCBuYW1lIGFnYWluc3QgdGhlIGxpdmVcbiAqIGVuZHBvaW50IGxpc3QuIGBzY29yZWAgaXMgdGhlIHJhbmtlcidzIGRpc3RhbmNlIChgMGAgaXMgZXhhY3QsIGAxYCBpcyBubyBtYXRjaCk7XG4gKiBgbWF0Y2hlZGAgaXMgYGZhbHNlYCB3aGVuIHRoZSBzY29yZSBleGNlZWRzIHRoZSBjb25maWd1cmVkIHRocmVzaG9sZCBzb1xuICogY2FsbGVycyBjYW4gZmFsbCBiYWNrIHRvIHRoZSBvcmlnaW5hbCBpbnB1dCAoRGF0YWJyaWNrcyB3aWxsIHRoZW4gcmV0dXJuIGFcbiAqIGNsZWFuIDQwNCkuXG4gKi9cbi8qKlxuICogRnV6enktcmFuayBlbmRwb2ludHMgYnkgaG93IGNsb3NlbHkgdGhlaXIgYG5hbWVgIG1hdGNoZXMgYGlucHV0YCwgYmVzdFxuICogKGxvd2VzdCBzY29yZSkgZmlyc3QsIGtlZXBpbmcgb25seSB0aG9zZSB3aXRoaW4gYHRocmVzaG9sZGA6XG4gKlxuICogMS4gQW4gZXhhY3QgbmFtZSBtYXRjaCBzaG9ydC1jaXJjdWl0cyB0byBhIHNpbmdsZSBgc2NvcmU6IDBgIHJlc3VsdC5cbiAqIDIuIE90aGVyd2lzZSB0aGUgc2hhcmVkIFR5cGVTY3JpcHQgcG9saWN5IHRva2VuaXplcyBhbmQgc2NvcmVzIGV2ZXJ5IGVuZHBvaW50IHRocm91Z2ggdGhlXG4gKiAgICBzYW1lIGZ1enp5LWRpc3RhbmNlIHBvbGljeSB1c2VkIGJ5IHtAbGluayBsb29rdXBNb2RlbHN9LlxuICpcbiAqIFJldHVybnMgYFtdYCBmb3IgYW4gZW1wdHkgZW5kcG9pbnQgbGlzdCBvciB3aGVuIGBpbnB1dGAgdG9rZW5pemVzIHRvIG5vdGhpbmcsXG4gKiBzbyBjYWxsZXJzIGZhbGwgYmFjayB0byB0aGUgcmF3IGlucHV0IGFuZCBsZXQgRGF0YWJyaWNrcyBzdXJmYWNlIGEgY2xlYW4gNDA0LlxuICogVGhpcyBtdWx0aS1yZXN1bHQgY29yZSBpcyBzaGFyZWQgYnkge0BsaW5rIHJlc29sdmVNb2RlbElkfSAoc2luZ2xlIGJlc3QpIGFuZFxuICogdGhlIHJhbmtlZCBgbG9va3VwTW9kZWxzYCBzZWxlY3Rvci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlYXJjaFNlcnZpbmdFbmRwb2ludHMoXG4gIGlucHV0OiBzdHJpbmcsXG4gIGVuZHBvaW50czogcmVhZG9ubHkgU2VydmluZ0VuZHBvaW50U3VtbWFyeVtdLFxuICBvcHRpb25zOiBSZXNvbHZlTW9kZWxPcHRpb25zID0ge30sXG4pOiBTY29yZWRFbmRwb2ludFtdIHtcbiAgaWYgKGVuZHBvaW50cy5sZW5ndGggPT09IDAgfHwgIWlucHV0LnRyaW0oKSkgcmV0dXJuIFtdO1xuICByZXR1cm4gcmFua0VuZHBvaW50cyhcbiAgICBlbmRwb2ludHMsXG4gICAge1xuICAgICAgc2VhcmNoOiBpbnB1dCxcbiAgICAgIC4uLihvcHRpb25zLnJlcXVpcmVzVG9vbHMgIT09IHVuZGVmaW5lZCA/IHsgcmVxdWlyZXNUb29sczogb3B0aW9ucy5yZXF1aXJlc1Rvb2xzIH0gOiB7fSksXG4gICAgICB0aHJlc2hvbGQ6IG9wdGlvbnMudGhyZXNob2xkID8/IERFRkFVTFRfRlVaWllfVEhSRVNIT0xELFxuICAgIH0sXG4gICAge1xuICAgICAgaW5jbHVkZURlcHJlY2F0ZWQ6IHRydWUsXG4gICAgICB0YXNrOiBcImxsbS92MS9jaGF0XCIsXG4gICAgfSxcbiAgKS5tYXAoKHJhbmtlZCkgPT4gKHsgZW5kcG9pbnQ6IHJhbmtlZC5lbmRwb2ludCwgc2NvcmU6IHJhbmtlZC5zY29yZSA/PyAwIH0pKTtcbn1cblxuLyoqXG4gKiBTbmFwIGEgdXNlci1zdXBwbGllZCBtb2RlbCBuYW1lIHRvIHRoZSBzaW5nbGUgY2xvc2VzdCBjb25maWd1cmVkIHNlcnZpbmdcbiAqIGVuZHBvaW50IHZpYSB7QGxpbmsgc2VhcmNoU2VydmluZ0VuZHBvaW50c30uIFJldHVybnMgdGhlIGlucHV0IHVuY2hhbmdlZCB3aXRoXG4gKiBgbWF0Y2hlZDogZmFsc2VgIHdoZW4gbm90aGluZyBzY29yZXMgd2l0aGluIHRoZSB0aHJlc2hvbGQgKG9yIHRoZSBjYXRhbG9ndWVcbiAqIGlzIGVtcHR5KSwgc28gYSBkZWxpYmVyYXRlIG1vZGVsIGlkIGlzIG5ldmVyIHNpbGVudGx5IHJld3JpdHRlbiB0byBhXG4gKiBzaW1pbGFyLWxvb2tpbmcgbmVpZ2hib3VyIGFuZCB0aGUgdXBzdHJlYW0gY2FsbCBzdXJmYWNlcyB0aGUgY2Fub25pY2FsIDQwNC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVNb2RlbElkKFxuICBpbnB1dDogc3RyaW5nLFxuICBlbmRwb2ludHM6IHJlYWRvbmx5IFNlcnZpbmdFbmRwb2ludFN1bW1hcnlbXSxcbiAgb3B0aW9uczogUmVzb2x2ZU1vZGVsT3B0aW9ucyA9IHt9LFxuKTogUmVzb2x2ZWRNb2RlbCB7XG4gIGNvbnN0IFtiZXN0XSA9IHNlYXJjaFNlcnZpbmdFbmRwb2ludHMoaW5wdXQsIGVuZHBvaW50cywgb3B0aW9ucyk7XG4gIGlmIChiZXN0KSB7XG4gICAgcmV0dXJuIHsgbW9kZWxJZDogYmVzdC5lbmRwb2ludC5uYW1lLCBtYXRjaGVkOiB0cnVlLCBzY29yZTogYmVzdC5zY29yZSB9O1xuICB9XG4gIHJldHVybiB7IG1vZGVsSWQ6IGlucHV0LCBtYXRjaGVkOiBmYWxzZSB9O1xufVxuIl19
197
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtY2F0YWxvZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlbC1jYXRhbG9nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFDTCxLQUFLLEdBS04sTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzRixNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsS0FBSyxDQUFDO0FBRTdCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7QUFTM0MsMEdBQTBHO0FBQzFHLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBRXhELHdFQUF3RTtBQUN4RSxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxHQUFHLENBQUM7QUFFM0MsZ0VBQWdFO0FBQ2hFLE1BQU0sbUJBQW1CLEdBQUcsbUJBQW1CLENBQUM7QUFDaEQsTUFBTSxjQUFjLEdBQUcsbUJBQW1CLENBQUM7QUFtQjNDLGdGQUFnRjtBQUNoRixTQUFTLFlBQVksQ0FBQyxRQUFnQjtJQUNwQyxPQUFPLFNBQVMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztBQUN4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O1FBQ1QsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDM0UsQ0FBQztJQUNELE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUM1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBMaXZlIERhdGFicmlja3MgTW9kZWwgU2VydmluZyBjYXRhbG9ndWUgYWNjZXNzLlxuICpcbiAqIExpc3RzIHRoZSB3b3Jrc3BhY2UncyBgL3NlcnZpbmctZW5kcG9pbnRzYCBhbmQsIHdoZW4gdGhlIGNhbGxlciBzdXBwbGllcyBhXG4gKiB0cnVzdGVkIGNyZWRlbnRpYWwgaWRlbnRpdHksIGNhY2hlcyB0aGUgcmVzdWx0IHBlciBob3N0IGFuZCBpZGVudGl0eSB3aXRoIGFcbiAqIFRUTCB2aWEgYEBkYngtdG9vbHMvY2FjaGVgLiBDb25jdXJyZW50IGNhbGxlcnMgaW4gdGhlIHNhbWUgc2NvcGUgc2hhcmVcbiAqIG9uZSBpbi1mbGlnaHQgcHJvbWlzZS4gU3VyZmFjZXMgZWFjaCBlbmRwb2ludCBhcyBhIHN0YWJsZVxuICoge0BsaW5rIFNlcnZpbmdFbmRwb2ludFN1bW1hcnl9IC0gaW5jbHVkaW5nIHRoZSBGb3VuZGF0aW9uIE1vZGVsIEFQSVxuICogYHF1YWxpdHlgIC8gYHNwZWVkYCAvIGBjb3N0YCBwcm9maWxlIHdoZW4gcHJlc2VudCwgdGhlIGNsYXNzaWZpZWRcbiAqIHtAbGluayBNb2RlbENsYXNzfSwgYW5kIChmb3IgZW1iZWRkaW5nIGVuZHBvaW50cykgdGhlIG1lYXN1cmVkIHZlY3RvclxuICogYGRpbWVuc2lvbmAgLSBhbmQgc25hcHMgbG9vc2UsIGh1bWFuLXR5cGVkIG5hbWVzIHRvIHJlYWwgZW5kcG9pbnQgaWRzXG4gKiB0aHJvdWdoIHRoZSBUeXBlU2NyaXB0IG1vZGVsIHJhbmtlciBzbyB0b2tlbnMgbGlrZSBgXCJjbGF1ZGUgc29ubmV0XCJgIHJlc29sdmUgdG9cbiAqIGBkYXRhYnJpY2tzLWNsYXVkZS1zb25uZXQtNC02YC5cbiAqXG4gKiBUaGUgY2xhc3Mgc3RhbXAgYW5kIGVtYmVkZGluZyBkaW1lbnNpb24gYXJlIGNvbXB1dGVkIG9uY2UgcGVyIGNhY2hlIGxvYWQ6XG4gKiBldmVyeSBlbWJlZGRpbmcgZW5kcG9pbnQgaXMgXCJwaW5nZWRcIiBpbiBwYXJhbGxlbCBhbmQgdGhlIHJlc3VsdGluZyB2ZWN0b3JcbiAqIGxlbmd0aCByZWNvcmRlZCwgc28gdGhlIGNvc3QgaXMgcGFpZCBvbiBhIGNhY2hlIG1pc3MsIG5vdCBwZXIgcmVhZC4gVGhlIHBpbmdcbiAqIGlzIGJlc3QtZWZmb3J0IC0gYSBmYWlsdXJlIGxvZ3MgYXQgZGVidWcgYW5kIGxlYXZlcyBgZGltZW5zaW9uYCB1bnNldCByYXRoZXJcbiAqIHRoYW4gZmFpbGluZyB0aGUgd2hvbGUgbGlzdGluZy5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gXCJub2RlOmNyeXB0b1wiO1xuaW1wb3J0IHsgYXBwa2l0IH0gZnJvbSBcIkBkYngtdG9vbHMvYXBwa2l0XCI7XG5pbXBvcnQgeyBkZWxldGVDYWNoZWRWYWx1ZSwgZ2V0T3JTZXQgfSBmcm9tIFwiQGRieC10b29scy9jYWNoZS9jYWNoZVwiO1xuaW1wb3J0IHsgZXJyb3JVdGlscywgbG9nIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcbmltcG9ydCB7XG4gIG1vZGVsLFxuICB0eXBlIFJlc29sdmVkTW9kZWwsXG4gIHR5cGUgUmVzb2x2ZU1vZGVsT3B0aW9ucyxcbiAgdHlwZSBTY29yZWRFbmRwb2ludCxcbiAgdHlwZSBTZXJ2aW5nRW5kcG9pbnRTdW1tYXJ5LFxufSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtbW9kZWxcIjtcblxuaW1wb3J0IHsgbW9kZWxDYXRhbG9ndWVDYWNoZSB9IGZyb20gXCIuL19jYWNoZS50c1wiO1xuaW1wb3J0IHsgY2xhc3NpZnlFbmRwb2ludENsYXNzZXMsIG5vcm1hbGl6ZUVuZHBvaW50cywgcmFua0VuZHBvaW50cyB9IGZyb20gXCIuL19yYW5raW5nLnRzXCI7XG5cbmNvbnN0IHsgTW9kZWxDbGFzcyB9ID0gbW9kZWw7XG5cbmNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJtb2RlbC9zZXJ2aW5nXCIpO1xuXG4vKipcbiAqIFN0cnVjdHVyYWwgdHlwZSBmb3IgdGhlIERhdGFicmlja3Mgd29ya3NwYWNlIGNsaWVudCwgcmUtZXhwb3J0ZWQgc28gdGhlIHJlc3RcbiAqIG9mIHRoaXMgcGFja2FnZSBjYW4ga2VlcCBpbXBvcnRpbmcgaXQgZnJvbSBoZXJlLiBTZWVcbiAqIGBhcHBraXQuV29ya3NwYWNlQ2xpZW50TGlrZWAgKG5vZGUtYXBwa2l0KSBmb3IgdGhlIGNhbm9uaWNhbCBkZWZpbml0aW9uLlxuICovXG5leHBvcnQgdHlwZSBXb3Jrc3BhY2VDbGllbnRMaWtlID0gUGljazxhcHBraXQuV29ya3NwYWNlQ2xpZW50TGlrZSwgXCJzZXJ2aW5nRW5kcG9pbnRzXCI+O1xuXG4vKiogRGVmYXVsdCBUVEwgZm9yIHRoZSBpbi1tZW1vcnkgZW5kcG9pbnQgY2FjaGUuIE1hdGNoZXMgdGhlIERhdGFicmlja3MgU0RLJ3Mgc2Vzc2lvbiBsaWZldGltZSBidWRnZXQuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9NT0RFTF9DQUNIRV9UVExfTVMgPSA1ICogNjAgKiAxMDAwO1xuXG4vKiogRGVmYXVsdCBmdXp6eSBkaXN0YW5jZSB0aHJlc2hvbGQgYmVsb3cgd2hpY2ggYSBtYXRjaCBpcyBhY2NlcHRlZC4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0ZVWlpZX1RIUkVTSE9MRCA9IDAuNDtcblxuLyoqIENhY2hlIGtleSBwYXJ0cyB1bmRlciB3aGljaCBlbmRwb2ludCBsaXN0aW5ncyBhcmUgc3RvcmVkLiAqL1xuY29uc3QgQ0FDSEVfS0VZX05BTUVTUEFDRSA9IFwic2VydmluZy1lbmRwb2ludHNcIjtcbmNvbnN0IGNhdGFsb2d1ZUNhY2hlID0gbW9kZWxDYXRhbG9ndWVDYWNoZTtcblxuLyoqIE9wdGlvbnMgZm9yIHtAbGluayBsaXN0U2VydmluZ0VuZHBvaW50c30uICovXG5leHBvcnQgaW50ZXJmYWNlIExpc3RTZXJ2aW5nRW5kcG9pbnRzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBPdmVycmlkZSB0aGUgZGVmYXVsdCBjYWNoZSBUVEwgZm9yIHRoaXMgY2FsbCwgaW4gbWlsbGlzZWNvbmRzLlxuICAgKi9cbiAgdHRsTXM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBUcnVzdGVkIGlkZW50aXR5IG9mIHRoZSBjcmVkZW50aWFsIHVzZWQgYnkgYGNsaWVudGAuXG4gICAqXG4gICAqIFRoZSB2YWx1ZSBpcyBoYXNoZWQgYmVmb3JlIGl0IGVudGVycyB0aGUgY2FjaGUga2V5IGFuZCBpcyBuZXZlciBsb2dnZWQuXG4gICAqIE9taXQgaXQgd2hlbiB0aGUgY2FsbGVyIGNhbm5vdCBwcm92ZSB0aGUgY3JlZGVudGlhbCBpZGVudGl0eTsgdGhhdCBjYWxsXG4gICAqIGJ5cGFzc2VzIHNoYXJlZCBjYWNoaW5nIHNvIG9uZSBwcmluY2lwYWwgY2FuIG5ldmVyIHJlYWQgYW5vdGhlcidzXG4gICAqIGNhdGFsb2d1ZS5cbiAgICovXG4gIGNhY2hlSWRlbnRpdHk/OiBzdHJpbmc7XG59XG5cbi8qKiBIYXNoIGFuIG9wYXF1ZSBjcmVkZW50aWFsIGlkZW50aXR5IGJlZm9yZSBoYW5kaW5nIGl0IHRvIHRoZSBzaGFyZWQgY2FjaGUuICovXG5mdW5jdGlvbiBjYWNoZVVzZXJLZXkoaWRlbnRpdHk6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgbW9kZWwtJHtjcmVhdGVIYXNoKFwic2hhMjU2XCIpLnVwZGF0ZShpZGVudGl0eSkuZGlnZXN0KFwiaGV4XCIpfWA7XG59XG5cbi8qKlxuICogTGlzdCBNb2RlbCBTZXJ2aW5nIGVuZHBvaW50cyBmb3IgdGhlIHdvcmtzcGFjZSBvd25pbmcgYGNsaWVudGAsIHJvdXRlZFxuICogdGhyb3VnaCB0aGUgc2hhcmVkIG1lbW9yeS1maXJzdCBjYWNoZSwgaW5jbHVkaW5nIHBlci1lbnRyeSBUVEwsIGluLWZsaWdodFxuICogcmVxdWVzdCBjb2FsZXNjaW5nLCBib3VuZGVkIHByb2Nlc3MgbWVtb3J5LCBhbmQgcG9ydGFibGUgcGVyc2lzdGVuY2UuXG4gKlxuICogUmV0dXJucyBwbGFpbiB7QGxpbmsgU2VydmluZ0VuZHBvaW50U3VtbWFyeX0gb2JqZWN0cyAoYSBzdGFibGUgc3Vic2V0IG9mIHRoZVxuICogU0RLIHR5cGUpIHNvIGNhY2hlIGhpdHMgbmV2ZXIgZXhwb3NlIHN0YWxlIFNESyBpbnRlcm5hbHMuXG4gKlxuICogQHBhcmFtIGhvc3QgLSBXb3Jrc3BhY2UgaG9zdCB1c2VkIGFzIHRoZSBjYWNoZSBrZXkuIFBhc3MgdGhlIHZhbHVlIHJlc29sdmVkXG4gKiAgIGZyb20gYGNsaWVudC5jb25maWcuZ2V0SG9zdCgpYCBzbyBtdWx0aS1ob3N0IGFwcHMgc2hhcmUgb25lIGVudHJ5IHBlclxuICogICB3b3Jrc3BhY2UuXG4gKiBAcGFyYW0gb3B0aW9ucy50dGxNcyAtIE92ZXJyaWRlIHRoZSBkZWZhdWx0IFRUTCBqdXN0IGZvciB0aGlzIGNhbGwuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsaXN0U2VydmluZ0VuZHBvaW50cyhcbiAgY2xpZW50OiBXb3Jrc3BhY2VDbGllbnRMaWtlLFxuICBob3N0OiBzdHJpbmcsXG4gIG9wdGlvbnM6IExpc3RTZXJ2aW5nRW5kcG9pbnRzT3B0aW9ucyA9IHt9LFxuKTogUHJvbWlzZTxTZXJ2aW5nRW5kcG9pbnRTdW1tYXJ5W10+IHtcbiAgaWYgKCFvcHRpb25zLmNhY2hlSWRlbnRpdHkpIHJldHVybiBmZXRjaEVuZHBvaW50cyhjbGllbnQpO1xuICByZXR1cm4gKGF3YWl0IGdldE9yU2V0KFxuICAgIGNhdGFsb2d1ZUNhY2hlLFxuICAgIGNhdGFsb2d1ZUNhY2hlS2V5KGhvc3QsIG9wdGlvbnMuY2FjaGVJZGVudGl0eSksXG4gICAgKCkgPT4gZmV0Y2hFbmRwb2ludHMoY2xpZW50KSxcbiAgICB7XG4gICAgICB0dGw6IG9wdGlvbnMudHRsTXMgPz8gREVGQVVMVF9NT0RFTF9DQUNIRV9UVExfTVMsXG4gICAgICByZXR1cm5DYWNoZWRPbkVycm9yOiB0cnVlLFxuICAgICAgY2FjaGVkT25FcnJvclR0bDogXCI3ZFwiLFxuICAgICAgdGhyb3dFcnJvcnM6IHRydWUsXG4gICAgfSxcbiAgKSkhO1xufVxuXG4vKipcbiAqIExpc3QgdGhlIHdvcmtzcGFjZSdzIHNlcnZpbmcgZW5kcG9pbnRzIGFzIG1pbmltYWxcbiAqIHtAbGluayBTZXJ2aW5nRW5kcG9pbnRTdW1tYXJ5fSBvYmplY3RzIHN0cmFpZ2h0IGZyb20gdGhlIFNESzogbm8gY2FjaGluZywgYW5kXG4gKiBub25lIG9mIHRoZSBjYWNoZS1sb2FkIGVucmljaG1lbnQgKHtAbGluayBsaXN0U2VydmluZ0VuZHBvaW50c30gYWRkcyB0aGVcbiAqIHtAbGluayBNb2RlbENsYXNzfSBzdGFtcCBhbmQgdGhlIGVtYmVkZGluZy1kaW1lbnNpb24gcHJvYmUpLiBVc2UgdGhpcyBmb3IgYVxuICogb25lLXNob3QsIGRlcGVuZGVuY3ktbGlnaHQgbGlzdGluZyAtIGUuZy4gYSBDTEkgdGhhdCBvbmx5IG5lZWRzIG5hbWVzL3Rhc2tzXG4gKiBmb3IgZnV6enkgcmVzb2x1dGlvbiBhbmQgZG9lc24ndCB3YW50IHNoYXJlZCBjYWNoZSBwZXJzaXN0ZW5jZSBvciB0aGVcbiAqIHBlci1lbWJlZGRpbmcgcGluZyBjb3N0LiBQcmVmZXIge0BsaW5rIGxpc3RTZXJ2aW5nRW5kcG9pbnRzfSBmb3IgdGhlIGNhY2hlZCxcbiAqIGVucmljaGVkIHZpZXcuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsaXN0U2VydmluZ0VuZHBvaW50c1VuY2FjaGVkKFxuICBjbGllbnQ6IFdvcmtzcGFjZUNsaWVudExpa2UsXG4pOiBQcm9taXNlPFNlcnZpbmdFbmRwb2ludFN1bW1hcnlbXT4ge1xuICBjb25zdCBlbmRwb2ludHM6IHVua25vd25bXSA9IFtdO1xuICBmb3IgYXdhaXQgKGNvbnN0IGVwIG9mIGNsaWVudC5zZXJ2aW5nRW5kcG9pbnRzLmxpc3QoKSkge1xuICAgIGVuZHBvaW50cy5wdXNoKGVwKTtcbiAgfVxuICByZXR1cm4gbm9ybWFsaXplRW5kcG9pbnRzKGVuZHBvaW50cyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoRW5kcG9pbnRzKGNsaWVudDogV29ya3NwYWNlQ2xpZW50TGlrZSk6IFByb21pc2U8U2VydmluZ0VuZHBvaW50U3VtbWFyeVtdPiB7XG4gIGNvbnN0IHN0YXJ0ZWRBdCA9IERhdGUubm93KCk7XG4gIGNvbnN0IGNsYXNzaWZpZWQgPSBzdGFtcE1vZGVsQ2xhc3Nlcyhhd2FpdCBsaXN0U2VydmluZ0VuZHBvaW50c1VuY2FjaGVkKGNsaWVudCkpO1xuICBjb25zdCBvdXQgPSBhd2FpdCBtZWFzdXJlRW1iZWRkaW5nRGltZW5zaW9ucyhjbGllbnQsIGNsYXNzaWZpZWQpO1xuICBsb2dnZXIuZGVidWcoXCJsaXN0ZWRcIiwgeyBjb3VudDogb3V0Lmxlbmd0aCwgZWxhcHNlZE1zOiBEYXRlLm5vdygpIC0gc3RhcnRlZEF0IH0pO1xuICByZXR1cm4gb3V0O1xufVxuXG4vKipcbiAqIFN0YW1wIGVhY2ggc3VtbWFyeSdzIHtAbGluayBTZXJ2aW5nRW5kcG9pbnRTdW1tYXJ5LmNsYXNzfSBmcm9tIHRoZSByZWxhdGl2ZVxuICogY2xhc3NpZmljYXRpb24gb2YgdGhlIHdob2xlIHNldC4gRW5kcG9pbnRzIHRoZSBjbGFzc2lmaWVyIGRvZXNuJ3QgcmVjb2duaXplXG4gKiAoY3VzdG9tLCB1bnNjb3JlZCwgbm9uLUxMTSkgYXJlIGxlZnQgd2l0aG91dCBhIGNsYXNzLlxuICovXG5mdW5jdGlvbiBzdGFtcE1vZGVsQ2xhc3NlcyhzdW1tYXJpZXM6IHJlYWRvbmx5IFNlcnZpbmdFbmRwb2ludFN1bW1hcnlbXSk6IFNlcnZpbmdFbmRwb2ludFN1bW1hcnlbXSB7XG4gIGNvbnN0IGNsYXNzT2YgPSBjbGFzc2lmeUVuZHBvaW50Q2xhc3NlcyhzdW1tYXJpZXMpO1xuICByZXR1cm4gc3VtbWFyaWVzLm1hcCgoc3VtbWFyeSkgPT4ge1xuICAgIGNvbnN0IGNscyA9IGNsYXNzT2YuZ2V0KHN1bW1hcnkubmFtZSk7XG4gICAgcmV0dXJuIGNscyA9PT0gdW5kZWZpbmVkID8gc3VtbWFyeSA6IHsgLi4uc3VtbWFyeSwgY2xhc3M6IGNscyB9O1xuICB9KTtcbn1cblxuLyoqXG4gKiBNZWFzdXJlIHRoZSBlbWJlZGRpbmcgdmVjdG9yIGRpbWVuc2lvbiBvZiBldmVyeSB7QGxpbmsgTW9kZWxDbGFzcy5FbWJlZGRpbmd9XG4gKiBlbmRwb2ludCBieSBwaW5naW5nIGl0IG9uY2UsIGFsbCBpbiBwYXJhbGxlbC4gUnVucyBvbmx5IG9uIGEgY2FjaGUgbWlzcyAoaXQnc1xuICogY2FsbGVkIGZyb20ge0BsaW5rIGZldGNoRW5kcG9pbnRzfSksIHNvIHRoZSBwcm9iZSBjb3N0IGlzIGFtb3J0aXplZCBhY3Jvc3MgdGhlXG4gKiBjYWNoZWQgVFRMIHdpbmRvdy4gUGVyLWVuZHBvaW50IGZhaWx1cmVzIGFyZSBzd2FsbG93ZWQgKGxvZ2dlZCBhdCB3YXJuKSBzbyBvbmVcbiAqIHVucmVhY2hhYmxlIGVtYmVkZGluZyBtb2RlbCBuZXZlciBmYWlscyB0aGUgbGlzdGluZy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gbWVhc3VyZUVtYmVkZGluZ0RpbWVuc2lvbnMoXG4gIGNsaWVudDogV29ya3NwYWNlQ2xpZW50TGlrZSxcbiAgc3VtbWFyaWVzOiByZWFkb25seSBTZXJ2aW5nRW5kcG9pbnRTdW1tYXJ5W10sXG4pOiBQcm9taXNlPFNlcnZpbmdFbmRwb2ludFN1bW1hcnlbXT4ge1xuICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgc3VtbWFyaWVzLm1hcChhc3luYyAoc3VtbWFyeSkgPT4ge1xuICAgICAgaWYgKHN1bW1hcnkuY2xhc3MgIT09IE1vZGVsQ2xhc3MuRW1iZWRkaW5nKSByZXR1cm4gc3VtbWFyeTtcbiAgICAgIGNvbnN0IGRpbWVuc2lvbiA9IGF3YWl0IHBpbmdFbWJlZGRpbmdEaW1lbnNpb24oY2xpZW50LCBzdW1tYXJ5Lm5hbWUpO1xuICAgICAgcmV0dXJuIGRpbWVuc2lvbiA9PT0gdW5kZWZpbmVkID8gc3VtbWFyeSA6IHsgLi4uc3VtbWFyeSwgZGltZW5zaW9uIH07XG4gICAgfSksXG4gICk7XG59XG5cbi8qKlxuICogQmVzdC1lZmZvcnQgZW1iZWRkaW5nIGRpbWVuc2lvbiBwcm9iZTogcXVlcnkgYG5hbWVgIHdpdGggYSB0aW55IGBcInBpbmdcImBcbiAqIGlucHV0IGFuZCByZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgcmV0dXJuZWQgdmVjdG9yLiBSZXR1cm5zIGB1bmRlZmluZWRgIChhbmRcbiAqIGxvZ3MgYXQgd2Fybikgd2hlbiB0aGUgZW5kcG9pbnQgY2FuJ3QgYmUgcXVlcmllZCBvciByZXR1cm5zIG5vIHZlY3RvciAtIHRoZVxuICogZGltZW5zaW9uIGlzIGluZm9ybWF0aW9uYWwsIG5ldmVyIHJlcXVpcmVkLlxuICovXG5hc3luYyBmdW5jdGlvbiBwaW5nRW1iZWRkaW5nRGltZW5zaW9uKFxuICBjbGllbnQ6IFdvcmtzcGFjZUNsaWVudExpa2UsXG4gIG5hbWU6IHN0cmluZyxcbik6IFByb21pc2U8bnVtYmVyIHwgdW5kZWZpbmVkPiB7XG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuc2VydmluZ0VuZHBvaW50cy5xdWVyeSh7IG5hbWUsIGlucHV0OiBcInBpbmdcIiB9KTtcbiAgICBjb25zdCBkaW1lbnNpb24gPSByZXNwb25zZS5kYXRhPy5bMF0/LmVtYmVkZGluZz8ubGVuZ3RoO1xuICAgIGlmICh0eXBlb2YgZGltZW5zaW9uID09PSBcIm51bWJlclwiICYmIGRpbWVuc2lvbiA+IDApIHJldHVybiBkaW1lbnNpb247XG4gICAgbG9nZ2VyLndhcm4oXCJlbWJlZGRpbmcgcGluZyByZXR1cm5lZCBubyB2ZWN0b3JcIiwgeyBuYW1lIH0pO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZ2dlci53YXJuKFwiZW1iZWRkaW5nIHBpbmcgZmFpbGVkXCIsIHsgbmFtZSwgZXJyb3I6IGVycm9yVXRpbHMudG9FcnJvcihlcnIpIH0pO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBGb3JjZS1ldmljdCBjYWNoZWQgZW5kcG9pbnQgbGlzdGluZ3MuIEEgaG9zdCBhbmQgaWRlbnRpdHkgZGVsZXRlIG9ubHkgdGhhdFxuICogcHJpbmNpcGFsJ3Mgd29ya3NwYWNlIGVudHJ5LiBPbWl0dGluZyBlaXRoZXIgdmFsdWUgY2xlYXJzIHRoaXMgY2F0YWxvZ3VlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2xlYXJTZXJ2aW5nRW5kcG9pbnRzQ2FjaGUoXG4gIGhvc3Q/OiBzdHJpbmcsXG4gIGNhY2hlSWRlbnRpdHk/OiBzdHJpbmcsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKGhvc3QgJiYgY2FjaGVJZGVudGl0eSkge1xuICAgIGF3YWl0IGRlbGV0ZUNhY2hlZFZhbHVlKGNhdGFsb2d1ZUNhY2hlLCBjYXRhbG9ndWVDYWNoZUtleShob3N0LCBjYWNoZUlkZW50aXR5KSk7XG4gIH0gZWxzZSB7XG4gICAgYXdhaXQgY2F0YWxvZ3VlQ2FjaGUuY2xlYXIoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjYXRhbG9ndWVDYWNoZUtleShob3N0OiBzdHJpbmcsIGNhY2hlSWRlbnRpdHk6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShbQ0FDSEVfS0VZX05BTUVTUEFDRSwgaG9zdCwgY2FjaGVVc2VyS2V5KGNhY2hlSWRlbnRpdHkpXSk7XG59XG5cbi8qKlxuICogUmVzdWx0IG9mIGZ1enp5LXJlc29sdmluZyBhIHVzZXItc3VwcGxpZWQgbW9kZWwgbmFtZSBhZ2FpbnN0IHRoZSBsaXZlXG4gKiBlbmRwb2ludCBsaXN0LiBgc2NvcmVgIGlzIHRoZSByYW5rZXIncyBkaXN0YW5jZSAoYDBgIGlzIGV4YWN0LCBgMWAgaXMgbm8gbWF0Y2gpO1xuICogYG1hdGNoZWRgIGlzIGBmYWxzZWAgd2hlbiB0aGUgc2NvcmUgZXhjZWVkcyB0aGUgY29uZmlndXJlZCB0aHJlc2hvbGQgc29cbiAqIGNhbGxlcnMgY2FuIGZhbGwgYmFjayB0byB0aGUgb3JpZ2luYWwgaW5wdXQgKERhdGFicmlja3Mgd2lsbCB0aGVuIHJldHVybiBhXG4gKiBjbGVhbiA0MDQpLlxuICovXG4vKipcbiAqIEZ1enp5LXJhbmsgZW5kcG9pbnRzIGJ5IGhvdyBjbG9zZWx5IHRoZWlyIGBuYW1lYCBtYXRjaGVzIGBpbnB1dGAsIGJlc3RcbiAqIChsb3dlc3Qgc2NvcmUpIGZpcnN0LCBrZWVwaW5nIG9ubHkgdGhvc2Ugd2l0aGluIGB0aHJlc2hvbGRgOlxuICpcbiAqIDEuIEFuIGV4YWN0IG5hbWUgbWF0Y2ggc2hvcnQtY2lyY3VpdHMgdG8gYSBzaW5nbGUgYHNjb3JlOiAwYCByZXN1bHQuXG4gKiAyLiBPdGhlcndpc2UgdGhlIHNoYXJlZCBUeXBlU2NyaXB0IHBvbGljeSB0b2tlbml6ZXMgYW5kIHNjb3JlcyBldmVyeSBlbmRwb2ludCB0aHJvdWdoIHRoZVxuICogICAgc2FtZSBmdXp6eS1kaXN0YW5jZSBwb2xpY3kgdXNlZCBieSB7QGxpbmsgbG9va3VwTW9kZWxzfS5cbiAqXG4gKiBSZXR1cm5zIGBbXWAgZm9yIGFuIGVtcHR5IGVuZHBvaW50IGxpc3Qgb3Igd2hlbiBgaW5wdXRgIHRva2VuaXplcyB0byBub3RoaW5nLFxuICogc28gY2FsbGVycyBmYWxsIGJhY2sgdG8gdGhlIHJhdyBpbnB1dCBhbmQgbGV0IERhdGFicmlja3Mgc3VyZmFjZSBhIGNsZWFuIDQwNC5cbiAqIFRoaXMgbXVsdGktcmVzdWx0IGNvcmUgaXMgc2hhcmVkIGJ5IHtAbGluayByZXNvbHZlTW9kZWxJZH0gKHNpbmdsZSBiZXN0KSBhbmRcbiAqIHRoZSByYW5rZWQgYGxvb2t1cE1vZGVsc2Agc2VsZWN0b3IuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZWFyY2hTZXJ2aW5nRW5kcG9pbnRzKFxuICBpbnB1dDogc3RyaW5nLFxuICBlbmRwb2ludHM6IHJlYWRvbmx5IFNlcnZpbmdFbmRwb2ludFN1bW1hcnlbXSxcbiAgb3B0aW9uczogUmVzb2x2ZU1vZGVsT3B0aW9ucyA9IHt9LFxuKTogU2NvcmVkRW5kcG9pbnRbXSB7XG4gIGlmIChlbmRwb2ludHMubGVuZ3RoID09PSAwIHx8ICFpbnB1dC50cmltKCkpIHJldHVybiBbXTtcbiAgcmV0dXJuIHJhbmtFbmRwb2ludHMoXG4gICAgZW5kcG9pbnRzLFxuICAgIHtcbiAgICAgIHNlYXJjaDogaW5wdXQsXG4gICAgICAuLi4ob3B0aW9ucy5yZXF1aXJlc1Rvb2xzICE9PSB1bmRlZmluZWQgPyB7IHJlcXVpcmVzVG9vbHM6IG9wdGlvbnMucmVxdWlyZXNUb29scyB9IDoge30pLFxuICAgICAgdGhyZXNob2xkOiBvcHRpb25zLnRocmVzaG9sZCA/PyBERUZBVUxUX0ZVWlpZX1RIUkVTSE9MRCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGluY2x1ZGVEZXByZWNhdGVkOiB0cnVlLFxuICAgICAgdGFzazogXCJsbG0vdjEvY2hhdFwiLFxuICAgIH0sXG4gICkubWFwKChyYW5rZWQpID0+ICh7IGVuZHBvaW50OiByYW5rZWQuZW5kcG9pbnQsIHNjb3JlOiByYW5rZWQuc2NvcmUgPz8gMCB9KSk7XG59XG5cbi8qKlxuICogU25hcCBhIHVzZXItc3VwcGxpZWQgbW9kZWwgbmFtZSB0byB0aGUgc2luZ2xlIGNsb3Nlc3QgY29uZmlndXJlZCBzZXJ2aW5nXG4gKiBlbmRwb2ludCB2aWEge0BsaW5rIHNlYXJjaFNlcnZpbmdFbmRwb2ludHN9LiBSZXR1cm5zIHRoZSBpbnB1dCB1bmNoYW5nZWQgd2l0aFxuICogYG1hdGNoZWQ6IGZhbHNlYCB3aGVuIG5vdGhpbmcgc2NvcmVzIHdpdGhpbiB0aGUgdGhyZXNob2xkIChvciB0aGUgY2F0YWxvZ3VlXG4gKiBpcyBlbXB0eSksIHNvIGEgZGVsaWJlcmF0ZSBtb2RlbCBpZCBpcyBuZXZlciBzaWxlbnRseSByZXdyaXR0ZW4gdG8gYVxuICogc2ltaWxhci1sb29raW5nIG5laWdoYm91ciBhbmQgdGhlIHVwc3RyZWFtIGNhbGwgc3VyZmFjZXMgdGhlIGNhbm9uaWNhbCA0MDQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlTW9kZWxJZChcbiAgaW5wdXQ6IHN0cmluZyxcbiAgZW5kcG9pbnRzOiByZWFkb25seSBTZXJ2aW5nRW5kcG9pbnRTdW1tYXJ5W10sXG4gIG9wdGlvbnM6IFJlc29sdmVNb2RlbE9wdGlvbnMgPSB7fSxcbik6IFJlc29sdmVkTW9kZWwge1xuICBjb25zdCBbYmVzdF0gPSBzZWFyY2hTZXJ2aW5nRW5kcG9pbnRzKGlucHV0LCBlbmRwb2ludHMsIG9wdGlvbnMpO1xuICBpZiAoYmVzdCkge1xuICAgIHJldHVybiB7IG1vZGVsSWQ6IGJlc3QuZW5kcG9pbnQubmFtZSwgbWF0Y2hlZDogdHJ1ZSwgc2NvcmU6IGJlc3Quc2NvcmUgfTtcbiAgfVxuICByZXR1cm4geyBtb2RlbElkOiBpbnB1dCwgbWF0Y2hlZDogZmFsc2UgfTtcbn1cbiJdfQ==
@@ -10,6 +10,7 @@
10
10
  */
11
11
  import { createAuthClient, } from "@dbx-tools/auth/client";
12
12
  import { listProfiles as listAuthProfiles } from "@dbx-tools/auth/profile";
13
+ import * as errorUtils from "@dbx-tools/shared-core/error-utils";
13
14
  import * as log from "@dbx-tools/shared-core/log";
14
15
  import * as object from "@dbx-tools/shared-core/object";
15
16
  import { ModelClass, } from "@dbx-tools/shared-model/contracts";
@@ -164,7 +165,7 @@ class DefaultModelClient {
164
165
  catch (error) {
165
166
  logger.warn("embedding dimension probe failed", {
166
167
  model: endpoint.name,
167
- error,
168
+ error: errorUtils.toError(error),
168
169
  });
169
170
  return endpoint;
170
171
  }
@@ -240,4 +241,4 @@ function cloneEndpoint(endpoint) {
240
241
  ...(endpoint.status ? { status: { ...endpoint.status } } : {}),
241
242
  };
242
243
  }
243
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGVsLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7O0dBU0c7QUFDSCxPQUFPLEVBQ0wsZ0JBQWdCLEdBR2pCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLFlBQVksSUFBSSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTNFLE9BQU8sS0FBSyxHQUFHLE1BQU0sNEJBQTRCLENBQUM7QUFDbEQsT0FBTyxLQUFLLE1BQU0sTUFBTSwrQkFBK0IsQ0FBQztBQUN4RCxPQUFPLEVBQ0wsVUFBVSxHQU9YLE1BQU0sbUNBQW1DLENBQUM7QUFFM0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU5QyxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBRTFDLHdEQUF3RDtBQUN4RCxNQUFNLENBQUMsTUFBTSxpQ0FBaUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQXNFL0QsTUFBTSx3QkFBd0I7SUFFakI7SUFDUTtJQUZuQixZQUNXLElBQWdCLEVBQ1IsT0FBZ0M7UUFEeEMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNSLFlBQU8sR0FBUCxPQUFPLENBQXlCO0lBQ2hELENBQUM7SUFFSixJQUFJO1FBQ0YsT0FBTyxJQUFJLENBQUMsSUFBSSxD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QUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzFGLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztLQUMvRCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQXV0aGVudGljYXRpb24tYXdhcmUgRGF0YWJyaWNrcyBNb2RlbCBTZXJ2aW5nIGNsaWVudC5cbiAqXG4gKiBUaGlzIGlzIHRoZSBwb3J0YWJsZSBlbnRyeSBwb2ludCB1c2VkIGJ5IGdlbmVyYXRlZCBQeXRob24gYmluZGluZ3MuIEl0IGtlZXBzXG4gKiBhdXRoZW50aWNhdGlvbiwgZW5kcG9pbnQgZGlzY292ZXJ5LCBjYWNoaW5nLCBub3JtYWxpemF0aW9uLCByYW5raW5nLCByb3V0ZVxuICogc2VsZWN0aW9uLCByb3V0ZSBjb25zdHJ1Y3Rpb24sIGFuZCBwdWJsaXNoZWQgbWV0YWRhdGEgaW4gTm9kZSB3aGlsZSBleHBvc2luZ1xuICogb25lIHNtYWxsIGNsaWVudC5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cbmltcG9ydCB7XG4gIGNyZWF0ZUF1dGhDbGllbnQsXG4gIHR5cGUgQXV0aENsaWVudCxcbiAgdHlwZSBEYXRhYnJpY2tzQXV0aERlcGVuZGVuY2llcyxcbn0gZnJvbSBcIkBkYngtdG9vbHMvYXV0aC9jbGllbnRcIjtcbmltcG9ydCB7IGxpc3RQcm9maWxlcyBhcyBsaXN0QXV0aFByb2ZpbGVzIH0gZnJvbSBcIkBkYngtdG9vbHMvYXV0aC9wcm9maWxlXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFicmlja3NQcm9maWxlU3VtbWFyeSB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1hdXRoXCI7XG5pbXBvcnQgKiBhcyBsb2cgZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmUvbG9nXCI7XG5pbXBvcnQgKiBhcyBvYmplY3QgZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmUvb2JqZWN0XCI7XG5pbXBvcnQge1xuICBNb2RlbENsYXNzLFxuICB0eXBlIE1vZGVsTWV0YWRhdGEsXG4gIHR5cGUgTW9kZWxRdWVyeSxcbiAgdHlwZSBSYW5rZWRNb2RlbCxcbiAgdHlwZSBSZXNvbHZlZE1vZGVsU2VsZWN0aW9uLFxuICB0eXBlIFJlc29sdmVNb2RlbElucHV0LFxuICB0eXBlIFNlcnZpbmdFbmRwb2ludFN1bW1hcnksXG59IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1tb2RlbC9jb250cmFjdHNcIjtcblxuaW1wb3J0IHsgbm9ybWFsaXplRW5kcG9pbnRzIH0gZnJvbSBcIi4vX3JhbmtpbmcudHNcIjtcbmltcG9ydCB7IGxvb2t1cE1vZGVscywgcmVzb2x2ZU1vZGVsIH0gZnJvbSBcIi4vX3NlbGVjdGlvbi50c1wiO1xuaW1wb3J0IHsgY2hhdENvbXBsZXRpb25zVXJsLCBpbnZvY2F0aW9uc1VybCwgcmVzcG9uc2VzVXBzdHJlYW1VcmwgfSBmcm9tIFwiLi9pbnZva2UudHNcIjtcbmltcG9ydCB7IGh5ZHJhdGVNb2RlbE1ldGFkYXRhLCBtb2RlbE1ldGFkYXRhRm9yIH0gZnJvbSBcIi4vbWV0YWRhdGEudHNcIjtcbmltcG9ydCB7IG1vZGVsU2VydmluZ0FwaSB9IGZyb20gXCIuL3BvbGljeS50c1wiO1xuXG5jb25zdCBsb2dnZXIgPSBsb2cubG9nZ2VyKFwibW9kZWwvY2xpZW50XCIpO1xuXG4vKiogRGVmYXVsdCBsaWZldGltZSBmb3Igb25lIGxpdmUgZW5kcG9pbnQgY2F0YWxvZ3VlLiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTU9ERUxfQ0xJRU5UX0NBQ0hFX1RUTF9NUyA9IDUgKiA2MCAqIDEwMDA7XG5cbi8qKiBBdXRoZW50aWNhdGlvbiBvcHRpb25zIGV4cG9zZWQgYnkgdGhlIHBvcnRhYmxlIG1vZGVsIGNsaWVudC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW9kZWxBdXRoT3B0aW9ucyB7XG4gIC8qKiBEYXRhYnJpY2tzIHByb2ZpbGUgbmFtZS4gKi9cbiAgcHJvZmlsZT86IHN0cmluZztcbn1cblxuLyoqIENvbnN0cnVjdGlvbiBvcHRpb25zIGZvciB7QGxpbmsgY3JlYXRlTW9kZWxDbGllbnR9LiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb2RlbENsaWVudE9wdGlvbnMge1xuICAvKiogRGF0YWJyaWNrcyBhdXRoZW50aWNhdGlvbiBhbmQgcHJvZmlsZSBzZWxlY3Rpb24gb3B0aW9ucy4gKi9cbiAgYXV0aD86IE1vZGVsQXV0aE9wdGlvbnM7XG4gIC8qKiBJbi1tZW1vcnkgZW5kcG9pbnQgY2F0YWxvZ3VlIFRUTCBpbiBtaWxsaXNlY29uZHMuICovXG4gIGNhY2hlVHRsTXM/OiBudW1iZXI7XG4gIC8qKiBIeWRyYXRlIE5vZGUtb25seSBtZXRhZGF0YSBjYWNoZXMgYmVmb3JlIGNvbnN0cnVjdGluZyB0aGUgY2xpZW50LiAqL1xuICBoeWRyYXRlTWV0YWRhdGE/OiBib29sZWFuO1xufVxuXG4vKiogU2VjcmV0LWZyZWUgcnVudGltZSBpZGVudGl0eSBhbmQgY2FjaGUgY29uZmlndXJhdGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW9kZWxDbGllbnRTdGF0dXMge1xuICByZWFkb25seSBwcm9maWxlPzogc3RyaW5nO1xuICByZWFkb25seSBob3N0OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByaW5jaXBhbDogc3RyaW5nO1xuICByZWFkb25seSB3b3Jrc3BhY2VJZD86IHN0cmluZztcbiAgcmVhZG9ubHkgY2FjaGVUdGxNczogbnVtYmVyO1xufVxuXG4vKiogU2VydmluZyBwcm90b2NvbCBzZWxlY3RlZCBmb3Igb25lIHJlc29sdmVkIG1vZGVsLiAqL1xuZXhwb3J0IHR5cGUgTW9kZWxQcm90b2NvbCA9IFwiY2hhdFwiIHwgXCJyZXNwb25zZXNcIiB8IFwiZW1iZWRkaW5nc1wiO1xuXG4vKiogTW9kZWwgc2VsZWN0aW9uIHBsdXMgcm91dGUgY29udHJvbHMuICovXG5leHBvcnQgaW50ZXJmYWNlIE1vZGVsUm91dGVJbnB1dCBleHRlbmRzIFJlc29sdmVNb2RlbElucHV0IHtcbiAgLyoqIEZvcmNlIGEgbGl2ZSBlbmRwb2ludCBjYXRhbG9ndWUgcmVmcmVzaCBiZWZvcmUgc2VsZWN0aW9uLiAqL1xuICByZWZyZXNoPzogYm9vbGVhbjtcbiAgLyoqIFJlcXVlc3RlZCB1cHN0cmVhbSBwcm90b2NvbC4gRGVmYXVsdHMgZnJvbSBlbmRwb2ludCB0YXNrIGFuZCBtb2RlbCBwb2xpY3kuICovXG4gIHByb3RvY29sPzogTW9kZWxQcm90b2NvbDtcbiAgLyoqIFdoZXRoZXIgYXV0aGVudGljYXRpb24gbWF5IHJ1biBhbiBpbnRlcmFjdGl2ZSBsb2dpbi4gKi9cbiAgbG9naW4/OiBib29sZWFuO1xufVxuXG4vKiogRnVsbHkgcmVzb2x2ZWQgRGF0YWJyaWNrcyByb3V0ZSBmb3IgYSBtb2RlbCByZXF1ZXN0LiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb2RlbFJvdXRlIHtcbiAgcmVhZG9ubHkgbW9kZWxJZDogc3RyaW5nO1xuICByZWFkb25seSBlbmRwb2ludD86IFNlcnZpbmdFbmRwb2ludFN1bW1hcnk7XG4gIHJlYWRvbmx5IHNvdXJjZTogUmVzb2x2ZWRNb2RlbFNlbGVjdGlvbltcInNvdXJjZVwiXTtcbiAgcmVhZG9ubHkgcHJvdG9jb2w6IE1vZGVsUHJvdG9jb2w7XG4gIHJlYWRvbmx5IGhvc3Q6IHN0cmluZztcbiAgcmVhZG9ubHkgYXBpQmFzZTogc3RyaW5nO1xuICByZWFkb25seSB1cmw6IHN0cmluZztcbiAgcmVhZG9ubHkgaGVhZGVyczogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgc3RyaW5nPj47XG4gIHJlYWRvbmx5IG1ldGFkYXRhOiBNb2RlbE1ldGFkYXRhO1xufVxuXG4vKiogU3RhYmxlIG1vZGVsIGZhY2FkZSBzaGFyZWQgYnkgTm9kZSBhbmQgZ2VuZXJhdGVkIGxhbmd1YWdlIGJpbmRpbmdzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb2RlbENsaWVudCB7XG4gIGxpc3RNb2RlbHMocmVmcmVzaD86IGJvb2xlYW4pOiBQcm9taXNlPFNlcnZpbmdFbmRwb2ludFN1bW1hcnlbXT47XG4gIHNlYXJjaE1vZGVscyhxdWVyeT86IE1vZGVsUXVlcnksIHJlZnJlc2g/OiBib29sZWFuKTogUHJvbWlzZTxSYW5rZWRNb2RlbFtdPjtcbiAgcm91dGUoaW5wdXQ/OiBNb2RlbFJvdXRlSW5wdXQpOiBQcm9taXNlPE1vZGVsUm91dGU+O1xuICBtZXRhZGF0YShtb2RlbDogc3RyaW5nIHwgU2VydmluZ0VuZHBvaW50U3VtbWFyeSk6IE1vZGVsTWV0YWRhdGE7XG4gIHN0YXR1cygpOiBNb2RlbENsaWVudFN0YXR1cztcbn1cblxuaW50ZXJmYWNlIERhdGFicmlja3NNb2RlbENsaWVudCB7XG4gIHJlYWRvbmx5IGF1dGg6IEF1dGhDbGllbnQ7XG4gIGhvc3QoKTogc3RyaW5nO1xuICBwcmluY2lwYWwoKTogc3RyaW5nO1xuICB3b3Jrc3BhY2VJZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHJlcXVlc3QocGF0aDogc3RyaW5nLCBpbml0PzogUmVxdWVzdEluaXQpOiBQcm9taXNlPHVua25vd24+O1xufVxuXG5jbGFzcyBBdXRoZW50aWNhdGVkTW9kZWxDbGllbnQgaW1wbGVtZW50cyBEYXRhYnJpY2tzTW9kZWxDbGllbnQge1xuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSBhdXRoOiBBdXRoQ2xpZW50LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZmV0Y2hlcjogdHlwZW9mIGdsb2JhbFRoaXMuZmV0Y2gsXG4gICkge31cblxuICBob3N0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYXV0aC5ob3N0O1xuICB9XG5cbiAgcHJpbmNpcGFsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYXV0aC5wcmluY2lwYWw7XG4gIH1cblxuICB3b3Jrc3BhY2VJZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmF1dGgud29ya3NwYWNlSWQ7XG4gIH1cblxuICBhc3luYyByZXF1ZXN0KHBhdGg6IHN0cmluZywgaW5pdDogUmVxdWVzdEluaXQgPSB7fSk6IFByb21pc2U8dW5rbm93bj4ge1xuICAgIGNvbnN0IHVybCA9IG5ldyBVUkwocGF0aCwgYCR7dGhpcy5ob3N0KCkucmVwbGFjZSgvXFwvJC8sIFwiXCIpfS9gKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSGVhZGVycyhpbml0LmhlYWRlcnMpO1xuICAgIGZvciAoY29uc3QgW25hbWUsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhhd2FpdCB0aGlzLmF1dGguaGVhZGVycygpKSkge1xuICAgICAgaGVhZGVycy5zZXQobmFtZSwgdmFsdWUpO1xuICAgIH1cbiAgICBpZiAoaW5pdC5ib2R5ICE9PSB1bmRlZmluZWQgJiYgIWhlYWRlcnMuaGFzKFwiY29udGVudC10eXBlXCIpKSB7XG4gICAgICBoZWFkZXJzLnNldChcImNvbnRlbnQtdHlwZVwiLCBcImFwcGxpY2F0aW9uL2pzb25cIik7XG4gICAgfVxuICAgIGxldCByZXNwb25zZSA9IGF3YWl0IHRoaXMuZmV0Y2hlcih1cmwsIHsgLi4uaW5pdCwgaGVhZGVycyB9KTtcbiAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MDEpIHtcbiAgICAgIGZvciAoY29uc3QgW25hbWUsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhhd2FpdCB0aGlzLmF1dGguaGVhZGVycyh7IHJlZnJlc2g6IHRydWUgfSkpKSB7XG4gICAgICAgIGhlYWRlcnMuc2V0KG5hbWUsIHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJlc3BvbnNlID0gYXdhaXQgdGhpcy5mZXRjaGVyKHVybCwgeyAuLi5pbml0LCBoZWFkZXJzIH0pO1xuICAgIH1cbiAgICBjb25zdCB0ZXh0ID0gYXdhaXQgcmVzcG9uc2UudGV4dCgpO1xuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYERhdGFicmlja3MgTW9kZWwgU2VydmluZyBBUEkgJHtwYXRofSByZXR1cm5lZCBIVFRQICR7cmVzcG9uc2Uuc3RhdHVzfTogJHt0ZXh0fWAsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGV4dCA/IEpTT04ucGFyc2UodGV4dCkgOiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuaW50ZXJmYWNlIENhdGFsb2d1ZUVudHJ5IHtcbiAgcmVhZG9ubHkgcHJvbWlzZTogUHJvbWlzZTxyZWFkb25seSBTZXJ2aW5nRW5kcG9pbnRTdW1tYXJ5W10+O1xuICBleHBpcmVzQXQ6IG51bWJlcjtcbn1cblxuY29uc3QgY2F0YWxvZ3VlQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgQ2F0YWxvZ3VlRW50cnk+KCk7XG5cbmNsYXNzIERlZmF1bHRNb2RlbENsaWVudCBpbXBsZW1lbnRzIE1vZGVsQ2xpZW50IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBjbGllbnQ6IERhdGFicmlja3NNb2RlbENsaWVudCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhY2hlVHRsTXM6IG51bWJlcixcbiAgKSB7fVxuXG4gIGFzeW5jIGxpc3RNb2RlbHMocmVmcmVzaCA9IGZhbHNlKTogUHJvbWlzZTxTZXJ2aW5nRW5kcG9pbnRTdW1tYXJ5W10+IHtcbiAgICByZXR1cm4gY2xvbmVFbmRwb2ludHMoYXdhaXQgdGhpcy5jYXRhbG9ndWUocmVmcmVzaCkpO1xuICB9XG5cbiAgYXN5bmMgc2VhcmNoTW9kZWxzKHF1ZXJ5OiBNb2RlbFF1ZXJ5ID0ge30sIHJlZnJlc2ggPSBmYWxzZSk6IFByb21pc2U8UmFua2VkTW9kZWxbXT4ge1xuICAgIHJldHVybiBsb29rdXBNb2RlbHMoYXdhaXQgdGhpcy5jYXRhbG9ndWUocmVmcmVzaCksIHF1ZXJ5KS5tYXAoKHsgZW5kcG9pbnQsIC4uLnJhbmtlZCB9KSA9PiAoe1xuICAgICAgLi4ucmFua2VkLFxuICAgICAgZW5kcG9pbnQ6IGNsb25lRW5kcG9pbnQoZW5kcG9pbnQpLFxuICAgIH0pKTtcbiAgfVxuXG4gIGFzeW5jIHJvdXRlKGlucHV0OiBNb2RlbFJvdXRlSW5wdXQgPSB7fSk6IFByb21pc2U8TW9kZWxSb3V0ZT4ge1xuICAgIGNvbnN0IHsgcmVmcmVzaCA9IGZhbHNlLCBwcm90b2NvbDogcmVxdWVzdGVkUHJvdG9jb2wsIGxvZ2luLCAuLi5zZWxlY3Rpb24gfSA9IGlucHV0O1xuICAgIGNvbnN0IGVmZmVjdGl2ZVNlbGVjdGlvbiA9XG4gICAgICByZXF1ZXN0ZWRQcm90b2NvbCA9PT0gXCJlbWJlZGRpbmdzXCIgJiYgc2VsZWN0aW9uLm1vZGVsQ2xhc3MgPT09IHVuZGVmaW5lZFxuICAgICAgICA/IHsgLi4uc2VsZWN0aW9uLCBtb2RlbENsYXNzOiBNb2RlbENsYXNzLkVtYmVkZGluZyB9XG4gICAgICAgIDogc2VsZWN0aW9uO1xuICAgIGNvbnN0IGNhdGFsb2d1ZSA9IGF3YWl0IHRoaXMuY2F0YWxvZ3VlKHJlZnJlc2gpO1xuICAgIGxldCByZXNvbHZlZCA9IHJlc29sdmVNb2RlbChjYXRhbG9ndWUsIGVmZmVjdGl2ZVNlbGVjdGlvbik7XG4gICAgaWYgKGlzVW5tYXRjaGVkRXhwbGljaXQoY2F0YWxvZ3VlLCBlZmZlY3RpdmVTZWxlY3Rpb24sIHJlc29sdmVkKSkge1xuICAgICAgcmVzb2x2ZWQgPSByZXNvbHZlTW9kZWwoYXdhaXQgdGhpcy5jYXRhbG9ndWUodHJ1ZSksIGVmZmVjdGl2ZVNlbGVjdGlvbik7XG4gICAgfVxuICAgIGNvbnN0IGVuZHBvaW50ID0gKGF3YWl0IHRoaXMuY2F0YWxvZ3VlKGZhbHNlKSkuZmluZChcbiAgICAgIChjYW5kaWRhdGUpID0+IGNhbmRpZGF0ZS5uYW1lID09PSByZXNvbHZlZC5tb2RlbElkLFxuICAgICk7XG4gICAgY29uc3QgcHJvdG9jb2wgPSByZXF1ZXN0ZWRQcm90b2NvbCA/PyBpbmZlclByb3RvY29sKGVuZHBvaW50LCByZXNvbHZlZC5tb2RlbElkKTtcbiAgICBjb25zdCBob3N0ID0gdGhpcy5jbGllbnQuaG9zdCgpO1xuICAgIGNvbnN0IHVybCA9IHJvdXRlVXJsKGhvc3QsIHJlc29sdmVkLm1vZGVsSWQsIHByb3RvY29sKTtcbiAgICBjb25zdCBoZWFkZXJzID0gYXdhaXQgdGhpcy5jbGllbnQuYXV0aC5oZWFkZXJzKHsgbG9naW4gfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1vZGVsSWQ6IHJlc29sdmVkLm1vZGVsSWQsXG4gICAgICAuLi4oZW5kcG9pbnQgPyB7IGVuZHBvaW50OiBjbG9uZUVuZHBvaW50KGVuZHBvaW50KSB9IDoge30pLFxuICAgICAgc291cmNlOiByZXNvbHZlZC5zb3VyY2UsXG4gICAgICBwcm90b2NvbCxcbiAgICAgIGhvc3QsXG4gICAgICBhcGlCYXNlOiBuZXcgVVJMKFwic2VydmluZy1lbmRwb2ludHNcIiwgYCR7aG9zdC5yZXBsYWNlKC9cXC8kLywgXCJcIil9L2ApLnRvU3RyaW5nKCksXG4gICAgICB1cmwsXG4gICAgICBoZWFkZXJzLFxuICAgICAgbWV0YWRhdGE6IG1vZGVsTWV0YWRhdGFGb3IoZW5kcG9pbnQgPz8gcmVzb2x2ZWQubW9kZWxJZCksXG4gICAgfTtcbiAgfVxuXG4gIG1ldGFkYXRhKG1vZGVsOiBzdHJpbmcgfCBTZXJ2aW5nRW5kcG9pbnRTdW1tYXJ5KTogTW9kZWxNZXRhZGF0YSB7XG4gICAgcmV0dXJuIG1vZGVsTWV0YWRhdGFGb3IobW9kZWwpO1xuICB9XG5cbiAgc3RhdHVzKCk6IE1vZGVsQ2xpZW50U3RhdHVzIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uKHRoaXMuY2xpZW50LmF1dGgucHJvZmlsZSA/IHsgcHJvZmlsZTogdGhpcy5jbGllbnQuYXV0aC5wcm9maWxlIH0gOiB7fSksXG4gICAgICBob3N0OiB0aGlzLmNsaWVudC5ob3N0KCksXG4gICAgICBwcmluY2lwYWw6IHRoaXMuY2xpZW50LnByaW5jaXBhbCgpLFxuICAgICAgLi4uKHRoaXMuY2xpZW50LndvcmtzcGFjZUlkKCkgPyB7IHdvcmtzcGFjZUlkOiB0aGlzLmNsaWVudC53b3Jrc3BhY2VJZCgpIH0gOiB7fSksXG4gICAgICBjYWNoZVR0bE1zOiB0aGlzLmNhY2hlVHRsTXMsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY2F0YWxvZ3VlKHJlZnJlc2g6IGJvb2xlYW4pOiBQcm9taXNlPHJlYWRvbmx5IFNlcnZpbmdFbmRwb2ludFN1bW1hcnlbXT4ge1xuICAgIGNvbnN0IGtleSA9IGNhdGFsb2d1ZUtleSh0aGlzLmNsaWVudCk7XG4gICAgaWYgKHJlZnJlc2gpIGNhdGFsb2d1ZUNhY2hlLmRlbGV0ZShrZXkpO1xuICAgIGNvbnN0IGN1cnJlbnQgPSBjYXRhbG9ndWVDYWNoZS5nZXQoa2V5KTtcbiAgICBpZiAoY3VycmVudCAmJiBEYXRlLm5vdygpIDwgY3VycmVudC5leHBpcmVzQXQpIHJldHVybiBjdXJyZW50LnByb21pc2U7XG4gICAgY29uc3QgcHJvbWlzZSA9IHRoaXMuZmV0Y2hDYXRhbG9ndWUoKTtcbiAgICBjb25zdCBlbnRyeTogQ2F0YWxvZ3VlRW50cnkgPSB7IHByb21pc2UsIGV4cGlyZXNBdDogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZIH07XG4gICAgY2F0YWxvZ3VlQ2FjaGUuc2V0KGtleSwgZW50cnkpO1xuICAgIHZvaWQgcHJvbWlzZS50aGVuKFxuICAgICAgKCkgPT4ge1xuICAgICAgICBlbnRyeS5leHBpcmVzQXQgPSBEYXRlLm5vdygpICsgdGhpcy5jYWNoZVR0bE1zO1xuICAgICAgfSxcbiAgICAgICgpID0+IHtcbiAgICAgICAgaWYgKGNhdGFsb2d1ZUNhY2hlLmdldChrZXkpID09PSBlbnRyeSkgY2F0YWxvZ3VlQ2FjaGUuZGVsZXRlKGtleSk7XG4gICAgICB9LFxuICAgICk7XG4gICAgcmV0dXJuIHByb21pc2U7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGZldGNoQ2F0YWxvZ3VlKCk6IFByb21pc2U8cmVhZG9ubHkgU2VydmluZ0VuZHBvaW50U3VtbWFyeVtdPiB7XG4gICAgY29uc3Qgc3RhcnRlZEF0ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuY2xpZW50LnJlcXVlc3QoXCIvYXBpLzIuMC9zZXJ2aW5nLWVuZHBvaW50c1wiKTtcbiAgICBpZiAoIW9iamVjdC5pc1JlY29yZChyZXNwb25zZSkgfHwgIUFycmF5LmlzQXJyYXkocmVzcG9uc2UuZW5kcG9pbnRzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRGF0YWJyaWNrcyBzZXJ2aW5nLWVuZHBvaW50cyByZXNwb25zZSBpcyBtaXNzaW5nIGFuIGVuZHBvaW50cyBhcnJheVwiKTtcbiAgICB9XG4gICAgY29uc3QgZW5kcG9pbnRzID0gYXdhaXQgdGhpcy5tZWFzdXJlRW1iZWRkaW5nRGltZW5zaW9ucyhub3JtYWxpemVFbmRwb2ludHMocmVzcG9uc2UuZW5kcG9pbnRzKSk7XG4gICAgbG9nZ2VyLmRlYnVnKFwibGlzdGVkXCIsIHtcbiAgICAgIGNvdW50OiBlbmRwb2ludHMubGVuZ3RoLFxuICAgICAgaG9zdDogdGhpcy5jbGllbnQuaG9zdCgpLFxuICAgICAgZWxhcHNlZE1zOiBEYXRlLm5vdygpIC0gc3RhcnRlZEF0LFxuICAgIH0pO1xuICAgIHJldHVybiBlbmRwb2ludHM7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIG1lYXN1cmVFbWJlZGRpbmdEaW1lbnNpb25zKFxuICAgIGVuZHBvaW50czogcmVhZG9ubHkgU2VydmluZ0VuZHBvaW50U3VtbWFyeVtdLFxuICApOiBQcm9taXNlPFNlcnZpbmdFbmRwb2ludFN1bW1hcnlbXT4ge1xuICAgIHJldHVybiBQcm9taXNlLmFsbChcbiAgICAgIGVuZHBvaW50cy5tYXAoYXN5bmMgKGVuZHBvaW50KSA9PiB7XG4gICAgICAgIGlmIChlbmRwb2ludC5jbGFzcyAhPT0gTW9kZWxDbGFzcy5FbWJlZGRpbmcgfHwgZW5kcG9pbnQuZGltZW5zaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXR1cm4gZW5kcG9pbnQ7XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuY2xpZW50LnJlcXVlc3QoXG4gICAgICAgICAgICBgL3NlcnZpbmctZW5kcG9pbnRzLyR7ZW5jb2RlVVJJQ29tcG9uZW50KGVuZHBvaW50Lm5hbWUpfS9pbnZvY2F0aW9uc2AsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgaW5wdXQ6IFtcInBpbmdcIl0gfSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3QgZGltZW5zaW9uID0gZW1iZWRkaW5nRGltZW5zaW9uKHJlc3BvbnNlKTtcbiAgICAgICAgICByZXR1cm4gZGltZW5zaW9uID09PSB1bmRlZmluZWQgPyBlbmRwb2ludCA6IHsgLi4uZW5kcG9pbnQsIGRpbWVuc2lvbiB9O1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGxvZ2dlci53YXJuKFwiZW1iZWRkaW5nIGRpbWVuc2lvbiBwcm9iZSBmYWlsZWRcIiwge1xuICAgICAgICAgICAgbW9kZWw6IGVuZHBvaW50Lm5hbWUsXG4gICAgICAgICAgICBlcnJvcixcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gZW5kcG9pbnQ7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZW1iZWRkaW5nRGltZW5zaW9uKHZhbHVlOiB1bmtub3duKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFvYmplY3QuaXNSZWNvcmQodmFsdWUpIHx8ICFBcnJheS5pc0FycmF5KHZhbHVlLmRhdGEpKSByZXR1cm4gdW5kZWZpbmVkO1xuICBjb25zdCBmaXJzdCA9IHZhbHVlLmRhdGFbMF07XG4gIGlmICghb2JqZWN0LmlzUmVjb3JkKGZpcnN0KSB8fCAhQXJyYXkuaXNBcnJheShmaXJzdC5lbWJlZGRpbmcpKSByZXR1cm4gdW5kZWZpbmVkO1xuICByZXR1cm4gZmlyc3QuZW1iZWRkaW5nLmxlbmd0aCA+IDAgPyBmaXJzdC5lbWJlZGRpbmcubGVuZ3RoIDogdW5kZWZpbmVkO1xufVxuXG4vKiogQ3JlYXRlIGFuIGF1dGhlbnRpY2F0aW9uLWF3YXJlIERhdGFicmlja3MgbW9kZWwgY2xpZW50LiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZU1vZGVsQ2xpZW50KG9wdGlvbnM6IE1vZGVsQ2xpZW50T3B0aW9ucyA9IHt9KTogUHJvbWlzZTxNb2RlbENsaWVudD4ge1xuICBjb25zdCBjYWNoZVR0bE1zID0gdmFsaWRhdGVDYWNoZVR0bChvcHRpb25zLmNhY2hlVHRsTXMpO1xuICBpZiAob3B0aW9ucy5oeWRyYXRlTWV0YWRhdGEgPz8gdHJ1ZSkgYXdhaXQgaHlkcmF0ZU1vZGVsTWV0YWRhdGEoKTtcbiAgcmV0dXJuIG5ldyBEZWZhdWx0TW9kZWxDbGllbnQoXG4gICAgbmV3IEF1dGhlbnRpY2F0ZWRNb2RlbENsaWVudChhd2FpdCBjcmVhdGVBdXRoQ2xpZW50KG9wdGlvbnMuYXV0aCksIGdsb2JhbFRoaXMuZmV0Y2gpLFxuICAgIGNhY2hlVHRsTXMsXG4gICk7XG59XG5cbi8qKiBMaXN0IGNvbmZpZ3VyZWQgRGF0YWJyaWNrcyBwcm9maWxlcyBvdXRzaWRlIHRoZSBtb2RlbCBjbGllbnQgZmFjYWRlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxpc3RQcm9maWxlcyhyZWZyZXNoID0gZmFsc2UpOiBEYXRhYnJpY2tzUHJvZmlsZVN1bW1hcnlbXSB7XG4gIHJldHVybiBsaXN0QXV0aFByb2ZpbGVzKHsgcmVmcmVzaCB9KTtcbn1cblxuLyoqIEBpbnRlcm5hbCBDb25zdHJ1Y3QgYSBtb2RlbCBjbGllbnQgYXJvdW5kIGEgdGVzdCBvciBob3N0LW93bmVkIERhdGFicmlja3MgY2xpZW50LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1vZGVsQ2xpZW50V2l0aERhdGFicmlja3NDbGllbnQoXG4gIGNsaWVudDogRGF0YWJyaWNrc01vZGVsQ2xpZW50LFxuICBjYWNoZVR0bE1zID0gREVGQVVMVF9NT0RFTF9DTElFTlRfQ0FDSEVfVFRMX01TLFxuKTogTW9kZWxDbGllbnQge1xuICByZXR1cm4gbmV3IERlZmF1bHRNb2RlbENsaWVudChjbGllbnQsIHZhbGlkYXRlQ2FjaGVUdGwoY2FjaGVUdGxNcykpO1xufVxuXG4vKiogQGludGVybmFsIENyZWF0ZSBhIG1vZGVsIGNsaWVudCB3aXRoIGluamVjdGFibGUgYXV0aCBob3N0IGNhcGFiaWxpdGllcy4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVNb2RlbENsaWVudFdpdGhEZXBlbmRlbmNpZXMoXG4gIG9wdGlvbnM6IE1vZGVsQ2xpZW50T3B0aW9ucyxcbiAgZGVwZW5kZW5jaWVzOiBEYXRhYnJpY2tzQXV0aERlcGVuZGVuY2llcyxcbik6IFByb21pc2U8TW9kZWxDbGllbnQ+IHtcbiAgaWYgKG9wdGlvbnMuaHlkcmF0ZU1ldGFkYXRhID8/IHRydWUpIGF3YWl0IGh5ZHJhdGVNb2RlbE1ldGFkYXRhKCk7XG4gIHJldHVybiBuZXcgRGVmYXVsdE1vZGVsQ2xpZW50KFxuICAgIG5ldyBBdXRoZW50aWNhdGVkTW9kZWxDbGllbnQoXG4gICAgICBhd2FpdCBjcmVhdGVBdXRoQ2xpZW50KG9wdGlvbnMuYXV0aCwgZGVwZW5kZW5jaWVzKSxcbiAgICAgIGRlcGVuZGVuY2llcy5mZXRjaCA/PyBnbG9iYWxUaGlzLmZldGNoLFxuICAgICksXG4gICAgdmFsaWRhdGVDYWNoZVR0bChvcHRpb25zLmNhY2hlVHRsTXMpLFxuICApO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZUNhY2hlVHRsKHZhbHVlID0gREVGQVVMVF9NT0RFTF9DTElFTlRfQ0FDSEVfVFRMX01TKTogbnVtYmVyIHtcbiAgaWYgKCFOdW1iZXIuaXNGaW5pdGUodmFsdWUpIHx8IHZhbHVlIDw9IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJNb2RlbCBjbGllbnQgY2FjaGVUdGxNcyBtdXN0IGJlIGEgcG9zaXRpdmUgZmluaXRlIG51bWJlclwiKTtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5cbmZ1bmN0aW9uIGNhdGFsb2d1ZUtleShjbGllbnQ6IERhdGFicmlja3NNb2RlbENsaWVudCk6IHN0cmluZyB7XG4gIHJldHVybiBbY2xpZW50Lmhvc3QoKSwgY2xpZW50LndvcmtzcGFjZUlkKCkgPz8gXCJcIiwgY2xpZW50LnByaW5jaXBhbCgpXS5qb2luKFwiXFx1MDAwMFwiKTtcbn1cblxuZnVuY3Rpb24gaW5mZXJQcm90b2NvbChcbiAgZW5kcG9pbnQ6IFNlcnZpbmdFbmRwb2ludFN1bW1hcnkgfCB1bmRlZmluZWQsXG4gIG1vZGVsSWQ6IHN0cmluZyxcbik6IE1vZGVsUHJvdG9jb2wge1xuICBpZiAoZW5kcG9pbnQ/LnRhc2sgPT09IFwibGxtL3YxL2VtYmVkZGluZ3NcIikgcmV0dXJuIFwiZW1iZWRkaW5nc1wiO1xuICByZXR1cm4gbW9kZWxTZXJ2aW5nQXBpKG1vZGVsSWQpO1xufVxuXG5mdW5jdGlvbiByb3V0ZVVybChob3N0OiBzdHJpbmcsIG1vZGVsSWQ6IHN0cmluZywgcHJvdG9jb2w6IE1vZGVsUHJvdG9jb2wpOiBzdHJpbmcge1xuICBpZiAocHJvdG9jb2wgPT09IFwicmVzcG9uc2VzXCIpIHJldHVybiByZXNwb25zZXNVcHN0cmVhbVVybChob3N0LCBtb2RlbElkKTtcbiAgaWYgKHByb3RvY29sID09PSBcImNoYXRcIiAmJiBtb2RlbFNlcnZpbmdBcGkobW9kZWxJZCkgPT09IFwicmVzcG9uc2VzXCIpIHtcbiAgICByZXR1cm4gY2hhdENvbXBsZXRpb25zVXJsKGhvc3QpO1xuICB9XG4gIHJldHVybiBpbnZvY2F0aW9uc1VybChob3N0LCBtb2RlbElkKTtcbn1cblxuZnVuY3Rpb24gaXNVbm1hdGNoZWRFeHBsaWNpdChcbiAgY2F0YWxvZ3VlOiByZWFkb25seSBTZXJ2aW5nRW5kcG9pbnRTdW1tYXJ5W10sXG4gIGlucHV0OiBSZXNvbHZlTW9kZWxJbnB1dCxcbiAgcmVzb2x2ZWQ6IFJlc29sdmVkTW9kZWxTZWxlY3Rpb24sXG4pOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICBpbnB1dC5leHBsaWNpdCAhPT0gdW5kZWZpbmVkICYmXG4gICAgaW5wdXQuZnV6enkgIT09IGZhbHNlICYmXG4gICAgcmVzb2x2ZWQubW9kZWxJZCA9PT0gaW5wdXQuZXhwbGljaXQgJiZcbiAgICAhY2F0YWxvZ3VlLnNvbWUoKGVuZHBvaW50KSA9PiBlbmRwb2ludC5uYW1lID09PSBpbnB1dC5leHBsaWNpdClcbiAgKTtcbn1cblxuZnVuY3Rpb24gY2xvbmVFbmRwb2ludHMoZW5kcG9pbnRzOiByZWFkb25seSBTZXJ2aW5nRW5kcG9pbnRTdW1tYXJ5W10pOiBTZXJ2aW5nRW5kcG9pbnRTdW1tYXJ5W10ge1xuICByZXR1cm4gZW5kcG9pbnRzLm1hcChjbG9uZUVuZHBvaW50KTtcbn1cblxuZnVuY3Rpb24gY2xvbmVFbmRwb2ludChlbmRwb2ludDogU2VydmluZ0VuZHBvaW50U3VtbWFyeSk6IFNlcnZpbmdFbmRwb2ludFN1bW1hcnkge1xuICByZXR1cm4ge1xuICAgIC4uLmVuZHBvaW50LFxuICAgIC4uLihlbmRwb2ludC5wcm9maWxlID8geyBwcm9maWxlOiB7IC4uLmVuZHBvaW50LnByb2ZpbGUgfSB9IDoge30pLFxuICAgIC4uLihlbmRwb2ludC5zZXJ2aWNlTmFtZXMgPyB7IHNlcnZpY2VOYW1lczogeyAuLi5lbmRwb2ludC5zZXJ2aWNlTmFtZXMgfSB9IDoge30pLFxuICAgIC4uLihlbmRwb2ludC5yZWFzb25pbmdFZmZvcnRzID8geyByZWFzb25pbmdFZmZvcnRzOiBbLi4uZW5kcG9pbnQucmVhc29uaW5nRWZmb3J0c10gfSA6IHt9KSxcbiAgICAuLi4oZW5kcG9pbnQuc3RhdHVzID8geyBzdGF0dXM6IHsgLi4uZW5kcG9pbnQuc3RhdHVzIH0gfSA6IHt9KSxcbiAgfTtcbn1cbiJdfQ==
244
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGVsLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7O0dBU0c7QUFDSCxPQUFPLEVBQ0wsZ0JBQWdCLEdBR2pCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLFlBQVksSUFBSSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTNFLE9BQU8sS0FBSyxVQUFVLE1BQU0sb0NBQW9DLENBQUM7QUFDakUsT0FBTyxLQUFLLEdBQUcsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLEtBQUssTUFBTSxNQUFNLCtCQUErQixDQUFDO0FBQ3hELE9BQU8sRUFDTCxVQUFVLEdBT1gsTUFBTSxtQ0FBbUMsQ0FBQztBQUUzQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTlDLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7QUFFMUMsd0RBQXdEO0FBQ3hELE1BQU0sQ0FBQyxNQUFNLGlDQUFpQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBc0UvRCxNQUFNLHdCQUF3QjtJQUVqQjtJQUNRO0lBRm5CLFlBQ1csSUFBZ0IsRUFDUixPQUFnQztRQUR4QyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ1IsWUFBTyxHQUFQLE9BQU8sQ0FBeUI7SUFDaEQsQ0FBQztJQUVKLElBQUk7UUFDRixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUM3QixDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDL0IsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBWSxFQUFFLE9BQW9CLEVBQUU7UUFDaEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzNFLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3RFLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNCLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1lBQzVELE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUNELElBQUksUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzdELElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUM1QixLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUN2RixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMzQixDQUFDO1lBQ0QsUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzNELENBQUM7UUFDRCxNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQ2IsZ0NBQWdDLElBQUksa0JBQWtCLFFBQVEsQ0FBQyxNQUFNLEtBQUssSUFBSSxFQUFFLENBQ2pGLENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUM3QyxDQUFDO0NBQ0Y7QUFPRCxNQUFNLGNBQWMsR0FBRyxJQUFJLEdBQUcsRUFBMEIsQ0FBQztBQUV6RCxNQUFNLGtCQUFrQjtJQUVIO0lBQ0E7SUFGbkIsWUFDbUIsTUFBNkIsRUFDN0IsVUFBa0I7UUFEbEIsV0FBTSxHQUFOLE1BQU0sQ0FBdUI7UUFDN0IsZUFBVSxHQUFWLFVBQVUsQ0FBUTtJQUNsQyxDQUFDO0lBRUosS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEdBQUcsS0FBSztRQUM5QixPQUFPLGNBQWMsQ0FBQyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsS0FBSyxDQUFDLFlBQVksQ0FBQyxRQUFvQixFQUFFLEVBQUUsT0FBTyxHQUFHLEtBQUs7UUFDeEQsT0FBTyxZQUFZLENBQUMsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDMUYsR0FBRyxNQUFNO1lBQ1QsUUFBUSxFQUFFLGFBQWEsQ0FBQyxRQUFRLENBQUM7U0FDbEMsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUF5QixFQUFFO1FBQ3JDLE1BQU0sRUFBRSxPQUFPLEdBQUcsS0FBSyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsR0FBRyxTQUFTLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDcEYsTUFBTSxrQkFBa0IsR0FDdEIsaUJBQWlCLEtBQUssWUFBWSxJQUFJLFNBQVMsQ0FBQyxVQUFVLEtBQUssU0FBUztZQUN0RSxDQUFDLENBQUMsRUFBRSxHQUFHLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLFNBQVMsRUFBRTtZQUNwRCxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2hCLE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoRCxJQUFJLFFBQVEsR0FBRyxZQUFZLENBQUMsU0FBUyxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFDM0QsSUFBSSxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUNqRSxRQUFRLEdBQUcsWUFBWSxDQUFDLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBQzFFLENBQUM7UUFDRCxNQUFNLFFBQVEsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDakQsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLE9BQU8sQ0FDbkQsQ0FBQztRQUNGLE1BQU0sUUFBUSxHQUFHLGlCQUFpQixJQUFJLGFBQWEsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hGLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDaEMsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMxRCxPQUFPO1lBQ0wsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPO1lBQ3pCLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLGFBQWEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDMUQsTUFBTSxFQUFFLFFBQVEsQ0FBQyxNQUFNO1lBQ3ZCLFFBQVE7WUFDUixJQUFJO1lBQ0osT0FBTyxFQUFFLElBQUksR0FBRyxDQUFDLG1CQUFtQixFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRTtZQUMvRSxHQUFHO1lBQ0gsT0FBTztZQUNQLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQztTQUN6RCxDQUFDO0lBQ0osQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFzQztRQUM3QyxPQUFPLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxNQUFNO1FBQ0osT0FBTztZQUNMLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDMUUsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFO1lBQ3hCLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRTtZQUNsQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDaEYsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1NBQzVCLENBQUM7SUFDSixDQUFDO0lBRU8sU0FBUyxDQUFDLE9BQWdCO1FBQ2hDLE1BQU0sR0FBRyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEMsSUFBSSxPQUFPO1lBQUUsY0FBYyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QyxNQUFNLE9BQU8sR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hDLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsU0FBUztZQUFFLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUN0RSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEMsTUFBTSxLQUFLLEdBQW1CLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUMvRSxjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMvQixLQUFLLE9BQU8sQ0FBQyxJQUFJLENBQ2YsR0FBRyxFQUFFO1lBQ0gsS0FBSyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUNqRCxDQUFDLEVBQ0QsR0FBRyxFQUFFO1lBQ0gsSUFBSSxjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEtBQUs7Z0JBQUUsY0FBYyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwRSxDQUFDLENBQ0YsQ0FBQztRQUNGLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFTyxLQUFLLENBQUMsY0FBYztRQUMxQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDN0IsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUNyRSxNQUFNLElBQUksS0FBSyxDQUFDLHFFQUFxRSxDQUFDLENBQUM7UUFDekYsQ0FBQztRQUNELE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLDBCQUEwQixDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ2hHLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQ3JCLEtBQUssRUFBRSxTQUFTLENBQUMsTUFBTTtZQUN2QixJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUU7WUFDeEIsU0FBUyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTO1NBQ2xDLENBQUMsQ0FBQztRQUNILE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFTyxLQUFLLENBQUMsMEJBQTBCLENBQ3RDLFNBQTRDO1FBRTVDLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FDaEIsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUU7WUFDL0IsSUFBSSxRQUFRLENBQUMsS0FBSyxLQUFLLFVBQVUsQ0FBQyxTQUFTLElBQUksUUFBUSxDQUFDLFNBQVMsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDaEYsT0FBTyxRQUFRLENBQUM7WUFDbEIsQ0FBQztZQUNELElBQUksQ0FBQztnQkFDSCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUN4QyxzQkFBc0Isa0JBQWtCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQ3JFO29CQUNFLE1BQU0sRUFBRSxNQUFNO29CQUNkLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztpQkFDMUMsQ0FDRixDQUFDO2dCQUNGLE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUMvQyxPQUFPLFNBQVMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLFFBQVEsRUFBRSxTQUFTLEVBQUUsQ0FBQztZQUN6RSxDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixNQUFNLENBQUMsSUFBSSxDQUFDLGtDQUFrQyxFQUFFO29CQUM5QyxLQUFLLEVBQUUsUUFBUSxDQUFDLElBQUk7b0JBQ3BCLEtBQUssRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztpQkFDakMsQ0FBQyxDQUFDO2dCQUNILE9BQU8sUUFBUSxDQUFDO1lBQ2xCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBRUQsU0FBUyxrQkFBa0IsQ0FBQyxLQUFjO0lBQ3hDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDNUUsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQ2pGLE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ3pFLENBQUM7QUFFRCw4REFBOEQ7QUFDOUQsTUFBTSxDQUFDLEtBQUssVUFBVSxpQkFBaUIsQ0FBQyxVQUE4QixFQUFFO0lBQ3RFLE1BQU0sVUFBVSxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN4RCxJQUFJLE9BQU8sQ0FBQyxlQUFlLElBQUksSUFBSTtRQUFFLE1BQU0sb0JBQW9CLEVBQUUsQ0FBQztJQUNsRSxPQUFPLElBQUksa0JBQWtCLENBQzNCLElBQUksd0JBQXdCLENBQUMsTUFBTSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUNwRixVQUFVLENBQ1gsQ0FBQztBQUNKLENBQUM7QUFFRCwyRUFBMkU7QUFDM0UsTUFBTSxVQUFVLFlBQVksQ0FBQyxPQUFPLEdBQUcsS0FBSztJQUMxQyxPQUFPLGdCQUFnQixDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztBQUN2QyxDQUFDO0FBRUQsd0ZBQXdGO0FBQ3hGLE1BQU0sVUFBVSxxQ0FBcUMsQ0FDbkQsTUFBNkIsRUFDN0IsVUFBVSxHQUFHLGlDQUFpQztJQUU5QyxPQUFPLElBQUksa0JBQWtCLENBQUMsTUFBTSxFQUFFLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDdEUsQ0FBQztBQUVELDhFQUE4RTtBQUM5RSxNQUFNLENBQUMsS0FBSyxVQUFVLGlDQUFpQyxDQUNyRCxPQUEyQixFQUMzQixZQUF3QztJQUV4QyxJQUFJLE9BQU8sQ0FBQyxlQUFlLElBQUksSUFBSTtRQUFFLE1BQU0sb0JBQW9CLEVBQUUsQ0FBQztJQUNsRSxPQUFPLElBQUksa0JBQWtCLENBQzNCLElBQUksd0JBQXdCLENBQzFCLE1BQU0sZ0JBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsRUFDbEQsWUFBWSxDQUFDLEtBQUssSUFBSSxVQUFVLENBQUMsS0FBSyxDQUN2QyxFQUNELGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FDckMsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUFDLEtBQUssR0FBRyxpQ0FBaUM7SUFDakUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQzFDLE1BQU0sSUFBSSxLQUFLLENBQUMsMERBQTBELENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsTUFBNkI7SUFDakQsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxNQUFNLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxFQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN4RixDQUFDO0FBRUQsU0FBUyxhQUFhLENBQ3BCLFFBQTRDLEVBQzVDLE9BQWU7SUFFZixJQUFJLFFBQVEsRUFBRSxJQUFJLEtBQUssbUJBQW1CO1FBQUUsT0FBTyxZQUFZLENBQUM7SUFDaEUsT0FBTyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDbEMsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFDLElBQVksRUFBRSxPQUFlLEVBQUUsUUFBdUI7SUFDdEUsSUFBSSxRQUFRLEtBQUssV0FBVztRQUFFLE9BQU8sb0JBQW9CLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pFLElBQUksUUFBUSxLQUFLLE1BQU0sSUFBSSxlQUFlLENBQUMsT0FBTyxDQUFDLEtBQUssV0FBVyxFQUFFLENBQUM7UUFDcEUsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBQ0QsT0FBTyxjQUFjLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3ZDLENBQUM7QUFFRCxTQUFTLG1CQUFtQixDQUMxQixTQUE0QyxFQUM1QyxLQUF3QixFQUN4QixRQUFnQztJQUVoQyxPQUFPLENBQ0wsS0FBSyxDQUFDLFFBQVEsS0FBSyxTQUFTO1FBQzVCLEtBQUssQ0FBQyxLQUFLLEtBQUssS0FBSztRQUNyQixRQUFRLENBQUMsT0FBTyxLQUFLLEtBQUssQ0FBQyxRQUFRO1FBQ25DLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQ2hFLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUMsU0FBNEM7SUFDbEUsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQ3RDLENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FBQyxRQUFnQztJQUNyRCxPQUFPO1FBQ0wsR0FBRyxRQUFRO1FBQ1gsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2pFLEdBQUcsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksRUFBRSxFQUFFLEdBQUcsUUFBUSxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNoRixHQUFHLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDMUYsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0tBQy9ELENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBdXRoZW50aWNhdGlvbi1hd2FyZSBEYXRhYnJpY2tzIE1vZGVsIFNlcnZpbmcgY2xpZW50LlxuICpcbiAqIFRoaXMgaXMgdGhlIHBvcnRhYmxlIGVudHJ5IHBvaW50IHVzZWQgYnkgZ2VuZXJhdGVkIFB5dGhvbiBiaW5kaW5ncy4gSXQga2VlcHNcbiAqIGF1dGhlbnRpY2F0aW9uLCBlbmRwb2ludCBkaXNjb3ZlcnksIGNhY2hpbmcsIG5vcm1hbGl6YXRpb24sIHJhbmtpbmcsIHJvdXRlXG4gKiBzZWxlY3Rpb24sIHJvdXRlIGNvbnN0cnVjdGlvbiwgYW5kIHB1Ymxpc2hlZCBtZXRhZGF0YSBpbiBOb2RlIHdoaWxlIGV4cG9zaW5nXG4gKiBvbmUgc21hbGwgY2xpZW50LlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuaW1wb3J0IHtcbiAgY3JlYXRlQXV0aENsaWVudCxcbiAgdHlwZSBBdXRoQ2xpZW50LFxuICB0eXBlIERhdGFicmlja3NBdXRoRGVwZW5kZW5jaWVzLFxufSBmcm9tIFwiQGRieC10b29scy9hdXRoL2NsaWVudFwiO1xuaW1wb3J0IHsgbGlzdFByb2ZpbGVzIGFzIGxpc3RBdXRoUHJvZmlsZXMgfSBmcm9tIFwiQGRieC10b29scy9hdXRoL3Byb2ZpbGVcIjtcbmltcG9ydCB0eXBlIHsgRGF0YWJyaWNrc1Byb2ZpbGVTdW1tYXJ5IH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWF1dGhcIjtcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmUvZXJyb3ItdXRpbHNcIjtcbmltcG9ydCAqIGFzIGxvZyBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZS9sb2dcIjtcbmltcG9ydCAqIGFzIG9iamVjdCBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZS9vYmplY3RcIjtcbmltcG9ydCB7XG4gIE1vZGVsQ2xhc3MsXG4gIHR5cGUgTW9kZWxNZXRhZGF0YSxcbiAgdHlwZSBNb2RlbFF1ZXJ5LFxuICB0eXBlIFJhbmtlZE1vZGVsLFxuICB0eXBlIFJlc29sdmVkTW9kZWxTZWxlY3Rpb24sXG4gIHR5cGUgUmVzb2x2ZU1vZGVsSW5wdXQsXG4gIHR5cGUgU2VydmluZ0VuZHBvaW50U3VtbWFyeSxcbn0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLW1vZGVsL2NvbnRyYWN0c1wiO1xuXG5pbXBvcnQgeyBub3JtYWxpemVFbmRwb2ludHMgfSBmcm9tIFwiLi9fcmFua2luZy50c1wiO1xuaW1wb3J0IHsgbG9va3VwTW9kZWxzLCByZXNvbHZlTW9kZWwgfSBmcm9tIFwiLi9fc2VsZWN0aW9uLnRzXCI7XG5pbXBvcnQgeyBjaGF0Q29tcGxldGlvbnNVcmwsIGludm9jYXRpb25zVXJsLCByZXNwb25zZXNVcHN0cmVhbVVybCB9IGZyb20gXCIuL2ludm9rZS50c1wiO1xuaW1wb3J0IHsgaHlkcmF0ZU1vZGVsTWV0YWRhdGEsIG1vZGVsTWV0YWRhdGFGb3IgfSBmcm9tIFwiLi9tZXRhZGF0YS50c1wiO1xuaW1wb3J0IHsgbW9kZWxTZXJ2aW5nQXBpIH0gZnJvbSBcIi4vcG9saWN5LnRzXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJtb2RlbC9jbGllbnRcIik7XG5cbi8qKiBEZWZhdWx0IGxpZmV0aW1lIGZvciBvbmUgbGl2ZSBlbmRwb2ludCBjYXRhbG9ndWUuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9NT0RFTF9DTElFTlRfQ0FDSEVfVFRMX01TID0gNSAqIDYwICogMTAwMDtcblxuLyoqIEF1dGhlbnRpY2F0aW9uIG9wdGlvbnMgZXhwb3NlZCBieSB0aGUgcG9ydGFibGUgbW9kZWwgY2xpZW50LiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb2RlbEF1dGhPcHRpb25zIHtcbiAgLyoqIERhdGFicmlja3MgcHJvZmlsZSBuYW1lLiAqL1xuICBwcm9maWxlPzogc3RyaW5nO1xufVxuXG4vKiogQ29uc3RydWN0aW9uIG9wdGlvbnMgZm9yIHtAbGluayBjcmVhdGVNb2RlbENsaWVudH0uICovXG5leHBvcnQgaW50ZXJmYWNlIE1vZGVsQ2xpZW50T3B0aW9ucyB7XG4gIC8qKiBEYXRhYnJpY2tzIGF1dGhlbnRpY2F0aW9uIGFuZCBwcm9maWxlIHNlbGVjdGlvbiBvcHRpb25zLiAqL1xuICBhdXRoPzogTW9kZWxBdXRoT3B0aW9ucztcbiAgLyoqIEluLW1lbW9yeSBlbmRwb2ludCBjYXRhbG9ndWUgVFRMIGluIG1pbGxpc2Vjb25kcy4gKi9cbiAgY2FjaGVUdGxNcz86IG51bWJlcjtcbiAgLyoqIEh5ZHJhdGUgTm9kZS1vbmx5IG1ldGFkYXRhIGNhY2hlcyBiZWZvcmUgY29uc3RydWN0aW5nIHRoZSBjbGllbnQuICovXG4gIGh5ZHJhdGVNZXRhZGF0YT86IGJvb2xlYW47XG59XG5cbi8qKiBTZWNyZXQtZnJlZSBydW50aW1lIGlkZW50aXR5IGFuZCBjYWNoZSBjb25maWd1cmF0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb2RlbENsaWVudFN0YXR1cyB7XG4gIHJlYWRvbmx5IHByb2ZpbGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGhvc3Q6IHN0cmluZztcbiAgcmVhZG9ubHkgcHJpbmNpcGFsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHdvcmtzcGFjZUlkPzogc3RyaW5nO1xuICByZWFkb25seSBjYWNoZVR0bE1zOiBudW1iZXI7XG59XG5cbi8qKiBTZXJ2aW5nIHByb3RvY29sIHNlbGVjdGVkIGZvciBvbmUgcmVzb2x2ZWQgbW9kZWwuICovXG5leHBvcnQgdHlwZSBNb2RlbFByb3RvY29sID0gXCJjaGF0XCIgfCBcInJlc3BvbnNlc1wiIHwgXCJlbWJlZGRpbmdzXCI7XG5cbi8qKiBNb2RlbCBzZWxlY3Rpb24gcGx1cyByb3V0ZSBjb250cm9scy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW9kZWxSb3V0ZUlucHV0IGV4dGVuZHMgUmVzb2x2ZU1vZGVsSW5wdXQge1xuICAvKiogRm9yY2UgYSBsaXZlIGVuZHBvaW50IGNhdGFsb2d1ZSByZWZyZXNoIGJlZm9yZSBzZWxlY3Rpb24uICovXG4gIHJlZnJlc2g/OiBib29sZWFuO1xuICAvKiogUmVxdWVzdGVkIHVwc3RyZWFtIHByb3RvY29sLiBEZWZhdWx0cyBmcm9tIGVuZHBvaW50IHRhc2sgYW5kIG1vZGVsIHBvbGljeS4gKi9cbiAgcHJvdG9jb2w/OiBNb2RlbFByb3RvY29sO1xuICAvKiogV2hldGhlciBhdXRoZW50aWNhdGlvbiBtYXkgcnVuIGFuIGludGVyYWN0aXZlIGxvZ2luLiAqL1xuICBsb2dpbj86IGJvb2xlYW47XG59XG5cbi8qKiBGdWxseSByZXNvbHZlZCBEYXRhYnJpY2tzIHJvdXRlIGZvciBhIG1vZGVsIHJlcXVlc3QuICovXG5leHBvcnQgaW50ZXJmYWNlIE1vZGVsUm91dGUge1xuICByZWFkb25seSBtb2RlbElkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGVuZHBvaW50PzogU2VydmluZ0VuZHBvaW50U3VtbWFyeTtcbiAgcmVhZG9ubHkgc291cmNlOiBSZXNvbHZlZE1vZGVsU2VsZWN0aW9uW1wic291cmNlXCJdO1xuICByZWFkb25seSBwcm90b2NvbDogTW9kZWxQcm90b2NvbDtcbiAgcmVhZG9ubHkgaG9zdDogc3RyaW5nO1xuICByZWFkb25seSBhcGlCYXNlOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHVybDogc3RyaW5nO1xuICByZWFkb25seSBoZWFkZXJzOiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PjtcbiAgcmVhZG9ubHkgbWV0YWRhdGE6IE1vZGVsTWV0YWRhdGE7XG59XG5cbi8qKiBTdGFibGUgbW9kZWwgZmFjYWRlIHNoYXJlZCBieSBOb2RlIGFuZCBnZW5lcmF0ZWQgbGFuZ3VhZ2UgYmluZGluZ3MuICovXG5leHBvcnQgaW50ZXJmYWNlIE1vZGVsQ2xpZW50IHtcbiAgbGlzdE1vZGVscyhyZWZyZXNoPzogYm9vbGVhbik6IFByb21pc2U8U2VydmluZ0VuZHBvaW50U3VtbWFyeVtdPjtcbiAgc2VhcmNoTW9kZWxzKHF1ZXJ5PzogTW9kZWxRdWVyeSwgcmVmcmVzaD86IGJvb2xlYW4pOiBQcm9taXNlPFJhbmtlZE1vZGVsW10+O1xuICByb3V0ZShpbnB1dD86IE1vZGVsUm91dGVJbnB1dCk6IFByb21pc2U8TW9kZWxSb3V0ZT47XG4gIG1ldGFkYXRhKG1vZGVsOiBzdHJpbmcgfCBTZXJ2aW5nRW5kcG9pbnRTdW1tYXJ5KTogTW9kZWxNZXRhZGF0YTtcbiAgc3RhdHVzKCk6IE1vZGVsQ2xpZW50U3RhdHVzO1xufVxuXG5pbnRlcmZhY2UgRGF0YWJyaWNrc01vZGVsQ2xpZW50IHtcbiAgcmVhZG9ubHkgYXV0aDogQXV0aENsaWVudDtcbiAgaG9zdCgpOiBzdHJpbmc7XG4gIHByaW5jaXBhbCgpOiBzdHJpbmc7XG4gIHdvcmtzcGFjZUlkKCk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcmVxdWVzdChwYXRoOiBzdHJpbmcsIGluaXQ/OiBSZXF1ZXN0SW5pdCk6IFByb21pc2U8dW5rbm93bj47XG59XG5cbmNsYXNzIEF1dGhlbnRpY2F0ZWRNb2RlbENsaWVudCBpbXBsZW1lbnRzIERhdGFicmlja3NNb2RlbENsaWVudCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHJlYWRvbmx5IGF1dGg6IEF1dGhDbGllbnQsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmZXRjaGVyOiB0eXBlb2YgZ2xvYmFsVGhpcy5mZXRjaCxcbiAgKSB7fVxuXG4gIGhvc3QoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hdXRoLmhvc3Q7XG4gIH1cblxuICBwcmluY2lwYWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hdXRoLnByaW5jaXBhbDtcbiAgfVxuXG4gIHdvcmtzcGFjZUlkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuYXV0aC53b3Jrc3BhY2VJZDtcbiAgfVxuXG4gIGFzeW5jIHJlcXVlc3QocGF0aDogc3RyaW5nLCBpbml0OiBSZXF1ZXN0SW5pdCA9IHt9KTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgY29uc3QgdXJsID0gbmV3IFVSTChwYXRoLCBgJHt0aGlzLmhvc3QoKS5yZXBsYWNlKC9cXC8kLywgXCJcIil9L2ApLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIZWFkZXJzKGluaXQuaGVhZGVycyk7XG4gICAgZm9yIChjb25zdCBbbmFtZSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGF3YWl0IHRoaXMuYXV0aC5oZWFkZXJzKCkpKSB7XG4gICAgICBoZWFkZXJzLnNldChuYW1lLCB2YWx1ZSk7XG4gICAgfVxuICAgIGlmIChpbml0LmJvZHkgIT09IHVuZGVmaW5lZCAmJiAhaGVhZGVycy5oYXMoXCJjb250ZW50LXR5cGVcIikpIHtcbiAgICAgIGhlYWRlcnMuc2V0KFwiY29udGVudC10eXBlXCIsIFwiYXBwbGljYXRpb24vanNvblwiKTtcbiAgICB9XG4gICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5mZXRjaGVyKHVybCwgeyAuLi5pbml0LCBoZWFkZXJzIH0pO1xuICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwMSkge1xuICAgICAgZm9yIChjb25zdCBbbmFtZSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGF3YWl0IHRoaXMuYXV0aC5oZWFkZXJzKHsgcmVmcmVzaDogdHJ1ZSB9KSkpIHtcbiAgICAgICAgaGVhZGVycy5zZXQobmFtZSwgdmFsdWUpO1xuICAgICAgfVxuICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmZldGNoZXIodXJsLCB7IC4uLmluaXQsIGhlYWRlcnMgfSk7XG4gICAgfVxuICAgIGNvbnN0IHRleHQgPSBhd2FpdCByZXNwb25zZS50ZXh0KCk7XG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgRGF0YWJyaWNrcyBNb2RlbCBTZXJ2aW5nIEFQSSAke3BhdGh9IHJldHVybmVkIEhUVFAgJHtyZXNwb25zZS5zdGF0dXN9OiAke3RleHR9YCxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0ZXh0ID8gSlNPTi5wYXJzZSh0ZXh0KSA6IHVuZGVmaW5lZDtcbiAgfVxufVxuXG5pbnRlcmZhY2UgQ2F0YWxvZ3VlRW50cnkge1xuICByZWFkb25seSBwcm9taXNlOiBQcm9taXNlPHJlYWRvbmx5IFNlcnZpbmdFbmRwb2ludFN1bW1hcnlbXT47XG4gIGV4cGlyZXNBdDogbnVtYmVyO1xufVxuXG5jb25zdCBjYXRhbG9ndWVDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBDYXRhbG9ndWVFbnRyeT4oKTtcblxuY2xhc3MgRGVmYXVsdE1vZGVsQ2xpZW50IGltcGxlbWVudHMgTW9kZWxDbGllbnQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNsaWVudDogRGF0YWJyaWNrc01vZGVsQ2xpZW50LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FjaGVUdGxNczogbnVtYmVyLFxuICApIHt9XG5cbiAgYXN5bmMgbGlzdE1vZGVscyhyZWZyZXNoID0gZmFsc2UpOiBQcm9taXNlPFNlcnZpbmdFbmRwb2ludFN1bW1hcnlbXT4ge1xuICAgIHJldHVybiBjbG9uZUVuZHBvaW50cyhhd2FpdCB0aGlzLmNhdGFsb2d1ZShyZWZyZXNoKSk7XG4gIH1cblxuICBhc3luYyBzZWFyY2hNb2RlbHMocXVlcnk6IE1vZGVsUXVlcnkgPSB7fSwgcmVmcmVzaCA9IGZhbHNlKTogUHJvbWlzZTxSYW5rZWRNb2RlbFtdPiB7XG4gICAgcmV0dXJuIGxvb2t1cE1vZGVscyhhd2FpdCB0aGlzLmNhdGFsb2d1ZShyZWZyZXNoKSwgcXVlcnkpLm1hcCgoeyBlbmRwb2ludCwgLi4ucmFua2VkIH0pID0+ICh7XG4gICAgICAuLi5yYW5rZWQsXG4gICAgICBlbmRwb2ludDogY2xvbmVFbmRwb2ludChlbmRwb2ludCksXG4gICAgfSkpO1xuICB9XG5cbiAgYXN5bmMgcm91dGUoaW5wdXQ6IE1vZGVsUm91dGVJbnB1dCA9IHt9KTogUHJvbWlzZTxNb2RlbFJvdXRlPiB7XG4gICAgY29uc3QgeyByZWZyZXNoID0gZmFsc2UsIHByb3RvY29sOiByZXF1ZXN0ZWRQcm90b2NvbCwgbG9naW4sIC4uLnNlbGVjdGlvbiB9ID0gaW5wdXQ7XG4gICAgY29uc3QgZWZmZWN0aXZlU2VsZWN0aW9uID1cbiAgICAgIHJlcXVlc3RlZFByb3RvY29sID09PSBcImVtYmVkZGluZ3NcIiAmJiBzZWxlY3Rpb24ubW9kZWxDbGFzcyA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8geyAuLi5zZWxlY3Rpb24sIG1vZGVsQ2xhc3M6IE1vZGVsQ2xhc3MuRW1iZWRkaW5nIH1cbiAgICAgICAgOiBzZWxlY3Rpb247XG4gICAgY29uc3QgY2F0YWxvZ3VlID0gYXdhaXQgdGhpcy5jYXRhbG9ndWUocmVmcmVzaCk7XG4gICAgbGV0IHJlc29sdmVkID0gcmVzb2x2ZU1vZGVsKGNhdGFsb2d1ZSwgZWZmZWN0aXZlU2VsZWN0aW9uKTtcbiAgICBpZiAoaXNVbm1hdGNoZWRFeHBsaWNpdChjYXRhbG9ndWUsIGVmZmVjdGl2ZVNlbGVjdGlvbiwgcmVzb2x2ZWQpKSB7XG4gICAgICByZXNvbHZlZCA9IHJlc29sdmVNb2RlbChhd2FpdCB0aGlzLmNhdGFsb2d1ZSh0cnVlKSwgZWZmZWN0aXZlU2VsZWN0aW9uKTtcbiAgICB9XG4gICAgY29uc3QgZW5kcG9pbnQgPSAoYXdhaXQgdGhpcy5jYXRhbG9ndWUoZmFsc2UpKS5maW5kKFxuICAgICAgKGNhbmRpZGF0ZSkgPT4gY2FuZGlkYXRlLm5hbWUgPT09IHJlc29sdmVkLm1vZGVsSWQsXG4gICAgKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHJlcXVlc3RlZFByb3RvY29sID8/IGluZmVyUHJvdG9jb2woZW5kcG9pbnQsIHJlc29sdmVkLm1vZGVsSWQpO1xuICAgIGNvbnN0IGhvc3QgPSB0aGlzLmNsaWVudC5ob3N0KCk7XG4gICAgY29uc3QgdXJsID0gcm91dGVVcmwoaG9zdCwgcmVzb2x2ZWQubW9kZWxJZCwgcHJvdG9jb2wpO1xuICAgIGNvbnN0IGhlYWRlcnMgPSBhd2FpdCB0aGlzLmNsaWVudC5hdXRoLmhlYWRlcnMoeyBsb2dpbiB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgbW9kZWxJZDogcmVzb2x2ZWQubW9kZWxJZCxcbiAgICAgIC4uLihlbmRwb2ludCA/IHsgZW5kcG9pbnQ6IGNsb25lRW5kcG9pbnQoZW5kcG9pbnQpIH0gOiB7fSksXG4gICAgICBzb3VyY2U6IHJlc29sdmVkLnNvdXJjZSxcbiAgICAgIHByb3RvY29sLFxuICAgICAgaG9zdCxcbiAgICAgIGFwaUJhc2U6IG5ldyBVUkwoXCJzZXJ2aW5nLWVuZHBvaW50c1wiLCBgJHtob3N0LnJlcGxhY2UoL1xcLyQvLCBcIlwiKX0vYCkudG9TdHJpbmcoKSxcbiAgICAgIHVybCxcbiAgICAgIGhlYWRlcnMsXG4gICAgICBtZXRhZGF0YTogbW9kZWxNZXRhZGF0YUZvcihlbmRwb2ludCA/PyByZXNvbHZlZC5tb2RlbElkKSxcbiAgICB9O1xuICB9XG5cbiAgbWV0YWRhdGEobW9kZWw6IHN0cmluZyB8IFNlcnZpbmdFbmRwb2ludFN1bW1hcnkpOiBNb2RlbE1ldGFkYXRhIHtcbiAgICByZXR1cm4gbW9kZWxNZXRhZGF0YUZvcihtb2RlbCk7XG4gIH1cblxuICBzdGF0dXMoKTogTW9kZWxDbGllbnRTdGF0dXMge1xuICAgIHJldHVybiB7XG4gICAgICAuLi4odGhpcy5jbGllbnQuYXV0aC5wcm9maWxlID8geyBwcm9maWxlOiB0aGlzLmNsaWVudC5hdXRoLnByb2ZpbGUgfSA6IHt9KSxcbiAgICAgIGhvc3Q6IHRoaXMuY2xpZW50Lmhvc3QoKSxcbiAgICAgIHByaW5jaXBhbDogdGhpcy5jbGllbnQucHJpbmNpcGFsKCksXG4gICAgICAuLi4odGhpcy5jbGllbnQud29ya3NwYWNlSWQoKSA/IHsgd29ya3NwYWNlSWQ6IHRoaXMuY2xpZW50LndvcmtzcGFjZUlkKCkgfSA6IHt9KSxcbiAgICAgIGNhY2hlVHRsTXM6IHRoaXMuY2FjaGVUdGxNcyxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjYXRhbG9ndWUocmVmcmVzaDogYm9vbGVhbik6IFByb21pc2U8cmVhZG9ubHkgU2VydmluZ0VuZHBvaW50U3VtbWFyeVtdPiB7XG4gICAgY29uc3Qga2V5ID0gY2F0YWxvZ3VlS2V5KHRoaXMuY2xpZW50KTtcbiAgICBpZiAocmVmcmVzaCkgY2F0YWxvZ3VlQ2FjaGUuZGVsZXRlKGtleSk7XG4gICAgY29uc3QgY3VycmVudCA9IGNhdGFsb2d1ZUNhY2hlLmdldChrZXkpO1xuICAgIGlmIChjdXJyZW50ICYmIERhdGUubm93KCkgPCBjdXJyZW50LmV4cGlyZXNBdCkgcmV0dXJuIGN1cnJlbnQucHJvbWlzZTtcbiAgICBjb25zdCBwcm9taXNlID0gdGhpcy5mZXRjaENhdGFsb2d1ZSgpO1xuICAgIGNvbnN0IGVudHJ5OiBDYXRhbG9ndWVFbnRyeSA9IHsgcHJvbWlzZSwgZXhwaXJlc0F0OiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkgfTtcbiAgICBjYXRhbG9ndWVDYWNoZS5zZXQoa2V5LCBlbnRyeSk7XG4gICAgdm9pZCBwcm9taXNlLnRoZW4oXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGVudHJ5LmV4cGlyZXNBdCA9IERhdGUubm93KCkgKyB0aGlzLmNhY2hlVHRsTXM7XG4gICAgICB9LFxuICAgICAgKCkgPT4ge1xuICAgICAgICBpZiAoY2F0YWxvZ3VlQ2FjaGUuZ2V0KGtleSkgPT09IGVudHJ5KSBjYXRhbG9ndWVDYWNoZS5kZWxldGUoa2V5KTtcbiAgICAgIH0sXG4gICAgKTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2hDYXRhbG9ndWUoKTogUHJvbWlzZTxyZWFkb25seSBTZXJ2aW5nRW5kcG9pbnRTdW1tYXJ5W10+IHtcbiAgICBjb25zdCBzdGFydGVkQXQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jbGllbnQucmVxdWVzdChcIi9hcGkvMi4wL3NlcnZpbmctZW5kcG9pbnRzXCIpO1xuICAgIGlmICghb2JqZWN0LmlzUmVjb3JkKHJlc3BvbnNlKSB8fCAhQXJyYXkuaXNBcnJheShyZXNwb25zZS5lbmRwb2ludHMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEYXRhYnJpY2tzIHNlcnZpbmctZW5kcG9pbnRzIHJlc3BvbnNlIGlzIG1pc3NpbmcgYW4gZW5kcG9pbnRzIGFycmF5XCIpO1xuICAgIH1cbiAgICBjb25zdCBlbmRwb2ludHMgPSBhd2FpdCB0aGlzLm1lYXN1cmVFbWJlZGRpbmdEaW1lbnNpb25zKG5vcm1hbGl6ZUVuZHBvaW50cyhyZXNwb25zZS5lbmRwb2ludHMpKTtcbiAgICBsb2dnZXIuZGVidWcoXCJsaXN0ZWRcIiwge1xuICAgICAgY291bnQ6IGVuZHBvaW50cy5sZW5ndGgsXG4gICAgICBob3N0OiB0aGlzLmNsaWVudC5ob3N0KCksXG4gICAgICBlbGFwc2VkTXM6IERhdGUubm93KCkgLSBzdGFydGVkQXQsXG4gICAgfSk7XG4gICAgcmV0dXJuIGVuZHBvaW50cztcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbWVhc3VyZUVtYmVkZGluZ0RpbWVuc2lvbnMoXG4gICAgZW5kcG9pbnRzOiByZWFkb25seSBTZXJ2aW5nRW5kcG9pbnRTdW1tYXJ5W10sXG4gICk6IFByb21pc2U8U2VydmluZ0VuZHBvaW50U3VtbWFyeVtdPiB7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgICAgZW5kcG9pbnRzLm1hcChhc3luYyAoZW5kcG9pbnQpID0+IHtcbiAgICAgICAgaWYgKGVuZHBvaW50LmNsYXNzICE9PSBNb2RlbENsYXNzLkVtYmVkZGluZyB8fCBlbmRwb2ludC5kaW1lbnNpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldHVybiBlbmRwb2ludDtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jbGllbnQucmVxdWVzdChcbiAgICAgICAgICAgIGAvc2VydmluZy1lbmRwb2ludHMvJHtlbmNvZGVVUklDb21wb25lbnQoZW5kcG9pbnQubmFtZSl9L2ludm9jYXRpb25zYCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBpbnB1dDogW1wicGluZ1wiXSB9KSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBkaW1lbnNpb24gPSBlbWJlZGRpbmdEaW1lbnNpb24ocmVzcG9uc2UpO1xuICAgICAgICAgIHJldHVybiBkaW1lbnNpb24gPT09IHVuZGVmaW5lZCA/IGVuZHBvaW50IDogeyAuLi5lbmRwb2ludCwgZGltZW5zaW9uIH07XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgbG9nZ2VyLndhcm4oXCJlbWJlZGRpbmcgZGltZW5zaW9uIHByb2JlIGZhaWxlZFwiLCB7XG4gICAgICAgICAgICBtb2RlbDogZW5kcG9pbnQubmFtZSxcbiAgICAgICAgICAgIGVycm9yOiBlcnJvclV0aWxzLnRvRXJyb3IoZXJyb3IpLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiBlbmRwb2ludDtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBlbWJlZGRpbmdEaW1lbnNpb24odmFsdWU6IHVua25vd24pOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBpZiAoIW9iamVjdC5pc1JlY29yZCh2YWx1ZSkgfHwgIUFycmF5LmlzQXJyYXkodmFsdWUuZGF0YSkpIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IGZpcnN0ID0gdmFsdWUuZGF0YVswXTtcbiAgaWYgKCFvYmplY3QuaXNSZWNvcmQoZmlyc3QpIHx8ICFBcnJheS5pc0FycmF5KGZpcnN0LmVtYmVkZGluZykpIHJldHVybiB1bmRlZmluZWQ7XG4gIHJldHVybiBmaXJzdC5lbWJlZGRpbmcubGVuZ3RoID4gMCA/IGZpcnN0LmVtYmVkZGluZy5sZW5ndGggOiB1bmRlZmluZWQ7XG59XG5cbi8qKiBDcmVhdGUgYW4gYXV0aGVudGljYXRpb24tYXdhcmUgRGF0YWJyaWNrcyBtb2RlbCBjbGllbnQuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlTW9kZWxDbGllbnQob3B0aW9uczogTW9kZWxDbGllbnRPcHRpb25zID0ge30pOiBQcm9taXNlPE1vZGVsQ2xpZW50PiB7XG4gIGNvbnN0IGNhY2hlVHRsTXMgPSB2YWxpZGF0ZUNhY2hlVHRsKG9wdGlvbnMuY2FjaGVUdGxNcyk7XG4gIGlmIChvcHRpb25zLmh5ZHJhdGVNZXRhZGF0YSA/PyB0cnVlKSBhd2FpdCBoeWRyYXRlTW9kZWxNZXRhZGF0YSgpO1xuICByZXR1cm4gbmV3IERlZmF1bHRNb2RlbENsaWVudChcbiAgICBuZXcgQXV0aGVudGljYXRlZE1vZGVsQ2xpZW50KGF3YWl0IGNyZWF0ZUF1dGhDbGllbnQob3B0aW9ucy5hdXRoKSwgZ2xvYmFsVGhpcy5mZXRjaCksXG4gICAgY2FjaGVUdGxNcyxcbiAgKTtcbn1cblxuLyoqIExpc3QgY29uZmlndXJlZCBEYXRhYnJpY2tzIHByb2ZpbGVzIG91dHNpZGUgdGhlIG1vZGVsIGNsaWVudCBmYWNhZGUuICovXG5leHBvcnQgZnVuY3Rpb24gbGlzdFByb2ZpbGVzKHJlZnJlc2ggPSBmYWxzZSk6IERhdGFicmlja3NQcm9maWxlU3VtbWFyeVtdIHtcbiAgcmV0dXJuIGxpc3RBdXRoUHJvZmlsZXMoeyByZWZyZXNoIH0pO1xufVxuXG4vKiogQGludGVybmFsIENvbnN0cnVjdCBhIG1vZGVsIGNsaWVudCBhcm91bmQgYSB0ZXN0IG9yIGhvc3Qtb3duZWQgRGF0YWJyaWNrcyBjbGllbnQuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTW9kZWxDbGllbnRXaXRoRGF0YWJyaWNrc0NsaWVudChcbiAgY2xpZW50OiBEYXRhYnJpY2tzTW9kZWxDbGllbnQsXG4gIGNhY2hlVHRsTXMgPSBERUZBVUxUX01PREVMX0NMSUVOVF9DQUNIRV9UVExfTVMsXG4pOiBNb2RlbENsaWVudCB7XG4gIHJldHVybiBuZXcgRGVmYXVsdE1vZGVsQ2xpZW50KGNsaWVudCwgdmFsaWRhdGVDYWNoZVR0bChjYWNoZVR0bE1zKSk7XG59XG5cbi8qKiBAaW50ZXJuYWwgQ3JlYXRlIGEgbW9kZWwgY2xpZW50IHdpdGggaW5qZWN0YWJsZSBhdXRoIGhvc3QgY2FwYWJpbGl0aWVzLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZU1vZGVsQ2xpZW50V2l0aERlcGVuZGVuY2llcyhcbiAgb3B0aW9uczogTW9kZWxDbGllbnRPcHRpb25zLFxuICBkZXBlbmRlbmNpZXM6IERhdGFicmlja3NBdXRoRGVwZW5kZW5jaWVzLFxuKTogUHJvbWlzZTxNb2RlbENsaWVudD4ge1xuICBpZiAob3B0aW9ucy5oeWRyYXRlTWV0YWRhdGEgPz8gdHJ1ZSkgYXdhaXQgaHlkcmF0ZU1vZGVsTWV0YWRhdGEoKTtcbiAgcmV0dXJuIG5ldyBEZWZhdWx0TW9kZWxDbGllbnQoXG4gICAgbmV3IEF1dGhlbnRpY2F0ZWRNb2RlbENsaWVudChcbiAgICAgIGF3YWl0IGNyZWF0ZUF1dGhDbGllbnQob3B0aW9ucy5hdXRoLCBkZXBlbmRlbmNpZXMpLFxuICAgICAgZGVwZW5kZW5jaWVzLmZldGNoID8/IGdsb2JhbFRoaXMuZmV0Y2gsXG4gICAgKSxcbiAgICB2YWxpZGF0ZUNhY2hlVHRsKG9wdGlvbnMuY2FjaGVUdGxNcyksXG4gICk7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlQ2FjaGVUdGwodmFsdWUgPSBERUZBVUxUX01PREVMX0NMSUVOVF9DQUNIRV9UVExfTVMpOiBudW1iZXIge1xuICBpZiAoIU51bWJlci5pc0Zpbml0ZSh2YWx1ZSkgfHwgdmFsdWUgPD0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIk1vZGVsIGNsaWVudCBjYWNoZVR0bE1zIG11c3QgYmUgYSBwb3NpdGl2ZSBmaW5pdGUgbnVtYmVyXCIpO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZnVuY3Rpb24gY2F0YWxvZ3VlS2V5KGNsaWVudDogRGF0YWJyaWNrc01vZGVsQ2xpZW50KTogc3RyaW5nIHtcbiAgcmV0dXJuIFtjbGllbnQuaG9zdCgpLCBjbGllbnQud29ya3NwYWNlSWQoKSA/PyBcIlwiLCBjbGllbnQucHJpbmNpcGFsKCldLmpvaW4oXCJcXHUwMDAwXCIpO1xufVxuXG5mdW5jdGlvbiBpbmZlclByb3RvY29sKFxuICBlbmRwb2ludDogU2VydmluZ0VuZHBvaW50U3VtbWFyeSB8IHVuZGVmaW5lZCxcbiAgbW9kZWxJZDogc3RyaW5nLFxuKTogTW9kZWxQcm90b2NvbCB7XG4gIGlmIChlbmRwb2ludD8udGFzayA9PT0gXCJsbG0vdjEvZW1iZWRkaW5nc1wiKSByZXR1cm4gXCJlbWJlZGRpbmdzXCI7XG4gIHJldHVybiBtb2RlbFNlcnZpbmdBcGkobW9kZWxJZCk7XG59XG5cbmZ1bmN0aW9uIHJvdXRlVXJsKGhvc3Q6IHN0cmluZywgbW9kZWxJZDogc3RyaW5nLCBwcm90b2NvbDogTW9kZWxQcm90b2NvbCk6IHN0cmluZyB7XG4gIGlmIChwcm90b2NvbCA9PT0gXCJyZXNwb25zZXNcIikgcmV0dXJuIHJlc3BvbnNlc1Vwc3RyZWFtVXJsKGhvc3QsIG1vZGVsSWQpO1xuICBpZiAocHJvdG9jb2wgPT09IFwiY2hhdFwiICYmIG1vZGVsU2VydmluZ0FwaShtb2RlbElkKSA9PT0gXCJyZXNwb25zZXNcIikge1xuICAgIHJldHVybiBjaGF0Q29tcGxldGlvbnNVcmwoaG9zdCk7XG4gIH1cbiAgcmV0dXJuIGludm9jYXRpb25zVXJsKGhvc3QsIG1vZGVsSWQpO1xufVxuXG5mdW5jdGlvbiBpc1VubWF0Y2hlZEV4cGxpY2l0KFxuICBjYXRhbG9ndWU6IHJlYWRvbmx5IFNlcnZpbmdFbmRwb2ludFN1bW1hcnlbXSxcbiAgaW5wdXQ6IFJlc29sdmVNb2RlbElucHV0LFxuICByZXNvbHZlZDogUmVzb2x2ZWRNb2RlbFNlbGVjdGlvbixcbik6IGJvb2xlYW4ge1xuICByZXR1cm4gKFxuICAgIGlucHV0LmV4cGxpY2l0ICE9PSB1bmRlZmluZWQgJiZcbiAgICBpbnB1dC5mdXp6eSAhPT0gZmFsc2UgJiZcbiAgICByZXNvbHZlZC5tb2RlbElkID09PSBpbnB1dC5leHBsaWNpdCAmJlxuICAgICFjYXRhbG9ndWUuc29tZSgoZW5kcG9pbnQpID0+IGVuZHBvaW50Lm5hbWUgPT09IGlucHV0LmV4cGxpY2l0KVxuICApO1xufVxuXG5mdW5jdGlvbiBjbG9uZUVuZHBvaW50cyhlbmRwb2ludHM6IHJlYWRvbmx5IFNlcnZpbmdFbmRwb2ludFN1bW1hcnlbXSk6IFNlcnZpbmdFbmRwb2ludFN1bW1hcnlbXSB7XG4gIHJldHVybiBlbmRwb2ludHMubWFwKGNsb25lRW5kcG9pbnQpO1xufVxuXG5mdW5jdGlvbiBjbG9uZUVuZHBvaW50KGVuZHBvaW50OiBTZXJ2aW5nRW5kcG9pbnRTdW1tYXJ5KTogU2VydmluZ0VuZHBvaW50U3VtbWFyeSB7XG4gIHJldHVybiB7XG4gICAgLi4uZW5kcG9pbnQsXG4gICAgLi4uKGVuZHBvaW50LnByb2ZpbGUgPyB7IHByb2ZpbGU6IHsgLi4uZW5kcG9pbnQucHJvZmlsZSB9IH0gOiB7fSksXG4gICAgLi4uKGVuZHBvaW50LnNlcnZpY2VOYW1lcyA/IHsgc2VydmljZU5hbWVzOiB7IC4uLmVuZHBvaW50LnNlcnZpY2VOYW1lcyB9IH0gOiB7fSksXG4gICAgLi4uKGVuZHBvaW50LnJlYXNvbmluZ0VmZm9ydHMgPyB7IHJlYXNvbmluZ0VmZm9ydHM6IFsuLi5lbmRwb2ludC5yZWFzb25pbmdFZmZvcnRzXSB9IDoge30pLFxuICAgIC4uLihlbmRwb2ludC5zdGF0dXMgPyB7IHN0YXR1czogeyAuLi5lbmRwb2ludC5zdGF0dXMgfSB9IDoge30pLFxuICB9O1xufVxuIl19
package/package.json CHANGED
@@ -25,12 +25,12 @@
25
25
  },
26
26
  "dependencies": {
27
27
  "@databricks/appkit": "0.81.0",
28
- "@dbx-tools/appkit": "^0.9.119",
29
- "@dbx-tools/auth": "^0.9.119",
30
- "@dbx-tools/cache": "^0.9.119",
31
- "@dbx-tools/shared-auth": "^0.9.119",
32
- "@dbx-tools/shared-core": "^0.9.119",
33
- "@dbx-tools/shared-model": "^0.9.119",
28
+ "@dbx-tools/appkit": "^0.9.120",
29
+ "@dbx-tools/auth": "^0.9.120",
30
+ "@dbx-tools/cache": "^0.9.120",
31
+ "@dbx-tools/shared-auth": "^0.9.120",
32
+ "@dbx-tools/shared-core": "^0.9.120",
33
+ "@dbx-tools/shared-model": "^0.9.120",
34
34
  "cheerio": "^1.2.0",
35
35
  "fuse.js": "^7.4.2"
36
36
  },
@@ -100,7 +100,7 @@
100
100
  "./package.json": "./package.json"
101
101
  }
102
102
  },
103
- "version": "0.9.119",
103
+ "version": "0.9.120",
104
104
  "types": "./lib/index.d.ts",
105
105
  "dbxToolsConfig": {
106
106
  "tags": [
@@ -5,6 +5,7 @@
5
5
  */
6
6
 
7
7
  import { createCache, getOrSet } from "@dbx-tools/cache/cache";
8
+ import * as errorUtils from "@dbx-tools/shared-core/error-utils";
8
9
  import * as log from "@dbx-tools/shared-core/log";
9
10
 
10
11
  import { modelMetadataCache } from "./_cache.ts";
@@ -77,7 +78,7 @@ export function createMetadataCache<T>(
77
78
  } catch (error) {
78
79
  logger.warn("metadata cache refresh failed; using cached or committed value", {
79
80
  key: options.key,
80
- error,
81
+ error: errorUtils.toError(error),
81
82
  });
82
83
  staleRefreshFailed = previous !== undefined;
83
84
  }
@@ -189,7 +189,7 @@ async function pingEmbeddingDimension(
189
189
  logger.warn("embedding ping returned no vector", { name });
190
190
  return undefined;
191
191
  } catch (err) {
192
- logger.warn("embedding ping failed", { name, error: errorUtils.errorMessage(err) });
192
+ logger.warn("embedding ping failed", { name, error: errorUtils.toError(err) });
193
193
  return undefined;
194
194
  }
195
195
  }
@@ -15,6 +15,7 @@ import {
15
15
  } from "@dbx-tools/auth/client";
16
16
  import { listProfiles as listAuthProfiles } from "@dbx-tools/auth/profile";
17
17
  import type { DatabricksProfileSummary } from "@dbx-tools/shared-auth";
18
+ import * as errorUtils from "@dbx-tools/shared-core/error-utils";
18
19
  import * as log from "@dbx-tools/shared-core/log";
19
20
  import * as object from "@dbx-tools/shared-core/object";
20
21
  import {
@@ -274,7 +275,7 @@ class DefaultModelClient implements ModelClient {
274
275
  } catch (error) {
275
276
  logger.warn("embedding dimension probe failed", {
276
277
  model: endpoint.name,
277
- error,
278
+ error: errorUtils.toError(error),
278
279
  });
279
280
  return endpoint;
280
281
  }