@yuneta/gobj-js 7.26.28 → 7.27.0

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.
@@ -146,7 +146,7 @@ var gobjJs = function(e) {
146
146
  DTP_POINTER: 8
147
147
  }), T = (e) => e === E.DTP_STRING, j = (e) => e === E.DTP_BOOLEAN, O = (e) => e === E.DTP_REAL, S = (e) => e === E.DTP_LIST, w = (e) => e === E.DTP_DICT, N = (e) => e === E.DTP_JSON;
148
148
  E.DTP_POINTER;
149
- var $ = (e) => ((e) => e === E.DTP_INTEGER)(e) || O(e) || j(e), A = Object.freeze({
149
+ var $ = (e) => ((e) => e === E.DTP_INTEGER)(e) || O(e) || j(e), R = Object.freeze({
150
150
  SDF_NOTACCESS: 1,
151
151
  SDF_RD: 2,
152
152
  SDF_WR: 4,
@@ -170,18 +170,18 @@ var gobjJs = function(e) {
170
170
  SDF_AUTHZ_RS: 1048576,
171
171
  SDF_SECRET: 2097152
172
172
  });
173
- A.SDF_RD, A.SDF_WR, A.SDF_STATS, A.SDF_PERSIST, A.SDF_VOLATIL, A.SDF_RSTATS, A.SDF_PSTATS, A.SDF_WR, A.SDF_PERSIST;
174
- var R = class {
173
+ R.SDF_RD, R.SDF_WR, R.SDF_STATS, R.SDF_PERSIST, R.SDF_VOLATIL, R.SDF_RSTATS, R.SDF_PSTATS, R.SDF_WR, R.SDF_PERSIST;
174
+ var A = class {
175
175
  constructor(e, t, n = 0, r = null, o = "", l = null, i = null, s = 0, a = null, u = null, _ = null) {
176
176
  this.type = e, this.name = t, this.alias = l, this.flag = n, this.default_value = r, this.header = i, this.fillspace = s, this.description = o, this.json_fn = a, this.schema = u, this.authpth = _;
177
177
  }
178
- }, D = () => new R(0, null), k = (e, t, n, r, o) => new R(e, t, n, r, o), C = class {
178
+ }, D = () => new A(0, null), k = (e, t, n, r, o) => new A(e, t, n, r, o), C = class {
179
179
  constructor(e, t, n, r, o, l, i, s, a) {
180
180
  this.gclass_name = e, this.dl_states = [], this.dl_events = [], this.gmt = t, this.lmt = n, this.attrs_table = r, this.priv = o, this.authz_table = l, this.command_table = i, this.s_user_trace_level = s, this.gclass_flag = Number(a) || 0, this.instances = 0, this.trace_level = 0, this.no_trace_level = 0, this.jn_trace_filter = null, this.fsm_checked = !1;
181
181
  }
182
182
  }, I = class {
183
183
  constructor(e, t, n, r, o) {
184
- this.__refs__ = 0, this.gclass = t, this.parent = null, this.dl_children = [], this.dl_subscriptions = [], this.dl_subscribings = [], this.current_state = t.dl_states[0], this.last_state = null, this.obflag = 0, this.gobj_flag = Number(o) || 0, this.gobj_name = e, this.jn_attrs = null, this.jn_stats = {}, this.jn_user_data = {}, this.full_name = null, this.short_name = null, this.priv = Ao(t.priv), this.running = !1, this.playing = !1, this.disabled = !1, this.bottom_gobj = null, this.trace_level = 0, this.no_trace_level = 0;
184
+ this.__refs__ = 0, this.gclass = t, this.parent = null, this.dl_children = [], this.dl_subscriptions = [], this.dl_subscribings = [], this.current_state = t.dl_states[0], this.last_state = null, this.obflag = 0, this.gobj_flag = Number(o) || 0, this.gobj_name = e, this.jn_attrs = null, this.jn_stats = {}, this.jn_user_data = {}, this.full_name = null, this.short_name = null, this.priv = Ro(t.priv), this.running = !1, this.playing = !1, this.disabled = !1, this.bottom_gobj = null, this.trace_level = 0, this.no_trace_level = 0;
185
185
  }
186
186
  }, P = Object.freeze({
187
187
  gcflag_manual_start: 1,
@@ -554,11 +554,11 @@ var gobjJs = function(e) {
554
554
  function $e(e, t) {
555
555
  return T(e) ? Jo(t) : w(e) ? Bo(t) : S(e) ? Yo(t) : !$(e) || "number" == typeof t || "boolean" == typeof t;
556
556
  }
557
- function Ae(e) {
557
+ function Re(e) {
558
558
  return e >= -0x8000000000000000 && e < 0x8000000000000000;
559
559
  }
560
- function Re(e) {
561
- return Yo(e) ? "an array" : Bo(e) ? "an object" : Jo(e) ? je : "number" == typeof e ? Number.isInteger(e) && Ae(e) ? "an integer" : "a real" : "boolean" == typeof e ? "a boolean" : "null";
560
+ function Ae(e) {
561
+ return Yo(e) ? "an array" : Bo(e) ? "an object" : Jo(e) ? je : "number" == typeof e ? Number.isInteger(e) && Re(e) ? "an integer" : "a real" : "boolean" == typeof e ? "a boolean" : "null";
562
562
  }
563
563
  function De(e, t, n) {
564
564
  if (Jo(t) || (t = ""), T(e)) return {
@@ -608,7 +608,7 @@ var gobjJs = function(e) {
608
608
  refused: null
609
609
  };
610
610
  const o = Number(r);
611
- return Ae(o) ? {
611
+ return Re(o) ? {
612
612
  value: o,
613
613
  refused: null
614
614
  } : {
@@ -681,7 +681,7 @@ var gobjJs = function(e) {
681
681
  } : "boolean" == typeof t ? {
682
682
  value: t ? 1 : 0,
683
683
  refused: null
684
- } : Ae(t) ? Number.isInteger(t) ? {
684
+ } : Re(t) ? Number.isInteger(t) ? {
685
685
  value: t,
686
686
  refused: null
687
687
  } : {
@@ -702,7 +702,7 @@ var gobjJs = function(e) {
702
702
  refused: Ue
703
703
  } : {
704
704
  value: void 0,
705
- refused: Re(t)
705
+ refused: Ae(t)
706
706
  } : {
707
707
  value: t,
708
708
  refused: null
@@ -790,7 +790,7 @@ var gobjJs = function(e) {
790
790
  [E.DTP_DICT]: "a json object"
791
791
  };
792
792
  let l;
793
- if (t.flag & A.SDF_SECRET) l = "********";
793
+ if (t.flag & R.SDF_SECRET) l = "********";
794
794
  else {
795
795
  l = Jo(n) ? n : Fe(void 0 === n ? null : n), void 0 === l && (l = `<${Ue}>`);
796
796
  const e = To(l);
@@ -973,7 +973,7 @@ var gobjJs = function(e) {
973
973
  return b[e] || (t && ir(`gobj service not found: ${e}`), null);
974
974
  }
975
975
  function rt(e) {
976
- let t = Rt(e);
976
+ let t = At(e);
977
977
  return t = t.toLowerCase(), b[t] && ir(`service ALREADY REGISTERED: ${t}. Will be UPDATED`), b[t] = e, 0;
978
978
  }
979
979
  function ot(e, t) {
@@ -996,7 +996,7 @@ var gobjJs = function(e) {
996
996
  let l = 0;
997
997
  for (const [i, s] of Object.entries(t)) {
998
998
  const t = xe(o.gclass, i, !1);
999
- t ? (-1 === n || t.flag & n) && (t.flag & A.SDF_DEPRECATED && sr(`${kt(o)}: Deprecated attribute used in gobj creation: ${i}`), l += Ge(o, e, t, s)) : r && (r(o, i), l--);
999
+ t ? (-1 === n || t.flag & n) && (t.flag & R.SDF_DEPRECATED && sr(`${kt(o)}: Deprecated attribute used in gobj creation: ${i}`), l += Ge(o, e, t, s)) : r && (r(o, i), l--);
1000
1000
  }
1001
1001
  return l;
1002
1002
  })(Ve(e), r, -1, e.gclass.gclass_flag & P.gcflag_ignore_unknown_attrs ? 0 : st, e) < 0 && (ir(`${kt(e)} json2data() FAILED`), $o(r));
@@ -1064,7 +1064,7 @@ var gobjJs = function(e) {
1064
1064
  t && K(n("💔💔⏩ destroying: %s", Ct(e)));
1065
1065
  let r = It(e);
1066
1066
  r && r.gclass.gmt.mt_child_removed && (t && K(n("👦👦🔴 child_removed(%s): %s", Ct(r), kt(e))), r.gclass.gmt.mt_child_removed(r, e)), e.gobj_flag & L.gobj_flag_service && function(e) {
1067
- let t = Rt(e);
1067
+ let t = At(e);
1068
1068
  t = t.toLowerCase(), b[t] ? delete b[t] : ir(`"service NOT found in register": ${t}`);
1069
1069
  }(e), e === m && (m = null), Cn(e, e.dl_subscriptions, !0), Cn(e, e.dl_subscribings, !0), r && (lt(r, e), Pt(e) && (Ft(r) !== e || Ut(r) || Mt(r, null))), function(e) {
1070
1070
  let t = e.dl_children.slice();
@@ -1082,7 +1082,7 @@ var gobjJs = function(e) {
1082
1082
  const t = Ve(e), n = [];
1083
1083
  if (!Yo(e.gclass.attrs_table)) return null;
1084
1084
  for (const r of e.gclass.attrs_table) {
1085
- if (!(r.name && r.flag & A.SDF_REQUIRED)) continue;
1085
+ if (!(r.name && r.flag & R.SDF_REQUIRED)) continue;
1086
1086
  const e = t[r.name];
1087
1087
  switch (r.type) {
1088
1088
  case E.DTP_STRING:
@@ -1162,7 +1162,8 @@ var gobjJs = function(e) {
1162
1162
  if (e.disabled) return ir(`${kt(e)}: GObj DISABLED`), -1;
1163
1163
  if (!Tt(e)) {
1164
1164
  if (e.gclass.gclass_flag & P.gcflag_required_start_to_play) return ir(`${kt(e)}: Cannot play, start not done`), -1;
1165
- sr(`${kt(e)}: GObj playing without previous start`), ft(e);
1165
+ if (sr(`${kt(e)}: GObj playing without previous start`), gt(e)) return -1;
1166
+ if (!e.running) return -1;
1166
1167
  }
1167
1168
  ne(e) && K(n("⏯ ⏯ play: %s", Ct(e))), e.playing = !0;
1168
1169
  let t = 0;
@@ -1207,24 +1208,24 @@ var gobjJs = function(e) {
1207
1208
  }
1208
1209
  function Nt() {
1209
1210
  let e = wt();
1210
- return e ? Rt(e) : "";
1211
+ return e ? At(e) : "";
1211
1212
  }
1212
1213
  function $t() {
1213
1214
  let e = wt();
1214
1215
  return e ? tn(e, "yuno_role") : "";
1215
1216
  }
1216
- function At() {
1217
+ function Rt() {
1217
1218
  let e = wt();
1218
1219
  return e ? tn(e, "yuno_id") : "";
1219
1220
  }
1220
- function Rt(e) {
1221
+ function At(e) {
1221
1222
  return Xo(e) ? e.gobj_name : (ir("gobj bad type"), null);
1222
1223
  }
1223
1224
  function Dt(e) {
1224
1225
  return Xo(e) ? e.gclass.gclass_name : (ir("gobj NULL of bad type"), null);
1225
1226
  }
1226
1227
  function kt(e) {
1227
- return Xo(e) ? e.gclass.gclass_name + "^" + Rt(e) : (ir("gobj bad type"), null);
1228
+ return Xo(e) ? e.gclass.gclass_name + "^" + At(e) : (ir("gobj bad type"), null);
1228
1229
  }
1229
1230
  function Ct(e) {
1230
1231
  if (!Xo(e)) return ir("gobj NULL of bad type"), null;
@@ -1318,10 +1319,10 @@ var gobjJs = function(e) {
1318
1319
  t.__disabled__;
1319
1320
  let l = t.__state__;
1320
1321
  if (n && n !== Dt(e)) return !1;
1321
- if (r && r !== Rt(e)) return !1;
1322
+ if (r && r !== At(e)) return !1;
1322
1323
  if (o) {
1323
1324
  let t = o.length;
1324
- if (o !== Rt(e).substring(0, t)) return !1;
1325
+ if (o !== At(e).substring(0, t)) return !1;
1325
1326
  }
1326
1327
  if (l && l !== fn(e)) return !1;
1327
1328
  let i = e.jn_attrs;
@@ -1348,7 +1349,7 @@ var gobjJs = function(e) {
1348
1349
  if (1 !== n.length) return !1;
1349
1350
  r = n[0];
1350
1351
  }
1351
- return r === Rt(e);
1352
+ return r === At(e);
1352
1353
  }(e, n[0])) return null;
1353
1354
  if (1 === n.length) return e;
1354
1355
  let r = n[1].split("^"), o = {};
@@ -1490,7 +1491,7 @@ var gobjJs = function(e) {
1490
1491
  let o = oe(e, "EV_STATE_CHANGED"), l = !!function(e) {
1491
1492
  return X(e) & B.TRACE_STATES;
1492
1493
  }(e);
1493
- return (o || l) && (1 === x || K(n("🔀🔀 mach(%s%s^%s), new st(%s), prev st(%s)", e.running ? "" : "!!", Dt(e), Rt(e), fn(e), e.last_state.state_name))), !0;
1494
+ return (o || l) && (1 === x || K(n("🔀🔀 mach(%s%s^%s), new st(%s), prev st(%s)", e.running ? "" : "!!", Dt(e), At(e), fn(e), e.last_state.state_name))), !0;
1494
1495
  }
1495
1496
  function fn(e) {
1496
1497
  return Xo(e) ? e.current_state.state_name : (ir("hgobj NULL"), "");
@@ -1578,13 +1579,13 @@ var gobjJs = function(e) {
1578
1579
  En(s);
1579
1580
  }
1580
1581
  }
1581
- return i && K(n("📛 mach(%s%s^%s), st: %s, ev: %s, 📛📛ERROR Event NOT DEFINED in state📛📛, from(%s%s^%s)", e.running ? "" : "!!", Dt(e), Rt(e), l.state_name, t || "", o && !o.running ? "!!" : "", Dt(o), Rt(o))), ir(`📛📛 Event NOT DEFINED in state 📛📛: ${kt(e)}, ${l.state_name}, ${t}`), h--, -1;
1582
+ return i && K(n("📛 mach(%s%s^%s), st: %s, ev: %s, 📛📛ERROR Event NOT DEFINED in state📛📛, from(%s%s^%s)", e.running ? "" : "!!", Dt(e), At(e), l.state_name, t || "", o && !o.running ? "!!" : "", Dt(o), At(o))), ir(`📛📛 Event NOT DEFINED in state 📛📛: ${kt(e)}, ${l.state_name}, ${t}`), h--, -1;
1582
1583
  }
1583
1584
  if (i) {
1584
1585
  if (1 === x) K(n("🔄 %s %s%s %s from %s%s", t || "", e.running ? "" : "!!", kt(e), l.state_name, o && !o.running ? "!!" : "", kt(o)));
1585
1586
  else {
1586
1587
  let r = "";
1587
- s.action && (r = ei(s.action)), K(n("🔄 mach(%s%s^%s), st: %s, ev: %s%s%s, ac: %s, from(%s%s^%s)", e.running ? "" : "!!", Dt(e), Rt(e), l.state_name, "", t || "", "", r, o && !o.running ? "!!" : "", Dt(o), Rt(o)));
1588
+ s.action && (r = ti(s.action)), K(n("🔄 mach(%s%s^%s), st: %s, ev: %s%s%s, ac: %s, from(%s%s^%s)", e.running ? "" : "!!", Dt(e), At(e), l.state_name, "", t || "", "", r, o && !o.running ? "!!" : "", Dt(o), At(o)));
1588
1589
  }
1589
1590
  r && re(e) && Vo(r) && $o(r);
1590
1591
  }
@@ -1603,7 +1604,7 @@ var gobjJs = function(e) {
1603
1604
  } finally {
1604
1605
  En(a);
1605
1606
  }
1606
- return i && 1 !== x && !a.destroyed && K(n("<- mach(%s%s^%s), st: %s, ev: %s, ret: %d", e.running ? "" : "!!", Dt(e), Rt(e), e.current_state.state_name, t || "", qo(u) ? u : 0)), h--, u;
1607
+ return i && 1 !== x && !a.destroyed && K(n("<- mach(%s%s^%s), st: %s, ev: %s, ret: %d", e.running ? "" : "!!", Dt(e), At(e), e.current_state.state_name, t || "", qo(u) ? u : 0)), h--, u;
1607
1608
  }
1608
1609
  var On = Object.freeze({
1609
1610
  __rename_event_name__: 1,
@@ -1652,23 +1653,23 @@ var gobjJs = function(e) {
1652
1653
  let i = bl(t, o, "__config__", null), s = bl(t, o, "__global__", null), a = bl(t, o, "__local__", null), u = pl(t, o, "__filter__", null), _ = !0;
1653
1654
  if (t && t !== dl(null, e, "publisher", null) && (_ = !1), l && l !== dl(null, e, "subscriber", null) && (_ = !1), n && n !== gl(null, e, "event", "") && (_ = !1), r && r !== gl(null, e, "renamed_event", "") && (_ = !1), xo(i) > 0) {
1654
1655
  let t = bl(null, e, "__config__", null);
1655
- xo(t) > 0 && Ro(t, i) || (_ = !1);
1656
+ xo(t) > 0 && Ao(t, i) || (_ = !1);
1656
1657
  }
1657
1658
  if (xo(s) > 0) {
1658
1659
  let t = bl(null, e, "__global__", null);
1659
- xo(t) > 0 && Ro(t, s) || (_ = !1);
1660
+ xo(t) > 0 && Ao(t, s) || (_ = !1);
1660
1661
  }
1661
1662
  if (xo(a) > 0) {
1662
1663
  let t = bl(null, e, "__local__", null);
1663
- xo(t) > 0 && Ro(t, a) || (_ = !1);
1664
+ xo(t) > 0 && Ao(t, a) || (_ = !1);
1664
1665
  }
1665
1666
  if (xo(u) > 0) {
1666
1667
  let t = pl(null, e, "__filter__", null);
1667
- xo(t) > 0 && Ro(t, u) || (_ = !1);
1668
+ xo(t) > 0 && Ao(t, u) || (_ = !1);
1668
1669
  }
1669
1670
  return _;
1670
1671
  }
1671
- function An(e, t, n, r, o, l) {
1672
+ function Rn(e, t, n, r, o, l) {
1672
1673
  let i = [];
1673
1674
  for (let s = 0; s < e.length; s++) {
1674
1675
  let a = e[s];
@@ -1676,17 +1677,17 @@ var gobjJs = function(e) {
1676
1677
  }
1677
1678
  return i;
1678
1679
  }
1679
- function Rn(e, t) {
1680
+ function An(e, t) {
1680
1681
  return e.indexOf(t);
1681
1682
  }
1682
1683
  function Dn(e, t, r, o) {
1683
1684
  let l = dl(e, t, "publisher", null, Un.KW_REQUIRED), i = dl(e, t, "subscriber", null, Un.KW_REQUIRED), s = gl(e, t, "event", "", Un.KW_REQUIRED);
1684
1685
  if (!!(fl(e, t, "subs_flag", null, Un.KW_REQUIRED) & On.__hard_subscription__) && !r) return -1;
1685
1686
  let a = te(i) || te(l);
1686
- if (Rn(l.dl_subscriptions, t) < 0) return a && K(n("💜💜👎 unsubscribing event '%s': publisher %s, subscriber'%s', ALREADY REMOVED", s || "", kt(l), kt(i))), 1;
1687
+ if (An(l.dl_subscriptions, t) < 0) return a && K(n("💜💜👎 unsubscribing event '%s': publisher %s, subscriber'%s', ALREADY REMOVED", s || "", kt(l), kt(i))), 1;
1687
1688
  a && (K(n("💜💜👎 unsubscribing event '%s': publisher %s, subscriber'%s'", s || "", kt(l), kt(i))), _r(t)), l.obflag & U.obflag_destroyed || o || l.gclass.gmt.mt_subscription_deleted && l.gclass.gmt.mt_subscription_deleted(l, t);
1688
- let u = Rn(l.dl_subscriptions, t);
1689
- return u >= 0 ? Go(l.dl_subscriptions, u) : (ir(`${kt(e)}: subscription in publisher not found`), _r(t)), u = Rn(i.dl_subscribings, t), u >= 0 ? Go(i.dl_subscribings, u) : (ir(`${kt(e)}: subscription in subscriber not found`), _r(t)), 0;
1689
+ let u = An(l.dl_subscriptions, t);
1690
+ return u >= 0 ? Go(l.dl_subscriptions, u) : (ir(`${kt(e)}: subscription in publisher not found`), _r(t)), u = An(i.dl_subscribings, t), u >= 0 ? Go(i.dl_subscribings, u) : (ir(`${kt(e)}: subscription in subscriber not found`), _r(t)), 0;
1690
1691
  }
1691
1692
  function kn(e, t, r, o) {
1692
1693
  if (null == r && (r = {}), !e) return ir(`publisher NULL: ev ${t}`), 0;
@@ -1702,7 +1703,7 @@ var gobjJs = function(e) {
1702
1703
  l.has(n) || ir(`${kt(e)}: key ignored in subscription (key: ${n}, event: ${t})`);
1703
1704
  }), Zo(t)) t = "";
1704
1705
  else if (!(bn(e, t, F.EVF_OUTPUT_EVENT) || e.gclass.gclass_flag & P.gcflag_no_check_output_events)) return ir(`event NOT in output event list: ${kt(e)}, ${t}`), 0;
1705
- let i = Nn(r, t), s = An(e.dl_subscriptions, e, t, i.renamed_event, i.kw, o), a = null;
1706
+ let i = Nn(r, t), s = Rn(e.dl_subscriptions, e, t, i.renamed_event, i.kw, o), a = null;
1706
1707
  for (let t = 0; t < s.length; t++) if (fl(e, s[t], "subs_flag", 0, Un.KW_REQUIRED) & On.__hard_subscription__) {
1707
1708
  a = s[t];
1708
1709
  break;
@@ -1715,8 +1716,8 @@ var gobjJs = function(e) {
1715
1716
  let l = 0;
1716
1717
  if (n) {
1717
1718
  let r = bl(e, n, "__config__", null), i = bl(e, n, "__global__", null), s = bl(e, n, "__local__", null), a = pl(e, n, "__filter__", null), u = gl(e, n, "__service__", "");
1718
- if (xo(i) > 0 && Uo(o, "__global__", Ao(i)), xo(r) > 0) {
1719
- let n = Ao(r);
1719
+ if (xo(i) > 0 && Uo(o, "__global__", Ro(i)), xo(r) > 0) {
1720
+ let n = Ro(r);
1720
1721
  Uo(o, "__config__", n);
1721
1722
  let i = gl(e, n, "__rename_event_name__", "");
1722
1723
  if (!Zo(i)) {
@@ -1736,7 +1737,7 @@ var gobjJs = function(e) {
1736
1737
  Po(n, "__own_event__"), t && (l |= On.__own_event__);
1737
1738
  }
1738
1739
  }
1739
- xo(s) > 0 && Uo(o, "__local__", Ao(s)), xo(a) > 0 && Uo(o, "__filter__", Ao(a)), Zo(u) || Uo(o, "__service__", u);
1740
+ xo(s) > 0 && Uo(o, "__local__", Ro(s)), xo(a) > 0 && Uo(o, "__filter__", Ro(a)), Zo(u) || Uo(o, "__service__", u);
1740
1741
  }
1741
1742
  return Uo(o, "subs_flag", l), o;
1742
1743
  }(e, t, r, o);
@@ -1753,10 +1754,10 @@ var gobjJs = function(e) {
1753
1754
  return o && sr(`${kt(e)}: Subscription(s) already removed, nothing to remove (count: ${o})`), 0;
1754
1755
  }
1755
1756
  function In(e, t, n, r) {
1756
- return null == n && (n = {}), An(e.dl_subscriptions, e, t, null, n, r);
1757
+ return null == n && (n = {}), Rn(e.dl_subscriptions, e, t, null, n, r);
1757
1758
  }
1758
1759
  function Pn(e, t, n, r) {
1759
- return An(e.dl_subscribings, r, t, null, n, e);
1760
+ return Rn(e.dl_subscribings, r, t, null, n, e);
1760
1761
  }
1761
1762
  function Ln(e, t, r) {
1762
1763
  if (Bo(r) || (r = {}), !e || e.obflag & (U.obflag_destroyed | U.obflag_destroying)) return ir("gobj NULL or DESTROYED"), -1;
@@ -1764,7 +1765,7 @@ var gobjJs = function(e) {
1764
1765
  let o = gn(e, t, !0);
1765
1766
  if (!(o && o.event_flag & (F.EVF_SYSTEM_EVENT | F.EVF_OUTPUT_EVENT) || e.gclass.gclass_flag & P.gcflag_no_check_output_events)) return ir(`event NOT in output event list: ${kt(e)}, ev ${t}`), -1;
1766
1767
  let l = (te(e) || oe(e, t)) && !le(e, t);
1767
- if (l && (K(1 === x ? n("🔝🔝 %s %s%s %s", t || "", e.running ? "" : "!!", kt(e), e.current_state.state_name) : n("🔝🔝 mach(%s%s^%s), st: %s, ev: %s%s%s", e.running ? "" : "!!", Dt(e), Rt(e), e.current_state.state_name, "", t || "", "")), re(e) && Vo(r) && $o(r)), e.gclass.gmt.mt_publish_event) {
1768
+ if (l && (K(1 === x ? n("🔝🔝 %s %s%s %s", t || "", e.running ? "" : "!!", kt(e), e.current_state.state_name) : n("🔝🔝 mach(%s%s^%s), st: %s, ev: %s%s%s", e.running ? "" : "!!", Dt(e), At(e), e.current_state.state_name, "", t || "", "")), re(e) && Vo(r) && $o(r)), e.gclass.gmt.mt_publish_event) {
1768
1769
  let n = e.gclass.gmt.mt_publish_event(e, t, r);
1769
1770
  if (n <= 0) return n;
1770
1771
  }
@@ -1791,7 +1792,7 @@ var gobjJs = function(e) {
1791
1792
  let p = gn(c, t, !0);
1792
1793
  if (p && p.event_flag & F.EVF_SYSTEM_EVENT && !dn(c, p.event_name, 0)) continue;
1793
1794
  let m = r;
1794
- (xo(i) > 0 || xo(o) > 0) && (m = Do({}, r)), xo(i) > 0 && ol(m, i), xo(o) > 0 && Do(m, Ao(o)), l && (K(1 === x ? n("🔝🔄 %s (%s) %s%s", t || "", d || "", c.running ? "" : "!!", kt(c)) : n("🔝🔄 mach(%s%s), st: %s, ev: %s (%s), from(%s%s)", c.running ? "" : "!!", kt(c), fn(c), t || "", d || "", e && !e.running ? "!!" : "", kt(e))), re(e) && Vo(m) && $o(m));
1795
+ (xo(i) > 0 || xo(o) > 0) && (m = Do({}, r)), xo(i) > 0 && ol(m, i), xo(o) > 0 && Do(m, Ro(o)), l && (K(1 === x ? n("🔝🔄 %s (%s) %s%s", t || "", d || "", c.running ? "" : "!!", kt(c)) : n("🔝🔄 mach(%s%s), st: %s, ev: %s (%s), from(%s%s)", c.running ? "" : "!!", kt(c), fn(c), t || "", d || "", e && !e.running ? "!!" : "", kt(e))), re(e) && Vo(m) && $o(m));
1795
1796
  let h = jn(c, d, m, e);
1796
1797
  if (h < 0 && f & On.__own_event__) {
1797
1798
  s = -1;
@@ -2130,10 +2131,10 @@ var gobjJs = function(e) {
2130
2131
  function $r(e) {
2131
2132
  return e >= 48 && e <= 57 || e >= 65 && e <= 90 || e >= 97 && e <= 122;
2132
2133
  }
2133
- function Ar(e) {
2134
+ function Rr(e) {
2134
2135
  return e >= 65 && e <= 90 || e >= 97 && e <= 122;
2135
2136
  }
2136
- function Rr(e) {
2137
+ function Ar(e) {
2137
2138
  return e >= 65 && e <= 90;
2138
2139
  }
2139
2140
  function Dr(e) {
@@ -2194,9 +2195,9 @@ var gobjJs = function(e) {
2194
2195
  const o = t + n;
2195
2196
  for (;;) {
2196
2197
  let t = r, n = !0, l = !0;
2197
- for (; t < o && Ar(e.charCodeAt(t));) t > r && (Rr(e.charCodeAt(t)) ? l = !1 : n = !1), t++;
2198
+ for (; t < o && Rr(e.charCodeAt(t));) t > r && (Ar(e.charCodeAt(t)) ? l = !1 : n = !1), t++;
2198
2199
  if (t === r) return !1;
2199
- if (!(l || n && Rr(e.charCodeAt(r)))) return !1;
2200
+ if (!(l || n && Ar(e.charCodeAt(r)))) return !1;
2200
2201
  if (t === o) return !0;
2201
2202
  if ("-" !== e[t] && "." !== e[t] && "/" !== e[t] || t + 1 === o) return !1;
2202
2203
  r = t + 1;
@@ -2612,17 +2613,17 @@ var gobjJs = function(e) {
2612
2613
  function $o(e, t) {
2613
2614
  _r(No(e), t);
2614
2615
  }
2615
- function Ao(e) {
2616
+ function Ro(e) {
2616
2617
  return structuredClone(e);
2617
2618
  }
2618
- function Ro(e, t) {
2619
+ function Ao(e, t) {
2619
2620
  if (e === t) return !0;
2620
2621
  if (null === e || null === t) return e === t;
2621
2622
  if (typeof e != typeof t) return !1;
2622
2623
  if (Array.isArray(e) !== Array.isArray(t)) return !1;
2623
2624
  if (Array.isArray(e)) {
2624
2625
  if (e.length !== t.length) return !1;
2625
- for (let n = 0; n < e.length; n++) if (!Ro(e[n], t[n])) return !1;
2626
+ for (let n = 0; n < e.length; n++) if (!Ao(e[n], t[n])) return !1;
2626
2627
  return !0;
2627
2628
  }
2628
2629
  if ("object" == typeof e) {
@@ -2630,7 +2631,7 @@ var gobjJs = function(e) {
2630
2631
  if (n.length !== r.length) return !1;
2631
2632
  for (let o = 0; o < n.length; o++) {
2632
2633
  if (n[o] !== r[o]) return !1;
2633
- if (!Ro(e[n[o]], t[r[o]])) return !1;
2634
+ if (!Ao(e[n[o]], t[r[o]])) return !1;
2634
2635
  }
2635
2636
  return !0;
2636
2637
  }
@@ -3067,7 +3068,7 @@ var gobjJs = function(e) {
3067
3068
  }
3068
3069
  else ir(`kw_remove_local_storage_value(): invalid key: key=${e}`);
3069
3070
  }
3070
- function Al(e, t) {
3071
+ function Rl(e, t) {
3071
3072
  if (zo(e) || zo(t)) return !0;
3072
3073
  if (Yo(e)) {
3073
3074
  if (0 === e.length) return !0;
@@ -3078,7 +3079,7 @@ var gobjJs = function(e) {
3078
3079
  } else if (Jo(e) && e === t) return !0;
3079
3080
  return !1;
3080
3081
  }
3081
- function Rl(e, t, n, r, o) {
3082
+ function Al(e, t, n, r, o) {
3082
3083
  if (e && !Xo(e) && ir("GObj bad instanceof"), !t) return null;
3083
3084
  o || (o = vl);
3084
3085
  let l = [];
@@ -3089,13 +3090,13 @@ var gobjJs = function(e) {
3089
3090
  if (!Jo(a)) continue;
3090
3091
  s = a;
3091
3092
  }
3092
- Al(n, s) && o(a, r) && l.push(a);
3093
+ Rl(n, s) && o(a, r) && l.push(a);
3093
3094
  }
3094
3095
  else {
3095
3096
  if (!Bo(t)) return ir("kw_collect() BAD kw parameter"), null;
3096
3097
  for (let e of Object.keys(t)) {
3097
3098
  let i = t[e];
3098
- Al(n, e) && o(i, r) && l.push(i);
3099
+ Rl(n, e) && o(i, r) && l.push(i);
3099
3100
  }
3100
3101
  }
3101
3102
  return l;
@@ -3254,8 +3255,8 @@ var gobjJs = function(e) {
3254
3255
  const n = Array.from(t, (e) => e.toString(16).padStart(2, "0")).join("");
3255
3256
  return `${n.slice(0, 8)}-${n.slice(8, 12)}-${n.slice(12, 16)}-${n.slice(16, 20)}-${n.slice(20)}`;
3256
3257
  }
3257
- var Xl = null;
3258
- function Zl() {
3258
+ var Xl = null, Zl = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
3259
+ function ei() {
3259
3260
  if (Xl) return Xl;
3260
3261
  const e = jl();
3261
3262
  if (!e) return Xl = Ql();
@@ -3265,7 +3266,7 @@ var gobjJs = function(e) {
3265
3266
  } catch (e) {
3266
3267
  return Sl("host_uuid", "node_uuid(): localStorage cannot be read (storage blocked?): a uuid of this page only"), Xl = Ql();
3267
3268
  }
3268
- if (!t) {
3269
+ if (t && !Zl.test(t) && (sr("node_uuid(): the stored host_uuid is not a uuid: a new one replaces it"), t = null), !t) {
3269
3270
  t = Ql();
3270
3271
  try {
3271
3272
  e.setItem("host_uuid", t);
@@ -3275,16 +3276,16 @@ var gobjJs = function(e) {
3275
3276
  }
3276
3277
  return Xl = t;
3277
3278
  }
3278
- function ei(e) {
3279
+ function ti(e) {
3279
3280
  let t = null;
3280
3281
  return "function" != typeof e && "object" != typeof e || (t = ("" + e).match(/function\s*([\w\$]*)\s*\(/)), null !== t ? t[1] + "()" : "";
3281
3282
  }
3282
- var ti = 256, ni = 1e5;
3283
- function ri(e) {
3283
+ var ni = 256, ri = 1e5;
3284
+ function oi(e) {
3284
3285
  const t = String(e).replace(/`/g, "``");
3285
3286
  return "[" === t[0] ? "[" + t : t;
3286
3287
  }
3287
- function oi(e) {
3288
+ function li(e) {
3288
3289
  if ("string" != typeof e) return null;
3289
3290
  let t = [], n = "";
3290
3291
  for (let r = 0; r < e.length; r++) if ("`" !== e[r]) n += e[r];
@@ -3305,13 +3306,13 @@ var gobjJs = function(e) {
3305
3306
  return null !== t ? t : "[" === e[0] && "[" === e[1] ? e.slice(1) : e;
3306
3307
  });
3307
3308
  }
3308
- function li(e, t) {
3309
+ function ii(e, t) {
3309
3310
  return e === t || null !== e && null !== t && "object" == typeof e && "object" == typeof t && JSON.stringify(e) === JSON.stringify(t);
3310
3311
  }
3311
- function ii(e) {
3312
+ function si(e) {
3312
3313
  return "persistent-attrs-" + kt(e);
3313
3314
  }
3314
- function si(e, t) {
3315
+ function ai(e, t) {
3315
3316
  if (Jo(t)) {
3316
3317
  if (-1 === t.indexOf("^")) {
3317
3318
  let n, r, o = e.fkey;
@@ -3341,7 +3342,7 @@ var gobjJs = function(e) {
3341
3342
  hook_name: t.hook_name
3342
3343
  } : (ir("bad fkey 3"), ir(e), ir(t), null);
3343
3344
  }
3344
- var ai = [
3345
+ var ui = [
3345
3346
  "string",
3346
3347
  "integer",
3347
3348
  "object",
@@ -3351,7 +3352,7 @@ var gobjJs = function(e) {
3351
3352
  "real",
3352
3353
  "boolean",
3353
3354
  "blob"
3354
- ], ui = [
3355
+ ], _i = [
3355
3356
  "persistent",
3356
3357
  "required",
3357
3358
  "notnull",
@@ -3363,7 +3364,7 @@ var gobjJs = function(e) {
3363
3364
  "stats",
3364
3365
  "rstats",
3365
3366
  "pstats"
3366
- ], _i = [
3367
+ ], ci = [
3367
3368
  "hook",
3368
3369
  "fkey",
3369
3370
  "enum",
@@ -3392,7 +3393,7 @@ var gobjJs = function(e) {
3392
3393
  "coordinates",
3393
3394
  "gbuffer"
3394
3395
  ];
3395
- function ci(e) {
3396
+ function fi(e) {
3396
3397
  let t = {
3397
3398
  name: e.id,
3398
3399
  header: e.header,
@@ -3411,7 +3412,7 @@ var gobjJs = function(e) {
3411
3412
  if (!e.flag) return t;
3412
3413
  for (let n = 0; n < e.flag.length; n++) {
3413
3414
  let r = e.flag[n];
3414
- if (kl(_i, r)) {
3415
+ if (kl(ci, r)) {
3415
3416
  switch (r) {
3416
3417
  case "enum":
3417
3418
  t.enum_list = e.enum;
@@ -3425,7 +3426,7 @@ var gobjJs = function(e) {
3425
3426
  case "file": t.is_file = !0;
3426
3427
  }
3427
3428
  t.type = r;
3428
- } else if (kl(ui, r)) switch (r) {
3429
+ } else if (kl(_i, r)) switch (r) {
3429
3430
  case "writable":
3430
3431
  t.is_writable = !0;
3431
3432
  break;
@@ -3438,23 +3439,23 @@ var gobjJs = function(e) {
3438
3439
  }
3439
3440
  return t.is_file && (t.type = "file"), t;
3440
3441
  }
3441
- var fi = [
3442
+ var gi = [
3442
3443
  k(E.DTP_POINTER, "subscriber", 0, null, "Subscriber of output events"),
3443
3444
  k(E.DTP_BOOLEAN, "periodic", 0, 0, "True for periodic timeouts"),
3444
3445
  k(E.DTP_INTEGER, "msec", 0, 0, "Timeout in milliseconds"),
3445
3446
  D()
3446
- ], gi = {
3447
+ ], di = {
3447
3448
  periodic: !1,
3448
3449
  msec: 0,
3449
3450
  timer_id: -1
3450
- }, di = null;
3451
- function bi(e, t, n, r) {
3451
+ }, bi = null;
3452
+ function pi(e, t, n, r) {
3452
3453
  let o = e.priv, l = o.periodic ? "EV_TIMEOUT_PERIODIC" : "EV_TIMEOUT";
3453
3454
  return o.periodic && o.msec > 0 ? o.timer_id = setTimeout(function() {
3454
3455
  jn(e, "EV_TIMEOUT", {}, e);
3455
3456
  }, o.msec) : o.timer_id = -1, Ln(e, l, {}), o.periodic || -1 !== o.timer_id || Tt(e) && mt(e), 0;
3456
3457
  }
3457
- var pi = {
3458
+ var mi = {
3458
3459
  mt_create: function(e) {
3459
3460
  let t = e.priv, n = nn(e, "subscriber");
3460
3461
  n ? kn(e, null, {}, n) : Lt(e) && (n = It(e), kn(e, null, {}, n)), t.periodic = Zt(e, "periodic"), t.msec = en(e, "msec");
@@ -3478,19 +3479,19 @@ var gobjJs = function(e) {
3478
3479
  },
3479
3480
  mt_destroy: function(e) {}
3480
3481
  };
3481
- function mi(e) {
3482
+ function hi(e) {
3482
3483
  return "number" == typeof e && Number.isFinite(e) ? Math.round(e) : e;
3483
3484
  }
3484
- function hi(e, t) {
3485
- return e instanceof I ? "C_TIMER" !== Dt(e) ? (ir("not C_TIMER GObj"), -1) : (an(e, "periodic", !1), void un(e, "msec", mi(t))) : (ir("not GObj TYPE"), -1);
3486
- }
3487
3485
  function yi(e, t) {
3488
- return e instanceof I ? "C_TIMER" !== Dt(e) ? (ir("not C_TIMER GObj"), -1) : (an(e, "periodic", !0), void un(e, "msec", mi(t))) : (ir("not GObj TYPE"), -1);
3486
+ return e instanceof I ? "C_TIMER" !== Dt(e) ? (ir("not C_TIMER GObj"), -1) : (an(e, "periodic", !1), void un(e, "msec", hi(t))) : (ir("not GObj TYPE"), -1);
3487
+ }
3488
+ function vi(e, t) {
3489
+ return e instanceof I ? "C_TIMER" !== Dt(e) ? (ir("not C_TIMER GObj"), -1) : (an(e, "periodic", !0), void un(e, "msec", hi(t))) : (ir("not GObj TYPE"), -1);
3489
3490
  }
3490
- function vi(e) {
3491
+ function Ei(e) {
3491
3492
  return e instanceof I ? "C_TIMER" !== Dt(e) ? (ir("not C_TIMER GObj"), -1) : void un(e, "msec", -1) : (ir("not GObj TYPE"), -1);
3492
3493
  }
3493
- var Ei = [
3494
+ var Ti = [
3494
3495
  k(E.DTP_BOOLEAN, "changesLost", 0, !1, "Set true to warn about leaving page"),
3495
3496
  k(E.DTP_BOOLEAN, "browser_beforeunload", 0, !1, "Set true to refreshing browser"),
3496
3497
  k(E.DTP_STRING, "__username__", 0, "", "Username"),
@@ -3504,41 +3505,41 @@ var gobjJs = function(e) {
3504
3505
  k(E.DTP_STRING, "yuno_version", 0, "", "Yuno version (APP_VERSION)"),
3505
3506
  k(E.DTP_STRING, "yuneta_version", 0, i, "Yuneta version"),
3506
3507
  k(E.DTP_LIST, "required_services", 0, "[]", "Required services"),
3507
- k(E.DTP_DICT, "trace_levels", A.SDF_PERSIST, "{}", "Trace levels"),
3508
- k(E.DTP_DICT, "no_trace_levels", A.SDF_PERSIST, "{}", "No trace levels"),
3508
+ k(E.DTP_DICT, "trace_levels", R.SDF_PERSIST, "{}", "Trace levels"),
3509
+ k(E.DTP_DICT, "no_trace_levels", R.SDF_PERSIST, "{}", "No trace levels"),
3509
3510
  k(E.DTP_POINTER, "trace_ievent_callback", 0, null, "Where the traffic trace goes (C_IEVENT_CLI levels ievents/ievents2); console when null"),
3510
3511
  k(E.DTP_BOOLEAN, "developer", 0, !1, "Developer mode enabled"),
3511
3512
  k(E.DTP_INTEGER, "periodic_timeout", 0, "1000", "Timeout periodic, in miliseconds."),
3512
3513
  D()
3513
- ], Ti = { gobj_timer: null }, ji = null;
3514
- function Oi(e, t, n, r) {
3514
+ ], ji = { gobj_timer: null }, Oi = null;
3515
+ function Si(e, t, n, r) {
3515
3516
  let o = Qt(e, t);
3516
3517
  return Bo(o) || (o = {}), o[n] = r, rn(e, t, o), it(e, t);
3517
3518
  }
3518
- var Si = -2147483648, wi = 2147483647;
3519
- function Ni(e) {
3519
+ var wi = -2147483648, Ni = 2147483647;
3520
+ function $i(e) {
3520
3521
  if (!0 === e || !1 === e) return e;
3521
- if ("number" == typeof e) return !Number.isInteger(e) || e < Si || e > wi ? null : 0 !== e;
3522
+ if ("number" == typeof e) return !Number.isInteger(e) || e < wi || e > Ni ? null : 0 !== e;
3522
3523
  if ("string" != typeof e || "" === e) return null;
3523
3524
  let t = e.toLowerCase();
3524
3525
  if ("set" === t) return !0;
3525
3526
  if ("reset" === t) return !1;
3526
3527
  if (/^-?(0|[1-9][0-9]*)$/.test(e)) {
3527
3528
  let t = Number(e);
3528
- return t < Si || t > wi ? null : 0 !== t;
3529
+ return t < wi || t > Ni ? null : 0 !== t;
3529
3530
  }
3530
3531
  return "true" === t || "yes" === t || "on" === t || "false" !== t && "no" !== t && "off" !== t && null;
3531
3532
  }
3532
- function $i() {
3533
+ function Ri() {
3533
3534
  return `${$t()}^${Nt()}`;
3534
3535
  }
3535
3536
  function Ai(e, t, n, r) {
3536
3537
  return Ln(e, t, n), 0;
3537
3538
  }
3538
- var Ri = {
3539
+ var Di = {
3539
3540
  mt_create: function(e) {
3540
3541
  let t = e.priv;
3541
- _n(e, "start_date", Hl()), _n(e, "node_uuid", Zl()), e.priv.gobj_timer = _t(Rt(e), "C_TIMER", {}, e), t.periodic_timeout = Qt(e, "periodic_timeout"), function(e) {
3542
+ _n(e, "start_date", Hl()), _n(e, "node_uuid", ei()), e.priv.gobj_timer = _t(At(e), "C_TIMER", {}, e), t.periodic_timeout = Qt(e, "periodic_timeout"), function(e) {
3542
3543
  let t = Qt(e, "trace_levels");
3543
3544
  if (!Bo(t)) return 0;
3544
3545
  let n = t.__global_trace__;
@@ -3551,7 +3552,7 @@ var gobjJs = function(e) {
3551
3552
  if (t) if (Yo(r)) {
3552
3553
  be(t, null, !1);
3553
3554
  for (let e of r) be(t, e, !0);
3554
- } else ir(`${Rt(e)}: trace_levels of ${n} MUST be a list`);
3555
+ } else ir(`${At(e)}: trace_levels of ${n} MUST be a list`);
3555
3556
  }
3556
3557
  }(e), function(e) {
3557
3558
  let t = Qt(e, "no_trace_levels");
@@ -3566,16 +3567,16 @@ var gobjJs = function(e) {
3566
3567
  if (t) if (Yo(r)) {
3567
3568
  pe(t, null, !1);
3568
3569
  for (let e of r) pe(t, e, !0);
3569
- } else ir(`${Rt(e)}: no_trace_levels of ${n} MUST be a list`);
3570
+ } else ir(`${At(e)}: no_trace_levels of ${n} MUST be a list`);
3570
3571
  }
3571
3572
  }(e);
3572
3573
  },
3573
3574
  mt_writing: function(e, t) {},
3574
3575
  mt_start: function(e) {
3575
- return yi(e.priv.gobj_timer, e.priv.periodic_timeout), 0;
3576
+ return vi(e.priv.gobj_timer, e.priv.periodic_timeout), 0;
3576
3577
  },
3577
3578
  mt_stop: function(e) {
3578
- return vi(e.priv.gobj_timer), yt(e), 0;
3579
+ return Ei(e.priv.gobj_timer), yt(e), 0;
3579
3580
  },
3580
3581
  mt_destroy: function(e) {},
3581
3582
  mt_play: function(e) {
@@ -3592,49 +3593,49 @@ var gobjJs = function(e) {
3592
3593
  case "get-global-no-trace": return o(0, 0, null, null, ce());
3593
3594
  case "set-global-trace":
3594
3595
  case "set-global-no-trace": {
3595
- let r = "set-global-no-trace" === t, l = n.level, i = Ni(n.set);
3596
- return l ? null === i ? o(0, -1, `${$i()}: bitmask set or re-set?`, null, null) : (r ? se(l, i) : ie(l, i)) < 0 ? o(0, -1, `${$i()}: global trace level not found: ${l}`, null, null) : r ? (Oi(e, "no_trace_levels", "__global_no_trace__", ce()), o(0, 0, null, null, ce())) : (Oi(e, "trace_levels", "__global_trace__", _e()), o(0, 0, null, null, _e())) : o(0, -1, `${$i()}: what level?`, null, null);
3596
+ let r = "set-global-no-trace" === t, l = n.level, i = $i(n.set);
3597
+ return l ? null === i ? o(0, -1, `${Ri()}: bitmask set or re-set?`, null, null) : (r ? se(l, i) : ie(l, i)) < 0 ? o(0, -1, `${Ri()}: global trace level not found: ${l}`, null, null) : r ? (Si(e, "no_trace_levels", "__global_no_trace__", ce()), o(0, 0, null, null, ce())) : (Si(e, "trace_levels", "__global_trace__", _e()), o(0, 0, null, null, _e())) : o(0, -1, `${Ri()}: what level?`, null, null);
3597
3598
  }
3598
3599
  case "get-gclass-trace":
3599
3600
  case "get-gclass-no-trace":
3600
3601
  case "set-gclass-trace":
3601
3602
  case "set-gclass-no-trace": {
3602
3603
  let r = t.indexOf("no-trace") >= 0, l = n.gclass_name || n.gclass || "", i = et(l);
3603
- if (!i) return o(0, -1, `${$i()}: what gclass is '${l}'?`, null, null);
3604
+ if (!i) return o(0, -1, `${Ri()}: what gclass is '${l}'?`, null, null);
3604
3605
  if (0 === t.indexOf("get-")) return o(0, 0, null, null, r ? de(i) : fe(i));
3605
- let s = n.level, a = Ni(n.set);
3606
- return s ? null === a ? o(0, -1, `${$i()}: bitmask set or re-set?`, null, null) : (r ? pe(i, s, a) : be(i, s, a)) < 0 ? o(0, -1, `${$i()}: trace level of ${l} not found: ${s}`, null, null) : r ? (Oi(e, "no_trace_levels", l, de(i)), o(0, 0, null, null, de(i))) : (Oi(e, "trace_levels", l, ge(i)), o(0, 0, null, null, fe(i))) : o(0, -1, `${$i()}: what level?`, null, null);
3606
+ let s = n.level, a = $i(n.set);
3607
+ return s ? null === a ? o(0, -1, `${Ri()}: bitmask set or re-set?`, null, null) : (r ? pe(i, s, a) : be(i, s, a)) < 0 ? o(0, -1, `${Ri()}: trace level of ${l} not found: ${s}`, null, null) : r ? (Si(e, "no_trace_levels", l, de(i)), o(0, 0, null, null, de(i))) : (Si(e, "trace_levels", l, ge(i)), o(0, 0, null, null, fe(i))) : o(0, -1, `${Ri()}: what level?`, null, null);
3607
3608
  }
3608
- default: return o(0, -1, `${$i()}: command not available: ${t}`, null, null);
3609
+ default: return o(0, -1, `${Ri()}: command not available: ${t}`, null, null);
3609
3610
  }
3610
3611
  }
3611
3612
  };
3612
- var Di = "ievent_gate_stack", ki = [
3613
- k(E.DTP_STRING, "wanted_yuno_role", A.SDF_RD, "", "wanted yuno role"),
3614
- k(E.DTP_STRING, "wanted_yuno_name", A.SDF_RD, "", "wanted yuno name"),
3615
- k(E.DTP_STRING, "wanted_yuno_service", A.SDF_RD, "", "wanted yuno service"),
3616
- k(E.DTP_STRING, "remote_yuno_role", A.SDF_RD, "", "confirmed remote yuno role"),
3617
- k(E.DTP_STRING, "remote_yuno_name", A.SDF_RD, "", "confirmed remote yuno name"),
3618
- k(E.DTP_STRING, "remote_yuno_service", A.SDF_RD, "", "confirmed remote yuno service"),
3619
- k(E.DTP_STRING, "url", A.SDF_RD, "", "Url to connect"),
3620
- k(E.DTP_STRING, "jwt", A.SDF_PERSIST, "", "JWT"),
3621
- k(E.DTP_STRING, "cert_pem", A.SDF_PERSIST, "", "SSL server certification, PEM str format"),
3622
- k(E.DTP_JSON, "extra_info", A.SDF_RD, "{}", "dict data set by user, added to the identity card msg."),
3623
- k(E.DTP_LIST, "required_services", A.SDF_RD, "[]", "Services this LINK requires (identity card). Empty = the yuno's `required_services`, as before. A yuno with several links to DIFFERENT backends must set it per link: the yuno-wide list is the union, so every backend is told the service names of all the others."),
3624
- k(E.DTP_INTEGER, "timeout_retry", A.SDF_RD, "5000", "Base of the first reconnect delay (ms, ±20% jitter), at least 1000. It BACKS OFF from here, doubling up to timeout_retry_max, and resets when a session is reached"),
3625
- k(E.DTP_INTEGER, "timeout_retry_max", A.SDF_RD, "60000", "Cap of the reconnect backoff (ms). Set it equal to timeout_retry for the old fixed-interval behaviour"),
3626
- k(E.DTP_INTEGER, "timeout_idack", A.SDF_RD, "5000", "timeout waiting idAck"),
3613
+ var ki = "ievent_gate_stack", Ci = [
3614
+ k(E.DTP_STRING, "wanted_yuno_role", R.SDF_RD, "", "wanted yuno role"),
3615
+ k(E.DTP_STRING, "wanted_yuno_name", R.SDF_RD, "", "wanted yuno name"),
3616
+ k(E.DTP_STRING, "wanted_yuno_service", R.SDF_RD, "", "wanted yuno service"),
3617
+ k(E.DTP_STRING, "remote_yuno_role", R.SDF_RD, "", "confirmed remote yuno role"),
3618
+ k(E.DTP_STRING, "remote_yuno_name", R.SDF_RD, "", "confirmed remote yuno name"),
3619
+ k(E.DTP_STRING, "remote_yuno_service", R.SDF_RD, "", "confirmed remote yuno service"),
3620
+ k(E.DTP_STRING, "url", R.SDF_RD, "", "Url to connect"),
3621
+ k(E.DTP_STRING, "jwt", R.SDF_PERSIST, "", "JWT"),
3622
+ k(E.DTP_STRING, "cert_pem", R.SDF_PERSIST, "", "SSL server certification, PEM str format"),
3623
+ k(E.DTP_JSON, "extra_info", R.SDF_RD, "{}", "dict data set by user, added to the identity card msg."),
3624
+ k(E.DTP_LIST, "required_services", R.SDF_RD, "[]", "Services this LINK requires (identity card). Empty = the yuno's `required_services`, as before. A yuno with several links to DIFFERENT backends must set it per link: the yuno-wide list is the union, so every backend is told the service names of all the others."),
3625
+ k(E.DTP_INTEGER, "timeout_retry", R.SDF_RD, "5000", "Base of the first reconnect delay (ms, ±20% jitter), at least 1000. It BACKS OFF from here, doubling up to timeout_retry_max, and resets when a session is reached"),
3626
+ k(E.DTP_INTEGER, "timeout_retry_max", R.SDF_RD, "60000", "Cap of the reconnect backoff (ms). Set it equal to timeout_retry for the old fixed-interval behaviour"),
3627
+ k(E.DTP_INTEGER, "timeout_idack", R.SDF_RD, "5000", "timeout waiting idAck"),
3627
3628
  k(E.DTP_POINTER, "subscriber", 0, 0, "subscriber of output-events. If null then subscriber is the parent"),
3628
3629
  D()
3629
- ], Ci = [
3630
+ ], Ii = [
3630
3631
  ["ievents", "Trace inter-events with metadata of kw"],
3631
3632
  ["ievents2", "Trace inter-events with full kw"],
3632
3633
  ["identity-card", "Trace identity_card messages"]
3633
3634
  ];
3634
- function Ii(e) {
3635
+ function Pi(e) {
3635
3636
  return !!(3 & X(e));
3636
3637
  }
3637
- var Pi = {
3638
+ var Li = {
3638
3639
  url: null,
3639
3640
  remote_yuno_name: null,
3640
3641
  remote_yuno_role: null,
@@ -3647,8 +3648,8 @@ var gobjJs = function(e) {
3647
3648
  retry_ms_before_session: 0,
3648
3649
  session_since: 0,
3649
3650
  retry_floor_warned: !1
3650
- }, Li = null;
3651
- function Ui(e) {
3651
+ }, Ui = null;
3652
+ function Fi(e) {
3652
3653
  e.priv.websocket && ir("Websocket ALREADY setup");
3653
3654
  const t = tn(e, "url");
3654
3655
  ar(`====> Starting WebSocket to '${t}' (${kt(e)})`);
@@ -3663,7 +3664,7 @@ var gobjJs = function(e) {
3663
3664
  code: 1006,
3664
3665
  reason: r.message,
3665
3666
  was_clean: !1
3666
- }, e) < 0 && hi(e.priv.gobj_timer, Zi(e)), null;
3667
+ }, e) < 0 && yi(e.priv.gobj_timer, es(e)), null;
3667
3668
  }
3668
3669
  return r ? (r.onopen = () => {
3669
3670
  n !== e.priv.ws_seq || Ut(e) || jn(e, "EV_ON_OPEN", {
@@ -3685,7 +3686,7 @@ var gobjJs = function(e) {
3685
3686
  }, e));
3686
3687
  }, r) : (ir(`${kt(e)}: Failed to initialize WebSocket.`), null);
3687
3688
  }
3688
- function Fi(e, t = 1e3, n = "") {
3689
+ function Mi(e, t = 1e3, n = "") {
3689
3690
  let r = e.priv, o = r.websocket;
3690
3691
  if (r.websocket = null, o && o.readyState !== WebSocket.CLOSED && o.readyState !== WebSocket.CLOSING) {
3691
3692
  ar(`Closing WebSocket (Code: ${t}, Reason: "${n}")`);
@@ -3696,12 +3697,12 @@ var gobjJs = function(e) {
3696
3697
  }
3697
3698
  } else sr("WebSocket is already closed or in the process of closing.");
3698
3699
  }
3699
- function Mi(e, t) {
3700
+ function Gi(e, t) {
3700
3701
  let n = e.priv;
3701
- "ST_SESSION" === fn(e) && (performance.now() - n.session_since < Xi(e).max && (n.retry_ms = n.retry_ms_before_session), n.retry_ms_before_session = 0), Fi(e, 4002, t);
3702
+ "ST_SESSION" === fn(e) && (performance.now() - n.session_since < Zi(e).max && (n.retry_ms = n.retry_ms_before_session), n.retry_ms_before_session = 0), Mi(e, 4002, t);
3702
3703
  }
3703
- var Gi = 128;
3704
- function Vi(e, t) {
3704
+ var Vi = 128;
3705
+ function Wi(e, t) {
3705
3706
  let n = String(e), r = To(n);
3706
3707
  if (null !== r && (n = r), n.length > t) {
3707
3708
  let e = t, r = n.charCodeAt(e);
@@ -3709,7 +3710,7 @@ var gobjJs = function(e) {
3709
3710
  }
3710
3711
  return n;
3711
3712
  }
3712
- function Wi(e, t, n) {
3713
+ function xi(e, t, n) {
3713
3714
  let r = Hl();
3714
3715
  try {
3715
3716
  ar("\n" + r + " " + t + "\n"), $o(n);
@@ -3717,17 +3718,17 @@ var gobjJs = function(e) {
3717
3718
  ar("ERROR in trace_inter_event: " + e);
3718
3719
  }
3719
3720
  }
3720
- var xi = class {
3721
+ var Ki = class {
3721
3722
  constructor(e, t) {
3722
3723
  this.event = e, this.kw = t || {};
3723
3724
  }
3724
3725
  };
3725
- function Ki(e, t, n, r) {
3726
+ function Bi(e, t, n, r) {
3726
3727
  return function(e, t) {
3727
3728
  let n = e.priv, r = JSON.stringify(t);
3728
- if (Ii(e)) {
3729
- let n = tn(e, "url"), o = Rt(wt()) + " ==> " + n, l = Qt(wt(), "trace_ievent_callback");
3730
- l ? l(o, t, 1, r.length) : Wi(0, o, t);
3729
+ if (Pi(e)) {
3730
+ let n = tn(e, "url"), o = At(wt()) + " ==> " + n, l = Qt(wt(), "trace_ievent_callback");
3731
+ l ? l(o, t, 1, r.length) : xi(0, o, t);
3731
3732
  }
3732
3733
  if (!n.websocket || n.websocket.readyState !== WebSocket.OPEN) return sr(`${kt(e)}: send_iev(): websocket not open, message lost`), -1;
3733
3734
  try {
@@ -3737,10 +3738,10 @@ var gobjJs = function(e) {
3737
3738
  }
3738
3739
  return 0;
3739
3740
  }(e, function(e, t) {
3740
- return Zo(e) ? (ir("iev_create() event NULL"), null) : new xi(e, t);
3741
+ return Zo(e) ? (ir("iev_create() event NULL"), null) : new Ki(e, t);
3741
3742
  }(t, n));
3742
3743
  }
3743
- function Bi(e, t, n) {
3744
+ function Yi(e, t, n) {
3744
3745
  return Zo(n) && (n = tn(e, "wanted_yuno_service")), {
3745
3746
  dst_yuno: tn(e, "wanted_yuno_name"),
3746
3747
  dst_role: tn(e, "wanted_yuno_role"),
@@ -3748,15 +3749,15 @@ var gobjJs = function(e) {
3748
3749
  src_yuno: Nt(),
3749
3750
  src_role: $t(),
3750
3751
  src_service: t,
3751
- host: Zl()
3752
+ host: ei()
3752
3753
  };
3753
3754
  }
3754
- function Yi(e) {
3755
+ function Ji(e) {
3755
3756
  let t = e.priv, n = St(wt()), r = tn(wt(), "yuno_version"), o = tn(wt(), "yuno_release"), l = tn(wt(), "yuno_tag"), s = Qt(e, "required_services");
3756
3757
  s && s.length || (s = Qt(wt(), "required_services"));
3757
3758
  let a = {
3758
3759
  yuno_role: $t(),
3759
- yuno_id: At(),
3760
+ yuno_id: Rt(),
3760
3761
  yuno_name: Nt(),
3761
3762
  yuno_tag: l,
3762
3763
  yuno_version: r,
@@ -3769,32 +3770,32 @@ var gobjJs = function(e) {
3769
3770
  username: tn(wt(), "__username__"),
3770
3771
  launch_id: 0,
3771
3772
  yuno_startdate: tn(wt(), "start_date"),
3772
- id: Zl(),
3773
+ id: ei(),
3773
3774
  user_agent: "undefined" != typeof window ? window.navigator.userAgent : "",
3774
3775
  language: "undefined" != typeof window ? window.navigator.language : "",
3775
3776
  required_services: s
3776
3777
  };
3777
- return Pl(e, a, Di, Bi(e, Rt(It(e)), null)), Ul(e, a, "__identity__"), hi(t.gobj_timer, en(e, "timeout_idack")), Ki(e, "EV_IDENTITY_CARD", a);
3778
+ return Pl(e, a, ki, Yi(e, At(It(e)), null)), Ul(e, a, "__identity__"), yi(t.gobj_timer, en(e, "timeout_idack")), Bi(e, "EV_IDENTITY_CARD", a);
3778
3779
  }
3779
- function Ji(e, t) {
3780
+ function qi(e, t) {
3780
3781
  if (Zo(t.event)) return -1;
3781
3782
  let n = {}, r = t.__global__, o = t.__config__, l = t.__filter__, i = t.__service__, s = t.subscriber;
3782
3783
  o && (n.__config__ = o), r && (n.__global__ = r), l && (n.__filter__ = l);
3783
- return Pl(e, n, Di, Bi(e, Rt(s), i)), Ul(e, n, "__subscribing__"), Ki(e, t.event, n);
3784
- }
3785
- function qi(e, t, n, r) {
3786
- let o = e.priv;
3787
- return Tt(e) && (o.websocket = Ui(e)), 0;
3784
+ return Pl(e, n, ki, Yi(e, At(s), i)), Ul(e, n, "__subscribing__"), Bi(e, t.event, n);
3788
3785
  }
3789
3786
  function Hi(e, t, n, r) {
3790
- return ar("Websocket opened: " + e.priv.url), Yi(e), 0;
3787
+ let o = e.priv;
3788
+ return Tt(e) && (o.websocket = Fi(e)), 0;
3791
3789
  }
3792
3790
  function zi(e, t, n, r) {
3791
+ return ar("Websocket opened: " + e.priv.url), Ji(e), 0;
3792
+ }
3793
+ function Qi(e, t, n, r) {
3793
3794
  let o = e.priv, l = n.url;
3794
3795
  if (void 0 !== n.ws_seq && n.ws_seq !== o.ws_seq) return 0;
3795
3796
  Xn();
3796
- const i = Vi(void 0 === n.reason ? "" : n.reason, 256);
3797
- return Ii(e) && ur(`${kt(e)}: WebSocket closed ${l} (Code: ${n.code}, Reason: "${i}", Clean: ${n.was_clean})`), o.websocket && (o.websocket.onopen = null, o.websocket.onmessage = null, o.websocket.onerror = null, o.websocket.onclose = null, o.websocket = null), o.inform_on_close ? (o.inform_on_close = !1, (!n.was_clean || 1e3 !== n.code && 1001 !== n.code) && Tt(e) && sr(`${kt(e)}: session closed ${l} (Code: ${n.code}, Reason: "${i}", Clean: ${n.was_clean})`), Ln(e, "EV_ON_CLOSE", {
3797
+ const i = Wi(void 0 === n.reason ? "" : n.reason, 256);
3798
+ return Pi(e) && ur(`${kt(e)}: WebSocket closed ${l} (Code: ${n.code}, Reason: "${i}", Clean: ${n.was_clean})`), o.websocket && (o.websocket.onopen = null, o.websocket.onmessage = null, o.websocket.onerror = null, o.websocket.onclose = null, o.websocket = null), o.inform_on_close ? (o.inform_on_close = !1, (!n.was_clean || 1e3 !== n.code && 1001 !== n.code) && Tt(e) && sr(`${kt(e)}: session closed ${l} (Code: ${n.code}, Reason: "${i}", Clean: ${n.was_clean})`), Ln(e, "EV_ON_CLOSE", {
3798
3799
  url: l,
3799
3800
  remote_yuno_name: o.remote_yuno_name,
3800
3801
  remote_yuno_role: o.remote_yuno_role,
@@ -3810,33 +3811,33 @@ var gobjJs = function(e) {
3810
3811
  code: n.code,
3811
3812
  reason: i,
3812
3813
  was_clean: n.was_clean
3813
- })), Tt(e) && hi(o.gobj_timer, Zi(e)), 0;
3814
+ })), Tt(e) && yi(o.gobj_timer, es(e)), 0;
3814
3815
  }
3815
- var Qi = 1e3;
3816
- function Xi(e) {
3816
+ var Xi = 1e3;
3817
+ function Zi(e) {
3817
3818
  let t = e.priv, n = en(e, "timeout_retry"), r = en(e, "timeout_retry_max");
3818
- return n >= Qi || (t.retry_floor_warned || (t.retry_floor_warned = !0, sr(`${kt(e)}: timeout_retry ${n} ms is below ${Qi} ms: ${Qi} ms is used`)), n = Qi), r >= n || (r = n), {
3819
+ return n >= Xi || (t.retry_floor_warned || (t.retry_floor_warned = !0, sr(`${kt(e)}: timeout_retry ${n} ms is below ${Xi} ms: ${Xi} ms is used`)), n = Xi), r >= n || (r = n), {
3819
3820
  base: n,
3820
3821
  max: r
3821
3822
  };
3822
3823
  }
3823
- function Zi(e) {
3824
+ function es(e) {
3824
3825
  let t = e.priv;
3825
- const { base: n, max: r } = Xi(e);
3826
+ const { base: n, max: r } = Zi(e);
3826
3827
  t.retry_ms = t.retry_ms ? Math.min(2 * t.retry_ms, r) : n;
3827
3828
  let o = .2 * t.retry_ms, l = t.retry_ms - o + 2 * Math.random() * o;
3828
3829
  return Math.max(1, Math.round(l));
3829
3830
  }
3830
- function es(e, t, n, r) {
3831
- return Yi(e), 0;
3832
- }
3833
3831
  function ts(e, t, n, r) {
3832
+ return Ji(e), 0;
3833
+ }
3834
+ function ns(e, t, n, r) {
3834
3835
  let o = e.priv;
3835
- vi(o.gobj_timer);
3836
- let l = Ll(e, n, Di, !0), i = gl(e, l, "src_yuno", ""), s = gl(e, l, "src_role", ""), a = gl(e, l, "src_service", "");
3836
+ Ei(o.gobj_timer);
3837
+ let l = Ll(e, n, ki, !0), i = gl(e, l, "src_yuno", ""), s = gl(e, l, "src_role", ""), a = gl(e, l, "src_service", "");
3837
3838
  _n(e, "remote_yuno_name", i), _n(e, "remote_yuno_role", s), _n(e, "remote_yuno_service", a);
3838
3839
  let u = fl(e, n, "result", -1, 0), _ = gl(e, n, "comment", "", 0), c = gl(e, n, "username", "", 0), f = pl(e, n, "services_roles", {});
3839
- if (u < 0) Fi(e), Ln(e, "EV_ON_ID_NAK", {
3840
+ if (u < 0) Mi(e), Ln(e, "EV_ON_ID_NAK", {
3840
3841
  url: tn(e, "url"),
3841
3842
  result: u,
3842
3843
  comment: _,
@@ -3853,11 +3854,11 @@ var gobjJs = function(e) {
3853
3854
  services_roles: f
3854
3855
  })), o.inside_on_open = !1, function(e) {
3855
3856
  let t = In(e, null, null, null);
3856
- for (let n = 0; n < t.length; n++) Ji(e, t[n]);
3857
+ for (let n = 0; n < t.length; n++) qi(e, t[n]);
3857
3858
  }(e);
3858
3859
  return 0;
3859
3860
  }
3860
- function ns(e, t, n, r) {
3861
+ function rs(e, t, n, r) {
3861
3862
  let o = e.priv.url, l = function(e, t) {
3862
3863
  let n;
3863
3864
  try {
@@ -3876,52 +3877,52 @@ var gobjJs = function(e) {
3876
3877
  kw: o || {}
3877
3878
  } : (sr(`${kt(e)}: parsing inter_event: kw not a json object`), null) : (sr(`${kt(e)}: parsing inter_kw: no kw`), null);
3878
3879
  }(e, n.data);
3879
- if (!l) return sr(`${kt(e)}: frame dropped from ${o}: ${Vi(n.data, 256)}`), -1;
3880
- if (Ii(e)) {
3881
- let e = Rt(wt()) + " <== " + o, t = n.data.length, r = Qt(wt(), "trace_ievent_callback");
3882
- r ? r(e, l, 2, t) : Wi(0, e, l);
3880
+ if (!l) return sr(`${kt(e)}: frame dropped from ${o}: ${Wi(n.data, 256)}`), -1;
3881
+ if (Pi(e)) {
3882
+ let e = At(wt()) + " <== " + o, t = n.data.length, r = Qt(wt(), "trace_ievent_callback");
3883
+ r ? r(e, l, 2, t) : xi(0, e, l);
3883
3884
  }
3884
3885
  let i = l.event, s = l.kw;
3885
3886
  if ("ST_SESSION" !== fn(e)) {
3886
3887
  if ("ev_identity_card_ack" === String(i).toLowerCase()) {
3887
3888
  if (!(jn(e, "EV_IDENTITY_CARD_ACK", s, e) < 0)) return 0;
3888
- } else sr(`${kt(e)}: event UNKNOWN in not-session state ${Vi(i, Gi)}`);
3889
- return Mi(e, "event out of session"), -1;
3889
+ } else sr(`${kt(e)}: event UNKNOWN in not-session state ${Wi(i, Vi)}`);
3890
+ return Gi(e, "event out of session"), -1;
3890
3891
  }
3891
3892
  l = null;
3892
- let a = Fl(e, s), u = Ll(e, s, Di), _ = gl(e, u, "dst_role", "");
3893
- if (!Zo(_) && _.toLowerCase() !== String($t()).toLowerCase()) return sr(`${kt(e)}: It's not my role, dst_role: ${Vi(_, Gi)}, my_role: ${$t()}, event: ${Vi(i, Gi)}`), Mi(e, "not my role"), -1;
3893
+ let a = Fl(e, s), u = Ll(e, s, ki), _ = gl(e, u, "dst_role", "");
3894
+ if (!Zo(_) && _.toLowerCase() !== String($t()).toLowerCase()) return sr(`${kt(e)}: It's not my role, dst_role: ${Wi(_, Vi)}, my_role: ${$t()}, event: ${Wi(i, Vi)}`), Gi(e, "not my role"), -1;
3894
3895
  let c = gl(e, u, "dst_yuno", "");
3895
- if (!Zo(c) && c.toLowerCase() !== String(Nt()).toLowerCase()) return sr(`${kt(e)}: It's not my name, dst_yuno: ${Vi(c, Gi)}, my_name: ${Nt()}, event: ${Vi(i, Gi)}`), Mi(e, "not my name"), -1;
3896
+ if (!Zo(c) && c.toLowerCase() !== String(Nt()).toLowerCase()) return sr(`${kt(e)}: It's not my name, dst_yuno: ${Wi(c, Vi)}, my_name: ${Nt()}, event: ${Wi(i, Vi)}`), Gi(e, "not my name"), -1;
3896
3897
  let f = gl(e, u, "dst_service", "");
3897
- if ("__subscribing__" === a) return sr(`${kt(e)}: subscription event ignored, I'm client (service: ${Vi(f, Gi)}, event: ${Vi(i, Gi)})`), -1;
3898
- if ("__unsubscribing__" === a) return sr(`${kt(e)}: unsubscription event ignored, I'm client (service: ${Vi(f, Gi)}, event: ${Vi(i, Gi)})`), -1;
3898
+ if ("__subscribing__" === a) return sr(`${kt(e)}: subscription event ignored, I'm client (service: ${Wi(f, Vi)}, event: ${Wi(i, Vi)})`), -1;
3899
+ if ("__unsubscribing__" === a) return sr(`${kt(e)}: unsubscription event ignored, I'm client (service: ${Wi(f, Vi)}, event: ${Wi(i, Vi)})`), -1;
3899
3900
  const g = Sn(i, 0, !1);
3900
3901
  if (g && dn(e, g.event_name, 0)) {
3901
3902
  const t = g.event_name;
3902
- return dn(e, t, F.EVF_PUBLIC_EVENT) && "EV_IDENTITY_CARD_ACK" !== t ? (jn(e, t, s, e), 0) : (sr(`${kt(e)}: event of the transport itself, or out of its place, DROPPED: ev '${Vi(i, Gi)}'`), -1);
3903
+ return dn(e, t, F.EVF_PUBLIC_EVENT) && "EV_IDENTITY_CARD_ACK" !== t ? (jn(e, t, s, e), 0) : (sr(`${kt(e)}: event of the transport itself, or out of its place, DROPPED: ev '${Wi(i, Vi)}'`), -1);
3903
3904
  }
3904
3905
  if (!Zo(f)) {
3905
3906
  let t = nt(f, !1);
3906
- return t ? dn(t, i, F.EVF_PUBLIC_EVENT) ? (jn(t, i, s, e), 0) : (sr(`${kt(e)}: Service found but no event or not public, DROPPED: service '${kt(t)}', ev '${Vi(i, Gi)}'`), -1) : (sr(`${kt(e)}: event for a service that is gone, DROPPED: service '${Vi(f, Gi)}', ev '${Vi(i, Gi)}'`), 0);
3907
+ return t ? dn(t, i, F.EVF_PUBLIC_EVENT) ? (jn(t, i, s, e), 0) : (sr(`${kt(e)}: Service found but no event or not public, DROPPED: service '${kt(t)}', ev '${Wi(i, Vi)}'`), -1) : (sr(`${kt(e)}: event for a service that is gone, DROPPED: service '${Wi(f, Vi)}', ev '${Wi(i, Vi)}'`), 0);
3907
3908
  }
3908
3909
  let d = Sn(i, F.EVF_PUBLIC_EVENT, !1);
3909
- return d ? (Ln(e, d.event_name, s), 0) : (sr(`${kt(e)}: event that no gclass declares public, DROPPED: ev '${Vi(i, Gi)}'`), -1);
3910
- }
3911
- function rs(e, t, n, r) {
3912
- const o = n && "string" == typeof n[r] ? n[r] : "", l = n && "string" == typeof n.service ? n.service : "";
3913
- return sr(`${kt(e)}: ${t} not served by this client, DROPPED: ${r.replace(/_/g, "")} '${Vi(o, Gi)}', service '${Vi(l, Gi)}'`), -1;
3910
+ return d ? (Ln(e, d.event_name, s), 0) : (sr(`${kt(e)}: event that no gclass declares public, DROPPED: ev '${Wi(i, Vi)}'`), -1);
3914
3911
  }
3915
3912
  function os(e, t, n, r) {
3916
- return rs(e, t, n, "__stats__");
3913
+ const o = n && "string" == typeof n[r] ? n[r] : "", l = n && "string" == typeof n.service ? n.service : "";
3914
+ return sr(`${kt(e)}: ${t} not served by this client, DROPPED: ${r.replace(/_/g, "")} '${Wi(o, Vi)}', service '${Wi(l, Vi)}'`), -1;
3917
3915
  }
3918
3916
  function ls(e, t, n, r) {
3919
- return rs(e, t, n, "__command__");
3917
+ return os(e, t, n, "__stats__");
3918
+ }
3919
+ function is(e, t, n, r) {
3920
+ return os(e, t, n, "__command__");
3920
3921
  }
3921
- var is = {
3922
+ var ss = {
3922
3923
  mt_create: function(e) {
3923
3924
  let t = e.priv;
3924
- t.gobj_timer = _t(Rt(e), "C_TIMER", {}, e), t.ws_seq = 0, t.url = tn(e, "url"), t.remote_yuno_name = tn(e, "remote_yuno_name"), t.remote_yuno_role = tn(e, "remote_yuno_role"), t.remote_yuno_service = tn(e, "remote_yuno_service"), _n(e, "wanted_yuno_name", t.remote_yuno_name), _n(e, "wanted_yuno_role", t.remote_yuno_role), _n(e, "wanted_yuno_service", t.remote_yuno_service);
3925
+ t.gobj_timer = _t(At(e), "C_TIMER", {}, e), t.ws_seq = 0, t.url = tn(e, "url"), t.remote_yuno_name = tn(e, "remote_yuno_name"), t.remote_yuno_role = tn(e, "remote_yuno_role"), t.remote_yuno_service = tn(e, "remote_yuno_service"), _n(e, "wanted_yuno_name", t.remote_yuno_name), _n(e, "wanted_yuno_role", t.remote_yuno_role), _n(e, "wanted_yuno_service", t.remote_yuno_service);
3925
3926
  let n = nn(e, "subscriber");
3926
3927
  n ? kn(e, null, {}, n) : Lt(e) && (n = It(e), kn(e, null, {}, n));
3927
3928
  },
@@ -3948,43 +3949,43 @@ var gobjJs = function(e) {
3948
3949
  code: 1e3,
3949
3950
  reason: "restarted",
3950
3951
  was_clean: !0
3951
- }, e), vi(t.gobj_timer)), t.websocket = Ui(e), 0;
3952
+ }, e), Ei(t.gobj_timer)), t.websocket = Fi(e), 0;
3952
3953
  },
3953
3954
  mt_stop: function(e) {
3954
3955
  let t = e.priv;
3955
- return vi(t.gobj_timer), t.websocket && Fi(e), 0;
3956
+ return Ei(t.gobj_timer), t.websocket && Mi(e), 0;
3956
3957
  },
3957
3958
  mt_destroy: function(e) {},
3958
3959
  mt_stats: function(e, t, n, r) {
3959
3960
  if ("ST_SESSION" !== fn(e)) return ir("Not in session"), null;
3960
3961
  n || (n = {});
3961
- let o = Bi(e, Rt(r), gl(e, n, "service", null, 0)), l = pl(e, n, "__md_stats__", null, Un.KW_EXTRACT);
3962
+ let o = Yi(e, At(r), gl(e, n, "service", null, 0)), l = pl(e, n, "__md_stats__", null, Un.KW_EXTRACT);
3962
3963
  return l || (l = {}), Pl(e, n, "stats_stack", {
3963
3964
  stats: t,
3964
3965
  kw: l
3965
- }), Pl(e, n, Di, o), n.__stats__ = t, Ul(e, n, "__stats__"), Ki(e, "EV_MT_STATS", n, r), null;
3966
+ }), Pl(e, n, ki, o), n.__stats__ = t, Ul(e, n, "__stats__"), Bi(e, "EV_MT_STATS", n, r), null;
3966
3967
  },
3967
3968
  mt_command_parser: function(e, t, n, r) {
3968
3969
  if ("ST_SESSION" !== fn(e)) return ir("Not in session"), null;
3969
3970
  n || (n = {});
3970
- let o = Bi(e, Rt(r), gl(e, n, "service", "", 0)), l = pl(e, n, "__md_command__", null, Un.KW_EXTRACT);
3971
+ let o = Yi(e, At(r), gl(e, n, "service", "", 0)), l = pl(e, n, "__md_command__", null, Un.KW_EXTRACT);
3971
3972
  return l || (l = {}), Pl(e, n, "command_stack", {
3972
3973
  command: t,
3973
3974
  kw: l
3974
- }), Pl(e, n, Di, o), n.__command__ = t, Ul(e, n, "__command__"), Ki(e, "EV_MT_COMMAND", n, r), null;
3975
+ }), Pl(e, n, ki, o), n.__command__ = t, Ul(e, n, "__command__"), Bi(e, "EV_MT_COMMAND", n, r), null;
3975
3976
  },
3976
3977
  mt_inject_event: function(e, t, n, r) {
3977
3978
  if ("ST_SESSION" !== fn(e)) return window.console.error("Not in session"), -1;
3978
- if (n = Do({}, Bo(n) ? n : {}), Bo(n.__md_iev__) && (n.__md_iev__ = Ao(n.__md_iev__)), Ll(e, n, Di));
3979
+ if (n = Do({}, Bo(n) ? n : {}), Bo(n.__md_iev__) && (n.__md_iev__ = Ro(n.__md_iev__)), Ll(e, n, ki));
3979
3980
  else {
3980
- let o = Bi(e, Rt(r), gl(e, n, "__service__", 0, 0));
3981
- Po(n, "__service__"), Pl(e, n, "__message__", t), Pl(e, n, Di, o);
3981
+ let o = Yi(e, At(r), gl(e, n, "__service__", 0, 0));
3982
+ Po(n, "__service__"), Pl(e, n, "__message__", t), Pl(e, n, ki, o);
3982
3983
  }
3983
- return Ul(e, n, "__message__"), Ki(e, t, n, r);
3984
+ return Ul(e, n, "__message__"), Bi(e, t, n, r);
3984
3985
  },
3985
3986
  mt_subscription_added: function(e, t) {
3986
3987
  let n = e.priv;
3987
- return "ST_SESSION" === fn(e) && n.websocket ? n.inside_on_open ? 0 : Ji(e, t) : 0;
3988
+ return "ST_SESSION" === fn(e) && n.websocket ? n.inside_on_open ? 0 : qi(e, t) : 0;
3988
3989
  },
3989
3990
  mt_subscription_deleted: function(e, t) {
3990
3991
  let n = e.priv;
@@ -3993,10 +3994,10 @@ var gobjJs = function(e) {
3993
3994
  if (Zo(t.event)) return 0;
3994
3995
  let r = {}, o = t.__global__, l = t.__config__, i = t.__filter__, s = t.__service__, a = t.subscriber;
3995
3996
  l && (r.__config__ = l), o && (r.__global__ = o), i && (r.__filter__ = i);
3996
- return Pl(e, r, Di, Bi(e, Rt(a), s)), Ul(e, r, "__unsubscribing__"), Ki(e, t.event, r, e);
3997
+ return Pl(e, r, ki, Yi(e, At(a), s)), Ul(e, r, "__unsubscribing__"), Bi(e, t.event, r, e);
3997
3998
  }
3998
3999
  };
3999
- return e.GObj = I, e.SDATA = k, e.SDATAAUTHZ = (e, t, n, r, o, l) => new R(e, t, n, null, l, r, null, 0, null, o, null), e.SDATACM = (e, t, n, r, o, l) => new R(e, t, 0, null, l, n, null, 0, o, r, null), e.SDATACM2 = (e, t, n, r, o, l, i) => new R(e, t, n, null, i, r, null, 0, l, o, null), e.SDATADF = (e, t, n, r, o, l) => new R(e, t, n, null, l, null, r, o), e.SDATAPM = (e, t, n, r, o) => new R(e, t, n, r, o), e.SDATAPM0 = (e, t, n, r, o) => new R(e, t, n, null, o, null, null, 0, null, null, r), e.SDATA_END = D, e.SDataDesc = R, e.YUNETA_VERSION = i, Object.defineProperty(e, "__yuno__", {
4000
+ return e.GObj = I, e.SDATA = k, e.SDATAAUTHZ = (e, t, n, r, o, l) => new A(e, t, n, null, l, r, null, 0, null, o, null), e.SDATACM = (e, t, n, r, o, l) => new A(e, t, 0, null, l, n, null, 0, o, r, null), e.SDATACM2 = (e, t, n, r, o, l, i) => new A(e, t, n, null, i, r, null, 0, l, o, null), e.SDATADF = (e, t, n, r, o, l) => new A(e, t, n, null, l, null, r, o), e.SDATAPM = (e, t, n, r, o) => new A(e, t, n, r, o), e.SDATAPM0 = (e, t, n, r, o) => new A(e, t, n, null, o, null, null, 0, null, null, r), e.SDATA_END = D, e.SDataDesc = A, e.YUNETA_VERSION = i, Object.defineProperty(e, "__yuno__", {
4000
4001
  enumerable: !0,
4001
4002
  get: function() {
4002
4003
  return p;
@@ -4007,7 +4008,7 @@ var gobjJs = function(e) {
4007
4008
  return t;
4008
4009
  }, e.build_stats_response = l, e.clean_name = function(e) {
4009
4010
  return e.replace(/[?# ^:]/g, "_");
4010
- }, e.clear_timeout = vi, e.cmp_two_simple_json = rl, e.command_parameter_from_json = ke, e.command_parameter_from_text = function(e, t) {
4011
+ }, e.clear_timeout = Ei, e.cmp_two_simple_json = rl, e.command_parameter_from_json = ke, e.command_parameter_from_text = function(e, t) {
4011
4012
  const n = De(e, t, !1);
4012
4013
  return void 0 !== n.value || n.refused || (n.refused = je), n;
4013
4014
  }, e.command_parser = function(e, t, n, r) {}, e.createElement2 = function e(t, n) {
@@ -4034,7 +4035,7 @@ var gobjJs = function(e) {
4034
4035
  if (i && "object" == typeof i) for (const e of Object.keys(i)) s.addEventListener(e, i[e]);
4035
4036
  return s;
4036
4037
  }, e.createOneHtml = ql, e.create_json_record = function(e, t) {
4037
- let n = Ao(e);
4038
+ let n = Ro(e);
4038
4039
  return ko(n, t), n;
4039
4040
  }, e.create_template_record = function(e, t) {
4040
4041
  let n = {};
@@ -4045,20 +4046,20 @@ var gobjJs = function(e) {
4045
4046
  Lo(n, e, l);
4046
4047
  }), n;
4047
4048
  }, e.current_timestamp = Hl, e.data_type_t = E, e.db_list_persistent_attrs = function(e, t) {
4048
- let n = wl(ii(e), null, !1), r = {};
4049
+ let n = wl(si(e), null, !1), r = {};
4049
4050
  return n && Bo(n) && (r = El(e, n, t, !1)), r;
4050
4051
  }, e.db_load_persistent_attrs = function(e, t) {
4051
- let n = Xt(e, A.SDF_PERSIST), r = wl(ii(e), null, !1);
4052
+ let n = Xt(e, R.SDF_PERSIST), r = wl(si(e), null, !1);
4052
4053
  if (r && Bo(r)) {
4053
4054
  let o = El(e, r, t, !1);
4054
- o = El(e, o, n, !1), sn(e, o, A.SDF_PERSIST);
4055
+ o = El(e, o, n, !1), sn(e, o, R.SDF_PERSIST);
4055
4056
  }
4056
4057
  }, e.db_remove_persistent_attrs = function(e, t) {
4057
- let n = Tl(e, wl(ii(e), null, !1), t, !1);
4058
- 0 === Vo(n) ? $l(ii(e)) : Nl(ii(e), n);
4058
+ let n = Tl(e, wl(si(e), null, !1), t, !1);
4059
+ 0 === Vo(n) ? $l(si(e)) : Nl(si(e), n);
4059
4060
  }, e.db_save_persistent_attrs = function(e, t) {
4060
- let n = El(e, Xt(e, A.SDF_PERSIST), t, !1), r = wl(ii(e), null, !1);
4061
- return r && Bo(r) && Co(n, r), Nl(ii(e), n);
4061
+ let n = El(e, Xt(e, R.SDF_PERSIST), t, !1), r = wl(si(e), null, !1);
4062
+ return r && Bo(r) && Co(n, r), Nl(si(e), n);
4062
4063
  }, e.debounce = function(e, t = 0, n = !1) {
4063
4064
  let r = null, o = null, l = null;
4064
4065
  const i = (...i) => {
@@ -4084,16 +4085,16 @@ var gobjJs = function(e) {
4084
4085
  if (null === e || "object" != typeof e || Array.isArray(e)) throw new Error("flat2json: a flat json is an object of id -> value");
4085
4086
  let t = null;
4086
4087
  for (const n of Object.keys(e)) {
4087
- const r = oi(n);
4088
+ const r = li(n);
4088
4089
  if (!r || 0 === r.length) throw new Error(`flat2json: malformed flat id: '${n}'`);
4089
- if (r.length > ti) throw new Error(`flat2json: '${n}' deeper than 256`);
4090
+ if (r.length > ni) throw new Error(`flat2json: '${n}' deeper than 256`);
4090
4091
  const o = "number" == typeof r[0];
4091
4092
  if (null === t) t = o ? [] : {};
4092
4093
  else if (o !== Array.isArray(t)) throw new Error(`flat2json: '${n}' does not fit a ${Array.isArray(t) ? "array" : "object"} root`);
4093
4094
  let l = t;
4094
4095
  for (let t = 0; t < r.length; t++) {
4095
4096
  const o = r[t], i = "number" == typeof o, s = t === r.length - 1, a = !s && "number" == typeof r[t + 1];
4096
- if (i && o > ni) throw new Error(`flat2json: array index ${o} over the limit (100000) in '${n}'`);
4097
+ if (i && o > ri) throw new Error(`flat2json: array index ${o} over the limit (100000) in '${n}'`);
4097
4098
  if (i !== Array.isArray(l)) throw new Error(`flat2json: '${n}' uses a ${i ? "array index" : "key"} where the tree already has a ${Array.isArray(l) ? "array" : "object"}`);
4098
4099
  if (s) {
4099
4100
  if (Array.isArray(l)) {
@@ -4133,15 +4134,15 @@ var gobjJs = function(e) {
4133
4134
  removed: {},
4134
4135
  changed: {}
4135
4136
  };
4136
- for (const e of Object.keys(n)) Object.prototype.hasOwnProperty.call(r, e) ? li(n[e], r[e]) || sl(o.changed, e, {
4137
+ for (const e of Object.keys(n)) Object.prototype.hasOwnProperty.call(r, e) ? ii(n[e], r[e]) || sl(o.changed, e, {
4137
4138
  from: n[e],
4138
4139
  to: r[e]
4139
4140
  }) : sl(o.removed, e, n[e]);
4140
4141
  for (const e of Object.keys(r)) Object.prototype.hasOwnProperty.call(n, e) || sl(o.added, e, r[e]);
4141
4142
  return o;
4142
4143
  }, e.flat_key_join = function(e) {
4143
- return Array.isArray(e) && 0 !== e.length ? e.map((e) => "number" == typeof e ? `[${e}]` : ri(e)).join("`") : "";
4144
- }, e.flat_key_split = oi, e.gclass_add_ev_action = He, e.gclass_add_event_type = Qe, e.gclass_add_state = qe, e.gclass_check_fsm = Ze, e.gclass_create = Ke, e.gclass_event_type = Xe, e.gclass_find_by_name = et, e.gclass_flag_t = P, e.gclass_unregister = Be, e.getPositionRelativeToBody = function(e) {
4144
+ return Array.isArray(e) && 0 !== e.length ? e.map((e) => "number" == typeof e ? `[${e}]` : oi(e)).join("`") : "";
4145
+ }, e.flat_key_split = li, e.gclass_add_ev_action = He, e.gclass_add_event_type = Qe, e.gclass_add_state = qe, e.gclass_check_fsm = Ze, e.gclass_create = Ke, e.gclass_event_type = Xe, e.gclass_find_by_name = et, e.gclass_flag_t = P, e.gclass_unregister = Be, e.getPositionRelativeToBody = function(e) {
4145
4146
  if (!e) return {
4146
4147
  top: 0,
4147
4148
  left: 0,
@@ -4160,10 +4161,14 @@ var gobjJs = function(e) {
4160
4161
  right: n + s + r,
4161
4162
  bottom: t + i + o
4162
4163
  };
4163
- }, e.get_function_name = ei, e.get_now = function() {
4164
+ }, e.get_function_name = ti, e.get_now = function() {
4164
4165
  return Math.floor(Date.now() / 1e3);
4165
4166
  }, e.gobj_bottom_gobj = Ft, e.gobj_change_parent = function(e, t) {
4166
- return Ut(e) ? (ir("gobj NULL or DESTROYED"), null) : t instanceof I ? (e.parent && e.parent.gclass.gmt.mt_child_removed && e.parent.gclass.gmt.mt_child_removed(e.parent, e), e.parent && (lt(e.parent, e), e.parent = null), ot(t, e), t.gclass.gmt.mt_child_added && (ee(e) && ar(n("👦👦🔵 child_added(%s): %s", Ct(t), kt(e))), t.gclass.gmt.mt_child_added(t, e)), 0) : (ir(`${kt(e)}: gobj_change_parent() BAD TYPE of parent`), -1);
4167
+ if (Ut(e)) return ir("gobj NULL or DESTROYED"), -1;
4168
+ if (!(t instanceof I)) return ir(`${kt(e)}: gobj_change_parent() BAD TYPE of parent`), -1;
4169
+ if (Ut(t)) return ir(`${kt(e)}: gobj_change_parent() parent NULL or DESTROYED`), -1;
4170
+ for (let n = t; n; n = n.parent) if (n === e) return ir(`${kt(e)}: gobj_change_parent() a gobj cannot be its own ancestor: ${kt(t)}`), -1;
4171
+ return e.parent && e.parent.gclass.gmt.mt_child_removed && e.parent.gclass.gmt.mt_child_removed(e.parent, e), e.parent && (lt(e.parent, e), e.parent = null), ot(t, e), t.gclass.gmt.mt_child_added && (ee(e) && ar(n("👦👦🔵 child_added(%s): %s", Ct(t), kt(e))), t.gclass.gmt.mt_child_added(t, e)), 0;
4167
4172
  }, e.gobj_change_state = cn, e.gobj_command = function(e, t, r, l) {
4168
4173
  if (Ut(e)) return ir("gobj NULL or DESTROYED"), -1;
4169
4174
  if (function(e) {
@@ -4232,7 +4237,7 @@ var gobjJs = function(e) {
4232
4237
  Jt(l, t) && n.push(l), e(n, l);
4233
4238
  }
4234
4239
  }(n, e), n;
4235
- }, e.gobj_match_gobj = Jt, e.gobj_name = Rt, e.gobj_parent = It, e.gobj_pause = Et, e.gobj_play = vt, e.gobj_post_event = hn, e.gobj_posted_events_size = function() {
4240
+ }, e.gobj_match_gobj = Jt, e.gobj_name = At, e.gobj_parent = It, e.gobj_pause = Et, e.gobj_play = vt, e.gobj_post_event = hn, e.gobj_posted_events_size = function() {
4236
4241
  return pn.length;
4237
4242
  }, e.gobj_publish_event = Ln, e.gobj_read_attr = Qt, e.gobj_read_attrs = Xt, e.gobj_read_bool_attr = Zt, e.gobj_read_integer_attr = en, e.gobj_read_pointer_attr = nn, e.gobj_read_str_attr = tn, e.gobj_remove_persistent_attrs = function(e, t) {
4238
4243
  return Ot(e) ? u ? u(e, t) : -1 : (ir(`${kt(e)}: Only gobj services can load/save writable-persistent`), -1);
@@ -4252,7 +4257,7 @@ var gobjJs = function(e) {
4252
4257
  l.name && (n && l.flag & n || (-1 === t || l.flag & t) && (he(e, e.jn_attrs, l), Bo(e.priv) && Object.prototype.hasOwnProperty.call(e.priv, l.name) && (e.priv[l.name] = e.jn_attrs[l.name]), e.gclass.gmt.mt_writing && e.gclass.gmt.mt_writing(e, l.name)));
4253
4258
  }
4254
4259
  return 0;
4255
- }(e, A.SDF_VOLATIL, 0);
4260
+ }(e, R.SDF_VOLATIL, 0);
4256
4261
  }, e.gobj_save_persistent_attrs = it, e.gobj_search_path = Ht, e.gobj_send_event = jn, e.gobj_services = function() {
4257
4262
  let e = [];
4258
4263
  for (const t of Object.keys(b)) Mo(e, t);
@@ -4301,13 +4306,13 @@ var gobjJs = function(e) {
4301
4306
  o.has(n) || ir(`${kt(e)}: key ignored in subscription (key: ${n}, event: ${t})`);
4302
4307
  }), Zo(t)) t = "";
4303
4308
  else if (!(bn(e, t, F.EVF_OUTPUT_EVENT) || e.gclass.gclass_flag & P.gcflag_no_check_output_events)) return ir(`event NOT in output event list: ${kt(e)}, ev ${t}`), 0;
4304
- let l = Nn(n, t), i = An(e.dl_subscriptions, e, t, l.renamed_event, l.kw, r), s = 0, a = 0, u = 0;
4309
+ let l = Nn(n, t), i = Rn(e.dl_subscriptions, e, t, l.renamed_event, l.kw, r), s = 0, a = 0, u = 0;
4305
4310
  for (let t = 0; t < i.length; t++) {
4306
4311
  let n = i[t], r = Dn(e, n, !1, !1);
4307
4312
  0 === r ? s++ : r < 0 ? a++ : u++;
4308
4313
  }
4309
4314
  return a ? sr(`${kt(e)}: Hard subscription not removed, only gobj_unsubscribe_list() with force removes it (event: ${t}, hard: ${a})`) : s || u || (sr(`${kt(e)}: No subscription found`), $o(n, "No subscription found")), 0;
4310
- }, e.gobj_unsubscribe_list = Cn, e.gobj_walk_gobj_children = Vt, e.gobj_walk_gobj_children_tree = Wt, e.gobj_write_attr = rn, e.gobj_write_attrs = sn, e.gobj_write_bool_attr = an, e.gobj_write_integer_attr = un, e.gobj_write_str_attr = _n, e.gobj_yuno = wt, e.gobj_yuno_id = At, e.gobj_yuno_name = Nt, e.gobj_yuno_role = $t, e.html_markup = function(e) {
4315
+ }, e.gobj_unsubscribe_list = Cn, e.gobj_walk_gobj_children = Vt, e.gobj_walk_gobj_children_tree = Wt, e.gobj_write_attr = rn, e.gobj_write_attrs = sn, e.gobj_write_bool_attr = an, e.gobj_write_integer_attr = un, e.gobj_write_str_attr = _n, e.gobj_yuno = wt, e.gobj_yuno_id = Rt, e.gobj_yuno_name = Nt, e.gobj_yuno_role = $t, e.html_markup = function(e) {
4311
4316
  return "string" != typeof e ? (ir("html_markup: not a string, type " + typeof e), new xl("")) : new xl(e);
4312
4317
  }, e.id_index_in_obj_list = Dl, e.index_in_list = zl, e.is_array = Yo, e.is_boolean = Ho, e.is_date = function(e) {
4313
4318
  return e instanceof Date && !isNaN(e);
@@ -4350,12 +4355,12 @@ var gobjJs = function(e) {
4350
4355
  if (!n) return ir("jdb topics section not found"), ur(e), null;
4351
4356
  return pl(null, n, t, null, 0) || (ir("jdb topic not found: " + t), ur(n), null);
4352
4357
  }, e.jdb_init = function(e, t, n) {
4353
- n && (e = Ao(e));
4358
+ n && (e = Ro(e));
4354
4359
  let r = pl(null, e, "type", [], Un.KW_CREATE);
4355
4360
  gl(null, e, "hook", "data", Un.KW_CREATE);
4356
4361
  let o = pl(null, e, "schema", {}, Un.KW_CREATE), l = pl(null, e, "topics", {}, Un.KW_CREATE);
4357
4362
  return Ml(o, function(e, t, n, o) {
4358
- "__" === t.substring(0, 2) || Bo(n) || pl(null, l, o, Ao(r), Un.KW_CREATE);
4363
+ "__" === t.substring(0, 2) || Bo(n) || pl(null, l, o, Ro(r), Un.KW_CREATE);
4359
4364
  }, t), e;
4360
4365
  }, e.jdb_update = function(e, t, n, r) {
4361
4366
  let o = pl(null, pl(null, e, "topics", null, 0), t, null, 0);
@@ -4376,7 +4381,7 @@ var gobjJs = function(e) {
4376
4381
  return u ? Do(u, r) : i.push(r), o;
4377
4382
  }, e.json2flat = function(e) {
4378
4383
  const t = {}, n = (e, r, o) => {
4379
- if (o > ti) throw new Error("json2flat: deeper than 256");
4384
+ if (o > ni) throw new Error("json2flat: deeper than 256");
4380
4385
  if (null === e || "object" != typeof e || Array.isArray(e)) {
4381
4386
  if (Array.isArray(e) && e.length > 0) return void e.forEach((e, t) => {
4382
4387
  const l = `[${t}]`;
@@ -4386,7 +4391,7 @@ var gobjJs = function(e) {
4386
4391
  const t = Object.keys(e);
4387
4392
  if (t.length > 0) {
4388
4393
  for (const l of t) {
4389
- const t = ri(l);
4394
+ const t = oi(l);
4390
4395
  n(e[l], 0 === o ? t : r + "`" + t, o + 1);
4391
4396
  }
4392
4397
  return;
@@ -4397,7 +4402,7 @@ var gobjJs = function(e) {
4397
4402
  return null == e || n(e, "", 0), t;
4398
4403
  }, e.json_array_append = Fo, e.json_array_append_new = Mo, e.json_array_extend = function(e, t) {
4399
4404
  return t ? (Array.prototype.push.apply(e, t), e) : e;
4400
- }, e.json_array_remove = Go, e.json_array_size = Wo, e.json_deep_copy = Ao, e.json_is_identical = Ro, e.json_mask_secrets = No, e.json_object_del = Po, e.json_object_get = Io, e.json_object_set = Lo, e.json_object_set_new = Uo, e.json_object_size = Vo, e.json_object_update = Do, e.json_object_update_existing = ko, e.json_object_update_missing = Co, e.json_size = xo, e.json_text_of = Fe, e.jwt2json = function(e, t) {
4405
+ }, e.json_array_remove = Go, e.json_array_size = Wo, e.json_deep_copy = Ro, e.json_is_identical = Ao, e.json_mask_secrets = No, e.json_object_del = Po, e.json_object_get = Io, e.json_object_set = Lo, e.json_object_set_new = Uo, e.json_object_size = Vo, e.json_object_update = Do, e.json_object_update_existing = ko, e.json_object_update_missing = Co, e.json_size = xo, e.json_text_of = Fe, e.jwt2json = function(e, t) {
4401
4406
  try {
4402
4407
  let n = Vl(e);
4403
4408
  switch (t) {
@@ -4423,7 +4428,7 @@ var gobjJs = function(e) {
4423
4428
  return o;
4424
4429
  }, e.kw_delete = _l, e.kw_find_json_in_list = function(e, t, n, r) {
4425
4430
  if (!n || !Yo(t)) return r && ir("item NULL or kw_list is not a list"), -1;
4426
- for (let e = 0; e < t.length; e++) if (Ro(n, t[e])) return e;
4431
+ for (let e = 0; e < t.length; e++) if (Ao(n, t[e])) return e;
4427
4432
  return r && ir("item not found in this list"), -1;
4428
4433
  }, e.kw_find_path = ul, e.kw_flag_t = Un, e.kw_get_bool = cl, e.kw_get_dict = bl, e.kw_get_dict_value = pl, e.kw_get_int = fl, e.kw_get_list = function(e, t, n, r, o) {
4429
4434
  e && !Xo(e) && ir("GObj bad instanceof");
@@ -4459,16 +4464,16 @@ var gobjJs = function(e) {
4459
4464
  let o = [];
4460
4465
  if (Yo(t)) for (let e = 0; e < t.length; e++) {
4461
4466
  let l = t[e];
4462
- r(l, n) && o.push(Ao(l));
4467
+ r(l, n) && o.push(Ro(l));
4463
4468
  }
4464
4469
  else {
4465
4470
  if (!Bo(t)) return ir("kw_select() BAD kw parameter"), null;
4466
- r(t, n) && o.push(Ao(t));
4471
+ r(t, n) && o.push(Ro(t));
4467
4472
  }
4468
4473
  return o;
4469
- }, e.kw_set_dict_value = ml, e.kw_set_local_storage_value = Nl, e.kw_set_subdict_value = hl, e.kwid_collect = Rl, e.kwid_find_one_record = function(e, t, n, r, o) {
4474
+ }, e.kw_set_dict_value = ml, e.kw_set_local_storage_value = Nl, e.kw_set_subdict_value = hl, e.kwid_collect = Al, e.kwid_find_one_record = function(e, t, n, r, o) {
4470
4475
  e && !Xo(e) && ir("GObj bad instanceof");
4471
- let l = Rl(e, t, n, r, o);
4476
+ let l = Al(e, t, n, r, o);
4472
4477
  return l && 0 !== l.length ? l[0] : null;
4473
4478
  }, e.kwid_get_ids = function(e, t) {
4474
4479
  if (e && !Xo(e) && ir("GObj bad instanceof"), !t) return [];
@@ -4483,7 +4488,7 @@ var gobjJs = function(e) {
4483
4488
  }
4484
4489
  });
4485
4490
  return n;
4486
- }, e.kwid_match_id = Al, e.kwid_new_dict = function(e, t, n) {
4491
+ }, e.kwid_match_id = Rl, e.kwid_new_dict = function(e, t, n) {
4487
4492
  e && !Xo(e) && ir("GObj bad instanceof");
4488
4493
  let r = {};
4489
4494
  if (Zo(n) || (t = ul(e, t, n)), Bo(t)) r = t;
@@ -4554,7 +4559,7 @@ var gobjJs = function(e) {
4554
4559
  }, e.log_debug = ar, e.log_error = ir, e.log_info = function(e, ...t) {
4555
4560
  let n = nr(e, ...t), r = Hl();
4556
4561
  Vn && qn("info", n) && rr(Vn, "%c" + r + " INFO: " + String(n), "color:cyan"), zn("info", n, r);
4557
- }, e.log_warning = sr, e.mask_secrets_inline = To, e.msg_iev_get_msg_type = Fl, e.msg_iev_get_stack = Ll, e.msg_iev_push_stack = Pl, e.msg_iev_read_key = Cl, e.msg_iev_set_msg_type = Ul, e.msg_iev_write_key = Il, e.node_uuid = Zl, e.parseBoolean = el, e.parseSVG = function(e) {
4562
+ }, e.log_warning = sr, e.mask_secrets_inline = To, e.msg_iev_get_msg_type = Fl, e.msg_iev_get_stack = Ll, e.msg_iev_push_stack = Pl, e.msg_iev_read_key = Cl, e.msg_iev_set_msg_type = Ul, e.msg_iev_write_key = Il, e.node_uuid = ei, e.parseBoolean = el, e.parseSVG = function(e) {
4558
4563
  return new DOMParser().parseFromString(e, "image/svg+xml").firstChild;
4559
4564
  }, e.refresh_language = function(e, t) {
4560
4565
  if (!Qo(t)) return void ir("You must supply a translation function");
@@ -4581,22 +4586,22 @@ var gobjJs = function(e) {
4581
4586
  });
4582
4587
  }, e.register_c_ievent_cli = function() {
4583
4588
  return function(e) {
4584
- if (Li) return ir(`GClass ALREADY created: ${e}`), -1;
4589
+ if (Ui) return ir(`GClass ALREADY created: ${e}`), -1;
4585
4590
  const t = [
4586
4591
  ["ST_DISCONNECTED", [
4587
4592
  [
4588
4593
  "EV_ON_OPEN",
4589
- Hi,
4594
+ zi,
4590
4595
  "ST_WAIT_IDENTITY_CARD_ACK"
4591
4596
  ],
4592
4597
  [
4593
4598
  "EV_ON_CLOSE",
4594
- zi,
4599
+ Qi,
4595
4600
  null
4596
4601
  ],
4597
4602
  [
4598
4603
  "EV_TIMEOUT",
4599
- qi,
4604
+ Hi,
4600
4605
  null
4601
4606
  ],
4602
4607
  [
@@ -4608,22 +4613,22 @@ var gobjJs = function(e) {
4608
4613
  ["ST_WAIT_IDENTITY_CARD_ACK", [
4609
4614
  [
4610
4615
  "EV_ON_MESSAGE",
4611
- ns,
4616
+ rs,
4612
4617
  null
4613
4618
  ],
4614
4619
  [
4615
4620
  "EV_IDENTITY_CARD_ACK",
4616
- ts,
4621
+ ns,
4617
4622
  null
4618
4623
  ],
4619
4624
  [
4620
4625
  "EV_ON_CLOSE",
4621
- zi,
4626
+ Qi,
4622
4627
  "ST_DISCONNECTED"
4623
4628
  ],
4624
4629
  [
4625
4630
  "EV_TIMEOUT",
4626
- es,
4631
+ ts,
4627
4632
  null
4628
4633
  ],
4629
4634
  [
@@ -4635,22 +4640,22 @@ var gobjJs = function(e) {
4635
4640
  ["ST_SESSION", [
4636
4641
  [
4637
4642
  "EV_ON_MESSAGE",
4638
- ns,
4643
+ rs,
4639
4644
  null
4640
4645
  ],
4641
4646
  [
4642
4647
  "EV_MT_STATS",
4643
- os,
4648
+ ls,
4644
4649
  null
4645
4650
  ],
4646
4651
  [
4647
4652
  "EV_MT_COMMAND",
4648
- ls,
4653
+ is,
4649
4654
  null
4650
4655
  ],
4651
4656
  [
4652
4657
  "EV_ON_CLOSE",
4653
- zi,
4658
+ Qi,
4654
4659
  "ST_DISCONNECTED"
4655
4660
  ],
4656
4661
  [
@@ -4661,7 +4666,7 @@ var gobjJs = function(e) {
4661
4666
  ]],
4662
4667
  [null, null]
4663
4668
  ];
4664
- return (Li = Ke(e, [
4669
+ return (Ui = Ke(e, [
4665
4670
  ["EV_ON_MESSAGE", F.EVF_OUTPUT_EVENT],
4666
4671
  ["EV_IDENTITY_CARD_ACK", F.EVF_PUBLIC_EVENT],
4667
4672
  ["EV_ON_ID_NAK", F.EVF_OUTPUT_EVENT],
@@ -4672,37 +4677,37 @@ var gobjJs = function(e) {
4672
4677
  ["EV_ON_OPEN_ERROR", F.EVF_OUTPUT_EVENT | F.EVF_NO_WARN_SUBS],
4673
4678
  ["EV_TIMEOUT", 0],
4674
4679
  [null, 0]
4675
- ], t, is, 0, ki, Pi, 0, 0, Ci, P.gcflag_no_check_output_events)) ? 0 : -1;
4680
+ ], t, ss, 0, Ci, Li, 0, 0, Ii, P.gcflag_no_check_output_events)) ? 0 : -1;
4676
4681
  }("C_IEVENT_CLI");
4677
4682
  }, e.register_c_timer = function() {
4678
4683
  return function(e) {
4679
- if (di) return ir(`GClass ALREADY created: ${e}`), -1;
4684
+ if (bi) return ir(`GClass ALREADY created: ${e}`), -1;
4680
4685
  const t = [["ST_IDLE", [[
4681
4686
  "EV_TIMEOUT",
4682
- bi,
4687
+ pi,
4683
4688
  null
4684
4689
  ]]]];
4685
- return (di = Ke(e, [
4690
+ return (bi = Ke(e, [
4686
4691
  ["EV_TIMEOUT", F.EVF_OUTPUT_EVENT],
4687
4692
  ["EV_TIMEOUT_PERIODIC", F.EVF_OUTPUT_EVENT],
4688
4693
  [0, 0]
4689
- ], t, pi, 0, fi, gi, 0, 0, 0, P.gcflag_manual_start)) ? 0 : -1;
4694
+ ], t, mi, 0, gi, di, 0, 0, 0, P.gcflag_manual_start)) ? 0 : -1;
4690
4695
  }("C_TIMER");
4691
4696
  }, e.register_c_yuno = function() {
4692
4697
  return function(e) {
4693
- if (ji) return ir(`GClass ALREADY created: ${e}`), -1;
4698
+ if (Oi) return ir(`GClass ALREADY created: ${e}`), -1;
4694
4699
  const t = [["ST_IDLE", [[
4695
4700
  "EV_TIMEOUT_PERIODIC",
4696
4701
  Ai,
4697
4702
  null
4698
4703
  ]]]];
4699
- return (ji = Ke(e, [["EV_TIMEOUT_PERIODIC", F.EVF_OUTPUT_EVENT | F.EVF_NO_WARN_SUBS], [0, 0]], t, Ri, 0, Ei, Ti, 0, 0, 0, 0)) ? 0 : -1;
4704
+ return (Oi = Ke(e, [["EV_TIMEOUT_PERIODIC", F.EVF_OUTPUT_EVENT | F.EVF_NO_WARN_SUBS], [0, 0]], t, Di, 0, Ti, ji, 0, 0, 0, 0)) ? 0 : -1;
4700
4705
  }("C_YUNO");
4701
4706
  }, e.safeSrc = function(e) {
4702
4707
  if (!e) return "";
4703
4708
  const t = String(e).trim();
4704
4709
  return /^javascript:/i.test(t) || /^data:/i.test(t) ? "" : Wl(t);
4705
- }, e.sdata_flag_t = A, e.send_http_json_post = function(e, t, n) {
4710
+ }, e.sdata_flag_t = R, e.send_http_json_post = function(e, t, n) {
4706
4711
  let r = new XMLHttpRequest();
4707
4712
  r.open("POST", e), r.setRequestHeader("Accept", "application/json"), r.setRequestHeader("Content-Type", "application/json"), r.onreadystatechange = function() {
4708
4713
  4 === r.readyState && n(r.status, r.responseText);
@@ -4726,7 +4731,7 @@ var gobjJs = function(e) {
4726
4731
  } else xn = e;
4727
4732
  }, e.set_remote_log_functions = Xn, e.set_strings_are_text = function(e) {
4728
4733
  Yl = !!e;
4729
- }, e.set_timeout = hi, e.set_timeout_periodic = yi, e.sprintf = n, e.stats_parser = function(e, t, n, r) {}, e.str_in_list = kl, e.strcasecmp = nl, e.strcmp = tl, e.strings_are_text = function() {
4734
+ }, e.set_timeout = yi, e.set_timeout_periodic = vi, e.sprintf = n, e.stats_parser = function(e, t, n, r) {}, e.str_in_list = kl, e.strcasecmp = nl, e.strcmp = tl, e.strings_are_text = function() {
4730
4735
  return Yl;
4731
4736
  }, e.strncmp = function(e, t, n) {
4732
4737
  var r = (e + "").substring(0, n), o = (t + "").substring(0, n);
@@ -4757,9 +4762,9 @@ var gobjJs = function(e) {
4757
4762
  let e = t.split(".");
4758
4763
  for (let t = 0; t < e.length; t++) {
4759
4764
  let r = e[t];
4760
- if (kl(ai, r)) n.real_type || (n.real_type = r);
4761
- else if (kl(_i, r)) n.type || (n.type = r);
4762
- else if (kl(ui, r)) switch (r) {
4765
+ if (kl(ui, r)) n.real_type || (n.real_type = r);
4766
+ else if (kl(ci, r)) n.type || (n.type = r);
4767
+ else if (kl(_i, r)) switch (r) {
4763
4768
  case "writable":
4764
4769
  n.is_writable = !0;
4765
4770
  break;
@@ -4771,7 +4776,7 @@ var gobjJs = function(e) {
4771
4776
  }
4772
4777
  }
4773
4778
  n.real_type || (n.real_type = "string");
4774
- } else Bo(t) ? (n = ci(t), n.name || (n.name = e), n.header || (n.header = e)) : Yo(t) && (n.real_type = "array", n.enum_list = t);
4779
+ } else Bo(t) ? (n = fi(t), n.name || (n.name = e), n.header || (n.header = e)) : Yo(t) && (n.real_type = "array", n.enum_list = t);
4775
4780
  return n.type || (n.type = n.real_type), n;
4776
4781
  }, e.timeTracker = function(e = "Time Tracker", t = !1) {
4777
4782
  const n = e, r = performance.now();
@@ -4783,7 +4788,7 @@ var gobjJs = function(e) {
4783
4788
  total: a
4784
4789
  };
4785
4790
  } };
4786
- }, e.trace_json = _r, e.trace_json_masked = $o, e.trace_level_t = B, e.trace_msg = ur, e.treedb_decoder_fkey = si, e.treedb_decoder_hook = function(e, t) {
4791
+ }, e.trace_json = _r, e.trace_json_masked = $o, e.trace_level_t = B, e.trace_msg = ur, e.treedb_decoder_fkey = ai, e.treedb_decoder_hook = function(e, t) {
4787
4792
  if (Jo(t)) {
4788
4793
  if (-1 === t.indexOf("^")) {
4789
4794
  let n, r = e.hook;
@@ -4810,9 +4815,9 @@ var gobjJs = function(e) {
4810
4815
  id: t.id
4811
4816
  } : (ir("bad hook 3"), ir(e), ir(t), null);
4812
4817
  }, e.treedb_encoder_fkey = function(e, t) {
4813
- let n = si(e, t);
4818
+ let n = ai(e, t);
4814
4819
  return n ? n.topic_name + "^" + n.id + "^" + n.hook_name : null;
4815
- }, e.treedb_get_field_desc = ci, e.treedb_hook_data_size = function(e) {
4820
+ }, e.treedb_get_field_desc = fi, e.treedb_hook_data_size = function(e) {
4816
4821
  if (Yo(e) && 1 === xo(e)) {
4817
4822
  let t = e[0];
4818
4823
  return ll(t, "size") ? t.size : 1;