@dbx-tools/model 0.9.36 → 0.9.37

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.36";
6
+ export const PACKAGE_VERSION = "0.9.37";
7
7
  export * as classes from "./src/classes.ts";
8
8
  export * as classify from "./src/classify.ts";
9
9
  export * as fallback from "./src/fallback.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.36";
2
+ export declare const PACKAGE_VERSION = "0.9.37";
3
3
  export * as classes from "./src/classes.ts";
4
4
  export * as classify from "./src/classify.ts";
5
5
  export * as fallback from "./src/fallback.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.36";
5
+ export const PACKAGE_VERSION = "0.9.37";
6
6
  export * as classes from "./src/classes.js";
7
7
  export * as classify from "./src/classify.js";
8
8
  export * as fallback from "./src/fallback.js";
@@ -23,4 +23,4 @@ export { DEFAULT_MODEL_CACHE_TTL_MS, DEFAULT_FUZZY_THRESHOLD } from "./src/model
23
23
  export { DEFAULT_MODEL_CLIENT_CACHE_TTL_MS } from "./src/model-client.js";
24
24
  export { REASONING_LEVELS } from "./src/reasoning-translation.js";
25
25
  export * from "./exports.js";
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztBQUNyRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxLQUFLLFFBQVEsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEtBQUssUUFBUSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxLQUFLLFFBQVEsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEtBQUssYUFBYSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sS0FBSyxZQUFZLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxLQUFLLFdBQVcsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxvQkFBb0IsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN2RSxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sS0FBSyxXQUFXLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSwrQkFBK0IsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTNLLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxxQkFBcUIsRUFBRSwyQkFBMkIsRUFBRSx1QkFBdUIsRUFBRSxrQkFBa0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWxMLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTdGLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBSWxFLGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR0VORVJBVEVEIGJ5IHByb2plbiB3YXRjaCAtIERPIE5PVCBFRElULlxuLy8gUmVnZW5lcmF0ZWQgZnJvbSB0aGUgZXhwb3J0aW5nIG1vZHVsZXMgaW4gLi9zcmMuXG4vLyBIYW5kIGVkaXRzIGFyZSBvdmVyd3JpdHRlbiBvbiB0aGUgbmV4dCB3YXRjaDsgdGhpcyBmaWxlIGlzIHJlYWQtb25seS5cblxuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfSURFTlRJRklFUiA9IFwiQGRieC10b29scy9tb2RlbFwiO1xuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfVkVSU0lPTiA9IFwiMC45LjM2XCI7XG5leHBvcnQgKiBhcyBjbGFzc2VzIGZyb20gXCIuL3NyYy9jbGFzc2VzLnRzXCI7XG5leHBvcnQgKiBhcyBjbGFzc2lmeSBmcm9tIFwiLi9zcmMvY2xhc3NpZnkudHNcIjtcbmV4cG9ydCAqIGFzIGZhbGxiYWNrIGZyb20gXCIuL3NyYy9mYWxsYmFjay50c1wiO1xuZXhwb3J0ICogYXMgaW52b2tlIGZyb20gXCIuL3NyYy9pbnZva2UudHNcIjtcbmV4cG9ydCAqIGFzIG1ldGFkYXRhIGZyb20gXCIuL3NyYy9tZXRhZGF0YS50c1wiO1xuZXhwb3J0ICogYXMgbWV0YWRhdGFDYWNoZSBmcm9tIFwiLi9zcmMvbWV0YWRhdGEtY2FjaGUudHNcIjtcbmV4cG9ydCAqIGFzIG1vZGVsQ2F0YWxvZyBmcm9tIFwiLi9zcmMvbW9kZWwtY2F0YWxvZy50c1wiO1xuZXhwb3J0ICogYXMgbW9kZWxDbGllbnQgZnJvbSBcIi4vc3JjL21vZGVsLWNsaWVudC50c1wiO1xuZXhwb3J0ICogYXMgcG9saWN5IGZyb20gXCIuL3NyYy9wb2xpY3kudHNcIjtcbmV4cG9ydCAqIGFzIHJlYXNvbmluZ1RyYW5zbGF0aW9uIGZyb20gXCIuL3NyYy9yZWFzb25pbmctdHJhbnNsYXRpb24udHNcIjtcbmV4cG9ydCAqIGFzIHJlc29sdmUgZnJvbSBcIi4vc3JjL3Jlc29sdmUudHNcIjtcbmV4cG9ydCAqIGFzIHNlcnZpbmdXaXJlIGZyb20gXCIuL3NyYy9zZXJ2aW5nLXdpcmUudHNcIjtcbmV4cG9ydCB7IENIQVRfQ0xBU1NfT1JERVIsIE1PREVMX0NMQVNTX09SREVSIH0gZnJvbSBcIi4vc3JjL2NsYXNzZXMudHNcIjtcbmV4cG9ydCB7IEZBTExCQUNLX01PREVMX0lEUyB9IGZyb20gXCIuL3NyYy9mYWxsYmFjay50c1wiO1xuZXhwb3J0IHsgSU5WT0NBVElPTlNfU1VGRklYLCBSRVNQT05TRVNfUEFUSCwgT1BFTl9SRVNQT05TRVNfUEFUSCwgQ0hBVF9DT01QTEVUSU9OU19QQVRILCBBSV9HQVRFV0FZX0NPREVYX1JFU1BPTlNFU19QQVRILCBBTlRIUk9QSUNfTUVTU0FHRVNfUEFUSCB9IGZyb20gXCIuL3NyYy9pbnZva2UudHNcIjtcbmV4cG9ydCB0eXBlIHsgQXV0aGVudGljYXRpbmdDbGllbnRMaWtlIH0gZnJvbSBcIi4vc3JjL2ludm9rZS50c1wiO1xuZXhwb3J0IHsgTU9ERUxfTUVUQURBVEFfVFRMX01TLCBNT0RFTF9SQVRFX0xJTUlUU19VUkwsIE9QRU5BSV9SRVNQT05TRVNfTU9ERUxTX1VSTCwgUVVFUllfUkVBU09OX01PREVMU19VUkwsIFJFVElSRURfTU9ERUxTX1VSTCwgV0VCX1NFQVJDSF9NT0RFTFNfVVJMIH0gZnJvbSBcIi4vc3JjL21ldGFkYXRhLnRzXCI7XG5leHBvcnQgdHlwZSB7IE1ldGFkYXRhQ2FjaGVSZWNvcmQsIE1ldGFkYXRhQ2FjaGVPcHRpb25zLCBNZXRhZGF0YUNhY2hlTWVyZ2VJbnB1dCwgTWV0YWRhdGFDYWNoZSB9IGZyb20gXCIuL3NyYy9tZXRhZGF0YS1jYWNoZS50c1wiO1xuZXhwb3J0IHsgREVGQVVMVF9NT0RFTF9DQUNIRV9UVExfTVMsIERFRkFVTFRfRlVaWllfVEhSRVNIT0xEIH0gZnJvbSBcIi4vc3JjL21vZGVsLWNhdGFsb2cudHNcIjtcbmV4cG9ydCB0eXBlIHsgV29ya3NwYWNlQ2xpZW50TGlrZSwgTGlzdFNlcnZpbmdFbmRwb2ludHNPcHRpb25zIH0gZnJvbSBcIi4vc3JjL21vZGVsLWNhdGFsb2cudHNcIjtcbmV4cG9ydCB7IERFRkFVTFRfTU9ERUxfQ0xJRU5UX0NBQ0hFX1RUTF9NUyB9IGZyb20gXCIuL3NyYy9tb2RlbC1jbGllbnQudHNcIjtcbmV4cG9ydCB0eXBlIHsgTW9kZWxBdXRoT3B0aW9ucywgTW9kZWxDbGllbnRPcHRpb25zLCBNb2RlbENsaWVudFN0YXR1cywgTW9kZWxQcm90b2NvbCwgTW9kZWxSb3V0ZUlucHV0LCBNb2RlbFJvdXRlLCBNb2RlbENsaWVudCB9IGZyb20gXCIuL3NyYy9tb2RlbC1jbGllbnQudHNcIjtcbmV4cG9ydCB7IFJFQVNPTklOR19MRVZFTFMgfSBmcm9tIFwiLi9zcmMvcmVhc29uaW5nLXRyYW5zbGF0aW9uLnRzXCI7XG5leHBvcnQgdHlwZSB7IFJlYXNvbmluZ0xldmVsLCBSZWFzb25pbmdNb2RlbENhdGFsb2d1ZSwgQWRhcHRlZFJlcXVlc3RSZWFzb25pbmcgfSBmcm9tIFwiLi9zcmMvcmVhc29uaW5nLXRyYW5zbGF0aW9uLnRzXCI7XG5leHBvcnQgdHlwZSB7IFNlbGVjdE1vZGVsSW5wdXQsIFNlYXJjaE1vZGVsc0lucHV0IH0gZnJvbSBcIi4vc3JjL3Jlc29sdmUudHNcIjtcbmV4cG9ydCB0eXBlIHsgU2VydmluZ0NoYXRNZXNzYWdlLCBSZXdyaXR0ZW5TZXJ2aW5nUmVxdWVzdCB9IGZyb20gXCIuL3NyYy9zZXJ2aW5nLXdpcmUudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2V4cG9ydHMudHNcIjtcbiJdfQ==
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztBQUNyRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxLQUFLLFFBQVEsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEtBQUssUUFBUSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxLQUFLLFFBQVEsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEtBQUssYUFBYSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sS0FBSyxZQUFZLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxLQUFLLFdBQVcsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxvQkFBb0IsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN2RSxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sS0FBSyxXQUFXLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSwrQkFBK0IsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTNLLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxxQkFBcUIsRUFBRSwyQkFBMkIsRUFBRSx1QkFBdUIsRUFBRSxrQkFBa0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWxMLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTdGLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBSWxFLGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR0VORVJBVEVEIGJ5IHByb2plbiB3YXRjaCAtIERPIE5PVCBFRElULlxuLy8gUmVnZW5lcmF0ZWQgZnJvbSB0aGUgZXhwb3J0aW5nIG1vZHVsZXMgaW4gLi9zcmMuXG4vLyBIYW5kIGVkaXRzIGFyZSBvdmVyd3JpdHRlbiBvbiB0aGUgbmV4dCB3YXRjaDsgdGhpcyBmaWxlIGlzIHJlYWQtb25seS5cblxuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfSURFTlRJRklFUiA9IFwiQGRieC10b29scy9tb2RlbFwiO1xuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfVkVSU0lPTiA9IFwiMC45LjM3XCI7XG5leHBvcnQgKiBhcyBjbGFzc2VzIGZyb20gXCIuL3NyYy9jbGFzc2VzLnRzXCI7XG5leHBvcnQgKiBhcyBjbGFzc2lmeSBmcm9tIFwiLi9zcmMvY2xhc3NpZnkudHNcIjtcbmV4cG9ydCAqIGFzIGZhbGxiYWNrIGZyb20gXCIuL3NyYy9mYWxsYmFjay50c1wiO1xuZXhwb3J0ICogYXMgaW52b2tlIGZyb20gXCIuL3NyYy9pbnZva2UudHNcIjtcbmV4cG9ydCAqIGFzIG1ldGFkYXRhIGZyb20gXCIuL3NyYy9tZXRhZGF0YS50c1wiO1xuZXhwb3J0ICogYXMgbWV0YWRhdGFDYWNoZSBmcm9tIFwiLi9zcmMvbWV0YWRhdGEtY2FjaGUudHNcIjtcbmV4cG9ydCAqIGFzIG1vZGVsQ2F0YWxvZyBmcm9tIFwiLi9zcmMvbW9kZWwtY2F0YWxvZy50c1wiO1xuZXhwb3J0ICogYXMgbW9kZWxDbGllbnQgZnJvbSBcIi4vc3JjL21vZGVsLWNsaWVudC50c1wiO1xuZXhwb3J0ICogYXMgcG9saWN5IGZyb20gXCIuL3NyYy9wb2xpY3kudHNcIjtcbmV4cG9ydCAqIGFzIHJlYXNvbmluZ1RyYW5zbGF0aW9uIGZyb20gXCIuL3NyYy9yZWFzb25pbmctdHJhbnNsYXRpb24udHNcIjtcbmV4cG9ydCAqIGFzIHJlc29sdmUgZnJvbSBcIi4vc3JjL3Jlc29sdmUudHNcIjtcbmV4cG9ydCAqIGFzIHNlcnZpbmdXaXJlIGZyb20gXCIuL3NyYy9zZXJ2aW5nLXdpcmUudHNcIjtcbmV4cG9ydCB7IENIQVRfQ0xBU1NfT1JERVIsIE1PREVMX0NMQVNTX09SREVSIH0gZnJvbSBcIi4vc3JjL2NsYXNzZXMudHNcIjtcbmV4cG9ydCB7IEZBTExCQUNLX01PREVMX0lEUyB9IGZyb20gXCIuL3NyYy9mYWxsYmFjay50c1wiO1xuZXhwb3J0IHsgSU5WT0NBVElPTlNfU1VGRklYLCBSRVNQT05TRVNfUEFUSCwgT1BFTl9SRVNQT05TRVNfUEFUSCwgQ0hBVF9DT01QTEVUSU9OU19QQVRILCBBSV9HQVRFV0FZX0NPREVYX1JFU1BPTlNFU19QQVRILCBBTlRIUk9QSUNfTUVTU0FHRVNfUEFUSCB9IGZyb20gXCIuL3NyYy9pbnZva2UudHNcIjtcbmV4cG9ydCB0eXBlIHsgQXV0aGVudGljYXRpbmdDbGllbnRMaWtlIH0gZnJvbSBcIi4vc3JjL2ludm9rZS50c1wiO1xuZXhwb3J0IHsgTU9ERUxfTUVUQURBVEFfVFRMX01TLCBNT0RFTF9SQVRFX0xJTUlUU19VUkwsIE9QRU5BSV9SRVNQT05TRVNfTU9ERUxTX1VSTCwgUVVFUllfUkVBU09OX01PREVMU19VUkwsIFJFVElSRURfTU9ERUxTX1VSTCwgV0VCX1NFQVJDSF9NT0RFTFNfVVJMIH0gZnJvbSBcIi4vc3JjL21ldGFkYXRhLnRzXCI7XG5leHBvcnQgdHlwZSB7IE1ldGFkYXRhQ2FjaGVSZWNvcmQsIE1ldGFkYXRhQ2FjaGVPcHRpb25zLCBNZXRhZGF0YUNhY2hlTWVyZ2VJbnB1dCwgTWV0YWRhdGFDYWNoZSB9IGZyb20gXCIuL3NyYy9tZXRhZGF0YS1jYWNoZS50c1wiO1xuZXhwb3J0IHsgREVGQVVMVF9NT0RFTF9DQUNIRV9UVExfTVMsIERFRkFVTFRfRlVaWllfVEhSRVNIT0xEIH0gZnJvbSBcIi4vc3JjL21vZGVsLWNhdGFsb2cudHNcIjtcbmV4cG9ydCB0eXBlIHsgV29ya3NwYWNlQ2xpZW50TGlrZSwgTGlzdFNlcnZpbmdFbmRwb2ludHNPcHRpb25zIH0gZnJvbSBcIi4vc3JjL21vZGVsLWNhdGFsb2cudHNcIjtcbmV4cG9ydCB7IERFRkFVTFRfTU9ERUxfQ0xJRU5UX0NBQ0hFX1RUTF9NUyB9IGZyb20gXCIuL3NyYy9tb2RlbC1jbGllbnQudHNcIjtcbmV4cG9ydCB0eXBlIHsgTW9kZWxBdXRoT3B0aW9ucywgTW9kZWxDbGllbnRPcHRpb25zLCBNb2RlbENsaWVudFN0YXR1cywgTW9kZWxQcm90b2NvbCwgTW9kZWxSb3V0ZUlucHV0LCBNb2RlbFJvdXRlLCBNb2RlbENsaWVudCB9IGZyb20gXCIuL3NyYy9tb2RlbC1jbGllbnQudHNcIjtcbmV4cG9ydCB7IFJFQVNPTklOR19MRVZFTFMgfSBmcm9tIFwiLi9zcmMvcmVhc29uaW5nLXRyYW5zbGF0aW9uLnRzXCI7XG5leHBvcnQgdHlwZSB7IFJlYXNvbmluZ0xldmVsLCBSZWFzb25pbmdNb2RlbENhdGFsb2d1ZSwgQWRhcHRlZFJlcXVlc3RSZWFzb25pbmcgfSBmcm9tIFwiLi9zcmMvcmVhc29uaW5nLXRyYW5zbGF0aW9uLnRzXCI7XG5leHBvcnQgdHlwZSB7IFNlbGVjdE1vZGVsSW5wdXQsIFNlYXJjaE1vZGVsc0lucHV0IH0gZnJvbSBcIi4vc3JjL3Jlc29sdmUudHNcIjtcbmV4cG9ydCB0eXBlIHsgU2VydmluZ0NoYXRNZXNzYWdlLCBSZXdyaXR0ZW5TZXJ2aW5nUmVxdWVzdCB9IGZyb20gXCIuL3NyYy9zZXJ2aW5nLXdpcmUudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2V4cG9ydHMudHNcIjtcbiJdfQ==
@@ -20,6 +20,14 @@ import cacache from "cacache";
20
20
  import envPaths from "env-paths";
21
21
  import { MODEL_METADATA_TTL_MS } from "./_metadata-contract.js";
22
22
  const logger = log.logger("model/metadata-cache");
23
+ let packageIdentityPromise;
24
+ function packageIdentity() {
25
+ packageIdentityPromise ??= import("../index.js").then((mod) => ({
26
+ identifier: mod.PACKAGE_IDENTIFIER,
27
+ version: mod.PACKAGE_VERSION,
28
+ }));
29
+ return packageIdentityPromise;
30
+ }
23
31
  const inflight = new Map();
24
32
  /** Default cacache root for a package version under the dbx-tools cache dir. */
25
33
  export function defaultMetadataCacheDir(version) {
@@ -156,7 +164,7 @@ export function createMetadataCache(options) {
156
164
  async function resolveCacheDir(options) {
157
165
  if (options.cacheDir)
158
166
  return options.cacheDir;
159
- const version = options.version ?? (await import("../index.js")).PACKAGE_VERSION;
167
+ const version = options.version ?? (await packageIdentity()).version;
160
168
  return defaultMetadataCacheDir(version);
161
169
  }
162
170
  /** Prefer a non-empty fresh array, else previous, else fallback. */
@@ -223,4 +231,4 @@ function isCacheMiss(error) {
223
231
  "code" in error &&
224
232
  error.code === "ENOENT");
225
233
  }
226
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEtY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWV0YWRhdGEtY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXBDLE9BQU8sS0FBSyxnQkFBZ0IsTUFBTSwwQ0FBMEMsQ0FBQztBQUM3RSxPQUFPLEtBQUssR0FBRyxNQUFNLDRCQUE0QixDQUFDO0FBQ2xELE9BQU8sT0FBTyxNQUFNLFNBQVMsQ0FBQztBQUM5QixPQUFPLFFBQVEsTUFBTSxXQUFXLENBQUM7QUFFakMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFaEUsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0FBMERsRCxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBNEIsQ0FBQztBQUVyRCxnRkFBZ0Y7QUFDaEYsTUFBTSxVQUFVLHVCQUF1QixDQUFDLE9BQWU7SUFDckQsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNuRSxPQUFPLE9BQU8sQ0FBQyxjQUFjLEVBQUUsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzNELENBQUM7QUFFRCxzRUFBc0U7QUFDdEUsTUFBTSxVQUFVLHdCQUF3QixDQUFDLGNBQWlDLE9BQU8sQ0FBQyxHQUFHO0lBQ25GLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUMzRCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQUksT0FBZ0M7SUFDckUsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssSUFBSSxxQkFBcUIsQ0FBQztJQUNyRCxN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Q0FBQyxXQUFXLEtBQUssUUFBUSxFQUNsRSxDQUFDO1lBQ0QsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUNELE9BQU8sTUFBZ0MsQ0FBQztJQUMxQyxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxLQUFjO0lBQ2pDLE9BQU8sT0FBTyxDQUNaLEtBQUs7UUFDTCxPQUFPLEtBQUssS0FBSyxRQUFRO1FBQ3pCLE1BQU0sSUFBSSxLQUFLO1FBQ2QsS0FBMkIsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUMvQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQWdub3N0aWMgZGFpbHkgbWV0YWRhdGEgY2FjaGUgb24ge0BsaW5rIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2NhY2FjaGUgfCBjYWNhY2hlfS5cbiAqXG4gKiBVc2VzIGNhY2FjaGUncyBidWlsdC1pbiBtZW1vcnkgbWVtb2l6YXRpb24gKGBtZW1vaXplOiB0cnVlYCBvbiBwdXQ7IGdldHMgcmVhZFxuICogdGhlIGluLW1lbW9yeSBsYXllciBieSBkZWZhdWx0KSB3aXRoIGNvbnRlbnQtYWRkcmVzc2VkIGRpc2sgdW5kZXJcbiAqIGBlbnYtcGF0aHMoXCJkYngtdG9vbHNcIikuY2FjaGUvbW9kZWwtZ2F0ZXdheS88dmVyc2lvbj4vYC4gRGlzayBwZXJzaXN0ZW5jZSBpc1xuICogZGlzYWJsZWQgaW5zaWRlIGEgRGF0YWJyaWNrcyBBcHAgKHtAbGluayBlbnZpcm9ubWVudFV0aWxzLmlzRGF0YWJyaWNrc0FwcEVudn0pO1xuICogdGhvc2UgcHJvY2Vzc2VzIGtlZXAgYSBwcm9jZXNzLWxvY2FsIE1hcCBvbmx5LlxuICpcbiAqIEVhY2ggY2FjaGUgb3ducyBhIGtleSwgaGFyZC1jb2RlZCBmYWxsYmFjaywgb3B0aW9uYWwgbmV0d29yayBsb2FkZXIsIGFuZCBhXG4gKiBtZXJnZXIgdGhhdCBjb21iaW5lcyBmcmVzaCAvIHByZXZpb3VzIC8gZmFsbGJhY2sgdmFsdWVzLiBGcmVzaG5lc3MgaXMgdGhlXG4gKiBlbnZlbG9wZSBgcmVmcmVzaGVkQXRgIHdpbmRvdyAoZGVmYXVsdCBvbmUgZGF5KSwgbm90IGNhY2FjaGUncyBzaG9ydCBMUlUgVFRMLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyByZXNvbHZlIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuXG5pbXBvcnQgKiBhcyBlbnZpcm9ubWVudFV0aWxzIGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlL2Vudmlyb25tZW50LXV0aWxzXCI7XG5pbXBvcnQgKiBhcyBsb2cgZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmUvbG9nXCI7XG5pbXBvcnQgY2FjYWNoZSBmcm9tIFwiY2FjYWNoZVwiO1xuaW1wb3J0IGVudlBhdGhzIGZyb20gXCJlbnYtcGF0aHNcIjtcblxuaW1wb3J0IHsgTU9ERUxfTUVUQURBVEFfVFRMX01TIH0gZnJvbSBcIi4vX21ldGFkYXRhLWNvbnRyYWN0LnRzXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJtb2RlbC9tZXRhZGF0YS1jYWNoZVwiKTtcblxuLyoqIEVudmVsb3BlIHN0b3JlZCBhcyBKU09OIGJ5dGVzIGluIGNhY2FjaGUgZm9yIGV2ZXJ5IGtleS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWV0YWRhdGFDYWNoZVJlY29yZDxUPiB7XG4gIHJlYWRvbmx5IHJlZnJlc2hlZEF0OiBudW1iZXI7XG4gIHJlYWRvbmx5IHZhbHVlOiBUO1xufVxuXG4vKiogRmFjdG9yeSBpbnB1dHMgZm9yIG9uZSBuYW1lZCBtZXRhZGF0YSBjYWNoZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWV0YWRhdGFDYWNoZU9wdGlvbnM8VD4ge1xuICAvKiogU3RhYmxlIGNhY2FjaGUga2V5LiAqL1xuICByZWFkb25seSBrZXk6IHN0cmluZztcbiAgLyoqIEhhcmQtY29kZWQgLyBjb21taXR0ZWQgYmFzZWxpbmUgdXNlZCB3aGVuIHN0b3JlIGFuZCBsb2FkIGJvdGggbWlzcy4gKi9cbiAgcmVhZG9ubHkgZmFsbGJhY2s6IFQ7XG4gIC8qKlxuICAgKiBSZWZyZXNoIHNvdXJjZS4gV2hlbiBvbWl0dGVkIHRoZSBjYWNoZSBvbmx5IHNlcnZlcyBzdG9yZSArIGZhbGxiYWNrIGFuZFxuICAgKiB7QGxpbmsgTWV0YWRhdGFDYWNoZS51cGRhdGV9IG11dGF0aW9ucyAoZm9yIGV4YW1wbGUgZXJyb3ItbGVhcm5lZCB2YWx1ZXMpLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9hZD86ICgpID0+IFByb21pc2U8VD47XG4gIC8qKiBDb21iaW5lIGEgZnJlc2ggbG9hZCwgcHJpb3Igc3RvcmUgdmFsdWUsIGFuZCB0aGUgaGFyZC1jb2RlZCBmYWxsYmFjay4gKi9cbiAgcmVhZG9ubHkgbWVyZ2U6IChpbnB1dDogTWV0YWRhdGFDYWNoZU1lcmdlSW5wdXQ8VD4pID0+IFQ7XG4gIC8qKiBGcmVzaG5lc3Mgd2luZG93OyBkZWZhdWx0cyB0byB7QGxpbmsgTU9ERUxfTUVUQURBVEFfVFRMX01TfSAob25lIGRheSkuICovXG4gIHJlYWRvbmx5IHR0bE1zPzogbnVtYmVyO1xuICAvKiogUGFja2FnZSB2ZXJzaW9uIHNlZ21lbnQgaW4gdGhlIGNhY2hlIHBhdGguIERlZmF1bHRzIHRvIHRoaXMgcGFja2FnZS4gKi9cbiAgcmVhZG9ubHkgdmVyc2lvbj86IHN0cmluZztcbiAgLyoqIE92ZXJyaWRlIHRoZSBjYWNhY2hlIHJvb3QgZGlyZWN0b3J5ICh0ZXN0cykuICovXG4gIHJlYWRvbmx5IGNhY2hlRGlyPzogc3RyaW5nO1xuICAvKipcbiAgICogRm9yY2UgZGlzayBvbi9vZmYuIERlZmF1bHRzIHRvIG9mZiBpbnNpZGUgRGF0YWJyaWNrcyBBcHBzLCBvbiBvdGhlcndpc2UuXG4gICAqL1xuICByZWFkb25seSBkaXNrPzogYm9vbGVhbjtcbiAgLyoqIENsb2NrIG92ZXJyaWRlIGZvciB0ZXN0cy4gKi9cbiAgcmVhZG9ubHkgbm93PzogKCkgPT4gbnVtYmVyO1xufVxuXG4vKiogQXJndW1lbnRzIHBhc3NlZCB0byBhIGNhY2hlIG1lcmdlci4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWV0YWRhdGFDYWNoZU1lcmdlSW5wdXQ8VD4ge1xuICByZWFkb25seSBmcmVzaDogVCB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgcHJldmlvdXM6IFQgfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IGZhbGxiYWNrOiBUO1xufVxuXG4vKiogT25lIHZlcnNpb25lZCBtZXRhZGF0YSBjYWNoZSAoY2FjYWNoZSBtZW1vcnkgKyBvcHRpb25hbCBkaXNrKS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWV0YWRhdGFDYWNoZTxUPiB7XG4gIC8qKiBBYnNvbHV0ZSBjYWNhY2hlIHJvb3QgZm9yIHRoaXMgcGFja2FnZSB2ZXJzaW9uICh1bnVzZWQgd2hlbiBkaXNrIGlzIG9mZikuICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcbiAgLyoqIFdoZXRoZXIgY2FjYWNoZSBkaXNrIHBlcnNpc3RlbmNlIGlzIGVuYWJsZWQgZm9yIHRoaXMgaW5zdGFuY2UuICovXG4gIHJlYWRvbmx5IGRpc2tFbmFibGVkOiBib29sZWFuO1xuICAvKiogUmV0dXJuIGEgZnJlc2gtb3ItZmFsbGJhY2sgdmFsdWUsIHJlZnJlc2hpbmcgd2hlbiBzdGFsZS4gKi9cbiAgZ2V0KCk6IFByb21pc2U8VD47XG4gIC8qKiBSZWFkIG1lbW9yeSAvIGRpc2sgd2l0aG91dCByZWZyZXNoaW5nLiAqL1xuICBwZWVrKCk6IFByb21pc2U8VCB8IHVuZGVmaW5lZD47XG4gIC8qKiBNdXRhdGUgdGhlIGNhY2hlZCB2YWx1ZSBhbmQgcGVyc2lzdCBpdC4gKi9cbiAgdXBkYXRlKG11dGF0b3I6IChjdXJyZW50OiBUKSA9PiBUKTogUHJvbWlzZTxUPjtcbiAgLyoqIEZvcmNlIGEgcmVmcmVzaCBhdHRlbXB0IGV2ZW4gd2hlbiB0aGUgZW50cnkgaXMgc3RpbGwgZnJlc2guICovXG4gIHJlZnJlc2goKTogUHJvbWlzZTxUPjtcbn1cblxuY29uc3QgaW5mbGlnaHQgPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZTx1bmtub3duPj4oKTtcblxuLyoqIERlZmF1bHQgY2FjYWNoZSByb290IGZvciBhIHBhY2thZ2UgdmVyc2lvbiB1bmRlciB0aGUgZGJ4LXRvb2xzIGNhY2hlIGRpci4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0TWV0YWRhdGFDYWNoZURpcih2ZXJzaW9uOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBjYWNoZURpcmVjdG9yeSA9IGVudlBhdGhzKFwiZGJ4LXRvb2xzXCIsIHsgc3VmZml4OiBcIlwiIH0pLmNhY2hlO1xuICByZXR1cm4gcmVzb2x2ZShjYWNoZURpcmVjdG9yeSwgXCJtb2RlbC1nYXRld2F5XCIsIHZlcnNpb24pO1xufVxuXG4vKiogV2hldGhlciBtZXRhZGF0YSBjYWNoZXMgc2hvdWxkIHBlcnNpc3QgdG8gZGlzayBpbiB0aGlzIHByb2Nlc3MuICovXG5leHBvcnQgZnVuY3Rpb24gbWV0YWRhdGFDYWNoZURpc2tFbmFibGVkKGVudmlyb25tZW50OiBOb2RlSlMuUHJvY2Vzc0VudiA9IHByb2Nlc3MuZW52KTogYm9vbGVhbiB7XG4gIHJldHVybiAhZW52aXJvbm1lbnRVdGlscy5pc0RhdGFicmlja3NBcHBFbnYoZW52aXJvbm1lbnQpO1xufVxuXG4vKipcbiAqIENyZWF0ZSBvbmUgZGFpbHkgY2FjaGUgYmFja2VkIGJ5IGNhY2FjaGUgbWVtb2l6YXRpb24sIHdpdGggb3B0aW9uYWwgZGlzay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1ldGFkYXRhQ2FjaGU8VD4ob3B0aW9uczogTWV0YWRhdGFDYWNoZU9wdGlvbnM8VD4pOiBNZXRhZGF0YUNhY2hlPFQ+IHtcbiAgY29uc3QgdHRsTXMgPSBvcHRpb25zLnR0bE1zID8/IE1PREVMX01FVEFEQVRBX1RUTF9NUztcbiAgY29uc3QgZGlza0VuYWJsZWQgPSBvcHRpb25zLmRpc2sgPz8gbWV0YWRhdGFDYWNoZURpc2tFbmFibGVkKCk7XG4gIGNvbnN0IG5vdyA9IG9wdGlvbnMubm93ID8/IERhdGUubm93O1xuICBjb25zdCBwYXRoUHJvbWlzZSA9IHJlc29sdmVDYWNoZURpcihvcHRpb25zKTtcbiAgbGV0IHBhdGggPSBvcHRpb25zLmNhY2hlRGlyO1xuXG4gIGNvbnN0IGZsaWdodEtleSA9IChjYWNoZVBhdGg6IHN0cmluZywgc3VmZml4ID0gXCJcIik6IHN0cmluZyA9PlxuICAgIGAke2NhY2hlUGF0aH06OiR7b3B0aW9ucy5rZXl9JHtzdWZmaXh9YDtcblxuICAvKiogUHJvY2Vzcy1sb2NhbCBzdG9yZSB1c2VkIHdoZW4gZGlzayBpcyBvZmYgKERhdGFicmlja3MgQXBwcykuICovXG4gIGNvbnN0IG1lbW9yeU9ubHkgPSBuZXcgTWFwPHN0cmluZywgTWV0YWRhdGFDYWNoZVJlY29yZDxUPj4oKTtcblxuICBjb25zdCByZXNvbHZlVmFsdWUgPSAoaW5wdXQ6IE1ldGFkYXRhQ2FjaGVNZXJnZUlucHV0PFQ+KTogVCA9PiBvcHRpb25zLm1lcmdlKGlucHV0KTtcblxuICBjb25zdCBpc0ZyZXNoID0gKHJlY29yZDogTWV0YWRhdGFDYWNoZVJlY29yZDxUPiB8IHVuZGVmaW5lZCk6IGJvb2xlYW4gPT5cbiAgICBCb29sZWFuKHJlY29yZCAmJiBub3coKSAtIHJlY29yZC5yZWZyZXNoZWRBdCA8IHR0bE1zKTtcblxuICBjb25zdCBjYWNoZVBhdGggPSBhc3luYyAoKTogUHJvbWlzZTxzdHJpbmc+ID0+IHtcbiAgICBwYXRoID8/PSBhd2FpdCBwYXRoUHJvbWlzZTtcbiAgICByZXR1cm4gcGF0aDtcbiAgfTtcblxuICBjb25zdCByZWFkUmVjb3JkID0gYXN5bmMgKCk6IFByb21pc2U8TWV0YWRhdGFDYWNoZVJlY29yZDxUPiB8IHVuZGVmaW5lZD4gPT4ge1xuICAgIGlmICghZGlza0VuYWJsZWQpIHJldHVybiBtZW1vcnlPbmx5LmdldChvcHRpb25zLmtleSk7XG4gICAgY29uc3QgcmVzb2x2ZWRQYXRoID0gYXdhaXQgY2FjaGVQYXRoKCk7XG4gICAgdHJ5IHtcbiAgICAgIC8vIGNhY2FjaGUgcmVhZHMgaXRzIGluLW1lbW9yeSBtZW1vIGZpcnN0IHVubGVzcyBtZW1vaXplIGlzIGZhbHNlXG4gICAgICBjb25zdCBlbnRyeSA9IGF3YWl0IGNhY2FjaGUuZ2V0KHJlc29sdmVkUGF0aCwgb3B0aW9ucy5rZXkpO1xuICAgICAgcmV0dXJuIGRlY29kZVJlY29yZDxUPihlbnRyeS5kYXRhKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGlzQ2FjaGVNaXNzKGVycm9yKSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIGxvZ2dlci53YXJuKFwibWV0YWRhdGEgY2FjaGUgY2FjYWNoZSByZWFkIGZhaWxlZFwiLCB7XG4gICAgICAgIGtleTogb3B0aW9ucy5rZXksXG4gICAgICAgIHBhdGg6IHJlc29sdmVkUGF0aCxcbiAgICAgICAgZXJyb3IsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHdyaXRlUmVjb3JkID0gYXN5bmMgKHJlY29yZDogTWV0YWRhdGFDYWNoZVJlY29yZDxUPik6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGlmICghZGlza0VuYWJsZWQpIHtcbiAgICAgIG1lbW9yeU9ubHkuc2V0KG9wdGlvbnMua2V5LCByZWNvcmQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCByZXNvbHZlZFBhdGggPSBhd2FpdCBjYWNoZVBhdGgoKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgY2FjYWNoZS5wdXQocmVzb2x2ZWRQYXRoLCBvcHRpb25zLmtleSwgYCR7SlNPTi5zdHJpbmdpZnkocmVjb3JkKX1cXG5gLCB7XG4gICAgICAgIG1lbW9pemU6IHRydWUsXG4gICAgICAgIG1ldGFkYXRhOiB7IHJlZnJlc2hlZEF0OiByZWNvcmQucmVmcmVzaGVkQXQgfSxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBsb2dnZXIud2FybihcIm1ldGFkYXRhIGNhY2hlIGNhY2FjaGUgd3JpdGUgZmFpbGVkXCIsIHtcbiAgICAgICAga2V5OiBvcHRpb25zLmtleSxcbiAgICAgICAgcGF0aDogcmVzb2x2ZWRQYXRoLFxuICAgICAgICBlcnJvcixcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBwZXJzaXN0ID0gYXN5bmMgKHZhbHVlOiBULCByZWZyZXNoZWRBdCA9IG5vdygpKTogUHJvbWlzZTxUPiA9PiB7XG4gICAgYXdhaXQgd3JpdGVSZWNvcmQoeyByZWZyZXNoZWRBdCwgdmFsdWUgfSk7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9O1xuXG4gIGNvbnN0IHJlZnJlc2ggPSBhc3luYyAoZm9yY2U6IGJvb2xlYW4pOiBQcm9taXNlPFQ+ID0+IHtcbiAgICBjb25zdCByZXNvbHZlZFBhdGggPSBhd2FpdCBjYWNoZVBhdGgoKTtcbiAgICByZXR1cm4gY29hbGVzY2UoZmxpZ2h0S2V5KHJlc29sdmVkUGF0aCksIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHByZXZpb3VzID0gYXdhaXQgcmVhZFJlY29yZCgpO1xuICAgICAgaWYgKCFmb3JjZSAmJiBpc0ZyZXNoKHByZXZpb3VzKSkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZVZhbHVlKHtcbiAgICAgICAgICBmcmVzaDogdW5kZWZpbmVkLFxuICAgICAgICAgIHByZXZpb3VzOiBwcmV2aW91cz8udmFsdWUsXG4gICAgICAgICAgZmFsbGJhY2s6IG9wdGlvbnMuZmFsbGJhY2ssXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBsZXQgZnJlc2g6IFQgfCB1bmRlZmluZWQ7XG4gICAgICBpZiAob3B0aW9ucy5sb2FkKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgZnJlc2ggPSBhd2FpdCBvcHRpb25zLmxvYWQoKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBsb2dnZXIud2FybihcIm1ldGFkYXRhIGNhY2hlIHJlZnJlc2ggZmFpbGVkOyBrZWVwaW5nIGxhc3Qga25vd24gZ29vZFwiLCB7XG4gICAgICAgICAgICBrZXk6IG9wdGlvbnMua2V5LFxuICAgICAgICAgICAgZXJyb3IsXG4gICAgICAgICAgICBwYXRoOiByZXNvbHZlZFBhdGgsXG4gICAgICAgICAgICBkaXNrRW5hYmxlZCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCB2YWx1ZSA9IHJlc29sdmVWYWx1ZSh7XG4gICAgICAgIGZyZXNoLFxuICAgICAgICBwcmV2aW91czogcHJldmlvdXM/LnZhbHVlLFxuICAgICAgICBmYWxsYmFjazogb3B0aW9ucy5mYWxsYmFjayxcbiAgICAgIH0pO1xuICAgICAgaWYgKGZyZXNoICE9PSB1bmRlZmluZWQgfHwgIXByZXZpb3VzKSB7XG4gICAgICAgIGF3YWl0IHBlcnNpc3QodmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgZ2V0IHBhdGgoKSB7XG4gICAgICBpZiAoIXBhdGgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwibWV0YWRhdGEgY2FjaGUgcGF0aCBpcyBub3QgcmVzb2x2ZWQgdW50aWwgdGhlIGZpcnN0IGNhY2hlIHJlYWRcIik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcGF0aDtcbiAgICB9LFxuICAgIGRpc2tFbmFibGVkLFxuICAgIGdldDogKCkgPT4gcmVmcmVzaChmYWxzZSksXG4gICAgcGVlazogYXN5bmMgKCkgPT4gKGF3YWl0IHJlYWRSZWNvcmQoKSk/LnZhbHVlLFxuICAgIHJlZnJlc2g6ICgpID0+IHJlZnJlc2godHJ1ZSksXG4gICAgdXBkYXRlOiBhc3luYyAobXV0YXRvcikgPT4ge1xuICAgICAgY29uc3QgcmVzb2x2ZWRQYXRoID0gYXdhaXQgY2FjaGVQYXRoKCk7XG4gICAgICByZXR1cm4gY29hbGVzY2UoZmxpZ2h0S2V5KHJlc29sdmVkUGF0aCwgXCI6dXBkYXRlXCIpLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzID0gYXdhaXQgcmVhZFJlY29yZCgpO1xuICAgICAgICBjb25zdCBiYXNlbGluZSA9IHJlc29sdmVWYWx1ZSh7XG4gICAgICAgICAgZnJlc2g6IHVuZGVmaW5lZCxcbiAgICAgICAgICBwcmV2aW91czogcHJldmlvdXM/LnZhbHVlLFxuICAgICAgICAgIGZhbGxiYWNrOiBvcHRpb25zLmZhbGxiYWNrLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHBlcnNpc3QobXV0YXRvcihiYXNlbGluZSkpO1xuICAgICAgfSk7XG4gICAgfSxcbiAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZUNhY2hlRGlyKG9wdGlvbnM6IHtcbiAgcmVhZG9ubHkgY2FjaGVEaXI/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHZlcnNpb24/OiBzdHJpbmc7XG59KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgaWYgKG9wdGlvbnMuY2FjaGVEaXIpIHJldHVybiBvcHRpb25zLmNhY2hlRGlyO1xuICBjb25zdCB2ZXJzaW9uID0gb3B0aW9ucy52ZXJzaW9uID8/IChhd2FpdCBpbXBvcnQoXCIuLi9pbmRleC50c1wiKSkuUEFDS0FHRV9WRVJTSU9OO1xuICByZXR1cm4gZGVmYXVsdE1ldGFkYXRhQ2FjaGVEaXIodmVyc2lvbik7XG59XG5cbi8qKiBQcmVmZXIgYSBub24tZW1wdHkgZnJlc2ggYXJyYXksIGVsc2UgcHJldmlvdXMsIGVsc2UgZmFsbGJhY2suICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VQcmVmZXJGcmVzaExpc3Q8VD4oaW5wdXQ6IE1ldGFkYXRhQ2FjaGVNZXJnZUlucHV0PHJlYWRvbmx5IFRbXT4pOiBUW10ge1xuICBpZiAoaW5wdXQuZnJlc2ggJiYgaW5wdXQuZnJlc2gubGVuZ3RoID4gMCkgcmV0dXJuIFsuLi5pbnB1dC5mcmVzaF07XG4gIGlmIChpbnB1dC5wcmV2aW91cyAmJiBpbnB1dC5wcmV2aW91cy5sZW5ndGggPiAwKSByZXR1cm4gWy4uLmlucHV0LnByZXZpb3VzXTtcbiAgcmV0dXJuIFsuLi5pbnB1dC5mYWxsYmFja107XG59XG5cbi8qKlxuICogU2hhbGxvdy1tZXJnZSByZWNvcmQgY2F0YWxvZ3VlczogZmFsbGJhY2ssIHRoZW4gcHJldmlvdXMsIHRoZW4gZnJlc2gga2V5cy5cbiAqIEZyZXNoIHZhbHVlcyB3aW4gcGVyIGtleS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlUHJlZmVyRnJlc2hSZWNvcmQ8VD4oXG4gIGlucHV0OiBNZXRhZGF0YUNhY2hlTWVyZ2VJbnB1dDxSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBUPj4+LFxuKTogUmVjb3JkPHN0cmluZywgVD4ge1xuICByZXR1cm4ge1xuICAgIC4uLmlucHV0LmZhbGxiYWNrLFxuICAgIC4uLihpbnB1dC5wcmV2aW91cyA/PyB7fSksXG4gICAgLi4uKGlucHV0LmZyZXNoID8/IHt9KSxcbiAgfTtcbn1cblxuLyoqIFRlc3QgaGVscGVyOiB3aXBlIGEgY2FjYWNoZSByb290IGFuZCBjbGVhciBjYWNhY2hlIG1lbW9pemF0aW9uLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc2V0TWV0YWRhdGFDYWNoZURpcihjYWNoZURpcjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIHRyeSB7XG4gICAgYXdhaXQgY2FjYWNoZS5ybS5hbGwoY2FjaGVEaXIpO1xuICB9IGNhdGNoIHtcbiAgICAvLyBlbXB0eSAvIG1pc3NpbmcgY2FjaGUgaXMgZmluZVxuICB9XG4gIGNhY2FjaGUuY2xlYXJNZW1vaXplZCgpO1xuICBmb3IgKGNvbnN0IGtleSBvZiBbLi4uaW5mbGlnaHQua2V5cygpXSkge1xuICAgIGlmIChrZXkuc3RhcnRzV2l0aChgJHtjYWNoZURpcn06OmApKSBpbmZsaWdodC5kZWxldGUoa2V5KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjb2FsZXNjZTxUPihrZXk6IHN0cmluZywgd29yazogKCkgPT4gUHJvbWlzZTxUPik6IFByb21pc2U8VD4ge1xuICBjb25zdCBleGlzdGluZyA9IGluZmxpZ2h0LmdldChrZXkpO1xuICBpZiAoZXhpc3RpbmcpIHJldHVybiBleGlzdGluZyBhcyBQcm9taXNlPFQ+O1xuICBjb25zdCBwZW5kaW5nID0gd29yaygpLmZpbmFsbHkoKCkgPT4ge1xuICAgIGlmIChpbmZsaWdodC5nZXQoa2V5KSA9PT0gcGVuZGluZykgaW5mbGlnaHQuZGVsZXRlKGtleSk7XG4gIH0pO1xuICBpbmZsaWdodC5zZXQoa2V5LCBwZW5kaW5nKTtcbiAgcmV0dXJuIHBlbmRpbmc7XG59XG5cbmZ1bmN0aW9uIGRlY29kZVJlY29yZDxUPihkYXRhOiBCdWZmZXIpOiBNZXRhZGF0YUNhY2hlUmVjb3JkPFQ+IHwgdW5kZWZpbmVkIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKGRhdGEudG9TdHJpbmcoXCJ1dGY4XCIpKSBhcyB1bmtub3duO1xuICAgIGlmIChcbiAgICAgICFwYXJzZWQgfHxcbiAgICAgIHR5cGVvZiBwYXJzZWQgIT09IFwib2JqZWN0XCIgfHxcbiAgICAgIHR5cGVvZiAocGFyc2VkIGFzIE1ldGFkYXRhQ2FjaGVSZWNvcmQ8VD4pLnJlZnJlc2hlZEF0ICE9PSBcIm51bWJlclwiXG4gICAgKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gcGFyc2VkIGFzIE1ldGFkYXRhQ2FjaGVSZWNvcmQ8VD47XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNDYWNoZU1pc3MoZXJyb3I6IHVua25vd24pOiBib29sZWFuIHtcbiAgcmV0dXJuIEJvb2xlYW4oXG4gICAgZXJyb3IgJiZcbiAgICB0eXBlb2YgZXJyb3IgPT09IFwib2JqZWN0XCIgJiZcbiAgICBcImNvZGVcIiBpbiBlcnJvciAmJlxuICAgIChlcnJvciBhcyB7IGNvZGU/OiBzdHJpbmcgfSkuY29kZSA9PT0gXCJFTk9FTlRcIixcbiAgKTtcbn1cblxuIl19
234
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEtY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWV0YWRhdGEtY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXBDLE9BQU8sS0FBSyxnQkFBZ0IsTUFBTSwwQ0FBMEMsQ0FBQztBQUM3RSxPQUFPLEtBQUssR0FBRyxNQUFNLDRCQUE0QixDQUFDO0FBQ2xELE9BQU8sT0FBTyxNQUFNLFNBQVMsQ0FBQztBQUM5QixPQUFPLFFBQVEsTUFBTSxXQUFXLENBQUM7QUFFakMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFaEUsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0FBT2xELElBQUksc0JBQTRELENBQUM7QUFFakUsU0FBUyxlQUFlO0lBQ3RCLHNCQUFzQixLQUFLLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDOUQsVUFBVSxFQUFFLEdBQUcsQ0FBQyxrQkFBa0I7UUFDbEMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxlQUFlO0tBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ0osT0FBTyxzQkFBc0IsQ0FBQztBQUNoQyxDQUFDO0FBMERELE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxFQUE0QixDQUFDO0FBRXJELGdGQUFnRjtBQUNoRixNQUFNLFVBQVUsdUJBQXVCLENBQUMsT0FBZTtJQUNyRCxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ25FLE9BQU8sT0FBTyxDQUFDLGNBQWMsRUFBRSxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFD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QU8sQ0FBQyxDQUFDO0lBQzNCLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBSSxJQUFZO0lBQ25DLElBQUksQ0FBQztRQUNILE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBWSxDQUFDO1FBQzVELElBQ0UsQ0FBQyxNQUFNO1lBQ1AsT0FBTyxNQUFNLEtBQUssUUFBUTtZQUMxQixPQUFRLE1BQWlDLENBQUMsV0FBVyxLQUFLLFFBQVEsRUFDbEUsQ0FBQztZQUNELE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFDRCxPQUFPLE1BQWdDLENBQUM7SUFDMUMsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsS0FBYztJQUNqQyxPQUFPLE9BQU8sQ0FDWixLQUFLO1FBQ0wsT0FBTyxLQUFLLEtBQUssUUFBUTtRQUN6QixNQUFNLElBQUksS0FBSztRQUNkLEtBQTJCLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FDL0MsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFnbm9zdGljIGRhaWx5IG1ldGFkYXRhIGNhY2hlIG9uIHtAbGluayBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9jYWNhY2hlIHwgY2FjYWNoZX0uXG4gKlxuICogVXNlcyBjYWNhY2hlJ3MgYnVpbHQtaW4gbWVtb3J5IG1lbW9pemF0aW9uIChgbWVtb2l6ZTogdHJ1ZWAgb24gcHV0OyBnZXRzIHJlYWRcbiAqIHRoZSBpbi1tZW1vcnkgbGF5ZXIgYnkgZGVmYXVsdCkgd2l0aCBjb250ZW50LWFkZHJlc3NlZCBkaXNrIHVuZGVyXG4gKiBgZW52LXBhdGhzKFwiZGJ4LXRvb2xzXCIpLmNhY2hlL21vZGVsLWdhdGV3YXkvPHZlcnNpb24+L2AuIERpc2sgcGVyc2lzdGVuY2UgaXNcbiAqIGRpc2FibGVkIGluc2lkZSBhIERhdGFicmlja3MgQXBwICh7QGxpbmsgZW52aXJvbm1lbnRVdGlscy5pc0RhdGFicmlja3NBcHBFbnZ9KTtcbiAqIHRob3NlIHByb2Nlc3NlcyBrZWVwIGEgcHJvY2Vzcy1sb2NhbCBNYXAgb25seS5cbiAqXG4gKiBFYWNoIGNhY2hlIG93bnMgYSBrZXksIGhhcmQtY29kZWQgZmFsbGJhY2ssIG9wdGlvbmFsIG5ldHdvcmsgbG9hZGVyLCBhbmQgYVxuICogbWVyZ2VyIHRoYXQgY29tYmluZXMgZnJlc2ggLyBwcmV2aW91cyAvIGZhbGxiYWNrIHZhbHVlcy4gRnJlc2huZXNzIGlzIHRoZVxuICogZW52ZWxvcGUgYHJlZnJlc2hlZEF0YCB3aW5kb3cgKGRlZmF1bHQgb25lIGRheSksIG5vdCBjYWNhY2hlJ3Mgc2hvcnQgTFJVIFRUTC5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gXCJub2RlOnBhdGhcIjtcblxuaW1wb3J0ICogYXMgZW52aXJvbm1lbnRVdGlscyBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZS9lbnZpcm9ubWVudC11dGlsc1wiO1xuaW1wb3J0ICogYXMgbG9nIGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlL2xvZ1wiO1xuaW1wb3J0IGNhY2FjaGUgZnJvbSBcImNhY2FjaGVcIjtcbmltcG9ydCBlbnZQYXRocyBmcm9tIFwiZW52LXBhdGhzXCI7XG5cbmltcG9ydCB7IE1PREVMX01FVEFEQVRBX1RUTF9NUyB9IGZyb20gXCIuL19tZXRhZGF0YS1jb250cmFjdC50c1wiO1xuXG5jb25zdCBsb2dnZXIgPSBsb2cubG9nZ2VyKFwibW9kZWwvbWV0YWRhdGEtY2FjaGVcIik7XG5cbmludGVyZmFjZSBQYWNrYWdlSWRlbnRpdHkge1xuICByZWFkb25seSBpZGVudGlmaWVyOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcbn1cblxubGV0IHBhY2thZ2VJZGVudGl0eVByb21pc2U6IFByb21pc2U8UGFja2FnZUlkZW50aXR5PiB8IHVuZGVmaW5lZDtcblxuZnVuY3Rpb24gcGFja2FnZUlkZW50aXR5KCk6IFByb21pc2U8UGFja2FnZUlkZW50aXR5PiB7XG4gIHBhY2thZ2VJZGVudGl0eVByb21pc2UgPz89IGltcG9ydChcIi4uL2luZGV4LnRzXCIpLnRoZW4oKG1vZCkgPT4gKHtcbiAgICBpZGVudGlmaWVyOiBtb2QuUEFDS0FHRV9JREVOVElGSUVSLFxuICAgIHZlcnNpb246IG1vZC5QQUNLQUdFX1ZFUlNJT04sXG4gIH0pKTtcbiAgcmV0dXJuIHBhY2thZ2VJZGVudGl0eVByb21pc2U7XG59XG5cbi8qKiBFbnZlbG9wZSBzdG9yZWQgYXMgSlNPTiBieXRlcyBpbiBjYWNhY2hlIGZvciBldmVyeSBrZXkuICovXG5leHBvcnQgaW50ZXJmYWNlIE1ldGFkYXRhQ2FjaGVSZWNvcmQ8VD4ge1xuICByZWFkb25seSByZWZyZXNoZWRBdDogbnVtYmVyO1xuICByZWFkb25seSB2YWx1ZTogVDtcbn1cblxuLyoqIEZhY3RvcnkgaW5wdXRzIGZvciBvbmUgbmFtZWQgbWV0YWRhdGEgY2FjaGUuICovXG5leHBvcnQgaW50ZXJmYWNlIE1ldGFkYXRhQ2FjaGVPcHRpb25zPFQ+IHtcbiAgLyoqIFN0YWJsZSBjYWNhY2hlIGtleS4gKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG4gIC8qKiBIYXJkLWNvZGVkIC8gY29tbWl0dGVkIGJhc2VsaW5lIHVzZWQgd2hlbiBzdG9yZSBhbmQgbG9hZCBib3RoIG1pc3MuICovXG4gIHJlYWRvbmx5IGZhbGxiYWNrOiBUO1xuICAvKipcbiAgICogUmVmcmVzaCBzb3VyY2UuIFdoZW4gb21pdHRlZCB0aGUgY2FjaGUgb25seSBzZXJ2ZXMgc3RvcmUgKyBmYWxsYmFjayBhbmRcbiAgICoge0BsaW5rIE1ldGFkYXRhQ2FjaGUudXBkYXRlfSBtdXRhdGlvbnMgKGZvciBleGFtcGxlIGVycm9yLWxlYXJuZWQgdmFsdWVzKS5cbiAgICovXG4gIHJlYWRvbmx5IGxvYWQ/OiAoKSA9PiBQcm9taXNlPFQ+O1xuICAvKiogQ29tYmluZSBhIGZyZXNoIGxvYWQsIHByaW9yIHN0b3JlIHZhbHVlLCBhbmQgdGhlIGhhcmQtY29kZWQgZmFsbGJhY2suICovXG4gIHJlYWRvbmx5IG1lcmdlOiAoaW5wdXQ6IE1ldGFkYXRhQ2FjaGVNZXJnZUlucHV0PFQ+KSA9PiBUO1xuICAvKiogRnJlc2huZXNzIHdpbmRvdzsgZGVmYXVsdHMgdG8ge0BsaW5rIE1PREVMX01FVEFEQVRBX1RUTF9NU30gKG9uZSBkYXkpLiAqL1xuICByZWFkb25seSB0dGxNcz86IG51bWJlcjtcbiAgLyoqIFBhY2thZ2UgdmVyc2lvbiBzZWdtZW50IGluIHRoZSBjYWNoZSBwYXRoLiBEZWZhdWx0cyB0byB0aGlzIHBhY2thZ2UuICovXG4gIHJlYWRvbmx5IHZlcnNpb24/OiBzdHJpbmc7XG4gIC8qKiBPdmVycmlkZSB0aGUgY2FjYWNoZSByb290IGRpcmVjdG9yeSAodGVzdHMpLiAqL1xuICByZWFkb25seSBjYWNoZURpcj86IHN0cmluZztcbiAgLyoqXG4gICAqIEZvcmNlIGRpc2sgb24vb2ZmLiBEZWZhdWx0cyB0byBvZmYgaW5zaWRlIERhdGFicmlja3MgQXBwcywgb24gb3RoZXJ3aXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZGlzaz86IGJvb2xlYW47XG4gIC8qKiBDbG9jayBvdmVycmlkZSBmb3IgdGVzdHMuICovXG4gIHJlYWRvbmx5IG5vdz86ICgpID0+IG51bWJlcjtcbn1cblxuLyoqIEFyZ3VtZW50cyBwYXNzZWQgdG8gYSBjYWNoZSBtZXJnZXIuICovXG5leHBvcnQgaW50ZXJmYWNlIE1ldGFkYXRhQ2FjaGVNZXJnZUlucHV0PFQ+IHtcbiAgcmVhZG9ubHkgZnJlc2g6IFQgfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IHByZXZpb3VzOiBUIHwgdW5kZWZpbmVkO1xuICByZWFkb25seSBmYWxsYmFjazogVDtcbn1cblxuLyoqIE9uZSB2ZXJzaW9uZWQgbWV0YWRhdGEgY2FjaGUgKGNhY2FjaGUgbWVtb3J5ICsgb3B0aW9uYWwgZGlzaykuICovXG5leHBvcnQgaW50ZXJmYWNlIE1ldGFkYXRhQ2FjaGU8VD4ge1xuICAvKiogQWJzb2x1dGUgY2FjYWNoZSByb290IGZvciB0aGlzIHBhY2thZ2UgdmVyc2lvbiAodW51c2VkIHdoZW4gZGlzayBpcyBvZmYpLiAqL1xuICByZWFkb25seSBwYXRoOiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIGNhY2FjaGUgZGlzayBwZXJzaXN0ZW5jZSBpcyBlbmFibGVkIGZvciB0aGlzIGluc3RhbmNlLiAqL1xuICByZWFkb25seSBkaXNrRW5hYmxlZDogYm9vbGVhbjtcbiAgLyoqIFJldHVybiBhIGZyZXNoLW9yLWZhbGxiYWNrIHZhbHVlLCByZWZyZXNoaW5nIHdoZW4gc3RhbGUuICovXG4gIGdldCgpOiBQcm9taXNlPFQ+O1xuICAvKiogUmVhZCBtZW1vcnkgLyBkaXNrIHdpdGhvdXQgcmVmcmVzaGluZy4gKi9cbiAgcGVlaygpOiBQcm9taXNlPFQgfCB1bmRlZmluZWQ+O1xuICAvKiogTXV0YXRlIHRoZSBjYWNoZWQgdmFsdWUgYW5kIHBlcnNpc3QgaXQuICovXG4gIHVwZGF0ZShtdXRhdG9yOiAoY3VycmVudDogVCkgPT4gVCk6IFByb21pc2U8VD47XG4gIC8qKiBGb3JjZSBhIHJlZnJlc2ggYXR0ZW1wdCBldmVuIHdoZW4gdGhlIGVudHJ5IGlzIHN0aWxsIGZyZXNoLiAqL1xuICByZWZyZXNoKCk6IFByb21pc2U8VD47XG59XG5cbmNvbnN0IGluZmxpZ2h0ID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2U8dW5rbm93bj4+KCk7XG5cbi8qKiBEZWZhdWx0IGNhY2FjaGUgcm9vdCBmb3IgYSBwYWNrYWdlIHZlcnNpb24gdW5kZXIgdGhlIGRieC10b29scyBjYWNoZSBkaXIuICovXG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdE1ldGFkYXRhQ2FjaGVEaXIodmVyc2lvbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgY2FjaGVEaXJlY3RvcnkgPSBlbnZQYXRocyhcImRieC10b29sc1wiLCB7IHN1ZmZpeDogXCJcIiB9KS5jYWNoZTtcbiAgcmV0dXJuIHJlc29sdmUoY2FjaGVEaXJlY3RvcnksIFwibW9kZWwtZ2F0ZXdheVwiLCB2ZXJzaW9uKTtcbn1cblxuLyoqIFdoZXRoZXIgbWV0YWRhdGEgY2FjaGVzIHNob3VsZCBwZXJzaXN0IHRvIGRpc2sgaW4gdGhpcyBwcm9jZXNzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ldGFkYXRhQ2FjaGVEaXNrRW5hYmxlZChlbnZpcm9ubWVudDogTm9kZUpTLlByb2Nlc3NFbnYgPSBwcm9jZXNzLmVudik6IGJvb2xlYW4ge1xuICByZXR1cm4gIWVudmlyb25tZW50VXRpbHMuaXNEYXRhYnJpY2tzQXBwRW52KGVudmlyb25tZW50KTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgb25lIGRhaWx5IGNhY2hlIGJhY2tlZCBieSBjYWNhY2hlIG1lbW9pemF0aW9uLCB3aXRoIG9wdGlvbmFsIGRpc2suXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNZXRhZGF0YUNhY2hlPFQ+KG9wdGlvbnM6IE1ldGFkYXRhQ2FjaGVPcHRpb25zPFQ+KTogTWV0YWRhdGFDYWNoZTxUPiB7XG4gIGNvbnN0IHR0bE1zID0gb3B0aW9ucy50dGxNcyA/PyBNT0RFTF9NRVRBREFUQV9UVExfTVM7XG4gIGNvbnN0IGRpc2tFbmFibGVkID0gb3B0aW9ucy5kaXNrID8/IG1ldGFkYXRhQ2FjaGVEaXNrRW5hYmxlZCgpO1xuICBjb25zdCBub3cgPSBvcHRpb25zLm5vdyA/PyBEYXRlLm5vdztcbiAgY29uc3QgcGF0aFByb21pc2UgPSByZXNvbHZlQ2FjaGVEaXIob3B0aW9ucyk7XG4gIGxldCBwYXRoID0gb3B0aW9ucy5jYWNoZURpcjtcblxuICBjb25zdCBmbGlnaHRLZXkgPSAoY2FjaGVQYXRoOiBzdHJpbmcsIHN1ZmZpeCA9IFwiXCIpOiBzdHJpbmcgPT5cbiAgICBgJHtjYWNoZVBhdGh9Ojoke29wdGlvbnMua2V5fSR7c3VmZml4fWA7XG5cbiAgLyoqIFByb2Nlc3MtbG9jYWwgc3RvcmUgdXNlZCB3aGVuIGRpc2sgaXMgb2ZmIChEYXRhYnJpY2tzIEFwcHMpLiAqL1xuICBjb25zdCBtZW1vcnlPbmx5ID0gbmV3IE1hcDxzdHJpbmcsIE1ldGFkYXRhQ2FjaGVSZWNvcmQ8VD4+KCk7XG5cbiAgY29uc3QgcmVzb2x2ZVZhbHVlID0gKGlucHV0OiBNZXRhZGF0YUNhY2hlTWVyZ2VJbnB1dDxUPik6IFQgPT4gb3B0aW9ucy5tZXJnZShpbnB1dCk7XG5cbiAgY29uc3QgaXNGcmVzaCA9IChyZWNvcmQ6IE1ldGFkYXRhQ2FjaGVSZWNvcmQ8VD4gfCB1bmRlZmluZWQpOiBib29sZWFuID0+XG4gICAgQm9vbGVhbihyZWNvcmQgJiYgbm93KCkgLSByZWNvcmQucmVmcmVzaGVkQXQgPCB0dGxNcyk7XG5cbiAgY29uc3QgY2FjaGVQYXRoID0gYXN5bmMgKCk6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gICAgcGF0aCA/Pz0gYXdhaXQgcGF0aFByb21pc2U7XG4gICAgcmV0dXJuIHBhdGg7XG4gIH07XG5cbiAgY29uc3QgcmVhZFJlY29yZCA9IGFzeW5jICgpOiBQcm9taXNlPE1ldGFkYXRhQ2FjaGVSZWNvcmQ8VD4gfCB1bmRlZmluZWQ+ID0+IHtcbiAgICBpZiAoIWRpc2tFbmFibGVkKSByZXR1cm4gbWVtb3J5T25seS5nZXQob3B0aW9ucy5rZXkpO1xuICAgIGNvbnN0IHJlc29sdmVkUGF0aCA9IGF3YWl0IGNhY2hlUGF0aCgpO1xuICAgIHRyeSB7XG4gICAgICAvLyBjYWNhY2hlIHJlYWRzIGl0cyBpbi1tZW1vcnkgbWVtbyBmaXJzdCB1bmxlc3MgbWVtb2l6ZSBpcyBmYWxzZVxuICAgICAgY29uc3QgZW50cnkgPSBhd2FpdCBjYWNhY2hlLmdldChyZXNvbHZlZFBhdGgsIG9wdGlvbnMua2V5KTtcbiAgICAgIHJldHVybiBkZWNvZGVSZWNvcmQ8VD4oZW50cnkuZGF0YSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChpc0NhY2hlTWlzcyhlcnJvcikpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICBsb2dnZXIud2FybihcIm1ldGFkYXRhIGNhY2hlIGNhY2FjaGUgcmVhZCBmYWlsZWRcIiwge1xuICAgICAgICBrZXk6IG9wdGlvbnMua2V5LFxuICAgICAgICBwYXRoOiByZXNvbHZlZFBhdGgsXG4gICAgICAgIGVycm9yLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCB3cml0ZVJlY29yZCA9IGFzeW5jIChyZWNvcmQ6IE1ldGFkYXRhQ2FjaGVSZWNvcmQ8VD4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBpZiAoIWRpc2tFbmFibGVkKSB7XG4gICAgICBtZW1vcnlPbmx5LnNldChvcHRpb25zLmtleSwgcmVjb3JkKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcmVzb2x2ZWRQYXRoID0gYXdhaXQgY2FjaGVQYXRoKCk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGNhY2FjaGUucHV0KHJlc29sdmVkUGF0aCwgb3B0aW9ucy5rZXksIGAke0pTT04uc3RyaW5naWZ5KHJlY29yZCl9XFxuYCwge1xuICAgICAgICBtZW1vaXplOiB0cnVlLFxuICAgICAgICBtZXRhZGF0YTogeyByZWZyZXNoZWRBdDogcmVjb3JkLnJlZnJlc2hlZEF0IH0sXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgbG9nZ2VyLndhcm4oXCJtZXRhZGF0YSBjYWNoZSBjYWNhY2hlIHdyaXRlIGZhaWxlZFwiLCB7XG4gICAgICAgIGtleTogb3B0aW9ucy5rZXksXG4gICAgICAgIHBhdGg6IHJlc29sdmVkUGF0aCxcbiAgICAgICAgZXJyb3IsXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgcGVyc2lzdCA9IGFzeW5jICh2YWx1ZTogVCwgcmVmcmVzaGVkQXQgPSBub3coKSk6IFByb21pc2U8VD4gPT4ge1xuICAgIGF3YWl0IHdyaXRlUmVjb3JkKHsgcmVmcmVzaGVkQXQsIHZhbHVlIH0pO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfTtcblxuICBjb25zdCByZWZyZXNoID0gYXN5bmMgKGZvcmNlOiBib29sZWFuKTogUHJvbWlzZTxUPiA9PiB7XG4gICAgY29uc3QgcmVzb2x2ZWRQYXRoID0gYXdhaXQgY2FjaGVQYXRoKCk7XG4gICAgcmV0dXJuIGNvYWxlc2NlKGZsaWdodEtleShyZXNvbHZlZFBhdGgpLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBwcmV2aW91cyA9IGF3YWl0IHJlYWRSZWNvcmQoKTtcbiAgICAgIGlmICghZm9yY2UgJiYgaXNGcmVzaChwcmV2aW91cykpIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVWYWx1ZSh7XG4gICAgICAgICAgZnJlc2g6IHVuZGVmaW5lZCxcbiAgICAgICAgICBwcmV2aW91czogcHJldmlvdXM/LnZhbHVlLFxuICAgICAgICAgIGZhbGxiYWNrOiBvcHRpb25zLmZhbGxiYWNrLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgbGV0IGZyZXNoOiBUIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKG9wdGlvbnMubG9hZCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGZyZXNoID0gYXdhaXQgb3B0aW9ucy5sb2FkKCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgbG9nZ2VyLndhcm4oXCJtZXRhZGF0YSBjYWNoZSByZWZyZXNoIGZhaWxlZDsga2VlcGluZyBsYXN0IGtub3duIGdvb2RcIiwge1xuICAgICAgICAgICAga2V5OiBvcHRpb25zLmtleSxcbiAgICAgICAgICAgIGVycm9yLFxuICAgICAgICAgICAgcGF0aDogcmVzb2x2ZWRQYXRoLFxuICAgICAgICAgICAgZGlza0VuYWJsZWQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgdmFsdWUgPSByZXNvbHZlVmFsdWUoe1xuICAgICAgICBmcmVzaCxcbiAgICAgICAgcHJldmlvdXM6IHByZXZpb3VzPy52YWx1ZSxcbiAgICAgICAgZmFsbGJhY2s6IG9wdGlvbnMuZmFsbGJhY2ssXG4gICAgICB9KTtcbiAgICAgIGlmIChmcmVzaCAhPT0gdW5kZWZpbmVkIHx8ICFwcmV2aW91cykge1xuICAgICAgICBhd2FpdCBwZXJzaXN0KHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGdldCBwYXRoKCkge1xuICAgICAgaWYgKCFwYXRoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIm1ldGFkYXRhIGNhY2hlIHBhdGggaXMgbm90IHJlc29sdmVkIHVudGlsIHRoZSBmaXJzdCBjYWNoZSByZWFkXCIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfSxcbiAgICBkaXNrRW5hYmxlZCxcbiAgICBnZXQ6ICgpID0+IHJlZnJlc2goZmFsc2UpLFxuICAgIHBlZWs6IGFzeW5jICgpID0+IChhd2FpdCByZWFkUmVjb3JkKCkpPy52YWx1ZSxcbiAgICByZWZyZXNoOiAoKSA9PiByZWZyZXNoKHRydWUpLFxuICAgIHVwZGF0ZTogYXN5bmMgKG11dGF0b3IpID0+IHtcbiAgICAgIGNvbnN0IHJlc29sdmVkUGF0aCA9IGF3YWl0IGNhY2hlUGF0aCgpO1xuICAgICAgcmV0dXJuIGNvYWxlc2NlKGZsaWdodEtleShyZXNvbHZlZFBhdGgsIFwiOnVwZGF0ZVwiKSwgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBwcmV2aW91cyA9IGF3YWl0IHJlYWRSZWNvcmQoKTtcbiAgICAgICAgY29uc3QgYmFzZWxpbmUgPSByZXNvbHZlVmFsdWUoe1xuICAgICAgICAgIGZyZXNoOiB1bmRlZmluZWQsXG4gICAgICAgICAgcHJldmlvdXM6IHByZXZpb3VzPy52YWx1ZSxcbiAgICAgICAgICBmYWxsYmFjazogb3B0aW9ucy5mYWxsYmFjayxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBwZXJzaXN0KG11dGF0b3IoYmFzZWxpbmUpKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlc29sdmVDYWNoZURpcihvcHRpb25zOiB7XG4gIHJlYWRvbmx5IGNhY2hlRGlyPzogc3RyaW5nO1xuICByZWFkb25seSB2ZXJzaW9uPzogc3RyaW5nO1xufSk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGlmIChvcHRpb25zLmNhY2hlRGlyKSByZXR1cm4gb3B0aW9ucy5jYWNoZURpcjtcbiAgY29uc3QgdmVyc2lvbiA9IG9wdGlvbnMudmVyc2lvbiA/PyAoYXdhaXQgcGFja2FnZUlkZW50aXR5KCkpLnZlcnNpb247XG4gIHJldHVybiBkZWZhdWx0TWV0YWRhdGFDYWNoZURpcih2ZXJzaW9uKTtcbn1cblxuLyoqIFByZWZlciBhIG5vbi1lbXB0eSBmcmVzaCBhcnJheSwgZWxzZSBwcmV2aW91cywgZWxzZSBmYWxsYmFjay4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZVByZWZlckZyZXNoTGlzdDxUPihpbnB1dDogTWV0YWRhdGFDYWNoZU1lcmdlSW5wdXQ8cmVhZG9ubHkgVFtdPik6IFRbXSB7XG4gIGlmIChpbnB1dC5mcmVzaCAmJiBpbnB1dC5mcmVzaC5sZW5ndGggPiAwKSByZXR1cm4gWy4uLmlucHV0LmZyZXNoXTtcbiAgaWYgKGlucHV0LnByZXZpb3VzICYmIGlucHV0LnByZXZpb3VzLmxlbmd0aCA+IDApIHJldHVybiBbLi4uaW5wdXQucHJldmlvdXNdO1xuICByZXR1cm4gWy4uLmlucHV0LmZhbGxiYWNrXTtcbn1cblxuLyoqXG4gKiBTaGFsbG93LW1lcmdlIHJlY29yZCBjYXRhbG9ndWVzOiBmYWxsYmFjaywgdGhlbiBwcmV2aW91cywgdGhlbiBmcmVzaCBrZXlzLlxuICogRnJlc2ggdmFsdWVzIHdpbiBwZXIga2V5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VQcmVmZXJGcmVzaFJlY29yZDxUPihcbiAgaW5wdXQ6IE1ldGFkYXRhQ2FjaGVNZXJnZUlucHV0PFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIFQ+Pj4sXG4pOiBSZWNvcmQ8c3RyaW5nLCBUPiB7XG4gIHJldHVybiB7XG4gICAgLi4uaW5wdXQuZmFsbGJhY2ssXG4gICAgLi4uKGlucHV0LnByZXZpb3VzID8/IHt9KSxcbiAgICAuLi4oaW5wdXQuZnJlc2ggPz8ge30pLFxuICB9O1xufVxuXG4vKiogVGVzdCBoZWxwZXI6IHdpcGUgYSBjYWNhY2hlIHJvb3QgYW5kIGNsZWFyIGNhY2FjaGUgbWVtb2l6YXRpb24uICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVzZXRNZXRhZGF0YUNhY2hlRGlyKGNhY2hlRGlyOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgdHJ5IHtcbiAgICBhd2FpdCBjYWNhY2hlLnJtLmFsbChjYWNoZURpcik7XG4gIH0gY2F0Y2gge1xuICAgIC8vIGVtcHR5IC8gbWlzc2luZyBjYWNoZSBpcyBmaW5lXG4gIH1cbiAgY2FjYWNoZS5jbGVhck1lbW9pemVkKCk7XG4gIGZvciAoY29uc3Qga2V5IG9mIFsuLi5pbmZsaWdodC5rZXlzKCldKSB7XG4gICAgaWYgKGtleS5zdGFydHNXaXRoKGAke2NhY2hlRGlyfTo6YCkpIGluZmxpZ2h0LmRlbGV0ZShrZXkpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNvYWxlc2NlPFQ+KGtleTogc3RyaW5nLCB3b3JrOiAoKSA9PiBQcm9taXNlPFQ+KTogUHJvbWlzZTxUPiB7XG4gIGNvbnN0IGV4aXN0aW5nID0gaW5mbGlnaHQuZ2V0KGtleSk7XG4gIGlmIChleGlzdGluZykgcmV0dXJuIGV4aXN0aW5nIGFzIFByb21pc2U8VD47XG4gIGNvbnN0IHBlbmRpbmcgPSB3b3JrKCkuZmluYWxseSgoKSA9PiB7XG4gICAgaWYgKGluZmxpZ2h0LmdldChrZXkpID09PSBwZW5kaW5nKSBpbmZsaWdodC5kZWxldGUoa2V5KTtcbiAgfSk7XG4gIGluZmxpZ2h0LnNldChrZXksIHBlbmRpbmcpO1xuICByZXR1cm4gcGVuZGluZztcbn1cblxuZnVuY3Rpb24gZGVjb2RlUmVjb3JkPFQ+KGRhdGE6IEJ1ZmZlcik6IE1ldGFkYXRhQ2FjaGVSZWNvcmQ8VD4gfCB1bmRlZmluZWQge1xuICB0cnkge1xuICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UoZGF0YS50b1N0cmluZyhcInV0ZjhcIikpIGFzIHVua25vd247XG4gICAgaWYgKFxuICAgICAgIXBhcnNlZCB8fFxuICAgICAgdHlwZW9mIHBhcnNlZCAhPT0gXCJvYmplY3RcIiB8fFxuICAgICAgdHlwZW9mIChwYXJzZWQgYXMgTWV0YWRhdGFDYWNoZVJlY29yZDxUPikucmVmcmVzaGVkQXQgIT09IFwibnVtYmVyXCJcbiAgICApIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiBwYXJzZWQgYXMgTWV0YWRhdGFDYWNoZVJlY29yZDxUPjtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0NhY2hlTWlzcyhlcnJvcjogdW5rbm93bik6IGJvb2xlYW4ge1xuICByZXR1cm4gQm9vbGVhbihcbiAgICBlcnJvciAmJlxuICAgIHR5cGVvZiBlcnJvciA9PT0gXCJvYmplY3RcIiAmJlxuICAgIFwiY29kZVwiIGluIGVycm9yICYmXG4gICAgKGVycm9yIGFzIHsgY29kZT86IHN0cmluZyB9KS5jb2RlID09PSBcIkVOT0VOVFwiLFxuICApO1xufVxuXG4iXX0=
package/package.json CHANGED
@@ -27,11 +27,11 @@
27
27
  },
28
28
  "dependencies": {
29
29
  "@databricks/appkit": "0.81.0",
30
- "@dbx-tools/appkit": "^0.9.36",
31
- "@dbx-tools/auth": "^0.9.36",
32
- "@dbx-tools/shared-auth": "^0.9.36",
33
- "@dbx-tools/shared-core": "^0.9.36",
34
- "@dbx-tools/shared-model": "^0.9.36",
30
+ "@dbx-tools/appkit": "^0.9.37",
31
+ "@dbx-tools/auth": "^0.9.37",
32
+ "@dbx-tools/shared-auth": "^0.9.37",
33
+ "@dbx-tools/shared-core": "^0.9.37",
34
+ "@dbx-tools/shared-model": "^0.9.37",
35
35
  "cacache": "^21.0.1",
36
36
  "env-paths": "^4.0.0",
37
37
  "fuse.js": "^7.4.2"
@@ -98,7 +98,7 @@
98
98
  "./package.json": "./package.json"
99
99
  }
100
100
  },
101
- "version": "0.9.36",
101
+ "version": "0.9.37",
102
102
  "types": "./lib/index.d.ts",
103
103
  "dbxToolsConfig": {
104
104
  "tags": [
@@ -25,6 +25,21 @@ import { MODEL_METADATA_TTL_MS } from "./_metadata-contract.ts";
25
25
 
26
26
  const logger = log.logger("model/metadata-cache");
27
27
 
28
+ interface PackageIdentity {
29
+ readonly identifier: string;
30
+ readonly version: string;
31
+ }
32
+
33
+ let packageIdentityPromise: Promise<PackageIdentity> | undefined;
34
+
35
+ function packageIdentity(): Promise<PackageIdentity> {
36
+ packageIdentityPromise ??= import("../index.ts").then((mod) => ({
37
+ identifier: mod.PACKAGE_IDENTIFIER,
38
+ version: mod.PACKAGE_VERSION,
39
+ }));
40
+ return packageIdentityPromise;
41
+ }
42
+
28
43
  /** Envelope stored as JSON bytes in cacache for every key. */
29
44
  export interface MetadataCacheRecord<T> {
30
45
  readonly refreshedAt: number;
@@ -232,7 +247,7 @@ async function resolveCacheDir(options: {
232
247
  readonly version?: string;
233
248
  }): Promise<string> {
234
249
  if (options.cacheDir) return options.cacheDir;
235
- const version = options.version ?? (await import("../index.ts")).PACKAGE_VERSION;
250
+ const version = options.version ?? (await packageIdentity()).version;
236
251
  return defaultMetadataCacheDir(version);
237
252
  }
238
253