scanoss 0.15.7 → 0.16.0
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 +53 -97
- package/LICENSE +20 -20
- package/README.md +75 -3
- package/assets/ReportHTMLTemplate/index.html +11 -8
- package/assets/data/scanoss-crypto-library-rules.json +2930 -0
- package/build/main/cli/bin/cli-bin.js +6 -2
- package/build/main/cli/commands/crypto.js +14 -7
- package/build/main/cli/commands/scan.js +66 -23
- package/build/main/sdk/Cryptography/Algorithm/Components/ComponentAlgorithmScanner.d.ts +19 -0
- package/build/main/sdk/Cryptography/Algorithm/Components/ComponentAlgorithmScanner.js +27 -0
- package/build/main/sdk/Cryptography/Algorithm/Files/AlgorithmProcessor.d.ts +1 -0
- package/build/main/sdk/Cryptography/Algorithm/Files/AlgorithmProcessor.js +39 -0
- package/build/main/sdk/Cryptography/Algorithm/Files/FileAlgorithmScanner.d.ts +42 -0
- package/build/main/sdk/Cryptography/Algorithm/Files/FileAlgorithmScanner.js +87 -0
- package/build/main/sdk/Cryptography/{CryptoDef/CryptoDef.d.ts → Algorithm/Files/Helper/Helper.d.ts} +1 -1
- package/build/main/sdk/Cryptography/{CryptoDef/CryptoDef.js → Algorithm/Files/Helper/Helper.js} +1 -1
- package/build/main/sdk/Cryptography/{Scanneable → Algorithm/Files/Scanneable}/CryptoItem.d.ts +2 -2
- package/build/main/sdk/Cryptography/{Scanneable → Algorithm/Files/Scanneable}/CryptoItem.js +1 -1
- package/build/main/sdk/Cryptography/BaseCryptographyScanner.d.ts +25 -0
- package/build/main/sdk/Cryptography/BaseCryptographyScanner.js +23 -0
- package/build/main/sdk/Cryptography/CryptoCfg.d.ts +32 -5
- package/build/main/sdk/Cryptography/CryptoCfg.js +35 -5
- package/build/main/sdk/Cryptography/CryptographyScanner.d.ts +15 -21
- package/build/main/sdk/Cryptography/CryptographyScanner.js +31 -41
- package/build/main/sdk/Cryptography/CryptographyTypes.d.ts +47 -3
- package/build/main/sdk/Cryptography/Helper/ResultCollector/Component/ComponentCryptographyResultColletor.d.ts +32 -0
- package/build/main/sdk/Cryptography/Helper/ResultCollector/Component/ComponentCryptographyResultColletor.js +66 -0
- package/build/main/sdk/Cryptography/Helper/ResultCollector/File/FileCryptographyResultCollector.d.ts +36 -0
- package/build/main/sdk/Cryptography/Helper/ResultCollector/File/FileCryptographyResultCollector.js +65 -0
- package/build/main/sdk/Cryptography/Hint/Components/ComponentHintScanner.d.ts +19 -0
- package/build/main/sdk/Cryptography/Hint/Components/ComponentHintScanner.js +27 -0
- package/build/main/sdk/Cryptography/Hint/Files/FileHintScanner.d.ts +35 -0
- package/build/main/sdk/Cryptography/Hint/Files/FileHintScanner.js +69 -0
- package/build/main/sdk/Cryptography/Hint/Files/HintProcessor.d.ts +1 -0
- package/build/main/sdk/Cryptography/Hint/Files/HintProcessor.js +34 -0
- package/build/main/sdk/Filtering/Filtering.js +1 -2
- package/build/main/sdk/Logger.d.ts +2 -0
- package/build/main/sdk/Logger.js +7 -2
- package/build/main/sdk/Report/DataLayer/DataLayerTypes.d.ts +8 -4
- package/build/main/sdk/Report/DataLayer/DataProviders/CryptographyDataProvider.d.ts +7 -7
- package/build/main/sdk/Report/DataLayer/DataProviders/CryptographyDataProvider.js +71 -11
- package/build/main/sdk/Services/Grpc/BaseService.js +1 -1
- package/build/main/sdk/Services/Grpc/CryptographyService.d.ts +3 -0
- package/build/main/sdk/Services/Grpc/CryptographyService.js +16 -1
- package/build/main/sdk/Services/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_grpc_pb.d.ts +72 -0
- package/build/main/sdk/Services/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_grpc_pb.js +87 -3
- package/build/main/sdk/Services/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_pb.js +1987 -127
- package/build/main/sdk/Utils/Concurrency/Job.d.ts +8 -0
- package/build/main/sdk/Utils/Concurrency/Job.js +17 -0
- package/build/main/sdk/Utils/Concurrency/JobProcessor.d.ts +10 -0
- package/build/main/sdk/Utils/Concurrency/JobProcessor.js +51 -0
- package/build/main/sdk/Utils/Concurrency/WorkerPool.d.ts +14 -0
- package/build/main/sdk/Utils/Concurrency/WorkerPool.js +69 -0
- package/build/main/sdk/Utils/Concurrency/types.d.ts +18 -0
- package/build/main/sdk/Utils/Concurrency/types.js +3 -0
- package/build/main/sdk/scanner/ScannerTypes.js +1 -1
- package/build/main/tsconfig.tsbuildinfo +1 -1
- package/build/module/cli/bin/cli-bin.js +6 -2
- package/build/module/cli/commands/crypto.js +14 -7
- package/build/module/cli/commands/scan.js +66 -23
- package/build/module/sdk/Cryptography/Algorithm/Components/ComponentAlgorithmScanner.d.ts +19 -0
- package/build/module/sdk/Cryptography/Algorithm/Components/ComponentAlgorithmScanner.js +23 -0
- package/build/module/sdk/Cryptography/Algorithm/Files/AlgorithmProcessor.d.ts +1 -0
- package/build/module/sdk/Cryptography/Algorithm/Files/AlgorithmProcessor.js +36 -0
- package/build/module/sdk/Cryptography/Algorithm/Files/FileAlgorithmScanner.d.ts +42 -0
- package/build/module/sdk/Cryptography/Algorithm/Files/FileAlgorithmScanner.js +80 -0
- package/build/module/sdk/Cryptography/{CryptoDef/CryptoDef.d.ts → Algorithm/Files/Helper/Helper.d.ts} +1 -1
- package/build/module/sdk/Cryptography/{CryptoDef/CryptoDef.js → Algorithm/Files/Helper/Helper.js} +1 -1
- package/build/module/sdk/Cryptography/{Scanneable → Algorithm/Files/Scanneable}/CryptoItem.d.ts +2 -2
- package/build/module/sdk/Cryptography/{Scanneable → Algorithm/Files/Scanneable}/CryptoItem.js +1 -1
- package/build/module/sdk/Cryptography/BaseCryptographyScanner.d.ts +25 -0
- package/build/module/sdk/Cryptography/BaseCryptographyScanner.js +21 -0
- package/build/module/sdk/Cryptography/CryptoCfg.d.ts +32 -5
- package/build/module/sdk/Cryptography/CryptoCfg.js +39 -6
- package/build/module/sdk/Cryptography/CryptographyScanner.d.ts +15 -21
- package/build/module/sdk/Cryptography/CryptographyScanner.js +32 -39
- package/build/module/sdk/Cryptography/CryptographyTypes.d.ts +47 -3
- package/build/module/sdk/Cryptography/Helper/ResultCollector/Component/ComponentCryptographyResultColletor.d.ts +32 -0
- package/build/module/sdk/Cryptography/Helper/ResultCollector/Component/ComponentCryptographyResultColletor.js +60 -0
- package/build/module/sdk/Cryptography/Helper/ResultCollector/File/FileCryptographyResultCollector.d.ts +36 -0
- package/build/module/sdk/Cryptography/Helper/ResultCollector/File/FileCryptographyResultCollector.js +59 -0
- package/build/module/sdk/Cryptography/Hint/Components/ComponentHintScanner.d.ts +19 -0
- package/build/module/sdk/Cryptography/Hint/Components/ComponentHintScanner.js +23 -0
- package/build/module/sdk/Cryptography/Hint/Files/FileHintScanner.d.ts +35 -0
- package/build/module/sdk/Cryptography/Hint/Files/FileHintScanner.js +62 -0
- package/build/module/sdk/Cryptography/Hint/Files/HintProcessor.d.ts +1 -0
- package/build/module/sdk/Cryptography/Hint/Files/HintProcessor.js +31 -0
- package/build/module/sdk/Filtering/Filtering.js +1 -2
- package/build/module/sdk/Logger.d.ts +2 -0
- package/build/module/sdk/Logger.js +8 -2
- package/build/module/sdk/Report/DataLayer/DataLayerTypes.d.ts +8 -4
- package/build/module/sdk/Report/DataLayer/DataProviders/CryptographyDataProvider.d.ts +7 -7
- package/build/module/sdk/Report/DataLayer/DataProviders/CryptographyDataProvider.js +73 -14
- package/build/module/sdk/Services/Grpc/BaseService.js +1 -1
- package/build/module/sdk/Services/Grpc/CryptographyService.d.ts +3 -0
- package/build/module/sdk/Services/Grpc/CryptographyService.js +16 -1
- package/build/module/sdk/Services/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_grpc_pb.d.ts +72 -0
- package/build/module/sdk/Services/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_grpc_pb.js +87 -3
- package/build/module/sdk/Services/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_pb.js +1987 -127
- package/build/module/sdk/Utils/Concurrency/Job.d.ts +8 -0
- package/build/module/sdk/Utils/Concurrency/Job.js +14 -0
- package/build/module/sdk/Utils/Concurrency/JobProcessor.d.ts +10 -0
- package/build/module/sdk/Utils/Concurrency/JobProcessor.js +47 -0
- package/build/module/sdk/Utils/Concurrency/WorkerPool.d.ts +14 -0
- package/build/module/sdk/Utils/Concurrency/WorkerPool.js +65 -0
- package/build/module/sdk/Utils/Concurrency/types.d.ts +18 -0
- package/build/module/sdk/Utils/Concurrency/types.js +2 -0
- package/build/module/sdk/scanner/ScannerTypes.js +1 -1
- package/build/module/tsconfig.module.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/build/main/sdk/Cryptography/CryptoProvider/LocalCrypto.d.ts +0 -21
- package/build/main/sdk/Cryptography/CryptoProvider/LocalCrypto.js +0 -37
- package/build/main/sdk/Cryptography/Worker/ThreadPool.d.ts +0 -21
- package/build/main/sdk/Cryptography/Worker/ThreadPool.js +0 -87
- package/build/main/sdk/Cryptography/Worker/Worker.d.ts +0 -15
- package/build/main/sdk/Cryptography/Worker/Worker.js +0 -69
- package/build/main/sdk/Cryptography/utils/adapters/cryptoAdapters.d.ts +0 -8
- package/build/main/sdk/Cryptography/utils/adapters/cryptoAdapters.js +0 -15
- package/build/module/sdk/Cryptography/CryptoProvider/LocalCrypto.d.ts +0 -21
- package/build/module/sdk/Cryptography/CryptoProvider/LocalCrypto.js +0 -36
- package/build/module/sdk/Cryptography/Worker/ThreadPool.d.ts +0 -21
- package/build/module/sdk/Cryptography/Worker/ThreadPool.js +0 -89
- package/build/module/sdk/Cryptography/Worker/Worker.d.ts +0 -15
- package/build/module/sdk/Cryptography/Worker/Worker.js +0 -66
- package/build/module/sdk/Cryptography/utils/adapters/cryptoAdapters.d.ts +0 -8
- package/build/module/sdk/Cryptography/utils/adapters/cryptoAdapters.js +0 -12
- /package/assets/data/{defaultCryptoRules.json → scanoss-crypto-algorithm-rules.json} +0 -0
package/build/main/sdk/Services/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_grpc_pb.js
CHANGED
|
@@ -66,6 +66,42 @@ function serialize_scanoss_api_cryptography_v2_AlgorithmResponse(arg) {
|
|
|
66
66
|
function deserialize_scanoss_api_cryptography_v2_AlgorithmResponse(buffer_arg) {
|
|
67
67
|
return scanoss_api_cryptography_v2_scanoss$cryptography_pb.AlgorithmResponse.deserializeBinary(new Uint8Array(buffer_arg));
|
|
68
68
|
}
|
|
69
|
+
function serialize_scanoss_api_cryptography_v2_AlgorithmsInRangeResponse(arg) {
|
|
70
|
+
if (!(arg instanceof scanoss_api_cryptography_v2_scanoss$cryptography_pb.AlgorithmsInRangeResponse)) {
|
|
71
|
+
throw new Error('Expected argument of type scanoss.api.cryptography.v2.AlgorithmsInRangeResponse');
|
|
72
|
+
}
|
|
73
|
+
return Buffer.from(arg.serializeBinary());
|
|
74
|
+
}
|
|
75
|
+
function deserialize_scanoss_api_cryptography_v2_AlgorithmsInRangeResponse(buffer_arg) {
|
|
76
|
+
return scanoss_api_cryptography_v2_scanoss$cryptography_pb.AlgorithmsInRangeResponse.deserializeBinary(new Uint8Array(buffer_arg));
|
|
77
|
+
}
|
|
78
|
+
function serialize_scanoss_api_cryptography_v2_HintsInRangeResponse(arg) {
|
|
79
|
+
if (!(arg instanceof scanoss_api_cryptography_v2_scanoss$cryptography_pb.HintsInRangeResponse)) {
|
|
80
|
+
throw new Error('Expected argument of type scanoss.api.cryptography.v2.HintsInRangeResponse');
|
|
81
|
+
}
|
|
82
|
+
return Buffer.from(arg.serializeBinary());
|
|
83
|
+
}
|
|
84
|
+
function deserialize_scanoss_api_cryptography_v2_HintsInRangeResponse(buffer_arg) {
|
|
85
|
+
return scanoss_api_cryptography_v2_scanoss$cryptography_pb.HintsInRangeResponse.deserializeBinary(new Uint8Array(buffer_arg));
|
|
86
|
+
}
|
|
87
|
+
function serialize_scanoss_api_cryptography_v2_HintsResponse(arg) {
|
|
88
|
+
if (!(arg instanceof scanoss_api_cryptography_v2_scanoss$cryptography_pb.HintsResponse)) {
|
|
89
|
+
throw new Error('Expected argument of type scanoss.api.cryptography.v2.HintsResponse');
|
|
90
|
+
}
|
|
91
|
+
return Buffer.from(arg.serializeBinary());
|
|
92
|
+
}
|
|
93
|
+
function deserialize_scanoss_api_cryptography_v2_HintsResponse(buffer_arg) {
|
|
94
|
+
return scanoss_api_cryptography_v2_scanoss$cryptography_pb.HintsResponse.deserializeBinary(new Uint8Array(buffer_arg));
|
|
95
|
+
}
|
|
96
|
+
function serialize_scanoss_api_cryptography_v2_VersionsInRangeResponse(arg) {
|
|
97
|
+
if (!(arg instanceof scanoss_api_cryptography_v2_scanoss$cryptography_pb.VersionsInRangeResponse)) {
|
|
98
|
+
throw new Error('Expected argument of type scanoss.api.cryptography.v2.VersionsInRangeResponse');
|
|
99
|
+
}
|
|
100
|
+
return Buffer.from(arg.serializeBinary());
|
|
101
|
+
}
|
|
102
|
+
function deserialize_scanoss_api_cryptography_v2_VersionsInRangeResponse(buffer_arg) {
|
|
103
|
+
return scanoss_api_cryptography_v2_scanoss$cryptography_pb.VersionsInRangeResponse.deserializeBinary(new Uint8Array(buffer_arg));
|
|
104
|
+
}
|
|
69
105
|
//
|
|
70
106
|
// Expose all of the SCANOSS Cryptography RPCs here
|
|
71
107
|
var CryptographyService = exports.CryptographyService = {
|
|
@@ -81,7 +117,7 @@ var CryptographyService = exports.CryptographyService = {
|
|
|
81
117
|
responseSerialize: serialize_scanoss_api_common_v2_EchoResponse,
|
|
82
118
|
responseDeserialize: deserialize_scanoss_api_common_v2_EchoResponse,
|
|
83
119
|
},
|
|
84
|
-
// Get Cryptographic algorithms associated with a list of PURLs
|
|
120
|
+
// Get Cryptographic algorithms associated with a list of PURLs and, optionally, a requirement
|
|
85
121
|
getAlgorithms: {
|
|
86
122
|
path: '/scanoss.api.cryptography.v2.Cryptography/GetAlgorithms',
|
|
87
123
|
requestStream: false,
|
|
@@ -93,6 +129,54 @@ var CryptographyService = exports.CryptographyService = {
|
|
|
93
129
|
responseSerialize: serialize_scanoss_api_cryptography_v2_AlgorithmResponse,
|
|
94
130
|
responseDeserialize: deserialize_scanoss_api_cryptography_v2_AlgorithmResponse,
|
|
95
131
|
},
|
|
132
|
+
// Given a list of PURLS and version ranges, get a list of cryptographic algorithms used
|
|
133
|
+
getAlgorithmsInRange: {
|
|
134
|
+
path: '/scanoss.api.cryptography.v2.Cryptography/GetAlgorithmsInRange',
|
|
135
|
+
requestStream: false,
|
|
136
|
+
responseStream: false,
|
|
137
|
+
requestType: scanoss_api_common_v2_scanoss$common_pb.PurlRequest,
|
|
138
|
+
responseType: scanoss_api_cryptography_v2_scanoss$cryptography_pb.AlgorithmsInRangeResponse,
|
|
139
|
+
requestSerialize: serialize_scanoss_api_common_v2_PurlRequest,
|
|
140
|
+
requestDeserialize: deserialize_scanoss_api_common_v2_PurlRequest,
|
|
141
|
+
responseSerialize: serialize_scanoss_api_cryptography_v2_AlgorithmsInRangeResponse,
|
|
142
|
+
responseDeserialize: deserialize_scanoss_api_cryptography_v2_AlgorithmsInRangeResponse,
|
|
143
|
+
},
|
|
144
|
+
// Given a list of PURLS and version ranges, get a list of versions that do/do not contain cryptographic algorithms
|
|
145
|
+
getVersionsInRange: {
|
|
146
|
+
path: '/scanoss.api.cryptography.v2.Cryptography/GetVersionsInRange',
|
|
147
|
+
requestStream: false,
|
|
148
|
+
responseStream: false,
|
|
149
|
+
requestType: scanoss_api_common_v2_scanoss$common_pb.PurlRequest,
|
|
150
|
+
responseType: scanoss_api_cryptography_v2_scanoss$cryptography_pb.VersionsInRangeResponse,
|
|
151
|
+
requestSerialize: serialize_scanoss_api_common_v2_PurlRequest,
|
|
152
|
+
requestDeserialize: deserialize_scanoss_api_common_v2_PurlRequest,
|
|
153
|
+
responseSerialize: serialize_scanoss_api_cryptography_v2_VersionsInRangeResponse,
|
|
154
|
+
responseDeserialize: deserialize_scanoss_api_cryptography_v2_VersionsInRangeResponse,
|
|
155
|
+
},
|
|
156
|
+
// Given a list of PURLS and version ranges, get hints related to protocol/library/sdk/framework
|
|
157
|
+
getHintsInRange: {
|
|
158
|
+
path: '/scanoss.api.cryptography.v2.Cryptography/GetHintsInRange',
|
|
159
|
+
requestStream: false,
|
|
160
|
+
responseStream: false,
|
|
161
|
+
requestType: scanoss_api_common_v2_scanoss$common_pb.PurlRequest,
|
|
162
|
+
responseType: scanoss_api_cryptography_v2_scanoss$cryptography_pb.HintsInRangeResponse,
|
|
163
|
+
requestSerialize: serialize_scanoss_api_common_v2_PurlRequest,
|
|
164
|
+
requestDeserialize: deserialize_scanoss_api_common_v2_PurlRequest,
|
|
165
|
+
responseSerialize: serialize_scanoss_api_cryptography_v2_HintsInRangeResponse,
|
|
166
|
+
responseDeserialize: deserialize_scanoss_api_cryptography_v2_HintsInRangeResponse,
|
|
167
|
+
},
|
|
168
|
+
// Given a list of PURLS, get hints related to protocol/library/sdk/framework
|
|
169
|
+
getEncryptionHints: {
|
|
170
|
+
path: '/scanoss.api.cryptography.v2.Cryptography/GetEncryptionHints',
|
|
171
|
+
requestStream: false,
|
|
172
|
+
responseStream: false,
|
|
173
|
+
requestType: scanoss_api_common_v2_scanoss$common_pb.PurlRequest,
|
|
174
|
+
responseType: scanoss_api_cryptography_v2_scanoss$cryptography_pb.HintsResponse,
|
|
175
|
+
requestSerialize: serialize_scanoss_api_common_v2_PurlRequest,
|
|
176
|
+
requestDeserialize: deserialize_scanoss_api_common_v2_PurlRequest,
|
|
177
|
+
responseSerialize: serialize_scanoss_api_cryptography_v2_HintsResponse,
|
|
178
|
+
responseDeserialize: deserialize_scanoss_api_cryptography_v2_HintsResponse,
|
|
179
|
+
},
|
|
96
180
|
};
|
|
97
|
-
exports.CryptographyClient = grpc.makeGenericClientConstructor(CryptographyService);
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
181
|
+
exports.CryptographyClient = grpc.makeGenericClientConstructor(CryptographyService, 'Cryptography');
|
|
182
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbm9zcy1jcnlwdG9ncmFwaHlfZ3JwY19wYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9zZGsvU2VydmljZXMvR3JwYy9zY2Fub3NzL2FwaS9jcnlwdG9ncmFwaHkvdjIvc2Nhbm9zcy1jcnlwdG9ncmFwaHlfZ3JwY19wYi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQ0FBaUM7QUFFakMsMEJBQTBCO0FBQzFCLEVBQUU7QUFDRiwrQkFBK0I7QUFDL0IsRUFBRTtBQUNGLDhCQUE4QjtBQUM5QixFQUFFO0FBQ0YsK0VBQStFO0FBQy9FLGdGQUFnRjtBQUNoRiwrRUFBK0U7QUFDL0UsNEVBQTRFO0FBQzVFLHdFQUF3RTtBQUN4RSwyREFBMkQ7QUFDM0QsRUFBRTtBQUNGLDZFQUE2RTtBQUM3RSxzREFBc0Q7QUFDdEQsRUFBRTtBQUNGLDZFQUE2RTtBQUM3RSwyRUFBMkU7QUFDM0UsOEVBQThFO0FBQzlFLHlFQUF5RTtBQUN6RSxnRkFBZ0Y7QUFDaEYsNEVBQTRFO0FBQzVFLGdCQUFnQjtBQUNoQixFQUFFO0FBQ0YsS0FBSztBQUNMLGtDQUFrQztBQUNsQyxJQUFJO0FBQ0osWUFBWSxDQUFDO0FBQ2IsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQ3BDLElBQUksbURBQW1ELEdBQUcsT0FBTyxDQUFDLG9FQUFvRSxDQUFDLENBQUM7QUFDeEksSUFBSSx1Q0FBdUMsR0FBRyxPQUFPLENBQUMsd0RBQXdELENBQUMsQ0FBQztBQUVoSCxTQUFTLDJDQUEyQyxDQUFDLEdBQUc7SUFDdEQsSUFBSSxDQUFDLENBQUMsR0FBRyxZQUFZLHVDQUF1QyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7UUFDMUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw2REFBNkQsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFD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
|