agentglow 0.4.2 → 0.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -0
- package/dist/chunks/KitScene-CsXvCpWR.js +7320 -0
- package/dist/chunks/index-06NeTpVb.js +53 -0
- package/dist/chunks/{index-B8E_UpEh.js → index-CMyk3b1y.js} +1 -1
- package/dist/chunks/{index-BxZgELLY.js → index-CZCnCMDL.js} +132 -129
- package/dist/chunks/{index-CEd8CHA3.js → index-CaU-znb0.js} +42 -42
- package/dist/chunks/{index-BGWvBQoI.js → index-DS_Ev4sI.js} +169 -169
- package/dist/chunks/{index-DGp3aLoB.js → index-DvmCk82M.js} +39 -39
- package/dist/chunks/{index-CAK2lh3j.js → index-jIBsR1lw.js} +30 -30
- package/dist/chunks/{index-B-GgW6Df.js → index-zAkSg1r8.js} +2 -2
- package/dist/index.js +1 -1
- package/dist/style.css +1 -1
- package/dist/types/AgentScene.d.ts +8 -1
- package/dist/types/world.d.ts +23 -1
- package/package.json +1 -1
- package/dist/chunks/KitScene-D8qiflCw.js +0 -6804
- package/dist/chunks/index-rhTWZ_I3.js +0 -52
|
@@ -6,7 +6,7 @@ import { EffectComposer as _e, Bloom as Ee, Vignette as Be } from "@react-three/
|
|
|
6
6
|
import { useThree as Kt, useFrame as At } from "@react-three/fiber";
|
|
7
7
|
import { useMemo as I, useRef as F } from "react";
|
|
8
8
|
import * as r from "three";
|
|
9
|
-
import {
|
|
9
|
+
import { Y as ke, T as ue, g as Ke, h as kt, b as Ve, K as Oe, A as Qt, w as U, a as ht, F as Fe, Q as je, L as te, G as Ge, C as Ie, d as ve, k as Le, Z as De, U as We, R as Ne, u as Ue, E as Xe, l as Ye, X as He, _ as $e, e as Ze, s as qe, j as Qe, n as Je, o as tn, f as $t, x as en } from "./KitScene-CsXvCpWR.js";
|
|
10
10
|
var Me;
|
|
11
11
|
const Z = typeof window < "u" && !!((Me = window.matchMedia) != null && Me.call(window, "(prefers-reduced-motion: reduce)").matches), q = (t) => t < 0 ? 0 : t > 1 ? 1 : t, ce = (t) => 1 - Math.pow(1 - q(t), 3), Zt = (t) => (t = q(t), t < 0.5 ? 4 * t * t * t : 1 - Math.pow(-2 * t + 2, 3) / 2), D = new r.Color(1, 1, 1), H = new r.Color("#ffc46b"), It = new r.Color("#ff7a2e"), nn = new r.Color("#fbbf24"), Gt = new r.Color("#ff2d4a"), xe = new r.Color("#8a93b8"), Lt = Object.fromEntries(Object.entries(ue).map(([t, n]) => [t, new r.Color(n).lerp(D, 0.12)])), on = Object.fromEntries(Object.entries(ue).map(([t, n]) => [t, new r.Color(n).lerp(H, 0.35).lerp(D, 0.25)]));
|
|
12
12
|
function fe(t, n) {
|
|
@@ -427,8 +427,8 @@ function Rn({ galaxy: t }) {
|
|
|
427
427
|
const { pos: et, base: W, baseSize: V, fire: Y, white: _, fireC: G, phase: C } = s, { v: ut, w: M, ctrl: j, h: Wt, c: K } = g;
|
|
428
428
|
Y.fill(0), _.fill(0), y.begin(), u.begin();
|
|
429
429
|
let ft = 0, Rt = 0;
|
|
430
|
-
for (const x of
|
|
431
|
-
const z = w(x.node), L = (h - x.start) / 1e3, gt =
|
|
430
|
+
for (const x of U.flares) {
|
|
431
|
+
const z = w(x.node), L = (h - x.start) / 1e3, gt = U.instances.get(x.instance), nt = gt ? Lt[gt.type] : H, O = x.op === "write", N = L < 0.3 ? L / 0.3 : Math.exp(-(L - 0.3) * 1.1);
|
|
432
432
|
if (Rt = Math.max(Rt, N), N > Y[z] && (Y[z] = N, G[z].copy(O ? D : nt), _[z] = O ? 1 : 0), ut.fromArray(et, z * 3), O && L < 1.6 && ft < ae) {
|
|
433
433
|
const at = p.current[ft];
|
|
434
434
|
if (at) {
|
|
@@ -462,8 +462,8 @@ function Rn({ galaxy: t }) {
|
|
|
462
462
|
}
|
|
463
463
|
Nt.needsUpdate = !0;
|
|
464
464
|
let tt = 0;
|
|
465
|
-
for (let x =
|
|
466
|
-
const z =
|
|
465
|
+
for (let x = U.flares.length - 1; x >= 0 && tt < Yt; x--) {
|
|
466
|
+
const z = U.flares[x];
|
|
467
467
|
if (h - z.start > 2200) break;
|
|
468
468
|
if (z.area) continue;
|
|
469
469
|
let L = !1;
|
|
@@ -500,8 +500,8 @@ function _n() {
|
|
|
500
500
|
const m = performance.now(), i = Z ? 0 : f.elapsedTime;
|
|
501
501
|
c.setScale(t.height, n.getPixelRatio(), o.fov), e.begin(), c.begin();
|
|
502
502
|
const a = Vt();
|
|
503
|
-
for (const p of
|
|
504
|
-
const s = ht(p.instance), v = ve(p.server), y =
|
|
503
|
+
for (const p of U.mcpPending.values()) {
|
|
504
|
+
const s = ht(p.instance), v = ve(p.server), y = U.mcpServers.get(p.server);
|
|
505
505
|
if (!s || !y || !v) continue;
|
|
506
506
|
yt.copy(s), ct.copy(v), St(yt, ct, 0.8, 1.2, wt);
|
|
507
507
|
const u = Le(p, m);
|
|
@@ -512,11 +512,11 @@ function _n() {
|
|
|
512
512
|
w && (St(ct, w, 0.25, 0.2, wt), e.add(ct, wt, w, dt, b * 0.9, 0.15, 0.85, 0.7, i, -1, 0));
|
|
513
513
|
}
|
|
514
514
|
}
|
|
515
|
-
for (const p of
|
|
515
|
+
for (const p of U.mcpCalls) {
|
|
516
516
|
if (p.phase !== "result") continue;
|
|
517
517
|
const s = q((m - p.start) / p.dur);
|
|
518
518
|
if (s >= 1) continue;
|
|
519
|
-
const v = ht(p.instance), y = ve(p.server), u =
|
|
519
|
+
const v = ht(p.instance), y = ve(p.server), u = U.mcpServers.get(p.server);
|
|
520
520
|
if (!v || !u || !y) continue;
|
|
521
521
|
ct.copy(y), dt.set(u.color).lerp(D, 0.45), yt.copy(v), St(yt, ct, 0.8, 1.2, wt);
|
|
522
522
|
const b = Zt(s), g = 1 - Math.max(0, (b - 0.85) / 0.15);
|
|
@@ -532,7 +532,7 @@ function En({ run: t }) {
|
|
|
532
532
|
const n = I(() => new r.Color(t.color), [t.color]), o = I(() => ({ haze: xt(Dt(), "#000") }), []), e = F(null), c = F(null), f = I(() => ({ x: 0, fresh: !0 }), []);
|
|
533
533
|
return At(({ clock: m }) => {
|
|
534
534
|
var d;
|
|
535
|
-
const i = performance.now(), a = t.run ??
|
|
535
|
+
const i = performance.now(), a = t.run ?? U.runs.get(t.id), p = a ? ce((i - a.startedAt) / 1500) : 1, s = a != null && a.endedAt ? q(1 - (i - a.endedAt - (Ne - 2500)) / 2500) : 1, v = Z ? 0 : m.elapsedTime, y = Math.abs(t.side.x) * t.hu + Math.abs(t.axis.x) * t.hv, u = Math.abs(t.side.y) * t.hu + Math.abs(t.axis.y) * t.hv;
|
|
536
536
|
e.current && (e.current.position.set(t.origin.x, t.origin.y, -0.4), e.current.scale.set(y * 2.6 + 5, u * 2.6 + 4, 1), o.haze.color.copy(n).multiplyScalar(0.045 * p * s * (0.9 + 0.1 * Math.sin(v * 0.4 + t.index))));
|
|
537
537
|
let b = 0, g = 0;
|
|
538
538
|
for (const h of Qt.agents.values()) h.run === t && h.depth === 0 && (b += h.live.x, g++);
|
|
@@ -544,13 +544,13 @@ function En({ run: t }) {
|
|
|
544
544
|
] });
|
|
545
545
|
}
|
|
546
546
|
function Bn({ run: t }) {
|
|
547
|
-
|
|
547
|
+
Ue();
|
|
548
548
|
const n = t.status !== "started";
|
|
549
549
|
return /* @__PURE__ */ S(
|
|
550
550
|
te,
|
|
551
551
|
{
|
|
552
552
|
text: t.topic,
|
|
553
|
-
secondary:
|
|
553
|
+
secondary: Xe(t, { base: "#a39bb8", current: "#ffd28a", done: "#d6d0e6" }, ["running…", "run complete"]),
|
|
554
554
|
color: t.color,
|
|
555
555
|
textColor: "#fff3e6",
|
|
556
556
|
plate: "none",
|
|
@@ -571,13 +571,13 @@ function kn() {
|
|
|
571
571
|
const t = F(/* @__PURE__ */ new Set()), n = F([]), o = F([]), e = F([]), c = F([]), f = I(() => new r.Color(), []);
|
|
572
572
|
return At(() => {
|
|
573
573
|
const m = performance.now();
|
|
574
|
-
for (const i of
|
|
574
|
+
for (const i of U.runs.values()) {
|
|
575
575
|
if (!i.final || t.current.has(i.id)) continue;
|
|
576
576
|
t.current.add(i.id);
|
|
577
577
|
const a = Qt.runs.get(i.id);
|
|
578
578
|
if (!a) continue;
|
|
579
579
|
let p;
|
|
580
|
-
for (const u of
|
|
580
|
+
for (const u of U.instances.values()) u.run === i.id && !u.parent && (p = ht(u.id) ?? p);
|
|
581
581
|
const s = (p ?? a.origin).clone();
|
|
582
582
|
s.y += 2.2, n.current.push({ run: i.id, start: m, at: s, text: i.final }), n.current.length > se && n.current.shift();
|
|
583
583
|
const v = Vt();
|
|
@@ -590,7 +590,7 @@ function kn() {
|
|
|
590
590
|
for (let u = 0; u < 6 * ot; u++) v.emit(s.x + (Math.random() - 0.5) * 3, s.y + (Math.random() - 0.5) * 2, s.z, 0.15, 0.12, 0, 0.5, -0.03, 5, 3.2, xe, 1, le);
|
|
591
591
|
}
|
|
592
592
|
if (t.current.size > 200)
|
|
593
|
-
for (const i of t.current)
|
|
593
|
+
for (const i of t.current) U.runs.has(i) || t.current.delete(i);
|
|
594
594
|
n.current.length && m - n.current[0].start > 5600 && n.current.shift();
|
|
595
595
|
for (let i = 0; i < se; i++) {
|
|
596
596
|
const a = n.current[i], p = o.current[i], s = e.current[i];
|
|
@@ -665,20 +665,20 @@ function Gn({ agent: t, selected: n, onSelect: o }) {
|
|
|
665
665
|
else {
|
|
666
666
|
const k = j ? ht(e.parent) : void 0;
|
|
667
667
|
k ? (l.from.copy(k), St(l.from, M, 0.4 * G, 0.6 * G, l.ctrl)) : l.aimed || (l.aimed = !0, Fn(M, kt(t.run.id, 3), d, Math.max(12, m.position.length()), l.from, l.ctrl)), ie(A, j, l.from, l.ctrl, M, T);
|
|
668
|
-
const
|
|
669
|
-
v.current && (v.current.visible = !0, v.current.position.copy(T), v.current.scale.setScalar((j ? 0.5 : 1.15) * (Z ? 1 : 0.85 + 0.15 * Math.sin(Y * 37 + d * 9)))), P.rocket.color.copy(H).lerp(D, 0.6).multiplyScalar(1.5 *
|
|
670
|
-
const Ct = P.tailGeo.getAttribute("position"), Ft = P.tailGeo.getAttribute("color"),
|
|
668
|
+
const X = j ? 1 : q(A / 0.12);
|
|
669
|
+
v.current && (v.current.visible = !0, v.current.position.copy(T), v.current.scale.setScalar((j ? 0.5 : 1.15) * (Z ? 1 : 0.85 + 0.15 * Math.sin(Y * 37 + d * 9)))), P.rocket.color.copy(H).lerp(D, 0.6).multiplyScalar(1.5 * X);
|
|
670
|
+
const Ct = P.tailGeo.getAttribute("position"), Ft = P.tailGeo.getAttribute("color"), Ut = j ? 0.3 : 0.32;
|
|
671
671
|
for (let zt = 0; zt < Jt; zt++)
|
|
672
|
-
for (let
|
|
673
|
-
const ne = (zt +
|
|
674
|
-
ie(A -
|
|
675
|
-
const me = zt * 2 +
|
|
672
|
+
for (let Xt = 0; Xt < 2; Xt++) {
|
|
673
|
+
const ne = (zt + Xt) / Jt;
|
|
674
|
+
ie(A - Ut * (1 - ne), j, l.from, l.ctrl, M, $);
|
|
675
|
+
const me = zt * 2 + Xt;
|
|
676
676
|
Ct.setXYZ(me, $.x, $.y, $.z);
|
|
677
|
-
const oe = ne * ne * (j ? 1.1 : 1.6) *
|
|
677
|
+
const oe = ne * ne * (j ? 1.1 : 1.6) * X;
|
|
678
678
|
Ft.setXYZ(me, H.r * oe, H.g * oe * 0.92, H.b * oe * 0.8);
|
|
679
679
|
}
|
|
680
680
|
Ct.needsUpdate = !0, Ft.needsUpdate = !0, y.current && (y.current.visible = !0);
|
|
681
|
-
const Pe = (j ? 2 : 9) * ot *
|
|
681
|
+
const Pe = (j ? 2 : 9) * ot * X;
|
|
682
682
|
for (let zt = 0; zt < Pe; zt++)
|
|
683
683
|
ie(A - R() * (j ? 0.04 : 0.025), j, l.from, l.ctrl, M, $), j ? _.emit($.x, $.y, $.z, (R() - 0.5) * 0.9, -0.3 - R() * 1.2, (R() - 0.5) * 0.2, 2.2, 2, 0.35 + R() * 0.55, 0.06, R() < 0.3 ? D : H, 0.95, R() < 0.4 ? mt : pt) : _.emit($.x, $.y, $.z, (R() - 0.5) * 0.35, (R() - 0.5) * 0.35, (R() - 0.5) * 0.15, 1.6, 0.45, 0.9 + R() * 1.2, 0.08, R() < 0.4 ? D : R() < 0.5 ? H : h, 0.95, R() < 0.65 ? mt : pt);
|
|
684
684
|
}
|
|
@@ -689,7 +689,7 @@ function Gn({ agent: t, selected: n, onSelect: o }) {
|
|
|
689
689
|
l.burst = !0;
|
|
690
690
|
const A = Math.round((j ? 100 : 230) * ot), k = 2.4;
|
|
691
691
|
_.burst(M.x, M.y, M.z, A, C * 2.6 * k, h, 1.55, { drag: k, grav: 1.1, life: j ? 1.7 : 2.5, size: j ? 0.095 : 0.13, glitter: 0.3, c2: E });
|
|
692
|
-
for (let
|
|
692
|
+
for (let X = 0; X < 5 * ot; X++)
|
|
693
693
|
Et(T), _.emit(M.x + T.x * C * 0.4, M.y + T.y * C * 0.4, M.z, T.x * 0.35, T.y * 0.35 + 0.1, 0, 0.8, -0.05, 3.2 + R(), C * 1.5, h, 0.9, le);
|
|
694
694
|
}
|
|
695
695
|
const ft = e.exitAt ? (V - e.exitAt) / Math.max(400, Ye(e)) : -1, Rt = ft >= 0 ? q(ft) : 0, J = ft < 0 && !e.doneAt, Ot = e.status === "failed";
|
|
@@ -698,8 +698,8 @@ function Gn({ agent: t, selected: n, onSelect: o }) {
|
|
|
698
698
|
const A = Math.round((j ? 26 : 50) * ot);
|
|
699
699
|
for (let k = 0; k < A; k++) {
|
|
700
700
|
Et(T);
|
|
701
|
-
const
|
|
702
|
-
_.emit(M.x + T.x *
|
|
701
|
+
const X = C * (0.75 + R() * 0.3);
|
|
702
|
+
_.emit(M.x + T.x * X, M.y + T.y * X, M.z + T.z * X, T.x * 0.5, T.y * 0.3 - 0.2, 0, 1.3, 0.9, 2.2 + R() * 1.2, 0.075, Ot ? Gt : R() < 0.5 ? H : It, 0.85, hn);
|
|
703
703
|
}
|
|
704
704
|
for (let k = 0; k < 6 * ot; k++)
|
|
705
705
|
Et(T), _.emit(M.x + T.x * C * 0.6, M.y + T.y * C * 0.6, M.z, T.x * 0.25 + 0.08, 0.18 + R() * 0.15, 0, 0.6, -0.04, 4 + R() * 1.5, C * 1.6, xe, 1, le);
|
|
@@ -710,8 +710,8 @@ function Gn({ agent: t, selected: n, onSelect: o }) {
|
|
|
710
710
|
const A = Math.round((10 + 26 * (e.pulse / 2.5)) * ot);
|
|
711
711
|
for (let k = 0; k < A; k++) {
|
|
712
712
|
Et(T);
|
|
713
|
-
const
|
|
714
|
-
_.emit(M.x + T.x *
|
|
713
|
+
const X = C * (0.7 + R() * 0.35);
|
|
714
|
+
_.emit(M.x + T.x * X, M.y + T.y * X, M.z + T.z * X, T.x * C * 0.9, T.y * C * 0.9, T.z * C * 0.4, 3.2, 0.5, 0.45 + R() * 0.55 * (e.pulse / 1.5), 0.065, R() < 0.5 ? D : E, 1, mt, R() * 0.25);
|
|
715
715
|
}
|
|
716
716
|
}
|
|
717
717
|
if (e.toolCalls !== l.tools && (l.tools = e.toolCalls, J && K > 0)) {
|
|
@@ -727,10 +727,10 @@ function Gn({ agent: t, selected: n, onSelect: o }) {
|
|
|
727
727
|
if (k.at <= l.decAt) break;
|
|
728
728
|
if (!(k.at > V) && He(k) && V - l.saluteAt > 450 && J) {
|
|
729
729
|
l.saluteAt = V;
|
|
730
|
-
const
|
|
731
|
-
for (let Ct = 0; Ct <
|
|
732
|
-
const Ft = Ct /
|
|
733
|
-
_.emit(M.x, M.y, M.z + 0.05, Math.cos(Ft) *
|
|
730
|
+
const X = Math.round(30 * ot);
|
|
731
|
+
for (let Ct = 0; Ct < X; Ct++) {
|
|
732
|
+
const Ft = Ct / X * Math.PI * 2, Ut = C * 7 * (0.85 + R() * 0.3);
|
|
733
|
+
_.emit(M.x, M.y, M.z + 0.05, Math.cos(Ft) * Ut, Math.sin(Ft) * Ut, 0, 6, 0.8, 0.35 + R() * 0.2, 0.08, Ct % 4 === 0 ? D : Gt, 1.2, pt);
|
|
734
734
|
}
|
|
735
735
|
}
|
|
736
736
|
}
|
|
@@ -795,12 +795,12 @@ function Ln() {
|
|
|
795
795
|
return At(({ clock: m }) => {
|
|
796
796
|
const i = performance.now(), a = Z ? 0 : m.elapsedTime;
|
|
797
797
|
c.setScale(t.height, n.getPixelRatio(), o.fov), e.begin(), c.begin();
|
|
798
|
-
for (const s of f.keys())
|
|
799
|
-
for (const s of
|
|
798
|
+
for (const s of f.keys()) U.instances.has(s) || f.delete(s);
|
|
799
|
+
for (const s of U.instances.values()) {
|
|
800
800
|
if (!s.parent) continue;
|
|
801
801
|
const v = ht(s.parent), y = ht(s.id);
|
|
802
802
|
if (!v || !y) continue;
|
|
803
|
-
const u =
|
|
803
|
+
const u = U.instances.get(s.parent), g = (i - s.bornAt) / 1e3 > ze && u && !u.exitAt && !s.exitAt && !s.doneAt ? 1 : 0;
|
|
804
804
|
let w = f.get(s.id) ?? 0;
|
|
805
805
|
if (w += (g - w) * (g ? 0.04 : 0.03), f.set(s.id, w), w < 0.01) continue;
|
|
806
806
|
const d = $t.scale;
|
|
@@ -809,12 +809,12 @@ function Ln() {
|
|
|
809
809
|
Mt.copy(Lt[s.type]).lerp(H, 0.5), e.add(v, bt, y, Mt, 0.16 * w, E, P, 0.12 * w, a, -1, 0);
|
|
810
810
|
}
|
|
811
811
|
const p = Vt();
|
|
812
|
-
for (const s of
|
|
812
|
+
for (const s of U.comets) {
|
|
813
813
|
const v = ht(s.from), y = ht(s.to);
|
|
814
814
|
if (!v || !y) continue;
|
|
815
815
|
const u = Je(s, i);
|
|
816
816
|
if (!tn(s, i)) continue;
|
|
817
|
-
const b =
|
|
817
|
+
const b = U.instances.get(s.from), g = U.instances.get(s.to);
|
|
818
818
|
if ((g == null ? void 0 : g.parent) === s.from || (b == null ? void 0 : b.parent) === s.to) {
|
|
819
819
|
const d = (g == null ? void 0 : g.parent) === s.from;
|
|
820
820
|
$.copy(d ? v : y), Ht.copy(d ? y : v), St($, Ht, 0.4 * $t.scale, 0.6 * $t.scale, bt);
|
|
@@ -887,7 +887,7 @@ function Nn() {
|
|
|
887
887
|
m.uK.value = t.height / (2.2 * 2 * Math.tan(s * Math.PI / 360));
|
|
888
888
|
}), /* @__PURE__ */ S("mesh", { ref: c, material: e, position: [0, 0, -0.6], renderOrder: -10, frustumCulled: !1, children: /* @__PURE__ */ S("planeGeometry", { args: [6e3, 6e3] }) });
|
|
889
889
|
}
|
|
890
|
-
function
|
|
890
|
+
function Un() {
|
|
891
891
|
const { size: t, gl: n, camera: o } = Kt(), e = Vt();
|
|
892
892
|
return At(() => {
|
|
893
893
|
e.setScale(t.height, n.getPixelRatio(), o.fov), e.flush();
|
|
@@ -896,7 +896,7 @@ function Xn() {
|
|
|
896
896
|
/* @__PURE__ */ S("primitive", { object: e.points })
|
|
897
897
|
] });
|
|
898
898
|
}
|
|
899
|
-
const
|
|
899
|
+
const Xn = {
|
|
900
900
|
emit: (t, n, o) => {
|
|
901
901
|
Math.random() > ot || Vt().emit(t.x, t.y, t.z, n.x, n.y, n.z, 2.4, 2.2, 0.4 + Math.random() * 0.35, 0.06, o, 1, Math.random() < 0.3 ? mt : pt);
|
|
902
902
|
}
|
|
@@ -922,7 +922,7 @@ function to() {
|
|
|
922
922
|
Background: /* @__PURE__ */ S(Nn, {}),
|
|
923
923
|
Agent: Gn,
|
|
924
924
|
RunMarker: En,
|
|
925
|
-
mcpStyle:
|
|
925
|
+
mcpStyle: Xn,
|
|
926
926
|
GraphResource: Rn,
|
|
927
927
|
cluster: { radius: 1.5, variant: "stars", glowGain: 0.9 },
|
|
928
928
|
PostFX: /* @__PURE__ */ vt(_e, { multisampling: 0, children: [
|
|
@@ -933,7 +933,7 @@ function to() {
|
|
|
933
933
|
/* @__PURE__ */ S(Ln, {}),
|
|
934
934
|
/* @__PURE__ */ S(_n, {}),
|
|
935
935
|
/* @__PURE__ */ S(kn, {}),
|
|
936
|
-
/* @__PURE__ */ S(
|
|
936
|
+
/* @__PURE__ */ S(Un, {})
|
|
937
937
|
]
|
|
938
938
|
}
|
|
939
939
|
);
|