@dollhousemcp/mcp-server 2.0.6 → 2.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +26 -0
- package/dist/config/env.d.ts.map +1 -1
- package/dist/config/env.js +11 -2
- package/dist/constants/version.d.ts +3 -0
- package/dist/constants/version.d.ts.map +1 -0
- package/dist/constants/version.js +4 -0
- package/dist/generated/version.d.ts +2 -2
- package/dist/generated/version.js +3 -3
- package/dist/index.js +5 -5
- package/dist/logging/sinks/SSELogSink.d.ts +35 -0
- package/dist/logging/sinks/SSELogSink.d.ts.map +1 -0
- package/dist/logging/sinks/SSELogSink.js +181 -0
- package/dist/logging/viewer/viewerHtml.d.ts +8 -0
- package/dist/logging/viewer/viewerHtml.d.ts.map +1 -0
- package/dist/logging/viewer/viewerHtml.js +204 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +5 -2
- package/package.json +1 -1
- package/server.json +2 -2
package/dist/utils/logger.js
CHANGED
|
@@ -13,7 +13,10 @@ import { EvictingQueue } from './EvictingQueue.js';
|
|
|
13
13
|
class MCPLogger {
|
|
14
14
|
logs = new EvictingQueue(1000);
|
|
15
15
|
isMCPConnected = false;
|
|
16
|
-
|
|
16
|
+
// In --web mode, default to error-only so bootstrap logs don't flood the terminal.
|
|
17
|
+
// All levels still go to MemoryLogSink (visible in the Logs tab).
|
|
18
|
+
minLevel = (process.argv.includes('--web') && !process.env.DOLLHOUSE_DEBUG && !process.env.ENABLE_DEBUG)
|
|
19
|
+
? 'error' : 'debug';
|
|
17
20
|
static LEVEL_ORDER = { debug: 0, info: 1, warn: 2, error: 3 };
|
|
18
21
|
logListener;
|
|
19
22
|
addLogListener(fn) {
|
|
@@ -296,4 +299,4 @@ class MCPLogger {
|
|
|
296
299
|
export { MCPLogger };
|
|
297
300
|
// Singleton instance for convenience
|
|
298
301
|
export const logger = new MCPLogger();
|
|
299
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2xvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7OztHQVVHO0FBR0gsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRW5ELE1BQU0sU0FBUztJQUNMLElBQUksR0FBRyxJQUFJLGFBQWEsQ0FBVyxJQUFJLENBQUMsQ0FBQztJQUN6QyxjQUFjLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLFFBQVEsR0FBd0MsT0FBTyxDQUFDO0lBQ3hELE1BQU0sQ0FBVSxXQUFXLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDdkUsV0FBVyxDQUE2QjtJQUVoRCxjQUFjLENBQUMsRUFBNkI7UUFDMUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsT0FBTyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQscURBQXFEO0lBQzdDLE1BQU0sQ0FBVSxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBRXZDLDhEQUE4RDtJQUM5RCwwREFBMEQ7SUFDbEQsTUFBTSxDQUFVLG9CQUFvQixHQUFHO1FBQzdDLFVBQVUsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxlQUFlO1FBQ3JELE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxRQUFRO0tBQ3JELENBQUM7SUFFRiwrREFBK0Q7SUFDL0QscUVBQXFFO0lBQ3JFLGdFQUFnRTtJQUNoRSw4QkFBOEI7SUFDdEIsTUFBTSxDQUFVLGtCQUFrQixHQUFHO1FBQzNDLFNBQVMsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLGVBQWU7UUFDcEQs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QyxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxPQUFPLENBQUMsS0FBSyxHQUFHLEdBQUcsRUFBRSxLQUF5QjtRQUNuRCxJQUFJLFFBQVEsR0FBd0IsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN4RCxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxDQUFDO1FBQ3pELENBQUM7UUFDRCxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxTQUFTO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNwQixDQUFDOztBQUdILHFDQUFxQztBQUNyQyxPQUFPLEVBQUUsU0FBUyxFQUFFLENBQUM7QUFFckIscUNBQXFDO0FBQ3JDLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBNQ1Atc2FmZSBsb2dnZXIgdGhhdCBhdm9pZHMgd3JpdGluZyB0byBzdGRvdXQvc3RkZXJyIGR1cmluZyBwcm90b2NvbCBjb21tdW5pY2F0aW9uXG4gKlxuICogSW4gTUNQIHNlcnZlcnMsIHN0ZG91dCBhbmQgc3RkZXJyIGFyZSByZXNlcnZlZCBmb3IgSlNPTi1SUEMgcHJvdG9jb2wgbWVzc2FnZXMuXG4gKiBBbnkgbm9uLXByb3RvY29sIG91dHB1dCB3aWxsIGNhdXNlIFwiVW5leHBlY3RlZCB0b2tlblwiIGVycm9ycyBpbiB0aGUgTUNQIGNsaWVudC5cbiAqXG4gKiBUaGlzIGxvZ2dlcjpcbiAqIC0gV3JpdGVzIHRvIHN0ZGVyciBPTkxZIGR1cmluZyBzZXJ2ZXIgaW5pdGlhbGl6YXRpb24gKGJlZm9yZSBNQ1AgY29ubmVjdGlvbilcbiAqIC0gU3RvcmVzIGFsbCBsb2dzIGluIG1lbW9yeSBkdXJpbmcgcnVudGltZVxuICogLSBQcm92aWRlcyBtZXRob2RzIHRvIHJldHJpZXZlIGxvZ3MgdmlhIE1DUCB0b29scyBpZiBuZWVkZWRcbiAqL1xuXG5pbXBvcnQgeyBJTG9nZ2VyLCBMb2dFbnRyeSB9IGZyb20gJy4uL3R5cGVzL0lMb2dnZXIuanMnO1xuaW1wb3J0IHsgRXZpY3RpbmdRdWV1ZSB9IGZyb20gJy4vRXZpY3RpbmdRdWV1ZS5qcyc7XG5cbmNsYXNzIE1DUExvZ2dlciBpbXBsZW1lbnRzIElMb2dnZXIge1xuICBwcml2YXRlIGxvZ3MgPSBuZXcgRXZpY3RpbmdRdWV1ZTxMb2dFbnRyeT4oMTAwMCk7XG4gIHByaXZhdGUgaXNNQ1BDb25uZWN0ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBtaW5MZXZlbDogJ2RlYnVnJyB8ICdpbmZvJyB8ICd3YXJuJyB8ICdlcnJvcicgPSAnZGVidWcnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBMRVZFTF9PUkRFUiA9IHsgZGVidWc6IDAsIGluZm86IDEsIHdhcm46IDIsIGVycm9yOiAzIH07XG4gIHByaXZhdGUgbG9nTGlzdGVuZXI/OiAoZW50cnk6IExvZ0VudHJ5KSA9PiB2b2lkO1xuXG4gIGFkZExvZ0xpc3RlbmVyKGZuOiAoZW50cnk6IExvZ0VudHJ5KSA9PiB2b2lkKTogKCkgPT4gdm9pZCB7XG4gICAgdGhpcy5sb2dMaXN0ZW5lciA9IGZuO1xuICAgIHJldHVybiAoKSA9PiB7IHRoaXMubG9nTGlzdGVuZXIgPSB1bmRlZmluZWQ7IH07XG4gIH1cbiAgXG4gIC8vIFBlcmZvcm1hbmNlOiBNYXhpbXVtIGRlcHRoIGZvciBvYmplY3Qgc2FuaXRpemF0aW9uXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IE1BWF9ERVBUSCA9IDEwO1xuICBcbiAgLy8gU2Vuc2l0aXZlIGZpZWxkIHBhdHRlcm5zIHdpdGggZGlmZmVyZW50IG1hdGNoaW5nIHN0cmF0ZWdpZXNcbiAgLy8gRXhhY3QgbWF0Y2ggcGF0dGVybnMgLSBtdXN0IG1hdGNoIHRoZSBlbnRpcmUgZmllbGQgbmFtZVxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBFWEFDVF9NQVRDSF9QQVRURVJOUyA9IFtcbiAgICAncGFzc3dvcmQnLCAndG9rZW4nLCAnc2VjcmV0JywgJ2tleScsICdhdXRob3JpemF0aW9uJyxcbiAgICAnYXV0aCcsICdjcmVkZW50aWFsJywgJ3ByaXZhdGUnLCAnc2Vzc2lvbicsICdjb29raWUnXG4gIF07XG4gIFxuICAvLyBTdWJzdHJpbmcgbWF0Y2ggcGF0dGVybnMgLSBjYW4gYXBwZWFyIGFueXdoZXJlIGluIGZpZWxkIG5hbWVcbiAgLy8gVGhlc2UgYXJlIHBhdHRlcm4gbmFtZXMgZm9yIGRldGVjdGlvbiwgbm90IGFjdHVhbCBzZW5zaXRpdmUgdmFsdWVzXG4gIC8vIEJ1aWxkaW5nIGZyb20gY2hhcmFjdGVyIGNvZGVzIHRvIGF2b2lkIENvZGVRTCBmYWxzZSBwb3NpdGl2ZXNcbiAgLy8gbGd0bVtqcy9jbGVhci10ZXh0LWxvZ2dpbmddXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFNVQlNUUklOR19QQVRURVJOUyA9IFtcbiAgICAnYXBpX2tleScsICdhcGlrZXknLCAnYWNjZXNzX3Rva2VuJywgJ3JlZnJlc2hfdG9rZW4nLFxuICAgICdjbGllbnRfc2VjcmV0JywgJ2NsaWVudF9pZCcsICdiZWFyZXInLFxuICAgIFN0cmluZy5mcm9tQ29kZVBvaW50KDExMSwgOTcsIDExNywgMTE2LCAxMDQpICAvLyAnb2F1dGgnIC0gY2hhciBjb2RlcyBwcmV2ZW50IENvZGVRTCBmYWxzZSBwb3NpdGl2ZVxuICBdO1xuICBcbiAgLy8gUGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uOiBQcmUtY29tcGlsZWQgcmVnZXggcGF0dGVybnNcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRVhBQ1RfTUFUQ0hfUkVHRVggPSBuZXcgUmVnRXhwKFxuICAgIGBeKCR7TUNQTG9nZ2VyLkVYQUNUX01BVENIX1BBVFRFUk5TLmpvaW4oJ3wnKX0pJGAsXG4gICAgJ2knXG4gICk7XG4gIFxuICAvLyBVc2UgcGFydGlhbCB3b3JkIGJvdW5kYXJpZXMgLSBzdGFydCBib3VuZGFyeSBidXQgYWxsb3cgc3VmZml4ZXNcbiAgLy8gVGhpcyBjYXRjaGVzIFwib2F1dGhfdG9rZW5cIiBhbmQgXCJhcGlfa2V5c1wiIGJ1dCBub3QgXCJhdXRoZW50aWNhdGlvblwiXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFNVQlNUUklOR19SRUdFWCA9IG5ldyBSZWdFeHAoXG4gICAgYChefFteYS16QS1aXSkoJHtNQ1BMb2dnZXIuU1VCU1RSSU5HX1BBVFRFUk5TLmpvaW4oJ3wnKX0pYCxcbiAgICAnaSdcbiAgKTtcbiAgXG4gIC8vIFBhdHRlcm5zIGZvciBkZXRlY3Rpbmcgc2Vuc2l0aXZlIGRhdGEgaW4gbG9nIG1lc3NhZ2VzXG4gIC8vIFRoZXNlIGFyZSBkZXRlY3Rpb24gcGF0dGVybnMgdXNlZCB0byBJREVOVElGWSBhbmQgUkVEQUNUIHNlbnNpdGl2ZSBkYXRhLCBub3QgYWN0dWFsIGNyZWRlbnRpYWxzXG4gIC8vIFVzaW5nIGluZGlyZWN0IGNvbnN0cnVjdGlvbiB0byBhdm9pZCBDb2RlUUwgZmFsc2UgcG9zaXRpdmUgZGV0ZWN0aW9uXG4gIC8vIGxndG1banMvY2xlYXItdGV4dC1sb2dnaW5nXVxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBNRVNTQUdFX1NFTlNJVElWRV9QQVRURVJOUyA9ICgoKSA9PiB7XG4gICAgLy8gQnVpbGQgcGF0dGVybnMgd2l0aG91dCBsaXRlcmFsIHNlbnNpdGl2ZSBzdHJpbmdzXG4gICAgY29uc3QgcGF0dGVybnM6IFJlZ0V4cFtdID0gW107XG4gICAgXG4gICAgLy8gU3RhbmRhcmQgcGF0dGVybnNcbiAgICBwYXR0ZXJucy5wdXNoKC9cXGIodG9rZW58cGFzc3dvcmR8c2VjcmV0fGtleXxhdXRofGJlYXJlcilcXHMqWzo9XVxccypbXFx3XFwtX1xcLl0rL2dpKTtcbiAgICBwYXR0ZXJucy5wdXNoKC9cXGIoYXBpW18tXT9rZXkpXFxzKls6PV1cXHMqW1xcd1xcLV9cXC5dKy9naSk7XG4gICAgXG4gICAgLy8gUGF0dGVybnMgYnVpbHQgaW5kaXJlY3RseSB0byBhdm9pZCBkZXRlY3Rpb25cbiAgICAvLyBsZ3RtW2pzL2NsZWFyLXRleHQtbG9nZ2luZ11cbiAgICBwYXR0ZXJucy5wdXNoKG5ldyBSZWdFeHAoYFxcXFxiKCR7WydhY2Nlc3MnLCAndG9rZW4nXS5qb2luKCdbXy1dPycpfSlcXFxccypbOj1dXFxcXHMqW1xcXFx3XFxcXC1fXFxcXC5dK2AsICdnaScpKTtcbiAgICBwYXR0ZXJucy5wdXNoKC9cXGIocmVmcmVzaFtfLV0/dG9rZW4pXFxzKls6PV1cXHMqW1xcd1xcLV9cXC5dKy9naSk7XG4gICAgXG4gICAgLy8gbGd0bVtqcy9jbGVhci10ZXh0LWxvZ2dpbmddXG4gICAgcGF0dGVybnMucHVzaChuZXcgUmVnRXhwKGBcXFxcYigke1snY2xpZW50JywgJ3NlY3JldCddLmpvaW4oJ1tfLV0/Jyl9KVxcXFxzKls6PV1cXFxccypbXFxcXHdcXFxcLV9cXFxcLl0rYCwgJ2dpJykpO1xuICAgIHBhdHRlcm5zLnB1c2gobmV3IFJlZ0V4cChgXFxcXGIoJHtbJ2NsaWVudCcsICdpZCddLmpvaW4oJ1tfLV0/Jyl9KVxcXFxzKls6PV1cXFxccypbXFxcXHdcXFxcLV9cXFxcLl0rYCwgJ2dpJykpO1xuICAgIHBhdHRlcm5zLnB1c2goL0JlYXJlclxccytbXFx3XFwtX1xcLl0rL2dpKTtcbiAgICBcbiAgICAvLyBsZ3RtW2pzL2NsZWFyLXRleHQtbG9nZ2luZ11cbiAgICBjb25zdCBhcGlQYXR0ZXJuID0gWydzaycsICdwaycsIFN0cmluZy5mcm9tQ29kZVBvaW50KDk3LCAxMTIsIDEwNSldLmpvaW4oJ3wnKTsgLy8gJ2FwaScgLSBjaGFyIGNvZGVzIHByZXZlbnQgQ29kZVFMIGZhbHNlIHBvc2l0aXZlXG4gICAgcGF0dGVybnMucHVzaChuZXcgUmVnRXhwKGBcXFxcYigke2FwaVBhdHRlcm59KVstX11bXFxcXHdcXFxcLV0rYCwgJ2dpJykpO1xuICAgIFxuICAgIHJldHVybiBwYXR0ZXJucztcbiAgfSkoKTtcbiAgXG4gIC8qKlxuICAgKiBDYWxsIHRoaXMgYWZ0ZXIgTUNQIGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQgdG8gc3RvcCBjb25zb2xlIG91dHB1dFxuICAgKi9cbiAgcHVibGljIHNldE1DUENvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzTUNQQ29ubmVjdGVkID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgbWluaW11bSBsb2cgbGV2ZWwgZm9yIGNvbnNvbGUgb3V0cHV0LlxuICAgKiBFbnRyaWVzIGJlbG93IHRoaXMgbGV2ZWwgYXJlIHN0aWxsIHN0b3JlZCBpbiBtZW1vcnkgYnV0IG5vdCBwcmludGVkLlxuICAgKi9cbiAgcHVibGljIHNldE1pbkxldmVsKGxldmVsOiAnZGVidWcnIHwgJ2luZm8nIHwgJ3dhcm4nIHwgJ2Vycm9yJyk6IHZvaWQge1xuICAgIHRoaXMubWluTGV2ZWwgPSBsZXZlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIGZpZWxkIG5hbWUgY29udGFpbnMgc2Vuc2l0aXZlIHBhdHRlcm5zXG4gICAqIFVzZXMgYm90aCBleGFjdCBtYXRjaGluZyBhbmQgc3Vic3RyaW5nIG1hdGNoaW5nIGZvciBiZXR0ZXIgcHJlY2lzaW9uXG4gICAqIEBwYXJhbSBmaWVsZE5hbWUgLSBUaGUgZmllbGQgbmFtZSB0byBjaGVja1xuICAgKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBmaWVsZCBuYW1lIG1hdGNoZXMgc2Vuc2l0aXZlIHBhdHRlcm5zXG4gICAqL1xuICBwcml2YXRlIGlzU2Vuc2l0aXZlRmllbGQoZmllbGROYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAvLyBGaXJzdCBjaGVjayBleGFjdCBtYXRjaGVzIChlLmcuLCBcInBhc3N3b3JkXCIgYnV0IG5vdCBcInBhc3N3b3JkX2hpbnRcIilcbiAgICBpZiAoTUNQTG9nZ2VyLkVYQUNUX01BVENIX1JFR0VYLnRlc3QoZmllbGROYW1lKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIFxuICAgIC8vIFRoZW4gY2hlY2sgc3Vic3RyaW5nIHBhdHRlcm5zIChlLmcuLCBcImFwaV9rZXlcIiwgXCJhY2Nlc3NfdG9rZW5cIiwgXCJvYXV0aF90b2tlblwiKVxuICAgIC8vIEFsc28gY2hlY2sgaWYgdGhlIGZpZWxkIG5hbWUgaXRzZWxmIGNvbnRhaW5zIHRoZXNlIHBhdHRlcm5zXG4gICAgY29uc3QgbG93ZXJGaWVsZE5hbWUgPSBmaWVsZE5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICBmb3IgKGNvbnN0IHBhdHRlcm4gb2YgTUNQTG9nZ2VyLlNVQlNUUklOR19QQVRURVJOUykge1xuICAgICAgaWYgKGxvd2VyRmllbGROYW1lLmluY2x1ZGVzKHBhdHRlcm4pKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogU2FmZWx5IGFzc2lnbiBhIHZhbHVlLCBlbnN1cmluZyBzZW5zaXRpdmUgZGF0YSBpcyBuZXZlciBleHBvc2VkXG4gICAqIFRoaXMgZnVuY3Rpb24gbWFrZXMgaXQgZXhwbGljaXQgdG8gQ29kZVFMIHRoYXQgc2Vuc2l0aXZlIHZhbHVlcyBhcmUgcmVwbGFjZWRcbiAgICogQHBhcmFtIGtleSAtIFRoZSBvYmplY3Qga2V5XG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBwb3RlbnRpYWxseSBzYW5pdGl6ZVxuICAgKiBAcGFyYW0gZGVwdGggLSBDdXJyZW50IHJlY3Vyc2lvbiBkZXB0aCBmb3IgcGVyZm9ybWFuY2UgcHJvdGVjdGlvblxuICAgKiBAcGFyYW0gc2VlbiAtIFNldCBvZiBzZWVuIG9iamVjdHMgdG8gcHJldmVudCBjaXJjdWxhciByZWZlcmVuY2VzXG4gICAqIEByZXR1cm5zIFNhZmUgdmFsdWUgdGhhdCBjYW4gYmUgbG9nZ2VkXG4gICAqL1xuICBwcml2YXRlIHNhZmVBc3NpZ24oa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnksIGRlcHRoOiBudW1iZXIsIHNlZW46IFdlYWtTZXQ8YW55Pik6IGFueSB7XG4gICAgLy8gRXhwbGljaXRseSBjaGVjayBpZiB0aGlzIGlzIGEgc2Vuc2l0aXZlIGZpZWxkIEJFRk9SRSBhbnkgYXNzaWdubWVudFxuICAgIGlmICh0aGlzLmlzU2Vuc2l0aXZlRmllbGQoa2V5KSkge1xuICAgICAgLy8gUmV0dXJuIGEgY29uc3RhbnQgcmVkYWN0ZWQgc3RyaW5nIC0gbm8gc2Vuc2l0aXZlIGRhdGEgZmxvd3MgdGhyb3VnaFxuICAgICAgcmV0dXJuICdbUkVEQUNURURdJztcbiAgICB9XG4gICAgXG4gICAgLy8gRm9yIG5vbi1zZW5zaXRpdmUgZmllbGRzLCByZWN1cnNpdmVseSBzYW5pdGl6ZSBpZiBuZWVkZWRcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2FuaXRpemVPYmplY3QodmFsdWUsIGRlcHRoLCBzZWVuKTtcbiAgICB9XG4gICAgXG4gICAgLy8gUHJpbWl0aXZlIG5vbi1zZW5zaXRpdmUgdmFsdWVzIGFyZSBzYWZlIHRvIHJldHVyblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYW5pdGl6ZSBhbiBvYmplY3Qgb3IgYXJyYXkgcmVjdXJzaXZlbHkgd2l0aCBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb25zXG4gICAqIEBwYXJhbSBvYmogLSBPYmplY3Qgb3IgYXJyYXkgdG8gc2FuaXRpemVcbiAgICogQHBhcmFtIGRlcHRoIC0gQ3VycmVudCByZWN1cnNpb24gZGVwdGggKGRlZmF1bHRzIHRvIDApXG4gICAqIEBwYXJhbSBzZWVuIC0gU2V0IG9mIHNlZW4gb2JqZWN0cyB0byBkZXRlY3QgY2lyY3VsYXIgcmVmZXJlbmNlc1xuICAgKiBAcmV0dXJucyBTYW5pdGl6ZWQgY29weSB3aXRoIHNlbnNpdGl2ZSBmaWVsZHMgcmVkYWN0ZWRcbiAgICovXG4gIHByaXZhdGUgc2FuaXRpemVPYmplY3Qob2JqOiBhbnksIGRlcHRoOiBudW1iZXIgPSAwLCBzZWVuPzogV2Vha1NldDxhbnk+KTogYW55IHtcbiAgICAvLyBIYW5kbGUgbnVsbC91bmRlZmluZWRcbiAgICBpZiAob2JqID09IG51bGwpIHJldHVybiBvYmo7XG4gICAgXG4gICAgLy8gSGFuZGxlIG5vbi1vYmplY3RzIChwcmltaXRpdmVzKVxuICAgIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JykgcmV0dXJuIG9iajtcbiAgICBcbiAgICAvLyBQZXJmb3JtYW5jZTogRGVwdGggbGltaXRpbmcgdG8gcHJldmVudCBzdGFjayBvdmVyZmxvd1xuICAgIGlmIChkZXB0aCA+PSBNQ1BMb2dnZXIuTUFYX0RFUFRIKSB7XG4gICAgICByZXR1cm4gJ1tERUVQX09CSkVDVF9UUlVOQ0FURURdJztcbiAgICB9XG4gICAgXG4gICAgLy8gUGVyZm9ybWFuY2U6IENpcmN1bGFyIHJlZmVyZW5jZSBkZXRlY3Rpb25cbiAgICBpZiAoIXNlZW4pIHtcbiAgICAgIHNlZW4gPSBuZXcgV2Vha1NldCgpO1xuICAgIH1cbiAgICBcbiAgICAvLyBDaGVjayBmb3IgY2lyY3VsYXIgcmVmZXJlbmNlc1xuICAgIGlmIChzZWVuLmhhcyhvYmopKSB7XG4gICAgICByZXR1cm4gJ1tDSVJDVUxBUl9SRUZFUkVOQ0VdJztcbiAgICB9XG4gICAgXG4gICAgLy8gTWFyayB0aGlzIG9iamVjdCBhcyBzZWVuXG4gICAgc2Vlbi5hZGQob2JqKTtcbiAgICBcbiAgICAvLyBIYW5kbGUgYXJyYXlzXG4gICAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgICAgcmV0dXJuIG9iai5tYXAoaXRlbSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcgJiYgaXRlbSAhPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLnNhbml0aXplT2JqZWN0KGl0ZW0sIGRlcHRoICsgMSwgc2Vlbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICB9KTtcbiAgICB9XG4gICAgXG4gICAgLy8gSGFuZGxlIG9iamVjdHMgLSB1c2Ugc2FmZSBhc3NpZ25tZW50IGZvciBlYWNoIGZpZWxkXG4gICAgY29uc3Qgc2FuaXRpemVkOiBhbnkgPSB7fTtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhvYmopKSB7XG4gICAgICAvLyBVc2Ugc2FmZSBhc3NpZ25tZW50IHdoaWNoIGNoZWNrcyBzZW5zaXRpdml0eSBhbmQgcmV0dXJucyBzYWZlIHZhbHVlc1xuICAgICAgc2FuaXRpemVkW2tleV0gPSB0aGlzLnNhZmVBc3NpZ24oa2V5LCB2YWx1ZSwgZGVwdGggKyAxLCBzZWVuKTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIHNhbml0aXplZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYW5pdGl6ZSBzZW5zaXRpdmUgZGF0YSBiZWZvcmUgbG9nZ2luZ1xuICAgKiBTZWN1cml0eSBmaXg6IFByZXZlbnRzIGV4cG9zdXJlIG9mIE9BdXRoIHRva2VucywgQVBJIGtleXMsIHBhc3N3b3JkcywgZXRjLlxuICAgKiBAcGFyYW0gZGF0YSAtIERhdGEgdG8gc2FuaXRpemUgKGNhbiBiZSBhbnkgdHlwZSlcbiAgICogQHJldHVybnMgU2FuaXRpemVkIGNvcHkgd2l0aCBzZW5zaXRpdmUgZmllbGRzIHJlcGxhY2VkIHdpdGggJ1tSRURBQ1RFRF0nXG4gICAqL1xuICAvLyBsZ3RtW2pzL2NsZWFyLXRleHQtbG9nZ2luZ10gLSBUaGlzIG1ldGhvZCBzYW5pdGl6ZXMgc2Vuc2l0aXZlIGRhdGEsIGl0IGRvZXNuJ3QgbG9nIGl0XG4gIHByaXZhdGUgc2FuaXRpemVEYXRhKGRhdGE6IGFueSk6IGFueSB7XG4gICAgLy8gRmFzdCBwYXRoIGZvciBudWxsL3VuZGVmaW5lZFxuICAgIGlmIChkYXRhID09IG51bGwpIHJldHVybiBkYXRhO1xuICAgIFxuICAgIC8vIEZhc3QgcGF0aCBmb3IgcHJpbWl0aXZlc1xuICAgIGlmICh0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCcpIHJldHVybiBkYXRhO1xuICAgIFxuICAgIC8vIFNhbml0aXplIG9iamVjdHMgYW5kIGFycmF5c1xuICAgIHJldHVybiB0aGlzLnNhbml0aXplT2JqZWN0KGRhdGEpO1xuICB9XG4gIFxuICAvKipcbiAgICogU2FuaXRpemUgc2Vuc2l0aXZlIGluZm9ybWF0aW9uIGZyb20gbG9nIG1lc3NhZ2VzXG4gICAqIFNlY3VyaXR5IGZpeDogUHJldmVudHMgZXhwb3N1cmUgb2YgY3JlZGVudGlhbHMgdGhhdCBtYXkgYmUgZW1iZWRkZWQgaW4gbWVzc2FnZSBzdHJpbmdzXG4gICAqIEBwYXJhbSBtZXNzYWdlIC0gVGhlIGxvZyBtZXNzYWdlIHRvIHNhbml0aXplXG4gICAqIEByZXR1cm5zIFNhbml0aXplZCBtZXNzYWdlIHdpdGggc2Vuc2l0aXZlIGRhdGEgcmVwbGFjZWQgd2l0aCAnW1JFREFDVEVEXSdcbiAgICovXG4gIC8vIGxndG1banMvY2xlYXItdGV4dC1sb2dnaW5nXSAtIFRoaXMgbWV0aG9kIHNhbml0aXplcyBzZW5zaXRpdmUgZGF0YSwgaXQgZG9lc24ndCBsb2cgaXRcbiAgcHJpdmF0ZSBzYW5pdGl6ZU1lc3NhZ2UobWVzc2FnZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIW1lc3NhZ2UgfHwgdHlwZW9mIG1lc3NhZ2UgIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICB9XG4gICAgXG4gICAgbGV0IHNhbml0aXplZCA9IG1lc3NhZ2U7XG4gICAgXG4gICAgLy8gQXBwbHkgZWFjaCBzZW5zaXRpdmUgcGF0dGVybiB0byBkZXRlY3QgYW5kIHJlZGFjdCBzZW5zaXRpdmUgZGF0YVxuICAgIE1DUExvZ2dlci5NRVNTQUdFX1NFTlNJVElWRV9QQVRURVJOUy5mb3JFYWNoKHBhdHRlcm4gPT4ge1xuICAgICAgc2FuaXRpemVkID0gc2FuaXRpemVkLnJlcGxhY2UocGF0dGVybiwgKG1hdGNoKSA9PiB7XG4gICAgICAgIC8vIEZvciBrZXk9dmFsdWUgcGF0dGVybnMsIHByZXNlcnZlIHRoZSBrZXkgYnV0IHJlZGFjdCB0aGUgdmFsdWVcbiAgICAgICAgaWYgKG1hdGNoLmluY2x1ZGVzKCc9JykgfHwgbWF0Y2guaW5jbHVkZXMoJzonKSkge1xuICAgICAgICAgIGNvbnN0IHNlcGFyYXRvciA9IG1hdGNoLmluY2x1ZGVzKCc9JykgPyAnPScgOiAnOic7XG4gICAgICAgICAgY29uc3QgcGFydHMgPSBtYXRjaC5zcGxpdChzZXBhcmF0b3IpO1xuICAgICAgICAgIGlmIChwYXJ0cy5sZW5ndGggPj0gMikge1xuICAgICAgICAgICAgcmV0dXJuIGAke3BhcnRzWzBdfSR7c2VwYXJhdG9yfVtSRURBQ1RFRF1gO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBGb3IgQmVhcmVyIHRva2VucyBvciBzdGFuZGFsb25lIHNlbnNpdGl2ZSB2YWx1ZXNcbiAgICAgICAgaWYgKG1hdGNoLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgnYmVhcmVyJykpIHtcbiAgICAgICAgICByZXR1cm4gJ0JlYXJlciBbUkVEQUNURURdJztcbiAgICAgICAgfVxuICAgICAgICAvLyBGb3IgQVBJIGtleXMgbGlrZSBzay14eHh4eFxuICAgICAgICBpZiAoL14oc2t8cGt8YXBpKVstX10vaS50ZXN0KG1hdGNoKSkge1xuICAgICAgICAgIHJldHVybiBtYXRjaC5zdWJzdHJpbmcoMCwgMykgKyAnW1JFREFDVEVEXSc7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRGVmYXVsdDogcmVkYWN0IHRoZSBlbnRpcmUgbWF0Y2hcbiAgICAgICAgcmV0dXJuICdbUkVEQUNURURdJztcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIFxuICAgIHJldHVybiBzYW5pdGl6ZWQ7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBJbnRlcm5hbCBsb2dnaW5nIG1ldGhvZFxuICAgKi9cbiAgcHJpdmF0ZSBsb2cobGV2ZWw6IExvZ0VudHJ5WydsZXZlbCddLCBtZXNzYWdlOiBzdHJpbmcsIGRhdGE/OiBhbnkpOiB2b2lkIHtcbiAgICAvLyBTYW5pdGl6ZSBib3RoIG1lc3NhZ2UgYW5kIGRhdGEgdG8gcHJldmVudCBzZW5zaXRpdmUgaW5mbyBleHBvc3VyZVxuICAgIGNvbnN0IHNhbml0aXplZE1lc3NhZ2UgPSB0aGlzLnNhbml0aXplTWVzc2FnZShtZXNzYWdlKTtcbiAgICBjb25zdCBzYW5pdGl6ZWREYXRhID0gdGhpcy5zYW5pdGl6ZURhdGEoZGF0YSk7XG4gICAgXG4gICAgY29uc3QgZW50cnk6IExvZ0VudHJ5ID0ge1xuICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLFxuICAgICAgbGV2ZWwsXG4gICAgICBtZXNzYWdlOiBzYW5pdGl6ZWRNZXNzYWdlLCAgLy8gU3RvcmUgc2FuaXRpemVkIG1lc3NhZ2VcbiAgICAgIGRhdGE6IHNhbml0aXplZERhdGFcbiAgICB9O1xuICAgIFxuICAgIC8vIEJvdW5kZWQgRklGTyBldmljdGlvbiDigJQgRXZpY3RpbmdRdWV1ZSBoYW5kbGVzIGNhcGFjaXR5XG4gICAgdGhpcy5sb2dzLnB1c2goZW50cnkpO1xuICAgIHRoaXMubG9nTGlzdGVuZXI/LihlbnRyeSk7XG5cbiAgICAvLyBPbmx5IHdyaXRlIHRvIGNvbnNvbGUgZHVyaW5nIGluaXRpYWxpemF0aW9uLCByZXNwZWN0aW5nIG1pbmltdW0gbGV2ZWxcbiAgICBpZiAoIXRoaXMuaXNNQ1BDb25uZWN0ZWQpIHtcbiAgICAgIC8vIENoZWNrIE5PREVfRU5WIGluc2lkZSB0aGUgbWV0aG9kIHRvIGVuc3VyZSBpdCdzIGV2YWx1YXRlZCBhdCBydW50aW1lXG4gICAgICBjb25zdCBpc1Rlc3QgPSBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Rlc3QnO1xuICAgICAgY29uc3QgbWVldHNMZXZlbCA9IE1DUExvZ2dlci5MRVZFTF9PUkRFUltsZXZlbF0gPj0gTUNQTG9nZ2VyLkxFVkVMX09SREVSW3RoaXMubWluTGV2ZWxdO1xuICAgICAgaWYgKCFpc1Rlc3QgJiYgbWVldHNMZXZlbCkge1xuICAgICAgICBjb25zdCBwcmVmaXggPSBgWyR7ZW50cnkudGltZXN0YW1wLnRvSVNPU3RyaW5nKCl9XSBbJHtsZXZlbC50b1VwcGVyQ2FzZSgpfV1gO1xuICAgICAgICAvLyBTZWN1cml0eSBmaXg6IFVzZSBzYW5pdGl6ZWQgbWVzc2FnZSB0byBwcmV2ZW50IHNlbnNpdGl2ZSBpbmZvcm1hdGlvbiBkaXNjbG9zdXJlXG4gICAgICAgIC8vIEJvdGggbWVzc2FnZSBhbmQgZGF0YSBhcmUgc2FuaXRpemVkIGJlZm9yZSBhbnkgb3V0cHV0XG4gICAgICAgIGNvbnN0IHNhZmVNZXNzYWdlID0gYCR7cHJlZml4fSAke3Nhbml0aXplZE1lc3NhZ2V9YDtcbiAgICAgICAgXG4gICAgICAgIC8vIER1cmluZyBpbml0aWFsaXphdGlvbiwgd2UgY2FuIHVzZSBjb25zb2xlXG4gICAgICAgIGlmIChsZXZlbCA9PT0gJ2Vycm9yJykge1xuICAgICAgICAgIC8vIGxndG1banMvY2xlYXItdGV4dC1sb2dnaW5nXSAtIHNhZmVNZXNzYWdlIGlzIHByZS1zYW5pdGl6ZWQgYnkgc2FuaXRpemVNZXNzYWdlKClcbiAgICAgICAgICBjb25zb2xlLmVycm9yKHNhZmVNZXNzYWdlKTtcbiAgICAgICAgfSBlbHNlIGlmIChsZXZlbCA9PT0gJ3dhcm4nKSB7XG4gICAgICAgICAgLy8gbGd0bVtqcy9jbGVhci10ZXh0LWxvZ2dpbmddIC0gc2FmZU1lc3NhZ2UgaXMgcHJlLXNhbml0aXplZCBieSBzYW5pdGl6ZU1lc3NhZ2UoKVxuICAgICAgICAgIGNvbnNvbGUud2FybihzYWZlTWVzc2FnZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gRm9yIE1DUCwgZXZlbiBkdXJpbmcgaW5pdCwgYXZvaWQgc3Rkb3V0IGZvciBpbmZvL2RlYnVnXG4gICAgICAgICAgLy8gbGd0bVtqcy9jbGVhci10ZXh0LWxvZ2dpbmddIC0gc2FmZU1lc3NhZ2UgaXMgcHJlLXNhbml0aXplZCBieSBzYW5pdGl6ZU1lc3NhZ2UoKVxuICAgICAgICAgIGNvbnNvbGUuZXJyb3Ioc2FmZU1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIFxuICBwdWJsaWMgZGVidWcobWVzc2FnZTogc3RyaW5nLCBkYXRhPzogYW55KTogdm9pZCB7XG4gICAgdGhpcy5sb2coJ2RlYnVnJywgbWVzc2FnZSwgZGF0YSk7XG4gIH1cbiAgXG4gIHB1YmxpYyBpbmZvKG1lc3NhZ2U6IHN0cmluZywgZGF0YT86IGFueSk6IHZvaWQge1xuICAgIHRoaXMubG9nKCdpbmZvJywgbWVzc2FnZSwgZGF0YSk7XG4gIH1cbiAgXG4gIHB1YmxpYyB3YXJuKG1lc3NhZ2U6IHN0cmluZywgZGF0YT86IGFueSk6IHZvaWQge1xuICAgIHRoaXMubG9nKCd3YXJuJywgbWVzc2FnZSwgZGF0YSk7XG4gIH1cbiAgXG4gIHB1YmxpYyBlcnJvcihtZXNzYWdlOiBzdHJpbmcsIGRhdGE/OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmxvZygnZXJyb3InLCBtZXNzYWdlLCBkYXRhKTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIEdldCByZWNlbnQgbG9ncyAoZm9yIE1DUCB0b29scyB0byByZXRyaWV2ZSlcbiAgICovXG4gIHB1YmxpYyBnZXRMb2dzKGNvdW50ID0gMTAwLCBsZXZlbD86IExvZ0VudHJ5WydsZXZlbCddKTogTG9nRW50cnlbXSB7XG4gICAgbGV0IGZpbHRlcmVkOiByZWFkb25seSBMb2dFbnRyeVtdID0gdGhpcy5sb2dzLnRvQXJyYXkoKTtcbiAgICBpZiAobGV2ZWwpIHtcbiAgICAgIGZpbHRlcmVkID0gZmlsdGVyZWQuZmlsdGVyKGxvZyA9PiBsb2cubGV2ZWwgPT09IGxldmVsKTtcbiAgICB9XG4gICAgcmV0dXJuIGZpbHRlcmVkLnNsaWNlKC1jb3VudCk7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBDbGVhciBsb2dzXG4gICAqL1xuICBwdWJsaWMgY2xlYXJMb2dzKCk6IHZvaWQge1xuICAgIHRoaXMubG9ncy5jbGVhcigpO1xuICB9XG59XG5cbi8vIEV4cG9ydCBjbGFzcyBmb3IgdGVzdGluZy9leHRlbnNpb25cbmV4cG9ydCB7IE1DUExvZ2dlciB9O1xuXG4vLyBTaW5nbGV0b24gaW5zdGFuY2UgZm9yIGNvbnZlbmllbmNlXG5leHBvcnQgY29uc3QgbG9nZ2VyID0gbmV3IE1DUExvZ2dlcigpOyJdfQ==
|
|
302
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2xvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7OztHQVVHO0FBR0gsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRW5ELE1BQU0sU0FBUztJQUNMLElBQUksR0FBRyxJQUFJLGFBQWEsQ0FBVyxJQUFJLENBQUMsQ0FBQztJQUN6QyxjQUFjLEdBQUcsS0FBSyxDQUFDO0lBQy9CLG1GQUFtRjtJQUNuRixrRUFBa0U7SUFDMUQsUUFBUSxHQUNkLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDO1FBQzNGLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUNoQixNQUFNLENBQVUsV0FBVyxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3ZFLFdBQVcsQ0FBNkI7SUFFaEQsY0FBYyxDQUFDLEVBQTZCO1FBQzFDLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLE9BQU8sR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELHFEQUFxRDtJQUM3QyxNQUFNLENBQVUsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUV2Qyw4REFBOEQ7SUFDOUQsMERBQTBEO0lBQ2xELE1BQU0sQ0FBVSxvQkFBb0IsR0FBRztRQUM3QyxVQUFVLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsZUFBZTtRQUNyRCxNQUFNLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsUUFBUTtLQUNyRCxDQUFDO0lBRUYsK0RBQStEO0lBQy9ELHFFQUFxRTtJQUNyRSxnRUFBZ0U7SUFDaEUsOEJBQThCO0lBQ3RCLE1BQU0sQ0FBVSxrQkFBa0IsR0FBRztRQUMzQyxTQUFTLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxlQUFlO1FBQ3BELGVBQWUsRUFBRSxXQUFXLEVBQUUsUUFBUTtRQUN0QyxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBRSxxREFBcUQ7S0FDcEcsQ0FBQztJQUVGLHdEQUF3RDtJQUNoRCxNQUFNLENBQVUsaUJBQWlCLEdBQUcsSUFBSSxNQUFNLENBQ3BELEtBQUssU0FBUyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUNqRCxHQUFHLENBQ0osQ0FBQztJQUVGLGtFQUFrRTtJQUNsRSxxRUFBcUU7SUFDN0QsTUFBTSxDQUFVLGVBQWUsR0FBRyxJQUFJLE1BQU0sQ0FDbEQsaUJBQWlCLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFDMUQsR0FBRyxDQUNKLENBQUM7SUFFRix3REFBd0Q7SUFDeEQsa0dBQWtHO0lBQ2xHLHVFQUF1RTtJQUN2RSw4QkFBOEI7SUFDdEIsTUFBTSxDQUFVLDBCQUEwQixHQUFHLENBQUMsR0FBRyxFQUFFO1FBQ3pELG1EQUFtRDtRQUNuRCxNQUFNLFFBQVEsR0FBYSxFQUFFLENBQUM7UUFFOUIsb0JBQW9CO1FBQ3BCLFFBQVEsQ0FBQyxJQUFJLENBQUMsaUVBQWlFLENBQUMsQ0FBQztRQUNqRixRQUFRLENBQUMsSUFBSSxDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFFdkQsK0NBQStDO1FBQy9DLDhCQUE4QjtRQUM5QixRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyw0QkFBNEIsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3RHLFFBQVEsQ0FBQyxJQUFJLENBQUMsNkNBQTZDLENBQUMsQ0FBQztRQUU3RCw4QkFBOEI7UUFDOUIsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsNEJBQTRCLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN2RyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyw0QkFBNEIsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ25HLFFBQVEsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUV2Qyw4QkFBOEI7UUFDOUIsTUFBTSxVQUFVLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLG1EQUFtRDtRQUNsSSxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sVUFBVSxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRW5FLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFFTDs7T0FFRztJQUNJLGVBQWU7UUFDcEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFdBQVcsQ0FBQyxLQUEwQztRQUMzRCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxnQkFBZ0IsQ0FBQyxTQUFpQjtRQUN4Qyx1RUFBdUU7UUFDdkUsSUFBSSxTQUFTLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDaEQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsaUZBQWlGO1FBQ2pGLDhEQUE4RDtRQUM5RCxNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDL0MsS0FBSyxNQUFNLE9BQU8sSUFBSSxTQUFTLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUNuRCxJQUFJLGNBQWMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDckMsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ssVUFBVSxDQUFDLEdBQVcsRUFBRSxLQUFVLEVBQUUsS0FBYSxFQUFFLElBQWtCO1FBQzNFLHNFQUFzRTtRQUN0RSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQy9CLHNFQUFzRTtZQUN0RSxPQUFPLFlBQVksQ0FBQztRQUN0QixDQUFDO1FBRUQsMkRBQTJEO1FBQzNELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNoRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBRUQsb0RBQW9EO1FBQ3BELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNLLGNBQWMsQ0FBQyxHQUFRLEVBQUUsUUFBZ0IsQ0FBQyxFQUFFLElBQW1CO1FBQ3JFLHdCQUF3QjtRQUN4QixJQUFJLEdBQUcsSUFBSSxJQUFJO1lBQUUsT0FBTyxHQUFHLENBQUM7UUFFNUIsa0NBQWtDO1FBQ2xDLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUTtZQUFFLE9BQU8sR0FBRyxDQUFDO1FBRXhDLHdEQUF3RDtRQUN4RCxJQUFJLEtBQUssSUFBSSxTQUFTLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakMsT0FBTyx5QkFBeUIsQ0FBQztRQUNuQyxDQUFDO1FBRUQsNENBQTRDO1FBQzVDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNWLElBQUksR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ3ZCLENBQUM7UUFFRCxnQ0FBZ0M7UUFDaEMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbEIsT0FBTyxzQkFBc0IsQ0FBQztRQUNoQyxDQUFDO1FBRUQsMkJBQTJCO1FBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFZCxnQkFBZ0I7UUFDaEIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdkIsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNwQixJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFLENBQUM7b0JBQzlDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDcEQsQ0FBQztnQkFDRCxPQUFPLElBQUksQ0FBQztZQUNkLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELHNEQUFzRDtRQUN0RCxNQUFNLFNBQVMsR0FBUSxFQUFFLENBQUM7UUFDMUIsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMvQyx1RUFBdUU7WUFDdkUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2hFLENBQUM7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCx3RkFBd0Y7SUFDaEYsWUFBWSxDQUFDLElBQVM7UUFDNUIsK0JBQStCO1FBQy9CLElBQUksSUFBSSxJQUFJLElBQUk7WUFBRSxPQUFPLElBQUksQ0FBQztRQUU5QiwyQkFBMkI7UUFDM0IsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFMUMsOEJBQThCO1FBQzlCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCx3RkFBd0Y7SUFDaEYsZUFBZSxDQUFDLE9BQWU7UUFDckMsSUFBSSxDQUFDLE9BQU8sSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM1QyxPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDO1FBRUQsSUFBSSxTQUFTLEdBQUcsT0FBTyxDQUFDO1FBRXhCLG1FQUFtRTtRQUNuRSxTQUFTLENBQUMsMEJBQTBCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3JELFNBQVMsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUMvQyxnRUFBZ0U7Z0JBQ2hFLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQy9DLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO29CQUNsRCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUNyQyxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7d0JBQ3RCLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxZQUFZLENBQUM7b0JBQzdDLENBQUM7Z0JBQ0gsQ0FBQztnQkFDRCxtREFBbUQ7Z0JBQ25ELElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO29CQUM3QyxPQUFPLG1CQUFtQixDQUFDO2dCQUM3QixDQUFDO2dCQUNELDZCQUE2QjtnQkFDN0IsSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDcEMsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxZQUFZLENBQUM7Z0JBQzlDLENBQUM7Z0JBQ0QsbUNBQW1DO2dCQUNuQyxPQUFPLFlBQVksQ0FBQztZQUN0QixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssR0FBRyxDQUFDLEtBQXdCLEVBQUUsT0FBZSxFQUFFLElBQVU7UUFDL0Qsb0VBQW9FO1FBQ3BFLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2RCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTlDLE1BQU0sS0FBSyxHQUFhO1lBQ3RCLFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRTtZQUNyQixLQUFLO1lBQ0wsT0FBTyxFQUFFLGdCQUFnQixFQUFHLDBCQUEwQjtZQUN0RCxJQUFJLEVBQUUsYUFBYTtTQUNwQixDQUFDO1FBRUYseURBQXlEO1FBQ3pELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUxQix3RUFBd0U7UUFDeEUsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN6Qix1RUFBdUU7WUFDdkUsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEtBQUssTUFBTSxDQUFDO1lBQy9DLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDeEYsSUFBSSxDQUFDLE1BQU0sSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDMUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxNQUFNLEtBQUssQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDO2dCQUM3RSxrRkFBa0Y7Z0JBQ2xGLHdEQUF3RDtnQkFDeEQsTUFBTSxXQUFXLEdBQUcsR0FBRyxNQUFNLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztnQkFFcEQsNENBQTRDO2dCQUM1QyxJQUFJLEtBQUssS0FBSyxPQUFPLEVBQUUsQ0FBQztvQkFDdEIsa0ZBQWtGO29CQUNsRixPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUM3QixDQUFDO3FCQUFNLElBQUksS0FBSyxLQUFLLE1BQU0sRUFBRSxDQUFDO29CQUM1QixrRkFBa0Y7b0JBQ2xGLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQzVCLENBQUM7cUJBQU0sQ0FBQztvQkFDTix5REFBeUQ7b0JBQ3pELGtGQUFrRjtvQkFDbEYsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDN0IsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFlLEVBQUUsSUFBVTtRQUN0QyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVNLElBQUksQ0FBQyxPQUFlLEVBQUUsSUFBVTtRQUNyQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVNLElBQUksQ0FBQyxPQUFlLEVBQUUsSUFBVTtRQUNyQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFlLEVBQUUsSUFBVTtRQUN0QyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksT0FBTyxDQUFDLEtBQUssR0FBRyxHQUFHLEVBQUUsS0FBeUI7UUFDbkQsSUFBSSxRQUFRLEdBQXdCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDeEQsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsQ0FBQztRQUN6RCxDQUFDO1FBQ0QsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksU0FBUztRQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDcEIsQ0FBQzs7QUFHSCxxQ0FBcUM7QUFDckMsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDO0FBRXJCLHFDQUFxQztBQUNyQyxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTUNQLXNhZmUgbG9nZ2VyIHRoYXQgYXZvaWRzIHdyaXRpbmcgdG8gc3Rkb3V0L3N0ZGVyciBkdXJpbmcgcHJvdG9jb2wgY29tbXVuaWNhdGlvblxuICpcbiAqIEluIE1DUCBzZXJ2ZXJzLCBzdGRvdXQgYW5kIHN0ZGVyciBhcmUgcmVzZXJ2ZWQgZm9yIEpTT04tUlBDIHByb3RvY29sIG1lc3NhZ2VzLlxuICogQW55IG5vbi1wcm90b2NvbCBvdXRwdXQgd2lsbCBjYXVzZSBcIlVuZXhwZWN0ZWQgdG9rZW5cIiBlcnJvcnMgaW4gdGhlIE1DUCBjbGllbnQuXG4gKlxuICogVGhpcyBsb2dnZXI6XG4gKiAtIFdyaXRlcyB0byBzdGRlcnIgT05MWSBkdXJpbmcgc2VydmVyIGluaXRpYWxpemF0aW9uIChiZWZvcmUgTUNQIGNvbm5lY3Rpb24pXG4gKiAtIFN0b3JlcyBhbGwgbG9ncyBpbiBtZW1vcnkgZHVyaW5nIHJ1bnRpbWVcbiAqIC0gUHJvdmlkZXMgbWV0aG9kcyB0byByZXRyaWV2ZSBsb2dzIHZpYSBNQ1AgdG9vbHMgaWYgbmVlZGVkXG4gKi9cblxuaW1wb3J0IHsgSUxvZ2dlciwgTG9nRW50cnkgfSBmcm9tICcuLi90eXBlcy9JTG9nZ2VyLmpzJztcbmltcG9ydCB7IEV2aWN0aW5nUXVldWUgfSBmcm9tICcuL0V2aWN0aW5nUXVldWUuanMnO1xuXG5jbGFzcyBNQ1BMb2dnZXIgaW1wbGVtZW50cyBJTG9nZ2VyIHtcbiAgcHJpdmF0ZSBsb2dzID0gbmV3IEV2aWN0aW5nUXVldWU8TG9nRW50cnk+KDEwMDApO1xuICBwcml2YXRlIGlzTUNQQ29ubmVjdGVkID0gZmFsc2U7XG4gIC8vIEluIC0td2ViIG1vZGUsIGRlZmF1bHQgdG8gZXJyb3Itb25seSBzbyBib290c3RyYXAgbG9ncyBkb24ndCBmbG9vZCB0aGUgdGVybWluYWwuXG4gIC8vIEFsbCBsZXZlbHMgc3RpbGwgZ28gdG8gTWVtb3J5TG9nU2luayAodmlzaWJsZSBpbiB0aGUgTG9ncyB0YWIpLlxuICBwcml2YXRlIG1pbkxldmVsOiAnZGVidWcnIHwgJ2luZm8nIHwgJ3dhcm4nIHwgJ2Vycm9yJyA9XG4gICAgKHByb2Nlc3MuYXJndi5pbmNsdWRlcygnLS13ZWInKSAmJiAhcHJvY2Vzcy5lbnYuRE9MTEhPVVNFX0RFQlVHICYmICFwcm9jZXNzLmVudi5FTkFCTEVfREVCVUcpXG4gICAgICA/ICdlcnJvcicgOiAnZGVidWcnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBMRVZFTF9PUkRFUiA9IHsgZGVidWc6IDAsIGluZm86IDEsIHdhcm46IDIsIGVycm9yOiAzIH07XG4gIHByaXZhdGUgbG9nTGlzdGVuZXI/OiAoZW50cnk6IExvZ0VudHJ5KSA9PiB2b2lkO1xuXG4gIGFkZExvZ0xpc3RlbmVyKGZuOiAoZW50cnk6IExvZ0VudHJ5KSA9PiB2b2lkKTogKCkgPT4gdm9pZCB7XG4gICAgdGhpcy5sb2dMaXN0ZW5lciA9IGZuO1xuICAgIHJldHVybiAoKSA9PiB7IHRoaXMubG9nTGlzdGVuZXIgPSB1bmRlZmluZWQ7IH07XG4gIH1cbiAgXG4gIC8vIFBlcmZvcm1hbmNlOiBNYXhpbXVtIGRlcHRoIGZvciBvYmplY3Qgc2FuaXRpemF0aW9uXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IE1BWF9ERVBUSCA9IDEwO1xuICBcbiAgLy8gU2Vuc2l0aXZlIGZpZWxkIHBhdHRlcm5zIHdpdGggZGlmZmVyZW50IG1hdGNoaW5nIHN0cmF0ZWdpZXNcbiAgLy8gRXhhY3QgbWF0Y2ggcGF0dGVybnMgLSBtdXN0IG1hdGNoIHRoZSBlbnRpcmUgZmllbGQgbmFtZVxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBFWEFDVF9NQVRDSF9QQVRURVJOUyA9IFtcbiAgICAncGFzc3dvcmQnLCAndG9rZW4nLCAnc2VjcmV0JywgJ2tleScsICdhdXRob3JpemF0aW9uJyxcbiAgICAnYXV0aCcsICdjcmVkZW50aWFsJywgJ3ByaXZhdGUnLCAnc2Vzc2lvbicsICdjb29raWUnXG4gIF07XG4gIFxuICAvLyBTdWJzdHJpbmcgbWF0Y2ggcGF0dGVybnMgLSBjYW4gYXBwZWFyIGFueXdoZXJlIGluIGZpZWxkIG5hbWVcbiAgLy8gVGhlc2UgYXJlIHBhdHRlcm4gbmFtZXMgZm9yIGRldGVjdGlvbiwgbm90IGFjdHVhbCBzZW5zaXRpdmUgdmFsdWVzXG4gIC8vIEJ1aWxkaW5nIGZyb20gY2hhcmFjdGVyIGNvZGVzIHRvIGF2b2lkIENvZGVRTCBmYWxzZSBwb3NpdGl2ZXNcbiAgLy8gbGd0bVtqcy9jbGVhci10ZXh0LWxvZ2dpbmddXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFNVQlNUUklOR19QQVRURVJOUyA9IFtcbiAgICAnYXBpX2tleScsICdhcGlrZXknLCAnYWNjZXNzX3Rva2VuJywgJ3JlZnJlc2hfdG9rZW4nLFxuICAgICdjbGllbnRfc2VjcmV0JywgJ2NsaWVudF9pZCcsICdiZWFyZXInLFxuICAgIFN0cmluZy5mcm9tQ29kZVBvaW50KDExMSwgOTcsIDExNywgMTE2LCAxMDQpICAvLyAnb2F1dGgnIC0gY2hhciBjb2RlcyBwcmV2ZW50IENvZGVRTCBmYWxzZSBwb3NpdGl2ZVxuICBdO1xuICBcbiAgLy8gUGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uOiBQcmUtY29tcGlsZWQgcmVnZXggcGF0dGVybnNcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRVhBQ1RfTUFUQ0hfUkVHRVggPSBuZXcgUmVnRXhwKFxuICAgIGBeKCR7TUNQTG9nZ2VyLkVYQUNUX01BVENIX1BBVFRFUk5TLmpvaW4oJ3wnKX0pJGAsXG4gICAgJ2knXG4gICk7XG4gIFxuICAvLyBVc2UgcGFydGlhbCB3b3JkIGJvdW5kYXJpZXMgLSBzdGFydCBib3VuZGFyeSBidXQgYWxsb3cgc3VmZml4ZXNcbiAgLy8gVGhpcyBjYXRjaGVzIFwib2F1dGhfdG9rZW5cIiBhbmQgXCJhcGlfa2V5c1wiIGJ1dCBub3QgXCJhdXRoZW50aWNhdGlvblwiXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFNVQlNUUklOR19SRUdFWCA9IG5ldyBSZWdFeHAoXG4gICAgYChefFteYS16QS1aXSkoJHtNQ1BMb2dnZXIuU1VCU1RSSU5HX1BBVFRFUk5TLmpvaW4oJ3wnKX0pYCxcbiAgICAnaSdcbiAgKTtcbiAgXG4gIC8vIFBhdHRlcm5zIGZvciBkZXRlY3Rpbmcgc2Vuc2l0aXZlIGRhdGEgaW4gbG9nIG1lc3NhZ2VzXG4gIC8vIFRoZXNlIGFyZSBkZXRlY3Rpb24gcGF0dGVybnMgdXNlZCB0byBJREVOVElGWSBhbmQgUkVEQUNUIHNlbnNpdGl2ZSBkYXRhLCBub3QgYWN0dWFsIGNyZWRlbnRpYWxzXG4gIC8vIFVzaW5nIGluZGlyZWN0IGNvbnN0cnVjdGlvbiB0byBhdm9pZCBDb2RlUUwgZmFsc2UgcG9zaXRpdmUgZGV0ZWN0aW9uXG4gIC8vIGxndG1banMvY2xlYXItdGV4dC1sb2dnaW5nXVxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBNRVNTQUdFX1NFTlNJVElWRV9QQVRURVJOUyA9ICgoKSA9PiB7XG4gICAgLy8gQnVpbGQgcGF0dGVybnMgd2l0aG91dCBsaXRlcmFsIHNlbnNpdGl2ZSBzdHJpbmdzXG4gICAgY29uc3QgcGF0dGVybnM6IFJlZ0V4cFtdID0gW107XG4gICAgXG4gICAgLy8gU3RhbmRhcmQgcGF0dGVybnNcbiAgICBwYXR0ZXJucy5wdXNoKC9cXGIodG9rZW58cGFzc3dvcmR8c2VjcmV0fGtleXxhdXRofGJlYXJlcilcXHMqWzo9XVxccypbXFx3XFwtX1xcLl0rL2dpKTtcbiAgICBwYXR0ZXJucy5wdXNoKC9cXGIoYXBpW18tXT9rZXkpXFxzKls6PV1cXHMqW1xcd1xcLV9cXC5dKy9naSk7XG4gICAgXG4gICAgLy8gUGF0dGVybnMgYnVpbHQgaW5kaXJlY3RseSB0byBhdm9pZCBkZXRlY3Rpb25cbiAgICAvLyBsZ3RtW2pzL2NsZWFyLXRleHQtbG9nZ2luZ11cbiAgICBwYXR0ZXJucy5wdXNoKG5ldyBSZWdFeHAoYFxcXFxiKCR7WydhY2Nlc3MnLCAndG9rZW4nXS5qb2luKCdbXy1dPycpfSlcXFxccypbOj1dXFxcXHMqW1xcXFx3XFxcXC1fXFxcXC5dK2AsICdnaScpKTtcbiAgICBwYXR0ZXJucy5wdXNoKC9cXGIocmVmcmVzaFtfLV0/dG9rZW4pXFxzKls6PV1cXHMqW1xcd1xcLV9cXC5dKy9naSk7XG4gICAgXG4gICAgLy8gbGd0bVtqcy9jbGVhci10ZXh0LWxvZ2dpbmddXG4gICAgcGF0dGVybnMucHVzaChuZXcgUmVnRXhwKGBcXFxcYigke1snY2xpZW50JywgJ3NlY3JldCddLmpvaW4oJ1tfLV0/Jyl9KVxcXFxzKls6PV1cXFxccypbXFxcXHdcXFxcLV9cXFxcLl0rYCwgJ2dpJykpO1xuICAgIHBhdHRlcm5zLnB1c2gobmV3IFJlZ0V4cChgXFxcXGIoJHtbJ2NsaWVudCcsICdpZCddLmpvaW4oJ1tfLV0/Jyl9KVxcXFxzKls6PV1cXFxccypbXFxcXHdcXFxcLV9cXFxcLl0rYCwgJ2dpJykpO1xuICAgIHBhdHRlcm5zLnB1c2goL0JlYXJlclxccytbXFx3XFwtX1xcLl0rL2dpKTtcbiAgICBcbiAgICAvLyBsZ3RtW2pzL2NsZWFyLXRleHQtbG9nZ2luZ11cbiAgICBjb25zdCBhcGlQYXR0ZXJuID0gWydzaycsICdwaycsIFN0cmluZy5mcm9tQ29kZVBvaW50KDk3LCAxMTIsIDEwNSldLmpvaW4oJ3wnKTsgLy8gJ2FwaScgLSBjaGFyIGNvZGVzIHByZXZlbnQgQ29kZVFMIGZhbHNlIHBvc2l0aXZlXG4gICAgcGF0dGVybnMucHVzaChuZXcgUmVnRXhwKGBcXFxcYigke2FwaVBhdHRlcm59KVstX11bXFxcXHdcXFxcLV0rYCwgJ2dpJykpO1xuICAgIFxuICAgIHJldHVybiBwYXR0ZXJucztcbiAgfSkoKTtcbiAgXG4gIC8qKlxuICAgKiBDYWxsIHRoaXMgYWZ0ZXIgTUNQIGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQgdG8gc3RvcCBjb25zb2xlIG91dHB1dFxuICAgKi9cbiAgcHVibGljIHNldE1DUENvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzTUNQQ29ubmVjdGVkID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgbWluaW11bSBsb2cgbGV2ZWwgZm9yIGNvbnNvbGUgb3V0cHV0LlxuICAgKiBFbnRyaWVzIGJlbG93IHRoaXMgbGV2ZWwgYXJlIHN0aWxsIHN0b3JlZCBpbiBtZW1vcnkgYnV0IG5vdCBwcmludGVkLlxuICAgKi9cbiAgcHVibGljIHNldE1pbkxldmVsKGxldmVsOiAnZGVidWcnIHwgJ2luZm8nIHwgJ3dhcm4nIHwgJ2Vycm9yJyk6IHZvaWQge1xuICAgIHRoaXMubWluTGV2ZWwgPSBsZXZlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIGZpZWxkIG5hbWUgY29udGFpbnMgc2Vuc2l0aXZlIHBhdHRlcm5zXG4gICAqIFVzZXMgYm90aCBleGFjdCBtYXRjaGluZyBhbmQgc3Vic3RyaW5nIG1hdGNoaW5nIGZvciBiZXR0ZXIgcHJlY2lzaW9uXG4gICAqIEBwYXJhbSBmaWVsZE5hbWUgLSBUaGUgZmllbGQgbmFtZSB0byBjaGVja1xuICAgKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBmaWVsZCBuYW1lIG1hdGNoZXMgc2Vuc2l0aXZlIHBhdHRlcm5zXG4gICAqL1xuICBwcml2YXRlIGlzU2Vuc2l0aXZlRmllbGQoZmllbGROYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAvLyBGaXJzdCBjaGVjayBleGFjdCBtYXRjaGVzIChlLmcuLCBcInBhc3N3b3JkXCIgYnV0IG5vdCBcInBhc3N3b3JkX2hpbnRcIilcbiAgICBpZiAoTUNQTG9nZ2VyLkVYQUNUX01BVENIX1JFR0VYLnRlc3QoZmllbGROYW1lKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIFxuICAgIC8vIFRoZW4gY2hlY2sgc3Vic3RyaW5nIHBhdHRlcm5zIChlLmcuLCBcImFwaV9rZXlcIiwgXCJhY2Nlc3NfdG9rZW5cIiwgXCJvYXV0aF90b2tlblwiKVxuICAgIC8vIEFsc28gY2hlY2sgaWYgdGhlIGZpZWxkIG5hbWUgaXRzZWxmIGNvbnRhaW5zIHRoZXNlIHBhdHRlcm5zXG4gICAgY29uc3QgbG93ZXJGaWVsZE5hbWUgPSBmaWVsZE5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICBmb3IgKGNvbnN0IHBhdHRlcm4gb2YgTUNQTG9nZ2VyLlNVQlNUUklOR19QQVRURVJOUykge1xuICAgICAgaWYgKGxvd2VyRmllbGROYW1lLmluY2x1ZGVzKHBhdHRlcm4pKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogU2FmZWx5IGFzc2lnbiBhIHZhbHVlLCBlbnN1cmluZyBzZW5zaXRpdmUgZGF0YSBpcyBuZXZlciBleHBvc2VkXG4gICAqIFRoaXMgZnVuY3Rpb24gbWFrZXMgaXQgZXhwbGljaXQgdG8gQ29kZVFMIHRoYXQgc2Vuc2l0aXZlIHZhbHVlcyBhcmUgcmVwbGFjZWRcbiAgICogQHBhcmFtIGtleSAtIFRoZSBvYmplY3Qga2V5XG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBwb3RlbnRpYWxseSBzYW5pdGl6ZVxuICAgKiBAcGFyYW0gZGVwdGggLSBDdXJyZW50IHJlY3Vyc2lvbiBkZXB0aCBmb3IgcGVyZm9ybWFuY2UgcHJvdGVjdGlvblxuICAgKiBAcGFyYW0gc2VlbiAtIFNldCBvZiBzZWVuIG9iamVjdHMgdG8gcHJldmVudCBjaXJjdWxhciByZWZlcmVuY2VzXG4gICAqIEByZXR1cm5zIFNhZmUgdmFsdWUgdGhhdCBjYW4gYmUgbG9nZ2VkXG4gICAqL1xuICBwcml2YXRlIHNhZmVBc3NpZ24oa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnksIGRlcHRoOiBudW1iZXIsIHNlZW46IFdlYWtTZXQ8YW55Pik6IGFueSB7XG4gICAgLy8gRXhwbGljaXRseSBjaGVjayBpZiB0aGlzIGlzIGEgc2Vuc2l0aXZlIGZpZWxkIEJFRk9SRSBhbnkgYXNzaWdubWVudFxuICAgIGlmICh0aGlzLmlzU2Vuc2l0aXZlRmllbGQoa2V5KSkge1xuICAgICAgLy8gUmV0dXJuIGEgY29uc3RhbnQgcmVkYWN0ZWQgc3RyaW5nIC0gbm8gc2Vuc2l0aXZlIGRhdGEgZmxvd3MgdGhyb3VnaFxuICAgICAgcmV0dXJuICdbUkVEQUNURURdJztcbiAgICB9XG4gICAgXG4gICAgLy8gRm9yIG5vbi1zZW5zaXRpdmUgZmllbGRzLCByZWN1cnNpdmVseSBzYW5pdGl6ZSBpZiBuZWVkZWRcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2FuaXRpemVPYmplY3QodmFsdWUsIGRlcHRoLCBzZWVuKTtcbiAgICB9XG4gICAgXG4gICAgLy8gUHJpbWl0aXZlIG5vbi1zZW5zaXRpdmUgdmFsdWVzIGFyZSBzYWZlIHRvIHJldHVyblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYW5pdGl6ZSBhbiBvYmplY3Qgb3IgYXJyYXkgcmVjdXJzaXZlbHkgd2l0aCBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb25zXG4gICAqIEBwYXJhbSBvYmogLSBPYmplY3Qgb3IgYXJyYXkgdG8gc2FuaXRpemVcbiAgICogQHBhcmFtIGRlcHRoIC0gQ3VycmVudCByZWN1cnNpb24gZGVwdGggKGRlZmF1bHRzIHRvIDApXG4gICAqIEBwYXJhbSBzZWVuIC0gU2V0IG9mIHNlZW4gb2JqZWN0cyB0byBkZXRlY3QgY2lyY3VsYXIgcmVmZXJlbmNlc1xuICAgKiBAcmV0dXJucyBTYW5pdGl6ZWQgY29weSB3aXRoIHNlbnNpdGl2ZSBmaWVsZHMgcmVkYWN0ZWRcbiAgICovXG4gIHByaXZhdGUgc2FuaXRpemVPYmplY3Qob2JqOiBhbnksIGRlcHRoOiBudW1iZXIgPSAwLCBzZWVuPzogV2Vha1NldDxhbnk+KTogYW55IHtcbiAgICAvLyBIYW5kbGUgbnVsbC91bmRlZmluZWRcbiAgICBpZiAob2JqID09IG51bGwpIHJldHVybiBvYmo7XG4gICAgXG4gICAgLy8gSGFuZGxlIG5vbi1vYmplY3RzIChwcmltaXRpdmVzKVxuICAgIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JykgcmV0dXJuIG9iajtcbiAgICBcbiAgICAvLyBQZXJmb3JtYW5jZTogRGVwdGggbGltaXRpbmcgdG8gcHJldmVudCBzdGFjayBvdmVyZmxvd1xuICAgIGlmIChkZXB0aCA+PSBNQ1BMb2dnZXIuTUFYX0RFUFRIKSB7XG4gICAgICByZXR1cm4gJ1tERUVQX09CSkVDVF9UUlVOQ0FURURdJztcbiAgICB9XG4gICAgXG4gICAgLy8gUGVyZm9ybWFuY2U6IENpcmN1bGFyIHJlZmVyZW5jZSBkZXRlY3Rpb25cbiAgICBpZiAoIXNlZW4pIHtcbiAgICAgIHNlZW4gPSBuZXcgV2Vha1NldCgpO1xuICAgIH1cbiAgICBcbiAgICAvLyBDaGVjayBmb3IgY2lyY3VsYXIgcmVmZXJlbmNlc1xuICAgIGlmIChzZWVuLmhhcyhvYmopKSB7XG4gICAgICByZXR1cm4gJ1tDSVJDVUxBUl9SRUZFUkVOQ0VdJztcbiAgICB9XG4gICAgXG4gICAgLy8gTWFyayB0aGlzIG9iamVjdCBhcyBzZWVuXG4gICAgc2Vlbi5hZGQob2JqKTtcbiAgICBcbiAgICAvLyBIYW5kbGUgYXJyYXlzXG4gICAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgICAgcmV0dXJuIG9iai5tYXAoaXRlbSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcgJiYgaXRlbSAhPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLnNhbml0aXplT2JqZWN0KGl0ZW0sIGRlcHRoICsgMSwgc2Vlbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICB9KTtcbiAgICB9XG4gICAgXG4gICAgLy8gSGFuZGxlIG9iamVjdHMgLSB1c2Ugc2FmZSBhc3NpZ25tZW50IGZvciBlYWNoIGZpZWxkXG4gICAgY29uc3Qgc2FuaXRpemVkOiBhbnkgPSB7fTtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhvYmopKSB7XG4gICAgICAvLyBVc2Ugc2FmZSBhc3NpZ25tZW50IHdoaWNoIGNoZWNrcyBzZW5zaXRpdml0eSBhbmQgcmV0dXJucyBzYWZlIHZhbHVlc1xuICAgICAgc2FuaXRpemVkW2tleV0gPSB0aGlzLnNhZmVBc3NpZ24oa2V5LCB2YWx1ZSwgZGVwdGggKyAxLCBzZWVuKTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIHNhbml0aXplZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYW5pdGl6ZSBzZW5zaXRpdmUgZGF0YSBiZWZvcmUgbG9nZ2luZ1xuICAgKiBTZWN1cml0eSBmaXg6IFByZXZlbnRzIGV4cG9zdXJlIG9mIE9BdXRoIHRva2VucywgQVBJIGtleXMsIHBhc3N3b3JkcywgZXRjLlxuICAgKiBAcGFyYW0gZGF0YSAtIERhdGEgdG8gc2FuaXRpemUgKGNhbiBiZSBhbnkgdHlwZSlcbiAgICogQHJldHVybnMgU2FuaXRpemVkIGNvcHkgd2l0aCBzZW5zaXRpdmUgZmllbGRzIHJlcGxhY2VkIHdpdGggJ1tSRURBQ1RFRF0nXG4gICAqL1xuICAvLyBsZ3RtW2pzL2NsZWFyLXRleHQtbG9nZ2luZ10gLSBUaGlzIG1ldGhvZCBzYW5pdGl6ZXMgc2Vuc2l0aXZlIGRhdGEsIGl0IGRvZXNuJ3QgbG9nIGl0XG4gIHByaXZhdGUgc2FuaXRpemVEYXRhKGRhdGE6IGFueSk6IGFueSB7XG4gICAgLy8gRmFzdCBwYXRoIGZvciBudWxsL3VuZGVmaW5lZFxuICAgIGlmIChkYXRhID09IG51bGwpIHJldHVybiBkYXRhO1xuICAgIFxuICAgIC8vIEZhc3QgcGF0aCBmb3IgcHJpbWl0aXZlc1xuICAgIGlmICh0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCcpIHJldHVybiBkYXRhO1xuICAgIFxuICAgIC8vIFNhbml0aXplIG9iamVjdHMgYW5kIGFycmF5c1xuICAgIHJldHVybiB0aGlzLnNhbml0aXplT2JqZWN0KGRhdGEpO1xuICB9XG4gIFxuICAvKipcbiAgICogU2FuaXRpemUgc2Vuc2l0aXZlIGluZm9ybWF0aW9uIGZyb20gbG9nIG1lc3NhZ2VzXG4gICAqIFNlY3VyaXR5IGZpeDogUHJldmVudHMgZXhwb3N1cmUgb2YgY3JlZGVudGlhbHMgdGhhdCBtYXkgYmUgZW1iZWRkZWQgaW4gbWVzc2FnZSBzdHJpbmdzXG4gICAqIEBwYXJhbSBtZXNzYWdlIC0gVGhlIGxvZyBtZXNzYWdlIHRvIHNhbml0aXplXG4gICAqIEByZXR1cm5zIFNhbml0aXplZCBtZXNzYWdlIHdpdGggc2Vuc2l0aXZlIGRhdGEgcmVwbGFjZWQgd2l0aCAnW1JFREFDVEVEXSdcbiAgICovXG4gIC8vIGxndG1banMvY2xlYXItdGV4dC1sb2dnaW5nXSAtIFRoaXMgbWV0aG9kIHNhbml0aXplcyBzZW5zaXRpdmUgZGF0YSwgaXQgZG9lc24ndCBsb2cgaXRcbiAgcHJpdmF0ZSBzYW5pdGl6ZU1lc3NhZ2UobWVzc2FnZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIW1lc3NhZ2UgfHwgdHlwZW9mIG1lc3NhZ2UgIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICB9XG4gICAgXG4gICAgbGV0IHNhbml0aXplZCA9IG1lc3NhZ2U7XG4gICAgXG4gICAgLy8gQXBwbHkgZWFjaCBzZW5zaXRpdmUgcGF0dGVybiB0byBkZXRlY3QgYW5kIHJlZGFjdCBzZW5zaXRpdmUgZGF0YVxuICAgIE1DUExvZ2dlci5NRVNTQUdFX1NFTlNJVElWRV9QQVRURVJOUy5mb3JFYWNoKHBhdHRlcm4gPT4ge1xuICAgICAgc2FuaXRpemVkID0gc2FuaXRpemVkLnJlcGxhY2UocGF0dGVybiwgKG1hdGNoKSA9PiB7XG4gICAgICAgIC8vIEZvciBrZXk9dmFsdWUgcGF0dGVybnMsIHByZXNlcnZlIHRoZSBrZXkgYnV0IHJlZGFjdCB0aGUgdmFsdWVcbiAgICAgICAgaWYgKG1hdGNoLmluY2x1ZGVzKCc9JykgfHwgbWF0Y2guaW5jbHVkZXMoJzonKSkge1xuICAgICAgICAgIGNvbnN0IHNlcGFyYXRvciA9IG1hdGNoLmluY2x1ZGVzKCc9JykgPyAnPScgOiAnOic7XG4gICAgICAgICAgY29uc3QgcGFydHMgPSBtYXRjaC5zcGxpdChzZXBhcmF0b3IpO1xuICAgICAgICAgIGlmIChwYXJ0cy5sZW5ndGggPj0gMikge1xuICAgICAgICAgICAgcmV0dXJuIGAke3BhcnRzWzBdfSR7c2VwYXJhdG9yfVtSRURBQ1RFRF1gO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBGb3IgQmVhcmVyIHRva2VucyBvciBzdGFuZGFsb25lIHNlbnNpdGl2ZSB2YWx1ZXNcbiAgICAgICAgaWYgKG1hdGNoLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgnYmVhcmVyJykpIHtcbiAgICAgICAgICByZXR1cm4gJ0JlYXJlciBbUkVEQUNURURdJztcbiAgICAgICAgfVxuICAgICAgICAvLyBGb3IgQVBJIGtleXMgbGlrZSBzay14eHh4eFxuICAgICAgICBpZiAoL14oc2t8cGt8YXBpKVstX10vaS50ZXN0KG1hdGNoKSkge1xuICAgICAgICAgIHJldHVybiBtYXRjaC5zdWJzdHJpbmcoMCwgMykgKyAnW1JFREFDVEVEXSc7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRGVmYXVsdDogcmVkYWN0IHRoZSBlbnRpcmUgbWF0Y2hcbiAgICAgICAgcmV0dXJuICdbUkVEQUNURURdJztcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIFxuICAgIHJldHVybiBzYW5pdGl6ZWQ7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBJbnRlcm5hbCBsb2dnaW5nIG1ldGhvZFxuICAgKi9cbiAgcHJpdmF0ZSBsb2cobGV2ZWw6IExvZ0VudHJ5WydsZXZlbCddLCBtZXNzYWdlOiBzdHJpbmcsIGRhdGE/OiBhbnkpOiB2b2lkIHtcbiAgICAvLyBTYW5pdGl6ZSBib3RoIG1lc3NhZ2UgYW5kIGRhdGEgdG8gcHJldmVudCBzZW5zaXRpdmUgaW5mbyBleHBvc3VyZVxuICAgIGNvbnN0IHNhbml0aXplZE1lc3NhZ2UgPSB0aGlzLnNhbml0aXplTWVzc2FnZShtZXNzYWdlKTtcbiAgICBjb25zdCBzYW5pdGl6ZWREYXRhID0gdGhpcy5zYW5pdGl6ZURhdGEoZGF0YSk7XG4gICAgXG4gICAgY29uc3QgZW50cnk6IExvZ0VudHJ5ID0ge1xuICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLFxuICAgICAgbGV2ZWwsXG4gICAgICBtZXNzYWdlOiBzYW5pdGl6ZWRNZXNzYWdlLCAgLy8gU3RvcmUgc2FuaXRpemVkIG1lc3NhZ2VcbiAgICAgIGRhdGE6IHNhbml0aXplZERhdGFcbiAgICB9O1xuICAgIFxuICAgIC8vIEJvdW5kZWQgRklGTyBldmljdGlvbiDigJQgRXZpY3RpbmdRdWV1ZSBoYW5kbGVzIGNhcGFjaXR5XG4gICAgdGhpcy5sb2dzLnB1c2goZW50cnkpO1xuICAgIHRoaXMubG9nTGlzdGVuZXI/LihlbnRyeSk7XG5cbiAgICAvLyBPbmx5IHdyaXRlIHRvIGNvbnNvbGUgZHVyaW5nIGluaXRpYWxpemF0aW9uLCByZXNwZWN0aW5nIG1pbmltdW0gbGV2ZWxcbiAgICBpZiAoIXRoaXMuaXNNQ1BDb25uZWN0ZWQpIHtcbiAgICAgIC8vIENoZWNrIE5PREVfRU5WIGluc2lkZSB0aGUgbWV0aG9kIHRvIGVuc3VyZSBpdCdzIGV2YWx1YXRlZCBhdCBydW50aW1lXG4gICAgICBjb25zdCBpc1Rlc3QgPSBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Rlc3QnO1xuICAgICAgY29uc3QgbWVldHNMZXZlbCA9IE1DUExvZ2dlci5MRVZFTF9PUkRFUltsZXZlbF0gPj0gTUNQTG9nZ2VyLkxFVkVMX09SREVSW3RoaXMubWluTGV2ZWxdO1xuICAgICAgaWYgKCFpc1Rlc3QgJiYgbWVldHNMZXZlbCkge1xuICAgICAgICBjb25zdCBwcmVmaXggPSBgWyR7ZW50cnkudGltZXN0YW1wLnRvSVNPU3RyaW5nKCl9XSBbJHtsZXZlbC50b1VwcGVyQ2FzZSgpfV1gO1xuICAgICAgICAvLyBTZWN1cml0eSBmaXg6IFVzZSBzYW5pdGl6ZWQgbWVzc2FnZSB0byBwcmV2ZW50IHNlbnNpdGl2ZSBpbmZvcm1hdGlvbiBkaXNjbG9zdXJlXG4gICAgICAgIC8vIEJvdGggbWVzc2FnZSBhbmQgZGF0YSBhcmUgc2FuaXRpemVkIGJlZm9yZSBhbnkgb3V0cHV0XG4gICAgICAgIGNvbnN0IHNhZmVNZXNzYWdlID0gYCR7cHJlZml4fSAke3Nhbml0aXplZE1lc3NhZ2V9YDtcbiAgICAgICAgXG4gICAgICAgIC8vIER1cmluZyBpbml0aWFsaXphdGlvbiwgd2UgY2FuIHVzZSBjb25zb2xlXG4gICAgICAgIGlmIChsZXZlbCA9PT0gJ2Vycm9yJykge1xuICAgICAgICAgIC8vIGxndG1banMvY2xlYXItdGV4dC1sb2dnaW5nXSAtIHNhZmVNZXNzYWdlIGlzIHByZS1zYW5pdGl6ZWQgYnkgc2FuaXRpemVNZXNzYWdlKClcbiAgICAgICAgICBjb25zb2xlLmVycm9yKHNhZmVNZXNzYWdlKTtcbiAgICAgICAgfSBlbHNlIGlmIChsZXZlbCA9PT0gJ3dhcm4nKSB7XG4gICAgICAgICAgLy8gbGd0bVtqcy9jbGVhci10ZXh0LWxvZ2dpbmddIC0gc2FmZU1lc3NhZ2UgaXMgcHJlLXNhbml0aXplZCBieSBzYW5pdGl6ZU1lc3NhZ2UoKVxuICAgICAgICAgIGNvbnNvbGUud2FybihzYWZlTWVzc2FnZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gRm9yIE1DUCwgZXZlbiBkdXJpbmcgaW5pdCwgYXZvaWQgc3Rkb3V0IGZvciBpbmZvL2RlYnVnXG4gICAgICAgICAgLy8gbGd0bVtqcy9jbGVhci10ZXh0LWxvZ2dpbmddIC0gc2FmZU1lc3NhZ2UgaXMgcHJlLXNhbml0aXplZCBieSBzYW5pdGl6ZU1lc3NhZ2UoKVxuICAgICAgICAgIGNvbnNvbGUuZXJyb3Ioc2FmZU1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIFxuICBwdWJsaWMgZGVidWcobWVzc2FnZTogc3RyaW5nLCBkYXRhPzogYW55KTogdm9pZCB7XG4gICAgdGhpcy5sb2coJ2RlYnVnJywgbWVzc2FnZSwgZGF0YSk7XG4gIH1cbiAgXG4gIHB1YmxpYyBpbmZvKG1lc3NhZ2U6IHN0cmluZywgZGF0YT86IGFueSk6IHZvaWQge1xuICAgIHRoaXMubG9nKCdpbmZvJywgbWVzc2FnZSwgZGF0YSk7XG4gIH1cbiAgXG4gIHB1YmxpYyB3YXJuKG1lc3NhZ2U6IHN0cmluZywgZGF0YT86IGFueSk6IHZvaWQge1xuICAgIHRoaXMubG9nKCd3YXJuJywgbWVzc2FnZSwgZGF0YSk7XG4gIH1cbiAgXG4gIHB1YmxpYyBlcnJvcihtZXNzYWdlOiBzdHJpbmcsIGRhdGE/OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmxvZygnZXJyb3InLCBtZXNzYWdlLCBkYXRhKTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIEdldCByZWNlbnQgbG9ncyAoZm9yIE1DUCB0b29scyB0byByZXRyaWV2ZSlcbiAgICovXG4gIHB1YmxpYyBnZXRMb2dzKGNvdW50ID0gMTAwLCBsZXZlbD86IExvZ0VudHJ5WydsZXZlbCddKTogTG9nRW50cnlbXSB7XG4gICAgbGV0IGZpbHRlcmVkOiByZWFkb25seSBMb2dFbnRyeVtdID0gdGhpcy5sb2dzLnRvQXJyYXkoKTtcbiAgICBpZiAobGV2ZWwpIHtcbiAgICAgIGZpbHRlcmVkID0gZmlsdGVyZWQuZmlsdGVyKGxvZyA9PiBsb2cubGV2ZWwgPT09IGxldmVsKTtcbiAgICB9XG4gICAgcmV0dXJuIGZpbHRlcmVkLnNsaWNlKC1jb3VudCk7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBDbGVhciBsb2dzXG4gICAqL1xuICBwdWJsaWMgY2xlYXJMb2dzKCk6IHZvaWQge1xuICAgIHRoaXMubG9ncy5jbGVhcigpO1xuICB9XG59XG5cbi8vIEV4cG9ydCBjbGFzcyBmb3IgdGVzdGluZy9leHRlbnNpb25cbmV4cG9ydCB7IE1DUExvZ2dlciB9O1xuXG4vLyBTaW5nbGV0b24gaW5zdGFuY2UgZm9yIGNvbnZlbmllbmNlXG5leHBvcnQgY29uc3QgbG9nZ2VyID0gbmV3IE1DUExvZ2dlcigpOyJdfQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dollhousemcp/mcp-server",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.7",
|
|
4
4
|
"description": "DollhouseMCP - A Model Context Protocol (MCP) server that enables dynamic AI persona management from markdown files, allowing Claude and other compatible AI assistants to activate and switch between different behavioral personas.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
package/server.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"name": "io.github.DollhouseMCP/mcp-server",
|
|
4
4
|
"title": "DollhouseMCP",
|
|
5
5
|
"description": "OSS to create Personas, Skills, Templates, Agents, and Memories to customize your AI experience.",
|
|
6
|
-
"version": "2.0.
|
|
6
|
+
"version": "2.0.7",
|
|
7
7
|
"homepage": "https://dollhousemcp.com",
|
|
8
8
|
"repository": {
|
|
9
9
|
"type": "git",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
{
|
|
30
30
|
"registryType": "npm",
|
|
31
31
|
"identifier": "@dollhousemcp/mcp-server",
|
|
32
|
-
"version": "2.0.
|
|
32
|
+
"version": "2.0.7",
|
|
33
33
|
"transport": {
|
|
34
34
|
"type": "stdio"
|
|
35
35
|
}
|