jsii-release 0.2.165 → 0.2.166
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/targets/go.js +12 -3
- package/package.json +1 -1
package/lib/targets/go.js
CHANGED
|
@@ -145,8 +145,17 @@ class GoReleaser {
|
|
|
145
145
|
}
|
|
146
146
|
let repoPath = cannonicalNameParts
|
|
147
147
|
.slice(3) // e.g ['constructs', 'v3']
|
|
148
|
-
.join('/') // e.g 'constructs/v3'
|
|
149
|
-
|
|
148
|
+
.join('/'); // e.g 'constructs/v3'
|
|
149
|
+
// we could have something like
|
|
150
|
+
// constructs/v3
|
|
151
|
+
// or something like
|
|
152
|
+
// constructsv3/v3
|
|
153
|
+
// we only want to strip the last 'v3'
|
|
154
|
+
const split = repoPath.split('/');
|
|
155
|
+
if (split[split.length - 1] === `v${majorVersion}`) {
|
|
156
|
+
split.pop();
|
|
157
|
+
repoPath = split.join('/');
|
|
158
|
+
}
|
|
150
159
|
// strip '/' if exists (wont exist for top level modules)
|
|
151
160
|
repoPath = repoPath.endsWith('/') ? repoPath.substr(0, repoPath.length - 1) : repoPath;
|
|
152
161
|
return { modFile, version, cannonicalName, repoPath, repoURL };
|
|
@@ -213,4 +222,4 @@ class GoReleaser {
|
|
|
213
222
|
}
|
|
214
223
|
}
|
|
215
224
|
exports.GoReleaser = GoReleaser;
|
|
216
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ28uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGFyZ2V0cy9nby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQTZCO0FBQzdCLDZDQUErQjtBQUMvQixpREFBbUM7QUFDbkMsK0NBQWlDO0FBQ2pDLHFEQUF1QztBQTRHdkM7O0dBRUc7QUFDSCxNQUFhLFVBQVU7SUFXckIsWUFBWSxLQUFzQjs7UUFFaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyx3RUFBd0UsQ0FBQyxDQUFDO1NBQzNGO1FBRUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sT0FBQyxLQUFLLENBQUMsR0FBRyxtQ0FBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM3RSxJQUFJLENBQUMsU0FBUyxTQUFHLEtBQUssQ0FBQyxNQUFNLG1DQUFJLE1BQU0sQ0FBQztRQUN4QyxJQUFJLENBQUMsTUFBTSxTQUFHLEtBQUssQ0FBQyxNQUFNLG1DQUFJLEtBQUssQ0FBQztRQUVwQyxNQUFNLFdBQVcsU0FBRyxLQUFLLENBQUMsUUFBUSxtQ0FBSSxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDckQsTUFBTSxZQUFZLFNBQUcsS0FBSyxDQUFDLEtBQUssbUNBQUksR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRWhELElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxnR0FBZ0csQ0FBQyxDQUFDO1NBQ25IO1FBRUQsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLG9HQUFvRyxDQUFDLENBQUM7U0FDdkg7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE9BQU87UUFDWixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsK0JBQStCLENBQUMsQ0FBQztZQUM3QyxPQUFPLEVBQUUsQ0FBQztTQUNYO1FBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2pDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVyRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3BELEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRTVCLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUMxQixJQUFJO1lBQ0YsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN2QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ3pDO2dCQUFTO1lBQ1IsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNwQjtJQUVILENBQUM7SUFFTyxTQUFTLENBQUMsT0FBbUIsRUFBRSxPQUFlOztRQUVwRCxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2xELEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFdkIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNiLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDcEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1lBQzVDLE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFFRCxNQUFNLGFBQWEsU0FBRyxJQUFJLENBQUMsZ0JBQWdCLG1DQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqRixHQUFHLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRTFCLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNoQixLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRTtZQUM1QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZDLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDOUIsSUFBSSxPQUFPLEVBQUU7Z0JBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUFFO1NBQ2xDO1FBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNyQixPQUFPLENBQUMsR0FBRyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7WUFDeEQsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUVELE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXZDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsNkNBQTZDLENBQUMsQ0FBQztZQUMzRCxPQUFPLENBQUMsR0FBRyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7WUFDaEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO1lBQzNELElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLCtCQUErQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDcEU7YUFBTTtZQUNMLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDaEM7UUFDRCxPQUFPLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRU8sY0FBYyxDQUFDLEdBQVc7UUFDaEMsTUFBTSxPQUFPLEdBQWUsRUFBRSxDQUFDO1FBQy9CLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDN0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQzVDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDMUIsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7YUFDekM7U0FDRjtRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFTyxXQUFXLENBQUMsT0FBZTtRQUVqQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUMzRCxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRW5ELDJGQUEyRjtRQUMzRixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDeEU7UUFFRCxtREFBbUQ7UUFDbkQsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWhDLGlFQUFpRTtRQUNqRSxNQUFNLG1CQUFtQixHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFdEQscUNBQXFDO1FBQ3JDLE1BQU0sT0FBTyxHQUFHLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTFELFdBQVc7UUFDWCxNQUFNLGtCQUFrQixHQUFHLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUV2RSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO1lBQ2hELE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLE9BQU8sMkJBQTJCLGtCQUFrQiw0Q0FBNEMsQ0FBQyxDQUFDO1NBQzdJO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsT0FBTyxRQUFRLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDL0Y7UUFFRCxJQUFJLFFBQVEsR0FBRyxtQkFBbUI7YUFDL0IsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLDJCQUEyQjthQUNwQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsc0JBQXNCO2FBQ2hDLE9BQU8sQ0FBQyxJQUFJLFlBQVksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsb0JBQW9CO1FBRXhELHlEQUF5RDtRQUN6RCxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBRXZGLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFFakUsQ0FBQztJQUVPLFlBQVksQ0FBQyxDQUFXO1FBQzlCLE9BQU8sQ0FBQyxDQUFDLFFBQVEsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzdFLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxPQUFtQjtRQUM3QyxNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQztRQUNsQyxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDdEQsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRTtZQUN2Qiw4Q0FBOEM7WUFDOUMsT0FBTyxHQUFHLFFBQVEsTUFBTSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDMUQ7YUFBTTtZQUNMLHlGQUF5RjtZQUN6RixPQUFPLEdBQUcsUUFBUSxLQUFLLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7U0FDM0c7SUFDSCxDQUFDO0lBRU8sUUFBUSxDQUFDLE9BQWU7UUFDOUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDOUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQzNCLHVEQUF1RDtZQUN2RCwwQkFBMEI7WUFDMUIsRUFBRSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUM7aUJBQ3BCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxNQUFNLENBQUM7aUJBQ3pCLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3ZEO2FBQU07WUFDTCx3REFBd0Q7WUFDeEQsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUN2QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQ2xELElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRTtvQkFDNUIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUN0QzthQUNGO1NBQ0Y7UUFDRCxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVPLGNBQWMsQ0FBQyxPQUFtQjtRQUN4QyxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBUyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDM0QsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRTtZQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7U0FDbkU7UUFDRCxJQUFJLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFO1lBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLENBQUMsQ0FBQztTQUNoRTtRQUNELE9BQU8sS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQztJQUNyQyxDQUFDO0lBRU8sY0FBYyxDQUFDLGVBQXVCO1FBRTVDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRTFELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDakMsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRXZHLElBQUksV0FBVyxJQUFJLGFBQWEsSUFBSSxXQUFXLEtBQUssYUFBYSxFQUFFO1lBQ2pFLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLFdBQVcsb0NBQW9DLGFBQWEsbUJBQW1CLGVBQWUsRUFBRSxDQUFDLENBQUM7U0FDcEk7UUFFRCxzRUFBc0U7UUFDdEUsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztRQUU1RCxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyx5Q0FBeUMsZUFBZSxJQUFJO2tCQUN4RSxzR0FBc0csQ0FBQyxDQUFDO1NBQzdHO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFFakIsQ0FBQztDQUVGO0FBdk9ELGdDQXVPQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgKiBhcyBnaXQgZnJvbSAnLi4vaGVscC9naXQnO1xuaW1wb3J0ICogYXMgb3MgZnJvbSAnLi4vaGVscC9vcyc7XG5pbXBvcnQgKiBhcyBzaGVsbCBmcm9tICcuLi9oZWxwL3NoZWxsJztcblxuLyoqXG4gKiBFbmNhcHN1bGF0ZXMgc29tZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVsZWFzZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHb1JlbGVhc2Uge1xuXG4gIC8qKlxuICAgKiBUaGUgdGFncyB0aGUgcmVsZWFzZSBjcmVhdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgdGFncz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgY29tbWl0IG1lc3NhZ2Ugb2YgdGhlIHJlbGVhc2UuXG4gICAqL1xuICByZWFkb25seSBjb21taXRNZXNzYWdlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZGlyZWN0b3J5IHdoZXJlIHRoZSByZXBvc2l0b3J5IHdhcyByZWxlYXNlZCBmcm9tLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVwb0Rpcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBgR29SZWxlYXNlcmAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR29SZWxlYXNlclByb3BzIHtcblxuICAvKipcbiAgICogVGhlIHNvdXJjZSBjb2RlIGRpcmVjdG9yeS5cbiAgICpcbiAgICogQGRlZmF1bHQgJ2Rpc3QvZ28nXG4gICAqL1xuICByZWFkb25seSBkaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgYSBkcnkgcnVuIG9ubHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBkcnlSdW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgYnJhbmNoIHRvIHB1c2ggdG8uXG4gICAqXG4gICAqIEBkZWZhdWx0ICdtYWluJ1xuICAgKi9cbiAgcmVhZG9ubHkgYnJhbmNoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdXNlcm5hbWUgdG8gdXNlIGZvciB0aGUgY29tbWl0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRha2VuIGZyb20gZ2l0IGNvbmZpZy4gdGhyb3dzIGlmIG5vdCBjb25maWd1cmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgdXNlcm5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBlbWFpbCB0byB1c2UgZm9yIHRoZSBjb21taXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGFrZW4gZnJvbSBnaXQgY29uZmlnLiB0aHJvd3MgaWYgbm90IGNvbmZpZ3VyZWQuXG4gICAqL1xuICByZWFkb25seSBlbWFpbD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGFrZW4gZnJvbSB0aGUgJ3ZlcnNpb24nLiB0aHJvd3MgaWYgZG9lc24ndCBleGlzdC5cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBtZXNzYWdlIHRvIHVzZSBmb3IgdGhlIGNvbW1pdCBtYXJraW5nIHRoZSByZWxlYXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgbWVzc2FnZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBJbmZvcm1hdGlvbiBhYm91dCBhIHNwZWNpZmljIG1vZHVsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHb01vZHVsZSB7XG5cbiAgLyoqXG4gICAqIFBhdGggdG8gdGhlIG1vZCBmaWxlLlxuICAgKi9cbiAgcmVhZG9ubHkgbW9kRmlsZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgbW9kdWxlLlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgY2Fubm9uaWNhbCBuYW1lIG9mIHRoZSBtb2R1bGUuIChlLmcgJ2dpdGh1Yi5jb20vYXdzL2NvbnN0cnVjdHMtZ28vY29uc3RydWN0cy92M2ApXG4gICAqL1xuICByZWFkb25seSBjYW5ub25pY2FsTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCBpbnNpZGUgdGhlIHJlcG9zaXRvcnkgdGhlIG1vZHVsZSBpcyBsb2NhdGVkIGluLiAoZS5nICdjb25zdHJ1Y3RzJylcbiAgICovXG4gIHJlYWRvbmx5IHJlcG9QYXRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZXBvc2l0b3J5IFVSTC4gKGUuZyAnZ2l0aHViLmNvbS9hd3MvY29uc3RydWN0cycpXG4gICAqL1xuICByZWFkb25seSByZXBvVVJMOiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBSZWxlYXNlIGEgc2V0IG9mIEdvbGFuZyBtb2R1bGVzLlxuICovXG5leHBvcnQgY2xhc3MgR29SZWxlYXNlciB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSB2ZXJzaW9uPzogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IGdpdENvbW1pdE1lc3NhZ2U/OiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkaXI6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBkcnlSdW46IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgZ2l0QnJhbmNoOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZ2l0VXNlcm5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBnaXRVc2VyZW1haWw6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogR29SZWxlYXNlclByb3BzKSB7XG5cbiAgICBpZiAoIXNoZWxsLndoaWNoKCdnaXQnKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdnaXQgbXVzdCBiZSBhdmFpbGFibGUgdG8gaW4gb3JkZXIgdG8gYmUgYWJsZSB0byBwdXNoIEdvIGNvZGUgdG8gR2l0SHViJyk7XG4gICAgfVxuXG4gICAgdGhpcy52ZXJzaW9uID0gcHJvcHMudmVyc2lvbjtcbiAgICB0aGlzLmdpdENvbW1pdE1lc3NhZ2UgPSBwcm9wcy5tZXNzYWdlO1xuICAgIHRoaXMuZGlyID0gcGF0aC5yZXNvbHZlKHByb3BzLmRpciA/PyBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgJ2Rpc3QnLCAnZ28nKSk7XG4gICAgdGhpcy5naXRCcmFuY2ggPSBwcm9wcy5icmFuY2ggPz8gJ21haW4nO1xuICAgIHRoaXMuZHJ5UnVuID0gcHJvcHMuZHJ5UnVuID8/IGZhbHNlO1xuXG4gICAgY29uc3QgZ2l0VXNlcm5hbWUgPSBwcm9wcy51c2VybmFtZSA/PyBnaXQudXNlcm5hbWUoKTtcbiAgICBjb25zdCBnaXRVc2VyZW1haWwgPSBwcm9wcy5lbWFpbCA/PyBnaXQuZW1haWwoKTtcblxuICAgIGlmICghZ2l0VXNlcm5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGRldGVjdCB1c2VybmFtZS4gZWl0aGVyIGNvbmZpZ3VyZSBhIGdpdCB1c2VyLm5hbWUgb3IgcGFzcyBHSVRfVVNFUl9OQU1FIGVudiB2YXJpYWJsZScpO1xuICAgIH1cblxuICAgIGlmICghZ2l0VXNlcmVtYWlsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBkZXRlY3QgdXNlciBlbWFpbC4gZWl0aGVyIGNvbmZpZ3VyZSBhIGdpdCB1c2VyLmVtYWlsIG9yIHBhc3MgR0lUX1VTRVJfRU1BSUwgZW52IHZhcmlhYmxlJyk7XG4gICAgfVxuXG4gICAgdGhpcy5naXRVc2VyZW1haWwgPSBnaXRVc2VyZW1haWw7XG4gICAgdGhpcy5naXRVc2VybmFtZSA9IGdpdFVzZXJuYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1biB0aGUgcmVsZWFzZSBwcm9jZXNzLlxuICAgKlxuICAgKiBAcmV0dXJucyBtZXRhZGF0YSBhYm91dCB0aGUgcmVsZWFzZS5cbiAgICovXG4gIHB1YmxpYyByZWxlYXNlKCk6IEdvUmVsZWFzZSB7XG4gICAgY29uc3QgbW9kdWxlcyA9IHRoaXMuY29sbGVjdE1vZHVsZXModGhpcy5kaXIpO1xuICAgIGlmIChtb2R1bGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc29sZS5sb2coJ05vIG1vZHVsZXMgZGV0ZWN0ZWQuIFNraXBwaW5nJyk7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coJ0RldGVjdGVkIG1vZHVsZXM6Jyk7XG4gICAgbW9kdWxlcy5mb3JFYWNoKG0gPT4gY29uc29sZS5sb2coYCAtICR7bS5tb2RGaWxlfWApKTtcblxuICAgIGNvbnN0IHJlcG9VUkwgPSB0aGlzLmV4dHJhY3RSZXBvVVJMKG1vZHVsZXMpO1xuICAgIGNvbnN0IHJlcG9EaXIgPSBwYXRoLmpvaW4ob3MubWtkdGVtcFN5bmMoKSwgJ3JlcG8nKTtcbiAgICBnaXQuY2xvbmUocmVwb1VSTCwgcmVwb0Rpcik7XG5cbiAgICBjb25zdCBjd2QgPSBwcm9jZXNzLmN3ZCgpO1xuICAgIHRyeSB7XG4gICAgICBwcm9jZXNzLmNoZGlyKHJlcG9EaXIpO1xuICAgICAgcmV0dXJuIHRoaXMuZG9SZWxlYXNlKG1vZHVsZXMsIHJlcG9EaXIpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBwcm9jZXNzLmNoZGlyKGN3ZCk7XG4gICAgfVxuXG4gIH1cblxuICBwcml2YXRlIGRvUmVsZWFzZShtb2R1bGVzOiBHb01vZHVsZVtdLCByZXBvRGlyOiBzdHJpbmcpOiBHb1JlbGVhc2Uge1xuXG4gICAgZ2l0LmlkZW50aWZ5KHRoaXMuZ2l0VXNlcm5hbWUsIHRoaXMuZ2l0VXNlcmVtYWlsKTtcbiAgICBnaXQuY2hlY2tvdXQodGhpcy5naXRCcmFuY2gsIHsgY3JlYXRlSWZNaXNzaW5nOiB0cnVlIH0pO1xuICAgIHRoaXMuc3luY1JlcG8ocmVwb0Rpcik7XG5cbiAgICBnaXQuYWRkKCcuJyk7XG4gICAgaWYgKCFnaXQuZGlmZkluZGV4KCkpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdObyBjaGFuZ2VzLiBTa2lwcGluZyByZWxlYXNlJyk7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgY29uc3QgY29tbWl0TWVzc2FnZSA9IHRoaXMuZ2l0Q29tbWl0TWVzc2FnZSA/PyB0aGlzLmJ1aWxkUmVsZWFzZU1lc3NhZ2UobW9kdWxlcyk7XG4gICAgZ2l0LmNvbW1pdChjb21taXRNZXNzYWdlKTtcblxuICAgIGNvbnN0IHRhZ3MgPSBbXTtcbiAgICBmb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVzKSB7XG4gICAgICBjb25zdCBuYW1lID0gdGhpcy5idWlsZFRhZ05hbWUobW9kdWxlKTtcbiAgICAgIGNvbnN0IGNyZWF0ZWQgPSBnaXQudGFnKG5hbWUpO1xuICAgICAgaWYgKGNyZWF0ZWQpIHsgdGFncy5wdXNoKG5hbWUpOyB9XG4gICAgfVxuXG4gICAgaWYgKHRhZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zb2xlLmxvZygnQWxsIHRhZ3MgYWxyZWFkeSBleGlzdC4gU2tpcHBpbmcgcmVsZWFzZScpO1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIGNvbnN0IHJlZnMgPSBbLi4udGFncywgdGhpcy5naXRCcmFuY2hdO1xuXG4gICAgaWYgKHRoaXMuZHJ5UnVuKSB7XG4gICAgICBjb25zb2xlLmxvZygnPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PScpO1xuICAgICAgY29uc29sZS5sb2coJyAgICAgICAgICAgIPCfj5zvuI8gRFJZLVJVTiBNT0RFIPCfj5zvuI8nKTtcbiAgICAgIGNvbnNvbGUubG9nKCc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Jyk7XG4gICAgICByZWZzLmZvckVhY2godCA9PiBjb25zb2xlLmxvZyhgUmVtb3RlIHJlZiB3aWxsIGJlIHVwZGF0ZWQ6ICR7dH1gKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlZnMuZm9yRWFjaCh0ID0+IGdpdC5wdXNoKHQpKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgdGFncywgY29tbWl0TWVzc2FnZSwgcmVwb0RpciB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjb2xsZWN0TW9kdWxlcyhkaXI6IHN0cmluZyk6IEdvTW9kdWxlW10ge1xuICAgIGNvbnN0IG1vZHVsZXM6IEdvTW9kdWxlW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHAgb2YgWy4uLmZzLnJlYWRkaXJTeW5jKGRpciksICcuJ10pIHtcbiAgICAgIGNvbnN0IG1vZEZpbGUgPSBwYXRoLmpvaW4oZGlyLCBwLCAnZ28ubW9kJyk7XG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhtb2RGaWxlKSkge1xuICAgICAgICBtb2R1bGVzLnB1c2godGhpcy5wYXJzZU1vZHVsZShtb2RGaWxlKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtb2R1bGVzO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZU1vZHVsZShtb2RGaWxlOiBzdHJpbmcpOiBHb01vZHVsZSB7XG5cbiAgICBjb25zdCB2ZXJzaW9uID0gdGhpcy5leHRyYWN0VmVyc2lvbihwYXRoLmRpcm5hbWUobW9kRmlsZSkpO1xuICAgIGNvbnN0IG1ham9yVmVyc2lvbiA9IE51bWJlcih2ZXJzaW9uLnNwbGl0KCcuJylbMF0pO1xuXG4gICAgLy8gZXh0cmFjdCB0aGUgbW9kdWxlIGRlY2xlcmF0aW9uIChlLmcgJ21vZHVsZSBnaXRodWIuY29tL2F3cy9jb25zdHJ1Y3RzLWdvL2NvbnN0cnVjdHMvdjMnKVxuICAgIGNvbnN0IG1hdGNoID0gZnMucmVhZEZpbGVTeW5jKG1vZEZpbGUpLnRvU3RyaW5nKCkubWF0Y2goL21vZHVsZSAoLiopLyk7XG4gICAgaWYgKCFtYXRjaCB8fCAhbWF0Y2hbMV0pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGRldGVjdGVkIG1vZHVsZSBkZWNsYXJhdGlvbiBpbiAke21vZEZpbGV9YCk7XG4gICAgfVxuXG4gICAgLy8gZS5nICdnaXRodWIuY29tL2F3cy9jb25zdHJ1Y3RzLWdvL2NvbnN0cnVjdHMvdjMnXG4gICAgY29uc3QgY2Fubm9uaWNhbE5hbWUgPSBtYXRjaFsxXTtcblxuICAgIC8vIGUuZyBbJ2dpdGh1Yi5jb20nLCAnYXdzJywgJ2NvbnN0cnVjdHMtZ28nLCAnY29uc3RydWN0cycsICd2MyddXG4gICAgY29uc3QgY2Fubm9uaWNhbE5hbWVQYXJ0cyA9IGNhbm5vbmljYWxOYW1lLnNwbGl0KCcvJyk7XG5cbiAgICAvLyBlLmcgJ2dpdGh1Yi5jb20vYXdzL2NvbnN0cnVjdHMtZ28nXG4gICAgY29uc3QgcmVwb1VSTCA9IGNhbm5vbmljYWxOYW1lUGFydHMuc2xpY2UoMCwgMykuam9pbignLycpO1xuXG4gICAgLy8gZS5nICd2MydcbiAgICBjb25zdCBtYWpvclZlcnNpb25TdWZmaXggPSBtYWpvclZlcnNpb24gPiAxID8gYC92JHttYWpvclZlcnNpb259YCA6ICcnO1xuXG4gICAgaWYgKCFjYW5ub25pY2FsTmFtZS5lbmRzV2l0aChtYWpvclZlcnNpb25TdWZmaXgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE1vZHVsZSBkZWNsYXJhdGlvbiBpbiAnJHttb2RGaWxlfScgZXhwZWN0ZWQgdG8gZW5kIHdpdGggJyR7bWFqb3JWZXJzaW9uU3VmZml4fScgc2luY2UgaXRzIG1ham9yIHZlcnNpb24gaXMgbGFyZ2VyIHRoYW4gMWApO1xuICAgIH1cblxuICAgIGlmICghcmVwb1VSTC5zdGFydHNXaXRoKCdnaXRodWIuY29tJykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUmVwb3NpdG9yeSBtdXN0IGJlIGhvc3RlZCBvbiBnaXRodWIuY29tLiBGb3VuZDogJyR7cmVwb1VSTH0nIGluICR7bW9kRmlsZX1gKTtcbiAgICB9XG5cbiAgICBsZXQgcmVwb1BhdGggPSBjYW5ub25pY2FsTmFtZVBhcnRzXG4gICAgICAuc2xpY2UoMykgLy8gZS5nIFsnY29uc3RydWN0cycsICd2MyddXG4gICAgICAuam9pbignLycpIC8vIGUuZyAnY29uc3RydWN0cy92MydcbiAgICAgIC5yZXBsYWNlKGB2JHttYWpvclZlcnNpb259YCwgJycpOyAvLyBlLmcgJ2NvbnN0cnVjdHMvJ1xuXG4gICAgLy8gc3RyaXAgJy8nIGlmIGV4aXN0cyAod29udCBleGlzdCBmb3IgdG9wIGxldmVsIG1vZHVsZXMpXG4gICAgcmVwb1BhdGggPSByZXBvUGF0aC5lbmRzV2l0aCgnLycpID8gcmVwb1BhdGguc3Vic3RyKDAsIHJlcG9QYXRoLmxlbmd0aCAtIDEpIDogcmVwb1BhdGg7XG5cbiAgICByZXR1cm4geyBtb2RGaWxlLCB2ZXJzaW9uLCBjYW5ub25pY2FsTmFtZSwgcmVwb1BhdGgsIHJlcG9VUkwgfTtcblxuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFRhZ05hbWUobTogR29Nb2R1bGUpIHtcbiAgICByZXR1cm4gbS5yZXBvUGF0aCA9PT0gJycgPyBgdiR7bS52ZXJzaW9ufWAgOiBgJHttLnJlcG9QYXRofS92JHttLnZlcnNpb259YDtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRSZWxlYXNlTWVzc2FnZShtb2R1bGVzOiBHb01vZHVsZVtdKSB7XG4gICAgY29uc3Qgc2VtYW50aWMgPSAnY2hvcmUocmVsZWFzZSknO1xuICAgIGNvbnN0IHZlcnNpb25zID0gbmV3IFNldChtb2R1bGVzLm1hcChtID0+IG0udmVyc2lvbikpO1xuICAgIGlmICh2ZXJzaW9ucy5zaXplID09PSAxKSB7XG4gICAgICAvLyBzaW5nbGUgdmVyc2lvbiAoZS5nIGNob3JlKHJlbGVhc2UpOiB2MS4yLjMpXG4gICAgICByZXR1cm4gYCR7c2VtYW50aWN9OiB2JHt2ZXJzaW9ucy52YWx1ZXMoKS5uZXh0KCkudmFsdWV9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gbXVsdGlwbGUgdmVyc2lvbnMgKGUuZyBjaG9yZShyZWxlYXNlKTogY2hvcmUocmVsZWFzZSk6IG1vZHVsZTFAdjEuMi4zICBtb2R1bGUyQHYxLjIuMylcbiAgICAgIHJldHVybiBgJHtzZW1hbnRpY306ICR7bW9kdWxlcy5tYXAobSA9PiBgJHttLnJlcG9QYXRoID8gYCR7bS5yZXBvUGF0aH1AYCA6ICcnfXYke20udmVyc2lvbn1gKS5qb2luKCcgJyl9YDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN5bmNSZXBvKHJlcG9EaXI6IHN0cmluZykge1xuICAgIGNvbnN0IHRvcExldmVsID0gcGF0aC5qb2luKHJlcG9EaXIsICdnby5tb2QnKTtcbiAgICBpZiAoZnMuZXhpc3RzU3luYyh0b3BMZXZlbCkpIHtcbiAgICAgIC8vIHdpdGggdG9wIGxldmVsIG1vZHVsZXMgd2Ugc3luYyB0aGUgZW50aXJlIHJlcG9zaXRvcnlcbiAgICAgIC8vIHNvIHdlIGp1c3QgZW1wdHkgaXQgb3V0XG4gICAgICBmcy5yZWFkZGlyU3luYyhyZXBvRGlyKVxuICAgICAgICAuZmlsdGVyKGYgPT4gZiAhPT0gJy5naXQnKVxuICAgICAgICAuZm9yRWFjaChmID0+IGZzLnJlbW92ZVN5bmMocGF0aC5qb2luKHJlcG9EaXIsIGYpKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIG90aGVyd2lzZSwgd2Ugc2VsZWN0aXZlbHkgcmVtb3ZlIHRoZSBzdWJtb2R1bGVzIG9ubHkuXG4gICAgICBmb3IgKGNvbnN0IHAgb2YgZnMucmVhZGRpclN5bmMocmVwb0RpcikpIHtcbiAgICAgICAgY29uc3Qgc3VibW9kdWxlID0gcGF0aC5qb2luKHJlcG9EaXIsIHAsICdnby5tb2QnKTtcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoc3VibW9kdWxlKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmMocGF0aC5qb2luKHJlcG9EaXIsIHApKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBmcy5jb3B5U3luYyh0aGlzLmRpciwgcmVwb0RpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3RSZXBvVVJMKG1vZHVsZXM6IEdvTW9kdWxlW10pOiBzdHJpbmcge1xuICAgIGNvbnN0IHJlcG9zID0gbmV3IFNldDxzdHJpbmc+KG1vZHVsZXMubWFwKG0gPT4gbS5yZXBvVVJMKSk7XG4gICAgaWYgKHJlcG9zLnNpemUgPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGRldGVjdCByZXBvc2l0b3J5IGZyb20gbW9kdWxlIGZpbGVzLicpO1xuICAgIH1cbiAgICBpZiAocmVwb3Muc2l6ZSA+IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTXVsdGlwbGUgcmVwb3NpdG9yaWVzIGZvdW5kIGluIG1vZHVsZSBmaWxlcycpO1xuICAgIH1cbiAgICByZXR1cm4gcmVwb3MudmFsdWVzKCkubmV4dCgpLnZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0VmVyc2lvbihtb2R1bGVEaXJlY3Rvcnk6IHN0cmluZyk6IHN0cmluZyB7XG5cbiAgICBjb25zdCB2ZXJzaW9uRmlsZSA9IHBhdGguam9pbihtb2R1bGVEaXJlY3RvcnksICd2ZXJzaW9uJyk7XG5cbiAgICBjb25zdCByZXBvVmVyc2lvbiA9IHRoaXMudmVyc2lvbjtcbiAgICBjb25zdCBtb2R1bGVWZXJzaW9uID0gZnMuZXhpc3RzU3luYyh2ZXJzaW9uRmlsZSkgPyBmcy5yZWFkRmlsZVN5bmModmVyc2lvbkZpbGUpLnRvU3RyaW5nKCkgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAocmVwb1ZlcnNpb24gJiYgbW9kdWxlVmVyc2lvbiAmJiByZXBvVmVyc2lvbiAhPT0gbW9kdWxlVmVyc2lvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBSZXBvIHZlcnNpb24gKCR7cmVwb1ZlcnNpb259KSBjb25mbGljdHMgd2l0aCBtb2R1bGUgdmVyc2lvbiAoJHttb2R1bGVWZXJzaW9ufSkgZm9yIG1vZHVsZSBpbiAke21vZHVsZURpcmVjdG9yeX1gKTtcbiAgICB9XG5cbiAgICAvLyBqdXN0IHRha2UgdGhlIG9uZSB0aGF0cyBkZWZpbmVkLCB0aGV5IGhhdmUgdG8gdGhlIHNhbWUgaWYgYm90aCBhcmUuXG4gICAgY29uc3QgdmVyc2lvbiA9IG1vZHVsZVZlcnNpb24gPyBtb2R1bGVWZXJzaW9uIDogcmVwb1ZlcnNpb247XG5cbiAgICBpZiAoIXZlcnNpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGRldGVybWluZSB2ZXJzaW9uIG9mIG1vZHVsZSAke21vZHVsZURpcmVjdG9yeX0uIGBcbiAgICAgICAgKyBcIkVpdGhlciBpbmNsdWRlIGEgJ3ZlcnNpb24nIGZpbGUsIG9yIHNwZWNpZnkgYSBnbG9iYWwgdmVyc2lvbiB1c2luZyB0aGUgVkVSU0lPTiBlbnZpcm9ubWVudCB2YXJpYWJsZS5cIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZlcnNpb247XG5cbiAgfVxuXG59XG4iXX0=
|
|
225
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ28uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGFyZ2V0cy9nby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQTZCO0FBQzdCLDZDQUErQjtBQUMvQixpREFBbUM7QUFDbkMsK0NBQWlDO0FBQ2pDLHFEQUF1QztBQTRHdkM7O0dBRUc7QUFDSCxNQUFhLFVBQVU7SUFXckIsWUFBWSxLQUFzQjs7UUFFaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyx3RUFBd0UsQ0FBQyxDQUFDO1NBQzNGO1FBRUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sT0FBQyxLQUFLLENBQUMsR0FBRyxtQ0FBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM3RSxJQUFJLENBQUMsU0FBUyxTQUFHLEtBQUssQ0FBQyxNQUFNLG1DQUFJLE1BQU0sQ0FBQztRQUN4QyxJQUFJLENBQUMsTUFBTSxTQUFHLEtBQUssQ0FBQyxNQUFNLG1DQUFJLEtBQUssQ0FBQztRQUVwQyxNQUFNLFdBQVcsU0FBRyxLQUFLLENBQUMsUUFBUSxtQ0FBSSxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDckQsTUFBTSxZQUFZLFNBQUcsS0FBSyxDQUFDLEtBQUssbUNBQUksR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRWhELElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxnR0FBZ0csQ0FBQyxDQUFDO1NBQ25IO1FBRUQs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RUFBRSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRXZHLElBQUksV0FBVyxJQUFJLGFBQWEsSUFBSSxXQUFXLEtBQUssYUFBYSxFQUFFO1lBQ2pFLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLFdBQVcsb0NBQW9DLGFBQWEsbUJBQW1CLGVBQWUsRUFBRSxDQUFDLENBQUM7U0FDcEk7UUFFRCxzRUFBc0U7UUFDdEUsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztRQUU1RCxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyx5Q0FBeUMsZUFBZSxJQUFJO2tCQUN4RSxzR0FBc0csQ0FBQyxDQUFDO1NBQzdHO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFFakIsQ0FBQztDQUVGO0FBalBELGdDQWlQQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgKiBhcyBnaXQgZnJvbSAnLi4vaGVscC9naXQnO1xuaW1wb3J0ICogYXMgb3MgZnJvbSAnLi4vaGVscC9vcyc7XG5pbXBvcnQgKiBhcyBzaGVsbCBmcm9tICcuLi9oZWxwL3NoZWxsJztcblxuLyoqXG4gKiBFbmNhcHN1bGF0ZXMgc29tZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVsZWFzZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHb1JlbGVhc2Uge1xuXG4gIC8qKlxuICAgKiBUaGUgdGFncyB0aGUgcmVsZWFzZSBjcmVhdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgdGFncz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgY29tbWl0IG1lc3NhZ2Ugb2YgdGhlIHJlbGVhc2UuXG4gICAqL1xuICByZWFkb25seSBjb21taXRNZXNzYWdlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZGlyZWN0b3J5IHdoZXJlIHRoZSByZXBvc2l0b3J5IHdhcyByZWxlYXNlZCBmcm9tLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVwb0Rpcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBgR29SZWxlYXNlcmAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR29SZWxlYXNlclByb3BzIHtcblxuICAvKipcbiAgICogVGhlIHNvdXJjZSBjb2RlIGRpcmVjdG9yeS5cbiAgICpcbiAgICogQGRlZmF1bHQgJ2Rpc3QvZ28nXG4gICAqL1xuICByZWFkb25seSBkaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgYSBkcnkgcnVuIG9ubHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBkcnlSdW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgYnJhbmNoIHRvIHB1c2ggdG8uXG4gICAqXG4gICAqIEBkZWZhdWx0ICdtYWluJ1xuICAgKi9cbiAgcmVhZG9ubHkgYnJhbmNoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdXNlcm5hbWUgdG8gdXNlIGZvciB0aGUgY29tbWl0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRha2VuIGZyb20gZ2l0IGNvbmZpZy4gdGhyb3dzIGlmIG5vdCBjb25maWd1cmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgdXNlcm5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBlbWFpbCB0byB1c2UgZm9yIHRoZSBjb21taXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGFrZW4gZnJvbSBnaXQgY29uZmlnLiB0aHJvd3MgaWYgbm90IGNvbmZpZ3VyZWQuXG4gICAqL1xuICByZWFkb25seSBlbWFpbD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGFrZW4gZnJvbSB0aGUgJ3ZlcnNpb24nLiB0aHJvd3MgaWYgZG9lc24ndCBleGlzdC5cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBtZXNzYWdlIHRvIHVzZSBmb3IgdGhlIGNvbW1pdCBtYXJraW5nIHRoZSByZWxlYXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgbWVzc2FnZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBJbmZvcm1hdGlvbiBhYm91dCBhIHNwZWNpZmljIG1vZHVsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHb01vZHVsZSB7XG5cbiAgLyoqXG4gICAqIFBhdGggdG8gdGhlIG1vZCBmaWxlLlxuICAgKi9cbiAgcmVhZG9ubHkgbW9kRmlsZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgbW9kdWxlLlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgY2Fubm9uaWNhbCBuYW1lIG9mIHRoZSBtb2R1bGUuIChlLmcgJ2dpdGh1Yi5jb20vYXdzL2NvbnN0cnVjdHMtZ28vY29uc3RydWN0cy92M2ApXG4gICAqL1xuICByZWFkb25seSBjYW5ub25pY2FsTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCBpbnNpZGUgdGhlIHJlcG9zaXRvcnkgdGhlIG1vZHVsZSBpcyBsb2NhdGVkIGluLiAoZS5nICdjb25zdHJ1Y3RzJylcbiAgICovXG4gIHJlYWRvbmx5IHJlcG9QYXRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZXBvc2l0b3J5IFVSTC4gKGUuZyAnZ2l0aHViLmNvbS9hd3MvY29uc3RydWN0cycpXG4gICAqL1xuICByZWFkb25seSByZXBvVVJMOiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBSZWxlYXNlIGEgc2V0IG9mIEdvbGFuZyBtb2R1bGVzLlxuICovXG5leHBvcnQgY2xhc3MgR29SZWxlYXNlciB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSB2ZXJzaW9uPzogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IGdpdENvbW1pdE1lc3NhZ2U/OiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkaXI6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBkcnlSdW46IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgZ2l0QnJhbmNoOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZ2l0VXNlcm5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBnaXRVc2VyZW1haWw6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogR29SZWxlYXNlclByb3BzKSB7XG5cbiAgICBpZiAoIXNoZWxsLndoaWNoKCdnaXQnKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdnaXQgbXVzdCBiZSBhdmFpbGFibGUgdG8gaW4gb3JkZXIgdG8gYmUgYWJsZSB0byBwdXNoIEdvIGNvZGUgdG8gR2l0SHViJyk7XG4gICAgfVxuXG4gICAgdGhpcy52ZXJzaW9uID0gcHJvcHMudmVyc2lvbjtcbiAgICB0aGlzLmdpdENvbW1pdE1lc3NhZ2UgPSBwcm9wcy5tZXNzYWdlO1xuICAgIHRoaXMuZGlyID0gcGF0aC5yZXNvbHZlKHByb3BzLmRpciA/PyBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgJ2Rpc3QnLCAnZ28nKSk7XG4gICAgdGhpcy5naXRCcmFuY2ggPSBwcm9wcy5icmFuY2ggPz8gJ21haW4nO1xuICAgIHRoaXMuZHJ5UnVuID0gcHJvcHMuZHJ5UnVuID8/IGZhbHNlO1xuXG4gICAgY29uc3QgZ2l0VXNlcm5hbWUgPSBwcm9wcy51c2VybmFtZSA/PyBnaXQudXNlcm5hbWUoKTtcbiAgICBjb25zdCBnaXRVc2VyZW1haWwgPSBwcm9wcy5lbWFpbCA/PyBnaXQuZW1haWwoKTtcblxuICAgIGlmICghZ2l0VXNlcm5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGRldGVjdCB1c2VybmFtZS4gZWl0aGVyIGNvbmZpZ3VyZSBhIGdpdCB1c2VyLm5hbWUgb3IgcGFzcyBHSVRfVVNFUl9OQU1FIGVudiB2YXJpYWJsZScpO1xuICAgIH1cblxuICAgIGlmICghZ2l0VXNlcmVtYWlsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBkZXRlY3QgdXNlciBlbWFpbC4gZWl0aGVyIGNvbmZpZ3VyZSBhIGdpdCB1c2VyLmVtYWlsIG9yIHBhc3MgR0lUX1VTRVJfRU1BSUwgZW52IHZhcmlhYmxlJyk7XG4gICAgfVxuXG4gICAgdGhpcy5naXRVc2VyZW1haWwgPSBnaXRVc2VyZW1haWw7XG4gICAgdGhpcy5naXRVc2VybmFtZSA9IGdpdFVzZXJuYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1biB0aGUgcmVsZWFzZSBwcm9jZXNzLlxuICAgKlxuICAgKiBAcmV0dXJucyBtZXRhZGF0YSBhYm91dCB0aGUgcmVsZWFzZS5cbiAgICovXG4gIHB1YmxpYyByZWxlYXNlKCk6IEdvUmVsZWFzZSB7XG4gICAgY29uc3QgbW9kdWxlcyA9IHRoaXMuY29sbGVjdE1vZHVsZXModGhpcy5kaXIpO1xuICAgIGlmIChtb2R1bGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc29sZS5sb2coJ05vIG1vZHVsZXMgZGV0ZWN0ZWQuIFNraXBwaW5nJyk7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coJ0RldGVjdGVkIG1vZHVsZXM6Jyk7XG4gICAgbW9kdWxlcy5mb3JFYWNoKG0gPT4gY29uc29sZS5sb2coYCAtICR7bS5tb2RGaWxlfWApKTtcblxuICAgIGNvbnN0IHJlcG9VUkwgPSB0aGlzLmV4dHJhY3RSZXBvVVJMKG1vZHVsZXMpO1xuICAgIGNvbnN0IHJlcG9EaXIgPSBwYXRoLmpvaW4ob3MubWtkdGVtcFN5bmMoKSwgJ3JlcG8nKTtcbiAgICBnaXQuY2xvbmUocmVwb1VSTCwgcmVwb0Rpcik7XG5cbiAgICBjb25zdCBjd2QgPSBwcm9jZXNzLmN3ZCgpO1xuICAgIHRyeSB7XG4gICAgICBwcm9jZXNzLmNoZGlyKHJlcG9EaXIpO1xuICAgICAgcmV0dXJuIHRoaXMuZG9SZWxlYXNlKG1vZHVsZXMsIHJlcG9EaXIpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBwcm9jZXNzLmNoZGlyKGN3ZCk7XG4gICAgfVxuXG4gIH1cblxuICBwcml2YXRlIGRvUmVsZWFzZShtb2R1bGVzOiBHb01vZHVsZVtdLCByZXBvRGlyOiBzdHJpbmcpOiBHb1JlbGVhc2Uge1xuXG4gICAgZ2l0LmlkZW50aWZ5KHRoaXMuZ2l0VXNlcm5hbWUsIHRoaXMuZ2l0VXNlcmVtYWlsKTtcbiAgICBnaXQuY2hlY2tvdXQodGhpcy5naXRCcmFuY2gsIHsgY3JlYXRlSWZNaXNzaW5nOiB0cnVlIH0pO1xuICAgIHRoaXMuc3luY1JlcG8ocmVwb0Rpcik7XG5cbiAgICBnaXQuYWRkKCcuJyk7XG4gICAgaWYgKCFnaXQuZGlmZkluZGV4KCkpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdObyBjaGFuZ2VzLiBTa2lwcGluZyByZWxlYXNlJyk7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgY29uc3QgY29tbWl0TWVzc2FnZSA9IHRoaXMuZ2l0Q29tbWl0TWVzc2FnZSA/PyB0aGlzLmJ1aWxkUmVsZWFzZU1lc3NhZ2UobW9kdWxlcyk7XG4gICAgZ2l0LmNvbW1pdChjb21taXRNZXNzYWdlKTtcblxuICAgIGNvbnN0IHRhZ3MgPSBbXTtcbiAgICBmb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVzKSB7XG4gICAgICBjb25zdCBuYW1lID0gdGhpcy5idWlsZFRhZ05hbWUobW9kdWxlKTtcbiAgICAgIGNvbnN0IGNyZWF0ZWQgPSBnaXQudGFnKG5hbWUpO1xuICAgICAgaWYgKGNyZWF0ZWQpIHsgdGFncy5wdXNoKG5hbWUpOyB9XG4gICAgfVxuXG4gICAgaWYgKHRhZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zb2xlLmxvZygnQWxsIHRhZ3MgYWxyZWFkeSBleGlzdC4gU2tpcHBpbmcgcmVsZWFzZScpO1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIGNvbnN0IHJlZnMgPSBbLi4udGFncywgdGhpcy5naXRCcmFuY2hdO1xuXG4gICAgaWYgKHRoaXMuZHJ5UnVuKSB7XG4gICAgICBjb25zb2xlLmxvZygnPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PScpO1xuICAgICAgY29uc29sZS5sb2coJyAgICAgICAgICAgIPCfj5zvuI8gRFJZLVJVTiBNT0RFIPCfj5zvuI8nKTtcbiAgICAgIGNvbnNvbGUubG9nKCc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Jyk7XG4gICAgICByZWZzLmZvckVhY2godCA9PiBjb25zb2xlLmxvZyhgUmVtb3RlIHJlZiB3aWxsIGJlIHVwZGF0ZWQ6ICR7dH1gKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlZnMuZm9yRWFjaCh0ID0+IGdpdC5wdXNoKHQpKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgdGFncywgY29tbWl0TWVzc2FnZSwgcmVwb0RpciB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjb2xsZWN0TW9kdWxlcyhkaXI6IHN0cmluZyk6IEdvTW9kdWxlW10ge1xuICAgIGNvbnN0IG1vZHVsZXM6IEdvTW9kdWxlW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHAgb2YgWy4uLmZzLnJlYWRkaXJTeW5jKGRpciksICcuJ10pIHtcbiAgICAgIGNvbnN0IG1vZEZpbGUgPSBwYXRoLmpvaW4oZGlyLCBwLCAnZ28ubW9kJyk7XG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhtb2RGaWxlKSkge1xuICAgICAgICBtb2R1bGVzLnB1c2godGhpcy5wYXJzZU1vZHVsZShtb2RGaWxlKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtb2R1bGVzO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZU1vZHVsZShtb2RGaWxlOiBzdHJpbmcpOiBHb01vZHVsZSB7XG5cbiAgICBjb25zdCB2ZXJzaW9uID0gdGhpcy5leHRyYWN0VmVyc2lvbihwYXRoLmRpcm5hbWUobW9kRmlsZSkpO1xuICAgIGNvbnN0IG1ham9yVmVyc2lvbiA9IE51bWJlcih2ZXJzaW9uLnNwbGl0KCcuJylbMF0pO1xuXG4gICAgLy8gZXh0cmFjdCB0aGUgbW9kdWxlIGRlY2xlcmF0aW9uIChlLmcgJ21vZHVsZSBnaXRodWIuY29tL2F3cy9jb25zdHJ1Y3RzLWdvL2NvbnN0cnVjdHMvdjMnKVxuICAgIGNvbnN0IG1hdGNoID0gZnMucmVhZEZpbGVTeW5jKG1vZEZpbGUpLnRvU3RyaW5nKCkubWF0Y2goL21vZHVsZSAoLiopLyk7XG4gICAgaWYgKCFtYXRjaCB8fCAhbWF0Y2hbMV0pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGRldGVjdGVkIG1vZHVsZSBkZWNsYXJhdGlvbiBpbiAke21vZEZpbGV9YCk7XG4gICAgfVxuXG4gICAgLy8gZS5nICdnaXRodWIuY29tL2F3cy9jb25zdHJ1Y3RzLWdvL2NvbnN0cnVjdHMvdjMnXG4gICAgY29uc3QgY2Fubm9uaWNhbE5hbWUgPSBtYXRjaFsxXTtcblxuICAgIC8vIGUuZyBbJ2dpdGh1Yi5jb20nLCAnYXdzJywgJ2NvbnN0cnVjdHMtZ28nLCAnY29uc3RydWN0cycsICd2MyddXG4gICAgY29uc3QgY2Fubm9uaWNhbE5hbWVQYXJ0cyA9IGNhbm5vbmljYWxOYW1lLnNwbGl0KCcvJyk7XG5cbiAgICAvLyBlLmcgJ2dpdGh1Yi5jb20vYXdzL2NvbnN0cnVjdHMtZ28nXG4gICAgY29uc3QgcmVwb1VSTCA9IGNhbm5vbmljYWxOYW1lUGFydHMuc2xpY2UoMCwgMykuam9pbignLycpO1xuXG4gICAgLy8gZS5nICd2MydcbiAgICBjb25zdCBtYWpvclZlcnNpb25TdWZmaXggPSBtYWpvclZlcnNpb24gPiAxID8gYC92JHttYWpvclZlcnNpb259YCA6ICcnO1xuXG4gICAgaWYgKCFjYW5ub25pY2FsTmFtZS5lbmRzV2l0aChtYWpvclZlcnNpb25TdWZmaXgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE1vZHVsZSBkZWNsYXJhdGlvbiBpbiAnJHttb2RGaWxlfScgZXhwZWN0ZWQgdG8gZW5kIHdpdGggJyR7bWFqb3JWZXJzaW9uU3VmZml4fScgc2luY2UgaXRzIG1ham9yIHZlcnNpb24gaXMgbGFyZ2VyIHRoYW4gMWApO1xuICAgIH1cblxuICAgIGlmICghcmVwb1VSTC5zdGFydHNXaXRoKCdnaXRodWIuY29tJykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUmVwb3NpdG9yeSBtdXN0IGJlIGhvc3RlZCBvbiBnaXRodWIuY29tLiBGb3VuZDogJyR7cmVwb1VSTH0nIGluICR7bW9kRmlsZX1gKTtcbiAgICB9XG5cbiAgICBsZXQgcmVwb1BhdGggPSBjYW5ub25pY2FsTmFtZVBhcnRzXG4gICAgICAuc2xpY2UoMykgLy8gZS5nIFsnY29uc3RydWN0cycsICd2MyddXG4gICAgICAuam9pbignLycpOyAvLyBlLmcgJ2NvbnN0cnVjdHMvdjMnXG5cbiAgICAvLyB3ZSBjb3VsZCBoYXZlIHNvbWV0aGluZyBsaWtlXG4gICAgLy8gY29uc3RydWN0cy92M1xuICAgIC8vIG9yIHNvbWV0aGluZyBsaWtlXG4gICAgLy8gY29uc3RydWN0c3YzL3YzXG4gICAgLy8gd2Ugb25seSB3YW50IHRvIHN0cmlwIHRoZSBsYXN0ICd2MydcbiAgICBjb25zdCBzcGxpdCA9IHJlcG9QYXRoLnNwbGl0KCcvJyk7XG4gICAgaWYgKHNwbGl0W3NwbGl0Lmxlbmd0aCAtIDFdID09PSBgdiR7bWFqb3JWZXJzaW9ufWApIHtcbiAgICAgIHNwbGl0LnBvcCgpO1xuICAgICAgcmVwb1BhdGggPSBzcGxpdC5qb2luKCcvJyk7XG4gICAgfVxuXG4gICAgLy8gc3RyaXAgJy8nIGlmIGV4aXN0cyAod29udCBleGlzdCBmb3IgdG9wIGxldmVsIG1vZHVsZXMpXG4gICAgcmVwb1BhdGggPSByZXBvUGF0aC5lbmRzV2l0aCgnLycpID8gcmVwb1BhdGguc3Vic3RyKDAsIHJlcG9QYXRoLmxlbmd0aCAtIDEpIDogcmVwb1BhdGg7XG5cbiAgICByZXR1cm4geyBtb2RGaWxlLCB2ZXJzaW9uLCBjYW5ub25pY2FsTmFtZSwgcmVwb1BhdGgsIHJlcG9VUkwgfTtcblxuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFRhZ05hbWUobTogR29Nb2R1bGUpIHtcbiAgICByZXR1cm4gbS5yZXBvUGF0aCA9PT0gJycgPyBgdiR7bS52ZXJzaW9ufWAgOiBgJHttLnJlcG9QYXRofS92JHttLnZlcnNpb259YDtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRSZWxlYXNlTWVzc2FnZShtb2R1bGVzOiBHb01vZHVsZVtdKSB7XG4gICAgY29uc3Qgc2VtYW50aWMgPSAnY2hvcmUocmVsZWFzZSknO1xuICAgIGNvbnN0IHZlcnNpb25zID0gbmV3IFNldChtb2R1bGVzLm1hcChtID0+IG0udmVyc2lvbikpO1xuICAgIGlmICh2ZXJzaW9ucy5zaXplID09PSAxKSB7XG4gICAgICAvLyBzaW5nbGUgdmVyc2lvbiAoZS5nIGNob3JlKHJlbGVhc2UpOiB2MS4yLjMpXG4gICAgICByZXR1cm4gYCR7c2VtYW50aWN9OiB2JHt2ZXJzaW9ucy52YWx1ZXMoKS5uZXh0KCkudmFsdWV9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gbXVsdGlwbGUgdmVyc2lvbnMgKGUuZyBjaG9yZShyZWxlYXNlKTogY2hvcmUocmVsZWFzZSk6IG1vZHVsZTFAdjEuMi4zICBtb2R1bGUyQHYxLjIuMylcbiAgICAgIHJldHVybiBgJHtzZW1hbnRpY306ICR7bW9kdWxlcy5tYXAobSA9PiBgJHttLnJlcG9QYXRoID8gYCR7bS5yZXBvUGF0aH1AYCA6ICcnfXYke20udmVyc2lvbn1gKS5qb2luKCcgJyl9YDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN5bmNSZXBvKHJlcG9EaXI6IHN0cmluZykge1xuICAgIGNvbnN0IHRvcExldmVsID0gcGF0aC5qb2luKHJlcG9EaXIsICdnby5tb2QnKTtcbiAgICBpZiAoZnMuZXhpc3RzU3luYyh0b3BMZXZlbCkpIHtcbiAgICAgIC8vIHdpdGggdG9wIGxldmVsIG1vZHVsZXMgd2Ugc3luYyB0aGUgZW50aXJlIHJlcG9zaXRvcnlcbiAgICAgIC8vIHNvIHdlIGp1c3QgZW1wdHkgaXQgb3V0XG4gICAgICBmcy5yZWFkZGlyU3luYyhyZXBvRGlyKVxuICAgICAgICAuZmlsdGVyKGYgPT4gZiAhPT0gJy5naXQnKVxuICAgICAgICAuZm9yRWFjaChmID0+IGZzLnJlbW92ZVN5bmMocGF0aC5qb2luKHJlcG9EaXIsIGYpKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIG90aGVyd2lzZSwgd2Ugc2VsZWN0aXZlbHkgcmVtb3ZlIHRoZSBzdWJtb2R1bGVzIG9ubHkuXG4gICAgICBmb3IgKGNvbnN0IHAgb2YgZnMucmVhZGRpclN5bmMocmVwb0RpcikpIHtcbiAgICAgICAgY29uc3Qgc3VibW9kdWxlID0gcGF0aC5qb2luKHJlcG9EaXIsIHAsICdnby5tb2QnKTtcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoc3VibW9kdWxlKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmMocGF0aC5qb2luKHJlcG9EaXIsIHApKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBmcy5jb3B5U3luYyh0aGlzLmRpciwgcmVwb0RpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3RSZXBvVVJMKG1vZHVsZXM6IEdvTW9kdWxlW10pOiBzdHJpbmcge1xuICAgIGNvbnN0IHJlcG9zID0gbmV3IFNldDxzdHJpbmc+KG1vZHVsZXMubWFwKG0gPT4gbS5yZXBvVVJMKSk7XG4gICAgaWYgKHJlcG9zLnNpemUgPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGRldGVjdCByZXBvc2l0b3J5IGZyb20gbW9kdWxlIGZpbGVzLicpO1xuICAgIH1cbiAgICBpZiAocmVwb3Muc2l6ZSA+IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTXVsdGlwbGUgcmVwb3NpdG9yaWVzIGZvdW5kIGluIG1vZHVsZSBmaWxlcycpO1xuICAgIH1cbiAgICByZXR1cm4gcmVwb3MudmFsdWVzKCkubmV4dCgpLnZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0VmVyc2lvbihtb2R1bGVEaXJlY3Rvcnk6IHN0cmluZyk6IHN0cmluZyB7XG5cbiAgICBjb25zdCB2ZXJzaW9uRmlsZSA9IHBhdGguam9pbihtb2R1bGVEaXJlY3RvcnksICd2ZXJzaW9uJyk7XG5cbiAgICBjb25zdCByZXBvVmVyc2lvbiA9IHRoaXMudmVyc2lvbjtcbiAgICBjb25zdCBtb2R1bGVWZXJzaW9uID0gZnMuZXhpc3RzU3luYyh2ZXJzaW9uRmlsZSkgPyBmcy5yZWFkRmlsZVN5bmModmVyc2lvbkZpbGUpLnRvU3RyaW5nKCkgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAocmVwb1ZlcnNpb24gJiYgbW9kdWxlVmVyc2lvbiAmJiByZXBvVmVyc2lvbiAhPT0gbW9kdWxlVmVyc2lvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBSZXBvIHZlcnNpb24gKCR7cmVwb1ZlcnNpb259KSBjb25mbGljdHMgd2l0aCBtb2R1bGUgdmVyc2lvbiAoJHttb2R1bGVWZXJzaW9ufSkgZm9yIG1vZHVsZSBpbiAke21vZHVsZURpcmVjdG9yeX1gKTtcbiAgICB9XG5cbiAgICAvLyBqdXN0IHRha2UgdGhlIG9uZSB0aGF0cyBkZWZpbmVkLCB0aGV5IGhhdmUgdG8gdGhlIHNhbWUgaWYgYm90aCBhcmUuXG4gICAgY29uc3QgdmVyc2lvbiA9IG1vZHVsZVZlcnNpb24gPyBtb2R1bGVWZXJzaW9uIDogcmVwb1ZlcnNpb247XG5cbiAgICBpZiAoIXZlcnNpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGRldGVybWluZSB2ZXJzaW9uIG9mIG1vZHVsZSAke21vZHVsZURpcmVjdG9yeX0uIGBcbiAgICAgICAgKyBcIkVpdGhlciBpbmNsdWRlIGEgJ3ZlcnNpb24nIGZpbGUsIG9yIHNwZWNpZnkgYSBnbG9iYWwgdmVyc2lvbiB1c2luZyB0aGUgVkVSU0lPTiBlbnZpcm9ubWVudCB2YXJpYWJsZS5cIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZlcnNpb247XG5cbiAgfVxuXG59XG4iXX0=
|