scanoss 0.2.26 → 0.2.27
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/.idea/.gitignore +5 -0
- package/.idea/codeStyles/Project.xml +61 -0
- package/.idea/codeStyles/codeStyleConfig.xml +5 -0
- package/.idea/inspectionProfiles/Project_Default.xml +6 -0
- package/.idea/modules.xml +8 -0
- package/.idea/scanoss.js.iml +12 -0
- package/.idea/vcs.xml +6 -0
- package/.idea/workspace.xml +62 -0
- package/build/main/bin/cli-bin.js +1 -1
- package/build/main/lib/dependencies/DependencyScanner.js +1 -1
- package/build/main/lib/dependencies/LocalDependency/parsers/mavenParser.js +130 -14
- package/build/module/bin/cli-bin.js +1 -1
- package/build/module/lib/dependencies/DependencyScanner.js +1 -1
- package/build/module/lib/dependencies/LocalDependency/parsers/mavenParser.js +130 -14
- package/build/tsconfig.module.tsbuildinfo +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/src/bin/cli-bin.ts +1 -1
- package/src/lib/dependencies/DependencyScanner.ts +0 -1
- package/src/lib/dependencies/LocalDependency/parsers/mavenParser.ts +143 -16
- package/test/dependencies/data/Gemfile/1/Gemfile +6 -0
- package/test/dependencies/data/Gemfile/1/Gemfile~ +0 -0
- package/test/dependencies/data/Gemfile/2/Gemfile +3 -0
- package/test/dependencies/data/Gemfile/2/Gemfile~ +6 -0
- package/test/dependencies/data/Gemfile/3/Gemfile +7 -0
- package/test/dependencies/data/Gemfile/3/Gemfile~ +6 -0
- package/test/dependencies/data/Gemfile/4/Gemfile +31 -0
- package/test/dependencies/data/Gemfile/4/Gemfile~ +7 -0
- package/test/dependencies/data/Gemfile.lock/1/Gemfile.lock +180 -0
- package/test/dependencies/data/Gemfile.lock/2/Gemfile.lock +60 -0
- package/test/dependencies/data/Gemfile.lock/2/Gemfile.lock~ +0 -0
- package/test/dependencies/data/pom.xml/1/pom.xml +162 -0
package/.idea/.gitignore
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
<component name="ProjectCodeStyleConfiguration">
|
|
2
|
+
<code_scheme name="Project" version="173">
|
|
3
|
+
<HTMLCodeStyleSettings>
|
|
4
|
+
<option name="HTML_SPACE_INSIDE_EMPTY_TAG" value="true" />
|
|
5
|
+
<option name="HTML_QUOTE_STYLE" value="Single" />
|
|
6
|
+
<option name="HTML_ENFORCE_QUOTES" value="true" />
|
|
7
|
+
</HTMLCodeStyleSettings>
|
|
8
|
+
<JSCodeStyleSettings version="0">
|
|
9
|
+
<option name="FORCE_SEMICOLON_STYLE" value="true" />
|
|
10
|
+
<option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
|
|
11
|
+
<option name="USE_DOUBLE_QUOTES" value="false" />
|
|
12
|
+
<option name="FORCE_QUOTE_STYlE" value="true" />
|
|
13
|
+
<option name="ENFORCE_TRAILING_COMMA" value="Remove" />
|
|
14
|
+
<option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" />
|
|
15
|
+
<option name="SPACES_WITHIN_IMPORTS" value="true" />
|
|
16
|
+
</JSCodeStyleSettings>
|
|
17
|
+
<TypeScriptCodeStyleSettings version="0">
|
|
18
|
+
<option name="FORCE_SEMICOLON_STYLE" value="true" />
|
|
19
|
+
<option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
|
|
20
|
+
<option name="USE_DOUBLE_QUOTES" value="false" />
|
|
21
|
+
<option name="FORCE_QUOTE_STYlE" value="true" />
|
|
22
|
+
<option name="ENFORCE_TRAILING_COMMA" value="Remove" />
|
|
23
|
+
<option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" />
|
|
24
|
+
<option name="SPACES_WITHIN_IMPORTS" value="true" />
|
|
25
|
+
</TypeScriptCodeStyleSettings>
|
|
26
|
+
<VueCodeStyleSettings>
|
|
27
|
+
<option name="INTERPOLATION_NEW_LINE_AFTER_START_DELIMITER" value="false" />
|
|
28
|
+
<option name="INTERPOLATION_NEW_LINE_BEFORE_END_DELIMITER" value="false" />
|
|
29
|
+
</VueCodeStyleSettings>
|
|
30
|
+
<codeStyleSettings language="HTML">
|
|
31
|
+
<option name="SOFT_MARGINS" value="80" />
|
|
32
|
+
<indentOptions>
|
|
33
|
+
<option name="INDENT_SIZE" value="2" />
|
|
34
|
+
<option name="CONTINUATION_INDENT_SIZE" value="2" />
|
|
35
|
+
<option name="TAB_SIZE" value="2" />
|
|
36
|
+
</indentOptions>
|
|
37
|
+
</codeStyleSettings>
|
|
38
|
+
<codeStyleSettings language="JavaScript">
|
|
39
|
+
<option name="SOFT_MARGINS" value="80" />
|
|
40
|
+
<indentOptions>
|
|
41
|
+
<option name="INDENT_SIZE" value="2" />
|
|
42
|
+
<option name="CONTINUATION_INDENT_SIZE" value="2" />
|
|
43
|
+
<option name="TAB_SIZE" value="2" />
|
|
44
|
+
</indentOptions>
|
|
45
|
+
</codeStyleSettings>
|
|
46
|
+
<codeStyleSettings language="TypeScript">
|
|
47
|
+
<option name="SOFT_MARGINS" value="80" />
|
|
48
|
+
<indentOptions>
|
|
49
|
+
<option name="INDENT_SIZE" value="2" />
|
|
50
|
+
<option name="CONTINUATION_INDENT_SIZE" value="2" />
|
|
51
|
+
<option name="TAB_SIZE" value="2" />
|
|
52
|
+
</indentOptions>
|
|
53
|
+
</codeStyleSettings>
|
|
54
|
+
<codeStyleSettings language="Vue">
|
|
55
|
+
<option name="SOFT_MARGINS" value="80" />
|
|
56
|
+
<indentOptions>
|
|
57
|
+
<option name="CONTINUATION_INDENT_SIZE" value="2" />
|
|
58
|
+
</indentOptions>
|
|
59
|
+
</codeStyleSettings>
|
|
60
|
+
</code_scheme>
|
|
61
|
+
</component>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<project version="4">
|
|
3
|
+
<component name="ProjectModuleManager">
|
|
4
|
+
<modules>
|
|
5
|
+
<module fileurl="file://$PROJECT_DIR$/.idea/scanoss.js.iml" filepath="$PROJECT_DIR$/.idea/scanoss.js.iml" />
|
|
6
|
+
</modules>
|
|
7
|
+
</component>
|
|
8
|
+
</project>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<module type="WEB_MODULE" version="4">
|
|
3
|
+
<component name="NewModuleRootManager">
|
|
4
|
+
<content url="file://$MODULE_DIR$">
|
|
5
|
+
<excludeFolder url="file://$MODULE_DIR$/temp" />
|
|
6
|
+
<excludeFolder url="file://$MODULE_DIR$/.tmp" />
|
|
7
|
+
<excludeFolder url="file://$MODULE_DIR$/tmp" />
|
|
8
|
+
</content>
|
|
9
|
+
<orderEntry type="inheritedJdk" />
|
|
10
|
+
<orderEntry type="sourceFolder" forTests="false" />
|
|
11
|
+
</component>
|
|
12
|
+
</module>
|
package/.idea/vcs.xml
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<project version="4">
|
|
3
|
+
<component name="AutoImportSettings">
|
|
4
|
+
<option name="autoReloadType" value="SELECTIVE" />
|
|
5
|
+
</component>
|
|
6
|
+
<component name="ChangeListManager">
|
|
7
|
+
<list default="true" id="0ac507d1-fb77-4a7e-8a1c-824548785ccb" name="Changes" comment="">
|
|
8
|
+
<change beforePath="$PROJECT_DIR$/src/lib/dependencies/LocalDependency/parsers/mavenParser.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/lib/dependencies/LocalDependency/parsers/mavenParser.ts" afterDir="false" />
|
|
9
|
+
</list>
|
|
10
|
+
<option name="SHOW_DIALOG" value="false" />
|
|
11
|
+
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
|
12
|
+
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
|
13
|
+
<option name="LAST_RESOLUTION" value="IGNORE" />
|
|
14
|
+
</component>
|
|
15
|
+
<component name="Git.Settings">
|
|
16
|
+
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
|
17
|
+
</component>
|
|
18
|
+
<component name="MarkdownSettingsMigration">
|
|
19
|
+
<option name="stateVersion" value="1" />
|
|
20
|
+
</component>
|
|
21
|
+
<component name="ProjectId" id="28NwqMrRNzf1WmRliDY1hQDlsTG" />
|
|
22
|
+
<component name="ProjectViewState">
|
|
23
|
+
<option name="hideEmptyMiddlePackages" value="true" />
|
|
24
|
+
<option name="showLibraryContents" value="true" />
|
|
25
|
+
</component>
|
|
26
|
+
<component name="PropertiesComponent"><![CDATA[{
|
|
27
|
+
"keyToString": {
|
|
28
|
+
"RunOnceActivity.OpenProjectViewOnStart": "true",
|
|
29
|
+
"RunOnceActivity.ShowReadmeOnStart": "true",
|
|
30
|
+
"WebServerToolWindowFactoryState": "false",
|
|
31
|
+
"eslint.code.style.apply.dismiss": "true",
|
|
32
|
+
"last_opened_file_path": "/home/ubuntu/Projects/SCANOSS/scanoss.js",
|
|
33
|
+
"node.js.detected.package.eslint": "true",
|
|
34
|
+
"node.js.detected.package.tslint": "true",
|
|
35
|
+
"node.js.selected.package.eslint": "(autodetect)",
|
|
36
|
+
"node.js.selected.package.tslint": "(autodetect)",
|
|
37
|
+
"nodejs_package_manager_path": "yarn",
|
|
38
|
+
"ts.external.directory.path": "/home/ubuntu/Projects/SCANOSS/scanoss.js/node_modules/typescript/lib",
|
|
39
|
+
"vue.rearranger.settings.migration": "true"
|
|
40
|
+
}
|
|
41
|
+
}]]></component>
|
|
42
|
+
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
|
|
43
|
+
<component name="TaskManager">
|
|
44
|
+
<task active="true" id="Default" summary="Default task">
|
|
45
|
+
<changelist id="0ac507d1-fb77-4a7e-8a1c-824548785ccb" name="Changes" comment="" />
|
|
46
|
+
<created>1651070540410</created>
|
|
47
|
+
<option name="number" value="Default" />
|
|
48
|
+
<option name="presentableId" value="Default" />
|
|
49
|
+
<updated>1651070540410</updated>
|
|
50
|
+
<workItem from="1651070541670" duration="3451000" />
|
|
51
|
+
</task>
|
|
52
|
+
<servers />
|
|
53
|
+
</component>
|
|
54
|
+
<component name="TypeScriptGeneratedFilesManager">
|
|
55
|
+
<option name="version" value="3" />
|
|
56
|
+
<option name="exactExcludedFiles">
|
|
57
|
+
<list>
|
|
58
|
+
<option value="$PROJECT_DIR$/src/index.js" />
|
|
59
|
+
</list>
|
|
60
|
+
</option>
|
|
61
|
+
</component>
|
|
62
|
+
</project>
|
|
@@ -12,7 +12,7 @@ function CLIErrorHandler(e) {
|
|
|
12
12
|
}
|
|
13
13
|
async function main() {
|
|
14
14
|
commander_1.program
|
|
15
|
-
.version("0.2.
|
|
15
|
+
.version("0.2.27")
|
|
16
16
|
.description('The SCANOSS JS package provides a simple, easy to consume module for interacting with SCANOSS APIs/Engine.');
|
|
17
17
|
commander_1.program
|
|
18
18
|
.command('scan <source>')
|
|
@@ -79,4 +79,4 @@ class DependencyScanner {
|
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
exports.DependencyScanner = DependencyScanner;
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVwZW5kZW5jeVNjYW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2RlcGVuZGVuY2llcy9EZXBlbmRlbmN5U2Nhbm5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx5RUFBc0U7QUFDdEUseUdBQW9IO0FBQ3BILHVFQUFzRTtBQUN0RSxpRUFBOEQ7QUFFOUQsaURBQTJDO0FBRTNDLE1BQWEsaUJBQWlCO0lBTTVCLFlBQVksR0FBRyxHQUFHLElBQUksMkNBQW9CLEVBQUU7UUFDMUMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksNkNBQXFCLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3JHLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxtQ0FBaUIsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFHTSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQW9CO1FBQ3BDLElBQUksaUJBQWlCLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRSxJQUFJLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUFFLE9BQU8sRUFBQyxTQUFTLEVBQUUsRUFBRSxFQUFDLENBQUM7UUFDakUsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNyRCxNQUFNLFlBQVksR0FBRyxNQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkUsTUFBTSxRQUFRLEdBQUcsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBR3pDLDhEQUE4RDtRQUM5RCxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQixFQUFF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
|
|
@@ -27,17 +27,9 @@ function pomParser(fileContent, filePath) {
|
|
|
27
27
|
const artifactId = dependency.match(/<artifactId>([^<]*)<\/artifactId>/);
|
|
28
28
|
const name = artifactId ? artifactId[1] : '';
|
|
29
29
|
const versionReg = dependency.match(/<version>([^<]*)<\/version>/);
|
|
30
|
-
let version =
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
if (ver[1] === 'project.version') { // TODO: Add support for project.version
|
|
34
|
-
version = undefined;
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
const res = fileContent.match(new RegExp(`<${ver[1]}>([^<]*)<\/${ver[1]}>`));
|
|
38
|
-
version = res.length >= 1 ? res[1] : '';
|
|
39
|
-
}
|
|
40
|
-
}
|
|
30
|
+
let version = null;
|
|
31
|
+
if (versionReg && versionReg.length > 0)
|
|
32
|
+
version = resolve_version(versionReg[1], fileContent);
|
|
41
33
|
let purlQualifiers;
|
|
42
34
|
const type = dependency.match(/<type>([^<]*)<\/type>/);
|
|
43
35
|
if (type) {
|
|
@@ -46,12 +38,136 @@ function pomParser(fileContent, filePath) {
|
|
|
46
38
|
}
|
|
47
39
|
// Extract scope.
|
|
48
40
|
const scopeRes = dependency.match(/<scope>([^<]*)<\/scope>/);
|
|
49
|
-
const scope = scopeRes ? scopeRes[1] :
|
|
41
|
+
const scope = scopeRes ? scopeRes[1] : null;
|
|
50
42
|
const purlString = new packageurl_js_1.PackageURL(PURL_TYPE, namespace, name, version, purlQualifiers, undefined).toString();
|
|
51
|
-
results.purls.push({ purl: purlString, scope
|
|
43
|
+
results.purls.push({ purl: purlString, scope });
|
|
52
44
|
});
|
|
53
45
|
}
|
|
54
46
|
return results;
|
|
55
47
|
}
|
|
56
48
|
exports.pomParser = pomParser;
|
|
57
|
-
|
|
49
|
+
function resolve_version(dependency_version, file_content) {
|
|
50
|
+
// See properties: https://maven.apache.org/pom.html#properties
|
|
51
|
+
let version = '';
|
|
52
|
+
if (dependency_version) {
|
|
53
|
+
if (/\${project.version}/.test(dependency_version)) {
|
|
54
|
+
version = extract_content_from_tag(file_content, ['project', 'version']);
|
|
55
|
+
}
|
|
56
|
+
else if (/\${.*?}/.test(dependency_version)) {
|
|
57
|
+
const property = dependency_version.match(/\${(.*?)}/)[1];
|
|
58
|
+
const result = file_content.match(new RegExp(`<${property}>([^<]*)<\/${property}>`));
|
|
59
|
+
if (result && result.length > 0)
|
|
60
|
+
version = result[1];
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
version = dependency_version.toString();
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return version;
|
|
67
|
+
}
|
|
68
|
+
function get_start_tag_name(line) {
|
|
69
|
+
const result = line.match(/\<([\w\-\.]+).*?>/);
|
|
70
|
+
if (result)
|
|
71
|
+
return result[1].trim();
|
|
72
|
+
return '';
|
|
73
|
+
}
|
|
74
|
+
function get_end_tag_name(line) {
|
|
75
|
+
const result = line.match(/\<\/([\w\-\.]+) ?>/);
|
|
76
|
+
if (result)
|
|
77
|
+
return result[1].trim();
|
|
78
|
+
return '';
|
|
79
|
+
}
|
|
80
|
+
function get_end_tag(line) {
|
|
81
|
+
const result = get_end_tag_name(line);
|
|
82
|
+
if (result !== '')
|
|
83
|
+
return `</${result}>`;
|
|
84
|
+
return '';
|
|
85
|
+
}
|
|
86
|
+
function get_start_tag(line) {
|
|
87
|
+
const result = get_start_tag_name(line);
|
|
88
|
+
if (result !== '')
|
|
89
|
+
return `<${result}>`;
|
|
90
|
+
return '';
|
|
91
|
+
}
|
|
92
|
+
function element_match(openTag, closeTag) {
|
|
93
|
+
return get_start_tag_name(openTag) === get_end_tag_name(closeTag);
|
|
94
|
+
}
|
|
95
|
+
function is_element_complete(line) {
|
|
96
|
+
return get_start_tag_name(line) === get_end_tag_name(line);
|
|
97
|
+
}
|
|
98
|
+
function get_offset_until_end_of_tag(lines, end_tag_name) {
|
|
99
|
+
let i = 0;
|
|
100
|
+
for (const line of lines) {
|
|
101
|
+
if (get_end_tag_name(line) === end_tag_name)
|
|
102
|
+
break;
|
|
103
|
+
i += 1;
|
|
104
|
+
}
|
|
105
|
+
return i;
|
|
106
|
+
}
|
|
107
|
+
function remove_comments(lines) {
|
|
108
|
+
for (let i = 0; i < lines.length; i += 1) {
|
|
109
|
+
let openCommentFlag = /<!--/.test(lines[i]);
|
|
110
|
+
let endCommentFlag = /-->/.test(lines[i]);
|
|
111
|
+
if (openCommentFlag && endCommentFlag)
|
|
112
|
+
lines[i] = lines[i].replace(/<!--.*-->/, '');
|
|
113
|
+
else if (openCommentFlag) {
|
|
114
|
+
while (!/-->/.test(lines[i]) && i < lines.length) {
|
|
115
|
+
lines[i] = '';
|
|
116
|
+
i += 1;
|
|
117
|
+
}
|
|
118
|
+
lines[i] = lines[i].replace(/.*-->/, '');
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return lines;
|
|
122
|
+
}
|
|
123
|
+
function extract_content_from_tag(file_content, selector) {
|
|
124
|
+
let lines = file_content.split('\n');
|
|
125
|
+
const stack = [];
|
|
126
|
+
let selectorIndex = 0;
|
|
127
|
+
let startTagName = '';
|
|
128
|
+
let endTagName = '';
|
|
129
|
+
let content = '';
|
|
130
|
+
// Sanitize xml: Removes comments
|
|
131
|
+
lines = remove_comments(lines);
|
|
132
|
+
for (let i = 0; i < lines.length; i += 1) {
|
|
133
|
+
let line = lines[i].trim();
|
|
134
|
+
if (line === '')
|
|
135
|
+
continue;
|
|
136
|
+
startTagName = get_start_tag_name(line);
|
|
137
|
+
endTagName = get_end_tag_name(line);
|
|
138
|
+
// Element complete in the same line and different than my selector
|
|
139
|
+
if (selector[selectorIndex] !== startTagName && is_element_complete(line))
|
|
140
|
+
continue;
|
|
141
|
+
// Element spans multiline and is different than my selector
|
|
142
|
+
// Loop until find corresponding end tag
|
|
143
|
+
if (selector[selectorIndex] !== startTagName) {
|
|
144
|
+
i += 1;
|
|
145
|
+
while (i < lines.length && !element_match(line, lines[i]))
|
|
146
|
+
i += 1;
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
// lines[i] points to the opening tag of the current selector[selectorIndex]
|
|
150
|
+
selectorIndex += 1;
|
|
151
|
+
stack.push(startTagName);
|
|
152
|
+
// Target reached
|
|
153
|
+
if (selector.length === stack.length) {
|
|
154
|
+
// Target has only one line
|
|
155
|
+
if (is_element_complete(line)) {
|
|
156
|
+
line = line.replace(get_end_tag(line), '');
|
|
157
|
+
line = line.replace(get_start_tag(line), '');
|
|
158
|
+
return line;
|
|
159
|
+
}
|
|
160
|
+
// Extracts everything beetwen opening and closing tag and return.
|
|
161
|
+
i += 1;
|
|
162
|
+
while (i < lines.length && !element_match(line, lines[i])) {
|
|
163
|
+
content += lines[i].trim();
|
|
164
|
+
i += 1;
|
|
165
|
+
}
|
|
166
|
+
return content;
|
|
167
|
+
}
|
|
168
|
+
startTagName = '';
|
|
169
|
+
endTagName = '';
|
|
170
|
+
}
|
|
171
|
+
return '';
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF2ZW5QYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2RlcGVuZGVuY2llcy9Mb2NhbERlcGVuZGVuY3kvcGFyc2Vycy9tYXZlblBhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxnREFBd0I7QUFDeEIsaURBQTJDO0FBRzNDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQztBQUUxQixnREFBZ0Q7QUFDaEQsOEZBQThGO0FBQzlGLDZGQUE2RjtBQUM3RixNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFDaEMsU0FBZ0IsU0FBUyxDQUFDLFdBQW1CLEVBQUUsUUFBZ0I7SUFFM0QscUVBQXFFO0lBQ3JFLE1BQU0sT0FBTyxHQUFxQixFQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBQyxDQUFDO0lBQzlELElBQUcsY0FBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxhQUFhO1FBQ3ZDLE9BQU8sT0FBTyxDQUFDO0lBRW5CLE1BQU0sWUFBWSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsMENBQTBDLENBQUMsQ0FBQztJQUNuRixJQUFHLFlBQVksRUFBRTtRQUVmLHlDQUF5QztRQUN6QyxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ2hDLDJDQUEyQztZQUMzQyxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7WUFDaEUsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUU1QywwQ0FBMEM7WUFDMUMsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1lBQ3pFLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFB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
|
|
@@ -10,7 +10,7 @@ function CLIErrorHandler(e) {
|
|
|
10
10
|
}
|
|
11
11
|
async function main() {
|
|
12
12
|
program
|
|
13
|
-
.version("0.2.
|
|
13
|
+
.version("0.2.27")
|
|
14
14
|
.description('The SCANOSS JS package provides a simple, easy to consume module for interacting with SCANOSS APIs/Engine.');
|
|
15
15
|
program
|
|
16
16
|
.command('scan <source>')
|
|
@@ -77,4 +77,4 @@ export class DependencyScanner {
|
|
|
77
77
|
return serverResponse;
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVwZW5kZW5jeVNjYW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2RlcGVuZGVuY2llcy9EZXBlbmRlbmN5U2Nhbm5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQXNCLE1BQU0sNkRBQTZELENBQUM7QUFDcEgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxNQUFNLE9BQU8saUJBQWlCO0lBRXBCLGVBQWUsQ0FBb0I7SUFFbkMscUJBQXFCLENBQXdCO0lBRXJELFlBQVksR0FBRyxHQUFHLElBQUksb0JBQW9CLEVBQUU7UUFDMUMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUkscUJBQXFCLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3JHLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFHTSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQW9CO1FBQ3BDLElBQUksaUJBQWlCLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRSxJQUFJLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUFFLE9BQU8sRUFBQyxTQUFTLEVBQUUsRUFBRSxFQUFDLENBQUM7UUFDakUsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNyRCxNQUFNLFlBQVksR0FBRyxNQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkUsTUFBTSxRQUFRLEdBQUcsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBR3pDLDhEQUE4RDtRQUM5RCxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQixFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2xELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFTyxXQUFXLENBQUMsaUJBQXFDO1FBQ3ZELEtBQUssTUFBTSxJQUFJLElBQUksaUJBQWlCLENBQUMsS0FBSyxFQUFFO1lBQzFDLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFFN0IsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDO2dCQUN6RCxJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQztnQkFDM0IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUUvQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztvQkFDM0IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFFOUM7U0FDRjtRQUNELE9BQU8saUJBQWlCLENBQUM7SUFDM0IsQ0FBQztJQUdPLFlBQVksQ0FBQyxpQkFBcUM7UUFDeEQsSUFBSTtZQUNGLE1BQU0sVUFBVSxHQUFHLElBQUksaUJBQWlCLEVBQUUsQ0FBQztZQUMzQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLEtBQUssTUFBTSxJQUFJLElBQUksaUJBQWlCLENBQUMsS0FBSyxFQUFFO2dCQUMxQyxNQUFNLE9BQU8sR0FBRyxJQUFJLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUM5QyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDM0IsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO29CQUM3QixNQUFNLE9BQU8sR0FBRyxJQUFJLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFDO29CQUM5QyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDM0IsSUFBRyxJQUFJLEVBQUUsV0FBVzt3QkFBRSxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFDL0QsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDM0I7Z0JBQ0QsVUFBVSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUM5QjtZQUNELE9BQU8sVUFBVSxDQUFDO1NBQ25CO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7SUFDSCxDQUFDO0lBRU8sZUFBZSxDQUFDLGVBQW1DLEVBQUUsY0FBMkM7UUFHdEcsTUFBTSxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBRXhCLEtBQUssTUFBTSxJQUFJLElBQUksZUFBZSxDQUFDLEtBQUssRUFBRTtZQUN4QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFBO1lBQzFCLEtBQUssTUFBTSxVQUFVLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDbkMsSUFBSSxVQUFVLEVBQUUsS0FBSztvQkFBRSxZQUFZLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDO2FBQ3BGO1NBQ0Y7UUFFRCxLQUFLLE1BQU0sSUFBSSxJQUFJLGNBQWMsQ0FBQyxTQUFTLEVBQUU7WUFDM0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQTtZQUMxQixLQUFLLE1BQU0sVUFBVSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDOUMsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3ZELElBQUksS0FBSztvQkFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDO2FBQ3hDO1NBQ0Y7UUFFRCxPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0NBRUYifQ==
|
|
@@ -21,17 +21,9 @@ export function pomParser(fileContent, filePath) {
|
|
|
21
21
|
const artifactId = dependency.match(/<artifactId>([^<]*)<\/artifactId>/);
|
|
22
22
|
const name = artifactId ? artifactId[1] : '';
|
|
23
23
|
const versionReg = dependency.match(/<version>([^<]*)<\/version>/);
|
|
24
|
-
let version =
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
if (ver[1] === 'project.version') { // TODO: Add support for project.version
|
|
28
|
-
version = undefined;
|
|
29
|
-
}
|
|
30
|
-
else {
|
|
31
|
-
const res = fileContent.match(new RegExp(`<${ver[1]}>([^<]*)<\/${ver[1]}>`));
|
|
32
|
-
version = res.length >= 1 ? res[1] : '';
|
|
33
|
-
}
|
|
34
|
-
}
|
|
24
|
+
let version = null;
|
|
25
|
+
if (versionReg && versionReg.length > 0)
|
|
26
|
+
version = resolve_version(versionReg[1], fileContent);
|
|
35
27
|
let purlQualifiers;
|
|
36
28
|
const type = dependency.match(/<type>([^<]*)<\/type>/);
|
|
37
29
|
if (type) {
|
|
@@ -40,11 +32,135 @@ export function pomParser(fileContent, filePath) {
|
|
|
40
32
|
}
|
|
41
33
|
// Extract scope.
|
|
42
34
|
const scopeRes = dependency.match(/<scope>([^<]*)<\/scope>/);
|
|
43
|
-
const scope = scopeRes ? scopeRes[1] :
|
|
35
|
+
const scope = scopeRes ? scopeRes[1] : null;
|
|
44
36
|
const purlString = new PackageURL(PURL_TYPE, namespace, name, version, purlQualifiers, undefined).toString();
|
|
45
|
-
results.purls.push({ purl: purlString, scope
|
|
37
|
+
results.purls.push({ purl: purlString, scope });
|
|
46
38
|
});
|
|
47
39
|
}
|
|
48
40
|
return results;
|
|
49
41
|
}
|
|
50
|
-
|
|
42
|
+
function resolve_version(dependency_version, file_content) {
|
|
43
|
+
// See properties: https://maven.apache.org/pom.html#properties
|
|
44
|
+
let version = '';
|
|
45
|
+
if (dependency_version) {
|
|
46
|
+
if (/\${project.version}/.test(dependency_version)) {
|
|
47
|
+
version = extract_content_from_tag(file_content, ['project', 'version']);
|
|
48
|
+
}
|
|
49
|
+
else if (/\${.*?}/.test(dependency_version)) {
|
|
50
|
+
const property = dependency_version.match(/\${(.*?)}/)[1];
|
|
51
|
+
const result = file_content.match(new RegExp(`<${property}>([^<]*)<\/${property}>`));
|
|
52
|
+
if (result && result.length > 0)
|
|
53
|
+
version = result[1];
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
version = dependency_version.toString();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return version;
|
|
60
|
+
}
|
|
61
|
+
function get_start_tag_name(line) {
|
|
62
|
+
const result = line.match(/\<([\w\-\.]+).*?>/);
|
|
63
|
+
if (result)
|
|
64
|
+
return result[1].trim();
|
|
65
|
+
return '';
|
|
66
|
+
}
|
|
67
|
+
function get_end_tag_name(line) {
|
|
68
|
+
const result = line.match(/\<\/([\w\-\.]+) ?>/);
|
|
69
|
+
if (result)
|
|
70
|
+
return result[1].trim();
|
|
71
|
+
return '';
|
|
72
|
+
}
|
|
73
|
+
function get_end_tag(line) {
|
|
74
|
+
const result = get_end_tag_name(line);
|
|
75
|
+
if (result !== '')
|
|
76
|
+
return `</${result}>`;
|
|
77
|
+
return '';
|
|
78
|
+
}
|
|
79
|
+
function get_start_tag(line) {
|
|
80
|
+
const result = get_start_tag_name(line);
|
|
81
|
+
if (result !== '')
|
|
82
|
+
return `<${result}>`;
|
|
83
|
+
return '';
|
|
84
|
+
}
|
|
85
|
+
function element_match(openTag, closeTag) {
|
|
86
|
+
return get_start_tag_name(openTag) === get_end_tag_name(closeTag);
|
|
87
|
+
}
|
|
88
|
+
function is_element_complete(line) {
|
|
89
|
+
return get_start_tag_name(line) === get_end_tag_name(line);
|
|
90
|
+
}
|
|
91
|
+
function get_offset_until_end_of_tag(lines, end_tag_name) {
|
|
92
|
+
let i = 0;
|
|
93
|
+
for (const line of lines) {
|
|
94
|
+
if (get_end_tag_name(line) === end_tag_name)
|
|
95
|
+
break;
|
|
96
|
+
i += 1;
|
|
97
|
+
}
|
|
98
|
+
return i;
|
|
99
|
+
}
|
|
100
|
+
function remove_comments(lines) {
|
|
101
|
+
for (let i = 0; i < lines.length; i += 1) {
|
|
102
|
+
let openCommentFlag = /<!--/.test(lines[i]);
|
|
103
|
+
let endCommentFlag = /-->/.test(lines[i]);
|
|
104
|
+
if (openCommentFlag && endCommentFlag)
|
|
105
|
+
lines[i] = lines[i].replace(/<!--.*-->/, '');
|
|
106
|
+
else if (openCommentFlag) {
|
|
107
|
+
while (!/-->/.test(lines[i]) && i < lines.length) {
|
|
108
|
+
lines[i] = '';
|
|
109
|
+
i += 1;
|
|
110
|
+
}
|
|
111
|
+
lines[i] = lines[i].replace(/.*-->/, '');
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return lines;
|
|
115
|
+
}
|
|
116
|
+
function extract_content_from_tag(file_content, selector) {
|
|
117
|
+
let lines = file_content.split('\n');
|
|
118
|
+
const stack = [];
|
|
119
|
+
let selectorIndex = 0;
|
|
120
|
+
let startTagName = '';
|
|
121
|
+
let endTagName = '';
|
|
122
|
+
let content = '';
|
|
123
|
+
// Sanitize xml: Removes comments
|
|
124
|
+
lines = remove_comments(lines);
|
|
125
|
+
for (let i = 0; i < lines.length; i += 1) {
|
|
126
|
+
let line = lines[i].trim();
|
|
127
|
+
if (line === '')
|
|
128
|
+
continue;
|
|
129
|
+
startTagName = get_start_tag_name(line);
|
|
130
|
+
endTagName = get_end_tag_name(line);
|
|
131
|
+
// Element complete in the same line and different than my selector
|
|
132
|
+
if (selector[selectorIndex] !== startTagName && is_element_complete(line))
|
|
133
|
+
continue;
|
|
134
|
+
// Element spans multiline and is different than my selector
|
|
135
|
+
// Loop until find corresponding end tag
|
|
136
|
+
if (selector[selectorIndex] !== startTagName) {
|
|
137
|
+
i += 1;
|
|
138
|
+
while (i < lines.length && !element_match(line, lines[i]))
|
|
139
|
+
i += 1;
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
// lines[i] points to the opening tag of the current selector[selectorIndex]
|
|
143
|
+
selectorIndex += 1;
|
|
144
|
+
stack.push(startTagName);
|
|
145
|
+
// Target reached
|
|
146
|
+
if (selector.length === stack.length) {
|
|
147
|
+
// Target has only one line
|
|
148
|
+
if (is_element_complete(line)) {
|
|
149
|
+
line = line.replace(get_end_tag(line), '');
|
|
150
|
+
line = line.replace(get_start_tag(line), '');
|
|
151
|
+
return line;
|
|
152
|
+
}
|
|
153
|
+
// Extracts everything beetwen opening and closing tag and return.
|
|
154
|
+
i += 1;
|
|
155
|
+
while (i < lines.length && !element_match(line, lines[i])) {
|
|
156
|
+
content += lines[i].trim();
|
|
157
|
+
i += 1;
|
|
158
|
+
}
|
|
159
|
+
return content;
|
|
160
|
+
}
|
|
161
|
+
startTagName = '';
|
|
162
|
+
endTagName = '';
|
|
163
|
+
}
|
|
164
|
+
return '';
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF2ZW5QYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2RlcGVuZGVuY2llcy9Mb2NhbERlcGVuZGVuY3kvcGFyc2Vycy9tYXZlblBhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFDeEIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUM7QUFFMUIsZ0RBQWdEO0FBQ2hELDhGQUE4RjtBQUM5Riw2RkFBNkY7QUFDN0YsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDO0FBQ2hDLE1BQU0sVUFBVSxTQUFTLENBQUMsV0FBbUIsRUFBRSxRQUFnQjtJQUUzRCxxRUFBcUU7SUFDckUsTUFBTSxPQUFPLEdBQXFCLEVBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFDLENBQUM7SUFDOUQsSUFBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLGFBQWE7UUFDdkMsT0FBTyxPQUFPLENBQUM7SUFFbkIsTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO0lBQ25GLElBQUcsWUFBWSxFQUFFO1FBRWYseUNBQXlDO1FBQ3pDLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDaEMsMkNBQTJDO1lBQzNDLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztZQUNoRSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBRTVDLDBDQUEwQztZQUMxQyxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7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
|