scanoss 0.31.1 → 0.31.2

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/CHANGELOG.md CHANGED
@@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file. See [standa
5
5
  ## [Unreleased]
6
6
  - Upcoming changes...
7
7
 
8
+ ## [0.31.2] (2026-02-03)
9
+ ### Fixed
10
+ - Fixed CryptographyScanner hang when processing empty file list
11
+
8
12
  ## [0.31.1] (2026-02-02)
9
13
  ### Fixed
10
14
  - Polyfill global `File` for `libarchive.js` in environments where it is not available
@@ -230,3 +234,4 @@ All notable changes to this project will be documented in this file. See [standa
230
234
  ### [0.30.1](https://github.com/scanoss/scanoss.js/compare/v0.30.0...v0.30.1) (2026-01-27)
231
235
  ### [0.31.0](https://github.com/scanoss/scanoss.js/compare/v0.30.1...v0.31.0) (2026-02-02)
232
236
  ### [0.31.1](https://github.com/scanoss/scanoss.js/compare/v0.31.0...v0.31.1) (2026-02-02)
237
+ ### [0.31.2](https://github.com/scanoss/scanoss.js/compare/v0.31.1...v0.31.2) (2026-02-03)
@@ -53,6 +53,8 @@ class FileAlgorithmScanner extends BaseCryptographyScanner_1.BaseCryptographySca
53
53
  * @returns A promise that resolves to an ILocalCryptographyResponse.
54
54
  */
55
55
  async scan(files) {
56
+ if (files.length <= 0)
57
+ return [];
56
58
  const workerPool = new WorkerPool_1.WorkerPool(AlgorithmProcessor_1.cryptographyAlgorithmProcessor, this.config.THREADS);
57
59
  const jobs = await this.buildJobs(files);
58
60
  workerPool.loadJobs(jobs);
@@ -84,4 +86,4 @@ class FileAlgorithmScanner extends BaseCryptographyScanner_1.BaseCryptographySca
84
86
  }
85
87
  }
86
88
  exports.FileAlgorithmScanner = FileAlgorithmScanner;
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmlsZUFsZ29yaXRobVNjYW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvc2RrL0NyeXB0b2dyYXBoeS9BbGdvcml0aG0vRmlsZXMvRmlsZUFsZ29yaXRobVNjYW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNENBQW9CO0FBQ3BCLDZDQUEwQztBQU8xQyxnREFBd0I7QUFDeEIsNENBR3lCO0FBQ3pCLHdEQUFxRDtBQUNyRCxzRUFBbUU7QUFDbkUsNkRBQXNFO0FBQ3RFLDJFQUF3RTtBQU14RTs7R0FFRztBQUNILE1BQWEsb0JBQXFCLFNBQVEsaURBR047SUFJbEM7Ozs7T0FJRztJQUNILFlBQVksU0FBb0IsRUFBRSxlQUFnRDtRQUNoRixLQUFLLENBQUMsU0FBUyxFQUFDLGVBQWUsQ0FBQyxDQUFDO1FBUmxCLDJDQUFzQyxHQUFHLHFDQUFxQyxDQUFDO0lBU2hHLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQWU7UUFDckMsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ2pGLE1BQU0sS0FBSyxHQUFHLElBQUEsa0NBQXlCLEVBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMzRCxNQUFNLFlBQVksR0FBRyxJQUFBLHdCQUFlLEVBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN4RCxNQUFNLGVBQWUsR0FBd0MsRUFBRSxDQUFDO1FBQ2hFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNsQixNQUFNLE1BQU0sR0FBRyxJQUFJLFNBQUcsQ0FBMEI7Z0JBQzlDLElBQUksRUFBQyxDQUFDO2dCQUNOLEtBQUs7Z0JBQ0wsWUFBWTthQUNiLENBQUMsQ0FBQztZQUNILGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDOUIsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBb0I7UUFDcEMsTUFBTSxVQUFVLEdBQUcsSUFBSSx1QkFBVSxDQUFzRCxtREFBOEIsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVJLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3pCLE1BQU0sT0FBTyxHQUFHLE1BQU0sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxlQUFlLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFZO1FBQ2xDLElBQUksQ0FBQyxDQUFDLE1BQU0sWUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUU7WUFDaEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sSUFBSSxHQUFHLElBQUksV0FBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLE9BQU8sTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRDs7O09BR0c7SUFDSyxLQUFLLENBQUMsU0FBUyxDQUFDLFFBQWlCO1FBQ3ZDLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBRSxjQUFJLENBQUMsSUFBSSxDQUNyRCxTQUFTLEVBQ1QsK0JBQStCLEVBQUUsSUFBSSxDQUFDLHNDQUFzQyxDQUFDLENBQUM7UUFDaEYsTUFBTSxLQUFLLEdBQUcsTUFBTSxZQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUMsT0FBTyxDQUFDLENBQUM7UUFDakUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7Q0FFRjtBQS9FRCxvREErRUMifQ==
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmlsZUFsZ29yaXRobVNjYW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvc2RrL0NyeXB0b2dyYXBoeS9BbGdvcml0aG0vRmlsZXMvRmlsZUFsZ29yaXRobVNjYW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNENBQW9CO0FBQ3BCLDZDQUEwQztBQU8xQyxnREFBd0I7QUFDeEIsNENBR3lCO0FBQ3pCLHdEQUFxRDtBQUNyRCxzRUFBbUU7QUFDbkUsNkRBQXNFO0FBQ3RFLDJFQUF3RTtBQU14RTs7R0FFRztBQUNILE1BQWEsb0JBQXFCLFNBQVEsaURBR047SUFJbEM7Ozs7T0FJRztJQUNILFlBQVksU0FBb0IsRUFBRSxlQUFnRDtRQUNoRixLQUFLLENBQUMsU0FBUyxFQUFDLGVBQWUsQ0FBQyxDQUFDO1FBUmxCLDJDQUFzQyxHQUFHLHFDQUFxQyxDQUFDO0lBU2hHLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQWU7UUFDckMsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ2pGLE1BQU0sS0FBSyxHQUFHLElBQUEsa0NBQXlCLEVBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMzRCxNQUFNLFlBQVksR0FBRyxJQUFBLHdCQUFlLEVBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN4RCxNQUFNLGVBQWUsR0FBd0MsRUFBRSxDQUFDO1FBQ2hFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNsQixNQUFNLE1BQU0sR0FBRyxJQUFJLFNBQUcsQ0FBMEI7Z0JBQzlDLElBQUksRUFBQyxDQUFDO2dCQUNOLEtBQUs7Z0JBQ0wsWUFBWTthQUNiLENBQUMsQ0FBQztZQUNILGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDOUIsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBb0I7UUFDcEMsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUM7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNqQyxNQUFNLFVBQVUsR0FBRyxJQUFJLHVCQUFVLENBQXNELG1EQUE4QixFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUksTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDekIsTUFBTSxPQUFPLEdBQUcsTUFBTSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0RCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQVk7UUFDbEMsSUFBSSxDQUFDLENBQUMsTUFBTSxZQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRTtZQUNoRCxNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7UUFDdkQsTUFBTSxJQUFJLEdBQUcsSUFBSSxXQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsT0FBTyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7T0FHRztJQUNLLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBaUI7UUFDdkMsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFFLGNBQUksQ0FBQyxJQUFJLENBQ3JELFNBQVMsRUFDVCwrQkFBK0IsRUFBRSxJQUFJLENBQUMsc0NBQXNDLENBQUMsQ0FBQztRQUNoRixNQUFNLEtBQUssR0FBRyxNQUFNLFlBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFBQyxPQUFPLENBQUMsQ0FBQztRQUNqRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztDQUVGO0FBaEZELG9EQWdGQyJ9
@@ -48,6 +48,8 @@ class FileHintScanner extends BaseCryptographyScanner_1.BaseCryptographyScanner
48
48
  * @returns A promise that resolves to an ILocalCryptographyResponse.
49
49
  */
50
50
  async scan(files) {
51
+ if (files.length <= 0)
52
+ return [];
51
53
  const workerPool = new WorkerPool_1.WorkerPool(HintProcessor_1.cryptographyHintProcessor, this.config.THREADS);
52
54
  const jobs = await this.buildJobs(files);
53
55
  workerPool.loadJobs(jobs);
@@ -66,4 +68,4 @@ class FileHintScanner extends BaseCryptographyScanner_1.BaseCryptographyScanner
66
68
  }
67
69
  }
68
70
  exports.FileHintScanner = FileHintScanner;
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmlsZUhpbnRTY2FubmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3Nkay9DcnlwdG9ncmFwaHkvSGludC9GaWxlcy9GaWxlSGludFNjYW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0Esd0RBQXFEO0FBS3JELGdEQUF3QjtBQUN4Qiw0Q0FBb0I7QUFDcEIsc0VBQW1FO0FBQ25FLG1EQUE0RDtBQUM1RCwyRUFBd0U7QUFNeEU7O0dBRUc7QUFDSCxNQUFhLGVBQ1gsU0FBUSxpREFHdUI7SUFJL0I7Ozs7T0FJRztJQUNILFlBQVksU0FBb0IsRUFBRSxlQUFnRDtRQUNoRixLQUFLLENBQUMsU0FBUyxFQUFDLGVBQWUsQ0FBQyxDQUFDO1FBUmxCLHlDQUFvQyxHQUFHLG1DQUFtQyxDQUFDO0lBUzVGLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQWU7UUFDckMsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNuRSxNQUFNLElBQUksR0FBbUMsRUFBRSxDQUFDO1FBQ2hELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNsQixNQUFNLE1BQU0sR0FBRyxJQUFJLFNBQUcsQ0FBcUI7Z0JBQ3pDLElBQUksRUFBQyxDQUFDO2dCQUNOLEtBQUs7YUFDTixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ25CLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBb0I7UUFDcEMsTUFBTSxVQUFVLEdBQUcsSUFBSSx1QkFBVSxDQUE0Qyx5Q0FBeUIsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdILE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3pCLE1BQU0sT0FBTyxHQUFHLE1BQU0sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDaEQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7T0FHRztJQUNLLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBaUI7UUFDdkMsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFFLGNBQUksQ0FBQyxJQUFJLENBQ3JELFNBQVMsRUFDVCwrQkFBK0IsRUFBRSxJQUFJLENBQUMsb0NBQW9DLENBQUMsQ0FBQztRQUM5RSxNQUFNLEtBQUssR0FBRyxNQUFNLFlBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFBQyxPQUFPLENBQUMsQ0FBQztRQUNqRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztDQUlGO0FBakVELDBDQWlFQyJ9
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmlsZUhpbnRTY2FubmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3Nkay9DcnlwdG9ncmFwaHkvSGludC9GaWxlcy9GaWxlSGludFNjYW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0Esd0RBQXFEO0FBS3JELGdEQUF3QjtBQUN4Qiw0Q0FBb0I7QUFDcEIsc0VBQW1FO0FBQ25FLG1EQUE0RDtBQUM1RCwyRUFBd0U7QUFNeEU7O0dBRUc7QUFDSCxNQUFhLGVBQ1gsU0FBUSxpREFHdUI7SUFJL0I7Ozs7T0FJRztJQUNILFlBQVksU0FBb0IsRUFBRSxlQUFnRDtRQUNoRixLQUFLLENBQUMsU0FBUyxFQUFDLGVBQWUsQ0FBQyxDQUFDO1FBUmxCLHlDQUFvQyxHQUFHLG1DQUFtQyxDQUFDO0lBUzVGLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQWU7UUFDckMsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNuRSxNQUFNLElBQUksR0FBbUMsRUFBRSxDQUFDO1FBQ2hELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNsQixNQUFNLE1BQU0sR0FBRyxJQUFJLFNBQUcsQ0FBcUI7Z0JBQ3pDLElBQUksRUFBQyxDQUFDO2dCQUNOLEtBQUs7YUFDTixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ25CLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBb0I7UUFDcEMsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUM7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNqQyxNQUFNLFVBQVUsR0FBRyxJQUFJLHVCQUFVLENBQTRDLHlDQUF5QixFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0gsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDekIsTUFBTSxPQUFPLEdBQUcsTUFBTSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUNoRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssS0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUFpQjtRQUN2QyxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUUsY0FBSSxDQUFDLElBQUksQ0FDckQsU0FBUyxFQUNULCtCQUErQixFQUFFLElBQUksQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO1FBQzlFLE1BQU0sS0FBSyxHQUFHLE1BQU0sWUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0NBSUY7QUFsRUQsMENBa0VDIn0=