occam-file-system 5.0.15 → 5.0.16
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/lib/utilities/fileSystem.js +21 -19
- package/package.json +1 -1
- package/src/utilities/fileSystem.js +19 -23
|
@@ -95,15 +95,15 @@ function saveFiles(files, projectsDirectoryPath) {
|
|
|
95
95
|
saveFile(file, projectsDirectoryPath);
|
|
96
96
|
});
|
|
97
97
|
}
|
|
98
|
-
function loadEntries(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles
|
|
98
|
+
function loadEntries(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles) {
|
|
99
99
|
var entries = _entries.default.fromNothing(), relativeDirectoryPath = topmostDirectoryName; ///
|
|
100
|
-
entriesFromRelativeDirectoryPath(entries, relativeDirectoryPath, projectsDirectoryPath, loadOnlyRecognisedFiles
|
|
100
|
+
entriesFromRelativeDirectoryPath(entries, relativeDirectoryPath, projectsDirectoryPath, loadOnlyRecognisedFiles);
|
|
101
101
|
return entries;
|
|
102
102
|
}
|
|
103
103
|
function loadRelease(topmostDirectoryName) {
|
|
104
104
|
var projectsDirectoryPath = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : _constants.PERIOD;
|
|
105
105
|
var release = null;
|
|
106
|
-
var name = topmostDirectoryName, loadOnlyRecognisedFiles = true,
|
|
106
|
+
var name = topmostDirectoryName, loadOnlyRecognisedFiles = true, entries = loadEntries(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles), files = entries.getFiles(), readmeFile = (0, _files1.readmeFileFromFiles)(files), metaJSONFile = (0, _files1.metaJSONFileFromFiles)(files);
|
|
107
107
|
if (readmeFile !== null && metaJSONFile !== null) {
|
|
108
108
|
var metaJSONNode = metaJSONNodeFromMetaJSONFile(metaJSONFile);
|
|
109
109
|
if (metaJSONNode !== null) {
|
|
@@ -113,8 +113,8 @@ function loadRelease(topmostDirectoryName) {
|
|
|
113
113
|
}
|
|
114
114
|
return release;
|
|
115
115
|
}
|
|
116
|
-
function loadProject(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles
|
|
117
|
-
var name = topmostDirectoryName, entries = loadEntries(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles
|
|
116
|
+
function loadProject(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles) {
|
|
117
|
+
var name = topmostDirectoryName, entries = loadEntries(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles), files = entries.getFiles(), metaJSONFile = (0, _files1.metaJSONFileFromFiles)(files);
|
|
118
118
|
var repository = null, dependencies = [];
|
|
119
119
|
if (metaJSONFile !== null) {
|
|
120
120
|
var metaJSONNode = metaJSONNodeFromMetaJSONFile(metaJSONFile), node = metaJSONNode;
|
|
@@ -130,19 +130,21 @@ function loadReleases(projectsDirectoryPath) {
|
|
|
130
130
|
var releases1 = _releases.default.fromNothing(), topmostFileNames = topmostFileNamesFromProjectsDirectoryPath(projectsDirectoryPath);
|
|
131
131
|
topmostFileNames.forEach(function(topmostFileName) {
|
|
132
132
|
var release = loadRelease(topmostFileName, projectsDirectoryPath);
|
|
133
|
-
|
|
133
|
+
if (release !== null) {
|
|
134
|
+
releases1.addRelease(release);
|
|
135
|
+
}
|
|
134
136
|
});
|
|
135
137
|
} catch (error) {
|
|
136
138
|
releases = null;
|
|
137
139
|
}
|
|
138
140
|
return releases;
|
|
139
141
|
}
|
|
140
|
-
function loadProjects(projectsDirectoryPath, loadOnlyRecognisedFiles
|
|
142
|
+
function loadProjects(projectsDirectoryPath, loadOnlyRecognisedFiles) {
|
|
141
143
|
var projects;
|
|
142
144
|
try {
|
|
143
|
-
var projects1 = _projects.default.fromNothing(), topmostDirectoryNames = topmostDirectoryNamesFromProjectsDirectoryPath(projectsDirectoryPath
|
|
145
|
+
var projects1 = _projects.default.fromNothing(), topmostDirectoryNames = topmostDirectoryNamesFromProjectsDirectoryPath(projectsDirectoryPath);
|
|
144
146
|
topmostDirectoryNames.forEach(function(topmostDirectoryName) {
|
|
145
|
-
var project = loadProject(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles
|
|
147
|
+
var project = loadProject(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles);
|
|
146
148
|
projects1.addProject(project);
|
|
147
149
|
});
|
|
148
150
|
} catch (error) {
|
|
@@ -166,18 +168,18 @@ function metaJSONNodeFromMetaJSONFile(metaJSONFile) {
|
|
|
166
168
|
var content = metaJSONFile.getContent(), tokens = metaJSONLexer.tokenise(content), node = metaJSONParser.parse(tokens), metaJSONNode = node; ///
|
|
167
169
|
return metaJSONNode;
|
|
168
170
|
}
|
|
169
|
-
function entriesFromRelativeDirectoryPath(entries, relativeDirectoryPath, projectsDirectoryPath, loadOnlyRecognisedFiles
|
|
171
|
+
function entriesFromRelativeDirectoryPath(entries, relativeDirectoryPath, projectsDirectoryPath, loadOnlyRecognisedFiles) {
|
|
170
172
|
var absoluteDirectoryPath = concatenatePaths(projectsDirectoryPath, relativeDirectoryPath), subEntryNames = readDirectory(absoluteDirectoryPath);
|
|
171
173
|
subEntryNames.forEach(function(subEntryName) {
|
|
172
|
-
var subEntryNameHiddenName = (0, _name.isNameHiddenName)(subEntryName),
|
|
173
|
-
if (
|
|
174
|
+
var subEntryNameHiddenName = (0, _name.isNameHiddenName)(subEntryName), loadUnrecognisedFilesAndDirectories = !loadOnlyRecognisedFiles;
|
|
175
|
+
if (!subEntryNameHiddenName) {
|
|
174
176
|
var path = concatenatePaths(relativeDirectoryPath, subEntryName), directory = loadDirectory(path, projectsDirectoryPath);
|
|
175
177
|
if (directory !== null) {
|
|
176
178
|
var directoryPath = path; ///
|
|
177
179
|
if (loadUnrecognisedFilesAndDirectories) {
|
|
178
180
|
entries.addDirectory(directory);
|
|
179
181
|
}
|
|
180
|
-
entriesFromRelativeDirectoryPath(entries, directoryPath, projectsDirectoryPath, loadOnlyRecognisedFiles
|
|
182
|
+
entriesFromRelativeDirectoryPath(entries, directoryPath, projectsDirectoryPath, loadOnlyRecognisedFiles); ///
|
|
181
183
|
} else {
|
|
182
184
|
var file = loadFile(path, projectsDirectoryPath);
|
|
183
185
|
if (file !== null) {
|
|
@@ -194,8 +196,8 @@ function topmostFileNamesFromProjectsDirectoryPath(projectsDirectoryPath) {
|
|
|
194
196
|
var topmostFileNames;
|
|
195
197
|
var subEntryNames = readDirectory(projectsDirectoryPath);
|
|
196
198
|
topmostFileNames = subEntryNames.reduce(function(topmostFileNames, subEntryName) {
|
|
197
|
-
var absoluteSubEntryPath = concatenatePaths(projectsDirectoryPath, subEntryName), subEntryNameHiddenName = (0, _name.isNameHiddenName)(subEntryName)
|
|
198
|
-
if (
|
|
199
|
+
var absoluteSubEntryPath = concatenatePaths(projectsDirectoryPath, subEntryName), subEntryNameHiddenName = (0, _name.isNameHiddenName)(subEntryName);
|
|
200
|
+
if (!subEntryNameHiddenName) {
|
|
199
201
|
var subEntryFile = isEntryFile(absoluteSubEntryPath);
|
|
200
202
|
if (subEntryFile) {
|
|
201
203
|
var topmostFileName = subEntryName; ///
|
|
@@ -206,12 +208,12 @@ function topmostFileNamesFromProjectsDirectoryPath(projectsDirectoryPath) {
|
|
|
206
208
|
}, []);
|
|
207
209
|
return topmostFileNames;
|
|
208
210
|
}
|
|
209
|
-
function topmostDirectoryNamesFromProjectsDirectoryPath(projectsDirectoryPath
|
|
211
|
+
function topmostDirectoryNamesFromProjectsDirectoryPath(projectsDirectoryPath) {
|
|
210
212
|
var topmostDirectoryNames;
|
|
211
213
|
var subEntryNames = readDirectory(projectsDirectoryPath);
|
|
212
214
|
topmostDirectoryNames = subEntryNames.reduce(function(topmostDirectoryNames, subEntryName) {
|
|
213
|
-
var absoluteSubEntryPath = concatenatePaths(projectsDirectoryPath, subEntryName), subEntryNameHiddenName = (0, _name.isNameHiddenName)(subEntryName)
|
|
214
|
-
if (
|
|
215
|
+
var absoluteSubEntryPath = concatenatePaths(projectsDirectoryPath, subEntryName), subEntryNameHiddenName = (0, _name.isNameHiddenName)(subEntryName);
|
|
216
|
+
if (!subEntryNameHiddenName) {
|
|
215
217
|
var subEntryDirectory = isEntryDirectory(absoluteSubEntryPath);
|
|
216
218
|
if (subEntryDirectory) {
|
|
217
219
|
var topmostDirectoryName = subEntryName; ///
|
|
@@ -223,4 +225,4 @@ function topmostDirectoryNamesFromProjectsDirectoryPath(projectsDirectoryPath, d
|
|
|
223
225
|
return topmostDirectoryNames;
|
|
224
226
|
}
|
|
225
227
|
|
|
226
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvZmlsZVN5c3RlbS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcclxuXHJcbmltcG9ydCBta2RpcnAgZnJvbSBcIm1rZGlycFwiO1xyXG5cclxuaW1wb3J0IHsgTWV0YUpTT05MZXhlciwgTWV0YUpTT05QYXJzZXIgfSBmcm9tIFwib2NjYW0tZ3JhbW1hcnNcIjtcclxuaW1wb3J0IHsgcGF0aFV0aWxpdGllcywgZmlsZVN5c3RlbVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcclxuXHJcbmltcG9ydCBGaWxlIGZyb20gXCIuLi9maWxlXCI7XHJcbmltcG9ydCBGaWxlcyBmcm9tIFwiLi4vZmlsZXNcIjtcclxuaW1wb3J0IEVudHJpZXMgZnJvbSBcIi4uL2VudHJpZXNcIjtcclxuaW1wb3J0IFByb2plY3QgZnJvbSBcIi4uL3Byb2plY3RcIjtcclxuaW1wb3J0IFByb2plY3RzIGZyb20gXCIuLi9wcm9qZWN0c1wiO1xyXG5pbXBvcnQgUmVsZWFzZXMgZnJvbSBcIi4uL3JlbGVhc2VzXCI7XHJcbmltcG9ydCBEaXJlY3RvcnkgZnJvbSBcIi4uL2RpcmVjdG9yeVwiO1xyXG5cclxuaW1wb3J0IHsgUEVSSU9EIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBpc05hbWVIaWRkZW5OYW1lIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9uYW1lXCI7XHJcbmltcG9ydCB7IGlzRmlsZVBhdGhSZWNvZ25pc2VkRmlsZVBhdGggfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2ZpbGVQYXRoXCI7XHJcbmltcG9ydCB7IGNvbnZlcnRDb250ZW50VGFic1RvV2hpdGVzcGFjZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGVudFwiO1xyXG5pbXBvcnQgeyBtZXRhSlNPTkZpbGVGcm9tRmlsZXMsIHJlYWRtZUZpbGVGcm9tRmlsZXMgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2ZpbGVzXCI7XHJcbmltcG9ydCB7IHZlcnNpb25Gcm9tTm9kZSwgcmVwb3NpdG9yeUZyb21Ob2RlLCBkZXBlbmRlbmNpZXNGcm9tTm9kZSB9IGZyb20gXCIuL21ldGFKU09OXCI7XHJcblxyXG5jb25zdCB7IGNvbmNhdGVuYXRlUGF0aHMsIHRvcG1vc3REaXJlY3RvcnlQYXRoRnJvbVBhdGggfSA9IHBhdGhVdGlsaXRpZXMsXHJcbiAgICAgIHsgcmVhZEZpbGUsIHdyaXRlRmlsZSwgaXNFbnRyeUZpbGUsIHJlYWREaXJlY3RvcnksIGlzRW50cnlEaXJlY3RvcnkgfSA9IGZpbGVTeXN0ZW1VdGlsaXRpZXM7XHJcblxyXG5jb25zdCBtZXRhSlNPTkxleGVyID0gTWV0YUpTT05MZXhlci5mcm9tTm90aGluZygpLFxyXG4gICAgICBtZXRhSlNPTlBhcnNlciA9IE1ldGFKU09OUGFyc2VyLmZyb21Ob3RoaW5nKCk7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbG9hZEZpbGUocGF0aCwgcHJvamVjdHNEaXJlY3RvcnlQYXRoKSB7XHJcbiAgbGV0IGZpbGUgPSBudWxsO1xyXG5cclxuICB0cnkge1xyXG4gICAgY29uc3QgYWJzb2x1dGVQYXRoID0gY29uY2F0ZW5hdGVQYXRocyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIHBhdGgpLFxyXG4gICAgICAgICAgZW50cnlGaWxlID0gaXNFbnRyeUZpbGUoYWJzb2x1dGVQYXRoKTtcclxuXHJcbiAgICBpZiAoZW50cnlGaWxlKSB7XHJcbiAgICAgIGxldCBjb250ZW50ID0gcmVhZEZpbGUoYWJzb2x1dGVQYXRoKTtcclxuXHJcbiAgICAgIGNvbnRlbnQgPSBjb252ZXJ0Q29udGVudFRhYnNUb1doaXRlc3BhY2UoY29udGVudCk7ICAvLy9cclxuXHJcbiAgICAgIGZpbGUgPSBGaWxlLmZyb21QYXRoQW5kQ29udGVudChwYXRoLCBjb250ZW50KTtcclxuICAgIH1cclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgLy8vXHJcbiAgfVxyXG5cclxuICByZXR1cm4gZmlsZTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHNhdmVGaWxlKGZpbGUsIHByb2plY3RzRGlyZWN0b3J5UGF0aCkge1xyXG4gIGNvbnN0IHBhdGggPSBmaWxlLmdldFBhdGgoKSxcclxuICAgICAgICBjb250ZW50ID0gZmlsZS5nZXRDb250ZW50KCksXHJcbiAgICAgICAgYWJzb2x1dGVQYXRoID0gY29uY2F0ZW5hdGVQYXRocyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIHBhdGgpLFxyXG4gICAgICAgIHRvcG1vc3RBYnNvbHV0ZURpcmVjdG9yeVBhdGggPSB0b3Btb3N0RGlyZWN0b3J5UGF0aEZyb21QYXRoKGFic29sdXRlUGF0aCk7XHJcblxyXG4gIG1rZGlycC5zeW5jKHRvcG1vc3RBYnNvbHV0ZURpcmVjdG9yeVBhdGgpO1xyXG5cclxuICB3cml0ZUZpbGUoYWJzb2x1dGVQYXRoLCBjb250ZW50KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRGaWxlcyhwYXRocywgcHJvamVjdHNEaXJlY3RvcnlQYXRoKSB7XHJcbiAgY29uc3QgZmlsZXMgPSBGaWxlcy5mcm9tTm90aGluZygpO1xyXG5cclxuICBwYXRocy5mb3JFYWNoKChwYXRoKSA9PiB7XHJcbiAgICBjb25zdCBmaWxlID0gbG9hZEZpbGUocGF0aCwgcHJvamVjdHNEaXJlY3RvcnlQYXRoKTtcclxuXHJcbiAgICBmaWxlcy5hZGRGaWxlKGZpbGUpO1xyXG4gIH0pO1xyXG5cclxuICByZXR1cm4gZmlsZXM7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBzYXZlRmlsZXMoZmlsZXMsIHByb2plY3RzRGlyZWN0b3J5UGF0aCkge1xyXG4gIGZpbGVzLmZvckVhY2hGaWxlKChmaWxlKSA9PiB7XHJcbiAgICBzYXZlRmlsZShmaWxlLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgpO1xyXG4gIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbG9hZEVudHJpZXModG9wbW9zdERpcmVjdG9yeU5hbWUsIHByb2plY3RzRGlyZWN0b3J5UGF0aCwgbG9hZE9ubHlSZWNvZ25pc2VkRmlsZXMsIGRvTm90TG9hZEhpZGRlbkZpbGVzQW5kRGlyZWN0b3JpZXMpIHtcclxuICBjb25zdCBlbnRyaWVzID0gRW50cmllcy5mcm9tTm90aGluZygpLFxyXG4gICAgICAgIHJlbGF0aXZlRGlyZWN0b3J5UGF0aCA9IHRvcG1vc3REaXJlY3RvcnlOYW1lOyAgLy8vXHJcblxyXG4gIGVudHJpZXNGcm9tUmVsYXRpdmVEaXJlY3RvcnlQYXRoKGVudHJpZXMsIHJlbGF0aXZlRGlyZWN0b3J5UGF0aCwgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCBsb2FkT25seVJlY29nbmlzZWRGaWxlcywgZG9Ob3RMb2FkSGlkZGVuRmlsZXNBbmREaXJlY3Rvcmllcyk7XHJcblxyXG4gIHJldHVybiBlbnRyaWVzO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbG9hZFJlbGVhc2UodG9wbW9zdERpcmVjdG9yeU5hbWUsIHByb2plY3RzRGlyZWN0b3J5UGF0aCA9IFBFUklPRCkge1xyXG4gIGxldCByZWxlYXNlID0gbnVsbDtcclxuXHJcbiAgY29uc3QgbmFtZSA9IHRvcG1vc3REaXJlY3RvcnlOYW1lLCAgLy8vXHJcbiAgICAgICAgbG9hZE9ubHlSZWNvZ25pc2VkRmlsZXMgPSB0cnVlLFxyXG4gICAgICAgIGRvTm90TG9hZEhpZGRlbkZpbGVzQW5kRGlyZWN0b3JpZXMgPSB0cnVlLFxyXG4gICAgICAgIGVudHJpZXMgPSBsb2FkRW50cmllcyh0b3Btb3N0RGlyZWN0b3J5TmFtZSwgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCBsb2FkT25seVJlY29nbmlzZWRGaWxlcywgZG9Ob3RMb2FkSGlkZGVuRmlsZXNBbmREaXJlY3RvcmllcyksXHJcbiAgICAgICAgZmlsZXMgPSBlbnRyaWVzLmdldEZpbGVzKCksXHJcbiAgICAgICAgcmVhZG1lRmlsZSA9IHJlYWRtZUZpbGVGcm9tRmlsZXMoZmlsZXMpLFxyXG4gICAgICAgIG1ldGFKU09ORmlsZSA9IG1ldGFKU09ORmlsZUZyb21GaWxlcyhmaWxlcyk7XHJcblxyXG4gIGlmICgocmVhZG1lRmlsZSAhPT0gbnVsbCkgJiYgKG1ldGFKU09ORmlsZSAhPT0gbnVsbCkpIHtcclxuICAgIGNvbnN0IG1ldGFKU09OTm9kZSA9IG1ldGFKU09OTm9kZUZyb21NZXRhSlNPTkZpbGUobWV0YUpTT05GaWxlKTtcclxuXHJcbiAgICBpZiAobWV0YUpTT05Ob2RlICE9PSBudWxsKSB7XHJcbiAgICAgIGNvbnN0IG5vZGUgPSBtZXRhSlNPTk5vZGUsICAvLy9cclxuICAgICAgICAgICAgdmVyc2lvbiA9IHZlcnNpb25Gcm9tTm9kZShub2RlKSxcclxuICAgICAgICAgICAgcmVwb3NpdG9yeSA9IHJlcG9zaXRvcnlGcm9tTm9kZShub2RlKSxcclxuICAgICAgICAgICAgZGVwZW5kZW5jaWVzID0gZGVwZW5kZW5jaWVzRnJvbU5vZGUobm9kZSk7XHJcblxyXG4gICAgICByZWxlYXNlID0gUmVsZWFzZS5mcm9tTmFtZUVudHJpZXNWZXJzaW9uUmVwb3NpdG9yeUFuZERlcGVuZGVuY2llcyhuYW1lLCBlbnRyaWVzLCB2ZXJzaW9uLCByZXBvc2l0b3J5LCBkZXBlbmRlbmNpZXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHJlbGVhc2U7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBsb2FkUHJvamVjdCh0b3Btb3N0RGlyZWN0b3J5TmFtZSwgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCBsb2FkT25seVJlY29nbmlzZWRGaWxlcywgZG9Ob3RMb2FkSGlkZGVuRmlsZXNBbmREaXJlY3Rvcmllcykge1xyXG4gIGNvbnN0IG5hbWUgPSB0b3Btb3N0RGlyZWN0b3J5TmFtZSwgIC8vL1xyXG4gICAgICAgIGVudHJpZXMgPSBsb2FkRW50cmllcyh0b3Btb3N0RGlyZWN0b3J5TmFtZSwgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCBsb2FkT25seVJlY29nbmlzZWRGaWxlcywgZG9Ob3RMb2FkSGlkZGVuRmlsZXNBbmREaXJlY3RvcmllcyksXHJcbiAgICAgICAgZmlsZXMgPSBlbnRyaWVzLmdldEZpbGVzKCksXHJcbiAgICAgICAgbWV0YUpTT05GaWxlID0gbWV0YUpTT05GaWxlRnJvbUZpbGVzKGZpbGVzKTtcclxuXHJcbiAgbGV0IHJlcG9zaXRvcnkgPSBudWxsLFxyXG4gICAgICBkZXBlbmRlbmNpZXMgPSBbXTtcclxuXHJcbiAgaWYgKG1ldGFKU09ORmlsZSAhPT0gbnVsbCkge1xyXG4gICAgY29uc3QgbWV0YUpTT05Ob2RlID0gbWV0YUpTT05Ob2RlRnJvbU1ldGFKU09ORmlsZShtZXRhSlNPTkZpbGUpLFxyXG4gICAgICAgICAgbm9kZSA9IG1ldGFKU09OTm9kZTtcclxuXHJcbiAgICByZXBvc2l0b3J5ID0gcmVwb3NpdG9yeUZyb21Ob2RlKG5vZGUpO1xyXG4gICAgZGVwZW5kZW5jaWVzID0gZGVwZW5kZW5jaWVzRnJvbU5vZGUobm9kZSk7XHJcbiAgfVxyXG5cclxuICBjb25zdCBwcm9qZWN0ID0gUHJvamVjdC5mcm9tTmFtZUVudHJpZXNSZXBvc2l0b3J5QW5kRGVwZW5kZW5jaWVzKG5hbWUsIGVudHJpZXMsIHJlcG9zaXRvcnksIGRlcGVuZGVuY2llcyk7XHJcblxyXG4gIHJldHVybiBwcm9qZWN0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbG9hZFJlbGVhc2VzKHByb2plY3RzRGlyZWN0b3J5UGF0aCkge1xyXG4gIGxldCByZWxlYXNlcztcclxuXHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IHJlbGVhc2VzID0gUmVsZWFzZXMuZnJvbU5vdGhpbmcoKSxcclxuICAgICAgICAgIHRvcG1vc3RGaWxlTmFtZXMgPSB0b3Btb3N0RmlsZU5hbWVzRnJvbVByb2plY3RzRGlyZWN0b3J5UGF0aChwcm9qZWN0c0RpcmVjdG9yeVBhdGgpO1xyXG5cclxuICAgIHRvcG1vc3RGaWxlTmFtZXMuZm9yRWFjaCgodG9wbW9zdEZpbGVOYW1lKSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlbGVhc2UgPSBsb2FkUmVsZWFzZSh0b3Btb3N0RmlsZU5hbWUsIHByb2plY3RzRGlyZWN0b3J5UGF0aCk7XHJcblxyXG4gICAgICByZWxlYXNlcy5hZGRSZWxlYXNlKHJlbGVhc2UpO1xyXG4gICAgfSk7XHJcbiAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgIHJlbGVhc2VzID0gbnVsbDtcclxuICB9XHJcblxyXG4gIHJldHVybiByZWxlYXNlcztcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRQcm9qZWN0cyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGxvYWRPbmx5UmVjb2duaXNlZEZpbGVzLCBkb05vdExvYWRIaWRkZW5GaWxlc0FuZERpcmVjdG9yaWVzKSB7XHJcbiAgbGV0IHByb2plY3RzO1xyXG5cclxuICB0cnkge1xyXG4gICAgY29uc3QgcHJvamVjdHMgPSBQcm9qZWN0cy5mcm9tTm90aGluZygpLFxyXG4gICAgICAgICAgdG9wbW9zdERpcmVjdG9yeU5hbWVzID0gdG9wbW9zdERpcmVjdG9yeU5hbWVzRnJvbVByb2plY3RzRGlyZWN0b3J5UGF0aChwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGRvTm90TG9hZEhpZGRlbkZpbGVzQW5kRGlyZWN0b3JpZXMpO1xyXG5cclxuICAgIHRvcG1vc3REaXJlY3RvcnlOYW1lcy5mb3JFYWNoKCh0b3Btb3N0RGlyZWN0b3J5TmFtZSkgPT4ge1xyXG4gICAgICBjb25zdCBwcm9qZWN0ID0gbG9hZFByb2plY3QodG9wbW9zdERpcmVjdG9yeU5hbWUsIHByb2plY3RzRGlyZWN0b3J5UGF0aCwgbG9hZE9ubHlSZWNvZ25pc2VkRmlsZXMsIGRvTm90TG9hZEhpZGRlbkZpbGVzQW5kRGlyZWN0b3JpZXMpO1xyXG5cclxuICAgICAgcHJvamVjdHMuYWRkUHJvamVjdChwcm9qZWN0KTtcclxuICAgIH0pO1xyXG4gIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICBwcm9qZWN0cyA9IG51bGw7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gcHJvamVjdHM7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBsb2FkRGlyZWN0b3J5KHBhdGgsIHByb2plY3RzRGlyZWN0b3J5UGF0aCkge1xyXG4gIGxldCBkaXJlY3RvcnkgPSBudWxsO1xyXG5cclxuICB0cnkge1xyXG4gICAgY29uc3QgYWJzb2x1dGVQYXRoID0gY29uY2F0ZW5hdGVQYXRocyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIHBhdGgpLFxyXG4gICAgICAgICAgZW50cnlEaXJlY3RvcnkgPSBpc0VudHJ5RGlyZWN0b3J5KGFic29sdXRlUGF0aCk7XHJcblxyXG4gICAgaWYgKGVudHJ5RGlyZWN0b3J5KSB7XHJcbiAgICAgIGRpcmVjdG9yeSA9IERpcmVjdG9yeS5mcm9tUGF0aChwYXRoKTtcclxuICAgIH1cclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgLy8vXHJcbiAgfVxyXG5cclxuICByZXR1cm4gZGlyZWN0b3J5O1xyXG59XHJcblxyXG5mdW5jdGlvbiBtZXRhSlNPTk5vZGVGcm9tTWV0YUpTT05GaWxlKG1ldGFKU09ORmlsZSkge1xyXG4gIGNvbnN0IGNvbnRlbnQgPSBtZXRhSlNPTkZpbGUuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgIHRva2VucyA9IG1ldGFKU09OTGV4ZXIudG9rZW5pc2UoY29udGVudCksXHJcbiAgICAgICAgbm9kZSA9IG1ldGFKU09OUGFyc2VyLnBhcnNlKHRva2VucyksXHJcbiAgICAgICAgbWV0YUpTT05Ob2RlID0gbm9kZTsgIC8vL1xyXG5cclxuICByZXR1cm4gbWV0YUpTT05Ob2RlO1xyXG59XHJcblxyXG5mdW5jdGlvbiBlbnRyaWVzRnJvbVJlbGF0aXZlRGlyZWN0b3J5UGF0aChlbnRyaWVzLCByZWxhdGl2ZURpcmVjdG9yeVBhdGgsIHByb2plY3RzRGlyZWN0b3J5UGF0aCwgbG9hZE9ubHlSZWNvZ25pc2VkRmlsZXMsIGRvTm90TG9hZEhpZGRlbkZpbGVzQW5kRGlyZWN0b3JpZXMpIHtcclxuICBjb25zdCBhYnNvbHV0ZURpcmVjdG9yeVBhdGggPSBjb25jYXRlbmF0ZVBhdGhzKHByb2plY3RzRGlyZWN0b3J5UGF0aCwgcmVsYXRpdmVEaXJlY3RvcnlQYXRoKSxcclxuICAgICAgICBzdWJFbnRyeU5hbWVzID0gcmVhZERpcmVjdG9yeShhYnNvbHV0ZURpcmVjdG9yeVBhdGgpO1xyXG5cclxuICBzdWJFbnRyeU5hbWVzLmZvckVhY2goKHN1YkVudHJ5TmFtZSkgPT4ge1xyXG4gICAgY29uc3Qgc3ViRW50cnlOYW1lSGlkZGVuTmFtZSA9IGlzTmFtZUhpZGRlbk5hbWUoc3ViRW50cnlOYW1lKSxcclxuICAgICAgICAgIHN1YkVudHJ5TmFtZU5vdEhpZGRlbk5hbWUgPSAhc3ViRW50cnlOYW1lSGlkZGVuTmFtZSxcclxuICAgICAgICAgIGxvYWRIaWRkZW5GaWxlc0FuZERpcmVjdG9yaWVzID0gIWRvTm90TG9hZEhpZGRlbkZpbGVzQW5kRGlyZWN0b3JpZXMsXHJcbiAgICAgICAgICBsb2FkVW5yZWNvZ25pc2VkRmlsZXNBbmREaXJlY3RvcmllcyA9ICFsb2FkT25seVJlY29nbmlzZWRGaWxlcztcclxuXHJcbiAgICBpZiAoc3ViRW50cnlOYW1lTm90SGlkZGVuTmFtZSB8fCBsb2FkSGlkZGVuRmlsZXNBbmREaXJlY3Rvcmllcykge1xyXG4gICAgICBjb25zdCBwYXRoID0gY29uY2F0ZW5hdGVQYXRocyhyZWxhdGl2ZURpcmVjdG9yeVBhdGgsIHN1YkVudHJ5TmFtZSksXHJcbiAgICAgICAgICAgIGRpcmVjdG9yeSA9IGxvYWREaXJlY3RvcnkocGF0aCwgcHJvamVjdHNEaXJlY3RvcnlQYXRoKTtcclxuXHJcbiAgICAgIGlmIChkaXJlY3RvcnkgIT09IG51bGwpIHtcclxuICAgICAgICBjb25zdCBkaXJlY3RvcnlQYXRoID0gcGF0aDsgLy8vXHJcblxyXG4gICAgICAgIGlmIChsb2FkVW5yZWNvZ25pc2VkRmlsZXNBbmREaXJlY3Rvcmllcykge1xyXG4gICAgICAgICAgZW50cmllcy5hZGREaXJlY3RvcnkoZGlyZWN0b3J5KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGVudHJpZXNGcm9tUmVsYXRpdmVEaXJlY3RvcnlQYXRoKGVudHJpZXMsIGRpcmVjdG9yeVBhdGgsIHByb2plY3RzRGlyZWN0b3J5UGF0aCwgbG9hZE9ubHlSZWNvZ25pc2VkRmlsZXMsIGRvTm90TG9hZEhpZGRlbkZpbGVzQW5kRGlyZWN0b3JpZXMpOyAvLy9cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCBmaWxlID0gbG9hZEZpbGUocGF0aCwgcHJvamVjdHNEaXJlY3RvcnlQYXRoKTtcclxuXHJcbiAgICAgICAgaWYgKGZpbGUgIT09IG51bGwpIHtcclxuICAgICAgICAgIGNvbnN0IGZpbGVQYXRoID0gZmlsZS5nZXRQYXRoKCksXHJcbiAgICAgICAgICAgICAgICBmaWxlUGF0aFJlY29nbmlzZWRGaWxlUGF0aCA9IGlzRmlsZVBhdGhSZWNvZ25pc2VkRmlsZVBhdGgoZmlsZVBhdGgpLFxyXG4gICAgICAgICAgICAgICAgZmlsZVJlY29nbmlzZWRGaWxlID0gZmlsZVBhdGhSZWNvZ25pc2VkRmlsZVBhdGg7ICAvLy9cclxuXHJcbiAgICAgICAgICBpZiAoZmlsZVJlY29nbmlzZWRGaWxlIHx8IGxvYWRVbnJlY29nbmlzZWRGaWxlc0FuZERpcmVjdG9yaWVzKSB7XHJcbiAgICAgICAgICAgIGVudHJpZXMuYWRkRmlsZShmaWxlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gdG9wbW9zdEZpbGVOYW1lc0Zyb21Qcm9qZWN0c0RpcmVjdG9yeVBhdGgocHJvamVjdHNEaXJlY3RvcnlQYXRoKSB7XHJcbiAgbGV0IHRvcG1vc3RGaWxlTmFtZXM7XHJcblxyXG4gIGNvbnN0IHN1YkVudHJ5TmFtZXMgPSByZWFkRGlyZWN0b3J5KHByb2plY3RzRGlyZWN0b3J5UGF0aCk7XHJcblxyXG4gIHRvcG1vc3RGaWxlTmFtZXMgPSBzdWJFbnRyeU5hbWVzLnJlZHVjZSgodG9wbW9zdEZpbGVOYW1lcywgc3ViRW50cnlOYW1lKSA9PiB7XHJcbiAgICBjb25zdCBhYnNvbHV0ZVN1YkVudHJ5UGF0aCA9IGNvbmNhdGVuYXRlUGF0aHMocHJvamVjdHNEaXJlY3RvcnlQYXRoLCBzdWJFbnRyeU5hbWUpLFxyXG4gICAgICAgICAgc3ViRW50cnlOYW1lSGlkZGVuTmFtZSA9IGlzTmFtZUhpZGRlbk5hbWUoc3ViRW50cnlOYW1lKSxcclxuICAgICAgICAgIHN1YkVudHJ5TmFtZU5vdEhpZGRlbk5hbWUgPSAhc3ViRW50cnlOYW1lSGlkZGVuTmFtZTtcclxuXHJcbiAgICBpZiAoc3ViRW50cnlOYW1lTm90SGlkZGVuTmFtZSkge1xyXG4gICAgICBjb25zdCBzdWJFbnRyeUZpbGUgPSBpc0VudHJ5RmlsZShhYnNvbHV0ZVN1YkVudHJ5UGF0aCk7XHJcblxyXG4gICAgICBpZiAoc3ViRW50cnlGaWxlKSB7XHJcbiAgICAgICAgY29uc3QgdG9wbW9zdEZpbGVOYW1lID0gc3ViRW50cnlOYW1lOyAgLy8vXHJcblxyXG4gICAgICAgIHRvcG1vc3RGaWxlTmFtZXMucHVzaCh0b3Btb3N0RmlsZU5hbWUpXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdG9wbW9zdEZpbGVOYW1lcztcclxuICB9LCBbXSk7XHJcblxyXG4gIHJldHVybiB0b3Btb3N0RmlsZU5hbWVzO1xyXG59XHJcblxyXG5mdW5jdGlvbiB0b3Btb3N0RGlyZWN0b3J5TmFtZXNGcm9tUHJvamVjdHNEaXJlY3RvcnlQYXRoKHByb2plY3RzRGlyZWN0b3J5UGF0aCwgZG9Ob3RMb2FkSGlkZGVuRmlsZXNBbmREaXJlY3Rvcmllcykge1xyXG4gIGxldCB0b3Btb3N0RGlyZWN0b3J5TmFtZXM7XHJcblxyXG4gIGNvbnN0IHN1YkVudHJ5TmFtZXMgPSByZWFkRGlyZWN0b3J5KHByb2plY3RzRGlyZWN0b3J5UGF0aCk7XHJcblxyXG4gIHRvcG1vc3REaXJlY3RvcnlOYW1lcyA9IHN1YkVudHJ5TmFtZXMucmVkdWNlKCh0b3Btb3N0RGlyZWN0b3J5TmFtZXMsIHN1YkVudHJ5TmFtZSkgPT4ge1xyXG4gICAgY29uc3QgYWJzb2x1dGVTdWJFbnRyeVBhdGggPSBjb25jYXRlbmF0ZVBhdGhzKHByb2plY3RzRGlyZWN0b3J5UGF0aCwgc3ViRW50cnlOYW1lKSxcclxuICAgICAgICAgIHN1YkVudHJ5TmFtZUhpZGRlbk5hbWUgPSBpc05hbWVIaWRkZW5OYW1lKHN1YkVudHJ5TmFtZSksXHJcbiAgICAgICAgICBzdWJFbnRyeU5hbWVOb3RIaWRkZW5OYW1lID0gIXN1YkVudHJ5TmFtZUhpZGRlbk5hbWUsXHJcbiAgICAgICAgICBsb2FkSGlkZGVuRmlsZXNBbmREaXJlY3RvcmllcyA9ICFkb05vdExvYWRIaWRkZW5GaWxlc0FuZERpcmVjdG9yaWVzO1xyXG5cclxuICAgIGlmIChzdWJFbnRyeU5hbWVOb3RIaWRkZW5OYW1lIHx8IGxvYWRIaWRkZW5GaWxlc0FuZERpcmVjdG9yaWVzKSB7XHJcbiAgICAgIGNvbnN0IHN1YkVudHJ5RGlyZWN0b3J5ID0gaXNFbnRyeURpcmVjdG9yeShhYnNvbHV0ZVN1YkVudHJ5UGF0aCk7XHJcblxyXG4gICAgICBpZiAoc3ViRW50cnlEaXJlY3RvcnkpIHtcclxuICAgICAgICBjb25zdCB0b3Btb3N0RGlyZWN0b3J5TmFtZSA9IHN1YkVudHJ5TmFtZTsgIC8vL1xyXG5cclxuICAgICAgICB0b3Btb3N0RGlyZWN0b3J5TmFtZXMucHVzaCh0b3Btb3N0RGlyZWN0b3J5TmFtZSlcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0b3Btb3N0RGlyZWN0b3J5TmFtZXM7XHJcbiAgfSwgW10pO1xyXG5cclxuICByZXR1cm4gdG9wbW9zdERpcmVjdG9yeU5hbWVzO1xyXG59XHJcbiJdLCJuYW1lcyI6WyJsb2FkRmlsZSIsInNhdmVGaWxlIiwibG9hZEZpbGVzIiwic2F2ZUZpbGVzIiwibG9hZEVudHJpZXMiLCJsb2FkUmVsZWFzZSIsImxvYWRQcm9qZWN0IiwibG9hZFJlbGVhc2VzIiwibG9hZFByb2plY3RzIiwibG9hZERpcmVjdG9yeSIsImNvbmNhdGVuYXRlUGF0aHMiLCJwYXRoVXRpbGl0aWVzIiwidG9wbW9zdERpcmVjdG9yeVBhdGhGcm9tUGF0aCIsInJlYWRGaWxlIiwiZmlsZVN5c3RlbVV0aWxpdGllcyIsIndyaXRlRmlsZSIsImlzRW50cnlGaWxlIiwicmVhZERpcmVjdG9yeSIsImlzRW50cnlEaXJlY3RvcnkiLCJtZXRhSlNPTkxleGVyIiwiTWV0YUpTT05MZXhlciIsImZyb21Ob3RoaW5nIiwibWV0YUpTT05QYXJzZXIiLCJNZXRhSlNPTlBhcnNlciIsInBhdGgiLCJwcm9qZWN0c0RpcmVjdG9yeVBhdGgiLCJmaWxlIiwiYWJzb2x1dGVQYXRoIiwiZW50cnlGaWxlIiwiY29udGVudCIsImNvbnZlcnRDb250ZW50VGFic1RvV2hpdGVzcGFjZSIsIkZpbGUiLCJmcm9tUGF0aEFuZENvbnRlbnQiLCJlcnJvciIsImdldFBhdGgiLCJnZXRDb250ZW50IiwidG9wbW9zdEFic29sdXRlRGlyZWN0b3J5UGF0aCIsIm1rZGlycCIsInN5bmMiLCJwYXRocyIsImZpbGVzIiwiRmlsZXMiLCJmb3JFYWNoIiwiYWRkRmlsZSIsImZvckVhY2hGaWxlIiwidG9wbW9zdERpcmVjdG9yeU5hbWUiLCJsb2FkT25seVJlY29nbmlzZWRGaWxlcyIsImRvTm90TG9hZEhpZGRlbkZpbGVzQW5kRGlyZWN0b3JpZXMiLCJlbnRyaWVzIiwiRW50cmllcyIsInJlbGF0aXZlRGlyZWN0b3J5UGF0aCIsImVudHJpZXNGcm9tUmVsYXRpdmVEaXJlY3RvcnlQYXRoIiwiUEVSSU9EIiwicmVsZWFzZSIsIm5hbWUiLCJnZXRGaWxlcyIsInJlYWRtZUZpbGUiLCJyZWFkbWVGaWxlRnJvbUZpbGVzIiwibWV0YUpTT05GaWxlIiwibWV0YUpTT05GaWxlRnJvbUZpbGVzIiwibWV0YUpTT05Ob2RlIiwibWV0YUpTT05Ob2RlRnJvbU1ldGFKU09ORmlsZSIsIm5vZGUiLCJ2ZXJzaW9uIiwidmVyc2lvbkZyb21Ob2RlIiwicmVwb3NpdG9yeSIsInJlcG9zaXRvcnlGcm9tTm9kZSIsImRlcGVuZGVuY2llcyIsImRlcGVuZGVuY2llc0Zyb21Ob2RlIiwiUmVsZWFzZSIsImZyb21OYW1lRW50cmllc1ZlcnNpb25SZXBvc2l0b3J5QW5kRGVwZW5kZW5jaWVzIiwicHJvamVjdCIsIlByb2plY3QiLCJmcm9tTmFtZUVudHJpZXNSZXBvc2l0b3J5QW5kRGVwZW5kZW5jaWVzIiwicmVsZWFzZXMiLCJSZWxlYXNlcyIsInRvcG1vc3RGaWxlTmFtZXMiLCJ0b3Btb3N0RmlsZU5hbWVzRnJvbVByb2plY3RzRGlyZWN0b3J5UGF0aCIsInRvcG1vc3RGaWxlTmFtZSIsImFkZFJlbGVhc2UiLCJwcm9qZWN0cyIsIlByb2plY3RzIiwidG9wbW9zdERpcmVjdG9yeU5hbWVzIiwidG9wbW9zdERpcmVjdG9yeU5hbWVzRnJvbVByb2plY3RzRGlyZWN0b3J5UGF0aCIsImFkZFByb2plY3QiLCJkaXJlY3RvcnkiLCJlbnRyeURpcmVjdG9yeSIsIkRpcmVjdG9yeSIsImZyb21QYXRoIiwidG9rZW5zIiwidG9rZW5pc2UiLCJwYXJzZSIsImFic29sdXRlRGlyZWN0b3J5UGF0aCIsInN1YkVudHJ5TmFtZXMiLCJzdWJFbnRyeU5hbWUiLCJzdWJFbnRyeU5hbWVIaWRkZW5OYW1lIiwiaXNOYW1lSGlkZGVuTmFtZSIsInN1YkVudHJ5TmFtZU5vdEhpZGRlbk5hbWUiLCJsb2FkSGlkZGVuRmlsZXNBbmREaXJlY3RvcmllcyIsImxvYWRVbnJlY29nbmlzZWRGaWxlc0FuZERpcmVjdG9yaWVzIiwiZGlyZWN0b3J5UGF0aCIsImFkZERpcmVjdG9yeSIsImZpbGVQYXRoIiwiZmlsZVBhdGhSZWNvZ25pc2VkRmlsZVBhdGgiLCJpc0ZpbGVQYXRoUmVjb2duaXNlZEZpbGVQYXRoIiwiZmlsZVJlY29nbmlzZWRGaWxlIiwicmVkdWNlIiwiYWJzb2x1dGVTdWJFbnRyeVBhdGgiLCJzdWJFbnRyeUZpbGUiLCJwdXNoIiwic3ViRW50cnlEaXJlY3RvcnkiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQTRCZ0JBLFFBQVE7ZUFBUkE7O0lBcUJBQyxRQUFRO2VB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
|
|
228
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvZmlsZVN5c3RlbS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcclxuXHJcbmltcG9ydCBta2RpcnAgZnJvbSBcIm1rZGlycFwiO1xyXG5cclxuaW1wb3J0IHsgTWV0YUpTT05MZXhlciwgTWV0YUpTT05QYXJzZXIgfSBmcm9tIFwib2NjYW0tZ3JhbW1hcnNcIjtcclxuaW1wb3J0IHsgcGF0aFV0aWxpdGllcywgZmlsZVN5c3RlbVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcclxuXHJcbmltcG9ydCBGaWxlIGZyb20gXCIuLi9maWxlXCI7XHJcbmltcG9ydCBGaWxlcyBmcm9tIFwiLi4vZmlsZXNcIjtcclxuaW1wb3J0IEVudHJpZXMgZnJvbSBcIi4uL2VudHJpZXNcIjtcclxuaW1wb3J0IFByb2plY3QgZnJvbSBcIi4uL3Byb2plY3RcIjtcclxuaW1wb3J0IFByb2plY3RzIGZyb20gXCIuLi9wcm9qZWN0c1wiO1xyXG5pbXBvcnQgUmVsZWFzZXMgZnJvbSBcIi4uL3JlbGVhc2VzXCI7XHJcbmltcG9ydCBEaXJlY3RvcnkgZnJvbSBcIi4uL2RpcmVjdG9yeVwiO1xyXG5cclxuaW1wb3J0IHsgUEVSSU9EIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBpc05hbWVIaWRkZW5OYW1lIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9uYW1lXCI7XHJcbmltcG9ydCB7IGlzRmlsZVBhdGhSZWNvZ25pc2VkRmlsZVBhdGggfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2ZpbGVQYXRoXCI7XHJcbmltcG9ydCB7IGNvbnZlcnRDb250ZW50VGFic1RvV2hpdGVzcGFjZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGVudFwiO1xyXG5pbXBvcnQgeyBtZXRhSlNPTkZpbGVGcm9tRmlsZXMsIHJlYWRtZUZpbGVGcm9tRmlsZXMgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2ZpbGVzXCI7XHJcbmltcG9ydCB7IHZlcnNpb25Gcm9tTm9kZSwgcmVwb3NpdG9yeUZyb21Ob2RlLCBkZXBlbmRlbmNpZXNGcm9tTm9kZSB9IGZyb20gXCIuL21ldGFKU09OXCI7XHJcblxyXG5jb25zdCB7IGNvbmNhdGVuYXRlUGF0aHMsIHRvcG1vc3REaXJlY3RvcnlQYXRoRnJvbVBhdGggfSA9IHBhdGhVdGlsaXRpZXMsXHJcbiAgICAgIHsgcmVhZEZpbGUsIHdyaXRlRmlsZSwgaXNFbnRyeUZpbGUsIHJlYWREaXJlY3RvcnksIGlzRW50cnlEaXJlY3RvcnkgfSA9IGZpbGVTeXN0ZW1VdGlsaXRpZXM7XHJcblxyXG5jb25zdCBtZXRhSlNPTkxleGVyID0gTWV0YUpTT05MZXhlci5mcm9tTm90aGluZygpLFxyXG4gICAgICBtZXRhSlNPTlBhcnNlciA9IE1ldGFKU09OUGFyc2VyLmZyb21Ob3RoaW5nKCk7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbG9hZEZpbGUocGF0aCwgcHJvamVjdHNEaXJlY3RvcnlQYXRoKSB7XHJcbiAgbGV0IGZpbGUgPSBudWxsO1xyXG5cclxuICB0cnkge1xyXG4gICAgY29uc3QgYWJzb2x1dGVQYXRoID0gY29uY2F0ZW5hdGVQYXRocyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIHBhdGgpLFxyXG4gICAgICAgICAgZW50cnlGaWxlID0gaXNFbnRyeUZpbGUoYWJzb2x1dGVQYXRoKTtcclxuXHJcbiAgICBpZiAoZW50cnlGaWxlKSB7XHJcbiAgICAgIGxldCBjb250ZW50ID0gcmVhZEZpbGUoYWJzb2x1dGVQYXRoKTtcclxuXHJcbiAgICAgIGNvbnRlbnQgPSBjb252ZXJ0Q29udGVudFRhYnNUb1doaXRlc3BhY2UoY29udGVudCk7ICAvLy9cclxuXHJcbiAgICAgIGZpbGUgPSBGaWxlLmZyb21QYXRoQW5kQ29udGVudChwYXRoLCBjb250ZW50KTtcclxuICAgIH1cclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgLy8vXHJcbiAgfVxyXG5cclxuICByZXR1cm4gZmlsZTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHNhdmVGaWxlKGZpbGUsIHByb2plY3RzRGlyZWN0b3J5UGF0aCkge1xyXG4gIGNvbnN0IHBhdGggPSBmaWxlLmdldFBhdGgoKSxcclxuICAgICAgICBjb250ZW50ID0gZmlsZS5nZXRDb250ZW50KCksXHJcbiAgICAgICAgYWJzb2x1dGVQYXRoID0gY29uY2F0ZW5hdGVQYXRocyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIHBhdGgpLFxyXG4gICAgICAgIHRvcG1vc3RBYnNvbHV0ZURpcmVjdG9yeVBhdGggPSB0b3Btb3N0RGlyZWN0b3J5UGF0aEZyb21QYXRoKGFic29sdXRlUGF0aCk7XHJcblxyXG4gIG1rZGlycC5zeW5jKHRvcG1vc3RBYnNvbHV0ZURpcmVjdG9yeVBhdGgpO1xyXG5cclxuICB3cml0ZUZpbGUoYWJzb2x1dGVQYXRoLCBjb250ZW50KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRGaWxlcyhwYXRocywgcHJvamVjdHNEaXJlY3RvcnlQYXRoKSB7XHJcbiAgY29uc3QgZmlsZXMgPSBGaWxlcy5mcm9tTm90aGluZygpO1xyXG5cclxuICBwYXRocy5mb3JFYWNoKChwYXRoKSA9PiB7XHJcbiAgICBjb25zdCBmaWxlID0gbG9hZEZpbGUocGF0aCwgcHJvamVjdHNEaXJlY3RvcnlQYXRoKTtcclxuXHJcbiAgICBmaWxlcy5hZGRGaWxlKGZpbGUpO1xyXG4gIH0pO1xyXG5cclxuICByZXR1cm4gZmlsZXM7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBzYXZlRmlsZXMoZmlsZXMsIHByb2plY3RzRGlyZWN0b3J5UGF0aCkge1xyXG4gIGZpbGVzLmZvckVhY2hGaWxlKChmaWxlKSA9PiB7XHJcbiAgICBzYXZlRmlsZShmaWxlLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgpO1xyXG4gIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbG9hZEVudHJpZXModG9wbW9zdERpcmVjdG9yeU5hbWUsIHByb2plY3RzRGlyZWN0b3J5UGF0aCwgbG9hZE9ubHlSZWNvZ25pc2VkRmlsZXMpIHtcclxuICBjb25zdCBlbnRyaWVzID0gRW50cmllcy5mcm9tTm90aGluZygpLFxyXG4gICAgICAgIHJlbGF0aXZlRGlyZWN0b3J5UGF0aCA9IHRvcG1vc3REaXJlY3RvcnlOYW1lOyAgLy8vXHJcblxyXG4gIGVudHJpZXNGcm9tUmVsYXRpdmVEaXJlY3RvcnlQYXRoKGVudHJpZXMsIHJlbGF0aXZlRGlyZWN0b3J5UGF0aCwgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCBsb2FkT25seVJlY29nbmlzZWRGaWxlcyk7XHJcblxyXG4gIHJldHVybiBlbnRyaWVzO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbG9hZFJlbGVhc2UodG9wbW9zdERpcmVjdG9yeU5hbWUsIHByb2plY3RzRGlyZWN0b3J5UGF0aCA9IFBFUklPRCkge1xyXG4gIGxldCByZWxlYXNlID0gbnVsbDtcclxuXHJcbiAgY29uc3QgbmFtZSA9IHRvcG1vc3REaXJlY3RvcnlOYW1lLCAgLy8vXHJcbiAgICAgICAgbG9hZE9ubHlSZWNvZ25pc2VkRmlsZXMgPSB0cnVlLFxyXG4gICAgICAgIGVudHJpZXMgPSBsb2FkRW50cmllcyh0b3Btb3N0RGlyZWN0b3J5TmFtZSwgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCBsb2FkT25seVJlY29nbmlzZWRGaWxlcyksXHJcbiAgICAgICAgZmlsZXMgPSBlbnRyaWVzLmdldEZpbGVzKCksXHJcbiAgICAgICAgcmVhZG1lRmlsZSA9IHJlYWRtZUZpbGVGcm9tRmlsZXMoZmlsZXMpLFxyXG4gICAgICAgIG1ldGFKU09ORmlsZSA9IG1ldGFKU09ORmlsZUZyb21GaWxlcyhmaWxlcyk7XHJcblxyXG4gIGlmICgocmVhZG1lRmlsZSAhPT0gbnVsbCkgJiYgKG1ldGFKU09ORmlsZSAhPT0gbnVsbCkpIHtcclxuICAgIGNvbnN0IG1ldGFKU09OTm9kZSA9IG1ldGFKU09OTm9kZUZyb21NZXRhSlNPTkZpbGUobWV0YUpTT05GaWxlKTtcclxuXHJcbiAgICBpZiAobWV0YUpTT05Ob2RlICE9PSBudWxsKSB7XHJcbiAgICAgIGNvbnN0IG5vZGUgPSBtZXRhSlNPTk5vZGUsICAvLy9cclxuICAgICAgICAgICAgdmVyc2lvbiA9IHZlcnNpb25Gcm9tTm9kZShub2RlKSxcclxuICAgICAgICAgICAgcmVwb3NpdG9yeSA9IHJlcG9zaXRvcnlGcm9tTm9kZShub2RlKSxcclxuICAgICAgICAgICAgZGVwZW5kZW5jaWVzID0gZGVwZW5kZW5jaWVzRnJvbU5vZGUobm9kZSk7XHJcblxyXG4gICAgICByZWxlYXNlID0gUmVsZWFzZS5mcm9tTmFtZUVudHJpZXNWZXJzaW9uUmVwb3NpdG9yeUFuZERlcGVuZGVuY2llcyhuYW1lLCBlbnRyaWVzLCB2ZXJzaW9uLCByZXBvc2l0b3J5LCBkZXBlbmRlbmNpZXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHJlbGVhc2U7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBsb2FkUHJvamVjdCh0b3Btb3N0RGlyZWN0b3J5TmFtZSwgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCBsb2FkT25seVJlY29nbmlzZWRGaWxlcykge1xyXG4gIGNvbnN0IG5hbWUgPSB0b3Btb3N0RGlyZWN0b3J5TmFtZSwgIC8vL1xyXG4gICAgICAgIGVudHJpZXMgPSBsb2FkRW50cmllcyh0b3Btb3N0RGlyZWN0b3J5TmFtZSwgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCBsb2FkT25seVJlY29nbmlzZWRGaWxlcyksXHJcbiAgICAgICAgZmlsZXMgPSBlbnRyaWVzLmdldEZpbGVzKCksXHJcbiAgICAgICAgbWV0YUpTT05GaWxlID0gbWV0YUpTT05GaWxlRnJvbUZpbGVzKGZpbGVzKTtcclxuXHJcbiAgbGV0IHJlcG9zaXRvcnkgPSBudWxsLFxyXG4gICAgICBkZXBlbmRlbmNpZXMgPSBbXTtcclxuXHJcbiAgaWYgKG1ldGFKU09ORmlsZSAhPT0gbnVsbCkge1xyXG4gICAgY29uc3QgbWV0YUpTT05Ob2RlID0gbWV0YUpTT05Ob2RlRnJvbU1ldGFKU09ORmlsZShtZXRhSlNPTkZpbGUpLFxyXG4gICAgICAgICAgbm9kZSA9IG1ldGFKU09OTm9kZTtcclxuXHJcbiAgICByZXBvc2l0b3J5ID0gcmVwb3NpdG9yeUZyb21Ob2RlKG5vZGUpO1xyXG4gICAgZGVwZW5kZW5jaWVzID0gZGVwZW5kZW5jaWVzRnJvbU5vZGUobm9kZSk7XHJcbiAgfVxyXG5cclxuICBjb25zdCBwcm9qZWN0ID0gUHJvamVjdC5mcm9tTmFtZUVudHJpZXNSZXBvc2l0b3J5QW5kRGVwZW5kZW5jaWVzKG5hbWUsIGVudHJpZXMsIHJlcG9zaXRvcnksIGRlcGVuZGVuY2llcyk7XHJcblxyXG4gIHJldHVybiBwcm9qZWN0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbG9hZFJlbGVhc2VzKHByb2plY3RzRGlyZWN0b3J5UGF0aCkge1xyXG4gIGxldCByZWxlYXNlcztcclxuXHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IHJlbGVhc2VzID0gUmVsZWFzZXMuZnJvbU5vdGhpbmcoKSxcclxuICAgICAgICAgIHRvcG1vc3RGaWxlTmFtZXMgPSB0b3Btb3N0RmlsZU5hbWVzRnJvbVByb2plY3RzRGlyZWN0b3J5UGF0aChwcm9qZWN0c0RpcmVjdG9yeVBhdGgpO1xyXG5cclxuICAgIHRvcG1vc3RGaWxlTmFtZXMuZm9yRWFjaCgodG9wbW9zdEZpbGVOYW1lKSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlbGVhc2UgPSBsb2FkUmVsZWFzZSh0b3Btb3N0RmlsZU5hbWUsIHByb2plY3RzRGlyZWN0b3J5UGF0aCk7XHJcblxyXG4gICAgICBpZiAocmVsZWFzZSAhPT0gbnVsbCkge1xyXG4gICAgICAgIHJlbGVhc2VzLmFkZFJlbGVhc2UocmVsZWFzZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICByZWxlYXNlcyA9IG51bGw7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gcmVsZWFzZXM7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBsb2FkUHJvamVjdHMocHJvamVjdHNEaXJlY3RvcnlQYXRoLCBsb2FkT25seVJlY29nbmlzZWRGaWxlcykge1xyXG4gIGxldCBwcm9qZWN0cztcclxuXHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IHByb2plY3RzID0gUHJvamVjdHMuZnJvbU5vdGhpbmcoKSxcclxuICAgICAgICAgIHRvcG1vc3REaXJlY3RvcnlOYW1lcyA9IHRvcG1vc3REaXJlY3RvcnlOYW1lc0Zyb21Qcm9qZWN0c0RpcmVjdG9yeVBhdGgocHJvamVjdHNEaXJlY3RvcnlQYXRoKTtcclxuXHJcbiAgICB0b3Btb3N0RGlyZWN0b3J5TmFtZXMuZm9yRWFjaCgodG9wbW9zdERpcmVjdG9yeU5hbWUpID0+IHtcclxuICAgICAgY29uc3QgcHJvamVjdCA9IGxvYWRQcm9qZWN0KHRvcG1vc3REaXJlY3RvcnlOYW1lLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGxvYWRPbmx5UmVjb2duaXNlZEZpbGVzKTtcclxuXHJcbiAgICAgIHByb2plY3RzLmFkZFByb2plY3QocHJvamVjdCk7XHJcbiAgICB9KTtcclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgcHJvamVjdHMgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHByb2plY3RzO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbG9hZERpcmVjdG9yeShwYXRoLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgpIHtcclxuICBsZXQgZGlyZWN0b3J5ID0gbnVsbDtcclxuXHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IGFic29sdXRlUGF0aCA9IGNvbmNhdGVuYXRlUGF0aHMocHJvamVjdHNEaXJlY3RvcnlQYXRoLCBwYXRoKSxcclxuICAgICAgICAgIGVudHJ5RGlyZWN0b3J5ID0gaXNFbnRyeURpcmVjdG9yeShhYnNvbHV0ZVBhdGgpO1xyXG5cclxuICAgIGlmIChlbnRyeURpcmVjdG9yeSkge1xyXG4gICAgICBkaXJlY3RvcnkgPSBEaXJlY3RvcnkuZnJvbVBhdGgocGF0aCk7XHJcbiAgICB9XHJcbiAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgIC8vL1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGRpcmVjdG9yeTtcclxufVxyXG5cclxuZnVuY3Rpb24gbWV0YUpTT05Ob2RlRnJvbU1ldGFKU09ORmlsZShtZXRhSlNPTkZpbGUpIHtcclxuICBjb25zdCBjb250ZW50ID0gbWV0YUpTT05GaWxlLmdldENvbnRlbnQoKSxcclxuICAgICAgICB0b2tlbnMgPSBtZXRhSlNPTkxleGVyLnRva2VuaXNlKGNvbnRlbnQpLFxyXG4gICAgICAgIG5vZGUgPSBtZXRhSlNPTlBhcnNlci5wYXJzZSh0b2tlbnMpLFxyXG4gICAgICAgIG1ldGFKU09OTm9kZSA9IG5vZGU7ICAvLy9cclxuXHJcbiAgcmV0dXJuIG1ldGFKU09OTm9kZTtcclxufVxyXG5cclxuZnVuY3Rpb24gZW50cmllc0Zyb21SZWxhdGl2ZURpcmVjdG9yeVBhdGgoZW50cmllcywgcmVsYXRpdmVEaXJlY3RvcnlQYXRoLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGxvYWRPbmx5UmVjb2duaXNlZEZpbGVzKSB7XHJcbiAgY29uc3QgYWJzb2x1dGVEaXJlY3RvcnlQYXRoID0gY29uY2F0ZW5hdGVQYXRocyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIHJlbGF0aXZlRGlyZWN0b3J5UGF0aCksXHJcbiAgICAgICAgc3ViRW50cnlOYW1lcyA9IHJlYWREaXJlY3RvcnkoYWJzb2x1dGVEaXJlY3RvcnlQYXRoKTtcclxuXHJcbiAgc3ViRW50cnlOYW1lcy5mb3JFYWNoKChzdWJFbnRyeU5hbWUpID0+IHtcclxuICAgIGNvbnN0IHN1YkVudHJ5TmFtZUhpZGRlbk5hbWUgPSBpc05hbWVIaWRkZW5OYW1lKHN1YkVudHJ5TmFtZSksXHJcbiAgICAgICAgICBsb2FkVW5yZWNvZ25pc2VkRmlsZXNBbmREaXJlY3RvcmllcyA9ICFsb2FkT25seVJlY29nbmlzZWRGaWxlcztcclxuXHJcbiAgICBpZiAoIXN1YkVudHJ5TmFtZUhpZGRlbk5hbWUpIHtcclxuICAgICAgY29uc3QgcGF0aCA9IGNvbmNhdGVuYXRlUGF0aHMocmVsYXRpdmVEaXJlY3RvcnlQYXRoLCBzdWJFbnRyeU5hbWUpLFxyXG4gICAgICAgICAgICBkaXJlY3RvcnkgPSBsb2FkRGlyZWN0b3J5KHBhdGgsIHByb2plY3RzRGlyZWN0b3J5UGF0aCk7XHJcblxyXG4gICAgICBpZiAoZGlyZWN0b3J5ICE9PSBudWxsKSB7XHJcbiAgICAgICAgY29uc3QgZGlyZWN0b3J5UGF0aCA9IHBhdGg7IC8vL1xyXG5cclxuICAgICAgICBpZiAobG9hZFVucmVjb2duaXNlZEZpbGVzQW5kRGlyZWN0b3JpZXMpIHtcclxuICAgICAgICAgIGVudHJpZXMuYWRkRGlyZWN0b3J5KGRpcmVjdG9yeSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBlbnRyaWVzRnJvbVJlbGF0aXZlRGlyZWN0b3J5UGF0aChlbnRyaWVzLCBkaXJlY3RvcnlQYXRoLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGxvYWRPbmx5UmVjb2duaXNlZEZpbGVzKTsgLy8vXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgZmlsZSA9IGxvYWRGaWxlKHBhdGgsIHByb2plY3RzRGlyZWN0b3J5UGF0aCk7XHJcblxyXG4gICAgICAgIGlmIChmaWxlICE9PSBudWxsKSB7XHJcbiAgICAgICAgICBjb25zdCBmaWxlUGF0aCA9IGZpbGUuZ2V0UGF0aCgpLFxyXG4gICAgICAgICAgICAgICAgZmlsZVBhdGhSZWNvZ25pc2VkRmlsZVBhdGggPSBpc0ZpbGVQYXRoUmVjb2duaXNlZEZpbGVQYXRoKGZpbGVQYXRoKSxcclxuICAgICAgICAgICAgICAgIGZpbGVSZWNvZ25pc2VkRmlsZSA9IGZpbGVQYXRoUmVjb2duaXNlZEZpbGVQYXRoOyAgLy8vXHJcblxyXG4gICAgICAgICAgaWYgKGZpbGVSZWNvZ25pc2VkRmlsZSB8fCBsb2FkVW5yZWNvZ25pc2VkRmlsZXNBbmREaXJlY3Rvcmllcykge1xyXG4gICAgICAgICAgICBlbnRyaWVzLmFkZEZpbGUoZmlsZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRvcG1vc3RGaWxlTmFtZXNGcm9tUHJvamVjdHNEaXJlY3RvcnlQYXRoKHByb2plY3RzRGlyZWN0b3J5UGF0aCkge1xyXG4gIGxldCB0b3Btb3N0RmlsZU5hbWVzO1xyXG5cclxuICBjb25zdCBzdWJFbnRyeU5hbWVzID0gcmVhZERpcmVjdG9yeShwcm9qZWN0c0RpcmVjdG9yeVBhdGgpO1xyXG5cclxuICB0b3Btb3N0RmlsZU5hbWVzID0gc3ViRW50cnlOYW1lcy5yZWR1Y2UoKHRvcG1vc3RGaWxlTmFtZXMsIHN1YkVudHJ5TmFtZSkgPT4ge1xyXG4gICAgY29uc3QgYWJzb2x1dGVTdWJFbnRyeVBhdGggPSBjb25jYXRlbmF0ZVBhdGhzKHByb2plY3RzRGlyZWN0b3J5UGF0aCwgc3ViRW50cnlOYW1lKSxcclxuICAgICAgICAgIHN1YkVudHJ5TmFtZUhpZGRlbk5hbWUgPSBpc05hbWVIaWRkZW5OYW1lKHN1YkVudHJ5TmFtZSk7XHJcblxyXG4gICAgaWYgKCFzdWJFbnRyeU5hbWVIaWRkZW5OYW1lKSB7XHJcbiAgICAgIGNvbnN0IHN1YkVudHJ5RmlsZSA9IGlzRW50cnlGaWxlKGFic29sdXRlU3ViRW50cnlQYXRoKTtcclxuXHJcbiAgICAgIGlmIChzdWJFbnRyeUZpbGUpIHtcclxuICAgICAgICBjb25zdCB0b3Btb3N0RmlsZU5hbWUgPSBzdWJFbnRyeU5hbWU7ICAvLy9cclxuXHJcbiAgICAgICAgdG9wbW9zdEZpbGVOYW1lcy5wdXNoKHRvcG1vc3RGaWxlTmFtZSlcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0b3Btb3N0RmlsZU5hbWVzO1xyXG4gIH0sIFtdKTtcclxuXHJcbiAgcmV0dXJuIHRvcG1vc3RGaWxlTmFtZXM7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRvcG1vc3REaXJlY3RvcnlOYW1lc0Zyb21Qcm9qZWN0c0RpcmVjdG9yeVBhdGgocHJvamVjdHNEaXJlY3RvcnlQYXRoKSB7XHJcbiAgbGV0IHRvcG1vc3REaXJlY3RvcnlOYW1lcztcclxuXHJcbiAgY29uc3Qgc3ViRW50cnlOYW1lcyA9IHJlYWREaXJlY3RvcnkocHJvamVjdHNEaXJlY3RvcnlQYXRoKTtcclxuXHJcbiAgdG9wbW9zdERpcmVjdG9yeU5hbWVzID0gc3ViRW50cnlOYW1lcy5yZWR1Y2UoKHRvcG1vc3REaXJlY3RvcnlOYW1lcywgc3ViRW50cnlOYW1lKSA9PiB7XHJcbiAgICBjb25zdCBhYnNvbHV0ZVN1YkVudHJ5UGF0aCA9IGNvbmNhdGVuYXRlUGF0aHMocHJvamVjdHNEaXJlY3RvcnlQYXRoLCBzdWJFbnRyeU5hbWUpLFxyXG4gICAgICAgICAgc3ViRW50cnlOYW1lSGlkZGVuTmFtZSA9IGlzTmFtZUhpZGRlbk5hbWUoc3ViRW50cnlOYW1lKTtcclxuXHJcbiAgICBpZiAoIXN1YkVudHJ5TmFtZUhpZGRlbk5hbWUpIHtcclxuICAgICAgY29uc3Qgc3ViRW50cnlEaXJlY3RvcnkgPSBpc0VudHJ5RGlyZWN0b3J5KGFic29sdXRlU3ViRW50cnlQYXRoKTtcclxuXHJcbiAgICAgIGlmIChzdWJFbnRyeURpcmVjdG9yeSkge1xyXG4gICAgICAgIGNvbnN0IHRvcG1vc3REaXJlY3RvcnlOYW1lID0gc3ViRW50cnlOYW1lOyAgLy8vXHJcblxyXG4gICAgICAgIHRvcG1vc3REaXJlY3RvcnlOYW1lcy5wdXNoKHRvcG1vc3REaXJlY3RvcnlOYW1lKVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRvcG1vc3REaXJlY3RvcnlOYW1lcztcclxuICB9LCBbXSk7XHJcblxyXG4gIHJldHVybiB0b3Btb3N0RGlyZWN0b3J5TmFtZXM7XHJcbn1cclxuIl0sIm5hbWVzIjpbImxvYWRGaWxlIiwic2F2ZUZpbGUiLCJsb2FkRmlsZXMiLCJzYXZlRmlsZXMiLCJsb2FkRW50cmllcyIsImxvYWRSZWxlYXNlIiwibG9hZFByb2plY3QiLCJsb2FkUmVsZWFzZXMiLCJsb2FkUHJvamVjdHMiLCJsb2FkRGlyZWN0b3J5IiwiY29uY2F0ZW5hdGVQYXRocyIsInBhdGhVdGlsaXRpZXMiLCJ0b3Btb3N0RGlyZWN0b3J5UGF0aEZyb21QYXRoIiwicmVhZEZpbGUiLCJmaWxlU3lzdGVtVXRpbGl0aWVzIiwid3JpdGVGaWxlIiwiaXNFbnRyeUZpbGUiLCJyZWFkRGlyZWN0b3J5IiwiaXNFbnRyeURpcmVjdG9yeSIsIm1ldGFKU09OTGV4ZXIiLCJNZXRhSlNPTkxleGVyIiwiZnJvbU5vdGhpbmciLCJtZXRhSlNPTlBhcnNlciIsIk1ldGFKU09OUGFyc2VyIiwicGF0aCIsInByb2plY3RzRGlyZWN0b3J5UGF0aCIsImZpbGUiLCJhYnNvbHV0ZVBhdGgiLCJlbnRyeUZpbGUiLCJjb250ZW50IiwiY29udmVydENvbnRlbnRUYWJzVG9XaGl0ZXNwYWNlIiwiRmlsZSIsImZyb21QYXRoQW5kQ29udGVudCIsImVycm9yIiwiZ2V0UGF0aCIsImdldENvbnRlbnQiLCJ0b3Btb3N0QWJzb2x1dGVEaXJlY3RvcnlQYXRoIiwibWtkaXJwIiwic3luYyIsInBhdGhzIiwiZmlsZXMiLCJGaWxlcyIsImZvckVhY2giLCJhZGRGaWxlIiwiZm9yRWFjaEZpbGUiLCJ0b3Btb3N0RGlyZWN0b3J5TmFtZSIsImxvYWRPbmx5UmVjb2duaXNlZEZpbGVzIiwiZW50cmllcyIsIkVudHJpZXMiLCJyZWxhdGl2ZURpcmVjdG9yeVBhdGgiLCJlbnRyaWVzRnJvbVJlbGF0aXZlRGlyZWN0b3J5UGF0aCIsIlBFUklPRCIsInJlbGVhc2UiLCJuYW1lIiwiZ2V0RmlsZXMiLCJyZWFkbWVGaWxlIiwicmVhZG1lRmlsZUZyb21GaWxlcyIsIm1ldGFKU09ORmlsZSIsIm1ldGFKU09ORmlsZUZyb21GaWxlcyIsIm1ldGFKU09OTm9kZSIsIm1ldGFKU09OTm9kZUZyb21NZXRhSlNPTkZpbGUiLCJub2RlIiwidmVyc2lvbiIsInZlcnNpb25Gcm9tTm9kZSIsInJlcG9zaXRvcnkiLCJyZXBvc2l0b3J5RnJvbU5vZGUiLCJkZXBlbmRlbmNpZXMiLCJkZXBlbmRlbmNpZXNGcm9tTm9kZSIsIlJlbGVhc2UiLCJmcm9tTmFtZUVudHJpZXNWZXJzaW9uUmVwb3NpdG9yeUFuZERlcGVuZGVuY2llcyIsInByb2plY3QiLCJQcm9qZWN0IiwiZnJvbU5hbWVFbnRyaWVzUmVwb3NpdG9yeUFuZERlcGVuZGVuY2llcyIsInJlbGVhc2VzIiwiUmVsZWFzZXMiLCJ0b3Btb3N0RmlsZU5hbWVzIiwidG9wbW9zdEZpbGVOYW1lc0Zyb21Qcm9qZWN0c0RpcmVjdG9yeVBhdGgiLCJ0b3Btb3N0RmlsZU5hbWUiLCJhZGRSZWxlYXNlIiwicHJvamVjdHMiLCJQcm9qZWN0cyIsInRvcG1vc3REaXJlY3RvcnlOYW1lcyIsInRvcG1vc3REaXJlY3RvcnlOYW1lc0Zyb21Qcm9qZWN0c0RpcmVjdG9yeVBhdGgiLCJhZGRQcm9qZWN0IiwiZGlyZWN0b3J5IiwiZW50cnlEaXJlY3RvcnkiLCJEaXJlY3RvcnkiLCJmcm9tUGF0aCIsInRva2VucyIsInRva2VuaXNlIiwicGFyc2UiLCJhYnNvbHV0ZURpcmVjdG9yeVBhdGgiLCJzdWJFbnRyeU5hbWVzIiwic3ViRW50cnlOYW1lIiwic3ViRW50cnlOYW1lSGlkZGVuTmFtZSIsImlzTmFtZUhpZGRlbk5hbWUiLCJsb2FkVW5yZWNvZ25pc2VkRmlsZXNBbmREaXJlY3RvcmllcyIsImRpcmVjdG9yeVBhdGgiLCJhZGREaXJlY3RvcnkiLCJmaWxlUGF0aCIsImZpbGVQYXRoUmVjb2duaXNlZEZpbGVQYXRoIiwiaXNGaWxlUGF0aFJlY29nbmlzZWRGaWxlUGF0aCIsImZpbGVSZWNvZ25pc2VkRmlsZSIsInJlZHVjZSIsImFic29sdXRlU3ViRW50cnlQYXRoIiwic3ViRW50cnlGaWxlIiwicHVzaCIsInN1YkVudHJ5RGlyZWN0b3J5Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUE0QmdCQSxRQUFRO2VBQVJBOztJQXFCQUMsUUFBUTtlQUFSQTs7SUFXQUMsU0FBUztlQUFUQTs7SUFZQUMsU0FBUztl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
|
package/package.json
CHANGED
|
@@ -76,11 +76,11 @@ export function saveFiles(files, projectsDirectoryPath) {
|
|
|
76
76
|
});
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
-
export function loadEntries(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles
|
|
79
|
+
export function loadEntries(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles) {
|
|
80
80
|
const entries = Entries.fromNothing(),
|
|
81
81
|
relativeDirectoryPath = topmostDirectoryName; ///
|
|
82
82
|
|
|
83
|
-
entriesFromRelativeDirectoryPath(entries, relativeDirectoryPath, projectsDirectoryPath, loadOnlyRecognisedFiles
|
|
83
|
+
entriesFromRelativeDirectoryPath(entries, relativeDirectoryPath, projectsDirectoryPath, loadOnlyRecognisedFiles);
|
|
84
84
|
|
|
85
85
|
return entries;
|
|
86
86
|
}
|
|
@@ -90,8 +90,7 @@ export function loadRelease(topmostDirectoryName, projectsDirectoryPath = PERIOD
|
|
|
90
90
|
|
|
91
91
|
const name = topmostDirectoryName, ///
|
|
92
92
|
loadOnlyRecognisedFiles = true,
|
|
93
|
-
|
|
94
|
-
entries = loadEntries(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles, doNotLoadHiddenFilesAndDirectories),
|
|
93
|
+
entries = loadEntries(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles),
|
|
95
94
|
files = entries.getFiles(),
|
|
96
95
|
readmeFile = readmeFileFromFiles(files),
|
|
97
96
|
metaJSONFile = metaJSONFileFromFiles(files);
|
|
@@ -112,9 +111,9 @@ export function loadRelease(topmostDirectoryName, projectsDirectoryPath = PERIOD
|
|
|
112
111
|
return release;
|
|
113
112
|
}
|
|
114
113
|
|
|
115
|
-
export function loadProject(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles
|
|
114
|
+
export function loadProject(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles) {
|
|
116
115
|
const name = topmostDirectoryName, ///
|
|
117
|
-
entries = loadEntries(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles
|
|
116
|
+
entries = loadEntries(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles),
|
|
118
117
|
files = entries.getFiles(),
|
|
119
118
|
metaJSONFile = metaJSONFileFromFiles(files);
|
|
120
119
|
|
|
@@ -144,7 +143,9 @@ export function loadReleases(projectsDirectoryPath) {
|
|
|
144
143
|
topmostFileNames.forEach((topmostFileName) => {
|
|
145
144
|
const release = loadRelease(topmostFileName, projectsDirectoryPath);
|
|
146
145
|
|
|
147
|
-
|
|
146
|
+
if (release !== null) {
|
|
147
|
+
releases.addRelease(release);
|
|
148
|
+
}
|
|
148
149
|
});
|
|
149
150
|
} catch (error) {
|
|
150
151
|
releases = null;
|
|
@@ -153,15 +154,15 @@ export function loadReleases(projectsDirectoryPath) {
|
|
|
153
154
|
return releases;
|
|
154
155
|
}
|
|
155
156
|
|
|
156
|
-
export function loadProjects(projectsDirectoryPath, loadOnlyRecognisedFiles
|
|
157
|
+
export function loadProjects(projectsDirectoryPath, loadOnlyRecognisedFiles) {
|
|
157
158
|
let projects;
|
|
158
159
|
|
|
159
160
|
try {
|
|
160
161
|
const projects = Projects.fromNothing(),
|
|
161
|
-
topmostDirectoryNames = topmostDirectoryNamesFromProjectsDirectoryPath(projectsDirectoryPath
|
|
162
|
+
topmostDirectoryNames = topmostDirectoryNamesFromProjectsDirectoryPath(projectsDirectoryPath);
|
|
162
163
|
|
|
163
164
|
topmostDirectoryNames.forEach((topmostDirectoryName) => {
|
|
164
|
-
const project = loadProject(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles
|
|
165
|
+
const project = loadProject(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles);
|
|
165
166
|
|
|
166
167
|
projects.addProject(project);
|
|
167
168
|
});
|
|
@@ -198,17 +199,15 @@ function metaJSONNodeFromMetaJSONFile(metaJSONFile) {
|
|
|
198
199
|
return metaJSONNode;
|
|
199
200
|
}
|
|
200
201
|
|
|
201
|
-
function entriesFromRelativeDirectoryPath(entries, relativeDirectoryPath, projectsDirectoryPath, loadOnlyRecognisedFiles
|
|
202
|
+
function entriesFromRelativeDirectoryPath(entries, relativeDirectoryPath, projectsDirectoryPath, loadOnlyRecognisedFiles) {
|
|
202
203
|
const absoluteDirectoryPath = concatenatePaths(projectsDirectoryPath, relativeDirectoryPath),
|
|
203
204
|
subEntryNames = readDirectory(absoluteDirectoryPath);
|
|
204
205
|
|
|
205
206
|
subEntryNames.forEach((subEntryName) => {
|
|
206
207
|
const subEntryNameHiddenName = isNameHiddenName(subEntryName),
|
|
207
|
-
subEntryNameNotHiddenName = !subEntryNameHiddenName,
|
|
208
|
-
loadHiddenFilesAndDirectories = !doNotLoadHiddenFilesAndDirectories,
|
|
209
208
|
loadUnrecognisedFilesAndDirectories = !loadOnlyRecognisedFiles;
|
|
210
209
|
|
|
211
|
-
if (
|
|
210
|
+
if (!subEntryNameHiddenName) {
|
|
212
211
|
const path = concatenatePaths(relativeDirectoryPath, subEntryName),
|
|
213
212
|
directory = loadDirectory(path, projectsDirectoryPath);
|
|
214
213
|
|
|
@@ -219,7 +218,7 @@ function entriesFromRelativeDirectoryPath(entries, relativeDirectoryPath, projec
|
|
|
219
218
|
entries.addDirectory(directory);
|
|
220
219
|
}
|
|
221
220
|
|
|
222
|
-
entriesFromRelativeDirectoryPath(entries, directoryPath, projectsDirectoryPath, loadOnlyRecognisedFiles
|
|
221
|
+
entriesFromRelativeDirectoryPath(entries, directoryPath, projectsDirectoryPath, loadOnlyRecognisedFiles); ///
|
|
223
222
|
} else {
|
|
224
223
|
const file = loadFile(path, projectsDirectoryPath);
|
|
225
224
|
|
|
@@ -244,10 +243,9 @@ function topmostFileNamesFromProjectsDirectoryPath(projectsDirectoryPath) {
|
|
|
244
243
|
|
|
245
244
|
topmostFileNames = subEntryNames.reduce((topmostFileNames, subEntryName) => {
|
|
246
245
|
const absoluteSubEntryPath = concatenatePaths(projectsDirectoryPath, subEntryName),
|
|
247
|
-
subEntryNameHiddenName = isNameHiddenName(subEntryName)
|
|
248
|
-
subEntryNameNotHiddenName = !subEntryNameHiddenName;
|
|
246
|
+
subEntryNameHiddenName = isNameHiddenName(subEntryName);
|
|
249
247
|
|
|
250
|
-
if (
|
|
248
|
+
if (!subEntryNameHiddenName) {
|
|
251
249
|
const subEntryFile = isEntryFile(absoluteSubEntryPath);
|
|
252
250
|
|
|
253
251
|
if (subEntryFile) {
|
|
@@ -263,18 +261,16 @@ function topmostFileNamesFromProjectsDirectoryPath(projectsDirectoryPath) {
|
|
|
263
261
|
return topmostFileNames;
|
|
264
262
|
}
|
|
265
263
|
|
|
266
|
-
function topmostDirectoryNamesFromProjectsDirectoryPath(projectsDirectoryPath
|
|
264
|
+
function topmostDirectoryNamesFromProjectsDirectoryPath(projectsDirectoryPath) {
|
|
267
265
|
let topmostDirectoryNames;
|
|
268
266
|
|
|
269
267
|
const subEntryNames = readDirectory(projectsDirectoryPath);
|
|
270
268
|
|
|
271
269
|
topmostDirectoryNames = subEntryNames.reduce((topmostDirectoryNames, subEntryName) => {
|
|
272
270
|
const absoluteSubEntryPath = concatenatePaths(projectsDirectoryPath, subEntryName),
|
|
273
|
-
subEntryNameHiddenName = isNameHiddenName(subEntryName)
|
|
274
|
-
subEntryNameNotHiddenName = !subEntryNameHiddenName,
|
|
275
|
-
loadHiddenFilesAndDirectories = !doNotLoadHiddenFilesAndDirectories;
|
|
271
|
+
subEntryNameHiddenName = isNameHiddenName(subEntryName);
|
|
276
272
|
|
|
277
|
-
if (
|
|
273
|
+
if (!subEntryNameHiddenName) {
|
|
278
274
|
const subEntryDirectory = isEntryDirectory(absoluteSubEntryPath);
|
|
279
275
|
|
|
280
276
|
if (subEntryDirectory) {
|