@nostrify/nostrify 0.46.4
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/.turbo/turbo-build.log +5 -0
- package/BunkerURI.test.ts +28 -0
- package/BunkerURI.ts +58 -0
- package/CHANGELOG.md +562 -0
- package/LICENSE +21 -0
- package/NBrowserSigner.test.ts +170 -0
- package/NBrowserSigner.ts +100 -0
- package/NCache.bench.ts +81 -0
- package/NCache.test.ts +22 -0
- package/NCache.ts +73 -0
- package/NConnectSigner.test.ts +102 -0
- package/NConnectSigner.ts +189 -0
- package/NIP05.test.ts +67 -0
- package/NIP05.ts +52 -0
- package/NIP50.test.ts +58 -0
- package/NIP50.ts +24 -0
- package/NIP98.test.ts +181 -0
- package/NIP98.ts +97 -0
- package/NKinds.test.ts +42 -0
- package/NKinds.ts +26 -0
- package/NPool.test.ts +117 -0
- package/NPool.ts +224 -0
- package/NRelay1.test.ts +174 -0
- package/NRelay1.ts +440 -0
- package/NSchema.test.ts +94 -0
- package/NSchema.ts +255 -0
- package/NSecSigner.bench.ts +55 -0
- package/NSecSigner.test.ts +26 -0
- package/NSecSigner.ts +60 -0
- package/NSet.bench.ts +10 -0
- package/NSet.test.ts +92 -0
- package/NSet.ts +203 -0
- package/README.md +314 -0
- package/RelayError.test.ts +23 -0
- package/RelayError.ts +22 -0
- package/dist/BunkerURI.d.ts +23 -0
- package/dist/BunkerURI.d.ts.map +1 -0
- package/dist/BunkerURI.js +52 -0
- package/dist/BunkerURI.js.map +1 -0
- package/dist/NBrowserSigner.d.ts +27 -0
- package/dist/NBrowserSigner.d.ts.map +1 -0
- package/dist/NBrowserSigner.js +96 -0
- package/dist/NBrowserSigner.js.map +1 -0
- package/dist/NCache.d.ts +34 -0
- package/dist/NCache.d.ts.map +1 -0
- package/dist/NCache.js +63 -0
- package/dist/NCache.js.map +1 -0
- package/dist/NConnectSigner.d.ts +50 -0
- package/dist/NConnectSigner.d.ts.map +1 -0
- package/dist/NConnectSigner.js +130 -0
- package/dist/NConnectSigner.js.map +1 -0
- package/dist/NIP05.d.ts +15 -0
- package/dist/NIP05.d.ts.map +1 -0
- package/dist/NIP05.js +40 -0
- package/dist/NIP05.js.map +1 -0
- package/dist/NIP50.d.ts +10 -0
- package/dist/NIP50.d.ts.map +1 -0
- package/dist/NIP50.js +26 -0
- package/dist/NIP50.js.map +1 -0
- package/dist/NIP98.d.ts +15 -0
- package/dist/NIP98.d.ts.map +1 -0
- package/dist/NIP98.js +71 -0
- package/dist/NIP98.js.map +1 -0
- package/dist/NKinds.d.ts +13 -0
- package/dist/NKinds.d.ts.map +1 -0
- package/dist/NKinds.js +27 -0
- package/dist/NKinds.js.map +1 -0
- package/dist/NPool.d.ts +91 -0
- package/dist/NPool.d.ts.map +1 -0
- package/dist/NPool.js +185 -0
- package/dist/NPool.js.map +1 -0
- package/dist/NRelay1.d.ts +80 -0
- package/dist/NRelay1.d.ts.map +1 -0
- package/dist/NRelay1.js +336 -0
- package/dist/NRelay1.js.map +1 -0
- package/dist/NSchema.d.ts +73 -0
- package/dist/NSchema.d.ts.map +1 -0
- package/dist/NSchema.js +215 -0
- package/dist/NSchema.js.map +1 -0
- package/dist/NSecSigner.d.ts +29 -0
- package/dist/NSecSigner.d.ts.map +1 -0
- package/dist/NSecSigner.js +52 -0
- package/dist/NSecSigner.js.map +1 -0
- package/dist/NSet.d.ts +76 -0
- package/dist/NSet.d.ts.map +1 -0
- package/dist/NSet.js +174 -0
- package/dist/NSet.js.map +1 -0
- package/dist/RelayError.d.ts +10 -0
- package/dist/RelayError.d.ts.map +1 -0
- package/dist/RelayError.js +23 -0
- package/dist/RelayError.js.map +1 -0
- package/dist/ln/LNURL.d.ts +55 -0
- package/dist/ln/LNURL.d.ts.map +1 -0
- package/dist/ln/LNURL.js +105 -0
- package/dist/ln/LNURL.js.map +1 -0
- package/dist/ln/mod.d.ts +4 -0
- package/dist/ln/mod.d.ts.map +1 -0
- package/dist/ln/mod.js +6 -0
- package/dist/ln/mod.js.map +1 -0
- package/dist/ln/types/LNURLCallback.d.ts +8 -0
- package/dist/ln/types/LNURLCallback.d.ts.map +1 -0
- package/dist/ln/types/LNURLCallback.js +3 -0
- package/dist/ln/types/LNURLCallback.js.map +1 -0
- package/dist/ln/types/LNURLDetails.d.ts +20 -0
- package/dist/ln/types/LNURLDetails.d.ts.map +1 -0
- package/dist/ln/types/LNURLDetails.js +3 -0
- package/dist/ln/types/LNURLDetails.js.map +1 -0
- package/dist/mod.d.ts +16 -0
- package/dist/mod.d.ts.map +1 -0
- package/dist/mod.js +32 -0
- package/dist/mod.js.map +1 -0
- package/dist/test/ErrorRelay.d.ts +21 -0
- package/dist/test/ErrorRelay.d.ts.map +1 -0
- package/dist/test/ErrorRelay.js +26 -0
- package/dist/test/ErrorRelay.js.map +1 -0
- package/dist/test/MockRelay.d.ts +20 -0
- package/dist/test/MockRelay.d.ts.map +1 -0
- package/dist/test/MockRelay.js +66 -0
- package/dist/test/MockRelay.js.map +1 -0
- package/dist/test/TestRelayServer.d.ts +25 -0
- package/dist/test/TestRelayServer.d.ts.map +1 -0
- package/dist/test/TestRelayServer.js +134 -0
- package/dist/test/TestRelayServer.js.map +1 -0
- package/dist/test/mod.d.ts +8 -0
- package/dist/test/mod.d.ts.map +1 -0
- package/dist/test/mod.js +28 -0
- package/dist/test/mod.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/uploaders/BlossomUploader.d.ts +26 -0
- package/dist/uploaders/BlossomUploader.d.ts.map +1 -0
- package/dist/uploaders/BlossomUploader.js +71 -0
- package/dist/uploaders/BlossomUploader.js.map +1 -0
- package/dist/uploaders/NostrBuildUploader.d.ts +24 -0
- package/dist/uploaders/NostrBuildUploader.d.ts.map +1 -0
- package/dist/uploaders/NostrBuildUploader.js +67 -0
- package/dist/uploaders/NostrBuildUploader.js.map +1 -0
- package/dist/uploaders/mod.d.ts +3 -0
- package/dist/uploaders/mod.d.ts.map +1 -0
- package/dist/uploaders/mod.js +8 -0
- package/dist/uploaders/mod.js.map +1 -0
- package/dist/utils/CircularSet.d.ts +13 -0
- package/dist/utils/CircularSet.d.ts.map +1 -0
- package/dist/utils/CircularSet.js +35 -0
- package/dist/utils/CircularSet.js.map +1 -0
- package/dist/utils/Machina.d.ts +36 -0
- package/dist/utils/Machina.d.ts.map +1 -0
- package/dist/utils/Machina.js +66 -0
- package/dist/utils/Machina.js.map +1 -0
- package/dist/utils/N64.d.ts +9 -0
- package/dist/utils/N64.d.ts.map +1 -0
- package/dist/utils/N64.js +23 -0
- package/dist/utils/N64.js.map +1 -0
- package/dist/utils/mod.d.ts +3 -0
- package/dist/utils/mod.d.ts.map +1 -0
- package/dist/utils/mod.js +8 -0
- package/dist/utils/mod.js.map +1 -0
- package/ln/LNURL.test.ts +87 -0
- package/ln/LNURL.ts +146 -0
- package/ln/mod.ts +4 -0
- package/ln/types/LNURLCallback.ts +7 -0
- package/ln/types/LNURLDetails.ts +19 -0
- package/mod.ts +16 -0
- package/package.json +23 -0
- package/test/ErrorRelay.test.ts +19 -0
- package/test/ErrorRelay.ts +40 -0
- package/test/MockRelay.test.ts +20 -0
- package/test/MockRelay.ts +92 -0
- package/test/TestRelayServer.ts +156 -0
- package/test/mod.ts +28 -0
- package/tsconfig.json +14 -0
- package/uploaders/BlossomUploader.test.ts +26 -0
- package/uploaders/BlossomUploader.ts +98 -0
- package/uploaders/NostrBuildUploader.test.ts +22 -0
- package/uploaders/NostrBuildUploader.ts +89 -0
- package/uploaders/mod.ts +2 -0
- package/utils/CircularSet.test.ts +15 -0
- package/utils/CircularSet.ts +34 -0
- package/utils/Machina.test.ts +91 -0
- package/utils/Machina.ts +66 -0
- package/utils/N64.test.ts +27 -0
- package/utils/N64.ts +23 -0
- package/utils/mod.ts +2 -0
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TestRelayServer = void 0;
|
|
4
|
+
const mod_1 = require("./mod");
|
|
5
|
+
const NSchema_1 = require("../NSchema");
|
|
6
|
+
const ws_1 = require("ws");
|
|
7
|
+
const http_1 = require("http");
|
|
8
|
+
class TestRelayServer {
|
|
9
|
+
opts;
|
|
10
|
+
port = 0;
|
|
11
|
+
httpServer;
|
|
12
|
+
wsServer;
|
|
13
|
+
connections = new Set();
|
|
14
|
+
controllers = new Map();
|
|
15
|
+
store = new mod_1.MockRelay();
|
|
16
|
+
constructor(opts) {
|
|
17
|
+
this.opts = opts;
|
|
18
|
+
this.httpServer = (0, http_1.createServer)();
|
|
19
|
+
this.wsServer = new ws_1.WebSocketServer({ server: this.httpServer });
|
|
20
|
+
this.setupWebSocketServer();
|
|
21
|
+
this.httpServer.listen(0, '127.0.0.1', () => {
|
|
22
|
+
this.port = this.httpServer.address().port;
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
setupWebSocketServer() {
|
|
26
|
+
this.wsServer.on('connection', (socket) => {
|
|
27
|
+
this.connections.add(socket);
|
|
28
|
+
socket.on('close', () => {
|
|
29
|
+
this.connections.delete(socket);
|
|
30
|
+
// Clean up any subscriptions for this socket
|
|
31
|
+
for (const [subId, controller] of this.controllers.entries()) {
|
|
32
|
+
controller.abort();
|
|
33
|
+
this.controllers.delete(subId);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
socket.on('message', (data) => {
|
|
37
|
+
try {
|
|
38
|
+
const result = NSchema_1.NSchema.json().pipe(NSchema_1.NSchema.clientMsg()).safeParse(data.toString());
|
|
39
|
+
if (result.success) {
|
|
40
|
+
const handleMessage = this.opts?.handleMessage ??
|
|
41
|
+
this.handleMessage.bind(this);
|
|
42
|
+
handleMessage(socket, result.data);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
// Handle parsing errors silently
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
socket.on('error', (error) => {
|
|
50
|
+
console.error('WebSocket error:', error);
|
|
51
|
+
this.connections.delete(socket);
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
send(socket, msg) {
|
|
56
|
+
if (socket.readyState === ws_1.WebSocket.OPEN) {
|
|
57
|
+
socket.send(JSON.stringify(msg));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
async handleMessage(socket, msg) {
|
|
61
|
+
switch (msg[0]) {
|
|
62
|
+
case 'REQ': {
|
|
63
|
+
const [_, subId, ...filters] = msg;
|
|
64
|
+
const controller = new AbortController();
|
|
65
|
+
this.controllers.set(subId, controller);
|
|
66
|
+
try {
|
|
67
|
+
for await (const msg of this.store.req(filters, { signal: controller.signal })) {
|
|
68
|
+
msg[1] = subId;
|
|
69
|
+
this.send(socket, msg);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
// do nothing
|
|
74
|
+
}
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
case 'CLOSE': {
|
|
78
|
+
const subId = msg[1];
|
|
79
|
+
this.controllers.get(subId)?.abort();
|
|
80
|
+
this.controllers.delete(subId);
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
case 'EVENT': {
|
|
84
|
+
const [_, event] = msg;
|
|
85
|
+
await this.store.event(event);
|
|
86
|
+
this.send(socket, ['OK', event.id, true, '']);
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
get url() {
|
|
92
|
+
const addr = this.httpServer.address();
|
|
93
|
+
return `ws://${addr.address}:${addr.port}`;
|
|
94
|
+
}
|
|
95
|
+
async close() {
|
|
96
|
+
return new Promise((resolve) => {
|
|
97
|
+
// Close all WebSocket connections
|
|
98
|
+
this.connections.forEach((conn) => {
|
|
99
|
+
if (conn.readyState === ws_1.WebSocket.OPEN) {
|
|
100
|
+
conn.close();
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
this.connections.clear();
|
|
104
|
+
// Abort all controllers
|
|
105
|
+
this.controllers.forEach((controller) => controller.abort());
|
|
106
|
+
this.controllers.clear();
|
|
107
|
+
// Close WebSocket server
|
|
108
|
+
this.wsServer.close(() => {
|
|
109
|
+
// Close HTTP server
|
|
110
|
+
this.httpServer.close(() => {
|
|
111
|
+
resolve();
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
open() {
|
|
117
|
+
if (!this.httpServer.listening) {
|
|
118
|
+
this.httpServer = (0, http_1.createServer)();
|
|
119
|
+
this.wsServer = new ws_1.WebSocketServer({ server: this.httpServer });
|
|
120
|
+
this.setupWebSocketServer();
|
|
121
|
+
this.httpServer.listen(0, '127.0.0.1', () => {
|
|
122
|
+
this.port = this.httpServer.address().port;
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
event(event) {
|
|
127
|
+
return this.store.event(event);
|
|
128
|
+
}
|
|
129
|
+
async [Symbol.asyncDispose]() {
|
|
130
|
+
await this.close();
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
exports.TestRelayServer = TestRelayServer;
|
|
134
|
+
//# sourceMappingURL=TestRelayServer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TestRelayServer.js","sourceRoot":"","sources":["../../test/TestRelayServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { NostrEvent } from '@nostrify/types';
|
|
2
|
+
export { ErrorRelay } from './ErrorRelay';
|
|
3
|
+
export { MockRelay } from './MockRelay';
|
|
4
|
+
/** Import a JSONL fixture by name in tests. */
|
|
5
|
+
export declare function jsonlEvents(path: string): Promise<NostrEvent[]>;
|
|
6
|
+
/** Generate an event for use in tests. */
|
|
7
|
+
export declare function genEvent(t?: Partial<NostrEvent>, sk?: Uint8Array): NostrEvent;
|
|
8
|
+
//# sourceMappingURL=mod.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../test/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAI7C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,+CAA+C;AAC/C,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAGrE;AAED,0CAA0C;AAC1C,wBAAgB,QAAQ,CACtB,CAAC,GAAE,OAAO,CAAC,UAAU,CAAM,EAC3B,EAAE,GAAE,UAAgC,GACnC,UAAU,CAUZ"}
|
package/dist/test/mod.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MockRelay = exports.ErrorRelay = void 0;
|
|
4
|
+
exports.jsonlEvents = jsonlEvents;
|
|
5
|
+
exports.genEvent = genEvent;
|
|
6
|
+
const nostr_tools_1 = require("nostr-tools");
|
|
7
|
+
const promises_1 = require("node:fs/promises");
|
|
8
|
+
var ErrorRelay_1 = require("./ErrorRelay");
|
|
9
|
+
Object.defineProperty(exports, "ErrorRelay", { enumerable: true, get: function () { return ErrorRelay_1.ErrorRelay; } });
|
|
10
|
+
var MockRelay_1 = require("./MockRelay");
|
|
11
|
+
Object.defineProperty(exports, "MockRelay", { enumerable: true, get: function () { return MockRelay_1.MockRelay; } });
|
|
12
|
+
/** Import a JSONL fixture by name in tests. */
|
|
13
|
+
async function jsonlEvents(path) {
|
|
14
|
+
const data = await (0, promises_1.readFile)(path, { encoding: 'utf8' });
|
|
15
|
+
return data.split('\n').map((line) => JSON.parse(line));
|
|
16
|
+
}
|
|
17
|
+
/** Generate an event for use in tests. */
|
|
18
|
+
function genEvent(t = {}, sk = (0, nostr_tools_1.generateSecretKey)()) {
|
|
19
|
+
const { id, kind, pubkey, tags, content, created_at, sig } = (0, nostr_tools_1.finalizeEvent)({
|
|
20
|
+
kind: 255,
|
|
21
|
+
created_at: 0,
|
|
22
|
+
content: '',
|
|
23
|
+
tags: [],
|
|
24
|
+
...t,
|
|
25
|
+
}, sk);
|
|
26
|
+
return { id, kind, pubkey, tags, content, created_at, sig };
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=mod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../../test/mod.ts"],"names":[],"mappings":";;;AAQA,kCAGC;AAGD,4BAaC;AA1BD,6CAA+D;AAC/D,+CAA4C;AAE5C,2CAA0C;AAAjC,wGAAA,UAAU,OAAA;AACnB,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAElB,+CAA+C;AACxC,KAAK,UAAU,WAAW,CAAC,IAAY;IAC5C,MAAM,IAAI,GAAG,MAAM,IAAA,mBAAQ,EAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IACxD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,0CAA0C;AAC1C,SAAgB,QAAQ,CACtB,IAAyB,EAAE,EAC3B,KAAiB,IAAA,+BAAiB,GAAE;IAEpC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,IAAA,2BAAa,EAAC;QACzE,IAAI,EAAE,GAAG;QACT,UAAU,EAAE,CAAC;QACb,OAAO,EAAE,EAAE;QACX,IAAI,EAAE,EAAE;QACR,GAAG,CAAC;KACL,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;AAC9D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"fileNames":["../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.array.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.collection.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.collection.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.object.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.array.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.collection.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.decorators.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.iterator.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.float16.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../BunkerURI.ts","../../types/NostrEvent.ts","../../types/NostrFilter.ts","../../types/NostrClientMsg.ts","../../types/NostrConnect.ts","../../types/NostrJson.ts","../../types/NostrMetadata.ts","../../types/NostrRelayInfo.ts","../../types/NostrRelayMsg.ts","../../types/NostrSigner.ts","../../types/NPolicy.ts","../../types/NProfilePointer.ts","../../types/NStore.ts","../../types/NRelay.ts","../../types/NUploader.ts","../../types/mod.ts","../NBrowserSigner.ts","../../../node_modules/.pnpm/lru-cache@10.4.3/node_modules/lru-cache/dist/commonjs/index.d.ts","../../../node_modules/.pnpm/nostr-tools@2.15.2_typescript@5.8.3/node_modules/nostr-tools/lib/types/core.d.ts","../../../node_modules/.pnpm/nostr-tools@2.15.2_typescript@5.8.3/node_modules/nostr-tools/lib/types/pure.d.ts","../../../node_modules/.pnpm/nostr-tools@2.15.2_typescript@5.8.3/node_modules/nostr-tools/lib/types/filter.d.ts","../../../node_modules/.pnpm/nostr-tools@2.15.2_typescript@5.8.3/node_modules/nostr-tools/lib/types/abstract-relay.d.ts","../../../node_modules/.pnpm/nostr-tools@2.15.2_typescript@5.8.3/node_modules/nostr-tools/lib/types/relay.d.ts","../../../node_modules/.pnpm/nostr-tools@2.15.2_typescript@5.8.3/node_modules/nostr-tools/lib/types/abstract-pool.d.ts","../../../node_modules/.pnpm/nostr-tools@2.15.2_typescript@5.8.3/node_modules/nostr-tools/lib/types/pool.d.ts","../../../node_modules/.pnpm/nostr-tools@2.15.2_typescript@5.8.3/node_modules/nostr-tools/lib/types/nip19.d.ts","../../../node_modules/.pnpm/nostr-tools@2.15.2_typescript@5.8.3/node_modules/nostr-tools/lib/types/references.d.ts","../../../node_modules/.pnpm/nostr-tools@2.15.2_typescript@5.8.3/node_modules/nostr-tools/lib/types/nip04.d.ts","../../../node_modules/.pnpm/nostr-tools@2.15.2_typescript@5.8.3/node_modules/nostr-tools/lib/types/nip05.d.ts","../../../node_modules/.pnpm/nostr-tools@2.15.2_typescript@5.8.3/node_modules/nostr-tools/lib/types/nip10.d.ts","../../../node_modules/.pnpm/nostr-tools@2.15.2_typescript@5.8.3/node_modules/nostr-tools/lib/types/nip11.d.ts","../../../node_modules/.pnpm/nostr-tools@2.15.2_typescript@5.8.3/node_modules/nostr-tools/lib/types/nip13.d.ts","../../../node_modules/.pnpm/nostr-tools@2.15.2_typescript@5.8.3/node_modules/nostr-tools/lib/types/nip59.d.ts","../../../node_modules/.pnpm/nostr-tools@2.15.2_typescript@5.8.3/node_modules/nostr-tools/lib/types/nip17.d.ts","../../../node_modules/.pnpm/nostr-tools@2.15.2_typescript@5.8.3/node_modules/nostr-tools/lib/types/nip18.d.ts","../../../node_modules/.pnpm/nostr-tools@2.15.2_typescript@5.8.3/node_modules/nostr-tools/lib/types/nip21.d.ts","../../../node_modules/.pnpm/nostr-tools@2.15.2_typescript@5.8.3/node_modules/nostr-tools/lib/types/nip25.d.ts","../../../node_modules/.pnpm/nostr-tools@2.15.2_typescript@5.8.3/node_modules/nostr-tools/lib/types/nip27.d.ts","../../../node_modules/.pnpm/nostr-tools@2.15.2_typescript@5.8.3/node_modules/nostr-tools/lib/types/nip28.d.ts","../../../node_modules/.pnpm/nostr-tools@2.15.2_typescript@5.8.3/node_modules/nostr-tools/lib/types/nip30.d.ts","../../../node_modules/.pnpm/nostr-tools@2.15.2_typescript@5.8.3/node_modules/nostr-tools/lib/types/nip39.d.ts","../../../node_modules/.pnpm/nostr-tools@2.15.2_typescript@5.8.3/node_modules/nostr-tools/lib/types/nip42.d.ts","../../../node_modules/.pnpm/nostr-tools@2.15.2_typescript@5.8.3/node_modules/nostr-tools/lib/types/nip44.d.ts","../../../node_modules/.pnpm/nostr-tools@2.15.2_typescript@5.8.3/node_modules/nostr-tools/lib/types/nip47.d.ts","../../../node_modules/.pnpm/nostr-tools@2.15.2_typescript@5.8.3/node_modules/nostr-tools/lib/types/nip54.d.ts","../../../node_modules/.pnpm/nostr-tools@2.15.2_typescript@5.8.3/node_modules/nostr-tools/lib/types/nip57.d.ts","../../../node_modules/.pnpm/nostr-tools@2.15.2_typescript@5.8.3/node_modules/nostr-tools/lib/types/nip98.d.ts","../../../node_modules/.pnpm/nostr-tools@2.15.2_typescript@5.8.3/node_modules/nostr-tools/lib/types/kinds.d.ts","../../../node_modules/.pnpm/nostr-tools@2.15.2_typescript@5.8.3/node_modules/nostr-tools/lib/types/fakejson.d.ts","../../../node_modules/.pnpm/@noble+hashes@1.3.1/node_modules/@noble/hashes/utils.d.ts","../../../node_modules/.pnpm/nostr-tools@2.15.2_typescript@5.8.3/node_modules/nostr-tools/lib/types/utils.d.ts","../../../node_modules/.pnpm/nostr-tools@2.15.2_typescript@5.8.3/node_modules/nostr-tools/lib/types/index.d.ts","../NSet.ts","../NCache.ts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/typeAliases.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/index.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/enumUtil.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/partialUtil.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/standard-schema.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/external.d.cts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/index.d.cts","../NSchema.ts","../NConnectSigner.ts","../NIP05.ts","../NIP50.ts","../../../node_modules/.pnpm/@jsr+std__encoding@0.224.3/node_modules/@jsr/std__encoding/_dist/hex.d.ts","../../../node_modules/.pnpm/@jsr+std__encoding@0.224.3/node_modules/@jsr/std__encoding/_dist/base64.d.ts","../utils/N64.ts","../NIP98.ts","../NKinds.ts","../utils/CircularSet.ts","../utils/Machina.ts","../NPool.ts","../../../node_modules/.pnpm/websocket-ts@2.2.1/node_modules/websocket-ts/dist/cjs/src/backoff/backoff.d.ts","../../../node_modules/.pnpm/websocket-ts@2.2.1/node_modules/websocket-ts/dist/cjs/src/backoff/constantbackoff.d.ts","../../../node_modules/.pnpm/websocket-ts@2.2.1/node_modules/websocket-ts/dist/cjs/src/backoff/exponentialbackoff.d.ts","../../../node_modules/.pnpm/websocket-ts@2.2.1/node_modules/websocket-ts/dist/cjs/src/backoff/linearbackoff.d.ts","../../../node_modules/.pnpm/websocket-ts@2.2.1/node_modules/websocket-ts/dist/cjs/src/queue/queue.d.ts","../../../node_modules/.pnpm/websocket-ts@2.2.1/node_modules/websocket-ts/dist/cjs/src/queue/array_queue.d.ts","../../../node_modules/.pnpm/websocket-ts@2.2.1/node_modules/websocket-ts/dist/cjs/src/queue/ring_queue.d.ts","../../../node_modules/.pnpm/websocket-ts@2.2.1/node_modules/websocket-ts/dist/cjs/src/websocket_buffer.d.ts","../../../node_modules/.pnpm/websocket-ts@2.2.1/node_modules/websocket-ts/dist/cjs/src/websocket_event.d.ts","../../../node_modules/.pnpm/websocket-ts@2.2.1/node_modules/websocket-ts/dist/cjs/src/websocket_retry_options.d.ts","../../../node_modules/.pnpm/websocket-ts@2.2.1/node_modules/websocket-ts/dist/cjs/src/websocket_options.d.ts","../../../node_modules/.pnpm/websocket-ts@2.2.1/node_modules/websocket-ts/dist/cjs/src/websocket.d.ts","../../../node_modules/.pnpm/websocket-ts@2.2.1/node_modules/websocket-ts/dist/cjs/src/websocket_builder.d.ts","../../../node_modules/.pnpm/websocket-ts@2.2.1/node_modules/websocket-ts/dist/cjs/src/index.d.ts","../NRelay1.ts","../NSecSigner.ts","../mod.ts","../RelayError.ts","../../../node_modules/.pnpm/@jsr+scure__base@1.2.6/node_modules/@jsr/scure__base/_dist/index.d.ts","../ln/types/LNURLCallback.ts","../ln/types/LNURLDetails.ts","../ln/LNURL.ts","../ln/mod.ts","../test/ErrorRelay.ts","../test/MockRelay.ts","../test/mod.ts","../test/TestRelayServer.ts","../uploaders/BlossomUploader.ts","../uploaders/NostrBuildUploader.ts","../uploaders/mod.ts","../utils/mod.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/.pnpm/@types+events@3.0.3/node_modules/@types/events/index.d.ts","../../../node_modules/.pnpm/buffer@5.7.1/node_modules/buffer/index.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/utility.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/header.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/readable.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/fetch.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/formdata.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/connector.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/client.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/errors.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/global-origin.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/pool-stats.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/pool.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/handlers.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/h2c-client.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/agent.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/mock-call-history.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/mock-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/mock-client.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/mock-pool.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/mock-errors.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/retry-handler.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/retry-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/api.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/cache-interceptor.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/interceptors.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/util.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/cookies.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/patch.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/websocket.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/eventsource.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/content-type.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/cache.d.ts","../../../node_modules/.pnpm/undici-types@7.8.0/node_modules/undici-types/index.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/globals.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/assert.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/assert/strict.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/async_hooks.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/buffer.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/child_process.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/cluster.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/console.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/constants.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/crypto.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/dgram.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/dns.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/dns/promises.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/domain.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/dom-events.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/events.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/fs.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/fs/promises.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/http.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/http2.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/https.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/inspector.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/module.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/net.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/os.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/path.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/process.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/punycode.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/querystring.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/readline.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/readline/promises.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/repl.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/sea.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/sqlite.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/stream.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/stream/promises.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/stream/web.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/string_decoder.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/test.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/timers.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/timers/promises.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/tls.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/trace_events.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/tty.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/url.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/util.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/v8.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/vm.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/wasi.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/worker_threads.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/zlib.d.ts","../../../node_modules/.pnpm/@types+node@24.1.0/node_modules/@types/node/index.d.ts"],"fileIdsList":[[193,239],[193,236,239],[193,238,239],[239],[193,239,244,274],[193,239,240,245,251,252,259,271,282],[193,239,240,241,251,259],[193,239,242,283],[193,239,243,244,252,260],[193,239,244,271,279],[193,239,245,247,251,259],[193,238,239,246],[193,239,247,248],[193,239,249,251],[193,238,239,251],[193,239,251,252,253,271,282],[193,239,251,252,253,266,271,274],[193,234,239],[193,234,239,247,251,254,259,271,282],[193,239,251,252,254,255,259,271,279,282],[193,239,254,256,271,279,282],[191,192,193,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288],[193,239,251,257],[193,239,258,282],[193,239,247,251,259,271],[193,239,260],[193,239,261],[193,238,239,262],[193,236,237,238,239,240,241,242,243,244,245,246,247,248,249,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288],[193,239,264],[193,239,265],[193,239,251,266,267],[193,239,266,268,283,285],[193,239,251,271,272,274],[193,239,273,274],[193,239,271,272],[193,239,274],[193,239,275],[193,236,239,271,276],[193,239,251,277,278],[193,239,277,278],[193,239,244,259,271,279],[193,239,280],[193,239,259,281],[193,239,254,265,282],[193,239,244,283],[193,239,271,284],[193,239,258,285],[193,239,286],[193,239,251,253,262,271,274,282,284,285,287],[193,239,271,288],[98,100,101,193,239],[98,100,193,239],[98,193,239],[99,100,102,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,130,193,239],[99,193,239],[105,193,239],[98,105,193,239],[99,112,193,239],[99,105,193,239],[103,193,239],[101,193,239],[98,129,193,239],[193,204,208,239,282],[193,204,239,271,282],[193,239,271],[193,199,239],[193,201,204,239,282],[193,239,259,279],[193,239,289],[193,199,239,289],[193,201,204,239,259,282],[193,196,197,198,200,203,239,251,271,282],[193,204,212,239],[193,197,202,239],[193,204,228,229,239],[193,197,200,204,239,274,282,289],[193,204,239],[193,196,239],[193,199,200,201,202,203,204,205,206,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,229,230,231,232,233,239],[193,204,221,224,239,247],[193,204,212,213,214,239],[193,202,204,213,215,239],[193,203,239],[193,197,199,204,239],[193,204,208,213,215,239],[193,208,239],[193,202,204,207,239,282],[193,197,201,204,212,239],[193,204,221,239],[193,199,204,228,239,274,287,289],[160,193,239],[160,161,162,163,164,165,166,167,168,169,170,171,172,193,239],[164,193,239],[160,167,168,170,193,239],[160,167,168,171,193,239],[171,193,239],[167,168,169,193,239],[146,193,239],[134,135,136,193,239],[137,138,193,239],[134,135,137,139,140,145,193,239],[135,137,193,239],[145,193,239],[137,193,239],[134,135,137,140,141,142,143,144,193,239],[95,193,239],[95,97,131,132,193,239],[95,147,148,193,239],[95,148,193,239],[95,131,152,154,193,239],[95,131,132,157,158,193,239],[95,131,132,148,158,173,193,239],[95,147,193,239],[95,131,193,239],[176,193,239],[95,148,178,179,180,193,239],[179,180,181,193,239],[80,95,96,132,133,148,149,150,151,155,156,159,174,175,177,193,239],[95,131,132,158,193,239],[95,148,185,193,239,254,259],[95,131,183,184,193,239,253],[95,147,152,154,193,239],[95,147,154,155,193,239],[187,188,193,239],[95,148,153,193,239],[154,158,193,239],[81,87,88,193,239],[82,88,92,193,239],[81,82,88,193,239],[81,82,193,239],[81,193,239],[81,82,83,84,85,86,87,88,89,90,91,92,93,94,193,239]],"fileInfos":[{"version":"69684132aeb9b5642cbcd9e22dff7818ff0ee1aa831728af0ecf97d3364d5546","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"8bf8b5e44e3c9c36f98e1007e8b7018c0f38d8adc07aecef42f5200114547c70","impliedFormat":1},{"version":"092c2bfe125ce69dbb1223c85d68d4d2397d7d8411867b5cc03cec902c233763","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1c9319a09485199c1f7b0498f2988d6d2249793ef67edda49d1e584746be9032","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3a2a0cee0f03ffdde24d89660eba2685bfbdeae955a6c67e8c4c9fd28928eeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"60037901da1a425516449b9a20073aa03386cce92f7a1fd902d7602be3a7c2e9","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true,"impliedFormat":1},{"version":"22adec94ef7047a6c9d1af3cb96be87a335908bf9ef386ae9fd50eeb37f44c47","affectsGlobalScope":true,"impliedFormat":1},{"version":"4245fee526a7d1754529d19227ecbf3be066ff79ebb6a380d78e41648f2f224d","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"34f61ca4fc5c54b5050e590ad4be2b716015671b8db71087e77c8c60fb2b0844","signature":"5bf4cfcbe89d2c37623b9ece323a1f83c100c50e60baded7f1e3003b68dae0b4","impliedFormat":1},{"version":"858b429879f4da6102418e19db3bb342b08a93b8823364f3818d494298a7657d","impliedFormat":1},{"version":"9346cedb16f82eaa828aabea5611d5bf088d62542c75b84d5d9d61863ff9e23d","impliedFormat":1},{"version":"b2b8053554377a9d12ae8a1de7e4a6ff1272078a785468a94a27174abdf13aa9","impliedFormat":1},{"version":"fb6b64a3e6e5b88f7fd8b674bebe597f450aa12095e51c68e79b404de7b8988f","impliedFormat":1},{"version":"cd10e099a80aa1e298437b5bb29c6ace96418383d6a4d781b369e458b318eab7","impliedFormat":1},{"version":"9e7b6d417ae746d1c18c0a42dae289dadbc903c2dc1641f2a3a9d806fb3345dd","impliedFormat":1},{"version":"84a20109be92ef8dfd903b9e26a04e7d3baeb4b30cf21b6a88c8773b1aa74f15","impliedFormat":1},{"version":"34a892534da992b4fb316f04725a2d77f7d40005f476349dd33e3e1cf6f446d7","impliedFormat":1},{"version":"4d20e63d7da2792a87d5f2370b0941bfc79e3d108813637abb6a79448cd537ab","impliedFormat":1},{"version":"0c881b3dc06025c4a4d449d17ab005a0129eab79472f97816052cf79e72c9afc","impliedFormat":1},{"version":"20f5e661e0e70d778967c9b26435a0111dbea38e2b0ff5f3c2ae821f70b31c8b","impliedFormat":1},{"version":"6c431924877a1656045b97b472a17e6c4be899fbedfcbfa30d0ba9ebc3f1ce72","impliedFormat":1},{"version":"45eec43707d73eadac8e8fd74028f83f803a79c8b2e04fd01904c1d5155f5315","impliedFormat":1},{"version":"2b3c018828e78a719e68dd3a56bc5a6288626e6a387f108e6ff5ea6676e1a3ed","impliedFormat":1},{"version":"eb197140271cc2395e3bd8e88bcebaadda3b5346ffe24cd3b90b7cb6a772e28f","impliedFormat":1},{"version":"9e8addf991bc5ad45757feda436b9fb71163b156466b3673c1a238f7e17b58bc","signature":"ed10648ea720eb748ad887def9c2d617453f1f4f9e9bfb04a1f4ea579b78b166","impliedFormat":1},{"version":"0838507efff4f479c6f603ec812810ddfe14ab32abf8f4a8def140be970fe439","impliedFormat":1},{"version":"8ca865e3208d76f4f8f4d9bf17343c70043775921f9064259ca8543b5cddecfc","impliedFormat":99},{"version":"dc6767da0feb3a50b5aae66a5987671d4de64fd96eddd170ad09e66bc7e8ec9a","impliedFormat":99},{"version":"88787c18bcd3fb47cfe37809ae52fea30ab002ce442ee6c2acd68c3f9112edb5","impliedFormat":99},{"version":"b7b6dc5995a80a5fdb05d0f1bd83cc0621c42eb4185f3c538c432916c21485af","impliedFormat":99},{"version":"e23a99d0eceb9281833f9b3af32b70bef25d6645247a9eb200da7a7fcbea242a","impliedFormat":99},{"version":"a9e492a9294477af83e8f5772f96f581246af85027b1edfba26055e11cdf7e3d","impliedFormat":99},{"version":"2bbe4d3cae04ed30f00ee60f6b44efce443319aee6265db16f1512d8abc6853c","impliedFormat":99},{"version":"7ca0a2eebacf0ab51c61734c87bace9510b154288e21bf5aa3944feefe0a102c","impliedFormat":99},{"version":"4434679ae393dd96f3939fcd4270cfd7791f8ef629165d77db7f73005bd50258","impliedFormat":99},{"version":"ea859ecd5ab33f3c0a1727459a544082618f2e535cdff08850465bf6215bde06","impliedFormat":99},{"version":"d174b46f0d34c2a653a3c29efceed03e0aa9f951d20cb74b54983d05818eaa5b","impliedFormat":99},{"version":"f569b32827aaf309c12c8b824f76816260aad9650e4c6082bf333b9175a8d3cc","impliedFormat":99},{"version":"8a3d93837a6e6db393facc3931f6747cd59d3317d8ac34a85bf03e2913e8b325","impliedFormat":99},{"version":"2106bb4d1e9c29b66ab1360f25f53448e5a1657c219b9c11492a0319822ec9be","impliedFormat":99},{"version":"96ef91e1a6e2ff0a7389fd989583ab160a251c3f9058e4c799afcbbe6ba1c646","impliedFormat":99},{"version":"1eed3066d0c6a5d3fc6b0f5bae1308b175e75eff52abc3bbaf3485b3f8a73601","impliedFormat":99},{"version":"59760e2b8dee4f8f8bf95338d82f85a5397a34b5d6cc127424c30ebd3a74b9d2","impliedFormat":99},{"version":"f708c19dbf572f5c45fabe4867de6053c552c5a5e63e5050f68a695000016b32","impliedFormat":99},{"version":"8a564588add5ffc7f2e2df1edb958f6731bee985969e34978667b5cc9234814b","impliedFormat":99},{"version":"804d005ea0a2f55694bc3a6cd9a13031acd1927c15265852739edba4751a0021","impliedFormat":99},{"version":"f48a9b3608757000018740d1659e4b96c595033053fddead06916cab757b4c69","impliedFormat":99},{"version":"8d49db204eebd3b3575502934e0330640887e2639b8dfd3bfc190bf17127abbe","impliedFormat":99},{"version":"f508df907affd5310fdd509124e3092be35a039a04c8f06aa367d13782f23416","impliedFormat":99},{"version":"4d09dcb380fe028f4cc24595d23dd13516a87c13237119ca061e6594e932fe23","impliedFormat":99},{"version":"01bc092c002d6b7936667982a8b790ece0a4a96aed773226d5080bc2d6394499","impliedFormat":99},{"version":"534b006ca06549b17b9b037bdc8472ef3a7bd59bb2252332ff11753fd45107f1","impliedFormat":99},{"version":"44fd712b59e38d75434c06519d7dfdb6d4fc059750c571eab324e6b1c4dc0a12","impliedFormat":99},{"version":"21558f5cd4c3ba1716899c96fa669b7850441a83627c26aae9dad08ef485c3ce","impliedFormat":99},{"version":"154cb314f4950d475c00f8c130b9396b77ea85cb6e514707e2aaeaf9cd676530","impliedFormat":99},{"version":"911f88598ca24ddac58ada7a5990469684d544ce3c3dc41ba9b025ed395104ee","impliedFormat":99},{"version":"7f56a105c7db5ba6b525c278a4c2e2a4e9bd67fa954e9bc523705f266a39eb53","impliedFormat":99},{"version":"3c3ca314a2b01902ef19b499be6e052925a849f14e2d9185afb323df3d3a72b6","impliedFormat":1},{"version":"27619d0a46b9d2d33724d8c59a840205bff99b9a283e8b40d37be4db48298ca2","impliedFormat":99},{"version":"1ad33ff76d9f190433eba30cfdd3765fd4e6ea1c42021faf90ef2bc5a5d210e6","impliedFormat":99},{"version":"fa07c61d9d024976688c1f0bdc88ae84d05366603b2989278700c5a0f612d8af","signature":"06aebba6a953e43f63a13cd26f0f4de9defa5cbca4f2a5ec81694e4652b36fd8","impliedFormat":1},{"version":"e0a4f25e2edc28cb7f37666f5caa35680816834428ccfb0f2ee29388dfe6c28b","signature":"474d3e74780dca1bd638e66e8c74a375fa2ee7e801dabbcac525b8feae5923ce","impliedFormat":1},{"version":"d3cfde44f8089768ebb08098c96d01ca260b88bccf238d55eee93f1c620ff5a5","impliedFormat":1},{"version":"293eadad9dead44c6fd1db6de552663c33f215c55a1bfa2802a1bceed88ff0ec","impliedFormat":1},{"version":"833e92c058d033cde3f29a6c7603f517001d1ddd8020bc94d2067a3bc69b2a8e","impliedFormat":1},{"version":"08b2fae7b0f553ad9f79faec864b179fc58bc172e295a70943e8585dd85f600c","impliedFormat":1},{"version":"f12edf1672a94c578eca32216839604f1e1c16b40a1896198deabf99c882b340","impliedFormat":1},{"version":"e3498cf5e428e6c6b9e97bd88736f26d6cf147dedbfa5a8ad3ed8e05e059af8a","impliedFormat":1},{"version":"dba3f34531fd9b1b6e072928b6f885aa4d28dd6789cbd0e93563d43f4b62da53","impliedFormat":1},{"version":"f672c876c1a04a223cf2023b3d91e8a52bb1544c576b81bf64a8fec82be9969c","impliedFormat":1},{"version":"e4b03ddcf8563b1c0aee782a185286ed85a255ce8a30df8453aade2188bbc904","impliedFormat":1},{"version":"2329d90062487e1eaca87b5e06abcbbeeecf80a82f65f949fd332cfcf824b87b","impliedFormat":1},{"version":"25b3f581e12ede11e5739f57a86e8668fbc0124f6649506def306cad2c59d262","impliedFormat":1},{"version":"4fdb529707247a1a917a4626bfb6a293d52cd8ee57ccf03830ec91d39d606d6d","impliedFormat":1},{"version":"a9ebb67d6bbead6044b43714b50dcb77b8f7541ffe803046fdec1714c1eba206","impliedFormat":1},{"version":"5780b706cece027f0d4444fbb4e1af62dc51e19da7c3d3719f67b22b033859b9","impliedFormat":1},{"version":"957fc28640625d4800b9a2c7827f93db844bab9cb9756859bfdf7327cedfea2e","signature":"7389464e5d8a0bdb3891d90ffb1fcc917ed0ba287e74d7a4ae6e88e8a9a6dd90","impliedFormat":1},{"version":"0c4812e36cb5a6048a9f05e6918979dcc9f1c2227744977383d562a9390bfd85","signature":"81ef4251186b623cb329f8655456ec2dda176a33452d811f0736b1fd471fba29","impliedFormat":1},{"version":"c2562cdf6955d10ab3f431b6c17f842708a975a30fb3c0b995f365605fa82166","signature":"f9e402d231488ea7e8bad5e422bfcd8c304df5ac3bbd071654d3bcc2b7a6a1af","impliedFormat":1},{"version":"547160cf55d2e7c080db5795f32117347a783c4edbd4c5191b04956cad04a8b6","signature":"33d661dc17c567182178f120cef3fd16efcdfe68a76963154e5ae86fcb5ff58d","impliedFormat":1},{"version":"a8283758659de8fa036ce652c1807e53fa7ee09c4aca59f0bd35ff97529cde77","impliedFormat":99},{"version":"a0eed6acf826edb2ed695d05629f2000c935b3a2aa221a5eb2db505b92c08839","impliedFormat":99},{"version":"67f58e250d666a613c43dd1adfbf4765a38d22a059e7f30446a5727d3ac4ae5e","signature":"9407cb5574fac61d3d7fd31b98fd659c75d6f85327e4a616d1f5dae616191064","impliedFormat":1},{"version":"18813187fcf84f8147f195f12314d9260d62b3a6f67a2c17d46cd4e816be281a","signature":"e675ece4cfc835d054c289805f0852aef4789821a7c7b5ad543e33948fb442f0","impliedFormat":1},{"version":"32ffa2c5a578835378684a2e1eda1269163014fe4323a61e27052ba596018f0a","signature":"70ba91276225703972548d084dee0ef5f73822f2cd33a4cbd6aac534313fe886","impliedFormat":1},{"version":"4329f43d63a7f6ec1ca768d8c4fbc279cac4fb06d37c409b2786e8d9287d17ff","signature":"f0fee8a3204535af95de855781a1f41e79392278dee30d7e34de4b1fde27a5c6","impliedFormat":1},{"version":"504af056be83e50c5a4ac8c4be173a67b7bc7fc08d0d38cf2c8da3bfac72afff","signature":"a8b636e689c73d024bb8a3de2d74bd4ed8ec2088a3b06ecbd60ebd63d7d1fb21","impliedFormat":1},{"version":"56bf1cae11c709eba6863bf88fc09c68e07a73932037025e34220ace74d4ad90","signature":"b13c957897ac8ee717773d0ba0ab4bfc5c68d49abd4665e9fcfea9a7521cb7a0","impliedFormat":1},{"version":"7f58f5877cd5aa17df1c3b05da035e265ff89ce62f74c25ae0325a3778efbc48","impliedFormat":1},{"version":"ef2d29786ebd609e59035dba956d83c05dd18cce2de7570261d2c9b93ffcbd03","impliedFormat":1},{"version":"eacc7663473ad5ff28c51a0edc0abef95004d7a5f74934089f2fb8c816fc097f","impliedFormat":1},{"version":"1efea4ad5b5cb30a4de0475c07a716529f9bd53d2c2961cbaabc1595309e375a","impliedFormat":1},{"version":"50b957b6157a5d21780738f8c4f336b836a04b709d0370c44034706e1ba2d1a8","impliedFormat":1},{"version":"11cbd2ee7594195b22e1f50969b40531f9b71eb109a71c388de718e2e7c0e959","impliedFormat":1},{"version":"0b1d71ec3637ea40a823c438b6e0b6ca9f30c39d12cc99920f3600d01dcbd317","impliedFormat":1},{"version":"ca7af250afcd307be96af3f03da6fe6c6f5be71bc18701f9bc5eae677bc36462","impliedFormat":1},{"version":"81ca94e1240fd11ef8902bad8b06728e8bfab21117c5a23a0cbfeb313216a5c1","impliedFormat":1},{"version":"d46a2f1a6393134c92c6372aff4ab8977f84479ee7d553ce14b6d83939c0da5c","impliedFormat":1},{"version":"d2c48c004be87aeb181ff805d183d9a8ab75796851bee8deff9a5b54bbcbe5db","impliedFormat":1},{"version":"38003984a63d1a2419491def036373626db96dde013b3061d178d3858819f0bd","impliedFormat":1},{"version":"be917d1b1226d55e14eef3ce3f57efd2f840e70f0a72cfddaff615e29cc9c4b5","impliedFormat":1},{"version":"71d8234bed186ef0ca405e73b29bff5dc80c71003462e0f5a7c6b183b43ed63c","impliedFormat":1},{"version":"3ffe788cb5e7e136b0c53fece5f5626d47c1170708192799a987945cbfa9f800","signature":"6aadc819738dacb458abcdc2bbba436678bb9d51a32f67a23f812e552c6a258e","impliedFormat":1},{"version":"73ffbb0b2180336d6cd289b1e5187e905d494688294cc7f0b73d4a67dd1f525b","signature":"b947ef2fda77a20271961795d53ff85fcc36c200d5e2d0c877984989289c5bb8","impliedFormat":1},{"version":"542e8cd661b9ada90ddb8aea8e276f0feff4d21c2cf99475f0adc23d291497f0","signature":"ffd48e638c40fb7eee7a1dc1f7fd7070f8cffb0f58ad662e74b52f256c854139","impliedFormat":1},{"version":"fbd956b0a64806288e90912a13f804c3d3f8654687d52e4882ecd5d252ac40a6","signature":"711920a617131d34fbbbb006d0b9503ff4c7c69ffcf8d3d21a6527423b4188ad","impliedFormat":1},{"version":"46743cfeefa7e5b425efeb139cd6b1dac0e8f4bf04053964ba1323be93ab1f84","impliedFormat":99},{"version":"cdc385bea0ba84f5963d7efeb4746a471c8d5037b475b414ff557c2088fdc022","signature":"b8893d85eb6596e0c575039a90425209bb31b7999709ab83ad53490d8ecf96ad","impliedFormat":1},{"version":"4c72841af4b83d02fecf5f4666aa2879002b96cd674277cfc34a5eefc9a823eb","signature":"9881b7a72362f8834cf941b9062488f498f8fd59b2f4b03c1d0a55f155ab855f","impliedFormat":1},{"version":"bf3b69a036971f829f7f7a4a284db086a783deeda5175b996dfb33dcff9698a9","signature":"e8eebf4587c25359f2a2e767e953c9dcb517a69b61fa322c8d014ef08c11b586","impliedFormat":1},{"version":"678db39539f2dcf9b6d1cbb09167e298377cd60cd4ac44f7e3a070fe3e0f0467","signature":"d1d7f8701ecbd83475f322a609af5467175db56277df2298b6e0dbf7ffad7826","impliedFormat":1},{"version":"f30f7279d3e724ab96f58b95ffcd61842be46e2e92211d882cbaa65d79ad380d","signature":"e8802a6341085c8bcf489fc954b5d7045df2c2782d5a1d610cfbde5f18ccdbd4","impliedFormat":1},{"version":"e1e9dc166be29b2b2f6365276eec750aa409d7ee7c19e156d5c3fc7d675ae4c1","signature":"eaafd0b3fd211e3a5ff0b2478814e40747816334826e05116d506b985fe2e3a2","impliedFormat":1},{"version":"ed13ca19252f51767a569cafb9a5b13bdfd2d4686d1eb4c442804a061b928993","signature":"2407bddabcda72373973e20bbfddb38ad18862c25cacb1a035ba2bf3cc3efa9a","impliedFormat":1},{"version":"5f54abe9b15881a7fb34717f99fb9a05be2520ac89c2e06a76a5ec82b9002374","signature":"93a9eca63219ea1c13a09808905e29c9dd70569ab541691ee7c64d3c1e33b7a5","impliedFormat":1},{"version":"2268bb1259bbd58ae678150f2a3cf156dedec1685a2b07d80b59f6f6ab9ae658","signature":"7f80fda40ddcff9a3c4d46d56136575f43ca61196ff2d7a341a67cfc378a8e78","impliedFormat":1},{"version":"2f1ab568a35001ddcb9d3cb1c77417fbb9d496dd49a858a2df8bace10e65affd","signature":"fbfe3c8046928b40ccbd487955f0e9f84da9d7ebd4d380fe919187329aa72cdf","impliedFormat":1},{"version":"017ddbdcffb81b5a0c254c74fde7c286e5bc2877622a3e95b113f2591e84ee75","impliedFormat":1},{"version":"cbb5f5273a9b174a2f9863a0c4608a6c196f7da854d86e2129021afc0622ad32","impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0671b50bb99cc7ad46e9c68fa0e7f15ba4bc898b59c31a17ea4611fab5095da","affectsGlobalScope":true,"impliedFormat":1},{"version":"d802f0e6b5188646d307f070d83512e8eb94651858de8a82d1e47f60fb6da4e2","affectsGlobalScope":true,"impliedFormat":1},{"version":"93d28b4eb12c68fccc1f2fc04a4ef83ea3b2a03b18055d3bf29cab267aa7042e","impliedFormat":1},{"version":"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","impliedFormat":1},{"version":"e525f9e67f5ddba7b5548430211cae2479070b70ef1fd93550c96c10529457bd","impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"17fe9131bec653b07b0a1a8b99a830216e3e43fe0ea2605be318dc31777c8bbf","impliedFormat":1},{"version":"3c8e93af4d6ce21eb4c8d005ad6dc02e7b5e6781f429d52a35290210f495a674","impliedFormat":1},{"version":"2c9875466123715464539bfd69bcaccb8ff6f3e217809428e0d7bd6323416d01","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"2472ef4c28971272a897fdb85d4155df022e1f5d9a474a526b8fc2ef598af94e","impliedFormat":1},{"version":"6c8e442ba33b07892169a14f7757321e49ab0f1032d676d321a1fdab8a67d40c","impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","impliedFormat":1},{"version":"1cd673d367293fc5cb31cd7bf03d598eb368e4f31f39cf2b908abbaf120ab85a","impliedFormat":1},{"version":"19851a6596401ca52d42117108d35e87230fc21593df5c4d3da7108526b6111c","impliedFormat":1},{"version":"3825bf209f1662dfd039010a27747b73d0ef379f79970b1d05601ec8e8a4249f","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"40bfc70953be2617dc71979c14e9e99c5e65c940a4f1c9759ddb90b0f8ff6b1a","impliedFormat":1},{"version":"da52342062e70c77213e45107921100ba9f9b3a30dd019444cf349e5fb3470c4","impliedFormat":1},{"version":"e9ace91946385d29192766bf783b8460c7dbcbfc63284aa3c9cae6de5155c8bc","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"561c60d8bfe0fec2c08827d09ff039eca0c1f9b50ef231025e5a549655ed0298","impliedFormat":1},{"version":"1e30c045732e7db8f7a82cf90b516ebe693d2f499ce2250a977ec0d12e44a529","impliedFormat":1},{"version":"84b736594d8760f43400202859cda55607663090a43445a078963031d47e25e7","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","impliedFormat":1},{"version":"78b29846349d4dfdd88bd6650cc5d2baaa67f2e89dc8a80c8e26ef7995386583","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"e38d4fdf79e1eadd92ed7844c331dbaa40f29f21541cfee4e1acff4db09cda33","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"7c10a32ae6f3962672e6869ee2c794e8055d8225ef35c91c0228e354b4e5d2d3","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"99f569b42ea7e7c5fe404b2848c0893f3e1a56e0547c1cd0f74d5dbb9a9de27e","impliedFormat":1},{"version":"f4b4faedc57701ae727d78ba4a83e466a6e3bdcbe40efbf913b17e860642897c","affectsGlobalScope":true,"impliedFormat":1},{"version":"bbcfd9cd76d92c3ee70475270156755346c9086391e1b9cb643d072e0cf576b8","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"72c1f5e0a28e473026074817561d1bc9647909cf253c8d56c41d1df8d95b85f7","impliedFormat":1},{"version":"003ec918ec442c3a4db2c36dc0c9c766977ea1c8bcc1ca7c2085868727c3d3f6","affectsGlobalScope":true,"impliedFormat":1},{"version":"938f94db8400d0b479626b9006245a833d50ce8337f391085fad4af540279567","impliedFormat":1},{"version":"c4e8e8031808b158cfb5ac5c4b38d4a26659aec4b57b6a7e2ba0a141439c208c","impliedFormat":1},{"version":"2c91d8366ff2506296191c26fd97cc1990bab3ee22576275d28b654a21261a44","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"12fb9c13f24845000d7bd9660d11587e27ef967cbd64bd9df19ae3e6aa9b52d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"289e9894a4668c61b5ffed09e196c1f0c2f87ca81efcaebdf6357cfb198dac14","impliedFormat":1},{"version":"25a1105595236f09f5bce42398be9f9ededc8d538c258579ab662d509aa3b98e","impliedFormat":1},{"version":"5078cd62dbdf91ae8b1dc90b1384dec71a9c0932d62bdafb1a811d2a8e26bef2","impliedFormat":1},{"version":"a2e2bbde231b65c53c764c12313897ffdfb6c49183dd31823ee2405f2f7b5378","impliedFormat":1},{"version":"ad1cc0ed328f3f708771272021be61ab146b32ecf2b78f3224959ff1e2cd2a5c","impliedFormat":1},{"version":"71450bbc2d82821d24ca05699a533e72758964e9852062c53b30f31c36978ab8","affectsGlobalScope":true,"impliedFormat":1},{"version":"62f572306e0b173cc5dfc4c583471151f16ef3779cf27ab96922c92ec82a3bc8","affectsGlobalScope":true,"impliedFormat":1},{"version":"dd2fcf3359dc2dacc5198ae764d5179e3dc096295c37e8241fdce324a99ff1ee","impliedFormat":1},{"version":"0ab3c844f1eb5a1d94c90edc346a25eb9d3943af7a7812f061bf2d627d8afac0","impliedFormat":1},{"version":"bd8b644c5861b94926687618ec2c9e60ad054d334d6b7eb4517f23f53cb11f91","impliedFormat":1},{"version":"161f09445a8b4ba07f62ae54b27054e4234e7957062e34c6362300726dabd315","impliedFormat":1},{"version":"77fced47f495f4ff29bb49c52c605c5e73cd9b47d50080133783032769a9d8a6","impliedFormat":1},{"version":"a828998f5c017ec1356a7d07e66c7fc8a6b009d451c2bdc3be8ccb4f424316d2","impliedFormat":1},{"version":"34ecb9596317c44dab586118fb62c1565d3dad98d201cd77f3e6b0dde453339c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0f5cda0282e1d18198e2887387eb2f026372ebc4e11c4e4516fef8a19ee4d514","impliedFormat":1},{"version":"e99b0e71f07128fc32583e88ccd509a1aaa9524c290efb2f48c22f9bf8ba83b1","impliedFormat":1},{"version":"76957a6d92b94b9e2852cf527fea32ad2dc0ef50f67fe2b14bd027c9ceef2d86","impliedFormat":1},{"version":"237581f5ec4620a17e791d3bb79bad3af01e27a274dbee875ac9b0721a4fe97d","affectsGlobalScope":true,"impliedFormat":1},{"version":"a8a99a5e6ed33c4a951b67cc1fd5b64fd6ad719f5747845c165ca12f6c21ba16","affectsGlobalScope":true,"impliedFormat":1},{"version":"a58a15da4c5ba3df60c910a043281256fa52d36a0fcdef9b9100c646282e88dd","impliedFormat":1},{"version":"b36beffbf8acdc3ebc58c8bb4b75574b31a2169869c70fc03f82895b93950a12","impliedFormat":1},{"version":"de263f0089aefbfd73c89562fb7254a7468b1f33b61839aafc3f035d60766cb4","impliedFormat":1},{"version":"70b57b5529051497e9f6482b76d91c0dcbb103d9ead8a0549f5bab8f65e5d031","impliedFormat":1},{"version":"e6d81b1f7ab11dc1b1ad7ad29fcfad6904419b36baf55ed5e80df48d56ac3aff","impliedFormat":1},{"version":"1013eb2e2547ad8c100aca52ef9df8c3f209edee32bb387121bb3227f7c00088","impliedFormat":1},{"version":"b6b8e3736383a1d27e2592c484a940eeb37ec4808ba9e74dd57679b2453b5865","impliedFormat":1},{"version":"d6f36b683c59ac0d68a1d5ee906e578e2f5e9a285bca80ff95ce61cdc9ddcdeb","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"125d792ec6c0c0f657d758055c494301cc5fdb327d9d9d5960b3f129aff76093","impliedFormat":1},{"version":"12aad38de6f0594dc21efa78a2c1f67bf6a7ef5a389e05417fe9945284450908","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea713aa14a670b1ea0fbaaca4fd204e645f71ca7653a834a8ec07ee889c45de6","impliedFormat":1},{"version":"b338a6e6c1d456e65a6ea78da283e3077fe8edf7202ae10490abbba5b952b05e","impliedFormat":1},{"version":"2918b7c516051c30186a1055ebcdb3580522be7190f8a2fff4100ea714c7c366","affectsGlobalScope":true,"impliedFormat":1},{"version":"ae86f30d5d10e4f75ce8dcb6e1bd3a12ecec3d071a21e8f462c5c85c678efb41","impliedFormat":1},{"version":"982efeb2573605d4e6d5df4dc7e40846bda8b9e678e058fc99522ab6165c479e","impliedFormat":1},{"version":"e03460fe72b259f6d25ad029f085e4bedc3f90477da4401d8fbc1efa9793230e","impliedFormat":1},{"version":"4286a3a6619514fca656089aee160bb6f2e77f4dd53dc5a96b26a0b4fc778055","impliedFormat":1},{"version":"d67fc92a91171632fc74f413ce42ff1aa7fbcc5a85b127101f7ec446d2039a1f","affectsGlobalScope":true,"impliedFormat":1},{"version":"d40e4631100dbc067268bce96b07d7aff7f28a541b1bfb7ef791c64a696b3d33","affectsGlobalScope":true,"impliedFormat":1},{"version":"784490137935e1e38c49b9289110e74a1622baf8a8907888dcbe9e476d7c5e44","impliedFormat":1},{"version":"42180b657831d1b8fead051698618b31da623fb71ff37f002cb9d932cfa775f1","impliedFormat":1},{"version":"4f98d6fb4fe7cbeaa04635c6eaa119d966285d4d39f0eb55b2654187b0b27446","impliedFormat":1},{"version":"e4c653466d0497d87fa9ffd00e59a95f33bc1c1722c3f5c84dab2e950c18da70","affectsGlobalScope":true,"impliedFormat":1},{"version":"e6dcc3b933e864e91d4bea94274ad69854d5d2a1311a4b0e20408a57af19e95d","impliedFormat":1},{"version":"a51f786b9f3c297668f8f322a6c58f85d84948ef69ade32069d5d63ec917221c","impliedFormat":1}],"root":[80,96,132,133,[148,151],[154,159],[174,177],[179,190]],"options":{"composite":true,"declaration":true,"declarationMap":true,"module":199,"outDir":"./","skipLibCheck":true,"sourceMap":true},"referencedMap":[[178,1],[153,1],[152,1],[129,1],[194,1],[236,2],[237,2],[238,3],[193,4],[239,5],[240,6],[241,7],[191,1],[242,8],[243,9],[244,10],[245,11],[246,12],[247,13],[248,13],[250,1],[249,14],[251,15],[252,16],[253,17],[235,18],[192,1],[254,19],[255,20],[256,21],[289,22],[257,23],[258,24],[259,25],[260,26],[261,27],[262,28],[263,29],[264,30],[265,31],[266,32],[267,32],[268,33],[269,1],[270,1],[271,34],[273,35],[272,36],[274,37],[275,38],[276,39],[277,40],[278,41],[279,42],[280,43],[281,44],[282,45],[283,46],[284,47],[285,48],[286,49],[287,50],[288,51],[195,1],[97,1],[103,52],[101,53],[98,1],[128,1],[100,54],[131,55],[127,56],[107,1],[108,57],[109,58],[110,1],[111,56],[113,59],[114,60],[105,1],[115,57],[116,60],[117,57],[118,56],[119,1],[120,1],[121,54],[122,1],[123,56],[124,1],[125,56],[112,54],[126,56],[104,61],[99,54],[106,58],[102,62],[130,63],[78,1],[79,1],[13,1],[15,1],[14,1],[2,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[22,1],[23,1],[3,1],[24,1],[25,1],[4,1],[26,1],[30,1],[27,1],[28,1],[29,1],[31,1],[32,1],[33,1],[5,1],[34,1],[35,1],[36,1],[37,1],[6,1],[41,1],[38,1],[39,1],[40,1],[42,1],[7,1],[43,1],[48,1],[49,1],[44,1],[45,1],[46,1],[47,1],[8,1],[53,1],[50,1],[51,1],[52,1],[54,1],[9,1],[55,1],[56,1],[57,1],[59,1],[58,1],[60,1],[61,1],[10,1],[62,1],[63,1],[64,1],[11,1],[65,1],[66,1],[67,1],[68,1],[69,1],[1,1],[70,1],[71,1],[12,1],[75,1],[73,1],[77,1],[72,1],[76,1],[74,1],[212,64],[223,65],[210,64],[224,66],[233,67],[202,68],[201,69],[232,70],[227,71],[231,72],[204,73],[220,74],[203,75],[230,76],[199,77],[200,71],[205,78],[206,1],[211,68],[209,78],[197,79],[234,80],[225,81],[215,82],[214,78],[216,83],[218,84],[213,85],[217,86],[228,70],[207,87],[208,88],[219,89],[198,66],[222,90],[221,78],[226,1],[196,1],[229,91],[160,1],[161,92],[162,92],[163,92],[173,93],[165,94],[164,1],[166,94],[171,95],[167,1],[172,96],[168,97],[170,98],[169,92],[147,99],[137,100],[139,101],[146,102],[141,1],[142,1],[140,103],[143,104],[134,1],[135,1],[136,99],[138,105],[144,1],[145,106],[80,1],[96,107],[133,108],[149,109],[150,110],[151,1],[155,111],[156,1],[159,112],[174,113],[148,114],[175,115],[132,107],[177,116],[181,117],[182,118],[179,1],[180,1],[176,119],[183,107],[184,120],[186,121],[185,122],[187,123],[188,124],[189,125],[157,1],[158,1],[154,126],[190,127],[90,128],[91,1],[93,129],[92,130],[94,1],[83,131],[84,1],[81,1],[82,1],[85,1],[86,1],[87,1],[88,132],[89,132],[95,133]],"latestChangedDtsFile":"./test/TestRelayServer.d.ts","version":"5.8.3"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { NostrSigner, NUploader } from '@nostrify/types';
|
|
2
|
+
/** BlossomUploader options. */
|
|
3
|
+
export interface BlossomUploaderOpts {
|
|
4
|
+
/** Blossom servers to use. */
|
|
5
|
+
servers: Request['url'][];
|
|
6
|
+
/** Signer for Blossom authorizations. */
|
|
7
|
+
signer: NostrSigner;
|
|
8
|
+
/** Custom fetch implementation. */
|
|
9
|
+
fetch?: typeof fetch;
|
|
10
|
+
/** Number of milliseconds until each request should expire. (Default: `60_000`) */
|
|
11
|
+
expiresIn?: number;
|
|
12
|
+
}
|
|
13
|
+
/** Upload files to Blossom servers. */
|
|
14
|
+
export declare class BlossomUploader implements NUploader {
|
|
15
|
+
private servers;
|
|
16
|
+
private signer;
|
|
17
|
+
private fetch;
|
|
18
|
+
private expiresIn;
|
|
19
|
+
constructor(opts: BlossomUploaderOpts);
|
|
20
|
+
upload(file: File, opts?: {
|
|
21
|
+
signal?: AbortSignal;
|
|
22
|
+
}): Promise<[['url', string], ...string[][]]>;
|
|
23
|
+
/** Blossom "BlobDescriptor" schema. */
|
|
24
|
+
private static schema;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=BlossomUploader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BlossomUploader.d.ts","sourceRoot":"","sources":["../../uploaders/BlossomUploader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAMzD,+BAA+B;AAC/B,MAAM,WAAW,mBAAmB;IAClC,8BAA8B;IAC9B,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;IAC1B,yCAAyC;IACzC,MAAM,EAAE,WAAW,CAAC;IACpB,mCAAmC;IACnC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,uCAAuC;AACvC,qBAAa,eAAgB,YAAW,SAAS;IAC/C,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,SAAS,CAAS;gBAEd,IAAI,EAAE,mBAAmB;IAO/B,MAAM,CACV,IAAI,EAAE,IAAI,EACV,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAC9B,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC,CAAC;IAqD5C,uCAAuC;IACvC,OAAO,CAAC,MAAM,CAAC,MAAM;CAQtB"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BlossomUploader = void 0;
|
|
4
|
+
const hex_1 = require("@std/encoding/hex");
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
const N64_1 = require("../utils/N64");
|
|
7
|
+
/** Upload files to Blossom servers. */
|
|
8
|
+
class BlossomUploader {
|
|
9
|
+
servers;
|
|
10
|
+
signer;
|
|
11
|
+
fetch;
|
|
12
|
+
expiresIn;
|
|
13
|
+
constructor(opts) {
|
|
14
|
+
this.servers = opts.servers;
|
|
15
|
+
this.signer = opts.signer;
|
|
16
|
+
this.fetch = opts.fetch ?? globalThis.fetch.bind(globalThis);
|
|
17
|
+
this.expiresIn = opts.expiresIn ?? 60_000;
|
|
18
|
+
}
|
|
19
|
+
async upload(file, opts) {
|
|
20
|
+
const x = (0, hex_1.encodeHex)(await crypto.subtle.digest('SHA-256', await file.arrayBuffer()));
|
|
21
|
+
const now = Date.now();
|
|
22
|
+
const expiration = now + this.expiresIn;
|
|
23
|
+
const event = await this.signer.signEvent({
|
|
24
|
+
kind: 24242,
|
|
25
|
+
content: `Upload ${file.name}`,
|
|
26
|
+
created_at: Math.floor(now / 1000),
|
|
27
|
+
tags: [
|
|
28
|
+
['t', 'upload'],
|
|
29
|
+
['x', x],
|
|
30
|
+
['size', file.size.toString()],
|
|
31
|
+
['expiration', Math.floor(expiration / 1000).toString()],
|
|
32
|
+
],
|
|
33
|
+
});
|
|
34
|
+
const authorization = `Nostr ${N64_1.N64.encodeEvent(event)}`;
|
|
35
|
+
return Promise.any(this.servers.map(async (server) => {
|
|
36
|
+
const url = new URL('/upload', server);
|
|
37
|
+
const response = await this.fetch(url, {
|
|
38
|
+
method: 'PUT',
|
|
39
|
+
body: file,
|
|
40
|
+
headers: {
|
|
41
|
+
authorization,
|
|
42
|
+
'content-type': file.type,
|
|
43
|
+
},
|
|
44
|
+
signal: opts?.signal,
|
|
45
|
+
});
|
|
46
|
+
const json = await response.json();
|
|
47
|
+
const data = BlossomUploader.schema().parse(json);
|
|
48
|
+
const tags = [
|
|
49
|
+
['url', data.url],
|
|
50
|
+
['x', data.sha256],
|
|
51
|
+
['ox', data.sha256],
|
|
52
|
+
['size', data.size.toString()],
|
|
53
|
+
];
|
|
54
|
+
if (data.type) {
|
|
55
|
+
tags.push(['m', data.type]);
|
|
56
|
+
}
|
|
57
|
+
return tags;
|
|
58
|
+
}));
|
|
59
|
+
}
|
|
60
|
+
/** Blossom "BlobDescriptor" schema. */
|
|
61
|
+
static schema() {
|
|
62
|
+
return zod_1.z.object({
|
|
63
|
+
url: zod_1.z.string(),
|
|
64
|
+
sha256: zod_1.z.string(),
|
|
65
|
+
size: zod_1.z.number(),
|
|
66
|
+
type: zod_1.z.string().optional(),
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
exports.BlossomUploader = BlossomUploader;
|
|
71
|
+
//# sourceMappingURL=BlossomUploader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BlossomUploader.js","sourceRoot":"","sources":["../../uploaders/BlossomUploader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { NostrSigner } from '@nostrify/types';
|
|
2
|
+
import { NUploader } from '@nostrify/types';
|
|
3
|
+
/** NostrBuildUploader options. */
|
|
4
|
+
export interface NostrBuildUploaderOpts {
|
|
5
|
+
/** nostr.build endpoint to use. Default: `https://nostr.build/api/v2/upload/files` */
|
|
6
|
+
endpoint?: string;
|
|
7
|
+
/** Signer to authenticate with NIP-98 requests. */
|
|
8
|
+
signer?: NostrSigner;
|
|
9
|
+
/** Custom fetch implementation. */
|
|
10
|
+
fetch?: typeof fetch;
|
|
11
|
+
}
|
|
12
|
+
/** Upload files to nostr.build or another compatible server. */
|
|
13
|
+
export declare class NostrBuildUploader implements NUploader {
|
|
14
|
+
private endpoint;
|
|
15
|
+
private signer?;
|
|
16
|
+
private fetch;
|
|
17
|
+
constructor(opts?: NostrBuildUploaderOpts);
|
|
18
|
+
upload(file: File, opts?: {
|
|
19
|
+
signal?: AbortSignal;
|
|
20
|
+
}): Promise<[['url', string], ...string[][]]>;
|
|
21
|
+
/** nostr.build API response schema. */
|
|
22
|
+
private static schema;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=NostrBuildUploader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NostrBuildUploader.d.ts","sourceRoot":"","sources":["../../uploaders/NostrBuildUploader.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,kCAAkC;AAClC,MAAM,WAAW,sBAAsB;IACrC,sFAAsF;IACtF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,mCAAmC;IACnC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED,gEAAgE;AAChE,qBAAa,kBAAmB,YAAW,SAAS;IAClD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAC,CAAc;IAC7B,OAAO,CAAC,KAAK,CAAe;gBAEhB,IAAI,CAAC,EAAE,sBAAsB;IAMnC,MAAM,CACV,IAAI,EAAE,IAAI,EACV,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAC9B,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC,CAAC;IAuC5C,uCAAuC;IACvC,OAAO,CAAC,MAAM,CAAC,MAAM;CAgBtB"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NostrBuildUploader = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const N64_1 = require("../utils/N64");
|
|
6
|
+
const NIP98_1 = require("../NIP98");
|
|
7
|
+
/** Upload files to nostr.build or another compatible server. */
|
|
8
|
+
class NostrBuildUploader {
|
|
9
|
+
endpoint;
|
|
10
|
+
signer;
|
|
11
|
+
fetch;
|
|
12
|
+
constructor(opts) {
|
|
13
|
+
this.endpoint = opts?.endpoint ?? 'https://nostr.build/api/v2/upload/files';
|
|
14
|
+
this.signer = opts?.signer;
|
|
15
|
+
this.fetch = opts?.fetch ?? globalThis.fetch.bind(globalThis);
|
|
16
|
+
}
|
|
17
|
+
async upload(file, opts) {
|
|
18
|
+
const formData = new FormData();
|
|
19
|
+
formData.append('fileToUpload', file);
|
|
20
|
+
const request = new Request(this.endpoint, {
|
|
21
|
+
method: 'POST',
|
|
22
|
+
body: formData,
|
|
23
|
+
signal: opts?.signal,
|
|
24
|
+
});
|
|
25
|
+
if (this.signer) {
|
|
26
|
+
const t = await NIP98_1.NIP98.template(request);
|
|
27
|
+
const event = await this.signer.signEvent(t);
|
|
28
|
+
request.headers.set('authorization', `Nostr ${N64_1.N64.encodeEvent(event)}`);
|
|
29
|
+
}
|
|
30
|
+
const response = await this.fetch(request);
|
|
31
|
+
const json = await response.json();
|
|
32
|
+
const [data] = NostrBuildUploader.schema().parse(json).data;
|
|
33
|
+
const tags = [
|
|
34
|
+
['url', data.url],
|
|
35
|
+
['m', data.mime],
|
|
36
|
+
['x', data.sha256],
|
|
37
|
+
['ox', data.original_sha256],
|
|
38
|
+
['size', data.size.toString()],
|
|
39
|
+
];
|
|
40
|
+
if (data.dimensions) {
|
|
41
|
+
tags.push(['dim', `${data.dimensions.width}x${data.dimensions.height}`]);
|
|
42
|
+
}
|
|
43
|
+
if (data.blurhash) {
|
|
44
|
+
tags.push(['blurhash', data.blurhash]);
|
|
45
|
+
}
|
|
46
|
+
return tags;
|
|
47
|
+
}
|
|
48
|
+
/** nostr.build API response schema. */
|
|
49
|
+
static schema() {
|
|
50
|
+
return zod_1.z.object({
|
|
51
|
+
data: zod_1.z.object({
|
|
52
|
+
url: zod_1.z.string().url(),
|
|
53
|
+
blurhash: zod_1.z.string().optional().catch(undefined),
|
|
54
|
+
sha256: zod_1.z.string(),
|
|
55
|
+
original_sha256: zod_1.z.string(),
|
|
56
|
+
mime: zod_1.z.string(),
|
|
57
|
+
size: zod_1.z.number(),
|
|
58
|
+
dimensions: zod_1.z.object({
|
|
59
|
+
width: zod_1.z.number().positive(),
|
|
60
|
+
height: zod_1.z.number().positive(),
|
|
61
|
+
}).optional().catch(undefined),
|
|
62
|
+
}).array().min(1),
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.NostrBuildUploader = NostrBuildUploader;
|
|
67
|
+
//# sourceMappingURL=NostrBuildUploader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NostrBuildUploader.js","sourceRoot":"","sources":["../../uploaders/NostrBuildUploader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../uploaders/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NostrBuildUploader = exports.BlossomUploader = void 0;
|
|
4
|
+
var BlossomUploader_1 = require("./BlossomUploader");
|
|
5
|
+
Object.defineProperty(exports, "BlossomUploader", { enumerable: true, get: function () { return BlossomUploader_1.BlossomUploader; } });
|
|
6
|
+
var NostrBuildUploader_1 = require("./NostrBuildUploader");
|
|
7
|
+
Object.defineProperty(exports, "NostrBuildUploader", { enumerable: true, get: function () { return NostrBuildUploader_1.NostrBuildUploader; } });
|
|
8
|
+
//# sourceMappingURL=mod.js.map
|