sw_relay.mjs raw
1 // Package sw-relay
2 // Generated by TinyJS — TinyGo JavaScript backend
3
4 import * as $rt from './$runtime/index.mjs';
5
6 import * as common$crypto$sha256 from './common_crypto_sha256.mjs';
7 import * as common$helpers from './common_helpers.mjs';
8 import * as common$jsbridge$bc from './common_jsbridge_bc.mjs';
9 import * as common$jsbridge$idb from './common_jsbridge_idb.mjs';
10 import * as common$jsbridge$subtle from './common_jsbridge_subtle.mjs';
11 import * as common$jsbridge$sw from './common_jsbridge_sw.mjs';
12 import * as common$nostr from './common_nostr.mjs';
13 import * as common$relay from './common_relay.mjs';
14
15 // Package-level variables
16 export let rpool = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
17 export let writeRelays = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
18 export let bus = { $value: 0, $get() { return this.$value; }, $set(v) { this.$value = v; } };
19 export let clientSubs = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
20 export let proxySubs = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
21 export let cryptoCBs = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
22 export let nextCryptoID = { $value: 0, $get() { return this.$value; }, $set(v) { this.$value = v; } };
23 export let fwdBuf = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
24 export let fwdTimer = { $value: 0, $get() { return this.$value; }, $set(v) { this.$value = v; } };
25 export let myPubkey = { $value: '', $get() { return this.$value; }, $set(v) { this.$value = v; } };
26
27 $rt.types.registerType('sw-relay.clientSub', {
28 id: 'sw-relay.clientSub',
29 kind: 'struct',
30 methods: new Map(),
31 fields: [
32 { name: 'filters', type: '[]*common/nostr.Filter', tag: '', embedded: false },
33 { name: 'filterRaw', type: 'string', tag: '', embedded: false },
34 { name: 'clientID', type: 'string', tag: '', embedded: false },
35 ],
36 zero: () => ({ filters: null, filterRaw: '', clientID: '' }),
37 });
38 $rt.types.registerType('sw-relay.proxySub', {
39 id: 'sw-relay.proxySub',
40 kind: 'struct',
41 methods: new Map(),
42 fields: [
43 { name: 'remoteIDs', type: 'map[string]bool', tag: '', embedded: false },
44 { name: 'relayCount', type: 'int', tag: '', embedded: false },
45 { name: 'eoseCount', type: 'int', tag: '', embedded: false },
46 { name: 'timer', type: 'common/jsbridge/sw.Timer', tag: '', embedded: false },
47 { name: 'done', type: 'bool', tag: '', embedded: false },
48 ],
49 zero: () => ({ remoteIDs: null, relayCount: 0, eoseCount: 0, timer: 0, done: false }),
50 });
51 $rt.types.registerType('sw-relay.DMRecord', {
52 id: 'sw-relay.DMRecord',
53 kind: 'struct',
54 methods: new Map(),
55 fields: [
56 { name: 'ID', type: 'string', tag: '', embedded: false },
57 { name: 'Peer', type: 'string', tag: '', embedded: false },
58 { name: 'From', type: 'string', tag: '', embedded: false },
59 { name: 'Content', type: 'string', tag: '', embedded: false },
60 { name: 'CreatedAt', type: 'int64', tag: '', embedded: false },
61 { name: 'Protocol', type: 'string', tag: '', embedded: false },
62 { name: 'EventID', type: 'string', tag: '', embedded: false },
63 ],
64 zero: () => ({ ID: '', Peer: '', From: '', Content: '', CreatedAt: 0, Protocol: '', EventID: '' }),
65 });
66 $rt.types.registerType('sw-relay.mw', {
67 id: 'sw-relay.mw',
68 kind: 'struct',
69 methods: new Map(),
70 fields: [
71 { name: 's', type: 'string', tag: '', embedded: false },
72 { name: 'i', type: 'int', tag: '', embedded: false },
73 ],
74 zero: () => ({ s: '', i: 0 }),
75 });
76 export function init() {
77 return;
78 }
79
80 export function initRelayProxy() {
81 let $t0_1;
82 $t0_1 = common$relay.NewPool();
83 rpool.$set($t0_1);
84 return;
85 }
86
87 export function getConn(url) {
88 let $t0_1, $t1_2, $t2_3;
89 $t0_1 = rpool.$get();
90 $t1_2 = common$relay.Pool$Connect($t0_1, url);
91 $t2_3 = wireConn($t1_2, url);
92 return $t1_2;
93 }
94
95 export function wireConn(c, url) {
96 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8;
97 $t0_1 = { $value: '', $get() { return this.$value; }, $set(v) { this.$value = v; } };
98 $t0_1.$set(url);
99 $t1_2 = wireConn$1.bind(null, $t0_1);
100 $t2_3 = common$relay.Conn$SetOnEvent(c, $t1_2);
101 $t3_4 = common$relay.Conn$SetOnEOSE(c, wireConn$2);
102 $t4_5 = common$relay.Conn$SetOnOK(c, wireConn$3);
103 $t5_6 = wireConn$4.bind(null, $t0_1);
104 $t6_7 = common$relay.Conn$SetOnAuth(c, $t5_6);
105 $t7_8 = { $get() { return c.$get().ScheduleReconnect; }, $set(v) { const obj = c.$get(); obj.ScheduleReconnect = v; c.$set(obj); } };
106 $t7_8.$set(wireConn$5);
107 return;
108 }
109
110 function wireConn$1(url, _, ev) {
111 let $t0_1, $t1_2;
112 $t0_1 = url.$get();
113 $t1_2 = routerOnRelayEvent($t0_1, ev);
114 return;
115 }
116
117 function wireConn$2(subID) {
118 let $t0_1;
119 $t0_1 = routerOnRelayEOSE(subID);
120 return;
121 }
122
123 function wireConn$3(eventID, ok, msg) {
124 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10;
125 let $block = 0;
126 while (true) {
127 switch ($block) {
128 case 0: {
129 if (ok) {
130 $t0_1 = 'true';
131 $block = 2; break;
132 }
133 else {
134 $block = 1; break;
135 }
136 break;
137 }
138 case 1: {
139 $t0_1 = 'false';
140 $block = 2; break;
141 break;
142 }
143 case 2: {
144 $t1_2 = jstr(eventID);
145 $t2_3 = ('["OK",' + $t1_2);
146 $t3_4 = ($t2_3 + ',');
147 $t4_5 = ($t3_4 + $t0_1);
148 $t5_6 = ($t4_5 + ',');
149 $t6_7 = jstr(msg);
150 $t7_8 = ($t5_6 + $t6_7);
151 $t8_9 = ($t7_8 + ']');
152 $t9_10 = fwdAll($t8_9);
153 return;
154 break;
155 }
156 }
157 }
158 }
159
160 function wireConn$4(url, challenge) {
161 let $t0_1, $t1_2;
162 $t0_1 = url.$get();
163 $t1_2 = onRelayAuth($t0_1, challenge);
164 return;
165 }
166
167 function wireConn$5(fn) {
168 let $t0_1;
169 $t0_1 = common$jsbridge$sw.SetTimeout(5000, fn);
170 return;
171 }
172
173 export function onRelayAuth(relayURL, challenge) {
174 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27;
175 let $block = 0;
176 while (true) {
177 switch ($block) {
178 case 0: {
179 $t0_1 = { $value: '', $get() { return this.$value; }, $set(v) { this.$value = v; } };
180 $t0_1.$set(relayURL);
181 $t1_2 = myPubkey.$get();
182 $t2_3 = ($t1_2 === '');
183 if ($t2_3) {
184 $block = 1; break;
185 }
186 else {
187 $block = 2; break;
188 }
189 break;
190 }
191 case 1: {
192 return;
193 break;
194 }
195 case 2: {
196 $t3_4 = { $value: { ID: '', PubKey: '', CreatedAt: 0, Kind: 0, Tags: null, Content: '', Sig: '' }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
197 $t4_5 = { $get() { return $t3_4.$get().Kind; }, $set(v) { const obj = $t3_4.$get(); obj.Kind = v; $t3_4.$set(obj); } };
198 $t5_6 = { $get() { return $t3_4.$get().PubKey; }, $set(v) { const obj = $t3_4.$get(); obj.PubKey = v; $t3_4.$set(obj); } };
199 $t6_7 = myPubkey.$get();
200 $t7_8 = { $get() { return $t3_4.$get().Content; }, $set(v) { const obj = $t3_4.$get(); obj.Content = v; $t3_4.$set(obj); } };
201 $t8_9 = { $get() { return $t3_4.$get().Tags; }, $set(v) { const obj = $t3_4.$get(); obj.Tags = v; $t3_4.$set(obj); } };
202 $t9_10 = { $value: $rt.builtin.makeSlice(2, 2, null), $get() { return this.$value; }, $set(v) { this.$value = v; } };
203 $t10_11 = $t9_10.$get().addr(0);
204 $t11_12 = { $value: $rt.builtin.makeSlice(2, 2, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
205 $t12_13 = $t11_12.$get().addr(0);
206 $t12_13.$set('relay');
207 $t13_14 = $t11_12.$get().addr(1);
208 $t14_15 = $t0_1.$get();
209 $t13_14.$set($t14_15);
210 $t15_16 = $rt.builtin.sliceSlice($t11_12.$get(), undefined, undefined, undefined);
211 $t10_11.$set($t15_16);
212 $t16_17 = $t9_10.$get().addr(1);
213 $t17_18 = { $value: $rt.builtin.makeSlice(2, 2, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
214 $t18_19 = $t17_18.$get().addr(0);
215 $t18_19.$set('challenge');
216 $t19_20 = $t17_18.$get().addr(1);
217 $t19_20.$set(challenge);
218 $t20_21 = $rt.builtin.sliceSlice($t17_18.$get(), undefined, undefined, undefined);
219 $t16_17.$set($t20_21);
220 $t21_22 = $rt.builtin.sliceSlice($t9_10.$get(), undefined, undefined, undefined);
221 $t22_23 = { $get() { return $t3_4.$get().CreatedAt; }, $set(v) { const obj = $t3_4.$get(); obj.CreatedAt = v; $t3_4.$set(obj); } };
222 $t23_24 = common$jsbridge$sw.NowSeconds();
223 $t4_5.$set(22242);
224 $t5_6.$set($t6_7);
225 $t7_8.$set('');
226 $t8_9.$set($t21_22);
227 $t22_23.$set($t23_24);
228 $t24_25 = common$nostr.Event$ToJSON($t3_4);
229 $t25_26 = onRelayAuth$1.bind(null, $t0_1);
230 $t26_27 = cryptoProxy('signEvent', '', $t24_25, $t25_26);
231 return;
232 break;
233 }
234 }
235 }
236 }
237
238 function onRelayAuth$1(relayURL, signedJSON, errMsg) {
239 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10;
240 let $block = 0;
241 while (true) {
242 switch ($block) {
243 case 0: {
244 $t0_1 = (errMsg !== '');
245 if ($t0_1) {
246 $block = 1; break;
247 }
248 else {
249 $block = 3; break;
250 }
251 break;
252 }
253 case 1: {
254 return;
255 break;
256 }
257 case 2: {
258 $t1_2 = rpool.$get();
259 $t2_3 = relayURL.$get();
260 $t3_4 = common$relay.Pool$Get($t1_2, $t2_3);
261 $t4_5 = ($t3_4 !== null);
262 if ($t4_5) {
263 $block = 6; break;
264 }
265 else {
266 $block = 5; break;
267 }
268 break;
269 }
270 case 3: {
271 $t5_6 = (signedJSON === '');
272 if ($t5_6) {
273 $block = 1; break;
274 }
275 else {
276 $block = 2; break;
277 }
278 break;
279 }
280 case 4: {
281 $t6_7 = ('["AUTH",' + signedJSON);
282 $t7_8 = ($t6_7 + ']');
283 $t8_9 = common$relay.Conn$Send($t3_4, $t7_8);
284 $block = 5; break;
285 break;
286 }
287 case 5: {
288 return;
289 break;
290 }
291 case 6: {
292 $t9_10 = common$relay.Conn$IsOpen($t3_4);
293 if ($t9_10) {
294 $block = 4; break;
295 }
296 else {
297 $block = 5; break;
298 }
299 break;
300 }
301 }
302 }
303 }
304
305 export function relayPublish(ev) {
306 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9;
307 let $block = 0;
308 while (true) {
309 switch ($block) {
310 case 0: {
311 $t0_1 = writeRelays.$get();
312 $t1_2 = $rt.builtin.len($t0_1);
313 $t2_3 = -1;
314 $block = 1; break;
315 break;
316 }
317 case 1: {
318 $t3_4 = ($t2_3 + 1);
319 $t4_5 = ($t3_4 < $t1_2);
320 if ($t4_5) {
321 $block = 2; break;
322 }
323 else {
324 $block = 3; break;
325 }
326 break;
327 }
328 case 2: {
329 $t5_6 = $t0_1.addr($t3_4);
330 $t6_7 = $t5_6.$get();
331 $t7_8 = getConn($t6_7);
332 $t8_9 = common$relay.Conn$Publish($t7_8, ev);
333 $t2_3 = $t3_4;
334 $block = 1; break;
335 break;
336 }
337 case 3: {
338 return;
339 break;
340 }
341 }
342 }
343 }
344
345 export function relayPublishExcept(ev, exceptURL) {
346 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10;
347 let $block = 0;
348 while (true) {
349 switch ($block) {
350 case 0: {
351 $t0_1 = writeRelays.$get();
352 $t1_2 = $rt.builtin.len($t0_1);
353 $t2_3 = -1;
354 $block = 1; break;
355 break;
356 }
357 case 1: {
358 $t3_4 = ($t2_3 + 1);
359 $t4_5 = ($t3_4 < $t1_2);
360 if ($t4_5) {
361 $block = 2; break;
362 }
363 else {
364 $block = 3; break;
365 }
366 break;
367 }
368 case 2: {
369 $t5_6 = $t0_1.addr($t3_4);
370 $t6_7 = $t5_6.$get();
371 $t7_8 = ($t6_7 !== exceptURL);
372 if ($t7_8) {
373 $block = 4; break;
374 }
375 else {
376 $t2_3 = $t3_4;
377 $block = 1; break;
378 }
379 break;
380 }
381 case 3: {
382 return;
383 break;
384 }
385 case 4: {
386 $t8_9 = getConn($t6_7);
387 $t9_10 = common$relay.Conn$Publish($t8_9, ev);
388 $t2_3 = $t3_4;
389 $block = 1; break;
390 break;
391 }
392 }
393 }
394 }
395
396 export function urlSuffix(url) {
397 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21;
398 let $block = 0;
399 while (true) {
400 switch ($block) {
401 case 0: {
402 $t0_1 = $rt.builtin.len(url);
403 $t1_2 = Math.min($t0_1, 8);
404 $t2_3 = $rt.builtin.makeSlice(0, $t1_2, 0);
405 $t3_4 = $rt.builtin.len(url);
406 $t4_5 = ($t3_4 - $t1_2);
407 $t5_6 = $t2_3;
408 $t6_7 = $t4_5;
409 $block = 1; break;
410 break;
411 }
412 case 1: {
413 $t7_8 = $rt.builtin.len(url);
414 $t8_9 = ($t6_7 < $t7_8);
415 if ($t8_9) {
416 $block = 2; break;
417 }
418 else {
419 $block = 3; break;
420 }
421 break;
422 }
423 case 2: {
424 $rt.runtime.boundsCheck($t6_7, $rt.builtin.byteLen(url));
425 $t9_10 = $rt.builtin.stringByteAt(url, $t6_7);
426 $t10_11 = ($t9_10 >= 97);
427 if ($t10_11) {
428 $block = 7; break;
429 }
430 else {
431 $block = 6; break;
432 }
433 break;
434 }
435 case 3: {
436 $t11_12 = $rt.builtin.bytesToString($t5_6);
437 return $t11_12;
438 break;
439 }
440 case 4: {
441 $t12_13 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
442 $t13_14 = $t12_13.$get().addr(0);
443 $t13_14.$set($t9_10);
444 $t14_15 = $rt.builtin.sliceSlice($t12_13.$get(), undefined, undefined, undefined);
445 $t15_16 = $rt.builtin.appendSlice($t5_6, $t14_15);
446 $t16_17 = $t15_16;
447 $block = 5; break;
448 break;
449 }
450 case 5: {
451 $t17_18 = ($t6_7 + 1);
452 $t5_6 = $t16_17;
453 $t6_7 = $t17_18;
454 $block = 1; break;
455 break;
456 }
457 case 6: {
458 $t18_19 = ($t9_10 >= 48);
459 if ($t18_19) {
460 $block = 8; break;
461 }
462 else {
463 $t16_17 = $t5_6;
464 $block = 5; break;
465 }
466 break;
467 }
468 case 7: {
469 $t19_20 = ($t9_10 <= 122);
470 if ($t19_20) {
471 $block = 4; break;
472 }
473 else {
474 $block = 6; break;
475 }
476 break;
477 }
478 case 8: {
479 $t20_21 = ($t9_10 <= 57);
480 if ($t20_21) {
481 $block = 4; break;
482 }
483 else {
484 $t16_17 = $t5_6;
485 $block = 5; break;
486 }
487 break;
488 }
489 }
490 }
491 }
492
493 export function handleRelayInfo(clientID, relayURL) {
494 let $t0_1, $t1_2, $t2_3, $t3_4;
495 $t0_1 = jstr(relayURL);
496 $t1_2 = ('["RELAY_INFO",' + $t0_1);
497 $t2_3 = ($t1_2 + ',null]');
498 $t3_4 = fwd(clientID, $t2_3);
499 return;
500 }
501
502 export function main() {
503 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13;
504 $t0_1 = common$jsbridge$idb.SetVersion('v0.65.57');
505 $t1_2 = initSharedState();
506 $t2_3 = initRouter();
507 $t3_4 = initRelayProxy();
508 $t4_5 = common$jsbridge$sw.OnInstall(onInstall);
509 $t5_6 = common$jsbridge$sw.OnActivate(onActivate);
510 $t6_7 = common$jsbridge$sw.OnFetch(onFetch);
511 $t7_8 = common$jsbridge$sw.OnMessage(onMessage);
512 $t8_9 = connectBus();
513 $t9_10 = jstr('v0.65.57');
514 $t10_11 = ('["READY",' + $t9_10);
515 $t11_12 = ($t10_11 + ']');
516 $t12_13 = busSend('shell', $t11_12);
517 return;
518 }
519
520 export function onInstall(event) {
521 let $t0_1;
522 $t0_1 = common$jsbridge$sw.WaitUntil(event, onInstall$1);
523 return;
524 }
525
526 function onInstall$1(done) {
527 let $t0_1, $t1_2;
528 $t0_1 = common$jsbridge$sw.SkipWaiting();
529 $t1_2 = done();
530 return;
531 }
532
533 export function onActivate(event) {
534 let $t0_1;
535 $t0_1 = common$jsbridge$sw.WaitUntil(event, onActivate$1);
536 return;
537 }
538
539 function onActivate$1(done) {
540 let $t0_1, $t1_2, $t2_3;
541 $t0_1 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
542 $t0_1.$set(done);
543 $t1_2 = onActivate$1$1.bind(null, $t0_1);
544 $t2_3 = common$jsbridge$sw.ClaimClients($t1_2);
545 return;
546 }
547
548 function onActivate$1$1(done) {
549 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6;
550 $t0_1 = jstr('v0.65.57');
551 $t1_2 = ('["READY",' + $t0_1);
552 $t2_3 = ($t1_2 + ']');
553 $t3_4 = busSend('shell', $t2_3);
554 $t4_5 = done.$get();
555 $t5_6 = $t4_5();
556 return;
557 }
558
559 export function onFetch(event) {
560 return;
561 }
562
563 export function onMessage(event) {
564 return;
565 }
566
567 export function connectBus() {
568 let $t0_1;
569 $t0_1 = common$jsbridge$bc.Open('smesh-bus', connectBus$1);
570 bus.$set($t0_1);
571 return;
572 }
573
574 function connectBus$1(raw) {
575 let $t0_1;
576 $t0_1 = onBusMessage(raw);
577 return;
578 }
579
580 export function busSend(to, msg) {
581 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7;
582 $t0_1 = bus.$get();
583 $t1_2 = jstr(to);
584 $t2_3 = ('{"from":"relay","to":' + $t1_2);
585 $t3_4 = ($t2_3 + ',"msg":');
586 $t4_5 = ($t3_4 + msg);
587 $t5_6 = ($t4_5 + '}');
588 $t6_7 = common$jsbridge$bc.Send($t0_1, $t5_6);
589 return;
590 }
591
592 export function onBusMessage(raw) {
593 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61, $t61_62, $t62_63, $t63_64, $t64_65, $t65_66, $t66_67, $t67_68, $t68_69, $t69_70, $t70_71, $t71_72, $t72_73, $t73_74, $t74_75, $t75_76, $t76_77, $t77_78, $t78_79, $t79_80, $t80_81, $t81_82, $t82_83, $t83_84, $t84_85, $t85_86, $t86_87, $t87_88, $t88_89, $t89_90, $t90_91, $t91_92, $t92_93, $t93_94, $t94_95, $t95_96, $t96_97, $t97_98, $t98_99, $t99_100;
594 let $block = 0;
595 while (true) {
596 switch ($block) {
597 case 0: {
598 $t0_1 = jsonField(raw, 'from');
599 $t1_2 = ($t0_1 === 'relay');
600 if ($t1_2) {
601 $block = 1; break;
602 }
603 else {
604 $block = 2; break;
605 }
606 break;
607 }
608 case 1: {
609 return;
610 break;
611 }
612 case 2: {
613 $t2_3 = jsonField(raw, 'to');
614 $t3_4 = ($t2_3 !== 'relay');
615 if ($t3_4) {
616 $block = 5; break;
617 }
618 else {
619 $block = 4; break;
620 }
621 break;
622 }
623 case 3: {
624 return;
625 break;
626 }
627 case 4: {
628 $t4_5 = jsonFieldRaw(raw, 'msg');
629 $t5_6 = ($t4_5 === '');
630 if ($t5_6) {
631 $block = 6; break;
632 }
633 else {
634 $block = 7; break;
635 }
636 break;
637 }
638 case 5: {
639 $t6_7 = ($t2_3 !== '*');
640 if ($t6_7) {
641 $block = 3; break;
642 }
643 else {
644 $block = 4; break;
645 }
646 break;
647 }
648 case 6: {
649 return;
650 break;
651 }
652 case 7: {
653 $t7_8 = { $value: { s: '', i: 0 }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
654 $t8_9 = newMW($t4_5);
655 $t7_8.$set($rt.builtin.cloneValue($t8_9));
656 $t9_10 = mw$str($t7_8);
657 $t10_11 = ($t9_10 !== 'PING');
658 if ($t10_11) {
659 $block = 11; break;
660 }
661 else {
662 $block = 9; break;
663 }
664 break;
665 }
666 case 8: {
667 $t11_12 = ('relay: bus→' + $t9_10);
668 $t12_13 = common$jsbridge$sw.Log($t11_12);
669 $block = 9; break;
670 break;
671 }
672 case 9: {
673 $t13_14 = ($t9_10 === 'PING');
674 if ($t13_14) {
675 $block = 13; break;
676 }
677 else {
678 $block = 15; break;
679 }
680 break;
681 }
682 case 10: {
683 $t14_15 = ($t9_10 !== 'SAVE_DM');
684 if ($t14_15) {
685 $block = 8; break;
686 }
687 else {
688 $block = 9; break;
689 }
690 break;
691 }
692 case 11: {
693 $t15_16 = ($t9_10 !== 'SAVE_DM_QUIET');
694 if ($t15_16) {
695 $block = 10; break;
696 }
697 else {
698 $block = 9; break;
699 }
700 break;
701 }
702 case 12: {
703 return;
704 break;
705 }
706 case 13: {
707 $t16_17 = jstr('v0.65.57');
708 $t17_18 = ('["READY",' + $t16_17);
709 $t18_19 = ($t17_18 + ']');
710 $t19_20 = busSend('shell', $t18_19);
711 return;
712 break;
713 }
714 case 14: {
715 $t20_21 = mw$str($t7_8);
716 $t21_22 = identitySetPubkey($t20_21);
717 $block = 12; break;
718 break;
719 }
720 case 15: {
721 $t22_23 = ($t9_10 === 'SET_PUBKEY');
722 if ($t22_23) {
723 $block = 14; break;
724 }
725 else {
726 $block = 17; break;
727 }
728 break;
729 }
730 case 16: {
731 $t23_24 = identityClearKey();
732 writeRelays.$set(null);
733 $block = 12; break;
734 break;
735 }
736 case 17: {
737 $t24_25 = ($t9_10 === 'CLEAR_KEY');
738 if ($t24_25) {
739 $block = 16; break;
740 }
741 else {
742 $block = 19; break;
743 }
744 break;
745 }
746 case 18: {
747 $t25_26 = mw$strs($t7_8);
748 writeRelays.$set($t25_26);
749 $block = 12; break;
750 break;
751 }
752 case 19: {
753 $t26_27 = ($t9_10 === 'SET_WRITE_RELAYS');
754 if ($t26_27) {
755 $block = 18; break;
756 }
757 else {
758 $block = 21; break;
759 }
760 break;
761 }
762 case 20: {
763 $t27_28 = mw$str($t7_8);
764 $t28_29 = mw$str($t7_8);
765 $t29_30 = mw$raw($t7_8);
766 $t30_31 = routerReq($t27_28, $t28_29, $t29_30);
767 $block = 12; break;
768 break;
769 }
770 case 21: {
771 $t31_32 = ($t9_10 === 'REQ');
772 if ($t31_32) {
773 $block = 20; break;
774 }
775 else {
776 $block = 23; break;
777 }
778 break;
779 }
780 case 22: {
781 $t32_33 = mw$str($t7_8);
782 $t33_34 = routerClose($t32_33);
783 $block = 12; break;
784 break;
785 }
786 case 23: {
787 $t34_35 = ($t9_10 === 'CLOSE');
788 if ($t34_35) {
789 $block = 22; break;
790 }
791 else {
792 $block = 25; break;
793 }
794 break;
795 }
796 case 24: {
797 $t35_36 = mw$str($t7_8);
798 $t36_37 = mw$raw($t7_8);
799 $t37_38 = routerPublish($t35_36, $t36_37);
800 $block = 12; break;
801 break;
802 }
803 case 25: {
804 $t38_39 = ($t9_10 === 'EVENT');
805 if ($t38_39) {
806 $block = 24; break;
807 }
808 else {
809 $block = 27; break;
810 }
811 break;
812 }
813 case 26: {
814 $t39_40 = mw$raw($t7_8);
815 $t40_41 = mw$strs($t7_8);
816 $t41_42 = routerPublishToRelays($t39_40, $t40_41);
817 $block = 12; break;
818 break;
819 }
820 case 27: {
821 $t42_43 = ($t9_10 === 'MLS_RELAY_PUBLISH');
822 if ($t42_43) {
823 $block = 26; break;
824 }
825 else {
826 $block = 29; break;
827 }
828 break;
829 }
830 case 28: {
831 $t43_44 = mw$str($t7_8);
832 $t44_45 = mw$str($t7_8);
833 $t45_46 = mw$raw($t7_8);
834 $t46_47 = mw$strs($t7_8);
835 $t47_48 = routerProxy($t43_44, $t44_45, $t45_46, $t46_47);
836 $block = 12; break;
837 break;
838 }
839 case 29: {
840 $t48_49 = ($t9_10 === 'PROXY');
841 if ($t48_49) {
842 $block = 28; break;
843 }
844 else {
845 $block = 31; break;
846 }
847 break;
848 }
849 case 30: {
850 $t49_50 = mw$str($t7_8);
851 $t50_51 = mw$str($t7_8);
852 $t51_52 = handleRelayInfo($t49_50, $t50_51);
853 $block = 12; break;
854 break;
855 }
856 case 31: {
857 $t52_53 = ($t9_10 === 'RELAY_INFO');
858 if ($t52_53) {
859 $block = 30; break;
860 }
861 else {
862 $block = 33; break;
863 }
864 break;
865 }
866 case 32: {
867 $t53_54 = mw$str($t7_8);
868 $t54_55 = mw$str($t7_8);
869 $t55_56 = mw$raw($t7_8);
870 $t56_57 = routerSign($t53_54, $t54_55, $t55_56);
871 $block = 12; break;
872 break;
873 }
874 case 33: {
875 $t57_58 = ($t9_10 === 'SIGN');
876 if ($t57_58) {
877 $block = 32; break;
878 }
879 else {
880 $block = 35; break;
881 }
882 break;
883 }
884 case 34: {
885 $t58_59 = mw$str($t7_8);
886 $t59_60 = mw$str($t7_8);
887 $t60_61 = mw$strs($t7_8);
888 $t61_62 = routerBroadcast($t58_59, $t59_60, $t60_61);
889 $block = 12; break;
890 break;
891 }
892 case 35: {
893 $t62_63 = ($t9_10 === 'BROADCAST');
894 if ($t62_63) {
895 $block = 34; break;
896 }
897 else {
898 $block = 37; break;
899 }
900 break;
901 }
902 case 36: {
903 $t63_64 = mw$str($t7_8);
904 $t64_65 = routerDMList($t63_64);
905 $block = 12; break;
906 break;
907 }
908 case 37: {
909 $t65_66 = ($t9_10 === 'DM_LIST');
910 if ($t65_66) {
911 $block = 36; break;
912 }
913 else {
914 $block = 39; break;
915 }
916 break;
917 }
918 case 38: {
919 $t66_67 = mw$str($t7_8);
920 $t67_68 = mw$str($t7_8);
921 $t68_69 = mw$num($t7_8);
922 $t69_70 = $t68_69;
923 $t70_71 = mw$num($t7_8);
924 $t71_72 = routerDMHistory($t66_67, $t67_68, $t69_70, $t70_71);
925 $block = 12; break;
926 break;
927 }
928 case 39: {
929 $t72_73 = ($t9_10 === 'DM_HISTORY');
930 if ($t72_73) {
931 $block = 38; break;
932 }
933 else {
934 $block = 41; break;
935 }
936 break;
937 }
938 case 40: {
939 $t73_74 = { $value: '', $get() { return this.$value; }, $set(v) { this.$value = v; } };
940 $t74_75 = mw$raw($t7_8);
941 $t73_74.$set($t74_75);
942 $t75_76 = $t73_74.$get();
943 $t76_77 = onBusMessage$1.bind(null, $t73_74);
944 $t77_78 = cacheSaveDM($t75_76, $t76_77);
945 $block = 12; break;
946 break;
947 }
948 case 41: {
949 $t78_79 = ($t9_10 === 'SAVE_DM');
950 if ($t78_79) {
951 $block = 40; break;
952 }
953 else {
954 $block = 43; break;
955 }
956 break;
957 }
958 case 42: {
959 $t79_80 = mw$raw($t7_8);
960 $t80_81 = cacheSaveDM($t79_80, onBusMessage$2);
961 $block = 12; break;
962 break;
963 }
964 case 43: {
965 $t81_82 = ($t9_10 === 'SAVE_DM_QUIET');
966 if ($t81_82) {
967 $block = 42; break;
968 }
969 else {
970 $block = 45; break;
971 }
972 break;
973 }
974 case 44: {
975 $t82_83 = { $value: '', $get() { return this.$value; }, $set(v) { this.$value = v; } };
976 $t83_84 = mw$str($t7_8);
977 $t82_83.$set($t83_84);
978 $t84_85 = $t82_83.$get();
979 $t85_86 = onBusMessage$3.bind(null, $t82_83);
980 $t86_87 = cacheClearDMsByPeer($t84_85, $t85_86);
981 $block = 12; break;
982 break;
983 }
984 case 45: {
985 $t87_88 = ($t9_10 === 'CLEAR_DM_HISTORY');
986 if ($t87_88) {
987 $block = 44; break;
988 }
989 else {
990 $block = 47; break;
991 }
992 break;
993 }
994 case 46: {
995 $t88_89 = mw$num($t7_8);
996 $t89_90 = $t88_89;
997 $t90_91 = mw$str($t7_8);
998 $t91_92 = mw$str($t7_8);
999 $t92_93 = cryptoCBs.$get();
1000 { const $r = $rt.builtin.mapLookup($t92_93, $t89_90); $t93_94 = [$r.value, $r.ok]; }
1001 $t94_95 = $t93_94[0];
1002 $t95_96 = $t93_94[1];
1003 if ($t95_96) {
1004 $block = 48; break;
1005 }
1006 else {
1007 $block = 12; break;
1008 }
1009 break;
1010 }
1011 case 47: {
1012 $t96_97 = ($t9_10 === 'CRYPTO_RESULT');
1013 if ($t96_97) {
1014 $block = 46; break;
1015 }
1016 else {
1017 $block = 12; break;
1018 }
1019 break;
1020 }
1021 case 48: {
1022 $t97_98 = cryptoCBs.$get();
1023 $t98_99 = $rt.builtin.mapDelete($t97_98, $t89_90);
1024 $t99_100 = $t94_95($t90_91, $t91_92);
1025 $block = 12; break;
1026 break;
1027 }
1028 }
1029 }
1030 }
1031
1032 function onBusMessage$1(dmJSON, result) {
1033 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5;
1034 let $block = 0;
1035 while (true) {
1036 switch ($block) {
1037 case 0: {
1038 $t0_1 = (result !== 'duplicate');
1039 if ($t0_1) {
1040 $block = 1; break;
1041 }
1042 else {
1043 $block = 2; break;
1044 }
1045 break;
1046 }
1047 case 1: {
1048 $t1_2 = dmJSON.$get();
1049 $t2_3 = ('["DM_RECEIVED",' + $t1_2);
1050 $t3_4 = ($t2_3 + ']');
1051 $t4_5 = fwdAll($t3_4);
1052 $block = 2; break;
1053 break;
1054 }
1055 case 2: {
1056 return;
1057 break;
1058 }
1059 }
1060 }
1061 }
1062
1063 function onBusMessage$2(result) {
1064 return;
1065 }
1066
1067 function onBusMessage$3(peer) {
1068 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5;
1069 $t0_1 = peer.$get();
1070 $t1_2 = jstr($t0_1);
1071 $t2_3 = ('["DM_HISTORY_CLEARED",' + $t1_2);
1072 $t3_4 = ($t2_3 + ']');
1073 $t4_5 = busSend('shell', $t3_4);
1074 return;
1075 }
1076
1077 export function initRouter() {
1078 let $t0_1, $t1_2;
1079 $t0_1 = $rt.builtin.makeMap('string');
1080 clientSubs.$set($t0_1);
1081 $t1_2 = $rt.builtin.makeMap('string');
1082 proxySubs.$set($t1_2);
1083 return;
1084 }
1085
1086 export function routerReq(clientID, subID, filterRaw) {
1087 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17;
1088 let $block = 0;
1089 while (true) {
1090 switch ($block) {
1091 case 0: {
1092 $t0_1 = { $value: '', $get() { return this.$value; }, $set(v) { this.$value = v; } };
1093 $t0_1.$set(clientID);
1094 $t1_2 = { $value: '', $get() { return this.$value; }, $set(v) { this.$value = v; } };
1095 $t1_2.$set(subID);
1096 $t2_3 = common$nostr.ParseFilter(filterRaw);
1097 $t3_4 = ($t2_3 === null);
1098 if ($t3_4) {
1099 $block = 1; break;
1100 }
1101 else {
1102 $block = 2; break;
1103 }
1104 break;
1105 }
1106 case 1: {
1107 $t4_5 = common$jsbridge$sw.Log('relay-sw: REQ parse filter FAILED');
1108 return;
1109 break;
1110 }
1111 case 2: {
1112 $t5_6 = clientSubs.$get();
1113 $t6_7 = $t1_2.$get();
1114 $t7_8 = { $value: { filters: null, filterRaw: '', clientID: '' }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
1115 $t8_9 = { $get() { return $t7_8.$get().filters; }, $set(v) { const obj = $t7_8.$get(); obj.filters = v; $t7_8.$set(obj); } };
1116 $t9_10 = { $value: $rt.builtin.makeSlice(1, 1, null), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1117 $t10_11 = $t9_10.$get().addr(0);
1118 $t10_11.$set($t2_3);
1119 $t11_12 = $rt.builtin.sliceSlice($t9_10.$get(), undefined, undefined, undefined);
1120 $t12_13 = { $get() { return $t7_8.$get().filterRaw; }, $set(v) { const obj = $t7_8.$get(); obj.filterRaw = v; $t7_8.$set(obj); } };
1121 $t13_14 = { $get() { return $t7_8.$get().clientID; }, $set(v) { const obj = $t7_8.$get(); obj.clientID = v; $t7_8.$set(obj); } };
1122 $t14_15 = $t0_1.$get();
1123 $t8_9.$set($t11_12);
1124 $t12_13.$set(filterRaw);
1125 $t13_14.$set($t14_15);
1126 $rt.builtin.mapUpdate($t5_6, $t6_7, $t7_8);
1127 $t15_16 = routerReq$1.bind(null, $t0_1, $t1_2);
1128 $t16_17 = cacheQuery(filterRaw, $t15_16);
1129 return;
1130 break;
1131 }
1132 }
1133 }
1134 }
1135
1136 function routerReq$1(clientID, subID, eventsJSON) {
1137 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22;
1138 let $block = 0;
1139 while (true) {
1140 switch ($block) {
1141 case 0: {
1142 $t0_1 = common$nostr.ParseEventsJSON(eventsJSON);
1143 $t1_2 = $rt.builtin.len($t0_1);
1144 $t2_3 = -1;
1145 $block = 1; break;
1146 break;
1147 }
1148 case 1: {
1149 $t3_4 = ($t2_3 + 1);
1150 $t4_5 = ($t3_4 < $t1_2);
1151 if ($t4_5) {
1152 $block = 2; break;
1153 }
1154 else {
1155 $block = 3; break;
1156 }
1157 break;
1158 }
1159 case 2: {
1160 $t5_6 = $t0_1.addr($t3_4);
1161 $t6_7 = $t5_6.$get();
1162 $t7_8 = clientID.$get();
1163 $t8_9 = subID.$get();
1164 $t9_10 = jstr($t8_9);
1165 $t10_11 = ('["EVENT",' + $t9_10);
1166 $t11_12 = ($t10_11 + ',');
1167 $t12_13 = common$nostr.Event$ToJSON($t6_7);
1168 $t13_14 = ($t11_12 + $t12_13);
1169 $t14_15 = ($t13_14 + ']');
1170 $t15_16 = fwd($t7_8, $t14_15);
1171 $t2_3 = $t3_4;
1172 $block = 1; break;
1173 break;
1174 }
1175 case 3: {
1176 $t16_17 = clientID.$get();
1177 $t17_18 = subID.$get();
1178 $t18_19 = jstr($t17_18);
1179 $t19_20 = ('["EOSE",' + $t18_19);
1180 $t20_21 = ($t19_20 + ']');
1181 $t21_22 = fwd($t16_17, $t20_21);
1182 return;
1183 break;
1184 }
1185 }
1186 }
1187 }
1188
1189 export function routerClose(subID) {
1190 let $t0_1, $t1_2, $t2_3;
1191 $t0_1 = clientSubs.$get();
1192 $t1_2 = $rt.builtin.mapDelete($t0_1, subID);
1193 $t2_3 = routerCleanupProxy(subID);
1194 return;
1195 }
1196
1197 export function routerPublish(clientID, eventRaw) {
1198 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15;
1199 let $block = 0;
1200 while (true) {
1201 switch ($block) {
1202 case 0: {
1203 $t0_1 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
1204 $t1_2 = common$nostr.ParseEvent(eventRaw);
1205 $t0_1.$set($t1_2);
1206 $t2_3 = $t0_1.$get();
1207 $t3_4 = ($t2_3 === null);
1208 if ($t3_4) {
1209 $block = 1; break;
1210 }
1211 else {
1212 $block = 2; break;
1213 }
1214 break;
1215 }
1216 case 1: {
1217 return;
1218 break;
1219 }
1220 case 2: {
1221 $t4_5 = routerPublish$1.bind(null, $t0_1);
1222 $t5_6 = cacheStore(eventRaw, $t4_5);
1223 $t6_7 = $t0_1.$get();
1224 $t7_8 = relayPublish($t6_7);
1225 $t8_9 = $t0_1.$get();
1226 $t9_10 = { $get() { return $t8_9.$get().ID; }, $set(v) { const obj = $t8_9.$get(); obj.ID = v; $t8_9.$set(obj); } };
1227 $t10_11 = $t9_10.$get();
1228 $t11_12 = jstr($t10_11);
1229 $t12_13 = ('["OK",' + $t11_12);
1230 $t13_14 = ($t12_13 + ',true,""]');
1231 $t14_15 = fwd(clientID, $t13_14);
1232 return;
1233 break;
1234 }
1235 }
1236 }
1237 }
1238
1239 function routerPublish$1(ev, saved) {
1240 let $t0_1, $t1_2;
1241 let $block = 0;
1242 while (true) {
1243 switch ($block) {
1244 case 0: {
1245 if (saved) {
1246 $block = 1; break;
1247 }
1248 else {
1249 $block = 2; break;
1250 }
1251 break;
1252 }
1253 case 1: {
1254 $t0_1 = ev.$get();
1255 $t1_2 = pushToMatchingSubs($t0_1);
1256 $block = 2; break;
1257 break;
1258 }
1259 case 2: {
1260 return;
1261 break;
1262 }
1263 }
1264 }
1265 }
1266
1267 export function routerPublishToRelays(eventRaw, relayURLs) {
1268 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44;
1269 let $block = 0;
1270 while (true) {
1271 switch ($block) {
1272 case 0: {
1273 $t0_1 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
1274 $t1_2 = common$nostr.ParseEvent(eventRaw);
1275 $t0_1.$set($t1_2);
1276 $t2_3 = $t0_1.$get();
1277 $t3_4 = ($t2_3 === null);
1278 if ($t3_4) {
1279 $block = 1; break;
1280 }
1281 else {
1282 $block = 2; break;
1283 }
1284 break;
1285 }
1286 case 1: {
1287 $t4_5 = $rt.builtin.len(eventRaw);
1288 $t5_6 = $t4_5;
1289 $t6_7 = common$helpers.Itoa($t5_6);
1290 $t7_8 = ('relay: publishToRelays PARSE FAILED len=' + $t6_7);
1291 $t8_9 = common$jsbridge$sw.Log($t7_8);
1292 return;
1293 break;
1294 }
1295 case 2: {
1296 $t9_10 = $t0_1.$get();
1297 $t10_11 = { $get() { return $t9_10.$get().Kind; }, $set(v) { const obj = $t9_10.$get(); obj.Kind = v; $t9_10.$set(obj); } };
1298 $t11_12 = $t10_11.$get();
1299 $t12_13 = $t11_12;
1300 $t13_14 = common$helpers.Itoa($t12_13);
1301 $t14_15 = ('relay: publishToRelays kind=' + $t13_14);
1302 $t15_16 = ($t14_15 + ' id=');
1303 $t16_17 = $t0_1.$get();
1304 $t17_18 = { $get() { return $t16_17.$get().ID; }, $set(v) { const obj = $t16_17.$get(); obj.ID = v; $t16_17.$set(obj); } };
1305 $t18_19 = $t17_18.$get();
1306 $t19_20 = $rt.builtin.stringSlice($t18_19, undefined, 16);
1307 $t20_21 = ($t15_16 + $t19_20);
1308 $t21_22 = ($t20_21 + ' relays=');
1309 $t22_23 = $rt.builtin.len(relayURLs);
1310 $t23_24 = $t22_23;
1311 $t24_25 = common$helpers.Itoa($t23_24);
1312 $t25_26 = ($t21_22 + $t24_25);
1313 $t26_27 = common$jsbridge$sw.Log($t25_26);
1314 $t27_28 = routerPublishToRelays$1.bind(null, $t0_1);
1315 $t28_29 = cacheStore(eventRaw, $t27_28);
1316 $t29_30 = $rt.builtin.len(relayURLs);
1317 $t30_31 = -1;
1318 $block = 3; break;
1319 break;
1320 }
1321 case 3: {
1322 $t31_32 = ($t30_31 + 1);
1323 $t32_33 = ($t31_32 < $t29_30);
1324 if ($t32_33) {
1325 $block = 4; break;
1326 }
1327 else {
1328 $block = 5; break;
1329 }
1330 break;
1331 }
1332 case 4: {
1333 $t33_34 = relayURLs.addr($t31_32);
1334 $t34_35 = $t33_34.$get();
1335 $t35_36 = getConn($t34_35);
1336 $t36_37 = ('relay: publish to ' + $t34_35);
1337 $t37_38 = ($t36_37 + ' open=');
1338 $t38_39 = common$relay.Conn$IsOpen($t35_36);
1339 $t39_40 = boolStr($t38_39);
1340 $t40_41 = ($t37_38 + $t39_40);
1341 $t41_42 = common$jsbridge$sw.Log($t40_41);
1342 $t42_43 = $t0_1.$get();
1343 $t43_44 = common$relay.Conn$Publish($t35_36, $t42_43);
1344 $t30_31 = $t31_32;
1345 $block = 3; break;
1346 break;
1347 }
1348 case 5: {
1349 return;
1350 break;
1351 }
1352 }
1353 }
1354 }
1355
1356 function routerPublishToRelays$1(ev, saved) {
1357 let $t0_1, $t1_2;
1358 let $block = 0;
1359 while (true) {
1360 switch ($block) {
1361 case 0: {
1362 if (saved) {
1363 $block = 1; break;
1364 }
1365 else {
1366 $block = 2; break;
1367 }
1368 break;
1369 }
1370 case 1: {
1371 $t0_1 = ev.$get();
1372 $t1_2 = pushToMatchingSubs($t0_1);
1373 $block = 2; break;
1374 break;
1375 }
1376 case 2: {
1377 return;
1378 break;
1379 }
1380 }
1381 }
1382 }
1383
1384 export function routerProxy(clientID, subID, filterRaw, relayURLs) {
1385 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34;
1386 let $block = 0;
1387 while (true) {
1388 switch ($block) {
1389 case 0: {
1390 $t0_1 = routerCleanupProxy(subID);
1391 $t1_2 = parseFilters(filterRaw);
1392 $t2_3 = $rt.builtin.len($t1_2);
1393 $t3_4 = ($t2_3 === 0);
1394 if ($t3_4) {
1395 $block = 1; break;
1396 }
1397 else {
1398 $block = 2; break;
1399 }
1400 break;
1401 }
1402 case 1: {
1403 $t4_5 = common$jsbridge$sw.Log('relay-sw: PROXY parse filter FAILED');
1404 return;
1405 break;
1406 }
1407 case 2: {
1408 $t5_6 = clientSubs.$get();
1409 $t6_7 = { $value: { filters: null, filterRaw: '', clientID: '' }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
1410 $t7_8 = { $get() { return $t6_7.$get().filters; }, $set(v) { const obj = $t6_7.$get(); obj.filters = v; $t6_7.$set(obj); } };
1411 $t8_9 = { $get() { return $t6_7.$get().filterRaw; }, $set(v) { const obj = $t6_7.$get(); obj.filterRaw = v; $t6_7.$set(obj); } };
1412 $t9_10 = { $get() { return $t6_7.$get().clientID; }, $set(v) { const obj = $t6_7.$get(); obj.clientID = v; $t6_7.$set(obj); } };
1413 $t7_8.$set($t1_2);
1414 $t8_9.$set(filterRaw);
1415 $t9_10.$set(clientID);
1416 $rt.builtin.mapUpdate($t5_6, subID, $t6_7);
1417 $t10_11 = $rt.builtin.makeMap('string');
1418 $t11_12 = ('p_' + subID);
1419 $t12_13 = ($t11_12 + '_');
1420 $t13_14 = proxySubs.$get();
1421 $t14_15 = { $value: { remoteIDs: null, relayCount: 0, eoseCount: 0, timer: 0, done: false }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
1422 $t15_16 = { $get() { return $t14_15.$get().remoteIDs; }, $set(v) { const obj = $t14_15.$get(); obj.remoteIDs = v; $t14_15.$set(obj); } };
1423 $t16_17 = { $get() { return $t14_15.$get().relayCount; }, $set(v) { const obj = $t14_15.$get(); obj.relayCount = v; $t14_15.$set(obj); } };
1424 $t17_18 = $rt.builtin.len(relayURLs);
1425 $t15_16.$set($t10_11);
1426 $t16_17.$set($t17_18);
1427 $rt.builtin.mapUpdate($t13_14, subID, $t14_15);
1428 $t18_19 = $rt.builtin.len(relayURLs);
1429 $t19_20 = -1;
1430 $block = 3; break;
1431 break;
1432 }
1433 case 3: {
1434 $t20_21 = ($t19_20 + 1);
1435 $t21_22 = ($t20_21 < $t18_19);
1436 if ($t21_22) {
1437 $block = 4; break;
1438 }
1439 else {
1440 $block = 5; break;
1441 }
1442 break;
1443 }
1444 case 4: {
1445 $t22_23 = relayURLs.addr($t20_21);
1446 $t23_24 = $t22_23.$get();
1447 $t24_25 = urlSuffix($t23_24);
1448 $t25_26 = ($t12_13 + $t24_25);
1449 $rt.builtin.mapUpdate($t10_11, $t25_26, true);
1450 $t26_27 = getConn($t23_24);
1451 $t27_28 = common$relay.Conn$Subscribe($t26_27, $t25_26, $t1_2);
1452 $t19_20 = $t20_21;
1453 $block = 3; break;
1454 break;
1455 }
1456 case 5: {
1457 $t28_29 = { $value: '', $get() { return this.$value; }, $set(v) { this.$value = v; } };
1458 $t28_29.$set(subID);
1459 $t29_30 = proxySubs.$get();
1460 $t30_31 = $rt.builtin.mapLookup($t29_30, subID).value;
1461 $t31_32 = routerProxy$1.bind(null, $t28_29);
1462 $t32_33 = common$jsbridge$sw.SetTimeout(10000, $t31_32);
1463 $t33_34 = { $get() { return $t30_31.$get().timer; }, $set(v) { const obj = $t30_31.$get(); obj.timer = v; $t30_31.$set(obj); } };
1464 $t33_34.$set($t32_33);
1465 return;
1466 break;
1467 }
1468 }
1469 }
1470 }
1471
1472 function routerProxy$1(proxyID) {
1473 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20;
1474 let $block = 0;
1475 while (true) {
1476 switch ($block) {
1477 case 0: {
1478 $t0_1 = proxySubs.$get();
1479 $t1_2 = proxyID.$get();
1480 { const $r = $rt.builtin.mapLookup($t0_1, $t1_2); $t2_3 = [$r.value, $r.ok]; }
1481 $t3_4 = $t2_3[0];
1482 $t4_5 = $t2_3[1];
1483 if ($t4_5) {
1484 $block = 3; break;
1485 }
1486 else {
1487 $block = 2; break;
1488 }
1489 break;
1490 }
1491 case 1: {
1492 $t5_6 = { $get() { return $t3_4.$get().done; }, $set(v) { const obj = $t3_4.$get(); obj.done = v; $t3_4.$set(obj); } };
1493 $t5_6.$set(true);
1494 $t6_7 = clientSubs.$get();
1495 $t7_8 = proxyID.$get();
1496 { const $r = $rt.builtin.mapLookup($t6_7, $t7_8); $t8_9 = [$r.value, $r.ok]; }
1497 $t9_10 = $t8_9[0];
1498 $t10_11 = $t8_9[1];
1499 if ($t10_11) {
1500 $block = 4; break;
1501 }
1502 else {
1503 $block = 2; break;
1504 }
1505 break;
1506 }
1507 case 2: {
1508 return;
1509 break;
1510 }
1511 case 3: {
1512 $t11_12 = { $get() { return $t3_4.$get().done; }, $set(v) { const obj = $t3_4.$get(); obj.done = v; $t3_4.$set(obj); } };
1513 $t12_13 = $t11_12.$get();
1514 if ($t12_13) {
1515 $block = 2; break;
1516 }
1517 else {
1518 $block = 1; break;
1519 }
1520 break;
1521 }
1522 case 4: {
1523 $t13_14 = { $get() { return $t9_10.$get().clientID; }, $set(v) { const obj = $t9_10.$get(); obj.clientID = v; $t9_10.$set(obj); } };
1524 $t14_15 = $t13_14.$get();
1525 $t15_16 = proxyID.$get();
1526 $t16_17 = jstr($t15_16);
1527 $t17_18 = ('["EOSE",' + $t16_17);
1528 $t18_19 = ($t17_18 + ']');
1529 $t19_20 = fwd($t14_15, $t18_19);
1530 $block = 2; break;
1531 break;
1532 }
1533 }
1534 }
1535 }
1536
1537 export function routerCleanupProxy(proxyID) {
1538 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42;
1539 let $block = 0;
1540 while (true) {
1541 switch ($block) {
1542 case 0: {
1543 $t0_1 = proxySubs.$get();
1544 { const $r = $rt.builtin.mapLookup($t0_1, proxyID); $t1_2 = [$r.value, $r.ok]; }
1545 $t2_3 = $t1_2[0];
1546 $t3_4 = $t1_2[1];
1547 if ($t3_4) {
1548 $block = 2; break;
1549 }
1550 else {
1551 $block = 1; break;
1552 }
1553 break;
1554 }
1555 case 1: {
1556 return;
1557 break;
1558 }
1559 case 2: {
1560 $t4_5 = { $get() { return $t2_3.$get().timer; }, $set(v) { const obj = $t2_3.$get(); obj.timer = v; $t2_3.$set(obj); } };
1561 $t5_6 = $t4_5.$get();
1562 $t6_7 = common$jsbridge$sw.ClearTimeout($t5_6);
1563 $t7_8 = { $get() { return $t2_3.$get().done; }, $set(v) { const obj = $t2_3.$get(); obj.done = v; $t2_3.$set(obj); } };
1564 $t8_9 = $t7_8.$get();
1565 if ($t8_9) {
1566 $block = 4; break;
1567 }
1568 else {
1569 $block = 3; break;
1570 }
1571 break;
1572 }
1573 case 3: {
1574 $t9_10 = clientSubs.$get();
1575 { const $r = $rt.builtin.mapLookup($t9_10, proxyID); $t10_11 = [$r.value, $r.ok]; }
1576 $t11_12 = $t10_11[0];
1577 $t12_13 = $t10_11[1];
1578 if ($t12_13) {
1579 $block = 5; break;
1580 }
1581 else {
1582 $block = 4; break;
1583 }
1584 break;
1585 }
1586 case 4: {
1587 $t13_14 = { $get() { return $t2_3.$get().remoteIDs; }, $set(v) { const obj = $t2_3.$get(); obj.remoteIDs = v; $t2_3.$set(obj); } };
1588 $t14_15 = $t13_14.$get();
1589 $t15_16 = { $entries: [...$t14_15.entries()], $pos: 0, next() { if (this.$pos >= this.$entries.length) return [false, null, null]; const [k, v] = this.$entries[this.$pos++]; return [true, k, v]; } };
1590 $block = 6; break;
1591 break;
1592 }
1593 case 5: {
1594 $t16_17 = { $get() { return $t11_12.$get().clientID; }, $set(v) { const obj = $t11_12.$get(); obj.clientID = v; $t11_12.$set(obj); } };
1595 $t17_18 = $t16_17.$get();
1596 $t18_19 = jstr(proxyID);
1597 $t19_20 = ('["EOSE",' + $t18_19);
1598 $t20_21 = ($t19_20 + ']');
1599 $t21_22 = fwd($t17_18, $t20_21);
1600 $block = 4; break;
1601 break;
1602 }
1603 case 6: {
1604 $t22_23 = $t15_16.next();
1605 $t23_24 = $t22_23[0];
1606 if ($t23_24) {
1607 $block = 7; break;
1608 }
1609 else {
1610 $block = 8; break;
1611 }
1612 break;
1613 }
1614 case 7: {
1615 $t24_25 = $t22_23[1];
1616 $t25_26 = rpool.$get();
1617 $t26_27 = common$relay.Pool$URLs($t25_26);
1618 $t27_28 = $rt.builtin.len($t26_27);
1619 $t32_33 = -1;
1620 $block = 9; break;
1621 break;
1622 }
1623 case 8: {
1624 $t28_29 = proxySubs.$get();
1625 $t29_30 = $rt.builtin.mapDelete($t28_29, proxyID);
1626 $t30_31 = clientSubs.$get();
1627 $t31_32 = $rt.builtin.mapDelete($t30_31, proxyID);
1628 return;
1629 break;
1630 }
1631 case 9: {
1632 $t33_34 = ($t32_33 + 1);
1633 $t34_35 = ($t33_34 < $t27_28);
1634 if ($t34_35) {
1635 $block = 10; break;
1636 }
1637 else {
1638 $block = 6; break;
1639 }
1640 break;
1641 }
1642 case 10: {
1643 $t35_36 = $t26_27.addr($t33_34);
1644 $t36_37 = $t35_36.$get();
1645 $t37_38 = rpool.$get();
1646 $t38_39 = common$relay.Pool$Get($t37_38, $t36_37);
1647 $t39_40 = ($t38_39 !== null);
1648 if ($t39_40) {
1649 $block = 12; break;
1650 }
1651 else {
1652 $t32_33 = $t33_34;
1653 $block = 9; break;
1654 }
1655 break;
1656 }
1657 case 11: {
1658 $t40_41 = common$relay.Conn$CloseSubscription($t38_39, $t24_25);
1659 $t32_33 = $t33_34;
1660 $block = 9; break;
1661 break;
1662 }
1663 case 12: {
1664 $t41_42 = common$relay.Conn$IsOpen($t38_39);
1665 if ($t41_42) {
1666 $block = 11; break;
1667 }
1668 else {
1669 $t32_33 = $t33_34;
1670 $block = 9; break;
1671 }
1672 break;
1673 }
1674 }
1675 }
1676 }
1677
1678 export function routerOnRelayEvent(relayURL, ev) {
1679 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8;
1680 $t0_1 = { $value: '', $get() { return this.$value; }, $set(v) { this.$value = v; } };
1681 $t0_1.$set(relayURL);
1682 $t1_2 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
1683 $t1_2.$set(ev);
1684 $t2_3 = $t1_2.$get();
1685 $t3_4 = common$nostr.Event$ToJSON($t2_3);
1686 $t4_5 = $t1_2.$get();
1687 $t5_6 = pushToMatchingSubs($t4_5);
1688 $t6_7 = routerOnRelayEvent$1.bind(null, $t1_2, $t0_1);
1689 $t7_8 = cacheStore($t3_4, $t6_7);
1690 return;
1691 }
1692
1693 function routerOnRelayEvent$1(ev, relayURL, saved) {
1694 let $t0_1, $t1_2, $t2_3;
1695 let $block = 0;
1696 while (true) {
1697 switch ($block) {
1698 case 0: {
1699 if (saved) {
1700 $block = 1; break;
1701 }
1702 else {
1703 $block = 2; break;
1704 }
1705 break;
1706 }
1707 case 1: {
1708 $t0_1 = ev.$get();
1709 $t1_2 = relayURL.$get();
1710 $t2_3 = relayPublishExcept($t0_1, $t1_2);
1711 $block = 2; break;
1712 break;
1713 }
1714 case 2: {
1715 return;
1716 break;
1717 }
1718 }
1719 }
1720 }
1721
1722 export function routerOnRelayEOSE(subID) {
1723 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22;
1724 let $block = 0;
1725 while (true) {
1726 switch ($block) {
1727 case 0: {
1728 $t0_1 = proxySubs.$get();
1729 $t1_2 = { $entries: [...$t0_1.entries()], $pos: 0, next() { if (this.$pos >= this.$entries.length) return [false, null, null]; const [k, v] = this.$entries[this.$pos++]; return [true, k, v]; } };
1730 $block = 1; break;
1731 break;
1732 }
1733 case 1: {
1734 $t2_3 = $t1_2.next();
1735 $t3_4 = $t2_3[0];
1736 if ($t3_4) {
1737 $block = 2; break;
1738 }
1739 else {
1740 $block = 3; break;
1741 }
1742 break;
1743 }
1744 case 2: {
1745 $t4_5 = $t2_3[1];
1746 $t5_6 = $t2_3[2];
1747 $t6_7 = { $get() { return $t5_6.$get().remoteIDs; }, $set(v) { const obj = $t5_6.$get(); obj.remoteIDs = v; $t5_6.$set(obj); } };
1748 $t7_8 = $t6_7.$get();
1749 $t8_9 = $rt.builtin.mapLookup($t7_8, subID).value;
1750 if ($t8_9) {
1751 $block = 4; break;
1752 }
1753 else {
1754 $block = 1; break;
1755 }
1756 break;
1757 }
1758 case 3: {
1759 return;
1760 break;
1761 }
1762 case 4: {
1763 $t9_10 = { $get() { return $t5_6.$get().eoseCount; }, $set(v) { const obj = $t5_6.$get(); obj.eoseCount = v; $t5_6.$set(obj); } };
1764 $t10_11 = $t9_10.$get();
1765 $t11_12 = ($t10_11 + 1);
1766 $t12_13 = { $get() { return $t5_6.$get().eoseCount; }, $set(v) { const obj = $t5_6.$get(); obj.eoseCount = v; $t5_6.$set(obj); } };
1767 $t12_13.$set($t11_12);
1768 $t13_14 = { $get() { return $t5_6.$get().done; }, $set(v) { const obj = $t5_6.$get(); obj.done = v; $t5_6.$set(obj); } };
1769 $t14_15 = $t13_14.$get();
1770 if ($t14_15) {
1771 $block = 1; break;
1772 }
1773 else {
1774 $block = 5; break;
1775 }
1776 break;
1777 }
1778 case 5: {
1779 $t15_16 = { $get() { return $t5_6.$get().timer; }, $set(v) { const obj = $t5_6.$get(); obj.timer = v; $t5_6.$set(obj); } };
1780 $t16_17 = $t15_16.$get();
1781 $t17_18 = common$jsbridge$sw.ClearTimeout($t16_17);
1782 $t18_19 = { $value: '', $get() { return this.$value; }, $set(v) { this.$value = v; } };
1783 $t18_19.$set($t4_5);
1784 $t19_20 = routerOnRelayEOSE$1.bind(null, $t18_19);
1785 $t20_21 = common$jsbridge$sw.SetTimeout(3000, $t19_20);
1786 $t21_22 = { $get() { return $t5_6.$get().timer; }, $set(v) { const obj = $t5_6.$get(); obj.timer = v; $t5_6.$set(obj); } };
1787 $t21_22.$set($t20_21);
1788 $block = 1; break;
1789 break;
1790 }
1791 }
1792 }
1793 }
1794
1795 function routerOnRelayEOSE$1(pid) {
1796 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20;
1797 let $block = 0;
1798 while (true) {
1799 switch ($block) {
1800 case 0: {
1801 $t0_1 = proxySubs.$get();
1802 $t1_2 = pid.$get();
1803 { const $r = $rt.builtin.mapLookup($t0_1, $t1_2); $t2_3 = [$r.value, $r.ok]; }
1804 $t3_4 = $t2_3[0];
1805 $t4_5 = $t2_3[1];
1806 if ($t4_5) {
1807 $block = 3; break;
1808 }
1809 else {
1810 $block = 2; break;
1811 }
1812 break;
1813 }
1814 case 1: {
1815 $t5_6 = { $get() { return $t3_4.$get().done; }, $set(v) { const obj = $t3_4.$get(); obj.done = v; $t3_4.$set(obj); } };
1816 $t5_6.$set(true);
1817 $t6_7 = clientSubs.$get();
1818 $t7_8 = pid.$get();
1819 { const $r = $rt.builtin.mapLookup($t6_7, $t7_8); $t8_9 = [$r.value, $r.ok]; }
1820 $t9_10 = $t8_9[0];
1821 $t10_11 = $t8_9[1];
1822 if ($t10_11) {
1823 $block = 4; break;
1824 }
1825 else {
1826 $block = 2; break;
1827 }
1828 break;
1829 }
1830 case 2: {
1831 return;
1832 break;
1833 }
1834 case 3: {
1835 $t11_12 = { $get() { return $t3_4.$get().done; }, $set(v) { const obj = $t3_4.$get(); obj.done = v; $t3_4.$set(obj); } };
1836 $t12_13 = $t11_12.$get();
1837 if ($t12_13) {
1838 $block = 2; break;
1839 }
1840 else {
1841 $block = 1; break;
1842 }
1843 break;
1844 }
1845 case 4: {
1846 $t13_14 = { $get() { return $t9_10.$get().clientID; }, $set(v) { const obj = $t9_10.$get(); obj.clientID = v; $t9_10.$set(obj); } };
1847 $t14_15 = $t13_14.$get();
1848 $t15_16 = pid.$get();
1849 $t16_17 = jstr($t15_16);
1850 $t17_18 = ('["EOSE",' + $t16_17);
1851 $t18_19 = ($t17_18 + ']');
1852 $t19_20 = fwd($t14_15, $t18_19);
1853 $block = 2; break;
1854 break;
1855 }
1856 }
1857 }
1858 }
1859
1860 export function pushToMatchingSubs(ev) {
1861 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26;
1862 let $block = 0;
1863 while (true) {
1864 switch ($block) {
1865 case 0: {
1866 $t0_1 = clientSubs.$get();
1867 $t1_2 = { $entries: [...$t0_1.entries()], $pos: 0, next() { if (this.$pos >= this.$entries.length) return [false, null, null]; const [k, v] = this.$entries[this.$pos++]; return [true, k, v]; } };
1868 $t2_3 = 0;
1869 $block = 1; break;
1870 break;
1871 }
1872 case 1: {
1873 $t3_4 = $t1_2.next();
1874 $t4_5 = $t3_4[0];
1875 if ($t4_5) {
1876 $block = 2; break;
1877 }
1878 else {
1879 $block = 3; break;
1880 }
1881 break;
1882 }
1883 case 2: {
1884 $t5_6 = $t3_4[1];
1885 $t6_7 = $t3_4[2];
1886 $t7_8 = { $get() { return $t6_7.$get().filters; }, $set(v) { const obj = $t6_7.$get(); obj.filters = v; $t6_7.$set(obj); } };
1887 $t8_9 = $t7_8.$get();
1888 $t9_10 = $rt.builtin.len($t8_9);
1889 $t10_11 = -1;
1890 $block = 4; break;
1891 break;
1892 }
1893 case 3: {
1894 return;
1895 break;
1896 }
1897 case 4: {
1898 $t11_12 = ($t10_11 + 1);
1899 $t12_13 = ($t11_12 < $t9_10);
1900 if ($t12_13) {
1901 $block = 5; break;
1902 }
1903 else {
1904 $t2_3 = $t2_3;
1905 $block = 1; break;
1906 }
1907 break;
1908 }
1909 case 5: {
1910 $t13_14 = $t8_9.addr($t11_12);
1911 $t14_15 = $t13_14.$get();
1912 $t15_16 = common$nostr.Filter$Matches($t14_15, ev);
1913 if ($t15_16) {
1914 $block = 6; break;
1915 }
1916 else {
1917 $t10_11 = $t11_12;
1918 $block = 4; break;
1919 }
1920 break;
1921 }
1922 case 6: {
1923 $t16_17 = ($t2_3 + 1);
1924 $t17_18 = { $get() { return $t6_7.$get().clientID; }, $set(v) { const obj = $t6_7.$get(); obj.clientID = v; $t6_7.$set(obj); } };
1925 $t18_19 = $t17_18.$get();
1926 $t19_20 = jstr($t5_6);
1927 $t20_21 = ('["EVENT",' + $t19_20);
1928 $t21_22 = ($t20_21 + ',');
1929 $t22_23 = common$nostr.Event$ToJSON(ev);
1930 $t23_24 = ($t21_22 + $t22_23);
1931 $t24_25 = ($t23_24 + ']');
1932 $t25_26 = fwd($t18_19, $t24_25);
1933 $t2_3 = $t16_17;
1934 $block = 1; break;
1935 break;
1936 }
1937 }
1938 }
1939 }
1940
1941 export function parseFilters(raw) {
1942 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61, $t61_62, $t62_63, $t63_64, $t64_65, $t65_66;
1943 let $block = 0;
1944 while (true) {
1945 switch ($block) {
1946 case 0: {
1947 $t3_4 = raw;
1948 $block = 3; break;
1949 break;
1950 }
1951 case 1: {
1952 $t0_1 = $rt.builtin.stringSlice($t3_4, 1, undefined);
1953 $t3_4 = $t0_1;
1954 $block = 3; break;
1955 break;
1956 }
1957 case 2: {
1958 $t1_2 = $rt.builtin.len($t3_4);
1959 $t2_3 = ($t1_2 === 0);
1960 if ($t2_3) {
1961 $block = 7; break;
1962 }
1963 else {
1964 $block = 8; break;
1965 }
1966 break;
1967 }
1968 case 3: {
1969 $t4_5 = $rt.builtin.len($t3_4);
1970 $t5_6 = ($t4_5 > 0);
1971 if ($t5_6) {
1972 $block = 4; break;
1973 }
1974 else {
1975 $block = 2; break;
1976 }
1977 break;
1978 }
1979 case 4: {
1980 $rt.runtime.boundsCheck(0, $rt.builtin.byteLen($t3_4));
1981 $t6_7 = $rt.builtin.stringByteAt($t3_4, 0);
1982 $t7_8 = ($t6_7 === 32);
1983 if ($t7_8) {
1984 $block = 1; break;
1985 }
1986 else {
1987 $block = 6; break;
1988 }
1989 break;
1990 }
1991 case 5: {
1992 $rt.runtime.boundsCheck(0, $rt.builtin.byteLen($t3_4));
1993 $t8_9 = $rt.builtin.stringByteAt($t3_4, 0);
1994 $t9_10 = ($t8_9 === 10);
1995 if ($t9_10) {
1996 $block = 1; break;
1997 }
1998 else {
1999 $block = 2; break;
2000 }
2001 break;
2002 }
2003 case 6: {
2004 $rt.runtime.boundsCheck(0, $rt.builtin.byteLen($t3_4));
2005 $t10_11 = $rt.builtin.stringByteAt($t3_4, 0);
2006 $t11_12 = ($t10_11 === 9);
2007 if ($t11_12) {
2008 $block = 1; break;
2009 }
2010 else {
2011 $block = 5; break;
2012 }
2013 break;
2014 }
2015 case 7: {
2016 return null;
2017 break;
2018 }
2019 case 8: {
2020 $rt.runtime.boundsCheck(0, $rt.builtin.byteLen($t3_4));
2021 $t12_13 = $rt.builtin.stringByteAt($t3_4, 0);
2022 $t13_14 = ($t12_13 === 123);
2023 if ($t13_14) {
2024 $block = 9; break;
2025 }
2026 else {
2027 $block = 10; break;
2028 }
2029 break;
2030 }
2031 case 9: {
2032 $t14_15 = common$nostr.ParseFilter($t3_4);
2033 $t15_16 = ($t14_15 === null);
2034 if ($t15_16) {
2035 $block = 11; break;
2036 }
2037 else {
2038 $block = 12; break;
2039 }
2040 break;
2041 }
2042 case 10: {
2043 $rt.runtime.boundsCheck(0, $rt.builtin.byteLen($t3_4));
2044 $t16_17 = $rt.builtin.stringByteAt($t3_4, 0);
2045 $t17_18 = ($t16_17 !== 91);
2046 if ($t17_18) {
2047 $block = 13; break;
2048 }
2049 else {
2050 $block = 14; break;
2051 }
2052 break;
2053 }
2054 case 11: {
2055 return null;
2056 break;
2057 }
2058 case 12: {
2059 $t18_19 = { $value: $rt.builtin.makeSlice(1, 1, null), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2060 $t19_20 = $t18_19.$get().addr(0);
2061 $t19_20.$set($t14_15);
2062 $t20_21 = $rt.builtin.sliceSlice($t18_19.$get(), undefined, undefined, undefined);
2063 return $t20_21;
2064 break;
2065 }
2066 case 13: {
2067 return null;
2068 break;
2069 }
2070 case 14: {
2071 $t21_22 = $rt.builtin.stringSlice($t3_4, 1, undefined);
2072 $t25_26 = $t21_22;
2073 $t26_27 = null;
2074 $block = 18; break;
2075 break;
2076 }
2077 case 15: {
2078 return $t26_27;
2079 break;
2080 }
2081 case 16: {
2082 $t22_23 = $rt.builtin.stringSlice($t25_26, 1, undefined);
2083 let $phi0 = $t22_23;
2084 let $phi1 = $t26_27;
2085 $t25_26 = $phi0;
2086 $t26_27 = $phi1;
2087 $block = 18; break;
2088 break;
2089 }
2090 case 17: {
2091 $t23_24 = $rt.builtin.len($t25_26);
2092 $t24_25 = ($t23_24 === 0);
2093 if ($t24_25) {
2094 $block = 15; break;
2095 }
2096 else {
2097 $block = 24; break;
2098 }
2099 break;
2100 }
2101 case 18: {
2102 $t27_28 = $rt.builtin.len($t25_26);
2103 $t28_29 = ($t27_28 > 0);
2104 if ($t28_29) {
2105 $block = 19; break;
2106 }
2107 else {
2108 $block = 17; break;
2109 }
2110 break;
2111 }
2112 case 19: {
2113 $rt.runtime.boundsCheck(0, $rt.builtin.byteLen($t25_26));
2114 $t29_30 = $rt.builtin.stringByteAt($t25_26, 0);
2115 $t30_31 = ($t29_30 === 32);
2116 if ($t30_31) {
2117 $block = 16; break;
2118 }
2119 else {
2120 $block = 22; break;
2121 }
2122 break;
2123 }
2124 case 20: {
2125 $rt.runtime.boundsCheck(0, $rt.builtin.byteLen($t25_26));
2126 $t31_32 = $rt.builtin.stringByteAt($t25_26, 0);
2127 $t32_33 = ($t31_32 === 10);
2128 if ($t32_33) {
2129 $block = 16; break;
2130 }
2131 else {
2132 $block = 17; break;
2133 }
2134 break;
2135 }
2136 case 21: {
2137 $rt.runtime.boundsCheck(0, $rt.builtin.byteLen($t25_26));
2138 $t33_34 = $rt.builtin.stringByteAt($t25_26, 0);
2139 $t34_35 = ($t33_34 === 9);
2140 if ($t34_35) {
2141 $block = 16; break;
2142 }
2143 else {
2144 $block = 20; break;
2145 }
2146 break;
2147 }
2148 case 22: {
2149 $rt.runtime.boundsCheck(0, $rt.builtin.byteLen($t25_26));
2150 $t35_36 = $rt.builtin.stringByteAt($t25_26, 0);
2151 $t36_37 = ($t35_36 === 44);
2152 if ($t36_37) {
2153 $block = 16; break;
2154 }
2155 else {
2156 $block = 21; break;
2157 }
2158 break;
2159 }
2160 case 23: {
2161 $rt.runtime.boundsCheck(0, $rt.builtin.byteLen($t25_26));
2162 $t37_38 = $rt.builtin.stringByteAt($t25_26, 0);
2163 $t38_39 = ($t37_38 !== 123);
2164 if ($t38_39) {
2165 $block = 15; break;
2166 }
2167 else {
2168 $block = 25; break;
2169 }
2170 break;
2171 }
2172 case 24: {
2173 $rt.runtime.boundsCheck(0, $rt.builtin.byteLen($t25_26));
2174 $t39_40 = $rt.builtin.stringByteAt($t25_26, 0);
2175 $t40_41 = ($t39_40 === 93);
2176 if ($t40_41) {
2177 $block = 15; break;
2178 }
2179 else {
2180 $block = 23; break;
2181 }
2182 break;
2183 }
2184 case 25: {
2185 $t41_42 = 0;
2186 $t42_43 = 0;
2187 $block = 26; break;
2188 break;
2189 }
2190 case 26: {
2191 $t43_44 = $rt.builtin.len($t25_26);
2192 $t44_45 = ($t42_43 < $t43_44);
2193 if ($t44_45) {
2194 $block = 27; break;
2195 }
2196 else {
2197 $t47_48 = 0;
2198 $block = 28; break;
2199 }
2200 break;
2201 }
2202 case 27: {
2203 $rt.runtime.boundsCheck($t42_43, $rt.builtin.byteLen($t25_26));
2204 $t45_46 = $rt.builtin.stringByteAt($t25_26, $t42_43);
2205 $t46_47 = ($t45_46 === 123);
2206 if ($t46_47) {
2207 $block = 29; break;
2208 }
2209 else {
2210 $block = 31; break;
2211 }
2212 break;
2213 }
2214 case 28: {
2215 $t48_49 = ($t47_48 === 0);
2216 if ($t48_49) {
2217 $block = 15; break;
2218 }
2219 else {
2220 $block = 34; break;
2221 }
2222 break;
2223 }
2224 case 29: {
2225 $t49_50 = ($t41_42 + 1);
2226 $t50_51 = $t49_50;
2227 $block = 30; break;
2228 break;
2229 }
2230 case 30: {
2231 $t51_52 = ($t42_43 + 1);
2232 $t41_42 = $t50_51;
2233 $t42_43 = $t51_52;
2234 $block = 26; break;
2235 break;
2236 }
2237 case 31: {
2238 $rt.runtime.boundsCheck($t42_43, $rt.builtin.byteLen($t25_26));
2239 $t52_53 = $rt.builtin.stringByteAt($t25_26, $t42_43);
2240 $t53_54 = ($t52_53 === 125);
2241 if ($t53_54) {
2242 $block = 32; break;
2243 }
2244 else {
2245 $t50_51 = $t41_42;
2246 $block = 30; break;
2247 }
2248 break;
2249 }
2250 case 32: {
2251 $t54_55 = ($t41_42 - 1);
2252 $t55_56 = ($t54_55 === 0);
2253 if ($t55_56) {
2254 $block = 33; break;
2255 }
2256 else {
2257 $t50_51 = $t54_55;
2258 $block = 30; break;
2259 }
2260 break;
2261 }
2262 case 33: {
2263 $t56_57 = ($t42_43 + 1);
2264 $t47_48 = $t56_57;
2265 $block = 28; break;
2266 break;
2267 }
2268 case 34: {
2269 $t57_58 = $rt.builtin.stringSlice($t25_26, undefined, $t47_48);
2270 $t58_59 = common$nostr.ParseFilter($t57_58);
2271 $t59_60 = ($t58_59 !== null);
2272 if ($t59_60) {
2273 $block = 35; break;
2274 }
2275 else {
2276 $t64_65 = $t26_27;
2277 $block = 36; break;
2278 }
2279 break;
2280 }
2281 case 35: {
2282 $t60_61 = { $value: $rt.builtin.makeSlice(1, 1, null), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2283 $t61_62 = $t60_61.$get().addr(0);
2284 $t61_62.$set($t58_59);
2285 $t62_63 = $rt.builtin.sliceSlice($t60_61.$get(), undefined, undefined, undefined);
2286 $t63_64 = $rt.builtin.appendSlice($t26_27, $t62_63);
2287 $t64_65 = $t63_64;
2288 $block = 36; break;
2289 break;
2290 }
2291 case 36: {
2292 $t65_66 = $rt.builtin.stringSlice($t25_26, $t47_48, undefined);
2293 $t25_26 = $t65_66;
2294 $t26_27 = $t64_65;
2295 $block = 18; break;
2296 break;
2297 }
2298 }
2299 }
2300 }
2301
2302 export function routerSign(clientID, requestID, eventRaw) {
2303 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20;
2304 let $block = 0;
2305 while (true) {
2306 switch ($block) {
2307 case 0: {
2308 $t0_1 = { $value: '', $get() { return this.$value; }, $set(v) { this.$value = v; } };
2309 $t0_1.$set(clientID);
2310 $t1_2 = { $value: '', $get() { return this.$value; }, $set(v) { this.$value = v; } };
2311 $t1_2.$set(requestID);
2312 $t2_3 = myPubkey.$get();
2313 $t3_4 = ($t2_3 === '');
2314 if ($t3_4) {
2315 $block = 1; break;
2316 }
2317 else {
2318 $block = 2; break;
2319 }
2320 break;
2321 }
2322 case 1: {
2323 $t4_5 = $t0_1.$get();
2324 $t5_6 = $t1_2.$get();
2325 $t6_7 = jstr($t5_6);
2326 $t7_8 = ('["SIGN_ERROR",' + $t6_7);
2327 $t8_9 = ($t7_8 + ',"no key"]');
2328 $t9_10 = fwd($t4_5, $t8_9);
2329 return;
2330 break;
2331 }
2332 case 2: {
2333 $t10_11 = common$nostr.ParseEvent(eventRaw);
2334 $t11_12 = ($t10_11 === null);
2335 if ($t11_12) {
2336 $block = 3; break;
2337 }
2338 else {
2339 $block = 4; break;
2340 }
2341 break;
2342 }
2343 case 3: {
2344 $t12_13 = $t0_1.$get();
2345 $t13_14 = $t1_2.$get();
2346 $t14_15 = jstr($t13_14);
2347 $t15_16 = ('["SIGN_ERROR",' + $t14_15);
2348 $t16_17 = ($t15_16 + ',"parse error"]');
2349 $t17_18 = fwd($t12_13, $t16_17);
2350 return;
2351 break;
2352 }
2353 case 4: {
2354 $t18_19 = routerSign$1.bind(null, $t0_1, $t1_2);
2355 $t19_20 = cryptoProxy('signEvent', '', eventRaw, $t18_19);
2356 return;
2357 break;
2358 }
2359 }
2360 }
2361 }
2362
2363 function routerSign$1(clientID, requestID, signedJSON, errMsg) {
2364 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19;
2365 let $block = 0;
2366 while (true) {
2367 switch ($block) {
2368 case 0: {
2369 $t0_1 = (errMsg !== '');
2370 if ($t0_1) {
2371 $block = 1; break;
2372 }
2373 else {
2374 $block = 3; break;
2375 }
2376 break;
2377 }
2378 case 1: {
2379 $t1_2 = clientID.$get();
2380 $t2_3 = requestID.$get();
2381 $t3_4 = jstr($t2_3);
2382 $t4_5 = ('["SIGN_ERROR",' + $t3_4);
2383 $t5_6 = ($t4_5 + ',');
2384 $t6_7 = jstr(errMsg);
2385 $t7_8 = ($t5_6 + $t6_7);
2386 $t8_9 = ($t7_8 + ']');
2387 $t9_10 = fwd($t1_2, $t8_9);
2388 return;
2389 break;
2390 }
2391 case 2: {
2392 $t10_11 = clientID.$get();
2393 $t11_12 = requestID.$get();
2394 $t12_13 = jstr($t11_12);
2395 $t13_14 = ('["SIGNED",' + $t12_13);
2396 $t14_15 = ($t13_14 + ',');
2397 $t15_16 = ($t14_15 + signedJSON);
2398 $t16_17 = ($t15_16 + ']');
2399 $t17_18 = fwd($t10_11, $t16_17);
2400 return;
2401 break;
2402 }
2403 case 3: {
2404 $t18_19 = (signedJSON === '');
2405 if ($t18_19) {
2406 $block = 1; break;
2407 }
2408 else {
2409 $block = 2; break;
2410 }
2411 break;
2412 }
2413 }
2414 }
2415 }
2416
2417 export function routerSaveDMRecord(rec) {
2418 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5;
2419 $t0_1 = { $value: '', $get() { return this.$value; }, $set(v) { this.$value = v; } };
2420 $t1_2 = DMRecord$ToJSON(rec);
2421 $t0_1.$set($t1_2);
2422 $t2_3 = $t0_1.$get();
2423 $t3_4 = routerSaveDMRecord$1.bind(null, $t0_1);
2424 $t4_5 = cacheSaveDM($t2_3, $t3_4);
2425 return;
2426 }
2427
2428 function routerSaveDMRecord$1(dmJSON, result) {
2429 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5;
2430 let $block = 0;
2431 while (true) {
2432 switch ($block) {
2433 case 0: {
2434 $t0_1 = (result !== 'duplicate');
2435 if ($t0_1) {
2436 $block = 1; break;
2437 }
2438 else {
2439 $block = 2; break;
2440 }
2441 break;
2442 }
2443 case 1: {
2444 $t1_2 = dmJSON.$get();
2445 $t2_3 = ('["DM_RECEIVED",' + $t1_2);
2446 $t3_4 = ($t2_3 + ']');
2447 $t4_5 = fwdAll($t3_4);
2448 $block = 2; break;
2449 break;
2450 }
2451 case 2: {
2452 return;
2453 break;
2454 }
2455 }
2456 }
2457 }
2458
2459 export function routerDMList(clientID) {
2460 let $t0_1, $t1_2, $t2_3;
2461 $t0_1 = { $value: '', $get() { return this.$value; }, $set(v) { this.$value = v; } };
2462 $t0_1.$set(clientID);
2463 $t1_2 = routerDMList$1.bind(null, $t0_1);
2464 $t2_3 = cacheGetConversationList($t1_2);
2465 return;
2466 }
2467
2468 function routerDMList$1(clientID, listJSON) {
2469 let $t0_1, $t1_2, $t2_3, $t3_4;
2470 $t0_1 = clientID.$get();
2471 $t1_2 = ('["DM_LIST",' + listJSON);
2472 $t2_3 = ($t1_2 + ']');
2473 $t3_4 = fwd($t0_1, $t2_3);
2474 return;
2475 }
2476
2477 export function routerDMHistory(clientID, peer, limit, until) {
2478 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7;
2479 let $block = 0;
2480 while (true) {
2481 switch ($block) {
2482 case 0: {
2483 $t0_1 = { $value: '', $get() { return this.$value; }, $set(v) { this.$value = v; } };
2484 $t0_1.$set(clientID);
2485 $t1_2 = { $value: '', $get() { return this.$value; }, $set(v) { this.$value = v; } };
2486 $t1_2.$set(peer);
2487 $t2_3 = (limit <= 0);
2488 if ($t2_3) {
2489 $block = 1; break;
2490 }
2491 else {
2492 $t3_4 = limit;
2493 $block = 2; break;
2494 }
2495 break;
2496 }
2497 case 1: {
2498 $t3_4 = 50;
2499 $block = 2; break;
2500 break;
2501 }
2502 case 2: {
2503 $t4_5 = $t1_2.$get();
2504 $t5_6 = routerDMHistory$1.bind(null, $t0_1, $t1_2);
2505 $t6_7 = cacheQueryDMs($t4_5, $t3_4, until, $t5_6);
2506 return;
2507 break;
2508 }
2509 }
2510 }
2511 }
2512
2513 function routerDMHistory$1(clientID, peer, msgsJSON) {
2514 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8;
2515 $t0_1 = clientID.$get();
2516 $t1_2 = peer.$get();
2517 $t2_3 = jstr($t1_2);
2518 $t3_4 = ('["DM_HISTORY",' + $t2_3);
2519 $t4_5 = ($t3_4 + ',');
2520 $t5_6 = ($t4_5 + msgsJSON);
2521 $t6_7 = ($t5_6 + ']');
2522 $t7_8 = fwd($t0_1, $t6_7);
2523 return;
2524 }
2525
2526 export function routerBroadcast(clientID, pubkey, relayURLs) {
2527 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7;
2528 $t0_1 = { $value: '', $get() { return this.$value; }, $set(v) { this.$value = v; } };
2529 $t0_1.$set(clientID);
2530 $t1_2 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
2531 $t1_2.$set(relayURLs);
2532 $t2_3 = jstr(pubkey);
2533 $t3_4 = ('{"authors":[' + $t2_3);
2534 $t4_5 = ($t3_4 + '],"kinds":[0,3,10002,10050,10051]}');
2535 $t5_6 = routerBroadcast$1.bind(null, $t1_2, $t0_1);
2536 $t6_7 = cacheQuery($t4_5, $t5_6);
2537 return;
2538 }
2539
2540 function routerBroadcast$1(relayURLs, clientID, eventsJSON) {
2541 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61, $t61_62, $t62_63, $t63_64, $t64_65, $t65_66, $t66_67, $t67_68, $t68_69, $t69_70, $t70_71, $t71_72, $t72_73, $t73_74, $t74_75, $t75_76, $t76_77, $t77_78, $t78_79, $t79_80, $t80_81, $t81_82, $t82_83, $t83_84, $t84_85, $t85_86, $t86_87, $t87_88, $t88_89;
2542 let $block = 0;
2543 while (true) {
2544 switch ($block) {
2545 case 0: {
2546 $t0_1 = common$nostr.ParseEventsJSON(eventsJSON);
2547 $t1_2 = $rt.builtin.makeMap('int');
2548 $t2_3 = $rt.builtin.len($t0_1);
2549 $t3_4 = -1;
2550 $block = 1; break;
2551 break;
2552 }
2553 case 1: {
2554 $t4_5 = ($t3_4 + 1);
2555 $t5_6 = ($t4_5 < $t2_3);
2556 if ($t5_6) {
2557 $block = 2; break;
2558 }
2559 else {
2560 $block = 3; break;
2561 }
2562 break;
2563 }
2564 case 2: {
2565 $t6_7 = $t0_1.addr($t4_5);
2566 $t7_8 = $t6_7.$get();
2567 $t8_9 = { $get() { return $t7_8.$get().Kind; }, $set(v) { const obj = $t7_8.$get(); obj.Kind = v; $t7_8.$set(obj); } };
2568 $t9_10 = $t8_9.$get();
2569 { const $r = $rt.builtin.mapLookup($t1_2, $t9_10); $t10_11 = [$r.value, $r.ok]; }
2570 $t11_12 = $t10_11[0];
2571 $t12_13 = $t10_11[1];
2572 if ($t12_13) {
2573 $block = 5; break;
2574 }
2575 else {
2576 $block = 4; break;
2577 }
2578 break;
2579 }
2580 case 3: {
2581 $t13_14 = relayURLs.$get();
2582 { const $r = $rt.builtin.mapLookup($t1_2, 10002); $t14_15 = [$r.value, $r.ok]; }
2583 $t15_16 = $t14_15[0];
2584 $t16_17 = $t14_15[1];
2585 if ($t16_17) {
2586 $block = 6; break;
2587 }
2588 else {
2589 $t28_29 = $t13_14;
2590 $block = 7; break;
2591 }
2592 break;
2593 }
2594 case 4: {
2595 $t17_18 = { $get() { return $t7_8.$get().Kind; }, $set(v) { const obj = $t7_8.$get(); obj.Kind = v; $t7_8.$set(obj); } };
2596 $t18_19 = $t17_18.$get();
2597 $rt.builtin.mapUpdate($t1_2, $t18_19, $t7_8);
2598 $t3_4 = $t4_5;
2599 $block = 1; break;
2600 break;
2601 }
2602 case 5: {
2603 $t19_20 = { $get() { return $t7_8.$get().CreatedAt; }, $set(v) { const obj = $t7_8.$get(); obj.CreatedAt = v; $t7_8.$set(obj); } };
2604 $t20_21 = $t19_20.$get();
2605 $t21_22 = { $get() { return $t11_12.$get().CreatedAt; }, $set(v) { const obj = $t11_12.$get(); obj.CreatedAt = v; $t11_12.$set(obj); } };
2606 $t22_23 = $t21_22.$get();
2607 $t23_24 = ($t20_21 > $t22_23);
2608 if ($t23_24) {
2609 $block = 4; break;
2610 }
2611 else {
2612 $t3_4 = $t4_5;
2613 $block = 1; break;
2614 }
2615 break;
2616 }
2617 case 6: {
2618 $t24_25 = { $get() { return $t15_16.$get().Tags; }, $set(v) { const obj = $t15_16.$get(); obj.Tags = v; $t15_16.$set(obj); } };
2619 $t25_26 = $t24_25.$get();
2620 $t26_27 = common$nostr.Tags$GetAll($t25_26, 'r');
2621 $t27_28 = $rt.builtin.len($t26_27);
2622 $t31_32 = null;
2623 $t32_33 = -1;
2624 $block = 8; break;
2625 break;
2626 }
2627 case 7: {
2628 $t29_30 = $rt.builtin.len($t28_29);
2629 $t30_31 = ($t29_30 === 0);
2630 if ($t30_31) {
2631 $block = 10; break;
2632 }
2633 else {
2634 $t43_44 = $t28_29;
2635 $block = 11; break;
2636 }
2637 break;
2638 }
2639 case 8: {
2640 $t33_34 = ($t32_33 + 1);
2641 $t34_35 = ($t33_34 < $t27_28);
2642 if ($t34_35) {
2643 $block = 9; break;
2644 }
2645 else {
2646 $t28_29 = $t31_32;
2647 $block = 7; break;
2648 }
2649 break;
2650 }
2651 case 9: {
2652 $t35_36 = $t26_27.addr($t33_34);
2653 $t36_37 = $t35_36.$get();
2654 $t37_38 = common$nostr.Tag$Value($t36_37);
2655 $t38_39 = { $value: $rt.builtin.makeSlice(1, 1, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2656 $t39_40 = $t38_39.$get().addr(0);
2657 $t39_40.$set($t37_38);
2658 $t40_41 = $rt.builtin.sliceSlice($t38_39.$get(), undefined, undefined, undefined);
2659 $t41_42 = $rt.builtin.appendSlice($t31_32, $t40_41);
2660 $t31_32 = $t41_42;
2661 $t32_33 = $t33_34;
2662 $block = 8; break;
2663 break;
2664 }
2665 case 10: {
2666 $t42_43 = writeRelays.$get();
2667 $t43_44 = $t42_43;
2668 $block = 11; break;
2669 break;
2670 }
2671 case 11: {
2672 { const $r = $rt.builtin.mapLookup($t1_2, 10050); $t44_45 = [$r.value, $r.ok]; }
2673 $t45_46 = $t44_45[0];
2674 $t46_47 = $t44_45[1];
2675 if ($t46_47) {
2676 $block = 13; break;
2677 }
2678 else {
2679 $block = 15; break;
2680 }
2681 break;
2682 }
2683 case 12: {
2684 $t47_48 = routerBroadcast$1$1.bind(null, relayURLs);
2685 $t48_49 = createRelayListEventAsync(10050, $t43_44, $t47_48);
2686 $block = 13; break;
2687 break;
2688 }
2689 case 13: {
2690 { const $r = $rt.builtin.mapLookup($t1_2, 10051); $t49_50 = [$r.value, $r.ok]; }
2691 $t50_51 = $t49_50[0];
2692 $t51_52 = $t49_50[1];
2693 if ($t51_52) {
2694 $block = 17; break;
2695 }
2696 else {
2697 $block = 19; break;
2698 }
2699 break;
2700 }
2701 case 14: {
2702 $t52_53 = $rt.builtin.len($t43_44);
2703 $t53_54 = ($t52_53 > 0);
2704 if ($t53_54) {
2705 $block = 12; break;
2706 }
2707 else {
2708 $block = 13; break;
2709 }
2710 break;
2711 }
2712 case 15: {
2713 $t54_55 = myPubkey.$get();
2714 $t55_56 = ($t54_55 !== '');
2715 if ($t55_56) {
2716 $block = 14; break;
2717 }
2718 else {
2719 $block = 13; break;
2720 }
2721 break;
2722 }
2723 case 16: {
2724 $t56_57 = routerBroadcast$1$2.bind(null, relayURLs);
2725 $t57_58 = createRelayListEventAsync(10051, $t43_44, $t56_57);
2726 $block = 17; break;
2727 break;
2728 }
2729 case 17: {
2730 $t58_59 = { $entries: [...$t1_2.entries()], $pos: 0, next() { if (this.$pos >= this.$entries.length) return [false, null, null]; const [k, v] = this.$entries[this.$pos++]; return [true, k, v]; } };
2731 $t63_64 = 0;
2732 $block = 20; break;
2733 break;
2734 }
2735 case 18: {
2736 $t59_60 = $rt.builtin.len($t43_44);
2737 $t60_61 = ($t59_60 > 0);
2738 if ($t60_61) {
2739 $block = 16; break;
2740 }
2741 else {
2742 $block = 17; break;
2743 }
2744 break;
2745 }
2746 case 19: {
2747 $t61_62 = myPubkey.$get();
2748 $t62_63 = ($t61_62 !== '');
2749 if ($t62_63) {
2750 $block = 18; break;
2751 }
2752 else {
2753 $block = 17; break;
2754 }
2755 break;
2756 }
2757 case 20: {
2758 $t64_65 = $t58_59.next();
2759 $t65_66 = $t64_65[0];
2760 if ($t65_66) {
2761 $block = 21; break;
2762 }
2763 else {
2764 $block = 22; break;
2765 }
2766 break;
2767 }
2768 case 21: {
2769 $t66_67 = $t64_65[2];
2770 $t67_68 = relayURLs.$get();
2771 $t68_69 = $rt.builtin.len($t67_68);
2772 $t81_82 = -1;
2773 $block = 23; break;
2774 break;
2775 }
2776 case 22: {
2777 $t69_70 = clientID.$get();
2778 $t70_71 = $t63_64;
2779 $t71_72 = common$helpers.Itoa($t70_71);
2780 $t72_73 = ('["BROADCAST_DONE",' + $t71_72);
2781 $t73_74 = ($t72_73 + ',');
2782 $t74_75 = relayURLs.$get();
2783 $t75_76 = $rt.builtin.len($t74_75);
2784 $t76_77 = $t75_76;
2785 $t77_78 = common$helpers.Itoa($t76_77);
2786 $t78_79 = ($t73_74 + $t77_78);
2787 $t79_80 = ($t78_79 + ']');
2788 $t80_81 = fwd($t69_70, $t79_80);
2789 return;
2790 break;
2791 }
2792 case 23: {
2793 $t82_83 = ($t81_82 + 1);
2794 $t83_84 = ($t82_83 < $t68_69);
2795 if ($t83_84) {
2796 $block = 24; break;
2797 }
2798 else {
2799 $block = 25; break;
2800 }
2801 break;
2802 }
2803 case 24: {
2804 $t84_85 = $t67_68.addr($t82_83);
2805 $t85_86 = $t84_85.$get();
2806 $t86_87 = getConn($t85_86);
2807 $t87_88 = common$relay.Conn$Publish($t86_87, $t66_67);
2808 $t81_82 = $t82_83;
2809 $block = 23; break;
2810 break;
2811 }
2812 case 25: {
2813 $t88_89 = ($t63_64 + 1);
2814 $t63_64 = $t88_89;
2815 $block = 20; break;
2816 break;
2817 }
2818 }
2819 }
2820 }
2821
2822 function routerBroadcast$1$1(relayURLs, ev) {
2823 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12;
2824 let $block = 0;
2825 while (true) {
2826 switch ($block) {
2827 case 0: {
2828 $t0_1 = (ev !== null);
2829 if ($t0_1) {
2830 $block = 1; break;
2831 }
2832 else {
2833 $block = 2; break;
2834 }
2835 break;
2836 }
2837 case 1: {
2838 $t1_2 = common$nostr.Event$ToJSON(ev);
2839 $t2_3 = cacheStore($t1_2, routerBroadcast$1$1$1);
2840 $t3_4 = relayURLs.$get();
2841 $t4_5 = $rt.builtin.len($t3_4);
2842 $t5_6 = -1;
2843 $block = 3; break;
2844 break;
2845 }
2846 case 2: {
2847 return;
2848 break;
2849 }
2850 case 3: {
2851 $t6_7 = ($t5_6 + 1);
2852 $t7_8 = ($t6_7 < $t4_5);
2853 if ($t7_8) {
2854 $block = 4; break;
2855 }
2856 else {
2857 $block = 2; break;
2858 }
2859 break;
2860 }
2861 case 4: {
2862 $t8_9 = $t3_4.addr($t6_7);
2863 $t9_10 = $t8_9.$get();
2864 $t10_11 = getConn($t9_10);
2865 $t11_12 = common$relay.Conn$Publish($t10_11, ev);
2866 $t5_6 = $t6_7;
2867 $block = 3; break;
2868 break;
2869 }
2870 }
2871 }
2872 }
2873
2874 function routerBroadcast$1$1$1(_) {
2875 return;
2876 }
2877
2878 function routerBroadcast$1$2(relayURLs, ev) {
2879 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12;
2880 let $block = 0;
2881 while (true) {
2882 switch ($block) {
2883 case 0: {
2884 $t0_1 = (ev !== null);
2885 if ($t0_1) {
2886 $block = 1; break;
2887 }
2888 else {
2889 $block = 2; break;
2890 }
2891 break;
2892 }
2893 case 1: {
2894 $t1_2 = common$nostr.Event$ToJSON(ev);
2895 $t2_3 = cacheStore($t1_2, routerBroadcast$1$2$1);
2896 $t3_4 = relayURLs.$get();
2897 $t4_5 = $rt.builtin.len($t3_4);
2898 $t5_6 = -1;
2899 $block = 3; break;
2900 break;
2901 }
2902 case 2: {
2903 return;
2904 break;
2905 }
2906 case 3: {
2907 $t6_7 = ($t5_6 + 1);
2908 $t7_8 = ($t6_7 < $t4_5);
2909 if ($t7_8) {
2910 $block = 4; break;
2911 }
2912 else {
2913 $block = 2; break;
2914 }
2915 break;
2916 }
2917 case 4: {
2918 $t8_9 = $t3_4.addr($t6_7);
2919 $t9_10 = $t8_9.$get();
2920 $t10_11 = getConn($t9_10);
2921 $t11_12 = common$relay.Conn$Publish($t10_11, ev);
2922 $t5_6 = $t6_7;
2923 $block = 3; break;
2924 break;
2925 }
2926 }
2927 }
2928 }
2929
2930 function routerBroadcast$1$2$1(_) {
2931 return;
2932 }
2933
2934 export function createRelayListEventAsync(kind, relays, cb) {
2935 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27;
2936 let $block = 0;
2937 while (true) {
2938 switch ($block) {
2939 case 0: {
2940 $t0_1 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
2941 $t0_1.$set(cb);
2942 $t1_2 = $rt.builtin.len(relays);
2943 $t2_3 = null;
2944 $t3_4 = -1;
2945 $block = 1; break;
2946 break;
2947 }
2948 case 1: {
2949 $t4_5 = ($t3_4 + 1);
2950 $t5_6 = ($t4_5 < $t1_2);
2951 if ($t5_6) {
2952 $block = 2; break;
2953 }
2954 else {
2955 $block = 3; break;
2956 }
2957 break;
2958 }
2959 case 2: {
2960 $t6_7 = relays.addr($t4_5);
2961 $t7_8 = $t6_7.$get();
2962 $t8_9 = { $value: $rt.builtin.makeSlice(2, 2, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2963 $t9_10 = $t8_9.$get().addr(0);
2964 $t9_10.$set('relay');
2965 $t10_11 = $t8_9.$get().addr(1);
2966 $t10_11.$set($t7_8);
2967 $t11_12 = $rt.builtin.sliceSlice($t8_9.$get(), undefined, undefined, undefined);
2968 $t12_13 = { $value: $rt.builtin.makeSlice(1, 1, null), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2969 $t13_14 = $t12_13.$get().addr(0);
2970 $t13_14.$set($t11_12);
2971 $t14_15 = $rt.builtin.sliceSlice($t12_13.$get(), undefined, undefined, undefined);
2972 $t15_16 = $rt.builtin.appendSlice($t2_3, $t14_15);
2973 $t2_3 = $t15_16;
2974 $t3_4 = $t4_5;
2975 $block = 1; break;
2976 break;
2977 }
2978 case 3: {
2979 $t16_17 = { $value: { ID: '', PubKey: '', CreatedAt: 0, Kind: 0, Tags: null, Content: '', Sig: '' }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
2980 $t17_18 = { $get() { return $t16_17.$get().Kind; }, $set(v) { const obj = $t16_17.$get(); obj.Kind = v; $t16_17.$set(obj); } };
2981 $t18_19 = { $get() { return $t16_17.$get().PubKey; }, $set(v) { const obj = $t16_17.$get(); obj.PubKey = v; $t16_17.$set(obj); } };
2982 $t19_20 = myPubkey.$get();
2983 $t20_21 = { $get() { return $t16_17.$get().Content; }, $set(v) { const obj = $t16_17.$get(); obj.Content = v; $t16_17.$set(obj); } };
2984 $t21_22 = { $get() { return $t16_17.$get().Tags; }, $set(v) { const obj = $t16_17.$get(); obj.Tags = v; $t16_17.$set(obj); } };
2985 $t22_23 = { $get() { return $t16_17.$get().CreatedAt; }, $set(v) { const obj = $t16_17.$get(); obj.CreatedAt = v; $t16_17.$set(obj); } };
2986 $t23_24 = common$jsbridge$sw.NowSeconds();
2987 $t17_18.$set(kind);
2988 $t18_19.$set($t19_20);
2989 $t20_21.$set('');
2990 $t21_22.$set($t2_3);
2991 $t22_23.$set($t23_24);
2992 $t24_25 = common$nostr.Event$ToJSON($t16_17);
2993 $t25_26 = createRelayListEventAsync$1.bind(null, $t0_1);
2994 $t26_27 = cryptoProxy('signEvent', '', $t24_25, $t25_26);
2995 return;
2996 break;
2997 }
2998 }
2999 }
3000 }
3001
3002 function createRelayListEventAsync$1(cb, signedJSON, errMsg) {
3003 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7;
3004 let $block = 0;
3005 while (true) {
3006 switch ($block) {
3007 case 0: {
3008 $t0_1 = (errMsg !== '');
3009 if ($t0_1) {
3010 $block = 1; break;
3011 }
3012 else {
3013 $block = 3; break;
3014 }
3015 break;
3016 }
3017 case 1: {
3018 $t1_2 = cb.$get();
3019 $t2_3 = $t1_2(null);
3020 return;
3021 break;
3022 }
3023 case 2: {
3024 $t3_4 = common$nostr.ParseEvent(signedJSON);
3025 $t4_5 = cb.$get();
3026 $t5_6 = $t4_5($t3_4);
3027 return;
3028 break;
3029 }
3030 case 3: {
3031 $t6_7 = (signedJSON === '');
3032 if ($t6_7) {
3033 $block = 1; break;
3034 }
3035 else {
3036 $block = 2; break;
3037 }
3038 break;
3039 }
3040 }
3041 }
3042 }
3043
3044 export function makeDMRecord(peer, from, content, createdAt, protocol, eventID) {
3045 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9;
3046 $t0_1 = { $value: { ID: '', Peer: '', From: '', Content: '', CreatedAt: 0, Protocol: '', EventID: '' }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
3047 $t1_2 = { $get() { return $t0_1.$get().ID; }, $set(v) { const obj = $t0_1.$get(); obj.ID = v; $t0_1.$set(obj); } };
3048 $t2_3 = dmDedupID(peer, content, createdAt);
3049 $t3_4 = { $get() { return $t0_1.$get().Peer; }, $set(v) { const obj = $t0_1.$get(); obj.Peer = v; $t0_1.$set(obj); } };
3050 $t4_5 = { $get() { return $t0_1.$get().From; }, $set(v) { const obj = $t0_1.$get(); obj.From = v; $t0_1.$set(obj); } };
3051 $t5_6 = { $get() { return $t0_1.$get().Content; }, $set(v) { const obj = $t0_1.$get(); obj.Content = v; $t0_1.$set(obj); } };
3052 $t6_7 = { $get() { return $t0_1.$get().CreatedAt; }, $set(v) { const obj = $t0_1.$get(); obj.CreatedAt = v; $t0_1.$set(obj); } };
3053 $t7_8 = { $get() { return $t0_1.$get().Protocol; }, $set(v) { const obj = $t0_1.$get(); obj.Protocol = v; $t0_1.$set(obj); } };
3054 $t8_9 = { $get() { return $t0_1.$get().EventID; }, $set(v) { const obj = $t0_1.$get(); obj.EventID = v; $t0_1.$set(obj); } };
3055 $t1_2.$set($t2_3);
3056 $t3_4.$set(peer);
3057 $t4_5.$set(from);
3058 $t5_6.$set(content);
3059 $t6_7.$set(createdAt);
3060 $t7_8.$set(protocol);
3061 $t8_9.$set(eventID);
3062 return $t0_1;
3063 }
3064
3065 export function dmDedupID(peer, content, createdAt) {
3066 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14;
3067 $t0_1 = { $value: $rt.builtin.makeSlice(32, 32, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
3068 $t1_2 = $rt.builtin.stringToBytes(content);
3069 $t2_3 = common$crypto$sha256.Sum($t1_2);
3070 $t0_1.$set($rt.builtin.cloneValue($t2_3));
3071 $t3_4 = Math.trunc(createdAt / 300);
3072 $t4_5 = common$helpers.Itoa($t3_4);
3073 $t5_6 = { $value: $rt.builtin.makeSlice(32, 32, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
3074 $t6_7 = $rt.builtin.sliceSlice($t0_1.$get(), undefined, undefined, undefined);
3075 $t7_8 = common$helpers.HexEncode($t6_7);
3076 $t8_9 = (peer + $t7_8);
3077 $t9_10 = ($t8_9 + $t4_5);
3078 $t10_11 = $rt.builtin.stringToBytes($t9_10);
3079 $t11_12 = common$crypto$sha256.Sum($t10_11);
3080 $t5_6.$set($rt.builtin.cloneValue($t11_12));
3081 $t12_13 = $rt.builtin.sliceSlice($t5_6.$get(), undefined, undefined, undefined);
3082 $t13_14 = common$helpers.HexEncode($t12_13);
3083 return $t13_14;
3084 }
3085
3086 export function initSharedState() {
3087 let $t0_1;
3088 $t0_1 = $rt.builtin.makeMap('int');
3089 cryptoCBs.$set($t0_1);
3090 return;
3091 }
3092
3093 export function cryptoProxy(method, peerPubkey, data, cb) {
3094 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21;
3095 $t0_1 = nextCryptoID.$get();
3096 $t1_2 = nextCryptoID.$get();
3097 $t2_3 = ($t1_2 + 1);
3098 nextCryptoID.$set($t2_3);
3099 $t3_4 = cryptoCBs.$get();
3100 $rt.builtin.mapUpdate($t3_4, $t0_1, cb);
3101 $t4_5 = jstr('relay');
3102 $t5_6 = ('["CRYPTO_REQ",' + $t4_5);
3103 $t6_7 = ($t5_6 + ',');
3104 $t7_8 = $t0_1;
3105 $t8_9 = common$helpers.Itoa($t7_8);
3106 $t9_10 = ($t6_7 + $t8_9);
3107 $t10_11 = ($t9_10 + ',');
3108 $t11_12 = jstr(method);
3109 $t12_13 = ($t10_11 + $t11_12);
3110 $t13_14 = ($t12_13 + ',');
3111 $t14_15 = jstr(peerPubkey);
3112 $t15_16 = ($t13_14 + $t14_15);
3113 $t16_17 = ($t15_16 + ',');
3114 $t17_18 = jstr(data);
3115 $t18_19 = ($t16_17 + $t17_18);
3116 $t19_20 = ($t18_19 + ']');
3117 $t20_21 = busSend('shell', $t19_20);
3118 return;
3119 }
3120
3121 export function fwd(clientID, msg) {
3122 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11;
3123 $t0_1 = fwdBuf.$get();
3124 $t1_2 = jstr(clientID);
3125 $t2_3 = ('["FWD",' + $t1_2);
3126 $t3_4 = ($t2_3 + ',');
3127 $t4_5 = ($t3_4 + msg);
3128 $t5_6 = ($t4_5 + ']');
3129 $t6_7 = { $value: $rt.builtin.makeSlice(1, 1, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
3130 $t7_8 = $t6_7.$get().addr(0);
3131 $t7_8.$set($t5_6);
3132 $t8_9 = $rt.builtin.sliceSlice($t6_7.$get(), undefined, undefined, undefined);
3133 $t9_10 = $rt.builtin.appendSlice($t0_1, $t8_9);
3134 fwdBuf.$set($t9_10);
3135 $t10_11 = scheduleFwdFlush();
3136 return;
3137 }
3138
3139 export function fwdAll(msg) {
3140 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8;
3141 $t0_1 = fwdBuf.$get();
3142 $t1_2 = ('["FWD_ALL",' + msg);
3143 $t2_3 = ($t1_2 + ']');
3144 $t3_4 = { $value: $rt.builtin.makeSlice(1, 1, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
3145 $t4_5 = $t3_4.$get().addr(0);
3146 $t4_5.$set($t2_3);
3147 $t5_6 = $rt.builtin.sliceSlice($t3_4.$get(), undefined, undefined, undefined);
3148 $t6_7 = $rt.builtin.appendSlice($t0_1, $t5_6);
3149 fwdBuf.$set($t6_7);
3150 $t7_8 = scheduleFwdFlush();
3151 return;
3152 }
3153
3154 export function scheduleFwdFlush() {
3155 let $t0_1, $t1_2, $t2_3;
3156 let $block = 0;
3157 while (true) {
3158 switch ($block) {
3159 case 0: {
3160 $t0_1 = fwdTimer.$get();
3161 $t1_2 = ($t0_1 !== 0);
3162 if ($t1_2) {
3163 $block = 1; break;
3164 }
3165 else {
3166 $block = 2; break;
3167 }
3168 break;
3169 }
3170 case 1: {
3171 return;
3172 break;
3173 }
3174 case 2: {
3175 $t2_3 = common$jsbridge$sw.SetTimeout(50, flushFwd);
3176 fwdTimer.$set($t2_3);
3177 return;
3178 break;
3179 }
3180 }
3181 }
3182 }
3183
3184 export function flushFwd() {
3185 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17;
3186 let $block = 0;
3187 while (true) {
3188 switch ($block) {
3189 case 0: {
3190 fwdTimer.$set(0);
3191 $t0_1 = fwdBuf.$get();
3192 $t1_2 = $rt.builtin.len($t0_1);
3193 $t2_3 = ($t1_2 === 0);
3194 if ($t2_3) {
3195 $block = 1; break;
3196 }
3197 else {
3198 $block = 2; break;
3199 }
3200 break;
3201 }
3202 case 1: {
3203 return;
3204 break;
3205 }
3206 case 2: {
3207 $t3_4 = fwdBuf.$get();
3208 $t4_5 = $rt.builtin.len($t3_4);
3209 $t5_6 = '["FWD_BATCH",[';
3210 $t6_7 = -1;
3211 $block = 3; break;
3212 break;
3213 }
3214 case 3: {
3215 $t7_8 = ($t6_7 + 1);
3216 $t8_9 = ($t7_8 < $t4_5);
3217 if ($t8_9) {
3218 $block = 4; break;
3219 }
3220 else {
3221 $block = 5; break;
3222 }
3223 break;
3224 }
3225 case 4: {
3226 $t9_10 = $t3_4.addr($t7_8);
3227 $t10_11 = $t9_10.$get();
3228 $t11_12 = ($t7_8 > 0);
3229 if ($t11_12) {
3230 $block = 6; break;
3231 }
3232 else {
3233 $t15_16 = $t5_6;
3234 $block = 7; break;
3235 }
3236 break;
3237 }
3238 case 5: {
3239 $t12_13 = ($t5_6 + ']]');
3240 fwdBuf.$set(null);
3241 $t13_14 = busSend('shell', $t12_13);
3242 return;
3243 break;
3244 }
3245 case 6: {
3246 $t14_15 = ($t5_6 + ',');
3247 $t15_16 = $t14_15;
3248 $block = 7; break;
3249 break;
3250 }
3251 case 7: {
3252 $t16_17 = ($t15_16 + $t10_11);
3253 $t5_6 = $t16_17;
3254 $t6_7 = $t7_8;
3255 $block = 3; break;
3256 break;
3257 }
3258 }
3259 }
3260 }
3261
3262 export function strsJSON(ss) {
3263 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15;
3264 let $block = 0;
3265 while (true) {
3266 switch ($block) {
3267 case 0: {
3268 $t0_1 = $rt.builtin.len(ss);
3269 $t1_2 = ($t0_1 === 0);
3270 if ($t1_2) {
3271 $block = 1; break;
3272 }
3273 else {
3274 $block = 2; break;
3275 }
3276 break;
3277 }
3278 case 1: {
3279 return '[]';
3280 break;
3281 }
3282 case 2: {
3283 $t2_3 = $rt.builtin.len(ss);
3284 $t3_4 = '[';
3285 $t4_5 = -1;
3286 $block = 3; break;
3287 break;
3288 }
3289 case 3: {
3290 $t5_6 = ($t4_5 + 1);
3291 $t6_7 = ($t5_6 < $t2_3);
3292 if ($t6_7) {
3293 $block = 4; break;
3294 }
3295 else {
3296 $block = 5; break;
3297 }
3298 break;
3299 }
3300 case 4: {
3301 $t7_8 = ss.addr($t5_6);
3302 $t8_9 = $t7_8.$get();
3303 $t9_10 = ($t5_6 > 0);
3304 if ($t9_10) {
3305 $block = 6; break;
3306 }
3307 else {
3308 $t12_13 = $t3_4;
3309 $block = 7; break;
3310 }
3311 break;
3312 }
3313 case 5: {
3314 $t10_11 = ($t3_4 + ']');
3315 return $t10_11;
3316 break;
3317 }
3318 case 6: {
3319 $t11_12 = ($t3_4 + ',');
3320 $t12_13 = $t11_12;
3321 $block = 7; break;
3322 break;
3323 }
3324 case 7: {
3325 $t13_14 = jstr($t8_9);
3326 $t14_15 = ($t12_13 + $t13_14);
3327 $t3_4 = $t14_15;
3328 $t4_5 = $t5_6;
3329 $block = 3; break;
3330 break;
3331 }
3332 }
3333 }
3334 }
3335
3336 export function jstr(s) {
3337 let $t0_1;
3338 $t0_1 = common$helpers.JsonString(s);
3339 return $t0_1;
3340 }
3341
3342 export function boolStr(b) {
3343 let $block = 0;
3344 while (true) {
3345 switch ($block) {
3346 case 0: {
3347 if (b) {
3348 $block = 1; break;
3349 }
3350 else {
3351 $block = 2; break;
3352 }
3353 break;
3354 }
3355 case 1: {
3356 return 'true';
3357 break;
3358 }
3359 case 2: {
3360 return 'false';
3361 break;
3362 }
3363 }
3364 }
3365 }
3366
3367 export function hexTo32(s) {
3368 let $t0_1, $t1_2, $t2_3;
3369 $t0_1 = common$helpers.HexDecode32(s);
3370 $t1_2 = $t0_1[0];
3371 $t2_3 = $t0_1[1];
3372 return $t1_2;
3373 }
3374
3375 export function random32() {
3376 let $t0_1, $t1_2, $t2_3, $t3_4;
3377 $t0_1 = { $value: $rt.builtin.makeSlice(32, 32, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
3378 $t1_2 = $rt.builtin.sliceSlice($t0_1.$get(), undefined, undefined, undefined);
3379 $t2_3 = common$jsbridge$subtle.RandomBytes($t1_2);
3380 $t3_4 = $t0_1.$get();
3381 return $t3_4;
3382 }
3383
3384 export function jsonField(json, key) {
3385 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12;
3386 let $block = 0;
3387 while (true) {
3388 switch ($block) {
3389 case 0: {
3390 $t0_1 = jsonFieldRaw(json, key);
3391 $t1_2 = $rt.builtin.len($t0_1);
3392 $t2_3 = ($t1_2 >= 2);
3393 if ($t2_3) {
3394 $block = 4; break;
3395 }
3396 else {
3397 $block = 2; break;
3398 }
3399 break;
3400 }
3401 case 1: {
3402 $t3_4 = $rt.builtin.len($t0_1);
3403 $t4_5 = ($t3_4 - 1);
3404 $t5_6 = $rt.builtin.stringSlice($t0_1, 1, $t4_5);
3405 return $t5_6;
3406 break;
3407 }
3408 case 2: {
3409 return $t0_1;
3410 break;
3411 }
3412 case 3: {
3413 $t6_7 = $rt.builtin.len($t0_1);
3414 $t7_8 = ($t6_7 - 1);
3415 $rt.runtime.boundsCheck($t7_8, $rt.builtin.byteLen($t0_1));
3416 $t8_9 = $rt.builtin.stringByteAt($t0_1, $t7_8);
3417 $t9_10 = ($t8_9 === 34);
3418 if ($t9_10) {
3419 $block = 1; break;
3420 }
3421 else {
3422 $block = 2; break;
3423 }
3424 break;
3425 }
3426 case 4: {
3427 $rt.runtime.boundsCheck(0, $rt.builtin.byteLen($t0_1));
3428 $t10_11 = $rt.builtin.stringByteAt($t0_1, 0);
3429 $t11_12 = ($t10_11 === 34);
3430 if ($t11_12) {
3431 $block = 3; break;
3432 }
3433 else {
3434 $block = 2; break;
3435 }
3436 break;
3437 }
3438 }
3439 }
3440 }
3441
3442 export function jsonFieldRaw(json, key) {
3443 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29;
3444 let $block = 0;
3445 while (true) {
3446 switch ($block) {
3447 case 0: {
3448 $t0_1 = ('"' + key);
3449 $t1_2 = ($t0_1 + '":');
3450 $t2_3 = 0;
3451 $block = 1; break;
3452 break;
3453 }
3454 case 1: {
3455 $t3_4 = $rt.builtin.len(json);
3456 $t4_5 = $rt.builtin.len($t1_2);
3457 $t5_6 = ($t3_4 - $t4_5);
3458 $t6_7 = ($t2_3 <= $t5_6);
3459 if ($t6_7) {
3460 $block = 2; break;
3461 }
3462 else {
3463 $t11_12 = -1;
3464 $block = 3; break;
3465 }
3466 break;
3467 }
3468 case 2: {
3469 $t7_8 = $rt.builtin.len($t1_2);
3470 $t8_9 = ($t2_3 + $t7_8);
3471 $t9_10 = $rt.builtin.stringSlice(json, $t2_3, $t8_9);
3472 $t10_11 = ($t9_10 === $t1_2);
3473 if ($t10_11) {
3474 $block = 4; break;
3475 }
3476 else {
3477 $block = 5; break;
3478 }
3479 break;
3480 }
3481 case 3: {
3482 $t12_13 = ($t11_12 < 0);
3483 if ($t12_13) {
3484 $block = 6; break;
3485 }
3486 else {
3487 $t19_20 = $t11_12;
3488 $block = 9; break;
3489 }
3490 break;
3491 }
3492 case 4: {
3493 $t13_14 = $rt.builtin.len($t1_2);
3494 $t14_15 = ($t2_3 + $t13_14);
3495 $t11_12 = $t14_15;
3496 $block = 3; break;
3497 break;
3498 }
3499 case 5: {
3500 $t15_16 = ($t2_3 + 1);
3501 $t2_3 = $t15_16;
3502 $block = 1; break;
3503 break;
3504 }
3505 case 6: {
3506 return '';
3507 break;
3508 }
3509 case 7: {
3510 $t16_17 = ($t19_20 + 1);
3511 $t19_20 = $t16_17;
3512 $block = 9; break;
3513 break;
3514 }
3515 case 8: {
3516 $t17_18 = $rt.builtin.len(json);
3517 $t18_19 = ($t19_20 >= $t17_18);
3518 if ($t18_19) {
3519 $block = 12; break;
3520 }
3521 else {
3522 $block = 13; break;
3523 }
3524 break;
3525 }
3526 case 9: {
3527 $t20_21 = $rt.builtin.len(json);
3528 $t21_22 = ($t19_20 < $t20_21);
3529 if ($t21_22) {
3530 $block = 10; break;
3531 }
3532 else {
3533 $block = 8; break;
3534 }
3535 break;
3536 }
3537 case 10: {
3538 $rt.runtime.boundsCheck($t19_20, $rt.builtin.byteLen(json));
3539 $t22_23 = $rt.builtin.stringByteAt(json, $t19_20);
3540 $t23_24 = ($t22_23 === 32);
3541 if ($t23_24) {
3542 $block = 7; break;
3543 }
3544 else {
3545 $block = 11; break;
3546 }
3547 break;
3548 }
3549 case 11: {
3550 $rt.runtime.boundsCheck($t19_20, $rt.builtin.byteLen(json));
3551 $t24_25 = $rt.builtin.stringByteAt(json, $t19_20);
3552 $t25_26 = ($t24_25 === 9);
3553 if ($t25_26) {
3554 $block = 7; break;
3555 }
3556 else {
3557 $block = 8; break;
3558 }
3559 break;
3560 }
3561 case 12: {
3562 return '';
3563 break;
3564 }
3565 case 13: {
3566 $t26_27 = skipval(json, $t19_20);
3567 $t27_28 = ($t26_27 < 0);
3568 if ($t27_28) {
3569 $block = 14; break;
3570 }
3571 else {
3572 $block = 15; break;
3573 }
3574 break;
3575 }
3576 case 14: {
3577 return '';
3578 break;
3579 }
3580 case 15: {
3581 $t28_29 = $rt.builtin.stringSlice(json, $t19_20, $t26_27);
3582 return $t28_29;
3583 break;
3584 }
3585 }
3586 }
3587 }
3588
3589 export function newMW(s) {
3590 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23;
3591 let $block = 0;
3592 while (true) {
3593 switch ($block) {
3594 case 0: {
3595 $t0_1 = { $value: { s: '', i: 0 }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
3596 $t1_2 = { $get() { return $t0_1.$get().s; }, $set(v) { const obj = $t0_1.$get(); obj.s = v; $t0_1.$set(obj); } };
3597 $t1_2.$set(s);
3598 $block = 3; break;
3599 break;
3600 }
3601 case 1: {
3602 $t2_3 = { $get() { return $t0_1.$get().i; }, $set(v) { const obj = $t0_1.$get(); obj.i = v; $t0_1.$set(obj); } };
3603 $t3_4 = $t2_3.$get();
3604 $t4_5 = ($t3_4 + 1);
3605 $t5_6 = { $get() { return $t0_1.$get().i; }, $set(v) { const obj = $t0_1.$get(); obj.i = v; $t0_1.$set(obj); } };
3606 $t5_6.$set($t4_5);
3607 $block = 3; break;
3608 break;
3609 }
3610 case 2: {
3611 $t6_7 = { $get() { return $t0_1.$get().i; }, $set(v) { const obj = $t0_1.$get(); obj.i = v; $t0_1.$set(obj); } };
3612 $t7_8 = $t6_7.$get();
3613 $t8_9 = $rt.builtin.len(s);
3614 $t9_10 = ($t7_8 < $t8_9);
3615 if ($t9_10) {
3616 $block = 5; break;
3617 }
3618 else {
3619 $block = 6; break;
3620 }
3621 break;
3622 }
3623 case 3: {
3624 $t10_11 = { $get() { return $t0_1.$get().i; }, $set(v) { const obj = $t0_1.$get(); obj.i = v; $t0_1.$set(obj); } };
3625 $t11_12 = $t10_11.$get();
3626 $t12_13 = $rt.builtin.len(s);
3627 $t13_14 = ($t11_12 < $t12_13);
3628 if ($t13_14) {
3629 $block = 4; break;
3630 }
3631 else {
3632 $block = 2; break;
3633 }
3634 break;
3635 }
3636 case 4: {
3637 $t14_15 = { $get() { return $t0_1.$get().i; }, $set(v) { const obj = $t0_1.$get(); obj.i = v; $t0_1.$set(obj); } };
3638 $t15_16 = $t14_15.$get();
3639 $rt.runtime.boundsCheck($t15_16, $rt.builtin.byteLen(s));
3640 $t16_17 = $rt.builtin.stringByteAt(s, $t15_16);
3641 $t17_18 = ($t16_17 !== 91);
3642 if ($t17_18) {
3643 $block = 1; break;
3644 }
3645 else {
3646 $block = 2; break;
3647 }
3648 break;
3649 }
3650 case 5: {
3651 $t18_19 = { $get() { return $t0_1.$get().i; }, $set(v) { const obj = $t0_1.$get(); obj.i = v; $t0_1.$set(obj); } };
3652 $t19_20 = $t18_19.$get();
3653 $t20_21 = ($t19_20 + 1);
3654 $t21_22 = { $get() { return $t0_1.$get().i; }, $set(v) { const obj = $t0_1.$get(); obj.i = v; $t0_1.$set(obj); } };
3655 $t21_22.$set($t20_21);
3656 $block = 6; break;
3657 break;
3658 }
3659 case 6: {
3660 $t22_23 = $t0_1.$get();
3661 return $t22_23;
3662 break;
3663 }
3664 }
3665 }
3666 }
3667
3668 export function skipval(s, i) {
3669 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48;
3670 let $block = 0;
3671 while (true) {
3672 switch ($block) {
3673 case 0: {
3674 $t0_1 = $rt.builtin.len(s);
3675 $t1_2 = (i >= $t0_1);
3676 if ($t1_2) {
3677 $block = 1; break;
3678 }
3679 else {
3680 $block = 2; break;
3681 }
3682 break;
3683 }
3684 case 1: {
3685 return -1;
3686 break;
3687 }
3688 case 2: {
3689 $rt.runtime.boundsCheck(i, $rt.builtin.byteLen(s));
3690 $t2_3 = $rt.builtin.stringByteAt(s, i);
3691 $t3_4 = ($t2_3 === 34);
3692 if ($t3_4) {
3693 $block = 3; break;
3694 }
3695 else {
3696 $block = 5; break;
3697 }
3698 break;
3699 }
3700 case 3: {
3701 $t4_5 = (i + 1);
3702 $t9_10 = $t4_5;
3703 $block = 8; break;
3704 break;
3705 }
3706 case 4: {
3707 $t5_6 = skipBrack(s, i, 123, 125);
3708 return $t5_6;
3709 break;
3710 }
3711 case 5: {
3712 $t6_7 = ($t2_3 === 123);
3713 if ($t6_7) {
3714 $block = 4; break;
3715 }
3716 else {
3717 $block = 14; break;
3718 }
3719 break;
3720 }
3721 case 6: {
3722 $rt.runtime.boundsCheck($t9_10, $rt.builtin.byteLen(s));
3723 $t7_8 = $rt.builtin.stringByteAt(s, $t9_10);
3724 $t8_9 = ($t7_8 === 92);
3725 if ($t8_9) {
3726 $block = 9; break;
3727 }
3728 else {
3729 $block = 10; break;
3730 }
3731 break;
3732 }
3733 case 7: {
3734 return -1;
3735 break;
3736 }
3737 case 8: {
3738 $t10_11 = $rt.builtin.len(s);
3739 $t11_12 = ($t9_10 < $t10_11);
3740 if ($t11_12) {
3741 $block = 6; break;
3742 }
3743 else {
3744 $block = 7; break;
3745 }
3746 break;
3747 }
3748 case 9: {
3749 $t12_13 = ($t9_10 + 2);
3750 $t9_10 = $t12_13;
3751 $block = 8; break;
3752 break;
3753 }
3754 case 10: {
3755 $rt.runtime.boundsCheck($t9_10, $rt.builtin.byteLen(s));
3756 $t13_14 = $rt.builtin.stringByteAt(s, $t9_10);
3757 $t14_15 = ($t13_14 === 34);
3758 if ($t14_15) {
3759 $block = 11; break;
3760 }
3761 else {
3762 $block = 12; break;
3763 }
3764 break;
3765 }
3766 case 11: {
3767 $t15_16 = ($t9_10 + 1);
3768 return $t15_16;
3769 break;
3770 }
3771 case 12: {
3772 $t16_17 = ($t9_10 + 1);
3773 $t9_10 = $t16_17;
3774 $block = 8; break;
3775 break;
3776 }
3777 case 13: {
3778 $t17_18 = skipBrack(s, i, 91, 93);
3779 return $t17_18;
3780 break;
3781 }
3782 case 14: {
3783 $t18_19 = ($t2_3 === 91);
3784 if ($t18_19) {
3785 $block = 13; break;
3786 }
3787 else {
3788 $block = 16; break;
3789 }
3790 break;
3791 }
3792 case 15: {
3793 $t19_20 = (i + 4);
3794 $t20_21 = $rt.builtin.len(s);
3795 $t21_22 = ($t19_20 <= $t20_21);
3796 if ($t21_22) {
3797 $block = 19; break;
3798 }
3799 else {
3800 $block = 20; break;
3801 }
3802 break;
3803 }
3804 case 16: {
3805 $t22_23 = ($t2_3 === 116);
3806 if ($t22_23) {
3807 $block = 15; break;
3808 }
3809 else {
3810 $block = 18; break;
3811 }
3812 break;
3813 }
3814 case 17: {
3815 $t23_24 = (i + 5);
3816 $t24_25 = $rt.builtin.len(s);
3817 $t25_26 = ($t23_24 <= $t24_25);
3818 if ($t25_26) {
3819 $block = 23; break;
3820 }
3821 else {
3822 $block = 24; break;
3823 }
3824 break;
3825 }
3826 case 18: {
3827 $t26_27 = ($t2_3 === 102);
3828 if ($t26_27) {
3829 $block = 17; break;
3830 }
3831 else {
3832 $block = 22; break;
3833 }
3834 break;
3835 }
3836 case 19: {
3837 $t27_28 = (i + 4);
3838 return $t27_28;
3839 break;
3840 }
3841 case 20: {
3842 return -1;
3843 break;
3844 }
3845 case 21: {
3846 $t28_29 = (i + 4);
3847 $t29_30 = $rt.builtin.len(s);
3848 $t30_31 = ($t28_29 <= $t29_30);
3849 if ($t30_31) {
3850 $block = 25; break;
3851 }
3852 else {
3853 $block = 26; break;
3854 }
3855 break;
3856 }
3857 case 22: {
3858 $t31_32 = ($t2_3 === 110);
3859 if ($t31_32) {
3860 $block = 21; break;
3861 }
3862 else {
3863 $t35_36 = i;
3864 $block = 29; break;
3865 }
3866 break;
3867 }
3868 case 23: {
3869 $t32_33 = (i + 5);
3870 return $t32_33;
3871 break;
3872 }
3873 case 24: {
3874 return -1;
3875 break;
3876 }
3877 case 25: {
3878 $t33_34 = (i + 4);
3879 return $t33_34;
3880 break;
3881 }
3882 case 26: {
3883 return -1;
3884 break;
3885 }
3886 case 27: {
3887 $t34_35 = ($t35_36 + 1);
3888 $t35_36 = $t34_35;
3889 $block = 29; break;
3890 break;
3891 }
3892 case 28: {
3893 return $t35_36;
3894 break;
3895 }
3896 case 29: {
3897 $t36_37 = $rt.builtin.len(s);
3898 $t37_38 = ($t35_36 < $t36_37);
3899 if ($t37_38) {
3900 $block = 34; break;
3901 }
3902 else {
3903 $block = 28; break;
3904 }
3905 break;
3906 }
3907 case 30: {
3908 $rt.runtime.boundsCheck($t35_36, $rt.builtin.byteLen(s));
3909 $t38_39 = $rt.builtin.stringByteAt(s, $t35_36);
3910 $t39_40 = ($t38_39 !== 10);
3911 if ($t39_40) {
3912 $block = 27; break;
3913 }
3914 else {
3915 $block = 28; break;
3916 }
3917 break;
3918 }
3919 case 31: {
3920 $rt.runtime.boundsCheck($t35_36, $rt.builtin.byteLen(s));
3921 $t40_41 = $rt.builtin.stringByteAt(s, $t35_36);
3922 $t41_42 = ($t40_41 !== 32);
3923 if ($t41_42) {
3924 $block = 30; break;
3925 }
3926 else {
3927 $block = 28; break;
3928 }
3929 break;
3930 }
3931 case 32: {
3932 $rt.runtime.boundsCheck($t35_36, $rt.builtin.byteLen(s));
3933 $t42_43 = $rt.builtin.stringByteAt(s, $t35_36);
3934 $t43_44 = ($t42_43 !== 93);
3935 if ($t43_44) {
3936 $block = 31; break;
3937 }
3938 else {
3939 $block = 28; break;
3940 }
3941 break;
3942 }
3943 case 33: {
3944 $rt.runtime.boundsCheck($t35_36, $rt.builtin.byteLen(s));
3945 $t44_45 = $rt.builtin.stringByteAt(s, $t35_36);
3946 $t45_46 = ($t44_45 !== 125);
3947 if ($t45_46) {
3948 $block = 32; break;
3949 }
3950 else {
3951 $block = 28; break;
3952 }
3953 break;
3954 }
3955 case 34: {
3956 $rt.runtime.boundsCheck($t35_36, $rt.builtin.byteLen(s));
3957 $t46_47 = $rt.builtin.stringByteAt(s, $t35_36);
3958 $t47_48 = ($t46_47 !== 44);
3959 if ($t47_48) {
3960 $block = 33; break;
3961 }
3962 else {
3963 $block = 28; break;
3964 }
3965 break;
3966 }
3967 }
3968 }
3969 }
3970
3971 export function skipBrack(s, i, open, close) {
3972 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23;
3973 let $block = 0;
3974 while (true) {
3975 switch ($block) {
3976 case 0: {
3977 $t0_1 = (i + 1);
3978 $t2_3 = $t0_1;
3979 $t3_4 = 1;
3980 $t4_5 = false;
3981 $block = 3; break;
3982 break;
3983 }
3984 case 1: {
3985 if ($t4_5) {
3986 $block = 5; break;
3987 }
3988 else {
3989 $block = 7; break;
3990 }
3991 break;
3992 }
3993 case 2: {
3994 $t1_2 = ($t3_4 !== 0);
3995 if ($t1_2) {
3996 $block = 16; break;
3997 }
3998 else {
3999 $block = 17; break;
4000 }
4001 break;
4002 }
4003 case 3: {
4004 $t5_6 = $rt.builtin.len(s);
4005 $t6_7 = ($t2_3 < $t5_6);
4006 if ($t6_7) {
4007 $block = 4; break;
4008 }
4009 else {
4010 $block = 2; break;
4011 }
4012 break;
4013 }
4014 case 4: {
4015 $t7_8 = ($t3_4 > 0);
4016 if ($t7_8) {
4017 $block = 1; break;
4018 }
4019 else {
4020 $block = 2; break;
4021 }
4022 break;
4023 }
4024 case 5: {
4025 $rt.runtime.boundsCheck($t2_3, $rt.builtin.byteLen(s));
4026 $t8_9 = $rt.builtin.stringByteAt(s, $t2_3);
4027 $t9_10 = ($t8_9 === 92);
4028 if ($t9_10) {
4029 $block = 8; break;
4030 }
4031 else {
4032 $block = 9; break;
4033 }
4034 break;
4035 }
4036 case 6: {
4037 $t13_14 = ($t10_11 + 1);
4038 $t2_3 = $t13_14;
4039 $t3_4 = $t11_12;
4040 $t4_5 = $t12_13;
4041 $block = 3; break;
4042 break;
4043 }
4044 case 7: {
4045 $rt.runtime.boundsCheck($t2_3, $rt.builtin.byteLen(s));
4046 $t14_15 = $rt.builtin.stringByteAt(s, $t2_3);
4047 $t15_16 = ($t14_15 === 34);
4048 if ($t15_16) {
4049 $block = 11; break;
4050 }
4051 else {
4052 $block = 13; break;
4053 }
4054 break;
4055 }
4056 case 8: {
4057 $t16_17 = ($t2_3 + 1);
4058 $t10_11 = $t16_17;
4059 $t11_12 = $t3_4;
4060 $t12_13 = $t4_5;
4061 $block = 6; break;
4062 break;
4063 }
4064 case 9: {
4065 $rt.runtime.boundsCheck($t2_3, $rt.builtin.byteLen(s));
4066 $t17_18 = $rt.builtin.stringByteAt(s, $t2_3);
4067 $t18_19 = ($t17_18 === 34);
4068 if ($t18_19) {
4069 $block = 10; break;
4070 }
4071 else {
4072 $t10_11 = $t2_3;
4073 $t11_12 = $t3_4;
4074 $t12_13 = $t4_5;
4075 $block = 6; break;
4076 }
4077 break;
4078 }
4079 case 10: {
4080 $t10_11 = $t2_3;
4081 $t11_12 = $t3_4;
4082 $t12_13 = false;
4083 $block = 6; break;
4084 break;
4085 }
4086 case 11: {
4087 $t10_11 = $t2_3;
4088 $t11_12 = $t3_4;
4089 $t12_13 = true;
4090 $block = 6; break;
4091 break;
4092 }
4093 case 12: {
4094 $t19_20 = ($t3_4 + 1);
4095 $t10_11 = $t2_3;
4096 $t11_12 = $t19_20;
4097 $t12_13 = $t4_5;
4098 $block = 6; break;
4099 break;
4100 }
4101 case 13: {
4102 $t20_21 = ($t14_15 === open);
4103 if ($t20_21) {
4104 $block = 12; break;
4105 }
4106 else {
4107 $block = 15; break;
4108 }
4109 break;
4110 }
4111 case 14: {
4112 $t21_22 = ($t3_4 - 1);
4113 $t10_11 = $t2_3;
4114 $t11_12 = $t21_22;
4115 $t12_13 = $t4_5;
4116 $block = 6; break;
4117 break;
4118 }
4119 case 15: {
4120 $t22_23 = ($t14_15 === close);
4121 if ($t22_23) {
4122 $block = 14; break;
4123 }
4124 else {
4125 $t10_11 = $t2_3;
4126 $t11_12 = $t3_4;
4127 $t12_13 = $t4_5;
4128 $block = 6; break;
4129 }
4130 break;
4131 }
4132 case 16: {
4133 return -1;
4134 break;
4135 }
4136 case 17: {
4137 return $t2_3;
4138 break;
4139 }
4140 }
4141 }
4142 }
4143
4144 export function identitySetPubkey(hex) {
4145 myPubkey.$set(hex);
4146 return;
4147 }
4148
4149 export function identityClearKey() {
4150 myPubkey.$set('');
4151 return;
4152 }
4153
4154 export function cacheQuery(filterRaw, cb) {
4155 let $t0_1;
4156 $t0_1 = common$jsbridge$idb.QueryEvents(filterRaw, cb);
4157 return;
4158 }
4159
4160 export function cacheStore(evJSON, cb) {
4161 let $t0_1;
4162 $t0_1 = common$jsbridge$idb.SaveEvent(evJSON, cb);
4163 return;
4164 }
4165
4166 export function cacheSaveDM(dmJSON, cb) {
4167 let $t0_1;
4168 $t0_1 = common$jsbridge$idb.SaveDM(dmJSON, cb);
4169 return;
4170 }
4171
4172 export function cacheGetConversationList(cb) {
4173 let $t0_1;
4174 $t0_1 = common$jsbridge$idb.GetConversationList(cb);
4175 return;
4176 }
4177
4178 export function cacheQueryDMs(peer, limit, until, cb) {
4179 let $t0_1;
4180 $t0_1 = common$jsbridge$idb.QueryDMs(peer, limit, until, cb);
4181 return;
4182 }
4183
4184 export function cacheClearDMsByPeer(peer, cb) {
4185 let $t0_1;
4186 $t0_1 = common$jsbridge$idb.ClearDMsByPeer(peer, cb);
4187 return;
4188 }
4189
4190 export function DMRecord$ToJSON(r) {
4191 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35;
4192 $t0_1 = { $get() { return r.$get().ID; }, $set(v) { const obj = r.$get(); obj.ID = v; r.$set(obj); } };
4193 $t1_2 = $t0_1.$get();
4194 $t2_3 = jstr($t1_2);
4195 $t3_4 = ('{"id":' + $t2_3);
4196 $t4_5 = ($t3_4 + ',"peer":');
4197 $t5_6 = { $get() { return r.$get().Peer; }, $set(v) { const obj = r.$get(); obj.Peer = v; r.$set(obj); } };
4198 $t6_7 = $t5_6.$get();
4199 $t7_8 = jstr($t6_7);
4200 $t8_9 = ($t4_5 + $t7_8);
4201 $t9_10 = ($t8_9 + ',"from":');
4202 $t10_11 = { $get() { return r.$get().From; }, $set(v) { const obj = r.$get(); obj.From = v; r.$set(obj); } };
4203 $t11_12 = $t10_11.$get();
4204 $t12_13 = jstr($t11_12);
4205 $t13_14 = ($t9_10 + $t12_13);
4206 $t14_15 = ($t13_14 + ',"content":');
4207 $t15_16 = { $get() { return r.$get().Content; }, $set(v) { const obj = r.$get(); obj.Content = v; r.$set(obj); } };
4208 $t16_17 = $t15_16.$get();
4209 $t17_18 = jstr($t16_17);
4210 $t18_19 = ($t14_15 + $t17_18);
4211 $t19_20 = ($t18_19 + ',"created_at":');
4212 $t20_21 = { $get() { return r.$get().CreatedAt; }, $set(v) { const obj = r.$get(); obj.CreatedAt = v; r.$set(obj); } };
4213 $t21_22 = $t20_21.$get();
4214 $t22_23 = common$helpers.Itoa($t21_22);
4215 $t23_24 = ($t19_20 + $t22_23);
4216 $t24_25 = ($t23_24 + ',"protocol":');
4217 $t25_26 = { $get() { return r.$get().Protocol; }, $set(v) { const obj = r.$get(); obj.Protocol = v; r.$set(obj); } };
4218 $t26_27 = $t25_26.$get();
4219 $t27_28 = jstr($t26_27);
4220 $t28_29 = ($t24_25 + $t27_28);
4221 $t29_30 = ($t28_29 + ',"eventId":');
4222 $t30_31 = { $get() { return r.$get().EventID; }, $set(v) { const obj = r.$get(); obj.EventID = v; r.$set(obj); } };
4223 $t31_32 = $t30_31.$get();
4224 $t32_33 = jstr($t31_32);
4225 $t33_34 = ($t29_30 + $t32_33);
4226 $t34_35 = ($t33_34 + '}');
4227 return $t34_35;
4228 }
4229
4230 $rt.types.getType('sw-relay.DMRecord')?.methods?.set('ToJSON', DMRecord$ToJSON);
4231 export function mw$num(w) {
4232 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52;
4233 let $block = 0;
4234 while (true) {
4235 switch ($block) {
4236 case 0: {
4237 $t0_1 = mw$sep(w);
4238 $t1_2 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4239 $t2_3 = $t1_2.$get();
4240 $t3_4 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4241 $t4_5 = $t3_4.$get();
4242 $t5_6 = $rt.builtin.len($t4_5);
4243 $t6_7 = ($t2_3 < $t5_6);
4244 if ($t6_7) {
4245 $block = 3; break;
4246 }
4247 else {
4248 $t11_12 = false;
4249 $block = 2; break;
4250 }
4251 break;
4252 }
4253 case 1: {
4254 $t7_8 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4255 $t8_9 = $t7_8.$get();
4256 $t9_10 = ($t8_9 + 1);
4257 $t10_11 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4258 $t10_11.$set($t9_10);
4259 $t11_12 = true;
4260 $block = 2; break;
4261 break;
4262 }
4263 case 2: {
4264 $t31_32 = 0;
4265 $block = 6; break;
4266 break;
4267 }
4268 case 3: {
4269 $t12_13 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4270 $t13_14 = $t12_13.$get();
4271 $t14_15 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4272 $t15_16 = $t14_15.$get();
4273 $rt.runtime.boundsCheck($t13_14, $rt.builtin.byteLen($t15_16));
4274 $t16_17 = $rt.builtin.stringByteAt($t15_16, $t13_14);
4275 $t17_18 = ($t16_17 === 45);
4276 if ($t17_18) {
4277 $block = 1; break;
4278 }
4279 else {
4280 $t11_12 = false;
4281 $block = 2; break;
4282 }
4283 break;
4284 }
4285 case 4: {
4286 $t18_19 = ($t31_32 * 10);
4287 $t19_20 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4288 $t20_21 = $t19_20.$get();
4289 $t21_22 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4290 $t22_23 = $t21_22.$get();
4291 $rt.runtime.boundsCheck($t20_21, $rt.builtin.byteLen($t22_23));
4292 $t23_24 = $rt.builtin.stringByteAt($t22_23, $t20_21);
4293 $t24_25 = (($t23_24 - 48) & 0xFF);
4294 $t25_26 = $t24_25;
4295 $t26_27 = ($t18_19 + $t25_26);
4296 $t27_28 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4297 $t28_29 = $t27_28.$get();
4298 $t29_30 = ($t28_29 + 1);
4299 $t30_31 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4300 $t30_31.$set($t29_30);
4301 $t31_32 = $t26_27;
4302 $block = 6; break;
4303 break;
4304 }
4305 case 5: {
4306 if ($t11_12) {
4307 $block = 9; break;
4308 }
4309 else {
4310 $t51_52 = $t31_32;
4311 $block = 10; break;
4312 }
4313 break;
4314 }
4315 case 6: {
4316 $t32_33 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4317 $t33_34 = $t32_33.$get();
4318 $t34_35 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4319 $t35_36 = $t34_35.$get();
4320 $t36_37 = $rt.builtin.len($t35_36);
4321 $t37_38 = ($t33_34 < $t36_37);
4322 if ($t37_38) {
4323 $block = 8; break;
4324 }
4325 else {
4326 $block = 5; break;
4327 }
4328 break;
4329 }
4330 case 7: {
4331 $t38_39 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4332 $t39_40 = $t38_39.$get();
4333 $t40_41 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4334 $t41_42 = $t40_41.$get();
4335 $rt.runtime.boundsCheck($t39_40, $rt.builtin.byteLen($t41_42));
4336 $t42_43 = $rt.builtin.stringByteAt($t41_42, $t39_40);
4337 $t43_44 = ($t42_43 <= 57);
4338 if ($t43_44) {
4339 $block = 4; break;
4340 }
4341 else {
4342 $block = 5; break;
4343 }
4344 break;
4345 }
4346 case 8: {
4347 $t44_45 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4348 $t45_46 = $t44_45.$get();
4349 $t46_47 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4350 $t47_48 = $t46_47.$get();
4351 $rt.runtime.boundsCheck($t45_46, $rt.builtin.byteLen($t47_48));
4352 $t48_49 = $rt.builtin.stringByteAt($t47_48, $t45_46);
4353 $t49_50 = ($t48_49 >= 48);
4354 if ($t49_50) {
4355 $block = 7; break;
4356 }
4357 else {
4358 $block = 5; break;
4359 }
4360 break;
4361 }
4362 case 9: {
4363 $t50_51 = -$t31_32;
4364 $t51_52 = $t50_51;
4365 $block = 10; break;
4366 break;
4367 }
4368 case 10: {
4369 return $t51_52;
4370 break;
4371 }
4372 }
4373 }
4374 }
4375
4376 $rt.types.getType('sw-relay.mw')?.methods?.set('num', mw$num);
4377 export function mw$raw(w) {
4378 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21;
4379 let $block = 0;
4380 while (true) {
4381 switch ($block) {
4382 case 0: {
4383 $t0_1 = mw$sep(w);
4384 $t1_2 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4385 $t2_3 = $t1_2.$get();
4386 $t3_4 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4387 $t4_5 = $t3_4.$get();
4388 $t5_6 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4389 $t6_7 = $t5_6.$get();
4390 $t7_8 = skipval($t4_5, $t6_7);
4391 $t8_9 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4392 $t8_9.$set($t7_8);
4393 $t9_10 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4394 $t10_11 = $t9_10.$get();
4395 $t11_12 = ($t10_11 < 0);
4396 if ($t11_12) {
4397 $block = 1; break;
4398 }
4399 else {
4400 $block = 2; break;
4401 }
4402 break;
4403 }
4404 case 1: {
4405 $t12_13 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4406 $t13_14 = $t12_13.$get();
4407 $t14_15 = $rt.builtin.len($t13_14);
4408 $t15_16 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4409 $t15_16.$set($t14_15);
4410 return '';
4411 break;
4412 }
4413 case 2: {
4414 $t16_17 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4415 $t17_18 = $t16_17.$get();
4416 $t18_19 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4417 $t19_20 = $t18_19.$get();
4418 $t20_21 = $rt.builtin.stringSlice($t17_18, $t2_3, $t19_20);
4419 return $t20_21;
4420 break;
4421 }
4422 }
4423 }
4424 }
4425
4426 $rt.types.getType('sw-relay.mw')?.methods?.set('raw', mw$raw);
4427 export function mw$sep(w) {
4428 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20;
4429 let $block = 0;
4430 while (true) {
4431 switch ($block) {
4432 case 0: {
4433 $block = 3; break;
4434 break;
4435 }
4436 case 1: {
4437 $t0_1 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4438 $t1_2 = $t0_1.$get();
4439 $t2_3 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4440 $t3_4 = $t2_3.$get();
4441 $rt.runtime.boundsCheck($t1_2, $rt.builtin.byteLen($t3_4));
4442 $t4_5 = $rt.builtin.stringByteAt($t3_4, $t1_2);
4443 $t5_6 = ($t4_5 !== 32);
4444 if ($t5_6) {
4445 $block = 8; break;
4446 }
4447 else {
4448 $block = 4; break;
4449 }
4450 break;
4451 }
4452 case 2: {
4453 return;
4454 break;
4455 }
4456 case 3: {
4457 $t6_7 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4458 $t7_8 = $t6_7.$get();
4459 $t8_9 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4460 $t9_10 = $t8_9.$get();
4461 $t10_11 = $rt.builtin.len($t9_10);
4462 $t11_12 = ($t7_8 < $t10_11);
4463 if ($t11_12) {
4464 $block = 1; break;
4465 }
4466 else {
4467 $block = 2; break;
4468 }
4469 break;
4470 }
4471 case 4: {
4472 $t12_13 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4473 $t13_14 = $t12_13.$get();
4474 $t14_15 = ($t13_14 + 1);
4475 $t15_16 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4476 $t15_16.$set($t14_15);
4477 $block = 3; break;
4478 break;
4479 }
4480 case 5: {
4481 $t16_17 = ($t4_5 !== 44);
4482 if ($t16_17) {
4483 $block = 2; break;
4484 }
4485 else {
4486 $block = 4; break;
4487 }
4488 break;
4489 }
4490 case 6: {
4491 $t17_18 = ($t4_5 !== 9);
4492 if ($t17_18) {
4493 $block = 5; break;
4494 }
4495 else {
4496 $block = 4; break;
4497 }
4498 break;
4499 }
4500 case 7: {
4501 $t18_19 = ($t4_5 !== 13);
4502 if ($t18_19) {
4503 $block = 6; break;
4504 }
4505 else {
4506 $block = 4; break;
4507 }
4508 break;
4509 }
4510 case 8: {
4511 $t19_20 = ($t4_5 !== 10);
4512 if ($t19_20) {
4513 $block = 7; break;
4514 }
4515 else {
4516 $block = 4; break;
4517 }
4518 break;
4519 }
4520 }
4521 }
4522 }
4523
4524 $rt.types.getType('sw-relay.mw')?.methods?.set('sep', mw$sep);
4525 export function mw$str(w) {
4526 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61, $t61_62, $t62_63, $t63_64, $t64_65, $t65_66, $t66_67, $t67_68, $t68_69, $t69_70, $t70_71, $t71_72, $t72_73, $t73_74, $t74_75, $t75_76, $t76_77, $t77_78, $t78_79, $t79_80, $t80_81, $t81_82, $t82_83, $t83_84, $t84_85, $t85_86, $t86_87, $t87_88, $t88_89, $t89_90, $t90_91, $t91_92, $t92_93, $t93_94, $t94_95, $t95_96, $t96_97, $t97_98, $t98_99, $t99_100, $t100_101, $t101_102, $t102_103, $t103_104, $t104_105, $t105_106, $t106_107, $t107_108, $t108_109, $t109_110, $t110_111, $t111_112, $t112_113, $t113_114, $t114_115, $t115_116, $t116_117, $t117_118, $t118_119, $t119_120, $t120_121, $t121_122, $t122_123, $t123_124, $t124_125, $t125_126, $t126_127, $t127_128, $t128_129, $t129_130, $t130_131, $t131_132, $t132_133, $t133_134, $t134_135, $t135_136, $t136_137, $t137_138, $t138_139, $t139_140, $t140_141, $t141_142, $t142_143, $t143_144, $t144_145, $t145_146, $t146_147, $t147_148, $t148_149, $t149_150, $t150_151, $t151_152, $t152_153, $t153_154, $t154_155, $t155_156, $t156_157, $t157_158, $t158_159, $t159_160, $t160_161, $t161_162, $t162_163, $t163_164, $t164_165, $t165_166, $t166_167, $t167_168, $t168_169, $t169_170, $t170_171, $t171_172, $t172_173, $t173_174, $t174_175, $t175_176, $t176_177, $t177_178, $t178_179, $t179_180, $t180_181, $t181_182, $t182_183, $t183_184, $t184_185, $t185_186, $t186_187, $t187_188, $t188_189, $t189_190, $t190_191, $t191_192, $t192_193, $t193_194, $t194_195, $t195_196, $t196_197, $t197_198, $t198_199, $t199_200, $t200_201, $t201_202, $t202_203, $t203_204, $t204_205, $t205_206, $t206_207, $t207_208, $t208_209, $t209_210, $t210_211, $t211_212, $t212_213, $t213_214;
4527 let $block = 0;
4528 while (true) {
4529 switch ($block) {
4530 case 0: {
4531 $t0_1 = mw$sep(w);
4532 $t1_2 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4533 $t2_3 = $t1_2.$get();
4534 $t3_4 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4535 $t4_5 = $t3_4.$get();
4536 $t5_6 = $rt.builtin.len($t4_5);
4537 $t6_7 = ($t2_3 >= $t5_6);
4538 if ($t6_7) {
4539 $block = 1; break;
4540 }
4541 else {
4542 $block = 3; break;
4543 }
4544 break;
4545 }
4546 case 1: {
4547 return '';
4548 break;
4549 }
4550 case 2: {
4551 $t7_8 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4552 $t8_9 = $t7_8.$get();
4553 $t9_10 = ($t8_9 + 1);
4554 $t10_11 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4555 $t10_11.$set($t9_10);
4556 $t11_12 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4557 $t12_13 = $t11_12.$get();
4558 $t31_32 = null;
4559 $t32_33 = false;
4560 $t33_34 = $t12_13;
4561 $block = 6; break;
4562 break;
4563 }
4564 case 3: {
4565 $t13_14 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4566 $t14_15 = $t13_14.$get();
4567 $t15_16 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4568 $t16_17 = $t15_16.$get();
4569 $rt.runtime.boundsCheck($t14_15, $rt.builtin.byteLen($t16_17));
4570 $t17_18 = $rt.builtin.stringByteAt($t16_17, $t14_15);
4571 $t18_19 = ($t17_18 !== 34);
4572 if ($t18_19) {
4573 $block = 1; break;
4574 }
4575 else {
4576 $block = 2; break;
4577 }
4578 break;
4579 }
4580 case 4: {
4581 $t19_20 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4582 $t20_21 = $t19_20.$get();
4583 $t21_22 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4584 $t22_23 = $t21_22.$get();
4585 $rt.runtime.boundsCheck($t20_21, $rt.builtin.byteLen($t22_23));
4586 $t23_24 = $rt.builtin.stringByteAt($t22_23, $t20_21);
4587 $t24_25 = ($t23_24 === 92);
4588 if ($t24_25) {
4589 $block = 10; break;
4590 }
4591 else {
4592 $block = 9; break;
4593 }
4594 break;
4595 }
4596 case 5: {
4597 $t25_26 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4598 $t26_27 = $t25_26.$get();
4599 $t27_28 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4600 $t28_29 = $t27_28.$get();
4601 $t29_30 = $rt.builtin.len($t28_29);
4602 $t30_31 = ($t26_27 >= $t29_30);
4603 if ($t30_31) {
4604 $block = 43; break;
4605 }
4606 else {
4607 $block = 44; break;
4608 }
4609 break;
4610 }
4611 case 6: {
4612 $t34_35 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4613 $t35_36 = $t34_35.$get();
4614 $t36_37 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4615 $t37_38 = $t36_37.$get();
4616 $t38_39 = $rt.builtin.len($t37_38);
4617 $t39_40 = ($t35_36 < $t38_39);
4618 if ($t39_40) {
4619 $block = 7; break;
4620 }
4621 else {
4622 $block = 5; break;
4623 }
4624 break;
4625 }
4626 case 7: {
4627 $t40_41 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4628 $t41_42 = $t40_41.$get();
4629 $t42_43 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4630 $t43_44 = $t42_43.$get();
4631 $rt.runtime.boundsCheck($t41_42, $rt.builtin.byteLen($t43_44));
4632 $t44_45 = $rt.builtin.stringByteAt($t43_44, $t41_42);
4633 $t45_46 = ($t44_45 !== 34);
4634 if ($t45_46) {
4635 $block = 4; break;
4636 }
4637 else {
4638 $block = 5; break;
4639 }
4640 break;
4641 }
4642 case 8: {
4643 $t46_47 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4644 $t47_48 = $t46_47.$get();
4645 $t48_49 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4646 $t49_50 = $t48_49.$get();
4647 $t50_51 = $rt.builtin.stringSlice($t47_48, $t33_34, $t49_50);
4648 $t51_52 = $rt.builtin.appendString($t31_32, $t50_51);
4649 $t52_53 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4650 $t53_54 = $t52_53.$get();
4651 $t54_55 = ($t53_54 + 1);
4652 $t55_56 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4653 $t55_56.$set($t54_55);
4654 $t56_57 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4655 $t57_58 = $t56_57.$get();
4656 $t58_59 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4657 $t59_60 = $t58_59.$get();
4658 $rt.runtime.boundsCheck($t57_58, $rt.builtin.byteLen($t59_60));
4659 $t60_61 = $rt.builtin.stringByteAt($t59_60, $t57_58);
4660 $t61_62 = ($t60_61 === 34);
4661 if ($t61_62) {
4662 $block = 12; break;
4663 }
4664 else {
4665 $block = 14; break;
4666 }
4667 break;
4668 }
4669 case 9: {
4670 $t62_63 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4671 $t63_64 = $t62_63.$get();
4672 $t64_65 = ($t63_64 + 1);
4673 $t65_66 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4674 $t65_66.$set($t64_65);
4675 let $phi0 = $t31_32;
4676 let $phi1 = $t32_33;
4677 let $phi2 = $t33_34;
4678 $t31_32 = $phi0;
4679 $t32_33 = $phi1;
4680 $t33_34 = $phi2;
4681 $block = 6; break;
4682 break;
4683 }
4684 case 10: {
4685 $t66_67 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4686 $t67_68 = $t66_67.$get();
4687 $t68_69 = ($t67_68 + 1);
4688 $t69_70 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4689 $t70_71 = $t69_70.$get();
4690 $t71_72 = $rt.builtin.len($t70_71);
4691 $t72_73 = ($t68_69 < $t71_72);
4692 if ($t72_73) {
4693 $block = 8; break;
4694 }
4695 else {
4696 $block = 9; break;
4697 }
4698 break;
4699 }
4700 case 11: {
4701 $t74_75 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4702 $t75_76 = $t74_75.$get();
4703 $t76_77 = ($t75_76 + 1);
4704 $t77_78 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4705 $t77_78.$set($t76_77);
4706 $t78_79 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4707 $t79_80 = $t78_79.$get();
4708 $t31_32 = $t73_74;
4709 $t32_33 = true;
4710 $t33_34 = $t79_80;
4711 $block = 6; break;
4712 break;
4713 }
4714 case 12: {
4715 $t80_81 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4716 $t81_82 = $t80_81.$get();
4717 $t82_83 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4718 $t83_84 = $t82_83.$get();
4719 $rt.runtime.boundsCheck($t81_82, $rt.builtin.byteLen($t83_84));
4720 $t84_85 = $rt.builtin.stringByteAt($t83_84, $t81_82);
4721 $t85_86 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
4722 $t86_87 = $t85_86.$get().addr(0);
4723 $t86_87.$set($t84_85);
4724 $t87_88 = $rt.builtin.sliceSlice($t85_86.$get(), undefined, undefined, undefined);
4725 $t88_89 = $rt.builtin.appendSlice($t51_52, $t87_88);
4726 $t73_74 = $t88_89;
4727 $block = 11; break;
4728 break;
4729 }
4730 case 13: {
4731 $t89_90 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
4732 $t90_91 = $t89_90.$get().addr(0);
4733 $t90_91.$set(10);
4734 $t91_92 = $rt.builtin.sliceSlice($t89_90.$get(), undefined, undefined, undefined);
4735 $t92_93 = $rt.builtin.appendSlice($t51_52, $t91_92);
4736 $t73_74 = $t92_93;
4737 $block = 11; break;
4738 break;
4739 }
4740 case 14: {
4741 $t93_94 = ($t60_61 === 92);
4742 if ($t93_94) {
4743 $block = 12; break;
4744 }
4745 else {
4746 $block = 15; break;
4747 }
4748 break;
4749 }
4750 case 15: {
4751 $t94_95 = ($t60_61 === 47);
4752 if ($t94_95) {
4753 $block = 12; break;
4754 }
4755 else {
4756 $block = 16; break;
4757 }
4758 break;
4759 }
4760 case 16: {
4761 $t95_96 = ($t60_61 === 110);
4762 if ($t95_96) {
4763 $block = 13; break;
4764 }
4765 else {
4766 $block = 18; break;
4767 }
4768 break;
4769 }
4770 case 17: {
4771 $t96_97 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
4772 $t97_98 = $t96_97.$get().addr(0);
4773 $t97_98.$set(9);
4774 $t98_99 = $rt.builtin.sliceSlice($t96_97.$get(), undefined, undefined, undefined);
4775 $t99_100 = $rt.builtin.appendSlice($t51_52, $t98_99);
4776 $t73_74 = $t99_100;
4777 $block = 11; break;
4778 break;
4779 }
4780 case 18: {
4781 $t100_101 = ($t60_61 === 116);
4782 if ($t100_101) {
4783 $block = 17; break;
4784 }
4785 else {
4786 $block = 20; break;
4787 }
4788 break;
4789 }
4790 case 19: {
4791 $t101_102 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
4792 $t102_103 = $t101_102.$get().addr(0);
4793 $t102_103.$set(13);
4794 $t103_104 = $rt.builtin.sliceSlice($t101_102.$get(), undefined, undefined, undefined);
4795 $t104_105 = $rt.builtin.appendSlice($t51_52, $t103_104);
4796 $t73_74 = $t104_105;
4797 $block = 11; break;
4798 break;
4799 }
4800 case 20: {
4801 $t105_106 = ($t60_61 === 114);
4802 if ($t105_106) {
4803 $block = 19; break;
4804 }
4805 else {
4806 $block = 22; break;
4807 }
4808 break;
4809 }
4810 case 21: {
4811 $t106_107 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4812 $t107_108 = $t106_107.$get();
4813 $t108_109 = ($t107_108 + 4);
4814 $t109_110 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4815 $t110_111 = $t109_110.$get();
4816 $t111_112 = $rt.builtin.len($t110_111);
4817 $t112_113 = ($t108_109 < $t111_112);
4818 if ($t112_113) {
4819 $block = 24; break;
4820 }
4821 else {
4822 $block = 25; break;
4823 }
4824 break;
4825 }
4826 case 22: {
4827 $t113_114 = ($t60_61 === 117);
4828 if ($t113_114) {
4829 $block = 21; break;
4830 }
4831 else {
4832 $block = 23; break;
4833 }
4834 break;
4835 }
4836 case 23: {
4837 $t114_115 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4838 $t115_116 = $t114_115.$get();
4839 $t116_117 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4840 $t117_118 = $t116_117.$get();
4841 $rt.runtime.boundsCheck($t115_116, $rt.builtin.byteLen($t117_118));
4842 $t118_119 = $rt.builtin.stringByteAt($t117_118, $t115_116);
4843 $t119_120 = { $value: $rt.builtin.makeSlice(2, 2, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
4844 $t120_121 = $t119_120.$get().addr(0);
4845 $t120_121.$set(92);
4846 $t121_122 = $t119_120.$get().addr(1);
4847 $t121_122.$set($t118_119);
4848 $t122_123 = $rt.builtin.sliceSlice($t119_120.$get(), undefined, undefined, undefined);
4849 $t123_124 = $rt.builtin.appendSlice($t51_52, $t122_123);
4850 $t73_74 = $t123_124;
4851 $block = 11; break;
4852 break;
4853 }
4854 case 24: {
4855 $t129_130 = 0;
4856 $t130_131 = 1;
4857 $block = 26; break;
4858 break;
4859 }
4860 case 25: {
4861 $t124_125 = { $value: $rt.builtin.makeSlice(2, 2, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
4862 $t125_126 = $t124_125.$get().addr(0);
4863 $t125_126.$set(92);
4864 $t126_127 = $t124_125.$get().addr(1);
4865 $t126_127.$set(117);
4866 $t127_128 = $rt.builtin.sliceSlice($t124_125.$get(), undefined, undefined, undefined);
4867 $t128_129 = $rt.builtin.appendSlice($t51_52, $t127_128);
4868 $t73_74 = $t128_129;
4869 $block = 11; break;
4870 break;
4871 }
4872 case 26: {
4873 $t131_132 = ($t130_131 <= 4);
4874 if ($t131_132) {
4875 $block = 27; break;
4876 }
4877 else {
4878 $block = 28; break;
4879 }
4880 break;
4881 }
4882 case 27: {
4883 $t132_133 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4884 $t133_134 = $t132_133.$get();
4885 $t134_135 = ($t133_134 + $t130_131);
4886 $t135_136 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4887 $t136_137 = $t135_136.$get();
4888 $rt.runtime.boundsCheck($t134_135, $rt.builtin.byteLen($t136_137));
4889 $t137_138 = $rt.builtin.stringByteAt($t136_137, $t134_135);
4890 $t138_139 = ($t129_130 * (2 ** 4));
4891 $t139_140 = ($t137_138 >= 48);
4892 if ($t139_140) {
4893 $block = 32; break;
4894 }
4895 else {
4896 $block = 31; break;
4897 }
4898 break;
4899 }
4900 case 28: {
4901 $t140_141 = ($t129_130 < 128);
4902 if ($t140_141) {
4903 $block = 38; break;
4904 }
4905 else {
4906 $block = 40; break;
4907 }
4908 break;
4909 }
4910 case 29: {
4911 $t141_142 = (($t137_138 - 48) & 0xFF);
4912 $t142_143 = $t141_142;
4913 $t143_144 = $rt.builtin.int64or($t138_139, $t142_143);
4914 $t144_145 = $t143_144;
4915 $block = 30; break;
4916 break;
4917 }
4918 case 30: {
4919 $t145_146 = ($t130_131 + 1);
4920 $t129_130 = $t144_145;
4921 $t130_131 = $t145_146;
4922 $block = 26; break;
4923 break;
4924 }
4925 case 31: {
4926 $t146_147 = ($t137_138 >= 97);
4927 if ($t146_147) {
4928 $block = 35; break;
4929 }
4930 else {
4931 $block = 34; break;
4932 }
4933 break;
4934 }
4935 case 32: {
4936 $t147_148 = ($t137_138 <= 57);
4937 if ($t147_148) {
4938 $block = 29; break;
4939 }
4940 else {
4941 $block = 31; break;
4942 }
4943 break;
4944 }
4945 case 33: {
4946 $t148_149 = (($t137_138 - 97) & 0xFF);
4947 $t149_150 = $t148_149;
4948 $t150_151 = ($t149_150 + 10);
4949 $t151_152 = $rt.builtin.int64or($t138_139, $t150_151);
4950 $t144_145 = $t151_152;
4951 $block = 30; break;
4952 break;
4953 }
4954 case 34: {
4955 $t152_153 = ($t137_138 >= 65);
4956 if ($t152_153) {
4957 $block = 37; break;
4958 }
4959 else {
4960 $t144_145 = $t138_139;
4961 $block = 30; break;
4962 }
4963 break;
4964 }
4965 case 35: {
4966 $t153_154 = ($t137_138 <= 102);
4967 if ($t153_154) {
4968 $block = 33; break;
4969 }
4970 else {
4971 $block = 34; break;
4972 }
4973 break;
4974 }
4975 case 36: {
4976 $t154_155 = (($t137_138 - 65) & 0xFF);
4977 $t155_156 = $t154_155;
4978 $t156_157 = ($t155_156 + 10);
4979 $t157_158 = $rt.builtin.int64or($t138_139, $t156_157);
4980 $t144_145 = $t157_158;
4981 $block = 30; break;
4982 break;
4983 }
4984 case 37: {
4985 $t158_159 = ($t137_138 <= 70);
4986 if ($t158_159) {
4987 $block = 36; break;
4988 }
4989 else {
4990 $t144_145 = $t138_139;
4991 $block = 30; break;
4992 }
4993 break;
4994 }
4995 case 38: {
4996 $t159_160 = ($t129_130 & 0xFF);
4997 $t160_161 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
4998 $t161_162 = $t160_161.$get().addr(0);
4999 $t161_162.$set($t159_160);
5000 $t162_163 = $rt.builtin.sliceSlice($t160_161.$get(), undefined, undefined, undefined);
5001 $t163_164 = $rt.builtin.appendSlice($t51_52, $t162_163);
5002 $t164_165 = $t163_164;
5003 $block = 39; break;
5004 break;
5005 }
5006 case 39: {
5007 $t165_166 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5008 $t166_167 = $t165_166.$get();
5009 $t167_168 = ($t166_167 + 4);
5010 $t168_169 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5011 $t168_169.$set($t167_168);
5012 $t73_74 = $t164_165;
5013 $block = 11; break;
5014 break;
5015 }
5016 case 40: {
5017 $t169_170 = ($t129_130 < 2048);
5018 if ($t169_170) {
5019 $block = 41; break;
5020 }
5021 else {
5022 $block = 42; break;
5023 }
5024 break;
5025 }
5026 case 41: {
5027 $t170_171 = Math.trunc($t129_130 / (2 ** 6));
5028 $t171_172 = $rt.builtin.int64or(192, $t170_171);
5029 $t172_173 = ($t171_172 & 0xFF);
5030 $t173_174 = $rt.builtin.int64and($t129_130, 63);
5031 $t174_175 = $rt.builtin.int64or(128, $t173_174);
5032 $t175_176 = ($t174_175 & 0xFF);
5033 $t176_177 = { $value: $rt.builtin.makeSlice(2, 2, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
5034 $t177_178 = $t176_177.$get().addr(0);
5035 $t177_178.$set($t172_173);
5036 $t178_179 = $t176_177.$get().addr(1);
5037 $t178_179.$set($t175_176);
5038 $t179_180 = $rt.builtin.sliceSlice($t176_177.$get(), undefined, undefined, undefined);
5039 $t180_181 = $rt.builtin.appendSlice($t51_52, $t179_180);
5040 $t164_165 = $t180_181;
5041 $block = 39; break;
5042 break;
5043 }
5044 case 42: {
5045 $t181_182 = Math.trunc($t129_130 / (2 ** 12));
5046 $t182_183 = $rt.builtin.int64or(224, $t181_182);
5047 $t183_184 = ($t182_183 & 0xFF);
5048 $t184_185 = Math.trunc($t129_130 / (2 ** 6));
5049 $t185_186 = $rt.builtin.int64and($t184_185, 63);
5050 $t186_187 = $rt.builtin.int64or(128, $t185_186);
5051 $t187_188 = ($t186_187 & 0xFF);
5052 $t188_189 = $rt.builtin.int64and($t129_130, 63);
5053 $t189_190 = $rt.builtin.int64or(128, $t188_189);
5054 $t190_191 = ($t189_190 & 0xFF);
5055 $t191_192 = { $value: $rt.builtin.makeSlice(3, 3, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
5056 $t192_193 = $t191_192.$get().addr(0);
5057 $t192_193.$set($t183_184);
5058 $t193_194 = $t191_192.$get().addr(1);
5059 $t193_194.$set($t187_188);
5060 $t194_195 = $t191_192.$get().addr(2);
5061 $t194_195.$set($t190_191);
5062 $t195_196 = $rt.builtin.sliceSlice($t191_192.$get(), undefined, undefined, undefined);
5063 $t196_197 = $rt.builtin.appendSlice($t51_52, $t195_196);
5064 $t164_165 = $t196_197;
5065 $block = 39; break;
5066 break;
5067 }
5068 case 43: {
5069 return '';
5070 break;
5071 }
5072 case 44: {
5073 if ($t32_33) {
5074 $block = 45; break;
5075 }
5076 else {
5077 $block = 47; break;
5078 }
5079 break;
5080 }
5081 case 45: {
5082 $t197_198 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
5083 $t198_199 = $t197_198.$get();
5084 $t199_200 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5085 $t200_201 = $t199_200.$get();
5086 $t201_202 = $rt.builtin.stringSlice($t198_199, $t33_34, $t200_201);
5087 $t202_203 = $rt.builtin.appendString($t31_32, $t201_202);
5088 $t203_204 = $rt.builtin.bytesToString($t202_203);
5089 $t204_205 = $t203_204;
5090 $block = 46; break;
5091 break;
5092 }
5093 case 46: {
5094 $t205_206 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5095 $t206_207 = $t205_206.$get();
5096 $t207_208 = ($t206_207 + 1);
5097 $t208_209 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5098 $t208_209.$set($t207_208);
5099 return $t204_205;
5100 break;
5101 }
5102 case 47: {
5103 $t209_210 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
5104 $t210_211 = $t209_210.$get();
5105 $t211_212 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5106 $t212_213 = $t211_212.$get();
5107 $t213_214 = $rt.builtin.stringSlice($t210_211, $t33_34, $t212_213);
5108 $t204_205 = $t213_214;
5109 $block = 46; break;
5110 break;
5111 }
5112 }
5113 }
5114 }
5115
5116 $rt.types.getType('sw-relay.mw')?.methods?.set('str', mw$str);
5117 export function mw$strs(w) {
5118 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46;
5119 let $block = 0;
5120 while (true) {
5121 switch ($block) {
5122 case 0: {
5123 $t0_1 = mw$sep(w);
5124 $t1_2 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5125 $t2_3 = $t1_2.$get();
5126 $t3_4 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
5127 $t4_5 = $t3_4.$get();
5128 $t5_6 = $rt.builtin.len($t4_5);
5129 $t6_7 = ($t2_3 >= $t5_6);
5130 if ($t6_7) {
5131 $block = 1; break;
5132 }
5133 else {
5134 $block = 3; break;
5135 }
5136 break;
5137 }
5138 case 1: {
5139 return null;
5140 break;
5141 }
5142 case 2: {
5143 $t7_8 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5144 $t8_9 = $t7_8.$get();
5145 $t9_10 = ($t8_9 + 1);
5146 $t10_11 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5147 $t10_11.$set($t9_10);
5148 $t17_18 = null;
5149 $block = 4; break;
5150 break;
5151 }
5152 case 3: {
5153 $t11_12 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5154 $t12_13 = $t11_12.$get();
5155 $t13_14 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
5156 $t14_15 = $t13_14.$get();
5157 $rt.runtime.boundsCheck($t12_13, $rt.builtin.byteLen($t14_15));
5158 $t15_16 = $rt.builtin.stringByteAt($t14_15, $t12_13);
5159 $t16_17 = ($t15_16 !== 91);
5160 if ($t16_17) {
5161 $block = 1; break;
5162 }
5163 else {
5164 $block = 2; break;
5165 }
5166 break;
5167 }
5168 case 4: {
5169 $t18_19 = mw$sep(w);
5170 $t19_20 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5171 $t20_21 = $t19_20.$get();
5172 $t21_22 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
5173 $t22_23 = $t21_22.$get();
5174 $t23_24 = $rt.builtin.len($t22_23);
5175 $t24_25 = ($t20_21 >= $t23_24);
5176 if ($t24_25) {
5177 $block = 5; break;
5178 }
5179 else {
5180 $block = 6; break;
5181 }
5182 break;
5183 }
5184 case 5: {
5185 return $t17_18;
5186 break;
5187 }
5188 case 6: {
5189 $t25_26 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5190 $t26_27 = $t25_26.$get();
5191 $t27_28 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
5192 $t28_29 = $t27_28.$get();
5193 $rt.runtime.boundsCheck($t26_27, $rt.builtin.byteLen($t28_29));
5194 $t29_30 = $rt.builtin.stringByteAt($t28_29, $t26_27);
5195 $t30_31 = ($t29_30 === 93);
5196 if ($t30_31) {
5197 $block = 7; break;
5198 }
5199 else {
5200 $block = 8; break;
5201 }
5202 break;
5203 }
5204 case 7: {
5205 $t31_32 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5206 $t32_33 = $t31_32.$get();
5207 $t33_34 = ($t32_33 + 1);
5208 $t34_35 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5209 $t34_35.$set($t33_34);
5210 return $t17_18;
5211 break;
5212 }
5213 case 8: {
5214 $t35_36 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5215 $t36_37 = $t35_36.$get();
5216 $t37_38 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
5217 $t38_39 = $t37_38.$get();
5218 $rt.runtime.boundsCheck($t36_37, $rt.builtin.byteLen($t38_39));
5219 $t39_40 = $rt.builtin.stringByteAt($t38_39, $t36_37);
5220 $t40_41 = ($t39_40 !== 34);
5221 if ($t40_41) {
5222 $block = 9; break;
5223 }
5224 else {
5225 $block = 10; break;
5226 }
5227 break;
5228 }
5229 case 9: {
5230 return $t17_18;
5231 break;
5232 }
5233 case 10: {
5234 $t41_42 = mw$str(w);
5235 $t42_43 = { $value: $rt.builtin.makeSlice(1, 1, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
5236 $t43_44 = $t42_43.$get().addr(0);
5237 $t43_44.$set($t41_42);
5238 $t44_45 = $rt.builtin.sliceSlice($t42_43.$get(), undefined, undefined, undefined);
5239 $t45_46 = $rt.builtin.appendSlice($t17_18, $t44_45);
5240 $t17_18 = $t45_46;
5241 $block = 4; break;
5242 break;
5243 }
5244 }
5245 }
5246 }
5247
5248 $rt.types.getType('sw-relay.mw')?.methods?.set('strs', mw$strs);
5249