u8-mqtt 0.6.1 → 0.6.3

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.
Files changed (106) hide show
  1. package/cjs/basic-v4.cjs +194 -243
  2. package/cjs/basic-v4.cjs.map +1 -1
  3. package/cjs/basic-v5.cjs +264 -385
  4. package/cjs/basic-v5.cjs.map +1 -1
  5. package/cjs/full-v4.cjs +297 -353
  6. package/cjs/full-v4.cjs.map +1 -1
  7. package/cjs/full-v5.cjs +366 -492
  8. package/cjs/full-v5.cjs.map +1 -1
  9. package/cjs/index.cjs +263 -384
  10. package/cjs/index.cjs.map +1 -1
  11. package/cjs/v4.cjs +194 -243
  12. package/cjs/v4.cjs.map +1 -1
  13. package/cjs/v5.cjs +263 -384
  14. package/cjs/v5.cjs.map +1 -1
  15. package/esm/basic-v4.js +194 -243
  16. package/esm/basic-v4.js.map +1 -1
  17. package/esm/basic-v5.js +264 -385
  18. package/esm/basic-v5.js.map +1 -1
  19. package/esm/deno/basic-v4.js +194 -243
  20. package/esm/deno/basic-v4.js.map +1 -1
  21. package/esm/deno/basic-v5.js +264 -385
  22. package/esm/deno/basic-v5.js.map +1 -1
  23. package/esm/deno/full-v4.js +297 -353
  24. package/esm/deno/full-v4.js.map +1 -1
  25. package/esm/deno/full-v5.js +366 -492
  26. package/esm/deno/full-v5.js.map +1 -1
  27. package/esm/deno/index.js +263 -384
  28. package/esm/deno/index.js.map +1 -1
  29. package/esm/deno/v4.js +194 -243
  30. package/esm/deno/v4.js.map +1 -1
  31. package/esm/deno/v5.js +263 -384
  32. package/esm/deno/v5.js.map +1 -1
  33. package/esm/full-v4.js +297 -353
  34. package/esm/full-v4.js.map +1 -1
  35. package/esm/full-v5.js +366 -492
  36. package/esm/full-v5.js.map +1 -1
  37. package/esm/index.js +263 -384
  38. package/esm/index.js.map +1 -1
  39. package/esm/node/basic-v4.js +194 -243
  40. package/esm/node/basic-v4.js.map +1 -1
  41. package/esm/node/basic-v4.mjs +194 -243
  42. package/esm/node/basic-v4.mjs.map +1 -1
  43. package/esm/node/basic-v5.js +264 -385
  44. package/esm/node/basic-v5.js.map +1 -1
  45. package/esm/node/basic-v5.mjs +264 -385
  46. package/esm/node/basic-v5.mjs.map +1 -1
  47. package/esm/node/full-v4.js +297 -353
  48. package/esm/node/full-v4.js.map +1 -1
  49. package/esm/node/full-v4.mjs +297 -353
  50. package/esm/node/full-v4.mjs.map +1 -1
  51. package/esm/node/full-v5.js +366 -492
  52. package/esm/node/full-v5.js.map +1 -1
  53. package/esm/node/full-v5.mjs +366 -492
  54. package/esm/node/full-v5.mjs.map +1 -1
  55. package/esm/node/index.js +263 -384
  56. package/esm/node/index.js.map +1 -1
  57. package/esm/node/index.mjs +263 -384
  58. package/esm/node/index.mjs.map +1 -1
  59. package/esm/node/v4.js +194 -243
  60. package/esm/node/v4.js.map +1 -1
  61. package/esm/node/v4.mjs +194 -243
  62. package/esm/node/v4.mjs.map +1 -1
  63. package/esm/node/v5.js +263 -384
  64. package/esm/node/v5.js.map +1 -1
  65. package/esm/node/v5.mjs +263 -384
  66. package/esm/node/v5.mjs.map +1 -1
  67. package/esm/v4.js +194 -243
  68. package/esm/v4.js.map +1 -1
  69. package/esm/v5.js +263 -384
  70. package/esm/v5.js.map +1 -1
  71. package/esm/web/basic-v4.js +194 -243
  72. package/esm/web/basic-v4.js.map +1 -1
  73. package/esm/web/basic-v4.min.js +1 -1
  74. package/esm/web/basic-v4.min.js.br +0 -0
  75. package/esm/web/basic-v4.min.js.gz +0 -0
  76. package/esm/web/basic-v5.js +264 -385
  77. package/esm/web/basic-v5.js.map +1 -1
  78. package/esm/web/basic-v5.min.js +1 -1
  79. package/esm/web/basic-v5.min.js.br +0 -0
  80. package/esm/web/basic-v5.min.js.gz +0 -0
  81. package/esm/web/full-v4.js +297 -353
  82. package/esm/web/full-v4.js.map +1 -1
  83. package/esm/web/full-v4.min.js +1 -1
  84. package/esm/web/full-v4.min.js.br +0 -0
  85. package/esm/web/full-v4.min.js.gz +0 -0
  86. package/esm/web/full-v5.js +366 -492
  87. package/esm/web/full-v5.js.map +1 -1
  88. package/esm/web/full-v5.min.js +1 -1
  89. package/esm/web/full-v5.min.js.br +0 -0
  90. package/esm/web/full-v5.min.js.gz +0 -0
  91. package/esm/web/index.js +263 -384
  92. package/esm/web/index.js.map +1 -1
  93. package/esm/web/index.min.js +1 -1
  94. package/esm/web/index.min.js.br +0 -0
  95. package/esm/web/index.min.js.gz +0 -0
  96. package/esm/web/v4.js +194 -243
  97. package/esm/web/v4.js.map +1 -1
  98. package/esm/web/v4.min.js +1 -1
  99. package/esm/web/v4.min.js.br +0 -0
  100. package/esm/web/v4.min.js.gz +0 -0
  101. package/esm/web/v5.js +263 -384
  102. package/esm/web/v5.js.map +1 -1
  103. package/esm/web/v5.min.js +1 -1
  104. package/esm/web/v5.min.js.br +0 -0
  105. package/esm/web/v5.min.js.gz +0 -0
  106. package/package.json +2 -2
package/esm/web/v5.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"v5.js","sources":["../../node_modules/u8-mqtt-packet/esm/codec_v5_client.js","../../node_modules/regexparam/dist/index.mjs","../../code/_utils.jsy","../../code/with_topic_router.jsy","../../code/router_path.jsy","../../node_modules/u8-mqtt-packet/esm/codec_bind.js","../../code/_cmdid_dispatch.jsy","../../code/_dispatch.jsy","../../code/base.jsy","../../code/_conn.jsy","../../code/core.jsy","../../code/v5.js"],"sourcesContent":["function encode_varint(n, a=[]) {\n do {\n const ni = n & 0x7f;\n n >>>= 7;\n a.push( ni | (0===n ? 0 : 0x80) );\n } while (n > 0)\n return a\n}\n\n\n/*\nexport function decode_varint_loop(u8, i=0) {\n let i0 = i\n let shift = 0, n = (u8[i] & 0x7f)\n while ( 0x80 & u8[i++] )\n n |= (u8[i] & 0x7f) << (shift += 7)\n\n return [n, i, i0]\n}\n*/\n\n\nfunction decode_varint(u8, i=0) {\n let i0 = i;\n // unrolled for a max of 4 chains\n let n = (u8[i] & 0x7f) << 0;\n if ( 0x80 & u8[i++] ) {\n n |= (u8[i] & 0x7f) << 7;\n if ( 0x80 & u8[i++] ) {\n n |= (u8[i] & 0x7f) << 14;\n if ( 0x80 & u8[i++] ) {\n n |= (u8[i] & 0x7f) << 21;\n }\n }\n }\n return [n, i, i0]\n}\n\nconst mqtt_props = /* #__PURE__ */\n init_mqtt_props();\n\nfunction init_mqtt_props() {\n let mqtt_props = new Map();\n\n let entries = [\n [ 0x01, 'u8', 'payload_format_indicator'],\n [ 0x02, 'u32', 'message_expiry_interval'],\n [ 0x03, 'utf8', 'content_type'],\n [ 0x08, 'utf8', 'response_topic'],\n [ 0x09, 'bin', 'correlation_data'],\n [ 0x0B, 'vint', 'subscription_identifier'],\n [ 0x11, 'u32', 'session_expiry_interval'],\n [ 0x12, 'utf8', 'assigned_client_identifier'],\n [ 0x13, 'u16', 'server_keep_alive'],\n [ 0x15, 'utf8', 'authentication_method'],\n [ 0x16, 'bin', 'authentication_data'],\n [ 0x17, 'u8', 'request_problem_information'],\n [ 0x18, 'u32', 'will_delay_interval'],\n [ 0x19, 'u8', 'request_response_information'],\n [ 0x1A, 'utf8', 'response_information'],\n [ 0x1C, 'utf8', 'server_reference'],\n [ 0x1F, 'utf8', 'reason_string'],\n [ 0x21, 'u16', 'receive_maximum'],\n [ 0x22, 'u16', 'topic_alias_maximum'],\n [ 0x23, 'u16', 'topic_alias'],\n [ 0x24, 'u8', 'maximum_qos'],\n [ 0x25, 'u8', 'retain_available'],\n [ 0x26, 'pair', 'user_properties', {op: 'kv_obj'}],\n [ 0x27, 'u32', 'maximum_packet_size'],\n [ 0x28, 'u8', 'wildcard_subscription_available'],\n [ 0x29, 'u8', 'subscription_identifiers_available', {op: 'u8_vec'}],\n [ 0x2A, 'u8', 'shared_subscription_available'],\n ];\n\n for (let [id, type, name, extra] of entries) {\n let prop_obj = {id, type, name, ...extra};\n mqtt_props.set(prop_obj.id, prop_obj);\n mqtt_props.set(prop_obj.name, prop_obj);\n }\n\n return mqtt_props\n}\n\nclass U8_Reason extends Number {\n static of(v, pkt_kind, by_kind) {\n let self = new this(v);\n self.reason = by_kind?.[pkt_kind]?.get(v) || pkt_kind;\n return self\n }\n}\n\nclass mqtt_reader_v4 {\n static of(buf) { return this.prototype.of(buf) }\n of(buf) {\n let step = (width, k) => (k=0|step.k, step.k=k+width, k);\n return {__proto__: this, buf, step}\n }\n\n has_more() {\n return this.buf.byteLength > (this.step.k|0)\n }\n\n u8() {\n return this.buf[this.step(1)]\n }\n\n u16() {\n let {buf, step} = this, i = step(2);\n return (buf[i]<<8) | buf[i+1]\n }\n\n u32() {\n let {buf, step} = this, i = step(4);\n return (buf[i]<<24) | (buf[i+1]<<16) | (buf[i+2]<<8) | buf[i+3]\n }\n\n vint() {\n let {buf, step} = this;\n let [n, vi, vi0] = decode_varint(buf, step.k|0);\n step(vi - vi0);\n return n\n }\n\n bin() {\n let {buf, step} = this, i = step(2);\n let len = (buf[i]<<8) | buf[i+1];\n i = step(len);\n return buf.subarray(i, i+len)\n }\n\n utf8() { return new TextDecoder('utf-8').decode(this.bin()) }\n pair() { return [ this.utf8(), this.utf8() ] }\n\n flags(FlagsType) { return new FlagsType(this.buf[this.step(1)]) }\n\n reason(pkt_kind) {\n let v = this.buf[this.step(1)];\n if (null != v)\n return U8_Reason.of(v, pkt_kind, this._reasons_by)\n }\n\n flush() {\n let {buf, step} = this;\n this.step = this.buf = null;\n return buf.subarray(step.k|0)\n }\n\n}\n\nlet mqtt_reader_v5$1 = class mqtt_reader_v5 extends mqtt_reader_v4 {\n props() {\n let {buf, step} = this;\n let [n, vi, vi0] = decode_varint(buf, step.k|0);\n step(n + vi - vi0);\n if (0 === n) return null\n\n let res={}, fork = this.of(buf.subarray(vi, step.k|0));\n while (fork.has_more()) {\n let v, pk = fork.u8(), pt = mqtt_props.get( pk );\n\n if (!pt) {\n res.error = `Unknown mqtt_prop enum ${pk}`;\n return res\n }\n\n v = fork[pt.type]();\n if (pt.op) // accumulate operation\n v = fork[pt.op](res[pt.name], v);\n\n res[pt.name] = v;\n }\n return res\n }\n\n kv_obj(obj=Object.create(null), [k,v]) {\n obj[k] = v;\n return obj\n }\n u8_vec(vec=[], u8) {\n vec.push(u8);\n return vec\n }\n\n /*\n vbuf() {\n let {buf, step} = this\n let [n, vi, vi0] = decode_varint(buf, step.k|0)\n step(n + vi - vi0)\n return 0 === n ? null\n : buf.subarray(vi, step.k|0)\n }\n */\n};\n\nfunction mqtt_reader_info(mqtt_reader, ... info_fn_list) {\n mqtt_reader = class extends mqtt_reader {\n static reasons(pkt_type, ...reason_entries) {\n let proto = this.prototype;\n proto._reasons_by = {... proto._reasons_by};\n\n let lut = (proto._reasons_by[pkt_type] ||= new Map());\n for (let [u8, reason] of reason_entries)\n lut.set( u8, reason );\n\n return this\n }\n };\n\n for (let fn_info of info_fn_list)\n fn_info(mqtt_reader);\n\n return mqtt_reader\n}\n\nclass mqtt_writer_v4 {\n static of() { return this.prototype.of() }\n of() { return {__proto__: this, $:[]} }\n\n static init() { return this }\n\n as_pkt(pkt_id) { return this.pack([pkt_id]) }\n\n push(...z) { this.$.push(...z); }\n pack(hdr) {\n let z, i, n=0, parts = this.$;\n this.$ = false;\n for (z of parts) n += z.length;\n\n hdr = encode_varint(n, hdr);\n i = hdr.length;\n\n let pkt = new Uint8Array(i + n);\n pkt.set(hdr, 0);\n for (z of parts) {\n pkt.set(z, i);\n i += z.length;\n }\n return pkt\n }\n\n u8(v) { this.push([ v & 0xff ]); }\n u16(v) { this.push([ (v>>>8) & 0xff, v & 0xff ]); }\n u32(v) { this.push([ (v>>>24) & 0xff, (v>>>16) & 0xff, (v>>>8) & 0xff, v & 0xff ]); }\n vint(v) { this.push( encode_varint(v) );}\n\n bin(u8_buf) {\n if (! u8_buf) return this.u16(0)\n if ('string' === typeof u8_buf)\n return this.utf8(u8_buf)\n\n if (u8_buf.length !== u8_buf.byteLength)\n u8_buf = new Uint8Array(u8_buf);\n\n this.u16(u8_buf.byteLength);\n this.push(u8_buf);\n }\n\n utf8(v) {\n let u8_buf = new TextEncoder('utf-8').encode(v);\n this.u16(u8_buf.byteLength);\n this.push(u8_buf);\n }\n pair(k,v) { this.utf8(k); this.utf8(v); }\n\n flags(v, enc_flags, b0=0) {\n if (undefined !== v && isNaN(+v))\n v = enc_flags(v, 0);\n\n v |= b0;\n this.push([v]);\n return v\n }\n\n reason(v) { this.push([v | 0]); }\n\n flush(buf) {\n if (null != buf)\n this.push(\n 'string' === typeof buf\n ? new TextEncoder('utf-8').encode(buf)\n : buf );\n\n this.push = false;\n }\n}\n\n\nclass mqtt_writer_v5 extends mqtt_writer_v4 {\n props(props) {\n if (! props)\n return this.u8(0)\n\n if (! Array.isArray(props))\n props = props.entries\n ? Array.from(props.entries())\n : Object.entries(props);\n\n if (0 === props.length)\n return this.u8(0)\n\n let fork = this.of();\n for (let [name, value] of props) {\n let pt = mqtt_props.get(name);\n if (!pt)\n throw new Error(`Unknown mqtt_prop \"${name}\"`)\n fork[pt.op || 'one'](value, pt);\n }\n this.push(fork.pack());\n }\n\n one(value, pt) {\n this.u8(pt.id);\n this[pt.type](value);\n }\n kv_obj(obj, pt) {\n for (let kv of Object.entries(obj)) {\n this.u8(pt.id);\n this.pair(kv);\n }\n }\n u8_vec(vec, pt) {\n for (let v of vec) {\n this.u8(pt.id);\n this.u8(v);\n }\n }\n}\n\nfunction mqtt_decode_connack(ns, mqtt_reader) {\n class _connack_flags_ extends Number {\n get session_present() { return this & 0x01 !== 0 }\n }\n\n return ns[0x2] = (pkt, u8_body) => {\n let rdr = mqtt_reader.of(u8_body);\n\n pkt.flags =\n rdr.flags(_connack_flags_);\n\n pkt.reason = rdr.reason(pkt.type);\n if (5 <= pkt.mqtt_level)\n pkt.props = rdr.props();\n return pkt }\n}\n\n\nfunction _connack_v4(mqtt_reader) {\n mqtt_reader.reasons('connack',\n // MQTT 3.1.1\n [ 0x00, 'Success'],\n [ 0x01, 'Connection refused, unacceptable protocol version'],\n [ 0x02, 'Connection refused, identifier rejected'],\n [ 0x03, 'Connection refused, server unavailable'],\n [ 0x04, 'Connection refused, bad user name or password'],\n [ 0x05, 'Connection refused, not authorized'],\n );\n}\n\nfunction _connack_v5(mqtt_reader) {\n _connack_v4(mqtt_reader);\n\n mqtt_reader.reasons('connack',\n // MQTT 5.0\n [ 0x81, 'Malformed Packet'],\n [ 0x82, 'Protocol Error'],\n [ 0x83, 'Implementation specific error'],\n [ 0x84, 'Unsupported Protocol Version'],\n [ 0x85, 'Client Identifier not valid'],\n [ 0x86, 'Bad User Name or Password'],\n [ 0x87, 'Not authorized'],\n [ 0x88, 'Server unavailable'],\n [ 0x89, 'Server busy'],\n [ 0x8A, 'Banned'],\n [ 0x8C, 'Bad authentication method'],\n [ 0x90, 'Topic Name invalid'],\n [ 0x95, 'Packet too large'],\n [ 0x97, 'Quota exceeded'],\n [ 0x99, 'Payload format invalid'],\n [ 0x9A, 'Retain not supported'],\n [ 0x9B, 'QoS not supported'],\n [ 0x9C, 'Use another server'],\n [ 0x9D, 'Server moved'],\n [ 0x9F, 'Connection rate exceeded'],\n );\n}\n\nfunction mqtt_decode_publish(ns, mqtt_reader) {\n return ns[0x3] = (pkt, u8_body) => {\n let {hdr} = pkt;\n pkt.dup = Boolean(hdr & 0x8);\n pkt.retain = Boolean(hdr & 0x1);\n let qos = pkt.qos = (hdr>>1) & 0x3;\n\n let rdr = mqtt_reader.of(u8_body);\n pkt.topic = rdr.utf8();\n if (0 !== qos)\n pkt.pkt_id = rdr.u16();\n\n if (5 <= pkt.mqtt_level)\n pkt.props = rdr.props();\n\n pkt.payload = rdr.flush();\n return pkt }\n}\n\nfunction mqtt_decode_puback(ns, mqtt_reader) {\n return ns[0x4] = (pkt, u8_body) => {\n let rdr = mqtt_reader.of(u8_body);\n\n pkt.pkt_id = rdr.u16();\n if (5 <= pkt.mqtt_level) {\n pkt.reason = rdr.reason(pkt.type);\n pkt.props = rdr.props();\n }\n\n return pkt }\n}\n\n\nfunction _puback_v5(mqtt_reader) {\n mqtt_reader.reasons('puback',\n // MQTT 5.0\n [ 0x00, 'Success'],\n [ 0x10, 'No matching subscribers'],\n [ 0x80, 'Unspecified error'],\n [ 0x83, 'Implementation specific error'],\n [ 0x87, 'Not authorized'],\n [ 0x90, 'Topic Name invalid'],\n [ 0x91, 'Packet identifier in use'],\n [ 0x97, 'Quota exceeded'],\n [ 0x99, 'Payload format invalid'],\n );\n}\n\nfunction _mqtt_decode_suback(mqtt_reader) {\n return (pkt, u8_body) => {\n let rdr = mqtt_reader.of(u8_body);\n\n pkt.pkt_id = rdr.u16();\n if (5 <= pkt.mqtt_level)\n pkt.props = rdr.props();\n\n let answers = pkt.answers = [];\n while (rdr.has_more())\n answers.push(\n rdr.reason(pkt.type) );\n\n return pkt }\n}\n\nfunction mqtt_decode_suback(ns, mqtt_reader) {\n return ns[0x9] = _mqtt_decode_suback(mqtt_reader)\n}\n\nfunction _suback_v4(mqtt_reader) {\n mqtt_reader.reasons('suback',\n // MQTT 3.1.1\n [ 0x00, 'Granted QoS 0'],\n [ 0x01, 'Granted QoS 1'],\n [ 0x02, 'Granted QoS 2'],\n );\n}\n\nfunction _suback_v5(mqtt_reader) {\n _suback_v4(mqtt_reader);\n\n mqtt_reader.reasons('suback',\n // MQTT 5.0\n [ 0x80, 'Unspecified error'],\n [ 0x83, 'Implementation specific error'],\n [ 0x87, 'Not authorized'],\n [ 0x8F, 'Topic Filter invalid'],\n [ 0x91, 'Packet Identifier in use'],\n [ 0x97, 'Quota exceeded'],\n [ 0x9E, 'Shared Subscriptions not supported'],\n [ 0xA1, 'Subscription Identifiers not supported'],\n [ 0xA2, 'Wildcard Subscriptions not supported'],\n );\n}\n\nfunction mqtt_decode_unsuback(ns, mqtt_reader) {\n return ns[0xb] = _mqtt_decode_suback(mqtt_reader)\n}\n\nfunction _unsuback_v4(mqtt_reader) {\n mqtt_reader.reasons('unsuback',\n // MQTT 3.1.1\n [ 0x00, 'Success'],\n [ 0x11, 'No subscription existed'],\n [ 0x80, 'Unspecified error'],\n [ 0x83, 'Implementation specific error'],\n [ 0x87, 'Not authorized'],\n [ 0x8F, 'Topic Filter invalid'],\n [ 0x91, 'Packet Identifier in use'],\n );\n}\n\nfunction mqtt_decode_pingxxx(ns) {\n return ns[0xc] = ns[0xd] = pkt => pkt\n}\n\nfunction mqtt_decode_disconnect(ns, mqtt_reader) {\n return ns[0xe] = (pkt, u8_body) => {\n if (u8_body && 5 <= pkt.mqtt_level) {\n let rdr = mqtt_reader.of(u8_body);\n pkt.reason = rdr.reason(pkt.type);\n pkt.props = rdr.props();\n }\n return pkt }\n}\n\n\nfunction _disconnect_v5(mqtt_reader) {\n mqtt_reader.reasons('disconnect',\n // MQTT 5.0\n [ 0x00, 'Normal disconnection'],\n [ 0x04, 'Disconnect with Will Message'],\n [ 0x80, 'Unspecified error'],\n [ 0x81, 'Malformed Packet'],\n [ 0x82, 'Protocol Error'],\n [ 0x83, 'Implementation specific error'],\n [ 0x87, 'Not authorized'],\n [ 0x89, 'Server busy'],\n [ 0x8B, 'Server shutting down'],\n [ 0x8D, 'Keep Alive timeout'],\n [ 0x8E, 'Session taken over'],\n [ 0x8F, 'Topic Filter invalid'],\n [ 0x90, 'Topic Name invalid'],\n [ 0x93, 'Receive Maximum exceeded'],\n [ 0x94, 'Topic Alias invalid'],\n [ 0x95, 'Packet too large'],\n [ 0x96, 'Message rate too high'],\n [ 0x97, 'Quota exceeded'],\n [ 0x98, 'Administrative action'],\n [ 0x99, 'Payload format invalid'],\n [ 0x9A, 'Retain not supported'],\n [ 0x9B, 'QoS not supported'],\n [ 0x9C, 'Use another server'],\n [ 0x9D, 'Server moved'],\n [ 0x9E, 'Shared Subscriptions not supported'],\n [ 0x9F, 'Connection rate exceeded'],\n [ 0xA0, 'Maximum connect time'],\n [ 0xA1, 'Subscription Identifiers not supported'],\n [ 0xA2, 'Wildcard Subscriptions not supported'],\n );\n}\n\nfunction mqtt_decode_auth(ns, mqtt_reader) {\n return ns[0xf] = (pkt, u8_body) => {\n if ( 5 <= pkt.mqtt_level ) {\n let rdr = mqtt_reader.of(u8_body);\n pkt.reason = rdr.reason(pkt.type);\n pkt.props = rdr.props();\n }\n return pkt }\n}\n\n\nfunction _auth_v5(mqtt_reader) {\n mqtt_reader.reasons('auth',\n // MQTT 5.0\n [ 0x00, 'Success' ],\n [ 0x18, 'Continue authentication' ],\n [ 0x19, 'Re-authenticate' ],\n );\n}\n\nfunction mqtt_encode_connect(ns, mqtt_writer) {\n const _c_mqtt_proto = new Uint8Array([\n 0, 4, 0x4d, 0x51, 0x54, 0x54 ]);\n\n const _enc_flags_connect = flags => 0\n | ( flags.reserved ? 0x01 : 0 )\n | ( (flags.will_qos & 0x3) << 3 )\n | ( flags.clean_start ? 0x02 : 0 )\n | ( flags.will_flag ? 0x04 : 0 )\n | ( flags.will_retain ? 0x20 : 0 )\n | ( flags.password ? 0x40 : 0 )\n | ( flags.username ? 0x80 : 0 );\n\n const _enc_flags_will = will => 0x4\n | ( (will.qos & 0x3) << 3 )\n | ( will.retain ? 0x20 : 0 );\n\n return ns.connect = ( mqtt_level, pkt ) => {\n let wrt = mqtt_writer.of(pkt);\n\n wrt.push(_c_mqtt_proto);\n wrt.u8( mqtt_level );\n\n let {will, username, password} = pkt;\n let flags = wrt.flags(\n pkt.flags,\n _enc_flags_connect,\n 0 | (username ? 0x80 : 0)\n | (password ? 0x40 : 0)\n | (will ? _enc_flags_will(will) : 0) );\n\n wrt.u16(pkt.keep_alive);\n\n if (5 <= mqtt_level)\n wrt.props(pkt.props);\n\n\n wrt.utf8(pkt.client_id);\n if (flags & 0x04) { // .will_flag\n if (5 <= mqtt_level)\n wrt.props(will.props);\n\n wrt.utf8(will.topic);\n wrt.bin(will.payload);\n }\n\n if (flags & 0x80) // .username\n wrt.utf8(username);\n\n if (flags & 0x40) // .password\n wrt.bin(password);\n\n return wrt.as_pkt(0x10)\n }\n}\n\nfunction mqtt_encode_publish(ns, mqtt_writer) {\n return ns.publish = ( mqtt_level, pkt ) => {\n let qos = (pkt.qos & 0x3) << 1;\n let wrt = mqtt_writer.of(pkt);\n\n wrt.utf8(pkt.topic);\n if (0 !== qos)\n wrt.u16(pkt.pkt_id);\n\n if ( 5 <= mqtt_level) {\n wrt.props(pkt.props);\n wrt.flush(pkt.payload);\n } else {\n wrt.flush(pkt.payload);\n }\n\n return wrt.as_pkt(\n 0x30 | qos | (pkt.dup ? 0x8 : 0) | (pkt.retain ? 0x1 : 0) )\n }\n}\n\nfunction mqtt_encode_puback(ns, mqtt_writer) {\n return ns.puback = ( mqtt_level, pkt ) => {\n let wrt = mqtt_writer.of(pkt);\n\n wrt.u16(pkt.pkt_id);\n if (5 <= mqtt_level) {\n wrt.reason(pkt.reason);\n wrt.props(pkt.props);\n }\n\n return wrt.as_pkt(0x40)\n }\n}\n\nfunction mqtt_encode_subscribe(ns, mqtt_writer) {\n const _enc_subscribe_flags = opts => 0\n | ( opts.qos & 0x3 )\n | ( opts.retain ? 0x4 : 0 )\n | ( (opts.retain_handling & 0x3) << 2 );\n\n return ns.subscribe = ( mqtt_level, pkt ) => {\n let wrt = mqtt_writer.of(pkt);\n\n wrt.u16(pkt.pkt_id);\n if (5 <= mqtt_level)\n wrt.props(pkt.props);\n\n let f0 = _enc_subscribe_flags(pkt);\n for (let each of pkt.topics) {\n if ('string' === typeof each) {\n wrt.utf8(each);\n wrt.u8(f0);\n } else {\n let [topic, opts] =\n Array.isArray(each) ? each\n : [each.topic, each.opts];\n\n wrt.utf8(topic);\n if (undefined === opts) wrt.u8(f0);\n else wrt.flags(opts, _enc_subscribe_flags);\n }\n }\n\n return wrt.as_pkt(0x82)\n }\n}\n\nfunction mqtt_encode_unsubscribe(ns, mqtt_writer) {\n return ns.unsubscribe = ( mqtt_level, pkt ) => {\n let wrt = mqtt_writer.of(pkt);\n\n wrt.u16(pkt.pkt_id);\n if (5 <= mqtt_level)\n wrt.props(pkt.props);\n\n for (let topic of pkt.topics)\n wrt.utf8(topic);\n\n return wrt.as_pkt(0xa2)\n }\n}\n\nfunction mqtt_encode_pingxxx(ns) {\n ns.pingreq = () => new Uint8Array([ 0xc0, 0 ]);\n ns.pingresp = () => new Uint8Array([ 0xd0, 0 ]);\n}\n\nfunction mqtt_encode_disconnect(ns, mqtt_writer) {\n return ns.disconnect = ( mqtt_level, pkt ) => {\n let wrt = mqtt_writer.of(pkt);\n\n if (pkt && 5 <= mqtt_level) {\n if (pkt.reason || pkt.props) {\n wrt.reason(pkt.reason);\n wrt.props(pkt.props);\n }\n }\n\n return wrt.as_pkt(0xe0)\n }\n}\n\nfunction mqtt_encode_auth(ns, mqtt_writer) {\n return ns.auth = ( mqtt_level, pkt ) => {\n if (5 > mqtt_level)\n throw new Error('Auth packets are only available after MQTT 5.x')\n\n let wrt = mqtt_writer.of(pkt);\n\n wrt.reason(pkt.reason);\n wrt.props(pkt.props);\n\n return wrt.as_pkt(0xf0)\n }\n}\n\nconst version = '0.3.4';\n\nconst mqtt_decode_v5 = [\n mqtt_decode_connack,\n mqtt_decode_publish,\n mqtt_decode_puback,\n mqtt_decode_suback,\n mqtt_decode_unsuback,\n mqtt_decode_pingxxx,\n mqtt_decode_disconnect,\n mqtt_decode_auth,\n];\n\n\nconst mqtt_encode_v5 = [\n mqtt_encode_connect,\n mqtt_encode_puback,\n mqtt_encode_publish,\n mqtt_encode_subscribe,\n mqtt_encode_unsubscribe,\n mqtt_encode_pingxxx,\n mqtt_encode_disconnect,\n mqtt_encode_auth,\n];\n\nconst mqtt_reader_v5 = /* #__PURE__ */\n mqtt_reader_info(\n mqtt_reader_v5$1,\n _connack_v5,\n _puback_v5,\n _suback_v5,\n _unsuback_v4,\n _disconnect_v5,\n _auth_v5,\n );\n\n\nconst mqtt_opts_v5 = \n { decode_fns: mqtt_decode_v5,\n mqtt_reader: mqtt_reader_v5,\n encode_fns: mqtt_encode_v5,\n mqtt_writer: mqtt_writer_v5, };\n\nexport { mqtt_opts_v5 as default, mqtt_decode_v5, mqtt_encode_v5, mqtt_opts_v5, mqtt_reader_v5, mqtt_writer_v5, version };\n//# sourceMappingURL=codec_v5_client.js.map\n","export function parse(str, loose) {\n\tif (str instanceof RegExp) return { keys:false, pattern:str };\n\tvar c, o, tmp, ext, keys=[], pattern='', arr = str.split('/');\n\tarr[0] || arr.shift();\n\n\twhile (tmp = arr.shift()) {\n\t\tc = tmp[0];\n\t\tif (c === '*') {\n\t\t\tkeys.push('wild');\n\t\t\tpattern += '/(.*)';\n\t\t} else if (c === ':') {\n\t\t\to = tmp.indexOf('?', 1);\n\t\t\text = tmp.indexOf('.', 1);\n\t\t\tkeys.push( tmp.substring(1, !!~o ? o : !!~ext ? ext : tmp.length) );\n\t\t\tpattern += !!~o && !~ext ? '(?:/([^/]+?))?' : '/([^/]+?)';\n\t\t\tif (!!~ext) pattern += (!!~o ? '?' : '') + '\\\\' + tmp.substring(ext);\n\t\t} else {\n\t\t\tpattern += '/' + tmp;\n\t\t}\n\t}\n\n\treturn {\n\t\tkeys: keys,\n\t\tpattern: new RegExp('^' + pattern + (loose ? '(?=$|\\/)' : '\\/?$'), 'i')\n\t};\n}\n\nvar RGX = /(\\/|^)([:*][^/]*?)(\\?)?(?=[/.]|$)/g;\n\n// error if key missing?\nexport function inject(route, values) {\n\treturn route.replace(RGX, (x, lead, key, optional) => {\n\t\tx = values[key=='*' ? 'wild' : key.substring(1)];\n\t\treturn x ? '/'+x : (optional || key=='*') ? '' : '/' + key;\n\t});\n}\n","export const _isfn = v => typeof v === 'function'\nexport const _isstr = v => typeof v === 'string'\n\nexport function _interval(fn_callback) ::\n let tid\n return @\\ td ::\n tid = clearInterval(tid)\n if td ::\n tid = setInterval(fn_callback, 1000 * td)\n #IF PLAT_DENO\n // ensure the interval allows the Deno event loop to exit\n Deno.unrefTimer(tid)\n #ELSE\n // ensure the interval allows the NodeJS event loop to exit\n tid.unref?.()\n return true\n\n","/*\nclass AbstractTopicRouter ::\n async invoke(pkt, ctx) ::\n add(topic_route, ...args) ::\n remove(topic_route, priority) ::\n clear(priority) ::\n find(topic) :: // optional\n mqtt_topic(topic_route)\n*/\n\nexport const with_topic_router = mqtt_topic_router =>\n MQTTKlass => class extends MQTTKlass ::\n static _aliases() ::\n return super._aliases() +\n ' sub_topic:subscribe_topic unsub_topic:unsubscribe_topic'\n\n _init_router(opt, self, target) ::\n this._subs = []\n let router = this.router = target.router =\n mqtt_topic_router(opt, this, target)\n return router?.invoke\n\n on_sub(suback, pkt) ::\n suback.pkt = pkt\n this._subs.push(suback)\n return suback\n subs_settled() ::\n return Promise.allSettled @\n this._subs.splice(0,Infinity)\n\n // alias: sub_topic\n subscribe_topic(topic_route, ...args) ::\n let router = this.router\n router.add @ topic_route, true, args.pop() // handler\n let topic = router.mqtt_topic(topic_route)\n this.subscribe @ topic, ...args // ex, topic_prefix\n return this // fluent api -- return this and track side effects\n\n // alias: unsub_topic\n unsubscribe_topic(topic_route, ...args) ::\n let router = this.router\n router.remove @ topic_route, true\n let topic = router.mqtt_topic(topic_route)\n return this.unsubscribe @ topic, ...args // topic_prefix\n\n // add topic handlers without corresponding subscribe packet\n on_topic(...args) ::\n this.router.add(...args)\n return this\n\n","// Use [regexparam][] for url-like topic parsing\n// [regexparam]: https://github.com/lukeed/regexparam\n\nimport {parse as _rxp_parse} from 'regexparam'\nimport {_isfn} from './_utils.jsy'\nimport {with_topic_router} from './with_topic_router.jsy'\n\nexport const with_topic_path_router = /* #__PURE__ */\n with_topic_router(mqtt_topic_path_router)\n\n\nconst mqtt_topic = topic_route =>\n topic_route\n .replace @ /[*].*$/, '#'\n .replace @ /:\\w[^\\/]*/g, '+'\n\n/* From the [MQTT v5 Spec](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Topic_Names_and)\n4.7.1.2 Multi-level wildcard -- (‘#’ U+0023)\n... MUST be specified either on its own or following a topic level separator.\nIn either case it MUST be the last character specified in the Topic Filter\n\n4.7.1.3 Single-level wildcard -- (‘+’ U+002B)\n...it MUST occupy an entire level of the filter.\n*/\n\nexport const as_topic_path = (topic_route, id) => @\n id=1,\n topic_route\n .replace @ /#$/, '*' // replace MQTT '#' multi-level wildcard at end\n .replace @ /\\+/g, () => `:$${id++}` // replace MQTT '+' single-level wildcards\n\nfunction _ignore(pkt, params, ctx) :: ctx.done = true\n\nfunction mqtt_topic_path_router() ::\n let pri_lsts = [[],[]], rm = Symbol()\n let find = topic => _routes_iter(pri_lsts, topic)\n\n // return duck-type compatible with AbstractTopicRouter in ./with_topic_router\n return @{} find, mqtt_topic,\n add(topic_route, ...args) ::\n let fn = args.pop()\n let priority = args.pop()\n\n if ! _isfn(fn) ::\n if fn :: throw new TypeError()\n fn = _ignore\n\n let rte = _rxp_parse @ as_topic_path @ topic_route\n\n rte.key = topic_route\n rte.tgt = fn\n pri_lsts[priority ? 0 : 1].push(rte)\n return this\n\n remove(topic_route, priority) ::\n let lst = pri_lsts[priority ? 0 : 1]\n return _route_remove([lst], topic_route)\n\n clear(priority) ::\n pri_lsts[priority ? 0 : 1] = []\n if null == priority ::\n pri_lsts[1] = [] // null clears both lists\n\n async invoke(pkt, ctx) ::\n ctx.idx = 0\n ctx.rm = rm\n\n for let [fn, params] of find(pkt.topic) ::\n let res = await fn(pkt, params, ctx)\n\n if rm === res ::\n _route_remove(pri_lsts, fn)\n\n if ctx.done ::\n break\n else ctx.idx++\n\n if 1 === pkt.qos ::\n await ctx.mqtt.puback(pkt)\n\n\nfunction * _routes_iter(all_route_lists, topic) ::\n topic = topic.replace(/^[\\/]*/, '/') // ensure '/' prefix for regexparam library\n for let route_list of all_route_lists ::\n for let {keys, pattern, tgt} of route_list ::\n let match = pattern.exec(topic)\n if match ::\n let params = keys\n ? keys.reduce @\n (o, k, i) => (o[k] = match[1+i], o)\n {}\n : match.groups ?? match\n yield [tgt, params]\n\n\nfunction _route_remove(all_route_lists, query) ::\n let fn_match = route => @\n route===query\n || route.tgt===query\n || route.key===query\n for let lst of all_route_lists ::\n let i = lst.findIndex(fn_match)\n if 0 <= i ::\n lst.splice(i,1)\n return true\n return false\n\n","/*\nexport function decode_varint_loop(u8, i=0) {\n let i0 = i\n let shift = 0, n = (u8[i] & 0x7f)\n while ( 0x80 & u8[i++] )\n n |= (u8[i] & 0x7f) << (shift += 7)\n\n return [n, i, i0]\n}\n*/\n\n\nfunction decode_varint(u8, i=0) {\n let i0 = i;\n // unrolled for a max of 4 chains\n let n = (u8[i] & 0x7f) << 0;\n if ( 0x80 & u8[i++] ) {\n n |= (u8[i] & 0x7f) << 7;\n if ( 0x80 & u8[i++] ) {\n n |= (u8[i] & 0x7f) << 14;\n if ( 0x80 & u8[i++] ) {\n n |= (u8[i] & 0x7f) << 21;\n }\n }\n }\n return [n, i, i0]\n}\n\nfunction mqtt_raw_dispatch(opt) {\n let u8 = new Uint8Array(0);\n return u8_buf => {\n u8 = 0 === u8.byteLength\n ? u8_buf : _u8_join(u8, u8_buf);\n\n let res = [];\n while (1) {\n let [len_body, len_vh] = decode_varint(u8, 1);\n let len_pkt = len_body + len_vh;\n\n if ( u8.byteLength < len_pkt )\n return res\n\n let b0 = u8[0];\n let u8_body = 0 === len_body ? null\n : u8.subarray(len_vh, len_pkt);\n\n u8 = u8.subarray(len_pkt);\n\n let pkt = opt.decode_pkt(b0, u8_body, opt);\n if (null != pkt)\n res.push( pkt );\n }\n }\n}\n\nfunction _u8_join(a, b) {\n let alen = a.byteLength, r = new Uint8Array(alen + b.byteLength);\n r.set(a, 0);\n r.set(b, alen);\n return r\n}\n\nconst version = '0.3.4';\n\nconst _pkt_types = ['~', 'connect', 'connack', 'publish', 'puback', 'pubrec', 'pubrel', 'pubcomp', 'subscribe', 'suback', 'unsubscribe', 'unsuback', 'pingreq', 'pingresp', 'disconnect', 'auth'];\n\nfunction mqtt_pkt_ctx(mqtt_level, opts, pkt_ctx) {\n pkt_ctx = {\n __proto__: pkt_ctx || opts.pkt_ctx,\n mqtt_level,\n get hdr() { return this.b0 & 0xf },\n get id() { return this.b0 >>> 4 },\n get type() { return _pkt_types[this.b0 >>> 4] },\n };\n\n let op, _decode_by_id=[], _encode_by_type={};\n for (op of opts.encode_fns)\n op(_encode_by_type, opts.mqtt_writer);\n for (op of opts.decode_fns)\n op(_decode_by_id, opts.mqtt_reader);\n\n return {\n pkt_ctx,\n\n encode_pkt(type, pkt) {\n return _encode_by_type[type]( mqtt_level, pkt ) },\n\n decode_pkt(b0, u8_body) {\n if (b0.map) // Uint8Array in first arg\n return mqtt_raw_dispatch(this)(b0)[0]\n\n let fn_decode = _decode_by_id[b0>>>4] || _decode_by_id[0];\n return fn_decode?.({__proto__: this.pkt_ctx, b0}, u8_body) },\n\n mqtt_stream() {\n let self = { __proto__: this, pkt_ctx: { __proto__: pkt_ctx } };\n self.pkt_ctx._base_ = self.pkt_ctx;\n self.decode = mqtt_raw_dispatch(self);\n return self\n },\n }\n}\n\nexport { mqtt_pkt_ctx as default, mqtt_pkt_ctx, version };\n//# sourceMappingURL=codec_bind.js.map\n","\nasync function _mqtt_cmd_evt(target, answer, pkt, ctx) ::\n /* target : on_mqtt_type = {\n mqtt_pkt(pkt, ctx) {}, // generic\n\n mqtt_auth(pkt, ctx) {},\n mqtt_connect(pkt, ctx) {},\n mqtt_connack(pkt, ctx) {},\n mqtt_disconnect(pkt, ctx) {},\n\n mqtt_publish(pkt, ctx) {},\n mqtt_subscribe(pkt, ctx) {},\n mqtt_unsubscribe(pkt, ctx) {},\n\n mqtt_pingreq(pkt, ctx) {},\n mqtt_pingresp(pkt, ctx) {},\n } */\n\n let pkt_fn = target[`mqtt_${pkt.type}`] || target.mqtt_pkt\n await pkt_fn?.call(target, pkt, ctx)\n\nfunction _mqtt_cmd_type(target, answer, pkt, ctx) ::\n answer(pkt.type, pkt)\n _mqtt_cmd_evt(target, answer, pkt, ctx)\n\nfunction _mqtt_cmd_id(target, answer, pkt) ::\n answer(pkt.pkt_id, pkt)\n\n\nexport const _mqtt_cmdids = @[]\n _ => {} // 0x0 reserved\n _mqtt_cmd_evt // 0x1 connect\n _mqtt_cmd_type // 0x2 connack\n _mqtt_cmd_evt // 0x3 publish\n _mqtt_cmd_id // 0x4 puback\n _mqtt_cmd_id // 0x5 pubrec\n _mqtt_cmd_id // 0x6 pubrel\n _mqtt_cmd_id // 0x7 pubcomp\n _mqtt_cmd_evt // 0x8 subscribe\n _mqtt_cmd_id // 0x9 suback\n _mqtt_cmd_evt // 0xa unsubscribe\n _mqtt_cmd_id // 0xb unsuback\n _mqtt_cmd_type // 0xc pingreq\n _mqtt_cmd_type // 0xd pingresp\n _mqtt_cmd_evt // 0xe disconnect\n _mqtt_cmd_type // 0xf auth\n\n","import { _isstr } from './_utils.jsy'\nimport {_mqtt_cmdids} from './_cmdid_dispatch.jsy'\n\nexport function _mqtt_dispatch(opt, target) ::\n let hashbelt=[], rotate_ts=0\n // default rotate at 1s across 5 buckets\n let { td: rotate_td=1000, n: rotate_n=5 } = opt?.rotate || {}\n\n // Promise / future scaffolding\n let _pkt_id=100, _ftr_key // use _ftr_key to reuse _by_key closure\n let _ftr_by_key = fn_answer => hashbelt[0].set(_ftr_key, fn_answer)\n\n on_mqtt([]) // init hashbelt and rotate_ts\n return [on_mqtt, pkt_future]\n\n\n function pkt_future(pkt_or_key) ::\n if ! _isstr(pkt_or_key) ::\n _pkt_id = (_pkt_id + 1) & 0xffff // 16-bit unsigned short\n _ftr_key = pkt_or_key.pkt_id = _pkt_id\n else _ftr_key = pkt_or_key\n\n return new Promise(_ftr_by_key)\n\n function answer(key, pkt) ::\n for let map of hashbelt ::\n let fn_answer = map.get(key)\n if fn_answer ::\n map.delete(key)\n\n fn_answer([pkt, /*err*/]) // option/maybe monad\n return true\n return false\n\n function on_mqtt(pkt_list, ctx) ::\n for let pkt of pkt_list ::\n _mqtt_cmdids[pkt.id](target, answer, pkt, ctx)\n\n // rotate after rotate_ts\n let now = Date.now()\n if now > rotate_ts ::\n rotate_ts = rotate_td + now\n hashbelt.unshift(new Map())\n while hashbelt.length > rotate_n ::\n for let fn_answer of hashbelt.pop().values() ::\n fn_answer([/*pkt*/, 'expired']) // option/maybe monad\n\n","import { _isfn, _isstr } from './_utils.jsy'\nimport { _mqtt_dispatch } from './_dispatch.jsy'\n\nexport class MQTTError extends Error ::\n constructor(mqtt_pkt, reason=mqtt_pkt.reason) ::\n // use hex-encoded reasons to match MQTT spec documentation\n super(`[0x${reason.toString(16)}] ${reason.reason}`)\n this.mqtt_pkt = mqtt_pkt\n this.reason = reason\n\nexport class MQTTBase ::\n // Handshaking Packets\n async connect(pkt={}) ::\n let cid = pkt.client_id\n if ! _isstr(cid) ::\n // see init_client_id implementation in core.jsy\n pkt.client_id = cid = this.client_id || this.init_client_id(cid)\n this.client_id = cid\n\n if null == pkt.keep_alive ::\n pkt.keep_alive = 60\n\n let response = await this._send0('connect', pkt, 'connack')\n if 0 != response[0].reason :: // compare to 0 to coerce to number\n throw new this.MQTTError(response[0])\n return this.conn.on_conn(pkt, response)\n\n async disconnect(pkt={}) ::\n let response = await this._send0('disconnect', pkt)\n return this.conn.on_dis(pkt, response)\n\n async auth(pkt={}) ::\n let response = await this._send0('auth', pkt, 'auth')\n if response[0].reason ::\n throw new this.MQTTError(response[0])\n return this.conn.on_auth(pkt, response)\n\n ping() :: return this._send('pingreq', null, 'pingresp')\n puback({pkt_id}) :: return this._send('puback', {pkt_id})\n\n // alias: sub\n subscribe(pkt, ex, topic_prefix) ::\n pkt = _as_topics(pkt, ex, topic_prefix)\n let suback = this._send('subscribe', pkt, pkt)\n return this.on_sub?.(suback, pkt) ?? suback\n\n // alias: unsub\n unsubscribe(pkt, ex, topic_prefix) ::\n pkt = _as_topics(pkt, ex, topic_prefix)\n return this._send('unsubscribe', pkt, pkt)\n\n\n post(topic, payload, pub_opt) :: // qos:0\n return this.pub({topic, payload, qos:0}, pub_opt)\n send(topic, payload, pub_opt) :: // qos:1\n return this.pub({topic, payload, qos:1}, pub_opt)\n store(topic, payload, pub_opt) :: // qos:1, retain: 1\n return this.pub({topic, payload, qos:1, retain: 1}, pub_opt)\n\n // alias: json_post\n obj_post(topic, msg, pub_opt) :: // qos:0\n return this.pub({topic, msg, arg: 'msg', qos:0}, pub_opt)\n // alias: json_send\n obj_send(topic, msg, pub_opt) :: // qos:1\n return this.pub({topic, msg, arg: 'msg', qos:1}, pub_opt)\n // alias: json_store\n obj_store(topic, msg, pub_opt) :: // qos:1, retain: 1\n return this.pub({topic, msg, arg: 'msg', qos:1, retain: 1}, pub_opt)\n\n // alias: publish -- because 'pub' is shorter for semantic aliases above\n async pub(pkt, pub_opt) ::\n if undefined === pkt.payload ::\n if _isfn(pub_opt) ::\n // pub_opt as a function is fn_encode value\n pub_opt = {fn_encode: pub_opt}\n\n let msg = pkt.msg, fn_encode = pub_opt?.fn_encode\n if null == msg || _isfn(msg) ::\n // when msg is a function, return closure using fn_encode\n if msg :: pub_opt = {...pub_opt, fn_encode: msg}\n // return a single-value closure to publish packets\n return v => this.pub({...pkt, [pkt.arg || 'payload']: v}, pub_opt)\n\n // Encode payload from msg; fn_encode allows alternative to JSON.stringify\n pkt.payload = fn_encode\n ? await fn_encode(msg)\n : JSON.stringify(msg)\n\n if pub_opt ::\n if pub_opt.props ::\n pkt.props = pub_opt.props\n if pub_opt.xform ::\n pkt = pub_opt.xform(pkt) || pkt\n\n return this._send @ 'publish', pkt,\n pkt.qos ? pkt : null // key\n\n\n // Internal API\n\n /* async _send0(type, pkt) -- provided by conn and transport */\n /* async _send(type, pkt) -- provided by conn and transport */\n\n _init_dispatch(opt) ::\n this.constructor?._once_()\n let target = @{} __proto__: opt.on_mqtt_type\n target.mqtt_publish ||=\n this._init_router?.(opt, this, target)\n return _mqtt_dispatch(opt, target)\n\n static _aliases() ::\n return ' publish:pub sub:subscribe unsub:unsubscribe json_post:obj_post json_send:obj_send json_store:obj_store'\n\n static _once_(klass=this) ::\n klass._once_ = _=>0\n var alias, name, p = klass.prototype\n p.MQTTError = MQTTError\n for alias of klass._aliases().split(/\\s+/) ::\n [alias, name] = alias.split(':')\n p[alias] = p[name]\n\n\nfunction _as_topics(pkt, ex, topic_prefix) ::\n if ex?.trim :: // string\n topic_prefix = ex\n ex = null\n\n pkt = @\n pkt.trim // string\n ? {topics:[pkt], ... ex}\n : pkt[Symbol.iterator]\n ? {topics:[... pkt], ... ex}\n : ex ? {...pkt, ...ex}\n : pkt\n\n if topic_prefix ::\n // particularly useful with shared queues, e.g.\n // topic_prefix = '$share/some-queue-name/'\n let _prefix_topics = v =>\n v.trim ? topic_prefix+v : v.map(_prefix_topics)\n\n pkt.topics = pkt.topics.map(_prefix_topics)\n return pkt\n\n","import { _interval } from './_utils.jsy'\n\nconst _defer_obj = o => @\n o.p = new Promise @ (a,e) => { o.a=a; o.e=e }\n , o\n\nfunction _dfn_reset(client, attr, fn_after) ::\n // a resetable deferred for a function\n let self = {set}, afn = async (...args) => (await self.p)(...args)\n return set()\n\n function set() ::\n if afn !== client[attr] ::\n _defer_obj(self).p.then(fn_after, _=>0)\n client[attr] = afn\n return self\n\nexport function _mqtt_conn(opt, client, [on_mqtt, pkt_future]) ::\n let _abort\n let _dfn_send0 = _dfn_reset @ client, '_send0', // client._send0 getter/setter\n _=> client.conn_emit('on_live', conn.has_connected)\n let _dfn_ready = _dfn_reset @ client, '_send', // client._send getter/setter\n _=> client.conn_emit('on_ready')\n let _keep_alive_ival = _interval @=> client._send0('pingreq') // resettable interval for keep_alive ping\n\n let conn = Object.create @:\n ping: (td=conn.keep_alive) => _keep_alive_ival(td)\n\n on_conn(pkt, response) ::\n conn.has_connected = true\n conn.keep_alive = opt.keep_alive || response[0].props?.server_keep_alive || pkt.keep_alive\n client.conn_emit('on_conn')\n return opt.use_auth\n ? response // wait on enhanced authentication step\n : conn.on_auth(null, response) // otherwise, connect is also auth\n\n on_auth(pkt, response) ::\n _dfn_ready.a(_dfn_send0.p)\n if 0 != opt.keep_alive ::\n conn.ping()\n client.conn_emit('on_auth', !pkt)\n return response\n\n on_dis(pkt, response) ::\n conn.reset(false)\n return response\n\n reset(err) ::\n if err ::\n _dfn_send0.e(err) // send error to uses of _send0 (connect, auth)\n _abort.e(err) // abort in-progress connections\n\n delete conn.is_set\n conn.ready = handshake()\n client.conn_emit('on_disconnect', false===err, err)\n\n abort() ::\n _dfn_ready.e(err) // abort all messages awaiting ready state\n return conn.reset(err)\n\n async setup(gate, send_u8_pkt, init_msg_loop) ::\n if conn.is_set ::\n throw new Error() // already in-progress\n\n conn.is_set = true\n await gate\n\n // setup send/recv MQTT parsing context\n let mqtt_ctx = client.mqtt_ctx.mqtt_stream()\n\n :: // setup inbound message loop\n let sess_ctx = {mqtt: client} // mutable session context\n let on_mqtt_chunk = u8 => on_mqtt(mqtt_ctx.decode(u8), sess_ctx)\n init_msg_loop(on_mqtt_chunk, conn)\n\n // setup outbound message path and transport connection\n send_u8_pkt = await send_u8_pkt\n _dfn_send0.a @\n async (type, pkt, key) => ::\n let res = undefined !== key\n ? pkt_future(key) : true\n\n await send_u8_pkt @\n mqtt_ctx.encode_pkt(type, pkt)\n return res\n\n conn.ready = handshake()\n return conn\n\n async function handshake() ::\n _abort = _defer_obj({})\n\n _keep_alive_ival(0) // clearInterval on keep alive ping\n _dfn_send0.set() // reset client._send0 if necessary\n _dfn_ready.set() // reset client._send if necessary\n\n try ::\n // set client._send0 as passtrhough after transport connection\n client._send0 = await Promise.race @# _dfn_send0.p, _abort.p\n\n // set client._send as passtrhough after ready\n client._send = await Promise.race @# _dfn_ready.p, _abort.p\n return true\n catch err ::\n return false\n\n","import mqtt_pkt_ctx from 'u8-mqtt-packet/esm/codec_bind.js'\nimport { _isfn } from './_utils.jsy'\nimport { MQTTBase } from './base.jsy'\nimport { _mqtt_conn } from './_conn.jsy'\n\n#IF PLAT_NODEJS\n import {connect as tcp_connect} from 'node:net'\n import {connect as tls_connect} from 'node:tls'\n\nconst pkt_api = @{}\n utf8(u8) :: return new TextDecoder('utf-8').decode(u8 || this.payload )\n json(u8) :: return JSON.parse( this.utf8(u8) || null )\n text(u8) :: return this.utf8(u8)\n\nconst opt_default = @{}\n sess_stg: globalThis.sessionStorage\n\nexport class MQTTCore extends MQTTBase ::\n constructor(opt) ::\n opt = {...opt_default, ...opt}\n super()\n this.with(opt)\n // settings for MQTTCore\n this.sess_stg = opt.sess_stg\n // setup connection and dispatch\n this.conn = _mqtt_conn @ opt, this,\n this._init_dispatch(opt)\n\n with(fns_ns) ::\n for let [k,v] of Object.entries(fns_ns) ::\n if _isfn(v) :: this[k] = v\n return this\n\n\n static mqtt_ctx(mqtt_level, mqtt_opts, pkt_ctx=pkt_api) ::\n let klass = class extends this {}\n klass.prototype.mqtt_ctx =\n mqtt_pkt_ctx(mqtt_level, mqtt_opts, pkt_ctx)\n return klass\n\n\n async conn_emit(evt, arg, err_arg) ::\n this.log_conn?.(evt, arg, err_arg)\n try ::\n let fn_evt = this[await evt] // microtask break using `await evt`\n if fn_evt ::\n await fn_evt.call(this, this, arg, err_arg)\n else if err_arg :: throw err_arg\n catch err ::\n this.on_error(err, evt)\n\n on_error(err, evt) ::\n console.warn @ '[[u8-mqtt error: %s]]', evt, err\n log_conn(evt, arg, err_arg) ::\n console.info @ '[[u8-mqtt conn: %s]]', evt, arg, err_arg\n\n\n // automatic Client Id for connect()\n init_client_id(parts=['u8-mqtt--','']) ::\n let sess_stg = this.sess_stg\n let key, cid = sess_stg?.getItem(key=parts.join(' '))\n if ! cid ::\n cid = parts.join @ Math.random().toString(36).slice(2)\n sess_stg?.setItem(key, cid)\n return cid\n\n\n on_live(client, is_reconnect) ::\n if is_reconnect ::\n return client.connect()\n\n // on_ready(client) ::\n // on_reconnect(client) ::\n on_disconnect(client, intentional) ::\n if ! intentional ::\n return client.on_reconnect?.()\n\n _use_conn(fn_reconnect) ::\n return (this.reconnect = fn_reconnect)?.()\n with_autoreconnect(opt=2000) ::\n if opt.toFixed :: opt = @{} delay: opt\n return this.with @:\n on_reconnect() ::\n this.delay(opt.delay || 2000)\n .then(this.reconnect)\n .then(opt.reconnect, opt.error)\n\n delay(ms) ::\n return new Promise @ done => setTimeout(done, ms)\n\n with_async_iter(async_iter, write_u8_pkt) ::\n this.conn.setup @ async_iter,\n write_u8_pkt,\n async (on_mqtt_chunk, conn) => ::\n try ::\n async_iter = await async_iter\n for await (let chunk of async_iter)\n on_mqtt_chunk(chunk)\n conn.reset()\n catch err ::\n conn.reset(err)\n return this\n\n\n\n #IF PLAT_DENO\n with_tcp(...opt) ::\n opt = this._conn_opt(opt)\n opt.transport = 'tcp'\n return this._use_conn @=>\n this.with_deno_iter @\n Deno.connect(opt)\n\n with_tls(...opt) ::\n opt = this._conn_opt(opt)\n return this._use_conn @=>\n this.with_deno_iter @\n Deno.connectTls(opt)\n\n with_deno_iter(transport) ::\n return this.with_async_iter @\n transport.then(Deno.iter),\n transport.then @ write_stream =>\n u8_pkt => write_stream.write(u8_pkt)\n\n _conn_opt([a0, a1, a2]) ::\n // (port, hostname, options) or (url, options)\n if Number.isFinite(a0) ::\n return {...a2, port: a0, hostname: a1}\n\n a0 = new URL(a0)\n return {...a1, port: a0.port, hostname: a0.hostname}\n\n #IF PLAT_NODEJS\n with_tcp(...opt) ::\n opt = this._conn_opt(opt)\n return this._use_conn @=>\n this.with_stream @\n tcp_connect(opt)\n\n with_tls(...opt) ::\n opt = this._conn_opt(opt)\n return this._use_conn @=>\n this.with_stream @\n tls_connect(opt)\n\n _conn_opt([a0, a1, a2]) ::\n // (port, hostname, options) or (url, options)\n if Number.isFinite(a0) ::\n return {...a2, port: a0, host: a1}\n a0 = new URL(a0)\n return {...a1, port: a0.port, host: a0.hostname}\n\n\n with_stream(read_stream, write_stream) ::\n if undefined === write_stream ::\n write_stream = read_stream\n\n return this.with_async_iter @ read_stream,\n u8_pkt => write_stream.write(u8_pkt)\n\n\n with_websock(websock) ::\n if ! websock?.send ::\n websock = new URL(websock || 'ws://127.0.0.1:9001')\n return this._use_conn @=>\n this.with_websock @\n new WebSocket(websock, ['mqtt'])\n\n websock.binaryType = 'arraybuffer'\n\n let ws_ready, readyState = websock.readyState\n if 1 !== readyState ::\n if 0 !== readyState ::\n throw new Error @ 'WS readyState'\n\n ws_ready = new Promise @ ready => websock.onopen = ready\n\n this.conn.setup @ ws_ready,\n u8_pkt => websock.send(u8_pkt),\n (on_mqtt_chunk, conn) => ::\n websock.onmessage = evt => @\n on_mqtt_chunk @ new Uint8Array(evt.data)\n\n websock.onclose = evt => ::\n if ! evt.wasClean ::\n var err = new Error('websocket close')\n err.code = evt.code\n err.reason = evt.reason\n\n conn.reset(err)\n\n return this\n\nexport { MQTTCore as default }\n","import mqtt_opts_v5 from 'u8-mqtt-packet/esm/codec_v5_client.js'\nimport {with_topic_path_router} from './router_path.jsy'\nimport MQTTCore from './core.jsy'\nexport * from './version.js'\n\nconst MQTTClient_v4 = /* #__PURE__ */\n with_topic_path_router(\n MQTTCore.mqtt_ctx(4, mqtt_opts_v5) )\n\nconst MQTTClient_v5 = /* #__PURE__ */\n with_topic_path_router(\n MQTTCore.mqtt_ctx(5, mqtt_opts_v5) )\n\nconst mqtt_v4 = opt =>\n new MQTTClient_v4(opt)\n\nconst mqtt_v5 = opt =>\n new MQTTClient_v5(opt)\n\nexport {\n MQTTClient_v4,\n MQTTClient_v5,\n MQTTClient_v5 as MQTTClient,\n\n mqtt_v4,\n mqtt_v5,\n mqtt_v5 as mqtt,\n mqtt_v5 as default,\n}\n"],"names":["decode_varint","_rxp_parse"],"mappings":"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","x_google_ignoreList":[0,1,5]}
1
+ {"version":3,"file":"v5.js","sources":["../../node_modules/u8-mqtt-packet/esm/codec_v5_client.js","../../node_modules/regexparam/dist/index.mjs","../../code/_utils.jsy","../../code/with_topic_router.jsy","../../code/router_path.jsy","../../node_modules/u8-mqtt-packet/esm/codec_bind.js","../../code/_cmdid_dispatch.jsy","../../code/_dispatch.jsy","../../code/base.jsy","../../code/_conn.jsy","../../code/core.jsy","../../code/v5.js"],"sourcesContent":["function encode_varint(n, a=[]) {\n a.push((n<0x80 ? 0 : 0x80) | (n & 0x7f));\n for(; ( n>>>=7 ) > 0 ;)\n a.push((n<0x80 ? 0 : 0x80) | (n & 0x7f));\n return a\n}\n\nfunction decode_varint(u8, i0=0, invalid) {\n let shift=0, i=i0, b=u8[i++], n=(b & 0x7f);\n for(; b & 0x80;)\n n |= ((b=u8[i++]) & 0x7f) << (shift += 7);\n\n return (u8.length < i)\n ? [invalid, i0, i0] // fail: insuffecient u8 bytes to decode\n : [n, i, i0] // successful value\n}\n\nfunction add_mqtt_props(mqtt_props, entries) {\n for (let [id, type, name, obj] of entries) {\n obj = {id, type, name, ...obj};\n mqtt_props.set(id, obj).set(name, obj);\n }\n return mqtt_props\n}\n\n\nconst init_mqtt_props = () =>\n add_mqtt_props(new Map(), [\n [ 0x01, 'u8', 'payload_format_indicator'],\n [ 0x02, 'u32', 'message_expiry_interval'],\n [ 0x03, 'utf8', 'content_type'],\n [ 0x08, 'utf8', 'response_topic'],\n [ 0x09, 'bin', 'correlation_data'],\n [ 0x0B, 'vint', 'subscription_identifier'],\n [ 0x11, 'u32', 'session_expiry_interval'],\n [ 0x12, 'utf8', 'assigned_client_identifier'],\n [ 0x13, 'u16', 'server_keep_alive'],\n [ 0x15, 'utf8', 'authentication_method'],\n [ 0x16, 'bin', 'authentication_data'],\n [ 0x17, 'u8', 'request_problem_information'],\n [ 0x18, 'u32', 'will_delay_interval'],\n [ 0x19, 'u8', 'request_response_information'],\n [ 0x1A, 'utf8', 'response_information'],\n [ 0x1C, 'utf8', 'server_reference'],\n [ 0x1F, 'utf8', 'reason_string'],\n [ 0x21, 'u16', 'receive_maximum'],\n [ 0x22, 'u16', 'topic_alias_maximum'],\n [ 0x23, 'u16', 'topic_alias'],\n [ 0x24, 'u8', 'maximum_qos'],\n [ 0x25, 'u8', 'retain_available'],\n [ 0x26, 'pair', 'user_properties', {op: 'kv_obj'}],\n [ 0x27, 'u32', 'maximum_packet_size'],\n [ 0x28, 'u8', 'wildcard_subscription_available'],\n [ 0x29, 'u8', 'subscription_identifiers_available', {op: 'u8_vec'}],\n [ 0x2A, 'u8', 'shared_subscription_available'],\n ]);\n\n\nconst mqtt_props = /* #__PURE__ */\n init_mqtt_props();\n\nclass mqtt_reason extends Number {\n constructor(v, reason) {\n super(v);\n this.reason = `:${(this.ok = v<0x80) ? 'ok' : 'fail'}:${reason}`;\n }\n}\n\nclass mqtt_reader_v4 {\n static for(pkt, u8_body) { return new this().of(u8_body, {pkt}) }\n of(buf, opt) {\n let step = (width, k) => (k=0|step.k, step.k=k+width, k);\n return {__proto__: this, buf, step, ...opt}\n }\n\n has_more() {\n return this.buf.byteLength > (this.step.k|0)\n }\n\n u8() {\n return this.buf[this.step(1)]\n }\n\n u16() {\n let {buf, step} = this, i = step(2);\n return (buf[i]<<8) | buf[i+1]\n }\n\n u32() {\n let {buf, step} = this, i = step(4);\n return (buf[i]<<24) | (buf[i+1]<<16) | (buf[i+2]<<8) | buf[i+3]\n }\n\n vint() {\n let {buf, step} = this;\n let [n, vi, vi0] = decode_varint(buf, step.k|0);\n step(vi - vi0);\n return n\n }\n\n bin() {\n let {buf, step} = this, i = step(2);\n let len = (buf[i]<<8) | buf[i+1];\n i = step(len);\n return buf.subarray(i, i+len)\n }\n\n utf8() { return new TextDecoder('utf-8').decode(this.bin()) }\n pair() { return [ this.utf8(), this.utf8() ] }\n\n flags(FlagsType) { return new FlagsType(this.buf[this.step(1)]) }\n\n reason(pkt_kind) {\n let v = this.buf[this.step(1)];\n if (null != v)\n return new mqtt_reason(v, this._reason_for?.(v, pkt_kind))\n }\n\n flush() {\n let {buf, step} = this;\n this.step = this.buf = null;\n return buf.subarray(step.k|0)\n }\n\n}\n\nlet mqtt_reader_v5$1 = class mqtt_reader_v5 extends mqtt_reader_v4 {\n props() {\n let {buf, step} = this;\n let [n, vi, vi0] = decode_varint(buf, step.k|0, 0);\n step(n + vi - vi0);\n if (0 === n) return null\n\n let res={}, fork = this.of(buf.subarray(vi, step.k|0));\n while (fork.has_more()) {\n let v, pk = fork.u8(), pt = mqtt_props.get( pk );\n if (!pt) {\n res._unknown_ = pk;\n this.warn?.(`unknown property: ${pk}`);\n break\n }\n\n v = fork[pt.type]();\n res[pt.name] = !pt.op ? v\n : fork[pt.op](res[pt.name], v); // accumulate operation\n }\n return res\n }\n\n kv_obj(obj=Object.create(null), [k,v]) {\n obj[k] = v;\n return obj\n }\n u8_vec(vec=[], u8) {\n vec.push(u8);\n return vec\n }\n\n /*\n vbuf() {\n let {buf, step} = this\n let [n, vi, vi0] = decode_varint(buf, step.k|0)\n step(n + vi - vi0)\n return 0 === n ? null\n : buf.subarray(vi, step.k|0)\n }\n */\n};\n\nfunction with_reasons(mqtt_reader, by_kind) {\n for (let [k,lut] of Object.entries(by_kind))\n by_kind[k] = new Map(lut);\n\n return class extends mqtt_reader {\n _reason_for(v, pkt_kind) {\n return by_kind[pkt_kind]?.get(v) || by_kind.all.get(v)\n }\n warn(msg) {\n let pkt = this.pkt;\n pkt.warn ? pkt.warn(msg, pkt)\n : console.warn('[u8-mqtt-packet] '+msg);\n }\n }\n}\n\n\nconst reasons_v4 = {\n connack: [\n [ 0x01, 'conn refused: unacceptable protocol version'],\n [ 0x02, 'conn refused: identifier rejected'],\n [ 0x03, 'conn refused: server unavailable'],\n [ 0x04, 'conn refused: bad user name or password'],\n [ 0x05, 'conn refused: not authorized'],\n ],\n suback: [\n [ 0x00, 'qos=0'],\n [ 0x01, 'qos=1'],\n [ 0x02, 'qos=2'],\n ],\n unsuback: [\n [ 0x11, 'no subscription existed'],\n ],\n puback: [\n [ 0x10, 'no matching subscribers'],\n ],\n all: [\n [ 0, ''], // Success\n [ 0x80, 'unspecified error'], // disconnect puback suback unsuback\n [ 0x83, 'implementation specific error'], // connack disconnect puback suback unsuback\n [ 0x87, 'not authorized'], // connack disconnect puback suback unsuback\n [ 0x8F, 'topic filter invalid'], // disconnect suback unsuback\n [ 0x91, 'packet identifier in use'], // puback suback unsuback\n [ 0x92, 'packet identifier not found' ], // pubxxx\n ]};\n\nconst reasons_v5 = {\n ... reasons_v4,\n auth: [\n [ 0x18, 'continue authentication' ],\n [ 0x19, 're-authenticate' ],\n ],\n disconnect: [\n [ 0x04, 'disconnect with will message'],\n ],\n all: [\n ... reasons_v4.all,\n [ 0x81, 'malformed packet'], // connack disconnect\n [ 0x82, 'protocol error'], // connack disconnect\n [ 0x84, 'unsupported protocol version'], // connack\n [ 0x85, 'client identifier not valid'], // connack\n [ 0x86, 'bad user name or password'], // connack\n [ 0x88, 'server unavailable'], // connack\n [ 0x89, 'server busy'], // connack disconnect\n [ 0x8A, 'banned'], // connack\n [ 0x8B, 'server shutting down'], // disconnect\n [ 0x8C, 'bad authentication method'], // connack\n [ 0x8D, 'keep alive timeout'], // disconnect\n [ 0x8E, 'session taken over'], // disconnect\n [ 0x90, 'topic name invalid'], // connack disconnect puback\n [ 0x93, 'receive maximum exceeded'], // disconnect\n [ 0x94, 'topic alias invalid'], // disconnect\n [ 0x95, 'packet too large'], // connack disconnect\n [ 0x96, 'message rate too high'], // disconnect\n [ 0x97, 'quota exceeded'], // connack disconnect puback suback\n [ 0x98, 'administrative action'], // disconnect\n [ 0x99, 'payload format invalid'], // connack disconnect puback\n [ 0x9A, 'retain not supported'], // connack disconnect\n [ 0x9B, 'qoS not supported'], // connack disconnect\n [ 0x9C, 'use another server'], // connack disconnect\n [ 0x9D, 'server moved'], // connack disconnect\n [ 0x9E, 'shared subscriptions not supported'], // disconnect suback\n [ 0x9F, 'connection rate exceeded'], // connack disconnect\n [ 0xA0, 'maximum connect time'], // disconnect\n [ 0xA1, 'subscription identifiers not supported'], // disconnect suback\n [ 0xA2, 'wildcard subscriptions not supported'], // disconnect suback\n ]};\n\nconst mqtt_reader_v5 = /* #__PURE__ */\n with_reasons(mqtt_reader_v5$1, reasons_v5);\n\nclass mqtt_writer_v4 {\n static for(pkt) { return new this().of() }\n of() { return {__proto__: this, $:[]} }\n\n static init() { return this }\n\n as_pkt(pkt_id) { return this.pack([pkt_id]) }\n\n push(...z) { this.$.push(...z); }\n pack(hdr) {\n let z, i, n=0, parts = this.$;\n this.$ = false;\n for (z of parts) n += z.length;\n\n hdr = encode_varint(n, hdr);\n i = hdr.length;\n\n let pkt = new Uint8Array(i + n);\n pkt.set(hdr, 0);\n for (z of parts) {\n pkt.set(z, i);\n i += z.length;\n }\n return pkt\n }\n\n u8(v) { this.push([ v & 0xff ]); }\n u16(v) { this.push([ (v>>>8) & 0xff, v & 0xff ]); }\n u32(v) { this.push([ (v>>>24) & 0xff, (v>>>16) & 0xff, (v>>>8) & 0xff, v & 0xff ]); }\n vint(v) { this.push( encode_varint(v) );}\n\n bin(u8_buf) {\n if (! u8_buf) return this.u16(0)\n if ('string' === typeof u8_buf)\n return this.utf8(u8_buf)\n\n if (u8_buf.length !== u8_buf.byteLength)\n u8_buf = new Uint8Array(u8_buf);\n\n this.u16(u8_buf.byteLength);\n this.push(u8_buf);\n }\n\n utf8(v) {\n let u8_buf = new TextEncoder('utf-8').encode(v);\n this.u16(u8_buf.byteLength);\n this.push(u8_buf);\n }\n pair(k,v) { this.utf8(k); this.utf8(v); }\n\n flags(v, enc_flags, b0=0) {\n if (undefined !== v && isNaN(+v))\n v = enc_flags(v, 0);\n\n v |= b0;\n this.push([v]);\n return v\n }\n\n reason(v) { this.push([v | 0]); }\n\n flush(buf) {\n if (null != buf)\n this.push(\n 'string' === typeof buf\n ? new TextEncoder('utf-8').encode(buf)\n : buf );\n\n this.push = false;\n }\n}\n\n\nclass mqtt_writer_v5 extends mqtt_writer_v4 {\n props(props) {\n if (! props)\n return this.u8(0)\n\n if (! Array.isArray(props))\n props = props.entries\n ? Array.from(props.entries())\n : Object.entries(props);\n\n if (0 === props.length)\n return this.u8(0)\n\n let fork = this.of();\n for (let [name, value] of props) {\n let pt = mqtt_props.get(name);\n if (!pt)\n throw new Error(`MQTT unknown property \"${name}\"`)\n\n fork[pt.op || 'one'](value, pt);\n }\n this.push(fork.pack());\n }\n\n one(value, pt) {\n this.u8(pt.id);\n this[pt.type](value);\n }\n kv_obj(obj, pt) {\n for (let kv of Object.entries(obj)) {\n this.u8(pt.id);\n this.pair(kv);\n }\n }\n u8_vec(vec, pt) {\n for (let v of vec) {\n this.u8(pt.id);\n this.u8(v);\n }\n }\n}\n\nfunction mqtt_encode_connect(ns, mqtt_writer) {\n const _c_mqtt_proto = new Uint8Array([\n 0, 4, 0x4d, 0x51, 0x54, 0x54 ]);\n\n const _enc_flags_connect = flags => 0\n | ( flags.reserved ? 0x01 : 0 )\n | ( (flags.will_qos & 0x3) << 3 )\n | ( flags.clean_start ? 0x02 : 0 )\n | ( flags.will_flag ? 0x04 : 0 )\n | ( flags.will_retain ? 0x20 : 0 )\n | ( flags.password ? 0x40 : 0 )\n | ( flags.username ? 0x80 : 0 );\n\n const _enc_flags_will = will => 0x4\n | ( (will.qos & 0x3) << 3 )\n | ( will.retain ? 0x20 : 0 );\n\n return ns.connect = ( mqtt_level, pkt ) => {\n let wrt = mqtt_writer.for(pkt);\n\n wrt.push(_c_mqtt_proto);\n wrt.u8( mqtt_level );\n\n let {will, username, password} = pkt;\n let flags = wrt.flags(\n pkt.flags,\n _enc_flags_connect,\n 0 | (username ? 0x80 : 0)\n | (password ? 0x40 : 0)\n | (will ? _enc_flags_will(will) : 0) );\n\n wrt.u16(pkt.keep_alive);\n\n if (5 <= mqtt_level)\n wrt.props(pkt.props);\n\n\n wrt.utf8(pkt.client_id);\n if (flags & 0x04) { // .will_flag\n if (5 <= mqtt_level)\n wrt.props(will.props);\n\n wrt.utf8(will.topic);\n wrt.bin(will.payload);\n }\n\n if (flags & 0x80) // .username\n wrt.utf8(username);\n\n if (flags & 0x40) // .password\n wrt.bin(password);\n\n return wrt.as_pkt(0x10)\n }\n}\n\nfunction mqtt_decode_connack(ns, mqtt_reader) {\n class _connack_flags_ extends Number {\n get session_present() { return this & 0x01 !== 0 }\n }\n\n return ns[0x2] = (pkt, u8_body) => {\n let rdr = mqtt_reader.for(pkt, u8_body);\n\n pkt.flags =\n rdr.flags(_connack_flags_);\n\n pkt.reason = rdr.reason(pkt.type);\n if (5 <= pkt.mqtt_level)\n pkt.props = rdr.props();\n return pkt }\n}\n\nfunction mqtt_encode_publish(ns, mqtt_writer) {\n return ns.publish = ( mqtt_level, pkt ) => {\n let qos = (pkt.qos & 0x3) << 1;\n let wrt = mqtt_writer.for(pkt);\n\n wrt.utf8(pkt.topic);\n if (0 !== qos)\n wrt.u16(pkt.pkt_id);\n\n if ( 5 <= mqtt_level) {\n wrt.props(pkt.props);\n wrt.flush(pkt.payload);\n } else {\n wrt.flush(pkt.payload);\n }\n\n return wrt.as_pkt(\n 0x30 | qos | (pkt.dup ? 0x8 : 0) | (pkt.retain ? 0x1 : 0) )\n }\n}\n\nfunction mqtt_decode_publish(ns, mqtt_reader) {\n return ns[0x3] = (pkt, u8_body) => {\n let {hdr} = pkt;\n pkt.dup = Boolean(hdr & 0x8);\n pkt.retain = Boolean(hdr & 0x1);\n let qos = pkt.qos = (hdr>>1) & 0x3;\n\n let rdr = mqtt_reader.for(pkt, u8_body);\n pkt.topic = rdr.utf8();\n if (0 !== qos)\n pkt.pkt_id = rdr.u16();\n\n if (5 <= pkt.mqtt_level)\n pkt.props = rdr.props();\n\n pkt.payload = rdr.flush();\n return pkt }\n}\n\nfunction mqtt_encode_puback(ns, mqtt_writer) {\n return ns.puback = ( mqtt_level, pkt ) => {\n let wrt = mqtt_writer.for(pkt);\n\n wrt.u16(pkt.pkt_id);\n if (5 <= mqtt_level) {\n wrt.reason(pkt.reason);\n wrt.props(pkt.props);\n }\n\n return wrt.as_pkt(0x40)\n }\n}\n\n\nfunction mqtt_decode_puback(ns, mqtt_reader) {\n return ns[0x4] = (pkt, u8_body) => {\n let rdr = mqtt_reader.for(pkt, u8_body);\n\n pkt.pkt_id = rdr.u16();\n if (5 <= pkt.mqtt_level) {\n pkt.reason = rdr.reason(pkt.type);\n pkt.props = rdr.props();\n }\n\n return pkt }\n}\n\nfunction mqtt_encode_subscribe(ns, mqtt_writer) {\n const _enc_subscribe_flags = opts => 0\n | ( opts.qos & 0x3 )\n | ( opts.retain ? 0x4 : 0 )\n | ( (opts.retain_handling & 0x3) << 2 );\n\n return ns.subscribe = ( mqtt_level, pkt ) => {\n let wrt = mqtt_writer.for(pkt);\n\n wrt.u16(pkt.pkt_id);\n if (5 <= mqtt_level)\n wrt.props(pkt.props);\n\n let f0 = _enc_subscribe_flags(pkt);\n for (let each of pkt.topics) {\n if ('string' === typeof each) {\n wrt.utf8(each);\n wrt.u8(f0);\n } else {\n let [topic, opts] =\n Array.isArray(each) ? each\n : [each.topic, each.opts];\n\n wrt.utf8(topic);\n if (undefined === opts) wrt.u8(f0);\n else wrt.flags(opts, _enc_subscribe_flags);\n }\n }\n\n return wrt.as_pkt(0x82)\n }\n}\n\nfunction mqtt_decode_xxsuback(ns, mqtt_reader) {\n return ns[0x9] = ns[0xb] = (pkt, u8_body) => {\n let rdr = mqtt_reader.for(pkt, u8_body);\n\n pkt.pkt_id = rdr.u16();\n if (5 <= pkt.mqtt_level)\n pkt.props = rdr.props();\n\n let answers = pkt.answers = [];\n while (rdr.has_more())\n answers.push(\n rdr.reason(pkt.type) );\n\n return pkt }\n}\n\nfunction mqtt_encode_unsubscribe(ns, mqtt_writer) {\n return ns.unsubscribe = ( mqtt_level, pkt ) => {\n let wrt = mqtt_writer.for(pkt);\n\n wrt.u16(pkt.pkt_id);\n if (5 <= mqtt_level)\n wrt.props(pkt.props);\n\n for (let topic of pkt.topics)\n wrt.utf8(topic);\n\n return wrt.as_pkt(0xa2)\n }\n}\n\nfunction mqtt_encode_pingxxx(ns) {\n ns.pingreq = () => new Uint8Array([ 0xc0, 0 ]);\n ns.pingresp = () => new Uint8Array([ 0xd0, 0 ]);\n}\n\n\nfunction mqtt_decode_pingxxx(ns) {\n return ns[0xc] = ns[0xd] = pkt => pkt\n}\n\nfunction mqtt_encode_disconnect(ns, mqtt_writer) {\n return ns.disconnect = ( mqtt_level, pkt ) => {\n let wrt = mqtt_writer.for(pkt);\n\n if (pkt && 5 <= mqtt_level) {\n if (pkt.reason || pkt.props) {\n wrt.reason(pkt.reason);\n wrt.props(pkt.props);\n }\n }\n\n return wrt.as_pkt(0xe0)\n }\n}\n\n\nfunction mqtt_decode_disconnect(ns, mqtt_reader) {\n return ns[0xe] = (pkt, u8_body) => {\n if (u8_body && 5 <= pkt.mqtt_level) {\n let rdr = mqtt_reader.for(pkt, u8_body);\n pkt.reason = rdr.reason(pkt.type);\n pkt.props = rdr.props();\n }\n return pkt }\n}\n\nfunction mqtt_encode_auth(ns, mqtt_writer) {\n return ns.auth = ( mqtt_level, pkt ) => {\n if (5 > mqtt_level)\n throw new Error('Auth packets are only available after MQTT 5.x')\n\n let wrt = mqtt_writer.of(pkt);\n\n wrt.reason(pkt.reason);\n wrt.props(pkt.props);\n\n return wrt.as_pkt(0xf0)\n }\n}\n\nfunction mqtt_decode_auth(ns, mqtt_reader) {\n return ns[0xf] = (pkt, u8_body) => {\n if ( 5 <= pkt.mqtt_level ) {\n let rdr = mqtt_reader.of(u8_body);\n pkt.reason = rdr.reason(pkt.type);\n pkt.props = rdr.props();\n }\n return pkt }\n}\n\nconst version = '0.4.1';\n\nconst mqtt_decode_v5 = [\n mqtt_decode_connack,\n mqtt_decode_publish,\n mqtt_decode_puback,\n mqtt_decode_xxsuback,\n mqtt_decode_pingxxx,\n mqtt_decode_disconnect,\n mqtt_decode_auth,\n];\n\n\nconst mqtt_encode_v5 = [\n mqtt_encode_connect,\n mqtt_encode_puback,\n mqtt_encode_publish,\n mqtt_encode_subscribe,\n mqtt_encode_unsubscribe,\n mqtt_encode_pingxxx,\n mqtt_encode_disconnect,\n mqtt_encode_auth,\n];\n\nconst mqtt_opts_v5 = \n { decode_fns: mqtt_decode_v5,\n mqtt_reader: mqtt_reader_v5,\n encode_fns: mqtt_encode_v5,\n mqtt_writer: mqtt_writer_v5, };\n\nexport { add_mqtt_props, mqtt_opts_v5 as default, init_mqtt_props, mqtt_decode_v5, mqtt_encode_v5, mqtt_opts_v5, mqtt_props, mqtt_reader_v5, mqtt_writer_v5, version };\n//# sourceMappingURL=codec_v5_client.js.map\n","export function parse(str, loose) {\n\tif (str instanceof RegExp) return { keys:false, pattern:str };\n\tvar c, o, tmp, ext, keys=[], pattern='', arr = str.split('/');\n\tarr[0] || arr.shift();\n\n\twhile (tmp = arr.shift()) {\n\t\tc = tmp[0];\n\t\tif (c === '*') {\n\t\t\tkeys.push('wild');\n\t\t\tpattern += '/(.*)';\n\t\t} else if (c === ':') {\n\t\t\to = tmp.indexOf('?', 1);\n\t\t\text = tmp.indexOf('.', 1);\n\t\t\tkeys.push( tmp.substring(1, !!~o ? o : !!~ext ? ext : tmp.length) );\n\t\t\tpattern += !!~o && !~ext ? '(?:/([^/]+?))?' : '/([^/]+?)';\n\t\t\tif (!!~ext) pattern += (!!~o ? '?' : '') + '\\\\' + tmp.substring(ext);\n\t\t} else {\n\t\t\tpattern += '/' + tmp;\n\t\t}\n\t}\n\n\treturn {\n\t\tkeys: keys,\n\t\tpattern: new RegExp('^' + pattern + (loose ? '(?=$|\\/)' : '\\/?$'), 'i')\n\t};\n}\n\nvar RGX = /(\\/|^)([:*][^/]*?)(\\?)?(?=[/.]|$)/g;\n\n// error if key missing?\nexport function inject(route, values) {\n\treturn route.replace(RGX, (x, lead, key, optional) => {\n\t\tx = values[key=='*' ? 'wild' : key.substring(1)];\n\t\treturn x ? '/'+x : (optional || key=='*') ? '' : '/' + key;\n\t});\n}\n","export const _isfn = v => typeof v === 'function'\nexport const _isstr = v => typeof v === 'string'\n\nexport function _interval(fn_callback) ::\n let tid\n return @\\ td ::\n tid = clearInterval(tid)\n if td ::\n tid = setInterval(fn_callback, 1000 * td)\n #IF PLAT_DENO\n // ensure the interval allows the Deno event loop to exit\n Deno.unrefTimer(tid)\n #ELSE\n // ensure the interval allows the NodeJS event loop to exit\n tid.unref?.()\n return true\n\n","/*\nclass AbstractTopicRouter ::\n async invoke(pkt, ctx) ::\n add(topic_route, ...args) ::\n remove(topic_route, priority) ::\n clear(priority) ::\n find(topic) :: // optional\n mqtt_topic(topic_route)\n*/\n\nexport const with_topic_router = mqtt_topic_router =>\n MQTTKlass => class extends MQTTKlass ::\n static _aliases() ::\n return super._aliases() +\n ' sub_topic:subscribe_topic unsub_topic:unsubscribe_topic'\n\n _init_router(opt, self, target) ::\n this._subs = []\n let router = this.router = target.router =\n mqtt_topic_router(opt, this, target)\n return router?.invoke\n\n on_sub(suback, pkt) ::\n suback.pkt = pkt\n this._subs.push(suback)\n return suback\n subs_settled() ::\n return Promise.allSettled @\n this._subs.splice(0,Infinity)\n\n // alias: sub_topic\n subscribe_topic(topic_route, ...args) ::\n let router = this.router\n router.add @ topic_route, true, args.pop() // handler\n let topic = router.mqtt_topic(topic_route)\n this.subscribe @ topic, ...args // ex, topic_prefix\n return this // fluent api -- return this and track side effects\n\n // alias: unsub_topic\n unsubscribe_topic(topic_route, ...args) ::\n let router = this.router\n router.remove @ topic_route, true\n let topic = router.mqtt_topic(topic_route)\n return this.unsubscribe @ topic, ...args // topic_prefix\n\n // add topic handlers without corresponding subscribe packet\n on_topic(...args) ::\n this.router.add(...args)\n return this\n\n","// Use [regexparam][] for url-like topic parsing\n// [regexparam]: https://github.com/lukeed/regexparam\n\nimport {parse as _rxp_parse} from 'regexparam'\nimport {_isfn} from './_utils.jsy'\nimport {with_topic_router} from './with_topic_router.jsy'\n\nexport const with_topic_path_router = /* #__PURE__ */\n with_topic_router(mqtt_topic_path_router)\n\n\nconst mqtt_topic = topic_route =>\n topic_route\n .replace @ /[*].*$/, '#'\n .replace @ /:\\w[^\\/]*/g, '+'\n\n/* From the [MQTT v5 Spec](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Topic_Names_and)\n4.7.1.2 Multi-level wildcard -- (‘#’ U+0023)\n... MUST be specified either on its own or following a topic level separator.\nIn either case it MUST be the last character specified in the Topic Filter\n\n4.7.1.3 Single-level wildcard -- (‘+’ U+002B)\n...it MUST occupy an entire level of the filter.\n*/\n\nexport const as_topic_path = (topic_route, id) => @\n id=1,\n topic_route\n .replace @ /#$/, '*' // replace MQTT '#' multi-level wildcard at end\n .replace @ /\\+/g, () => `:$${id++}` // replace MQTT '+' single-level wildcards\n\nfunction _ignore(pkt, params, ctx) :: ctx.done = true\n\nfunction mqtt_topic_path_router() ::\n let pri_lsts = [[],[]], rm = Symbol()\n let find = topic => _routes_iter(pri_lsts, topic)\n\n // return duck-type compatible with AbstractTopicRouter in ./with_topic_router\n return @{} find, mqtt_topic,\n add(topic_route, ...args) ::\n let fn = args.pop()\n let priority = args.pop()\n\n if ! _isfn(fn) ::\n if fn :: throw new TypeError()\n fn = _ignore\n\n let rte = _rxp_parse @ as_topic_path @ topic_route\n\n rte.key = topic_route\n rte.tgt = fn\n pri_lsts[priority ? 0 : 1].push(rte)\n return this\n\n remove(topic_route, priority) ::\n let lst = pri_lsts[priority ? 0 : 1]\n return _route_remove([lst], topic_route)\n\n clear(priority) ::\n pri_lsts[priority ? 0 : 1] = []\n if null == priority ::\n pri_lsts[1] = [] // null clears both lists\n\n async invoke(pkt, ctx) ::\n ctx.idx = 0\n ctx.rm = rm\n\n for let [fn, params] of find(pkt.topic) ::\n let res = await fn(pkt, params, ctx)\n\n if rm === res ::\n _route_remove(pri_lsts, fn)\n\n if ctx.done ::\n break\n else ctx.idx++\n\n if 1 === pkt.qos ::\n await ctx.mqtt.puback(pkt)\n\n\nfunction * _routes_iter(all_route_lists, topic) ::\n topic = topic.replace(/^[\\/]*/, '/') // ensure '/' prefix for regexparam library\n for let route_list of all_route_lists ::\n for let {keys, pattern, tgt} of route_list ::\n let match = pattern.exec(topic)\n if match ::\n let params = keys\n ? keys.reduce @\n (o, k, i) => (o[k] = match[1+i], o)\n {}\n : match.groups ?? match\n yield [tgt, params]\n\n\nfunction _route_remove(all_route_lists, query) ::\n let fn_match = route => @\n route===query\n || route.tgt===query\n || route.key===query\n for let lst of all_route_lists ::\n let i = lst.findIndex(fn_match)\n if 0 <= i ::\n lst.splice(i,1)\n return true\n return false\n\n","function decode_varint(u8, i0=0, invalid) {\n let shift=0, i=i0, b=u8[i++], n=(b & 0x7f);\n for(; b & 0x80;)\n n |= ((b=u8[i++]) & 0x7f) << (shift += 7);\n\n return (u8.length < i)\n ? [invalid, i0, i0] // fail: insuffecient u8 bytes to decode\n : [n, i, i0] // successful value\n}\n\nfunction mqtt_raw_dispatch(opt) {\n let u8 = new Uint8Array(0), len_tip=0;\n return u8_buf => {\n u8 = 0 === u8.byteLength\n ? u8_buf : _u8_join(u8, u8_buf);\n\n let res = [];\n\n // wait for at least len_tip bytes for next (tip) message\n while ( u8.byteLength >= len_tip ) {\n\n // if varint is incomplete, return len_body=NaN\n let [len_body, len_vh] = decode_varint(u8, 1, NaN);\n let len_pkt = len_body + len_vh; // may be NaN\n\n if (!( len_pkt <= u8.byteLength )) {\n // incomplete packet cases:\n // - len_pkt is less than available bytes\n // - len_pkt is NaN from decode_varint() due to lack of data\n len_tip = len_pkt || 0; // 0 when NaN\n break\n }\n\n let b0 = u8[0];\n let u8_body = 0 === len_body ? null\n : u8.subarray(len_vh, len_pkt);\n\n u8 = u8.subarray(len_pkt);\n\n let pkt = opt.decode_pkt(b0, u8_body, opt);\n if (null != pkt)\n res.push( pkt );\n }\n\n return res\n }\n}\n\nfunction _u8_join(a, b) {\n let alen = a.byteLength, r = new Uint8Array(alen + b.byteLength);\n r.set(a, 0);\n r.set(b, alen);\n return r\n}\n\nconst version = '0.4.1';\n\nconst _pkt_types = ['~', 'connect', 'connack', 'publish', 'puback', 'pubrec', 'pubrel', 'pubcomp', 'subscribe', 'suback', 'unsubscribe', 'unsuback', 'pingreq', 'pingresp', 'disconnect', 'auth'];\n\n\nfunction mqtt_pkt_ctx(mqtt_level, opts, pkt_api=opts.pkt_ctx) {\n let _as_pkt_ctx = pkt_api => ({\n __proto__: pkt_api,\n get hdr() { return this.b0 & 0xf },\n get id() { return this.b0 >>> 4 },\n get type() { return _pkt_types[this.b0 >>> 4] },\n mqtt_level });\n\n\n let op, _decode_by_id=[], _encode_by_type={};\n for (op of opts.encode_fns)\n op(_encode_by_type, opts.mqtt_writer);\n for (op of opts.decode_fns)\n op(_decode_by_id, opts.mqtt_reader);\n\n return {\n pkt_api, pkt_ctx: _as_pkt_ctx(pkt_api),\n\n encode_pkt: (type, pkt) =>\n _encode_by_type[type]( mqtt_level, pkt ),\n\n decode_pkt(b0, u8_body) {\n if (b0.map) // Uint8Array in first arg\n return mqtt_raw_dispatch(this)(b0)[0]\n\n let fn_decode = _decode_by_id[b0>>>4] || _decode_by_id[0];\n return fn_decode?.({__proto__: this.pkt_ctx, b0}, u8_body) },\n\n mqtt_stream(pkt_api=this.pkt_api) {\n let self = { __proto__: this, pkt_ctx: _as_pkt_ctx(pkt_api) };\n self.decode = mqtt_raw_dispatch(self);\n return self },\n }\n}\n\nexport { mqtt_pkt_ctx as default, mqtt_pkt_ctx, version };\n//# sourceMappingURL=codec_bind.js.map\n","\nasync function _mqtt_cmd_evt(target, answer, pkt, ctx) ::\n /* target : on_mqtt_type = {\n mqtt_pkt(pkt, ctx) {}, // generic\n\n mqtt_auth(pkt, ctx) {},\n mqtt_connect(pkt, ctx) {},\n mqtt_connack(pkt, ctx) {},\n mqtt_disconnect(pkt, ctx) {},\n\n mqtt_publish(pkt, ctx) {},\n mqtt_subscribe(pkt, ctx) {},\n mqtt_unsubscribe(pkt, ctx) {},\n\n mqtt_pingreq(pkt, ctx) {},\n mqtt_pingresp(pkt, ctx) {},\n } */\n\n let pkt_fn = target[`mqtt_${pkt.type}`] || target.mqtt_pkt\n await pkt_fn?.call(target, pkt, ctx)\n\nfunction _mqtt_cmd_type(target, answer, pkt, ctx) ::\n answer(pkt.type, pkt)\n _mqtt_cmd_evt(target, answer, pkt, ctx)\n\nfunction _mqtt_cmd_id(target, answer, pkt) ::\n answer(pkt.pkt_id, pkt)\n\n\nexport const _mqtt_cmdids = @[]\n _ => {} // 0x0 reserved\n _mqtt_cmd_evt // 0x1 connect\n _mqtt_cmd_type // 0x2 connack\n _mqtt_cmd_evt // 0x3 publish\n _mqtt_cmd_id // 0x4 puback\n _mqtt_cmd_id // 0x5 pubrec\n _mqtt_cmd_id // 0x6 pubrel\n _mqtt_cmd_id // 0x7 pubcomp\n _mqtt_cmd_evt // 0x8 subscribe\n _mqtt_cmd_id // 0x9 suback\n _mqtt_cmd_evt // 0xa unsubscribe\n _mqtt_cmd_id // 0xb unsuback\n _mqtt_cmd_type // 0xc pingreq\n _mqtt_cmd_type // 0xd pingresp\n _mqtt_cmd_evt // 0xe disconnect\n _mqtt_cmd_type // 0xf auth\n\n","import { _isstr } from './_utils.jsy'\nimport {_mqtt_cmdids} from './_cmdid_dispatch.jsy'\n\nexport function _mqtt_dispatch(opt, target) ::\n let hashbelt=[], rotate_ts=0\n // default rotate at 1s across 5 buckets\n let { td: rotate_td=1000, n: rotate_n=5 } = opt?.rotate || {}\n\n // Promise / future scaffolding\n let _pkt_id=100, _ftr_key // use _ftr_key to reuse _by_key closure\n let _ftr_by_key = fn_answer => hashbelt[0].set(_ftr_key, fn_answer)\n\n on_mqtt([]) // init hashbelt and rotate_ts\n return [on_mqtt, pkt_future]\n\n\n function pkt_future(pkt_or_key) ::\n if ! _isstr(pkt_or_key) ::\n _pkt_id = (_pkt_id + 1) & 0xffff // 16-bit unsigned short\n _ftr_key = pkt_or_key.pkt_id = _pkt_id\n else _ftr_key = pkt_or_key\n\n return new Promise(_ftr_by_key)\n\n function answer(key, pkt) ::\n for let map of hashbelt ::\n let fn_answer = map.get(key)\n if fn_answer ::\n map.delete(key)\n\n fn_answer([pkt, /*err*/]) // option/maybe monad\n return true\n return false\n\n function on_mqtt(pkt_list, ctx) ::\n for let pkt of pkt_list ::\n _mqtt_cmdids[pkt.id](target, answer, pkt, ctx)\n\n // rotate after rotate_ts\n let now = Date.now()\n if now > rotate_ts ::\n rotate_ts = rotate_td + now\n hashbelt.unshift(new Map())\n while hashbelt.length > rotate_n ::\n for let fn_answer of hashbelt.pop().values() ::\n fn_answer([/*pkt*/, 'expired']) // option/maybe monad\n\n","import { _isfn, _isstr } from './_utils.jsy'\nimport { _mqtt_dispatch } from './_dispatch.jsy'\n\nexport class MQTTError extends Error ::\n constructor(mqtt_pkt, reason=mqtt_pkt.reason) ::\n // use hex-encoded reasons to match MQTT spec documentation\n super(`[0x${reason.toString(16)}] ${reason.reason}`)\n this.mqtt_pkt = mqtt_pkt\n this.reason = reason\n\nexport class MQTTBase ::\n // Handshaking Packets\n async connect(pkt={}) ::\n let cid = pkt.client_id\n if ! _isstr(cid) ::\n // see init_client_id implementation in core.jsy\n pkt.client_id = cid = this.client_id || this.init_client_id(cid)\n this.client_id = cid\n\n if null == pkt.keep_alive ::\n pkt.keep_alive = 60\n\n let response = await this._send0('connect', pkt, 'connack')\n if 0 != response[0].reason :: // compare to 0 to coerce to number\n throw new this.MQTTError(response[0])\n return this.conn.on_conn(pkt, response)\n\n async disconnect(pkt={}) ::\n let response = await this._send0('disconnect', pkt)\n return this.conn.on_dis(pkt, response)\n\n async auth(pkt={}) ::\n let response = await this._send0('auth', pkt, 'auth')\n if response[0].reason ::\n throw new this.MQTTError(response[0])\n return this.conn.on_auth(pkt, response)\n\n ping() :: return this._send('pingreq', null, 'pingresp')\n puback({pkt_id}) :: return this._send('puback', {pkt_id})\n\n // alias: sub\n subscribe(pkt, ex, topic_prefix) ::\n pkt = _as_topics(pkt, ex, topic_prefix)\n let suback = this._send('subscribe', pkt, pkt)\n return this.on_sub?.(suback, pkt) ?? suback\n\n // alias: unsub\n unsubscribe(pkt, ex, topic_prefix) ::\n pkt = _as_topics(pkt, ex, topic_prefix)\n return this._send('unsubscribe', pkt, pkt)\n\n\n post(topic, payload, pub_opt) :: // qos:0\n return this.pub({topic, payload, qos:0}, pub_opt)\n send(topic, payload, pub_opt) :: // qos:1\n return this.pub({topic, payload, qos:1}, pub_opt)\n store(topic, payload, pub_opt) :: // qos:1, retain: 1\n return this.pub({topic, payload, qos:1, retain: 1}, pub_opt)\n\n // alias: json_post\n obj_post(topic, msg, pub_opt) :: // qos:0\n return this.pub({topic, msg, arg: 'msg', qos:0}, pub_opt)\n // alias: json_send\n obj_send(topic, msg, pub_opt) :: // qos:1\n return this.pub({topic, msg, arg: 'msg', qos:1}, pub_opt)\n // alias: json_store\n obj_store(topic, msg, pub_opt) :: // qos:1, retain: 1\n return this.pub({topic, msg, arg: 'msg', qos:1, retain: 1}, pub_opt)\n\n // alias: publish -- because 'pub' is shorter for semantic aliases above\n async pub(pkt, pub_opt) ::\n if undefined === pkt.payload ::\n if _isfn(pub_opt) ::\n // pub_opt as a function is fn_encode value\n pub_opt = {fn_encode: pub_opt}\n\n let msg = pkt.msg, fn_encode = pub_opt?.fn_encode\n if null == msg || _isfn(msg) ::\n // when msg is a function, return closure using fn_encode\n if msg :: pub_opt = {...pub_opt, fn_encode: msg}\n // return a single-value closure to publish packets\n return v => this.pub({...pkt, [pkt.arg || 'payload']: v}, pub_opt)\n\n // Encode payload from msg; fn_encode allows alternative to JSON.stringify\n pkt.payload = fn_encode\n ? await fn_encode(msg)\n : JSON.stringify(msg)\n\n if pub_opt ::\n if pub_opt.props ::\n pkt.props = pub_opt.props\n if pub_opt.xform ::\n pkt = pub_opt.xform(pkt) || pkt\n\n return this._send @ 'publish', pkt,\n pkt.qos ? pkt : null // key\n\n\n // Internal API\n\n /* async _send0(type, pkt) -- provided by conn and transport */\n /* async _send(type, pkt) -- provided by conn and transport */\n\n _init_dispatch(opt) ::\n this.constructor?._once_()\n let target = @{} __proto__: opt.on_mqtt_type\n target.mqtt_publish ||=\n this._init_router?.(opt, this, target)\n return _mqtt_dispatch(opt, target)\n\n static _aliases() ::\n return ' publish:pub sub:subscribe unsub:unsubscribe json_post:obj_post json_send:obj_send json_store:obj_store'\n\n static _once_(klass=this) ::\n klass._once_ = _=>0\n var alias, name, p = klass.prototype\n p.MQTTError = MQTTError\n for alias of klass._aliases().split(/\\s+/) ::\n [alias, name] = alias.split(':')\n p[alias] = p[name]\n\n\nfunction _as_topics(pkt, ex, topic_prefix) ::\n if ex?.trim :: // string\n topic_prefix = ex\n ex = null\n\n pkt = @\n pkt.trim // string\n ? {topics:[pkt], ... ex}\n : pkt[Symbol.iterator]\n ? {topics:[... pkt], ... ex}\n : ex ? {...pkt, ...ex}\n : pkt\n\n if topic_prefix ::\n // particularly useful with shared queues, e.g.\n // topic_prefix = '$share/some-queue-name/'\n let _prefix_topics = v =>\n v.trim ? topic_prefix+v : v.map(_prefix_topics)\n\n pkt.topics = pkt.topics.map(_prefix_topics)\n return pkt\n\n","import { _interval } from './_utils.jsy'\n\nconst _defer_obj = o => @\n o.p = new Promise @ (a,e) => { o.a=a; o.e=e }\n , o\n\nfunction _dfn_reset(client, attr, fn_after) ::\n // a resetable deferred for a function\n let self = {set}, afn = async (...args) => (await self.p)(...args)\n return set()\n\n function set() ::\n if afn !== client[attr] ::\n _defer_obj(self).p.then(fn_after, _=>0)\n client[attr] = afn\n return self\n\nexport function _mqtt_conn(opt, client, [on_mqtt, pkt_future]) ::\n let _abort\n let _dfn_send0 = _dfn_reset @ client, '_send0', // client._send0 getter/setter\n _=> client.conn_emit('on_live', conn.has_connected)\n let _dfn_ready = _dfn_reset @ client, '_send', // client._send getter/setter\n _=> client.conn_emit('on_ready')\n let _keep_alive_ival = _interval @=> client._send0('pingreq') // resettable interval for keep_alive ping\n\n let conn = Object.create @:\n ping: (td=conn.keep_alive) => _keep_alive_ival(td)\n\n on_conn(pkt, response) ::\n conn.has_connected = true\n conn.keep_alive = opt.keep_alive || response[0].props?.server_keep_alive || pkt.keep_alive\n client.conn_emit('on_conn')\n return opt.use_auth\n ? response // wait on enhanced authentication step\n : conn.on_auth(null, response) // otherwise, connect is also auth\n\n on_auth(pkt, response) ::\n _dfn_ready.a(_dfn_send0.p)\n if 0 != opt.keep_alive ::\n conn.ping()\n client.conn_emit('on_auth', !pkt)\n return response\n\n on_dis(pkt, response) ::\n conn.reset(false)\n return response\n\n reset(err) ::\n if err ::\n _dfn_send0.e(err) // send error to uses of _send0 (connect, auth)\n _abort.e(err) // abort in-progress connections\n\n delete conn.is_set\n conn.ready = handshake()\n client.conn_emit('on_disconnect', false===err, err)\n\n abort() ::\n _dfn_ready.e(err) // abort all messages awaiting ready state\n return conn.reset(err)\n\n async setup(gate, send_u8_pkt, init_msg_loop) ::\n if conn.is_set ::\n throw new Error() // already in-progress\n\n conn.is_set = true\n await gate\n\n // setup send/recv MQTT parsing context\n let mqtt_ctx = client.mqtt_ctx.mqtt_stream()\n\n :: // setup inbound message loop\n let sess_ctx = {mqtt: client} // mutable session context\n let on_mqtt_chunk = u8 => on_mqtt(mqtt_ctx.decode(u8), sess_ctx)\n init_msg_loop(on_mqtt_chunk, conn)\n\n // setup outbound message path and transport connection\n send_u8_pkt = await send_u8_pkt\n _dfn_send0.a @\n async (type, pkt, key) => ::\n let res = undefined !== key\n ? pkt_future(key) : true\n\n await send_u8_pkt @\n mqtt_ctx.encode_pkt(type, pkt)\n return res\n\n conn.ready = handshake()\n return conn\n\n async function handshake() ::\n _abort = _defer_obj({})\n\n _keep_alive_ival(0) // clearInterval on keep alive ping\n _dfn_send0.set() // reset client._send0 if necessary\n _dfn_ready.set() // reset client._send if necessary\n\n try ::\n // set client._send0 as passtrhough after transport connection\n client._send0 = await Promise.race @# _dfn_send0.p, _abort.p\n\n // set client._send as passtrhough after ready\n client._send = await Promise.race @# _dfn_ready.p, _abort.p\n return true\n catch err ::\n return false\n\n","import mqtt_pkt_ctx from 'u8-mqtt-packet/esm/codec_bind.js'\nimport { _isfn } from './_utils.jsy'\nimport { MQTTBase } from './base.jsy'\nimport { _mqtt_conn } from './_conn.jsy'\n\n#IF PLAT_NODEJS\n import {connect as tcp_connect} from 'node:net'\n import {connect as tls_connect} from 'node:tls'\n\nconst pkt_api = @{}\n utf8(u8) :: return new TextDecoder('utf-8').decode(u8 || this.payload )\n json(u8) :: return JSON.parse( this.utf8(u8) || null )\n text(u8) :: return this.utf8(u8)\n\nconst opt_default = @{}\n sess_stg: globalThis.sessionStorage\n\nexport class MQTTCore extends MQTTBase ::\n constructor(opt) ::\n opt = {...opt_default, ...opt}\n super()\n this.with(opt)\n // settings for MQTTCore\n this.sess_stg = opt.sess_stg\n // setup connection and dispatch\n this.conn = _mqtt_conn @ opt, this,\n this._init_dispatch(opt)\n\n with(fns_ns) ::\n for let [k,v] of Object.entries(fns_ns) ::\n if _isfn(v) :: this[k] = v\n return this\n\n\n static mqtt_ctx(mqtt_level, mqtt_opts, pkt_ctx=pkt_api) ::\n let klass = class extends this {}\n klass.prototype.mqtt_ctx =\n mqtt_pkt_ctx(mqtt_level, mqtt_opts, pkt_ctx)\n return klass\n\n\n async conn_emit(evt, arg, err_arg) ::\n this.log_conn?.(evt, arg, err_arg)\n try ::\n let fn_evt = this[await evt] // microtask break using `await evt`\n if fn_evt ::\n await fn_evt.call(this, this, arg, err_arg)\n else if err_arg :: throw err_arg\n catch err ::\n this.on_error(err, evt)\n\n on_error(err, evt) ::\n console.warn @ '[[u8-mqtt error: %s]]', evt, err\n log_conn(evt, arg, err_arg) ::\n console.info @ '[[u8-mqtt conn: %s]]', evt, arg, err_arg\n\n\n // automatic Client Id for connect()\n init_client_id(parts=['u8-mqtt--','']) ::\n let sess_stg = this.sess_stg\n let key, cid = sess_stg?.getItem(key=parts.join(' '))\n if ! cid ::\n cid = parts.join @ Math.random().toString(36).slice(2)\n sess_stg?.setItem(key, cid)\n return cid\n\n\n on_live(client, is_reconnect) ::\n if is_reconnect ::\n return client.connect()\n\n // on_ready(client) ::\n // on_reconnect(client) ::\n on_disconnect(client, intentional) ::\n if ! intentional ::\n return client.on_reconnect?.()\n\n _use_conn(fn_reconnect) ::\n return (this.reconnect = fn_reconnect)?.()\n with_autoreconnect(opt=2000) ::\n if opt.toFixed :: opt = @{} delay: opt\n return this.with @:\n on_reconnect() ::\n this.delay(opt.delay || 2000)\n .then(this.reconnect)\n .then(opt.reconnect, opt.error)\n\n delay(ms) ::\n return new Promise @ done => setTimeout(done, ms)\n\n with_async_iter(async_iter, write_u8_pkt) ::\n this.conn.setup @ async_iter,\n write_u8_pkt,\n async (on_mqtt_chunk, conn) => ::\n try ::\n async_iter = await async_iter\n for await (let chunk of async_iter)\n on_mqtt_chunk(chunk)\n conn.reset()\n catch err ::\n conn.reset(err)\n return this\n\n\n\n #IF PLAT_DENO\n with_tcp(...opt) ::\n opt = this._conn_opt(opt)\n opt.transport = 'tcp'\n return this._use_conn @=>\n this.with_deno_iter @\n Deno.connect(opt)\n\n with_tls(...opt) ::\n opt = this._conn_opt(opt)\n return this._use_conn @=>\n this.with_deno_iter @\n Deno.connectTls(opt)\n\n with_deno_iter(transport) ::\n return this.with_async_iter @\n transport.then(Deno.iter),\n transport.then @ write_stream =>\n u8_pkt => write_stream.write(u8_pkt)\n\n _conn_opt([a0, a1, a2]) ::\n // (port, hostname, options) or (url, options)\n if Number.isFinite(a0) ::\n return {...a2, port: a0, hostname: a1}\n\n a0 = new URL(a0)\n return {...a1, port: a0.port, hostname: a0.hostname}\n\n #IF PLAT_NODEJS\n with_tcp(...opt) ::\n opt = this._conn_opt(opt)\n return this._use_conn @=>\n this.with_stream @\n tcp_connect(opt)\n\n with_tls(...opt) ::\n opt = this._conn_opt(opt)\n return this._use_conn @=>\n this.with_stream @\n tls_connect(opt)\n\n _conn_opt([a0, a1, a2]) ::\n // (port, hostname, options) or (url, options)\n if Number.isFinite(a0) ::\n return {...a2, port: a0, host: a1}\n a0 = new URL(a0)\n return {...a1, port: a0.port, host: a0.hostname}\n\n\n with_stream(read_stream, write_stream) ::\n if undefined === write_stream ::\n write_stream = read_stream\n\n return this.with_async_iter @ read_stream,\n u8_pkt => write_stream.write(u8_pkt)\n\n\n with_websock(websock) ::\n if ! websock?.send ::\n websock = new URL(websock || 'ws://127.0.0.1:9001')\n return this._use_conn @=>\n this.with_websock @\n new WebSocket(websock, ['mqtt'])\n\n websock.binaryType = 'arraybuffer'\n\n let ws_ready, readyState = websock.readyState\n if 1 !== readyState ::\n if 0 !== readyState ::\n throw new Error @ 'WS readyState'\n\n ws_ready = new Promise @ ready => websock.onopen = ready\n\n this.conn.setup @ ws_ready,\n u8_pkt => websock.send(u8_pkt),\n (on_mqtt_chunk, conn) => ::\n websock.onmessage = evt => @\n on_mqtt_chunk @ new Uint8Array(evt.data)\n\n websock.onclose = evt => ::\n if ! evt.wasClean ::\n var err = new Error('websocket close')\n err.code = evt.code\n err.reason = evt.reason\n\n conn.reset(err)\n\n return this\n\nexport { MQTTCore as default }\n","import mqtt_opts_v5 from 'u8-mqtt-packet/esm/codec_v5_client.js'\nimport {with_topic_path_router} from './router_path.jsy'\nimport MQTTCore from './core.jsy'\nexport * from './version.js'\n\nconst MQTTClient_v4 = /* #__PURE__ */\n with_topic_path_router(\n MQTTCore.mqtt_ctx(4, mqtt_opts_v5) )\n\nconst MQTTClient_v5 = /* #__PURE__ */\n with_topic_path_router(\n MQTTCore.mqtt_ctx(5, mqtt_opts_v5) )\n\nconst mqtt_v4 = opt =>\n new MQTTClient_v4(opt)\n\nconst mqtt_v5 = opt =>\n new MQTTClient_v5(opt)\n\nexport {\n MQTTClient_v4,\n MQTTClient_v5,\n MQTTClient_v5 as MQTTClient,\n\n mqtt_v4,\n mqtt_v5,\n mqtt_v5 as mqtt,\n mqtt_v5 as default,\n}\n"],"names":["decode_varint","_rxp_parse"],"mappings":"AAAA,SAAS,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;AAChC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AAC3C,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;AACtB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AAC7C,EAAE,OAAO,CAAC;AACV,CAAC;AACD;AACA,SAASA,eAAa,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE;AAC1C,EAAE,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;AAC7C,EAAE,MAAM,CAAC,GAAG,IAAI;AAChB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC;AAC9C;AACA,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC;AACvB,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC;AACvB,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AAChB,CAAC;AACD;AACA,SAAS,cAAc,CAAC,UAAU,EAAE,OAAO,EAAE;AAC7C,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,OAAO,EAAE;AAC7C,IAAI,GAAG,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC;AACnC,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC3C,GAAG;AACH,EAAE,OAAO,UAAU;AACnB,CAAC;AACD;AACA;AACA,MAAM,eAAe,GAAG;AACxB,EAAE,cAAc,CAAC,IAAI,GAAG,EAAE,EAAE;AAC5B,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,0BAA0B,CAAC;AAC/C,IAAI,EAAE,IAAI,EAAE,KAAK,GAAG,yBAAyB,CAAC;AAC9C,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC;AACnC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,CAAC;AACrC,IAAI,EAAE,IAAI,EAAE,KAAK,GAAG,kBAAkB,CAAC;AACvC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,yBAAyB,CAAC;AAC9C,IAAI,EAAE,IAAI,EAAE,KAAK,GAAG,yBAAyB,CAAC;AAC9C,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,4BAA4B,CAAC;AACjD,IAAI,EAAE,IAAI,EAAE,KAAK,GAAG,mBAAmB,CAAC;AACxC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,uBAAuB,CAAC;AAC5C,IAAI,EAAE,IAAI,EAAE,KAAK,GAAG,qBAAqB,CAAC;AAC1C,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,6BAA6B,CAAC;AAClD,IAAI,EAAE,IAAI,EAAE,KAAK,GAAG,qBAAqB,CAAC;AAC1C,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,8BAA8B,CAAC;AACnD,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,sBAAsB,CAAC;AAC3C,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,kBAAkB,CAAC;AACvC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,CAAC;AACpC,IAAI,EAAE,IAAI,EAAE,KAAK,GAAG,iBAAiB,CAAC;AACtC,IAAI,EAAE,IAAI,EAAE,KAAK,GAAG,qBAAqB,CAAC;AAC1C,IAAI,EAAE,IAAI,EAAE,KAAK,GAAG,aAAa,CAAC;AAClC,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,aAAa,CAAC;AAClC,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,kBAAkB,CAAC;AACvC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,EAAE,KAAK,GAAG,qBAAqB,CAAC;AAC1C,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,iCAAiC,CAAC;AACtD,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,oCAAoC,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AACzE,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,+BAA+B,CAAC;AACpD,GAAG,CAAC,CAAC;AACL;AACA;AACA,MAAM,UAAU;AAChB,EAAE,eAAe,EAAE,CAAC;AACpB;AACA,MAAM,WAAW,SAAS,MAAM,CAAC;AACjC,EAAE,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE;AACzB,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AACb,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,GAAG,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AACrE,GAAG;AACH,CAAC;AACD;AACA,MAAM,cAAc,CAAC;AACrB,EAAE,OAAO,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,OAAO,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AACnE,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE;AACf,IAAI,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC7D,IAAI,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;AAC/C,GAAG;AACH;AACA,EAAE,QAAQ,GAAG;AACb,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,GAAG;AACH;AACA,EAAE,EAAE,GAAG;AACP,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjC,GAAG;AACH;AACA,EAAE,GAAG,GAAG;AACR,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACxC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,GAAG;AACH;AACA,EAAE,GAAG,GAAG;AACR,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACxC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,GAAG;AACH;AACA,EAAE,IAAI,GAAG;AACT,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;AAC3B,IAAI,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,GAAGA,eAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;AACnB,IAAI,OAAO,CAAC;AACZ,GAAG;AACH;AACA,EAAE,GAAG,GAAG;AACR,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACxC,IAAI,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AAClB,IAAI,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC;AACjC,GAAG;AACH;AACA,EAAE,IAAI,GAAG,EAAE,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE;AAC/D,EAAE,IAAI,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE;AAChD;AACA,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACnE;AACA,EAAE,MAAM,CAAC,QAAQ,EAAE;AACnB,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,IAAI,IAAI,IAAI,IAAI,CAAC;AACjB,MAAM,OAAO,IAAI,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;AAChE,GAAG;AACH;AACA,EAAE,KAAK,GAAG;AACV,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;AAC3B,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;AAChC,IAAI,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,GAAG;AACH;AACA,CAAC;AACD;AACA,IAAI,gBAAgB,GAAG,MAAM,cAAc,SAAS,cAAc,CAAC;AACnE,EAAE,KAAK,GAAG;AACV,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;AAC3B,IAAI,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,GAAGA,eAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,IAAI,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;AACvB,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,IAAI;AAC5B;AACA,IAAI,IAAI,GAAG,CAAC,EAAE,EAAE,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,IAAI,OAAO,IAAI,CAAC,QAAQ,EAAE,EAAE;AAC5B,MAAM,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC;AACvD,MAAM,IAAI,CAAC,EAAE,EAAE;AACf,QAAQ,GAAG,CAAC,SAAS,GAAG,EAAE,CAAC;AAC3B,QAAQ,IAAI,CAAC,IAAI,GAAG,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/C,QAAQ,KAAK;AACb,OAAO;AACP;AACA,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;AAC1B,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;AAC/B,UAAU,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AACvC,KAAK;AACL,IAAI,OAAO,GAAG;AACd,GAAG;AACH;AACA,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACzC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACf,IAAI,OAAO,GAAG;AACd,GAAG;AACH,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE;AACrB,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACjB,IAAI,OAAO,GAAG;AACd,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC;AACF;AACA,SAAS,YAAY,CAAC,WAAW,EAAE,OAAO,EAAE;AAC5C,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;AAC7C,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9B;AACA,EAAE,OAAO,cAAc,WAAW,CAAC;AACnC,IAAI,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE;AAC7B,MAAM,OAAO,OAAO,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5D,KAAK;AACL,IAAI,IAAI,CAAC,GAAG,EAAE;AACd,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACzB,MAAM,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;AACnC,UAAU,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;AAChD,KAAK;AACL,GAAG;AACH,CAAC;AACD;AACA;AACA,MAAM,UAAU,IAAI;AACpB,EAAE,OAAO,EAAE;AACX,IAAI,EAAE,IAAI,EAAE,6CAA6C,CAAC;AAC1D,IAAI,EAAE,IAAI,EAAE,mCAAmC,CAAC;AAChD,IAAI,EAAE,IAAI,EAAE,kCAAkC,CAAC;AAC/C,IAAI,EAAE,IAAI,EAAE,yCAAyC,CAAC;AACtD,IAAI,EAAE,IAAI,EAAE,8BAA8B,CAAC;AAC3C,GAAG;AACH,EAAE,MAAM,EAAE;AACV,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC;AACpB,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC;AACpB,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC;AACpB,GAAG;AACH,EAAE,QAAQ,EAAE;AACZ,IAAI,EAAE,IAAI,EAAE,yBAAyB,CAAC;AACtC,GAAG;AACH,EAAE,MAAM,EAAE;AACV,IAAI,EAAE,IAAI,EAAE,yBAAyB,CAAC;AACtC,GAAG;AACH,EAAE,GAAG,EAAE;AACP,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;AACZ,IAAI,EAAE,IAAI,EAAE,mBAAmB,CAAC;AAChC,IAAI,EAAE,IAAI,EAAE,+BAA+B,CAAC;AAC5C,IAAI,EAAE,IAAI,EAAE,gBAAgB,CAAC;AAC7B,IAAI,EAAE,IAAI,EAAE,sBAAsB,CAAC;AACnC,IAAI,EAAE,IAAI,EAAE,0BAA0B,CAAC;AACvC,IAAI,EAAE,IAAI,EAAE,6BAA6B,EAAE;AAC3C,GAAG,CAAC,CAAC;AACL;AACA,MAAM,UAAU,IAAI;AACpB,EAAE,IAAI,UAAU;AAChB,EAAE,IAAI,EAAE;AACR,IAAI,EAAE,IAAI,EAAE,yBAAyB,EAAE;AACvC,IAAI,EAAE,IAAI,EAAE,iBAAiB,EAAE;AAC/B,GAAG;AACH,EAAE,UAAU,EAAE;AACd,IAAI,EAAE,IAAI,EAAE,8BAA8B,CAAC;AAC3C,GAAG;AACH,EAAE,GAAG,EAAE;AACP,IAAI,IAAI,UAAU,CAAC,GAAG;AACtB,IAAI,EAAE,IAAI,EAAE,kBAAkB,CAAC;AAC/B,IAAI,EAAE,IAAI,EAAE,gBAAgB,CAAC;AAC7B,IAAI,EAAE,IAAI,EAAE,8BAA8B,CAAC;AAC3C,IAAI,EAAE,IAAI,EAAE,6BAA6B,CAAC;AAC1C,IAAI,EAAE,IAAI,EAAE,2BAA2B,CAAC;AACxC,IAAI,EAAE,IAAI,EAAE,oBAAoB,CAAC;AACjC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC;AAC1B,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC;AACrB,IAAI,EAAE,IAAI,EAAE,sBAAsB,CAAC;AACnC,IAAI,EAAE,IAAI,EAAE,2BAA2B,CAAC;AACxC,IAAI,EAAE,IAAI,EAAE,oBAAoB,CAAC;AACjC,IAAI,EAAE,IAAI,EAAE,oBAAoB,CAAC;AACjC,IAAI,EAAE,IAAI,EAAE,oBAAoB,CAAC;AACjC,IAAI,EAAE,IAAI,EAAE,0BAA0B,CAAC;AACvC,IAAI,EAAE,IAAI,EAAE,qBAAqB,CAAC;AAClC,IAAI,EAAE,IAAI,EAAE,kBAAkB,CAAC;AAC/B,IAAI,EAAE,IAAI,EAAE,uBAAuB,CAAC;AACpC,IAAI,EAAE,IAAI,EAAE,gBAAgB,CAAC;AAC7B,IAAI,EAAE,IAAI,EAAE,uBAAuB,CAAC;AACpC,IAAI,EAAE,IAAI,EAAE,wBAAwB,CAAC;AACrC,IAAI,EAAE,IAAI,EAAE,sBAAsB,CAAC;AACnC,IAAI,EAAE,IAAI,EAAE,mBAAmB,CAAC;AAChC,IAAI,EAAE,IAAI,EAAE,oBAAoB,CAAC;AACjC,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC;AAC3B,IAAI,EAAE,IAAI,EAAE,oCAAoC,CAAC;AACjD,IAAI,EAAE,IAAI,EAAE,0BAA0B,CAAC;AACvC,IAAI,EAAE,IAAI,EAAE,sBAAsB,CAAC;AACnC,IAAI,EAAE,IAAI,EAAE,wCAAwC,CAAC;AACrD,IAAI,EAAE,IAAI,EAAE,sCAAsC,CAAC;AACnD,GAAG,CAAC,CAAC;AACL;AACA,MAAM,cAAc;AACpB,EAAE,YAAY,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;AAC7C;AACA,MAAM,cAAc,CAAC;AACrB,EAAE,OAAO,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;AAC5C,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;AACzC;AACA,EAAE,OAAO,IAAI,GAAG,EAAE,OAAO,IAAI,EAAE;AAC/B;AACA,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AAC/C;AACA,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AACnC,EAAE,IAAI,CAAC,GAAG,EAAE;AACZ,IAAI,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;AAClC,IAAI,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;AACnB,IAAI,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AACnC;AACA,IAAI,GAAG,GAAG,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAChC,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;AACnB;AACA,IAAI,IAAI,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACpC,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACpB,IAAI,KAAK,CAAC,IAAI,KAAK,EAAE;AACrB,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACpB,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AACpB,KAAK;AACL,IAAI,OAAO,GAAG;AACd,GAAG;AACH;AACA,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE;AACpC,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE;AACrD,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE;AACvF,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3C;AACA,EAAE,GAAG,CAAC,MAAM,EAAE;AACd,IAAI,IAAI,EAAE,MAAM,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACpC,IAAI,IAAI,QAAQ,KAAK,OAAO,MAAM;AAClC,MAAM,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AAC9B;AACA,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,UAAU;AAC3C,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;AACtC;AACA,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAChC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACtB,GAAG;AACH;AACA,EAAE,IAAI,CAAC,CAAC,EAAE;AACV,IAAI,IAAI,MAAM,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpD,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAChC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACtB,GAAG;AACH,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AAC3C;AACA,EAAE,KAAK,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,EAAE;AAC5B,IAAI,IAAI,SAAS,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AACpC,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1B;AACA,IAAI,CAAC,IAAI,EAAE,CAAC;AACZ,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,IAAI,OAAO,CAAC;AACZ,GAAG;AACH;AACA,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;AACnC;AACA,EAAE,KAAK,CAAC,GAAG,EAAE;AACb,IAAI,IAAI,IAAI,IAAI,GAAG;AACnB,MAAM,IAAI,CAAC,IAAI;AACf,QAAQ,QAAQ,KAAK,OAAO,GAAG;AAC/B,YAAY,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;AAChD,YAAY,GAAG,EAAE,CAAC;AAClB;AACA,IAAI,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;AACtB,GAAG;AACH,CAAC;AACD;AACA;AACA,MAAM,cAAc,SAAS,cAAc,CAAC;AAC5C,EAAE,KAAK,CAAC,KAAK,EAAE;AACf,IAAI,IAAI,EAAE,KAAK;AACf,MAAM,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AACvB;AACA,IAAI,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO;AAC3B,UAAU,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;AACrC,UAAU,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAChC;AACA,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,MAAM;AAC1B,MAAM,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AACvB;AACA,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AACzB,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK,EAAE;AACrC,MAAM,IAAI,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACpC,MAAM,IAAI,CAAC,EAAE;AACb,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAC1D;AACA,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACtC,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC3B,GAAG;AACH;AACA,EAAE,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE;AACjB,IAAI,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACnB,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;AACzB,GAAG;AACH,EAAE,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE;AAClB,IAAI,KAAK,IAAI,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AACxC,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACrB,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACpB,KAAK;AACL,GAAG;AACH,EAAE,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE;AAClB,IAAI,KAAK,IAAI,CAAC,IAAI,GAAG,EAAE;AACvB,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACrB,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACjB,KAAK;AACL,GAAG;AACH,CAAC;AACD;AACA,SAAS,mBAAmB,CAAC,EAAE,EAAE,WAAW,EAAE;AAC9C,EAAE,MAAM,aAAa,GAAG,IAAI,UAAU,CAAC;AACvC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AACpC;AACA,EAAE,MAAM,kBAAkB,GAAG,KAAK,IAAI,CAAC;AACvC,UAAU,KAAK,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,EAAE;AACrC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,KAAK,CAAC,EAAE;AACvC,UAAU,KAAK,CAAC,WAAW,GAAG,IAAI,GAAG,CAAC,EAAE;AACxC,UAAU,KAAK,CAAC,SAAS,GAAG,IAAI,GAAG,CAAC,EAAE;AACtC,UAAU,KAAK,CAAC,WAAW,GAAG,IAAI,GAAG,CAAC,EAAE;AACxC,UAAU,KAAK,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,EAAE;AACrC,UAAU,KAAK,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC;AACtC;AACA,EAAE,MAAM,eAAe,GAAG,IAAI,IAAI,GAAG;AACrC,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,EAAE;AACjC,UAAU,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC;AACnC;AACA,EAAE,OAAO,EAAE,CAAC,OAAO,GAAG,EAAE,UAAU,EAAE,GAAG,MAAM;AAC7C,IAAI,IAAI,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnC;AACA,IAAI,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC5B,IAAI,GAAG,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC;AACzB;AACA,IAAI,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,GAAG,CAAC;AACzC,IAAI,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK;AACzB,MAAM,GAAG,CAAC,KAAK;AACf,MAAM,kBAAkB;AACxB,MAAM,CAAC,IAAI,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC;AAC/B,WAAW,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC;AAC/B,WAAW,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;AAC/C;AACA,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC5B;AACA,IAAI,IAAI,CAAC,IAAI,UAAU;AACvB,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC3B;AACA;AACA,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC5B,IAAI,IAAI,KAAK,GAAG,IAAI,EAAE;AACtB,MAAM,IAAI,CAAC,IAAI,UAAU;AACzB,QAAQ,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9B;AACA,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3B,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5B,KAAK;AACL;AACA,IAAI,IAAI,KAAK,GAAG,IAAI;AACpB,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACzB;AACA,IAAI,IAAI,KAAK,GAAG,IAAI;AACpB,MAAM,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACxB;AACA,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3B,GAAG;AACH,CAAC;AACD;AACA,SAAS,mBAAmB,CAAC,EAAE,EAAE,WAAW,EAAE;AAC9C,EAAE,MAAM,eAAe,SAAS,MAAM,CAAC;AACvC,IAAI,IAAI,eAAe,GAAG,EAAE,OAAO,IAAI,GAAG,IAAI,KAAK,CAAC,EAAE;AACtD,GAAG;AACH;AACA,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK;AACrC,IAAI,IAAI,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC5C;AACA,IAAI,GAAG,CAAC,KAAK;AACb,MAAM,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;AACjC;AACA,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACtC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,UAAU;AAC3B,MAAM,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;AAC9B,IAAI,OAAO,GAAG,EAAE;AAChB,CAAC;AACD;AACA,SAAS,mBAAmB,CAAC,EAAE,EAAE,WAAW,EAAE;AAC9C,EAAE,OAAO,EAAE,CAAC,OAAO,GAAG,EAAE,UAAU,EAAE,GAAG,MAAM;AAC7C,IAAI,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;AACnC,IAAI,IAAI,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnC;AACA,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACxB,IAAI,IAAI,CAAC,KAAK,GAAG;AACjB,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC1B;AACA,IAAI,KAAK,CAAC,IAAI,UAAU,EAAE;AAC1B,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC3B,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC7B,KAAK,MAAM;AACX,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC7B,KAAK;AACL;AACA,IAAI,OAAO,GAAG,CAAC,MAAM;AACrB,MAAM,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,EAAE;AACjE,GAAG;AACH,CAAC;AACD;AACA,SAAS,mBAAmB,CAAC,EAAE,EAAE,WAAW,EAAE;AAC9C,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK;AACrC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AACpB,IAAI,GAAG,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,IAAI,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACpC,IAAI,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC;AACvC;AACA,IAAI,IAAI,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC5C,IAAI,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;AAC3B,IAAI,IAAI,CAAC,KAAK,GAAG;AACjB,MAAM,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;AAC7B;AACA,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,UAAU;AAC3B,MAAM,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;AAC9B;AACA,IAAI,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;AAC9B,IAAI,OAAO,GAAG,EAAE;AAChB,CAAC;AACD;AACA,SAAS,kBAAkB,CAAC,EAAE,EAAE,WAAW,EAAE;AAC7C,EAAE,OAAO,EAAE,CAAC,MAAM,GAAG,EAAE,UAAU,EAAE,GAAG,MAAM;AAC5C,IAAI,IAAI,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnC;AACA,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,IAAI,IAAI,CAAC,IAAI,UAAU,EAAE;AACzB,MAAM,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC7B,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC3B,KAAK;AACL;AACA,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3B,GAAG;AACH,CAAC;AACD;AACA;AACA,SAAS,kBAAkB,CAAC,EAAE,EAAE,WAAW,EAAE;AAC7C,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK;AACrC,IAAI,IAAI,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC5C;AACA,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;AAC3B,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,UAAU,EAAE;AAC7B,MAAM,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,MAAM,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;AAC9B,KAAK;AACL;AACA,IAAI,OAAO,GAAG,EAAE;AAChB,CAAC;AACD;AACA,SAAS,qBAAqB,CAAC,EAAE,EAAE,WAAW,EAAE;AAChD,EAAE,MAAM,oBAAoB,GAAG,IAAI,IAAI,CAAC;AACxC,UAAU,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE;AAC1B,UAAU,IAAI,CAAC,MAAM,GAAG,GAAG,GAAG,CAAC,EAAE;AACjC,UAAU,CAAC,IAAI,CAAC,eAAe,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC;AAC9C;AACA,EAAE,OAAO,EAAE,CAAC,SAAS,GAAG,EAAE,UAAU,EAAE,GAAG,MAAM;AAC/C,IAAI,IAAI,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnC;AACA,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,IAAI,IAAI,CAAC,IAAI,UAAU;AACvB,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC3B;AACA,IAAI,IAAI,EAAE,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;AACvC,IAAI,KAAK,IAAI,IAAI,IAAI,GAAG,CAAC,MAAM,EAAE;AACjC,MAAM,IAAI,QAAQ,KAAK,OAAO,IAAI,EAAE;AACpC,QAAQ,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,QAAQ,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACnB,OAAO,MAAM;AACb,QAAQ,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;AACzB,UAAU,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;AACpC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC;AACA,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxB,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC3C,aAAa,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;AACnD,OAAO;AACP,KAAK;AACL;AACA,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3B,GAAG;AACH,CAAC;AACD;AACA,SAAS,oBAAoB,CAAC,EAAE,EAAE,WAAW,EAAE;AAC/C,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK;AAC/C,IAAI,IAAI,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC5C;AACA,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;AAC3B,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,UAAU;AAC3B,MAAM,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;AAC9B;AACA,IAAI,IAAI,OAAO,GAAG,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC;AACnC,IAAI,OAAO,GAAG,CAAC,QAAQ,EAAE;AACzB,MAAM,OAAO,CAAC,IAAI;AAClB,QAAQ,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;AAC/B;AACA,IAAI,OAAO,GAAG,EAAE;AAChB,CAAC;AACD;AACA,SAAS,uBAAuB,CAAC,EAAE,EAAE,WAAW,EAAE;AAClD,EAAE,OAAO,EAAE,CAAC,WAAW,GAAG,EAAE,UAAU,EAAE,GAAG,MAAM;AACjD,IAAI,IAAI,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnC;AACA,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,IAAI,IAAI,CAAC,IAAI,UAAU;AACvB,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC3B;AACA,IAAI,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC,MAAM;AAChC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtB;AACA,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3B,GAAG;AACH,CAAC;AACD;AACA,SAAS,mBAAmB,CAAC,EAAE,EAAE;AACjC,EAAE,EAAE,CAAC,OAAO,IAAI,MAAM,IAAI,UAAU,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAClD,EAAE,EAAE,CAAC,QAAQ,GAAG,MAAM,IAAI,UAAU,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAClD,CAAC;AACD;AACA;AACA,SAAS,mBAAmB,CAAC,EAAE,EAAE;AACjC,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,GAAG;AACvC,CAAC;AACD;AACA,SAAS,sBAAsB,CAAC,EAAE,EAAE,WAAW,EAAE;AACjD,EAAE,OAAO,EAAE,CAAC,UAAU,GAAG,EAAE,UAAU,EAAE,GAAG,MAAM;AAChD,IAAI,IAAI,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnC;AACA,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,UAAU,EAAE;AAChC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE;AACnC,QAAQ,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC/B,QAAQ,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC7B,OAAO;AACP,KAAK;AACL;AACA,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3B,GAAG;AACH,CAAC;AACD;AACA;AACA,SAAS,sBAAsB,CAAC,EAAE,EAAE,WAAW,EAAE;AACjD,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK;AACrC,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,GAAG,CAAC,UAAU,EAAE;AACxC,MAAM,IAAI,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC9C,MAAM,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,MAAM,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;AAC9B,KAAK;AACL,IAAI,OAAO,GAAG,EAAE;AAChB,CAAC;AACD;AACA,SAAS,gBAAgB,CAAC,EAAE,EAAE,WAAW,EAAE;AAC3C,EAAE,OAAO,EAAE,CAAC,IAAI,GAAG,EAAE,UAAU,EAAE,GAAG,MAAM;AAC1C,IAAI,IAAI,CAAC,GAAG,UAAU;AACtB,MAAM,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC;AACvE;AACA,IAAI,IAAI,GAAG,GAAG,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AAClC;AACA,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC3B,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACzB;AACA,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3B,GAAG;AACH,CAAC;AACD;AACA,SAAS,gBAAgB,CAAC,EAAE,EAAE,WAAW,EAAE;AAC3C,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK;AACrC,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,UAAU,GAAG;AAC/B,MAAM,IAAI,GAAG,GAAG,WAAW,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;AACxC,MAAM,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,MAAM,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;AAC9B,KAAK;AACL,IAAI,OAAO,GAAG,EAAE;AAChB,CAAC;AAGD;AACA,MAAM,cAAc,IAAI;AACxB,EAAE,mBAAmB;AACrB,EAAE,mBAAmB;AACrB,EAAE,kBAAkB;AACpB,EAAE,oBAAoB;AACtB,EAAE,mBAAmB;AACrB,EAAE,sBAAsB;AACxB,EAAE,gBAAgB;AAClB,CAAC,CAAC;AACF;AACA;AACA,MAAM,cAAc,IAAI;AACxB,EAAE,mBAAmB;AACrB,EAAE,kBAAkB;AACpB,EAAE,mBAAmB;AACrB,EAAE,qBAAqB;AACvB,EAAE,uBAAuB;AACzB,EAAE,mBAAmB;AACrB,EAAE,sBAAsB;AACxB,EAAE,gBAAgB;AAClB,CAAC,CAAC;AACF;AACA,MAAM,YAAY;AAClB,EAAE,EAAE,UAAU,EAAE,cAAc;AAC9B,IAAI,WAAW,EAAE,cAAc;AAC/B,IAAI,UAAU,EAAE,cAAc;AAC9B,IAAI,WAAW,EAAE,cAAc,GAAG;;AC5pB3B,SAAS,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE;AAClC,CAAC,IAAI,GAAG,YAAY,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;AAC/D,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC/D,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;AACvB;AACA,CAAC,OAAO,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,EAAE;AAC3B,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACb,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE;AACjB,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrB,GAAG,OAAO,IAAI,OAAO,CAAC;AACtB,GAAG,MAAM,IAAI,CAAC,KAAK,GAAG,EAAE;AACxB,GAAG,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC3B,GAAG,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC7B,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;AACvE,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,gBAAgB,GAAG,WAAW,CAAC;AAC7D,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACxE,GAAG,MAAM;AACT,GAAG,OAAO,IAAI,GAAG,GAAG,GAAG,CAAC;AACxB,GAAG;AACH,EAAE;AACF;AACA,CAAC,OAAO;AACR,EAAE,IAAI,EAAE,IAAI;AACZ,EAAE,OAAO,EAAE,IAAI,MAAM,CAAC,GAAG,GAAG,OAAO,IAAI,KAAK,GAAG,UAAU,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC;AACzE,EAAE,CAAC;AACH;;ACzBuC,MAAA,KAAA,GAAA,CAAA,IAAA,OAAA,CAAA,KAAA,WAAA;AACC,MAAA,MAAA,GAAA,CAAA,IAAA,OAAA,CAAA,KAAA,SAAA;;AAExC,SAAA,SAAA,CAAA,WAAA,EAAA;AACE,EAAA,IAAA,IAAA;AACA,EAAA,QAAA,EAAA,EAAA,MAAA;AACE,IAAA,GAAA,GAAA,aAAA,CAAA,GAAA,EAAA;AACE,IAAA,IAAA,EAAA,EAAA;AACA,MAAA,GAAA,GAAA,WAAA,CAAA,WAAA,EAAA,IAAA,GAAA,EAAA,EAAA;;;;;;AAME,QAAA,GAAA,CAAA,KAAA,KAAA;AACF,MAAA,OAAA,IAAA,CAAA,EAAA,CAAA;;;;;;;;;;;;ACLN,MAAA,iBAAA,GAAA,iBAAA;AACE,EAAA,SAAA,IAAA,cAAA,SAAA,CAAA;AACE,IAAA,OAAA,QAAA,GAAA;AACE,MAAA,OAAA,KAAA,CAAA,QAAA,EAAA;AACE,QAAA,0DAAA,CAAA;;AAEJ,IAAA,YAAA,CAAA,GAAA,EAAA,IAAA,EAAA,MAAA,EAAA;AACE,MAAA,IAAA,CAAA,KAAA,GAAA,GAAA;AACA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA,MAAA,GAAA,MAAA,CAAA,MAAA;AACE,QAAA,iBAAA,CAAA,GAAA,EAAA,IAAA,EAAA,MAAA,EAAA;AACF,MAAA,OAAA,MAAA,EAAA,MAAA,CAAA;;AAEF,IAAA,MAAA,CAAA,MAAA,EAAA,GAAA,EAAA;AACE,MAAA,MAAA,CAAA,GAAA,GAAA,IAAA;AACA,MAAA,IAAA,CAAA,KAAA,CAAA,IAAA,CAAA,MAAA,EAAA;AACA,MAAA,OAAA,MAAA,CAAA;AACF,IAAA,YAAA,GAAA;AACE,MAAA,OAAA,OAAA,CAAA,UAAA;AACE,QAAA,IAAA,CAAA,KAAA,CAAA,MAAA,CAAA,CAAA,CAAA,QAAA,CAAA,CAAA,EAAA;;;AAGJ,IAAA,eAAA,CAAA,WAAA,EAAA,GAAA,IAAA,EAAA;AACE,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA,OAAA;MACA,MAAY,CAAA,GAAA,CAAA,WAAA,EAAA,IAAA,EAAA,IAAA,CAAA,GAAA,EAAA,GAAA;AACZ,MAAA,IAAA,KAAA,GAAA,MAAA,CAAA,UAAA,CAAA,WAAA,EAAA;MACA,IAAgB,CAAA,SAAA,CAAA,KAAA,EAAA,GAAA,IAAA,GAAA;AAChB,MAAA,OAAA,IAAA,EAAA;;;AAGF,IAAA,iBAAA,CAAA,WAAA,EAAA,GAAA,IAAA,EAAA;AACE,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA,OAAA;MACA,MAAe,CAAA,MAAA,CAAA,WAAA,EAAA,IAAA,EAAA;AACf,MAAA,IAAA,KAAA,GAAA,MAAA,CAAA,UAAA,CAAA,WAAA,EAAA;MACA,OAAyB,IAAA,CAAA,WAAA,CAAA,KAAA,EAAA,GAAA,IAAA,EAAA,EAAA;;;AAG3B,IAAA,QAAA,CAAA,GAAA,IAAA,EAAA;AACE,MAAA,IAAA,CAAA,MAAA,CAAA,GAAA,CAAA,GAAA,IAAA,EAAA;AACA,MAAA,OAAA,IAAA,CAAA;;;;;;ACzCN,MAAA,sBAAA;AACE,EAAA,iBAAA,CAAA,sBAAA,EAAA;;;AAGF,MAAA,UAAA,GAAA,WAAA;AACE,EAAA,WAAA;KACY,OAAA,CAAC,QAAQ,EAAE,GAAA,CAAA;KACX,OAAA,CAAC,YAAY,EAAE,GAAA,EAAA;;;;;;;;;;;AAW7B,MAAA,aAAA,GAAA,CAAA,WAAA,EAAA,EAAA;AACE,EAAA,EAAA,CAAA,CAAA;AACA,EAAA,WAAA;KACY,OAAA,CAAC,IAAI,EAAE,GAAG,EAAA;AACpB,KAAA,OAAA,CAAU,KAAM,EAAQ,MAAA,CAAA,EAAA,EAAK,KAAK,CAAC,EAAA,GAAA;;AAEvC,SAAqC,OAAA,CAAA,GAAA,EAAA,MAAA,EAAA,GAAA,EAAA,CAAA,GAAA,CAAA,IAAA,GAAA,KAAA,CAAA;;AAErC,SAAA,sBAAA,GAAA;AACE,EAAA,IAAA,QAAA,GAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,GAAA,MAAA,GAAA;AACA,EAAA,IAAA,IAAA,GAAA,KAAA,IAAA,YAAA,CAAA,QAAA,EAAA,KAAA,EAAA;;;EAGA,OAAU,CAAA,IAAA,EAAA,UAAA;AACR,IAAA,GAAA,CAAA,WAAA,EAAA,GAAA,IAAA,EAAA;AACE,MAAA,IAAA,EAAA,GAAA,IAAA,CAAA,GAAA,GAAA;AACA,MAAA,IAAA,QAAA,GAAA,IAAA,CAAA,GAAA,GAAA;;AAEG,MAAA,IAAA,EAAA,KAAA,CAAA,EAAA,CAAA,EAAA;YACC,EAAM,EAAA,CAAA,MAAA,IAAA,SAAA,EAAA,CAAA;AACR,QAAA,EAAA,GAAA,QAAA,CAAA;;AAEF,MAAA,IAAA,GAAA,GAAAC,KAAA,CAAsB,aAAgB,CAAA,WAAA,CAAA,EAAA;;AAEtC,MAAA,GAAA,CAAA,GAAA,GAAA,YAAA;AACA,MAAA,GAAA,CAAA,GAAA,GAAA,GAAA;AACA,MAAA,QAAA,CAAA,QAAA,GAAA,CAAA,GAAA,CAAA,CAAA,CAAA,IAAA,CAAA,GAAA,EAAA;AACA,MAAA,OAAA,IAAA,CAAA;;AAEF,IAAA,MAAA,CAAA,WAAA,EAAA,QAAA,EAAA;AACE,MAAA,IAAA,GAAA,GAAA,QAAA,CAAA,QAAA,GAAA,CAAA,GAAA,CAAA,EAAA;AACA,MAAA,OAAA,aAAA,CAAA,CAAA,GAAA,CAAA,EAAA,WAAA,CAAA,CAAA;;AAEF,IAAA,KAAA,CAAA,QAAA,EAAA;AACE,MAAA,QAAA,CAAA,QAAA,GAAA,CAAA,GAAA,CAAA,CAAA,GAAA,GAAA;AACE,MAAA,IAAA,IAAA,IAAA,QAAA,EAAA;AACA,QAAA,QAAA,CAAA,CAAA,CAAA,GAAA,GAAA,EAAA,EAAA;;AAEJ,IAAA,MAAA,MAAA,CAAA,GAAA,EAAA,GAAA,EAAA;AACE,MAAA,GAAA,CAAA,GAAA,GAAA,EAAA;AACA,MAAA,GAAA,CAAA,EAAA,GAAA,GAAA;;AAEG,MAAA,KAAA,IAAA,CAAA,EAAA,EAAA,MAAA,CAAA,IAAA,IAAA,CAAA,GAAA,CAAA,KAAA,CAAA,EAAA;AACD,QAAA,IAAA,GAAA,GAAA,MAAA,EAAA,CAAA,GAAA,EAAA,MAAA,EAAA,GAAA,EAAA;;AAEE,QAAA,IAAA,EAAA,KAAA,GAAA,EAAA;AACA,UAAA,aAAA,CAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;AAEA,QAAA,IAAA,GAAA,CAAA,IAAA,EAAA;AACA,UAAA,KAAA,CAAA;AACF,aAAA,GAAA,CAAA,GAAA,GAAA,CAAA;;AAEA,MAAA,IAAA,CAAA,KAAA,GAAA,CAAA,GAAA,EAAA;AACA,QAAA,MAAA,GAAA,CAAA,IAAA,CAAA,MAAA,CAAA,GAAA,EAAA,CAAA,EAAA,EAAA,EAAA;;;AAGR,WAAA,YAAA,CAAA,eAAA,EAAA,KAAA,EAAA;EACE,KAAsB,GAAA,KAAA,CAAA,OAAA,CAAA,QAAQ,EAAE,GAAG,EAAA;AAChC,EAAA,KAAA,IAAA,UAAA,IAAA,eAAA,EAAA;AACE,IAAA,KAAA,IAAA,CAAA,IAAA,EAAA,OAAA,EAAA,GAAA,CAAA,IAAA,UAAA,EAAA;AACD,MAAA,IAAA,KAAA,GAAA,OAAA,CAAA,IAAA,CAAA,KAAA,EAAA;AACE,MAAA,IAAA,KAAA,EAAA;AACA,QAAA,IAAA,MAAA,GAAA,IAAA;AACE,YAAA,IAAA,CAAA,MAAA;AACI,cAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA,GAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA;AACA,cAAA,EAAA,CAAA;AACJ,YAAA,KAAA,CAAA,MAAA,IAAA,MAAA;AACF,QAAA,MAAA,CAAA,GAAA,EAAA,MAAA,EAAA,CAAA,EAAA,EAAA,EAAA;;;AAGR,SAAA,aAAA,CAAA,eAAA,EAAA,KAAA,EAAA;AACE,EAAA,IAAA,QAAA,GAAA,KAAA;AACE,IAAA,KAAA,GAAA,KAAA;AACA,OAAA,KAAA,CAAA,GAAA,GAAA,KAAA;AACA,OAAA,KAAA,CAAA,GAAA,GAAA,KAAA,EAAA;AACC,EAAA,KAAA,IAAA,GAAA,IAAA,eAAA,EAAA;AACD,IAAA,IAAA,CAAA,GAAA,GAAA,CAAA,SAAA,CAAA,QAAA,EAAA;AACE,IAAA,IAAA,CAAA,IAAA,CAAA,EAAA;AACA,MAAA,GAAA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA,EAAA;AACA,MAAA,OAAA,IAAA,CAAA,EAAA;AACJ,EAAA,OAAA,KAAA;;ACzGF,SAAS,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE;AAC1C,EAAE,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;AAC7C,EAAE,MAAM,CAAC,GAAG,IAAI;AAChB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC;AAC9C;AACA,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC;AACvB,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC;AACvB,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AAChB,CAAC;AACD;AACA,SAAS,iBAAiB,CAAC,GAAG,EAAE;AAChC,EAAE,IAAI,EAAE,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AACxC,EAAE,OAAO,MAAM,IAAI;AACnB,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,UAAU;AAC5B,QAAQ,MAAM,GAAG,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AACtC;AACA,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;AACjB;AACA;AACA,IAAI,QAAQ,EAAE,CAAC,UAAU,IAAI,OAAO,GAAG;AACvC;AACA;AACA,MAAM,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,aAAa,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AACzD,MAAM,IAAI,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AACtC;AACA,MAAM,IAAI,GAAG,OAAO,IAAI,EAAE,CAAC,UAAU,EAAE,EAAE;AACzC;AACA;AACA;AACA,QAAQ,OAAO,GAAG,OAAO,IAAI,CAAC,CAAC;AAC/B,QAAQ,KAAK;AACb,OAAO;AACP;AACA,MAAM,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACrB,MAAM,IAAI,OAAO,GAAG,CAAC,KAAK,QAAQ,GAAG,IAAI;AACzC,UAAU,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACvC;AACA,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAChC;AACA,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;AACjD,MAAM,IAAI,IAAI,IAAI,GAAG;AACrB,QAAQ,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;AACxB,KAAK;AACL;AACA,IAAI,OAAO,GAAG;AACd,GAAG;AACH,CAAC;AACD;AACA,SAAS,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE;AACxB,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;AACnE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACd,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACjB,EAAE,OAAO,CAAC;AACV,CAAC;AAGD;AACA,MAAM,UAAU,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;AACnM;AACA;AACA,SAAS,YAAY,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE;AAC9D,EAAE,IAAI,WAAW,GAAG,OAAO,KAAK;AAChC,QAAQ,SAAS,EAAE,OAAO;AAC1B,QAAQ,IAAI,GAAG,GAAG,EAAE,OAAO,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE;AAC1C,QAAQ,IAAI,EAAE,GAAG,EAAE,OAAO,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE;AACzC,QAAQ,IAAI,IAAI,GAAG,EAAE,OAAO,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE;AACvD,QAAQ,UAAU,EAAE,CAAC,CAAC;AACtB;AACA;AACA,EAAE,IAAI,EAAE,EAAE,aAAa,CAAC,EAAE,EAAE,eAAe,CAAC,EAAE,CAAC;AAC/C,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,UAAU;AAC5B,IAAI,EAAE,CAAC,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAC1C,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,UAAU;AAC5B,IAAI,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AACxC;AACA,EAAE,OAAO;AACT,IAAI,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC;AAC1C;AACA,IAAI,UAAU,EAAE,CAAC,IAAI,EAAE,GAAG;AAC1B,MAAM,eAAe,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE;AAC9C;AACA,IAAI,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE;AAC5B,MAAM,IAAI,EAAE,CAAC,GAAG;AAChB,QAAQ,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7C;AACA,MAAM,IAAI,SAAS,GAAG,aAAa,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;AAChE,MAAM,OAAO,SAAS,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE;AAClE;AACA,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE;AACtC,MAAM,IAAI,IAAI,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;AACpE,MAAM,IAAI,CAAC,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAC5C,MAAM,OAAO,IAAI,EAAE;AACnB,GAAG;AACH;;AC5FA,eAAA,aAAA,CAAA,MAAA,EAAA,MAAA,EAAA,GAAA,EAAA,GAAA,EAAA;;;;;;;;;;;;;;;;;EAiBE,IAAoB,MAAA,GAAA,MAAA,CAAA,CAAA,KAAA,EAAQ,SAAS,CAAC,CAAA,IAAA,MAAA,CAAA,SAAA;AACtC,EAAA,MAAA,MAAA,EAAA,IAAA,CAAA,MAAA,EAAA,GAAA,EAAA,GAAA,EAAA,CAAA;;AAEF,SAAA,cAAA,CAAA,MAAA,EAAA,MAAA,EAAA,GAAA,EAAA,GAAA,EAAA;AACE,EAAA,MAAA,CAAA,GAAA,CAAA,IAAA,EAAA,GAAA,EAAA;AACA,EAAA,aAAA,CAAA,MAAA,EAAA,MAAA,EAAA,GAAA,EAAA,GAAA,EAAA,CAAA;;AAEF,SAAA,YAAA,CAAA,MAAA,EAAA,MAAA,EAAA,GAAA,EAAA;AACE,EAAA,MAAA,CAAA,GAAA,CAAA,MAAA,EAAA,GAAA,EAAA,CAAA;;;AAGF,MAAA,YAAA,EAAA;AACE,EAAA,CAAA,IAAA,EAAA;AACA,EAAA,aAAA;AACA,EAAA,cAAA;AACA,EAAA,aAAA;AACA,EAAA,YAAA;AACA,EAAA,YAAA;AACA,EAAA,YAAA;AACA,EAAA,YAAA;AACA,EAAA,aAAA;AACA,EAAA,YAAA;AACA,EAAA,aAAA;AACA,EAAA,YAAA;AACA,EAAA,cAAA;AACA,EAAA,cAAA;AACA,EAAA,aAAA;AACA,EAAA,cAAA,IAAA;;AC1CF,SAAA,cAAA,CAAA,GAAA,EAAA,MAAA,EAAA;AACE,EAAA,IAAA,QAAA,CAAA,EAAA,EAAA,SAAA,CAAA,EAAA;;AAEA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,CAAA,IAAA,EAAA,CAAA,EAAA,QAAA,CAAA,CAAA,EAAA,GAAA,GAAA,EAAA,MAAA,IAAA,GAAA;;;AAGA,EAAA,IAAA,OAAA,CAAA,GAAA,EAAA,SAAA;AACA,EAAA,IAAA,WAAA,GAAA,SAAA,IAAA,QAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,QAAA,EAAA,SAAA,EAAA;;AAEA,EAAA,OAAA,CAAA,EAAA,EAAA;AACA,EAAA,OAAA,CAAA,OAAA,EAAA,UAAA,CAAA;;;AAGA,EAAA,SAAA,UAAA,CAAA,UAAA,EAAA;AACK,IAAA,IAAA,EAAA,MAAA,CAAA,UAAA,CAAA,EAAA;AACD,MAAA,OAAA,GAAA,CAAA,OAAA,GAAA,CAAA,IAAA,OAAA;AACA,MAAA,QAAA,GAAA,UAAA,CAAA,MAAA,GAAA,QAAA,CAAA;AACF,SAAA,QAAA,GAAA,WAAA;;AAEA,IAAA,OAAA,IAAA,OAAA,CAAA,WAAA,CAAA,CAAA;;AAEF,EAAA,SAAA,MAAA,CAAA,GAAA,EAAA,GAAA,EAAA;AACK,IAAA,KAAA,IAAA,GAAA,IAAA,QAAA,EAAA;AACD,MAAA,IAAA,SAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,EAAA;AACE,MAAA,IAAA,SAAA,EAAA;AACA,QAAA,GAAA,CAAA,MAAA,CAAA,GAAA,EAAA;;QAEA,SAAuB,CAAA,CAAA,GAAA,UAAA,EAAA;AACvB,QAAA,OAAA,IAAA,CAAA,EAAA;AACJ,IAAA,OAAA,KAAA,CAAA;;AAEF,EAAA,SAAA,OAAA,CAAA,QAAA,EAAA,GAAA,EAAA;AACK,IAAA,KAAA,IAAA,GAAA,IAAA,QAAA,EAAA;AACD,MAAA,YAAA,CAAA,GAAA,CAAA,EAAA,CAAA,CAAA,MAAA,EAAA,MAAA,EAAA,GAAA,EAAA,GAAA,EAAA,CAAA;;;AAGF,IAAA,IAAA,GAAA,GAAA,IAAA,CAAA,GAAA,GAAA;AACE,IAAA,IAAA,GAAA,GAAA,SAAA,EAAA;AACA,MAAA,SAAA,GAAA,SAAA,GAAA,IAAA;AACA,MAAA,QAAA,CAAA,OAAA,CAAA,IAAA,GAAA,EAAA,EAAA;AACK,MAAA,OAAA,QAAA,CAAA,MAAA,GAAA,QAAA,EAAA;AACA,QAAA,KAAA,IAAA,SAAA,IAAA,QAAA,CAAA,GAAA,EAAA,CAAA,MAAA,EAAA,EAAA;AACD,UAAA,SAAA,CAAA,UAAoB,SAAS,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;;AC1CvC,MAAA,SAAA,SAAA,KAAA,CAAA;AACE,EAAA,WAAA,CAAA,QAAA,EAAA,MAAA,CAAA,QAAA,CAAA,MAAA,EAAA;;AAEE,IAAA,KAAA,CAAM,CAAM,GAAA,EAAA,MAAA,CAAA,QAAA,CAAA,EAAA,CAAA,CAAoB,EAAI,EAAA,MAAA,CAAA,MAAA,CAAc,CAAC,EAAA;AACnD,IAAA,IAAA,CAAA,QAAA,GAAA,SAAA;AACA,IAAA,IAAA,CAAA,MAAA,GAAA,OAAA,CAAA,EAAA;;AAEJ,MAAA,QAAA,CAAA;;AAEE,EAAA,MAAA,OAAA,CAAA,GAAA,CAAA,EAAA,EAAA;AACE,IAAA,IAAA,GAAA,GAAA,GAAA,CAAA,UAAA;AACG,IAAA,IAAA,EAAA,MAAA,CAAA,GAAA,CAAA,EAAA;;AAED,MAAA,GAAA,CAAA,SAAA,GAAA,GAAA,GAAA,IAAA,CAAA,SAAA,IAAA,IAAA,CAAA,cAAA,CAAA,GAAA,EAAA,CAAA;AACF,IAAA,IAAA,CAAA,SAAA,GAAA,IAAA;;AAEE,IAAA,IAAA,IAAA,IAAA,GAAA,CAAA,UAAA,EAAA;AACA,MAAA,GAAA,CAAA,UAAA,GAAA,GAAA,CAAA;;IAEF,IAAiC,QAAA,GAAA,MAAA,IAAA,CAAA,MAAA,CAAA,SAAS,OAAO,SAAS,EAAA;QACxD,CAA2B,IAAA,QAAA,CAAA,CAAA,CAAA,CAAA,MAAA,EAAA;AAC3B,MAAA,MAAA,IAAA,IAAA,CAAA,SAAA,CAAA,QAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACF,IAAA,OAAA,IAAA,CAAA,IAAA,CAAA,OAAA,CAAA,GAAA,EAAA,QAAA,CAAA,CAAA;;AAEF,EAAA,MAAA,UAAA,CAAA,GAAA,CAAA,EAAA,EAAA;AACE,IAAA,IAAA,QAAA,GAAA,MAAA,IAAA,CAAA,MAAA,CAAiC,YAAY,EAAA,GAAA,EAAA;AAC7C,IAAA,OAAA,IAAA,CAAA,IAAA,CAAA,MAAA,CAAA,GAAA,EAAA,QAAA,CAAA,CAAA;;AAEF,EAAA,MAAA,IAAA,CAAA,GAAA,CAAA,EAAA,EAAA;IACE,IAAiC,QAAA,GAAA,MAAA,IAAA,CAAA,MAAA,CAAA,MAAM,OAAO,MAAM,EAAA;AAClD,IAAA,IAAA,QAAA,CAAA,CAAA,CAAA,CAAA,MAAA,EAAA;AACA,MAAA,MAAA,IAAA,IAAA,CAAA,SAAA,CAAA,QAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACF,IAAA,OAAA,IAAA,CAAA,IAAA,CAAA,OAAA,CAAA,GAAA,EAAA,QAAA,CAAA,CAAA;;EAEF,IAAS,GAAA,CAAA,OAAA,IAAA,CAAA,KAAA,CAAmB,SAAS,EAAA,IAAA,EAAQ,UAAU,CAAA,CAAA;AACvD,EAAA,MAAA,CAAA,CAAA,MAAA,CAAA,EAAA,CAAmB,kBAAmB,QAAQ,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA;;;AAG9C,EAAA,SAAA,CAAA,GAAA,EAAA,EAAA,EAAA,YAAA,EAAA;AACE,IAAA,GAAA,GAAA,UAAA,CAAA,GAAA,EAAA,EAAA,EAAA,YAAA,EAAA;AACA,IAAA,IAAA,MAAA,GAAA,IAAA,CAAA,KAAA,CAAwB,WAAW,EAAA,GAAA,EAAA,GAAA,EAAA;AACnC,IAAA,OAAA,IAAA,CAAA,MAAA,GAAA,MAAA,EAAA,GAAA,CAAA,IAAA,MAAA,CAAA;;;AAGF,EAAA,WAAA,CAAA,GAAA,EAAA,EAAA,EAAA,YAAA,EAAA;AACE,IAAA,GAAA,GAAA,UAAA,CAAA,GAAA,EAAA,EAAA,EAAA,YAAA,EAAA;AACA,IAAA,OAAA,IAAA,CAAA,KAAA,CAAkB,aAAa,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;;;EAGjC,IAAgC,CAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA;AAC9B,IAAA,OAAA,IAAA,CAAA,GAAA,CAAA,CAAA,KAAA,EAAA,OAAA,EAAA,GAAA,CAAA,CAAA,CAAA,EAAA,OAAA,CAAA,CAAA;EACF,IAAgC,CAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA;AAC9B,IAAA,OAAA,IAAA,CAAA,GAAA,CAAA,CAAA,KAAA,EAAA,OAAA,EAAA,GAAA,CAAA,CAAA,CAAA,EAAA,OAAA,CAAA,CAAA;EACF,KAAiC,CAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA;AAC/B,IAAA,OAAA,IAAA,CAAA,GAAA,CAAA,CAAA,KAAA,EAAA,OAAA,EAAA,GAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,EAAA,OAAA,CAAA,CAAA;;;EAGF,QAAgC,CAAA,KAAA,EAAA,GAAA,EAAA,OAAA,EAAA;AAC9B,IAAA,OAAA,IAAA,CAAA,GAAA,CAAA,CAAA,KAAA,EAAA,GAAA,EAAA,GAAA,EAAkC,KAAK,EAAA,GAAA,CAAA,CAAA,CAAA,EAAA,OAAA,CAAA,CAAA;;EAEzC,QAAgC,CAAA,KAAA,EAAA,GAAA,EAAA,OAAA,EAAA;AAC9B,IAAA,OAAA,IAAA,CAAA,GAAA,CAAA,CAAA,KAAA,EAAA,GAAA,EAAA,GAAA,EAAkC,KAAK,EAAA,GAAA,CAAA,CAAA,CAAA,EAAA,OAAA,CAAA,CAAA;;EAEzC,SAAiC,CAAA,KAAA,EAAA,GAAA,EAAA,OAAA,EAAA;AAC/B,IAAA,OAAA,IAAA,CAAA,GAAA,CAAA,CAAA,KAAA,EAAA,GAAA,EAAA,GAAA,EAAkC,KAAK,EAAA,GAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,EAAA,OAAA,CAAA,CAAA;;;AAGzC,EAAA,MAAA,GAAA,CAAA,GAAA,EAAA,OAAA,EAAA;AACI,IAAA,IAAA,SAAA,KAAA,GAAA,CAAA,OAAA,EAAA;AACE,MAAA,IAAA,KAAA,CAAA,OAAA,CAAA,EAAA;;AAEA,QAAA,OAAA,GAAA,CAAA,SAAA,EAAA,OAAA,EAAA,CAAA;;AAEF,MAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,EAAA,SAAA,GAAA,OAAA,EAAA,UAAA;AACE,MAAA,IAAA,IAAA,IAAA,GAAA,IAAA,KAAA,CAAA,GAAA,CAAA,EAAA;;YAEE,GAAO,EAAA,CAAA,OAAA,GAAA,CAAA,GAAA,OAAA,EAAA,SAAA,EAAA,GAAA,EAAA,CAAA;;AAET,QAAA,OAAA,CAAA,IAAA,IAAA,CAAA,GAAA,CAAA,CAAA,GAAA,GAAA,EAAA,CAAA,GAAA,CAAA,GAAA,IAA0C,SAAS,GAAA,CAAA,CAAA,EAAA,OAAA,CAAA,CAAA;;;AAGrD,MAAA,GAAA,CAAA,OAAA,GAAA,SAAA;AACE,UAAA,MAAA,SAAA,CAAA,GAAA,CAAA;AACA,UAAA,IAAA,CAAA,SAAA,CAAA,GAAA,EAAA,CAAA;;AAEF,IAAA,IAAA,OAAA,EAAA;AACE,MAAA,IAAA,OAAA,CAAA,KAAA,EAAA;AACA,QAAA,GAAA,CAAA,KAAA,GAAA,OAAA,CAAA,MAAA,CAAA;AACA,MAAA,IAAA,OAAA,CAAA,KAAA,EAAA;AACA,QAAA,GAAA,GAAA,OAAA,CAAA,KAAA,CAAA,GAAA,CAAA,IAAA,IAAA,CAAA,EAAA;;AAEJ,IAAA,OAAA,IAAA,CAAA,KAAA,CAAmB,SAAU,EAAA,GAAA;AAC3B,MAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,IAAA,EAAA,EAAA;;;;;;;;AAQJ,EAAA,cAAA,CAAA,GAAA,EAAA;AACE,IAAA,IAAA,CAAA,WAAA,EAAA,MAAA,GAAA;IACA,IAAgB,MAAA,EAAA,CAAA,SAAA,EAAA,GAAA,CAAA,YAAA,EAAA;AAChB,IAAA,MAAA,CAAA,YAAA;AACE,MAAA,IAAA,CAAA,YAAA,GAAA,GAAA,EAAA,IAAA,EAAA,MAAA,EAAA;AACF,IAAA,OAAA,cAAA,CAAA,GAAA,EAAA,MAAA,CAAA,CAAA;;AAEF,EAAA,OAAA,QAAA,GAAA;IACE,OAAO,yGAAA,CAAA;;AAET,EAAA,OAAA,MAAA,CAAA,KAAA,CAAA,IAAA,EAAA;AACE,IAAA,KAAA,CAAA,MAAA,GAAA,CAAA,EAAA,EAAA;AACA,IAAA,IAAA,KAAA,EAAA,IAAA,EAAA,CAAA,GAAA,KAAA,CAAA,UAAA;AACA,IAAA,CAAA,CAAA,SAAA,GAAA,UAAA;AACG,IAAA,KAAA,KAAA,IAAA,KAAA,CAAA,QAAA,EAAA,CAAA,KAAA,CAAiC,KAAK,CAAA,EAAA;AACvC,MAAA,CAAA,KAAA,EAAA,IAAA,CAAA,GAAA,KAAA,CAAA,KAAA,CAA4B,GAAG,EAAA;AAC/B,MAAA,CAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,IAAA,EAAA,CAAA,EAAA,EAAA;;;AAGN,SAAA,UAAA,CAAA,GAAA,EAAA,EAAA,EAAA,YAAA,EAAA;MACI,EAAY,EAAA,IAAA,EAAA;AACZ,IAAA,YAAA,GAAA,GAAA;AACA,IAAA,EAAA,GAAA,KAAA,CAAA;;AAEF,EAAA,GAAA;AACE,IAAA,GAAA,CAAA,IAAA;AACE,QAAA,CAAA,MAAA,CAAA,CAAA,GAAA,CAAA,EAAA,IAAA,EAAA,CAAA;AACF,MAAA,GAAA,CAAA,MAAA,CAAA,QAAA,CAAA;AACE,QAAA,CAAA,MAAA,CAAA,CAAA,IAAA,GAAA,CAAA,EAAA,IAAA,EAAA,CAAA;AACF,MAAA,EAAA,GAAA,CAAA,GAAA,GAAA,EAAA,GAAA,EAAA,CAAA;AACA,MAAA,GAAA,EAAA;;AAEA,EAAA,IAAA,YAAA,EAAA;;;AAGA,IAAA,IAAA,cAAA,GAAA,CAAA;AACE,MAAA,CAAA,CAAA,IAAA,GAAA,YAAA,CAAA,CAAA,GAAA,CAAA,CAAA,GAAA,CAAA,cAAA,EAAA;;AAEF,IAAA,GAAA,CAAA,MAAA,GAAA,GAAA,CAAA,MAAA,CAAA,GAAA,CAAA,cAAA,EAAA,CAAA;AACF,EAAA,OAAA,GAAA;;AC5IF,MAAA,UAAA,GAAA,CAAA;EACE,CAAmB,CAAA,CAAA,GAAA,IAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA;AACnB,IAAA,CAAA,EAAA;;AAEF,SAAA,UAAA,CAAA,MAAA,EAAA,IAAA,EAAA,QAAA,EAAA;;AAEE,EAAA,IAAA,IAAA,GAAA,CAAA,GAAA,CAAA,EAAA,GAAA,GAAA,OAAA,GAAA,IAAA,KAAA,CAAA,MAAA,IAAA,CAAA,CAAA,EAAA,GAAA,IAAA,EAAA;AACA,EAAA,OAAA,GAAA,EAAA;;AAEA,EAAA,SAAA,GAAA,GAAA;AACI,IAAA,IAAA,GAAA,KAAA,MAAA,CAAA,IAAA,CAAA,EAAA;AACA,MAAA,UAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,QAAA,EAAA,CAAA,EAAA,CAAA,EAAA;AACA,MAAA,MAAA,CAAA,IAAA,CAAA,GAAA,IAAA,CAAA;AACF,IAAA,OAAA,IAAA,CAAA,EAAA;;AAEJ,SAAA,UAAA,CAAA,GAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,CAAA,EAAA;AACE,EAAA,IAAA,OAAA;AACA,EAAA,IAAA,UAAA,GAAA,UAAA,CAA6B,QAAS,QAAQ;AAC5C,IAAA,CAAA,GAAA,MAAA,CAAA,SAAA,CAAqB,SAAS,EAAA,IAAA,CAAA,aAAA,CAAA,EAAA;AAChC,EAAA,IAAA,UAAA,GAAA,UAAA,CAA6B,QAAS,OAAO;AAC3C,IAAA,CAAA,GAAA,MAAA,CAAA,SAAA,CAAqB,UAAU,CAAA,EAAA;AACjC,EAAA,IAAA,gBAAA,GAAA,SAAA,EAAA,KAAoC,cAAe,SAAS,CAAA,GAAA;;AAE5D,EAAA,IAAA,IAAA,GAAA,MAAA,CAAA,MAAA,CAAA;AACE,IAAA,IAAA,EAAA,CAAA,EAAA,CAAA,IAAA,CAAA,UAAA,KAAA,gBAAA,CAAA,EAAA,CAAA;;AAEA,IAAA,OAAA,CAAA,GAAA,EAAA,QAAA,EAAA;AACE,MAAA,IAAA,CAAA,aAAA,GAAA,KAAA;AACA,MAAA,IAAA,CAAA,UAAA,GAAA,GAAA,CAAA,UAAA,IAAA,QAAA,CAAA,CAAA,CAAA,CAAA,KAAA,EAAA,iBAAA,IAAA,GAAA,CAAA,WAAA;AACA,MAAA,MAAA,CAAA,SAAA,CAAiB,SAAS,EAAA;AAC1B,MAAA,OAAA,GAAA,CAAA,QAAA;AACE,UAAA,QAAA;AACA,UAAA,IAAA,CAAA,OAAA,CAAA,IAAA,EAAA,QAAA,CAAA,EAAA;;AAEJ,IAAA,OAAA,CAAA,GAAA,EAAA,QAAA,EAAA;AACE,MAAA,UAAA,CAAA,CAAA,CAAA,UAAA,CAAA,CAAA,EAAA;AACE,MAAA,IAAA,CAAA,IAAA,GAAA,CAAA,UAAA,EAAA;AACA,QAAA,IAAA,CAAA,IAAA,GAAA,CAAA;AACF,MAAA,MAAA,CAAA,SAAA,CAAiB,SAAS,EAAA,CAAA,GAAA,EAAA;AAC1B,MAAA,OAAA,QAAA,CAAA;;AAEF,IAAA,MAAA,CAAA,GAAA,EAAA,QAAA,EAAA;AACE,MAAA,IAAA,CAAA,KAAA,CAAA,KAAA,EAAA;AACA,MAAA,OAAA,QAAA,CAAA;;AAEF,IAAA,KAAA,CAAA,GAAA,EAAA;AACI,MAAA,IAAA,GAAA,EAAA;AACA,QAAA,UAAA,CAAA,CAAA,CAAA,GAAA,EAAA,EAAA;AACF,MAAA,MAAA,CAAA,CAAA,CAAA,GAAA,EAAA;;AAEA,MAAA,OAAA,IAAA,CAAA,OAAA;AACA,MAAA,IAAA,CAAA,KAAA,GAAA,SAAA,GAAA;AACA,MAAA,MAAA,CAAA,SAAA,CAAiB,eAAe,EAAA,KAAA,GAAA,GAAA,EAAA,GAAA,EAAA,CAAA;;AAElC,IAAA,KAAA,GAAA;AACE,MAAA,UAAA,CAAA,CAAA,CAAA,GAAA,EAAA;AACA,MAAA,OAAA,IAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA;;AAEF,IAAA,MAAA,KAAA,CAAA,IAAA,EAAA,WAAA,EAAA,aAAA,EAAA;AACI,MAAA,IAAA,IAAA,CAAA,MAAA,EAAA;AACA,QAAA,MAAA,IAAA,KAAA,EAAA,EAAA;;AAEF,MAAA,IAAA,CAAA,MAAA,GAAA,KAAA;AACA,MAAA,MAAA,KAAA;;;AAGA,MAAA,IAAA,QAAA,GAAA,MAAA,CAAA,QAAA,CAAA,WAAA,GAAA;;AAEE,OAAA;AACA,QAAA,IAAA,QAAA,GAAA,CAAA,IAAA,EAAA,MAAA,EAAA;AACA,QAAA,IAAA,aAAA,GAAA,EAAA,IAAA,OAAA,CAAA,QAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA;AACA,QAAA,aAAA,CAAA,aAAA,EAAA,IAAA,EAAA,CAAA;;;AAGF,MAAA,WAAA,GAAA,MAAA,YAAA;AACA,MAAA,UAAA,CAAA,CAAA;AACE,QAAA,OAAA,IAAA,EAAA,GAAA,EAAA,GAAA,KAAA;AACE,UAAA,IAAA,GAAA,GAAA,SAAA,KAAA,GAAA;AACE,cAAA,UAAA,CAAA,GAAA,CAAA,GAAA,KAAA;;AAEF,UAAA,MAAA,WAAA;AACE,YAAA,QAAA,CAAA,UAAA,CAAA,IAAA,EAAA,GAAA,CAAA,EAAA;AACF,UAAA,OAAA,GAAA,CAAA,GAAA,EAAA,EAAA,EAAA;;AAER,EAAA,IAAA,CAAA,KAAA,GAAA,SAAA,GAAA;AACA,EAAA,OAAA,IAAA;;AAEA,EAAA,eAAA,SAAA,GAAA;AACE,IAAA,MAAA,GAAA,UAAA,CAAA,EAAA,EAAA;;AAEA,IAAA,gBAAA,CAAA,CAAA,EAAA;AACA,IAAA,UAAA,CAAA,GAAA,GAAA;AACA,IAAA,UAAA,CAAA,GAAA,GAAA;;AAEA,IAAA,IAAA;;MAEE,MAAqC,CAAA,MAAA,GAAA,MAAA,OAAA,CAAA,IAAA,CAAA,CAAA,UAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA,CAAA,EAAA;;;MAGrC,MAAoC,CAAA,KAAA,GAAA,MAAA,OAAA,CAAA,IAAA,CAAA,CAAA,UAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA,CAAA,EAAA;AACpC,MAAA,OAAA,IAAA,CAAA;AACG,IAAA,OAAA,GAAA,EAAA;AACH,MAAA,OAAA,KAAA,CAAA,EAAA;;AC/FN,MAAA,OAAA,EAAA;AACE,EAAA,IAAA,CAAA,EAAA,EAAA,CAAW,uBAAwB,OAAO,CAAA,CAAA,MAAA,CAAA,EAAA,IAAA,IAAA,CAAA,OAAA,EAAA,CAAA;EAC1C,IAAW,CAAA,EAAA,EAAA,CAAA,OAAA,IAAA,CAAA,KAAA,EAAA,IAAA,CAAA,IAAA,CAAA,EAAA,CAAA,IAAA,IAAA,EAAA,CAAA;EACX,IAAW,CAAA,EAAA,EAAA,CAAA,OAAA,IAAA,CAAA,IAAA,CAAA,EAAA,CAAA,CAAA,GAAA;;AAEb,MAAA,WAAA,EAAA;AACE,EAAA,QAAA,EAAA,UAAA,CAAA,cAAA,EAAA;;AAEF,MAAA,QAAA,SAAA,QAAA,CAAA;AACE,EAAA,WAAA,CAAA,GAAA,EAAA;AACE,IAAA,GAAA,GAAA,CAAA,GAAA,WAAA,EAAA,GAAA,GAAA,EAAA;AACA,IAAA,KAAA,GAAA;AACA,IAAA,IAAA,CAAA,IAAA,CAAA,GAAA,EAAA;;AAEA,IAAA,IAAA,CAAA,QAAA,GAAA,GAAA,CAAA,SAAA;;IAEA,IAAwB,CAAA,IAAA,GAAA,UAAA,CAAA,GAAA,EAAA,IAAA;AACtB,MAAA,IAAA,CAAA,cAAA,CAAA,GAAA,CAAA,EAAA,EAAA;;AAEJ,EAAA,IAAA,CAAA,MAAA,EAAA;AACK,IAAA,KAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,MAAA,CAAA,OAAA,CAAA,MAAA,CAAA,EAAA;UACC,KAAY,CAAA,CAAA,CAAA,EAAA,CAAA,IAAA,CAAA,CAAA,CAAA,GAAA,EAAA,CAAA,EAAA;AAChB,IAAA,OAAA,IAAA,CAAA;;;AAGF,EAAA,OAAA,QAAA,CAAA,UAAA,EAAA,SAAA,EAAA,OAAA,CAAA,OAAA,EAAA;AACE,IAAA,IAAA,KAAA,GAAA,cAAA,IAAA,CAAA,GAAA;AACA,IAAA,KAAA,CAAA,SAAA,CAAA,QAAA;AACE,MAAA,YAAA,CAAA,UAAA,EAAA,SAAA,EAAA,OAAA,EAAA;AACF,IAAA,OAAA,KAAA,CAAA;;;AAGF,EAAA,MAAA,SAAA,CAAA,GAAA,EAAA,GAAA,EAAA,OAAA,EAAA;AACE,IAAA,IAAA,CAAA,QAAA,GAAA,GAAA,EAAA,GAAA,EAAA,OAAA,EAAA;AACA,IAAA,IAAA;AACE,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA,MAAA,GAAA,EAAA;AACE,MAAA,IAAA,MAAA,EAAA;AACA,QAAA,MAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAA,IAAA,EAAA,GAAA,EAAA,OAAA,EAAA,CAAA;eACK,OAAW,EAAA,CAAA,MAAA,OAAA,CAAA,EAAA;AACf,IAAA,OAAA,GAAA,EAAA;AACH,MAAA,IAAA,CAAA,QAAA,CAAA,GAAA,EAAA,GAAA,EAAA,CAAA,EAAA;;AAEJ,EAAA,QAAA,CAAA,GAAA,EAAA,GAAA,EAAA;AACE,IAAA,OAAA,CAAA,IAAA,CAAc,uBAAwB,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA;AACxC,EAAA,QAAA,CAAA,GAAA,EAAA,GAAA,EAAA,OAAA,EAAA;AACE,IAAA,OAAA,CAAA,IAAA,CAAc,sBAAuB,EAAA,GAAA,EAAA,GAAA,EAAA,OAAA,EAAA,EAAA;;;;EAIvC,cAAsB,CAAA,KAAA,CAAA,CAAA,WAAW,CAAC,EAAE,CAAA,EAAA;AAClC,IAAA,IAAA,QAAA,GAAA,IAAA,CAAA,SAAA;AACA,IAAA,IAAA,GAAA,EAAA,GAAA,GAAA,QAAA,EAAA,OAAA,CAAA,GAAA,CAAA,KAAA,CAAA,IAAA,CAAgD,GAAG,CAAA,EAAA;AAChD,IAAA,IAAA,EAAA,GAAA,EAAA;MACD,GAAkB,GAAA,KAAA,CAAA,IAAA,CAAA,IAAA,CAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,EAAA;AAClB,MAAA,QAAA,EAAA,OAAA,CAAA,GAAA,EAAA,GAAA,EAAA,CAAA;AACF,IAAA,OAAA,GAAA,CAAA;;;AAGF,EAAA,OAAA,CAAA,MAAA,EAAA,YAAA,EAAA;AACI,IAAA,IAAA,YAAA,EAAA;AACA,MAAA,OAAA,MAAA,CAAA,OAAA,EAAA,CAAA,EAAA;;;;AAIJ,EAAA,aAAA,CAAA,MAAA,EAAA,WAAA,EAAA;AACK,IAAA,IAAA,EAAA,WAAA,EAAA;AACD,MAAA,OAAA,MAAA,CAAA,YAAA,IAAA,CAAA,EAAA;;AAEJ,EAAA,SAAA,CAAA,YAAA,EAAA;AACE,IAAA,OAAA,CAAA,IAAA,CAAA,SAAA,GAAA,YAAA,KAAA,CAAA;AACF,EAAA,kBAAA,CAAA,GAAA,CAAA,IAAA,EAAA;AACI,IAAA,IAAA,GAAA,CAAA,OAAA,EAAA,CAAe,GAAU,EAAA,CAAA,KAAA,EAAA,GAAA,EAAA,CAAA;AAC3B,IAAA,OAAA,IAAA,CAAA,IAAA,CAAA;AACE,MAAA,YAAA,GAAA;AACE,QAAA,IAAA,CAAA,KAAA,CAAA,GAAA,CAAA,KAAA,IAAA,IAAA,CAAA;AACE,WAAA,IAAA,CAAA,IAAA,CAAA,SAAA,CAAA;AACA,WAAA,IAAA,CAAA,GAAA,CAAA,SAAA,EAAA,GAAA,CAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA;;AAER,EAAA,KAAA,CAAA,EAAA,EAAA;IACE,OAAoB,IAAA,OAAA,CAAA,IAAA,IAAA,UAAA,CAAA,IAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;AAEtB,EAAA,eAAA,CAAA,UAAA,EAAA,YAAA,EAAA;IACE,IAAiB,CAAA,IAAA,CAAA,KAAA,CAAA,UAAA;AACf,MAAA,YAAA;AACA,MAAA,OAAA,aAAA,EAAA,IAAA,KAAA;AACE,QAAA,IAAA;AACE,UAAA,UAAA,GAAA,MAAA,WAAA;AACA,UAAA,WAAA,IAAA,KAAA,IAAA,UAAA;AACE,YAAA,aAAA,CAAA,KAAA,EAAA;AACF,UAAA,IAAA,CAAA,KAAA,GAAA,CAAA;AACG,QAAA,OAAA,GAAA,EAAA;AACH,UAAA,IAAA,CAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAA,GAAA;AACN,IAAA,OAAA,IAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDF,EAAA,WAAA,CAAA,WAAA,EAAA,YAAA,EAAA;AACI,IAAA,IAAA,SAAA,KAAA,YAAA,EAAA;AACA,MAAA,YAAA,GAAA,YAAA,CAAA;;IAEF,OAA6B,IAAA,CAAA,eAAA,CAAA,WAAA;AAC3B,MAAA,MAAA,IAAA,YAAA,CAAA,KAAA,CAAA,MAAA,CAAA,CAAA,EAAA;;;AAGJ,EAAA,YAAA,CAAA,OAAA,EAAA;AACK,IAAA,IAAA,EAAA,OAAA,EAAA,IAAA,EAAA;AACD,MAAA,OAAA,GAAA,IAAA,GAAA,CAAA,OAAA,IAA6B,qBAAqB,EAAA;AAClD,MAAA,OAAA,IAAA,CAAA,SAAA,EAAA;AACE,QAAA,IAAA,CAAA,YAAA;AACE,UAAA,IAAA,SAAA,CAAA,OAAA,EAAA,CAAwB,MAAM,CAAA,CAAA,CAAA,EAAA,EAAA;;IAEpC,OAAqB,CAAA,UAAA,GAAA,cAAA;;AAErB,IAAA,IAAA,QAAA,EAAA,UAAA,GAAA,OAAA,CAAA,WAAA;AACE,IAAA,IAAA,CAAA,KAAA,UAAA,EAAA;AACE,MAAA,IAAA,CAAA,KAAA,UAAA,EAAA;AACA,QAAA,MAAA,IAAA,KAAA,CAAiB,eAAC,CAAA,EAAA;;MAEpB,QAAwB,GAAA,IAAA,OAAA,CAAA,KAAA,IAAA,OAAA,CAAA,MAAA,GAAA,KAAA,EAAA,EAAA;;IAE1B,IAAiB,CAAA,IAAA,CAAA,KAAA,CAAA,QAAA;AACf,MAAA,MAAA,IAAA,OAAA,CAAA,IAAA,CAAA,MAAA,CAAA;AACA,MAAA,CAAA,aAAA,EAAA,IAAA,KAAA;AACE,QAAA,OAAA,CAAA,SAAA,GAAA,GAAA;UACE,aAAe,CAAA,IAAA,UAAA,CAAA,GAAA,CAAA,IAAA,CAAA,CAAA,GAAA;;AAEjB,QAAA,OAAA,CAAA,OAAA,GAAA,GAAA,IAAA;AACK,UAAA,IAAA,EAAA,GAAA,CAAA,QAAA,EAAA;AACD,YAAA,IAAA,GAAA,GAAA,IAAA,KAAA,CAAoB,iBAAiB,EAAA;AACrC,YAAA,GAAA,CAAA,IAAA,GAAA,GAAA,CAAA,KAAA;AACA,YAAA,GAAA,CAAA,MAAA,GAAA,GAAA,CAAA,OAAA,CAAA;;AAEF,UAAA,IAAA,CAAA,KAAA,CAAA,GAAA,EAAA,EAAA,EAAA,GAAA;;AAEN,IAAA,OAAA,IAAA,CAAA;;;;AC3LC,MAAC,aAAa;AACnB,EAAE,sBAAsB;AACxB,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,YAAY,CAAC,GAAE;AACxC;AACK,MAAC,aAAa;AACnB,EAAE,sBAAsB;AACxB,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,YAAY,CAAC,GAAE;AACxC;AACK,MAAC,OAAO,GAAG,GAAG;AACnB,EAAE,IAAI,aAAa,CAAC,GAAG,EAAC;AACxB;AACK,MAAC,OAAO,GAAG,GAAG;AACnB,EAAE,IAAI,aAAa,CAAC,GAAG;;;;","x_google_ignoreList":[0,1,5]}
package/esm/web/v5.min.js CHANGED
@@ -1 +1 @@
1
- function t(t,e=[]){do{const r=127&t;t>>>=7,e.push(r|(0===t?0:128))}while(t>0);return e}function e(t,e=0){let r=e,n=(127&t[e])<<0;return 128&t[e++]&&(n|=(127&t[e])<<7,128&t[e++]&&(n|=(127&t[e])<<14,128&t[e++]&&(n|=(127&t[e])<<21))),[n,e,r]}const r=n();function n(){let t=new Map,e=[[1,"u8","payload_format_indicator"],[2,"u32","message_expiry_interval"],[3,"utf8","content_type"],[8,"utf8","response_topic"],[9,"bin","correlation_data"],[11,"vint","subscription_identifier"],[17,"u32","session_expiry_interval"],[18,"utf8","assigned_client_identifier"],[19,"u16","server_keep_alive"],[21,"utf8","authentication_method"],[22,"bin","authentication_data"],[23,"u8","request_problem_information"],[24,"u32","will_delay_interval"],[25,"u8","request_response_information"],[26,"utf8","response_information"],[28,"utf8","server_reference"],[31,"utf8","reason_string"],[33,"u16","receive_maximum"],[34,"u16","topic_alias_maximum"],[35,"u16","topic_alias"],[36,"u8","maximum_qos"],[37,"u8","retain_available"],[38,"pair","user_properties",{op:"kv_obj"}],[39,"u32","maximum_packet_size"],[40,"u8","wildcard_subscription_available"],[41,"u8","subscription_identifiers_available",{op:"u8_vec"}],[42,"u8","shared_subscription_available"]];for(let[r,n,s,i]of e){let e={id:r,type:n,name:s,...i};t.set(e.id,e),t.set(e.name,e)}return t}class s extends Number{static of(t,e,r){let n=new this(t);return n.reason=r?.[e]?.get(t)||e,n}}class i{static of(t){return this.prototype.of(t)}of(t){let e=(t,r)=>(r=0|e.k,e.k=r+t,r);return{__proto__:this,buf:t,step:e}}has_more(){return this.buf.byteLength>(0|this.step.k)}u8(){return this.buf[this.step(1)]}u16(){let{buf:t,step:e}=this,r=e(2);return t[r]<<8|t[r+1]}u32(){let{buf:t,step:e}=this,r=e(4);return t[r]<<24|t[r+1]<<16|t[r+2]<<8|t[r+3]}vint(){let{buf:t,step:r}=this,[n,s,i]=e(t,0|r.k);return r(s-i),n}bin(){let{buf:t,step:e}=this,r=e(2),n=t[r]<<8|t[r+1];return r=e(n),t.subarray(r,r+n)}utf8(){return new TextDecoder("utf-8").decode(this.bin())}pair(){return[this.utf8(),this.utf8()]}flags(t){return new t(this.buf[this.step(1)])}reason(t){let e=this.buf[this.step(1)];if(null!=e)return s.of(e,t,this._reasons_by)}flush(){let{buf:t,step:e}=this;return this.step=this.buf=null,t.subarray(0|e.k)}}let o=class extends i{props(){let{buf:t,step:n}=this,[s,i,o]=e(t,0|n.k);if(n(s+i-o),0===s)return null;let u={},a=this.of(t.subarray(i,0|n.k));for(;a.has_more();){let t,e=a.u8(),n=r.get(e);if(!n)return u.error=`Unknown mqtt_prop enum ${e}`,u;t=a[n.type](),n.op&&(t=a[n.op](u[n.name],t)),u[n.name]=t}return u}kv_obj(t=Object.create(null),[e,r]){return t[e]=r,t}u8_vec(t=[],e){return t.push(e),t}};function u(t,...e){t=class extends t{static reasons(t,...e){let r=this.prototype;r._reasons_by={...r._reasons_by};let n=r._reasons_by[t]||=new Map;for(let[t,r]of e)n.set(t,r);return this}};for(let r of e)r(t);return t}class a{static of(){return this.prototype.of()}of(){return{__proto__:this,$:[]}}static init(){return this}as_pkt(t){return this.pack([t])}push(...t){this.$.push(...t)}pack(e){let r,n,s=0,i=this.$;for(r of(this.$=!1,i))s+=r.length;n=(e=t(s,e)).length;let o=new Uint8Array(n+s);for(r of(o.set(e,0),i))o.set(r,n),n+=r.length;return o}u8(t){this.push([255&t])}u16(t){this.push([t>>>8&255,255&t])}u32(t){this.push([t>>>24&255,t>>>16&255,t>>>8&255,255&t])}vint(e){this.push(t(e))}bin(t){return t?"string"==typeof t?this.utf8(t):(t.length!==t.byteLength&&(t=new Uint8Array(t)),this.u16(t.byteLength),void this.push(t)):this.u16(0)}utf8(t){let e=new TextEncoder("utf-8").encode(t);this.u16(e.byteLength),this.push(e)}pair(t,e){this.utf8(t),this.utf8(e)}flags(t,e,r=0){return void 0!==t&&isNaN(+t)&&(t=e(t,0)),t|=r,this.push([t]),t}reason(t){this.push([0|t])}flush(t){null!=t&&this.push("string"==typeof t?new TextEncoder("utf-8").encode(t):t),this.push=!1}}function c(t){!function(t){t.reasons("connack",[0,"Success"],[1,"Connection refused, unacceptable protocol version"],[2,"Connection refused, identifier rejected"],[3,"Connection refused, server unavailable"],[4,"Connection refused, bad user name or password"],[5,"Connection refused, not authorized"])}(t),t.reasons("connack",[129,"Malformed Packet"],[130,"Protocol Error"],[131,"Implementation specific error"],[132,"Unsupported Protocol Version"],[133,"Client Identifier not valid"],[134,"Bad User Name or Password"],[135,"Not authorized"],[136,"Server unavailable"],[137,"Server busy"],[138,"Banned"],[140,"Bad authentication method"],[144,"Topic Name invalid"],[149,"Packet too large"],[151,"Quota exceeded"],[153,"Payload format invalid"],[154,"Retain not supported"],[155,"QoS not supported"],[156,"Use another server"],[157,"Server moved"],[159,"Connection rate exceeded"])}function p(t){t.reasons("puback",[0,"Success"],[16,"No matching subscribers"],[128,"Unspecified error"],[131,"Implementation specific error"],[135,"Not authorized"],[144,"Topic Name invalid"],[145,"Packet identifier in use"],[151,"Quota exceeded"],[153,"Payload format invalid"])}function l(t){return(e,r)=>{let n=t.of(r);e.pkt_id=n.u16(),5<=e.mqtt_level&&(e.props=n.props());let s=e.answers=[];for(;n.has_more();)s.push(n.reason(e.type));return e}}function _(t){!function(t){t.reasons("suback",[0,"Granted QoS 0"],[1,"Granted QoS 1"],[2,"Granted QoS 2"])}(t),t.reasons("suback",[128,"Unspecified error"],[131,"Implementation specific error"],[135,"Not authorized"],[143,"Topic Filter invalid"],[145,"Packet Identifier in use"],[151,"Quota exceeded"],[158,"Shared Subscriptions not supported"],[161,"Subscription Identifiers not supported"],[162,"Wildcard Subscriptions not supported"])}function f(t){t.reasons("unsuback",[0,"Success"],[17,"No subscription existed"],[128,"Unspecified error"],[131,"Implementation specific error"],[135,"Not authorized"],[143,"Topic Filter invalid"],[145,"Packet Identifier in use"])}function d(t){t.reasons("disconnect",[0,"Normal disconnection"],[4,"Disconnect with Will Message"],[128,"Unspecified error"],[129,"Malformed Packet"],[130,"Protocol Error"],[131,"Implementation specific error"],[135,"Not authorized"],[137,"Server busy"],[139,"Server shutting down"],[141,"Keep Alive timeout"],[142,"Session taken over"],[143,"Topic Filter invalid"],[144,"Topic Name invalid"],[147,"Receive Maximum exceeded"],[148,"Topic Alias invalid"],[149,"Packet too large"],[150,"Message rate too high"],[151,"Quota exceeded"],[152,"Administrative action"],[153,"Payload format invalid"],[154,"Retain not supported"],[155,"QoS not supported"],[156,"Use another server"],[157,"Server moved"],[158,"Shared Subscriptions not supported"],[159,"Connection rate exceeded"],[160,"Maximum connect time"],[161,"Subscription Identifiers not supported"],[162,"Wildcard Subscriptions not supported"])}function h(t){t.reasons("auth",[0,"Success"],[24,"Continue authentication"],[25,"Re-authenticate"])}const b=[function(t,e){const r=new Uint8Array([0,4,77,81,84,84]),n=t=>0|(t.reserved?1:0)|(3&t.will_qos)<<3|(t.clean_start?2:0)|(t.will_flag?4:0)|(t.will_retain?32:0)|(t.password?64:0)|(t.username?128:0);return t.connect=(t,s)=>{let i=e.of(s);i.push(r),i.u8(t);let{will:o,username:u,password:a}=s,c=i.flags(s.flags,n,0|(u?128:0)|(a?64:0)|(o?(t=>4|(3&t.qos)<<3|(t.retain?32:0))(o):0));return i.u16(s.keep_alive),5<=t&&i.props(s.props),i.utf8(s.client_id),4&c&&(5<=t&&i.props(o.props),i.utf8(o.topic),i.bin(o.payload)),128&c&&i.utf8(u),64&c&&i.bin(a),i.as_pkt(16)}},function(t,e){return t.puback=(t,r)=>{let n=e.of(r);return n.u16(r.pkt_id),5<=t&&(n.reason(r.reason),n.props(r.props)),n.as_pkt(64)}},function(t,e){return t.publish=(t,r)=>{let n=(3&r.qos)<<1,s=e.of(r);return s.utf8(r.topic),0!==n&&s.u16(r.pkt_id),5<=t?(s.props(r.props),s.flush(r.payload)):s.flush(r.payload),s.as_pkt(48|n|(r.dup?8:0)|(r.retain?1:0))}},function(t,e){const r=t=>0|3&t.qos|(t.retain?4:0)|(3&t.retain_handling)<<2;return t.subscribe=(t,n)=>{let s=e.of(n);s.u16(n.pkt_id),5<=t&&s.props(n.props);let i=r(n);for(let t of n.topics)if("string"==typeof t)s.utf8(t),s.u8(i);else{let[e,n]=Array.isArray(t)?t:[t.topic,t.opts];s.utf8(e),void 0===n?s.u8(i):s.flags(n,r)}return s.as_pkt(130)}},function(t,e){return t.unsubscribe=(t,r)=>{let n=e.of(r);n.u16(r.pkt_id),5<=t&&n.props(r.props);for(let t of r.topics)n.utf8(t);return n.as_pkt(162)}},function(t){t.pingreq=()=>new Uint8Array([192,0]),t.pingresp=()=>new Uint8Array([208,0])},function(t,e){return t.disconnect=(t,r)=>{let n=e.of(r);return r&&5<=t&&(r.reason||r.props)&&(n.reason(r.reason),n.props(r.props)),n.as_pkt(224)}},function(t,e){return t.auth=(t,r)=>{if(5>t)throw new Error("Auth packets are only available after MQTT 5.x");let n=e.of(r);return n.reason(r.reason),n.props(r.props),n.as_pkt(240)}}],m={decode_fns:[function(t,e){class r extends Number{get session_present(){return!0&this}}return t[2]=(t,n)=>{let s=e.of(n);return t.flags=s.flags(r),t.reason=s.reason(t.type),5<=t.mqtt_level&&(t.props=s.props()),t}},function(t,e){return t[3]=(t,r)=>{let{hdr:n}=t;t.dup=Boolean(8&n),t.retain=Boolean(1&n);let s=t.qos=n>>1&3,i=e.of(r);return t.topic=i.utf8(),0!==s&&(t.pkt_id=i.u16()),5<=t.mqtt_level&&(t.props=i.props()),t.payload=i.flush(),t}},function(t,e){return t[4]=(t,r)=>{let n=e.of(r);return t.pkt_id=n.u16(),5<=t.mqtt_level&&(t.reason=n.reason(t.type),t.props=n.props()),t}},function(t,e){return t[9]=l(e)},function(t,e){return t[11]=l(e)},function(t){return t[12]=t[13]=t=>t},function(t,e){return t[14]=(t,r)=>{if(r&&5<=t.mqtt_level){let n=e.of(r);t.reason=n.reason(t.type),t.props=n.props()}return t}},function(t,e){return t[15]=(t,r)=>{if(5<=t.mqtt_level){let n=e.of(r);t.reason=n.reason(t.type),t.props=n.props()}return t}}],mqtt_reader:u(o,c,p,_,f,d,h),encode_fns:b,mqtt_writer:class extends a{props(t){if(!t)return this.u8(0);if(Array.isArray(t)||(t=t.entries?Array.from(t.entries()):Object.entries(t)),0===t.length)return this.u8(0);let e=this.of();for(let[n,s]of t){let t=r.get(n);if(!t)throw new Error(`Unknown mqtt_prop "${n}"`);e[t.op||"one"](s,t)}this.push(e.pack())}one(t,e){this.u8(e.id),this[e.type](t)}kv_obj(t,e){for(let r of Object.entries(t))this.u8(e.id),this.pair(r)}u8_vec(t,e){for(let r of t)this.u8(e.id),this.u8(r)}}};const y=t=>"function"==typeof t,w=t=>"string"==typeof t;const k=(t=>e=>class extends e{static _aliases(){return super._aliases()+" sub_topic:subscribe_topic unsub_topic:unsubscribe_topic"}_init_router(e,r,n){this._subs=[];let s=this.router=n.router=t(e,this,n);return s?.invoke}on_sub(t,e){return t.pkt=e,this._subs.push(t),t}subs_settled(){return Promise.allSettled(this._subs.splice(0,1/0))}subscribe_topic(t,...e){let r=this.router;r.add(t,!0,e.pop());let n=r.mqtt_topic(t);return this.subscribe(n,...e),this}unsubscribe_topic(t,...e){let r=this.router;r.remove(t,!0);let n=r.mqtt_topic(t);return this.unsubscribe(n,...e)}on_topic(...t){return this.router.add(...t),this}})(q),g=t=>t.replace(/[*].*$/,"#").replace(/:\w[^\/]*/g,"+"),v=(t,e)=>(e=1,t.replace(/#$/,"*").replace(/\+/g,(()=>":$"+e++)));function x(t,e,r){r.done=!0}function q(){let t=[[],[]],e=Symbol(),r=e=>function*(t,e){e=e.replace(/^[\/]*/,"/");for(let r of t)for(let{keys:t,pattern:n,tgt:s}of r){let r=n.exec(e);if(r){let e=t?t.reduce(((t,e,n)=>(t[e]=r[1+n],t)),{}):r.groups??r;yield[s,e]}}}(t,e);return{find:r,mqtt_topic:g,add(e,...r){let n=r.pop(),s=r.pop();if(!y(n)){if(n)throw new TypeError;n=x}let i=function(t,e){if(t instanceof RegExp)return{keys:!1,pattern:t};var r,n,s,i,o=[],u="",a=t.split("/");for(a[0]||a.shift();s=a.shift();)"*"===(r=s[0])?(o.push("wild"),u+="/(.*)"):":"===r?(n=s.indexOf("?",1),i=s.indexOf(".",1),o.push(s.substring(1,~n?n:~i?i:s.length)),u+=~n&&!~i?"(?:/([^/]+?))?":"/([^/]+?)",~i&&(u+=(~n?"?":"")+"\\"+s.substring(i))):u+="/"+s;return{keys:o,pattern:new RegExp("^"+u+(e?"(?=$|/)":"/?$"),"i")}}(v(e));return i.key=e,i.tgt=n,t[s?0:1].push(i),this},remove:(e,r)=>S([t[r?0:1]],e),clear(e){t[e?0:1]=[],null==e&&(t[1]=[])},async invoke(n,s){s.idx=0,s.rm=e;for(let[i,o]of r(n.topic)){let r=await i(n,o,s);if(e===r&&S(t,i),s.done)break;s.idx++}1===n.qos&&await s.mqtt.puback(n)}}}function S(t,e){let r=t=>t===e||t.tgt===e||t.key===e;for(let e of t){let t=e.findIndex(r);if(0<=t)return e.splice(t,1),!0}return!1}function T(t,e=0){let r=e,n=(127&t[e])<<0;return 128&t[e++]&&(n|=(127&t[e])<<7,128&t[e++]&&(n|=(127&t[e])<<14,128&t[e++]&&(n|=(127&t[e])<<21))),[n,e,r]}function j(t){let e=new Uint8Array(0);return r=>{e=0===e.byteLength?r:function(t,e){let r=t.byteLength,n=new Uint8Array(r+e.byteLength);return n.set(t,0),n.set(e,r),n}(e,r);let n=[];for(;;){let[r,s]=T(e,1),i=r+s;if(e.byteLength<i)return n;let o=e[0],u=0===r?null:e.subarray(s,i);e=e.subarray(i);let a=t.decode_pkt(o,u,t);null!=a&&n.push(a)}}}const P=["~","connect","connack","publish","puback","pubrec","pubrel","pubcomp","subscribe","suback","unsubscribe","unsuback","pingreq","pingresp","disconnect","auth"];async function U(t,e,r,n){let s=t[`mqtt_${r.type}`]||t.mqtt_pkt;await(s?.call(t,r,n))}function N(t,e,r,n){e(r.type,r),U(t,0,r,n)}function A(t,e,r){e(r.pkt_id,r)}const E=[t=>{},U,N,U,A,A,A,A,U,A,U,A,N,N,U,N];class I extends Error{constructor(t,e=t.reason){super(`[0x${e.toString(16)}] ${e.reason}`),this.mqtt_pkt=t,this.reason=e}}class M{async connect(t={}){let e=t.client_id;w(e)||(t.client_id=e=this.client_id||this.init_client_id(e)),this.client_id=e,null==t.keep_alive&&(t.keep_alive=60);let r=await this._send0("connect",t,"connack");if(0!=r[0].reason)throw new this.MQTTError(r[0]);return this.conn.on_conn(t,r)}async disconnect(t={}){let e=await this._send0("disconnect",t);return this.conn.on_dis(t,e)}async auth(t={}){let e=await this._send0("auth",t,"auth");if(e[0].reason)throw new this.MQTTError(e[0]);return this.conn.on_auth(t,e)}ping(){return this._send("pingreq",null,"pingresp")}puback({pkt_id:t}){return this._send("puback",{pkt_id:t})}subscribe(t,e,r){t=Q(t,e,r);let n=this._send("subscribe",t,t);return this.on_sub?.(n,t)??n}unsubscribe(t,e,r){return t=Q(t,e,r),this._send("unsubscribe",t,t)}post(t,e,r){return this.pub({topic:t,payload:e,qos:0},r)}send(t,e,r){return this.pub({topic:t,payload:e,qos:1},r)}store(t,e,r){return this.pub({topic:t,payload:e,qos:1,retain:1},r)}obj_post(t,e,r){return this.pub({topic:t,msg:e,arg:"msg",qos:0},r)}obj_send(t,e,r){return this.pub({topic:t,msg:e,arg:"msg",qos:1},r)}obj_store(t,e,r){return this.pub({topic:t,msg:e,arg:"msg",qos:1,retain:1},r)}async pub(t,e){if(void 0===t.payload){y(e)&&(e={fn_encode:e});let r=t.msg,n=e?.fn_encode;if(null==r||y(r))return r&&(e={...e,fn_encode:r}),r=>this.pub({...t,[t.arg||"payload"]:r},e);t.payload=n?await n(r):JSON.stringify(r)}return e&&(e.props&&(t.props=e.props),e.xform&&(t=e.xform(t)||t)),this._send("publish",t,t.qos?t:null)}_init_dispatch(t){this.constructor?._once_();let e={__proto__:t.on_mqtt_type};return e.mqtt_publish||=this._init_router?.(t,this,e),function(t,e){let r,n=[],s=0,{td:i=1e3,n:o=5}=t?.rotate||{},u=100,a=t=>n[0].set(r,t);return p([]),[p,function(t){return w(t)?r=t:(u=u+1&65535,r=t.pkt_id=u),new Promise(a)}];function c(t,e){for(let r of n){let n=r.get(t);if(n)return r.delete(t),n([e]),!0}return!1}function p(t,r){for(let n of t)E[n.id](e,c,n,r);let u=Date.now();if(u>s)for(s=i+u,n.unshift(new Map);n.length>o;)for(let t of n.pop().values())t([,"expired"])}}(t,e)}static _aliases(){return" publish:pub sub:subscribe unsub:unsubscribe json_post:obj_post json_send:obj_send json_store:obj_store"}static _once_(t=this){t._once_=t=>0;var e,r,n=t.prototype;for(e of(n.MQTTError=I,t._aliases().split(/\s+/)))[e,r]=e.split(":"),n[e]=n[r]}}function Q(t,e,r){if(e?.trim&&(r=e,e=null),t=t.trim?{topics:[t],...e}:t[Symbol.iterator]?{topics:[...t],...e}:e?{...t,...e}:t,r){let e=t=>t.trim?r+t:t.map(e);t.topics=t.topics.map(e)}return t}const $=t=>(t.p=new Promise(((e,r)=>{t.a=e,t.e=r})),t);function C(t,e,r){let n={set:i},s=async(...t)=>(await n.p)(...t);return i();function i(){return s!==t[e]&&($(n).p.then(r,(t=>0)),t[e]=s),n}}function L(t,e,[r,n]){let s,i=C(e,"_send0",(t=>e.conn_emit("on_live",a.has_connected))),o=C(e,"_send",(t=>e.conn_emit("on_ready"))),u=function(t){let e;return r=>{if(e=clearInterval(e),r)return e=setInterval(t,1e3*r),e.unref?.(),!0}}((()=>e._send0("pingreq"))),a=Object.create({ping:(t=a.keep_alive)=>u(t),on_conn:(r,n)=>(a.has_connected=!0,a.keep_alive=t.keep_alive||n[0].props?.server_keep_alive||r.keep_alive,e.conn_emit("on_conn"),t.use_auth?n:a.on_auth(null,n)),on_auth:(r,n)=>(o.a(i.p),0!=t.keep_alive&&a.ping(),e.conn_emit("on_auth",!r),n),on_dis:(t,e)=>(a.reset(!1),e),reset(t){t&&i.e(t),s.e(t),delete a.is_set,a.ready=c(),e.conn_emit("on_disconnect",!1===t,t)},abort:()=>(o.e(err),a.reset(err)),async setup(t,s,o){if(a.is_set)throw new Error;a.is_set=!0,await t;let u=e.mqtt_ctx.mqtt_stream();{let t={mqtt:e};o((e=>r(u.decode(e),t)),a)}s=await s,i.a((async(t,e,r)=>{let i=void 0===r||n(r);return await s(u.encode_pkt(t,e)),i}))}});return a.ready=c(),a;async function c(){s=$({}),u(0),i.set(),o.set();try{return e._send0=await Promise.race([i.p,s.p]),e._send=await Promise.race([o.p,s.p]),!0}catch(t){return!1}}}const O={utf8(t){return new TextDecoder("utf-8").decode(t||this.payload)},json(t){return JSON.parse(this.utf8(t)||null)},text(t){return this.utf8(t)}},z={sess_stg:globalThis.sessionStorage};class R extends M{constructor(t){t={...z,...t},super(),this.with(t),this.sess_stg=t.sess_stg,this.conn=L(t,this,this._init_dispatch(t))}with(t){for(let[e,r]of Object.entries(t))y(r)&&(this[e]=r);return this}static mqtt_ctx(t,e,r=O){let n=class extends(this){};return n.prototype.mqtt_ctx=function(t,e,r){r={__proto__:r||e.pkt_ctx,mqtt_level:t,get hdr(){return 15&this.b0},get id(){return this.b0>>>4},get type(){return P[this.b0>>>4]}};let n,s=[],i={};for(n of e.encode_fns)n(i,e.mqtt_writer);for(n of e.decode_fns)n(s,e.mqtt_reader);return{pkt_ctx:r,encode_pkt:(e,r)=>i[e](t,r),decode_pkt(t,e){if(t.map)return j(this)(t)[0];let r=s[t>>>4]||s[0];return r?.({__proto__:this.pkt_ctx,b0:t},e)},mqtt_stream(){let t={__proto__:this,pkt_ctx:{__proto__:r}};return t.pkt_ctx._base_=t.pkt_ctx,t.decode=j(t),t}}}(t,e,r),n}async conn_emit(t,e,r){this.log_conn?.(t,e,r);try{let n=this[await t];if(n)await n.call(this,this,e,r);else if(r)throw r}catch(e){this.on_error(e,t)}}on_error(t,e){console.warn("[[u8-mqtt error: %s]]",e,t)}log_conn(t,e,r){console.info("[[u8-mqtt conn: %s]]",t,e,r)}init_client_id(t=["u8-mqtt--",""]){let e,r=this.sess_stg,n=r?.getItem(e=t.join(" "));return n||(n=t.join(Math.random().toString(36).slice(2)),r?.setItem(e,n)),n}on_live(t,e){if(e)return t.connect()}on_disconnect(t,e){if(!e)return t.on_reconnect?.()}_use_conn(t){return(this.reconnect=t)?.()}with_autoreconnect(t=2e3){return t.toFixed&&(t={delay:t}),this.with({on_reconnect(){this.delay(t.delay||2e3).then(this.reconnect).then(t.reconnect,t.error)}})}delay(t){return new Promise((e=>setTimeout(e,t)))}with_async_iter(t,e){return this.conn.setup(t,e,(async(e,r)=>{try{t=await t;for await(let r of t)e(r);r.reset()}catch(t){r.reset(t)}})),this}with_stream(t,e){return void 0===e&&(e=t),this.with_async_iter(t,(t=>e.write(t)))}with_websock(t){if(!t?.send)return t=new URL(t||"ws://127.0.0.1:9001"),this._use_conn((()=>this.with_websock(new WebSocket(t,["mqtt"]))));t.binaryType="arraybuffer";let e,r=t.readyState;if(1!==r){if(0!==r)throw new Error("WS readyState");e=new Promise((e=>t.onopen=e))}return this.conn.setup(e,(e=>t.send(e)),((e,r)=>{t.onmessage=t=>e(new Uint8Array(t.data)),t.onclose=t=>{if(!t.wasClean){var e=new Error("websocket close");e.code=t.code,e.reason=t.reason}r.reset(e)}})),this}}const B="0.6.1-web",W=k(R.mqtt_ctx(4,m)),D=k(R.mqtt_ctx(5,m)),F=t=>new W(t),G=t=>new D(t);export{D as MQTTClient,W as MQTTClient_v4,D as MQTTClient_v5,G as default,G as mqtt,F as mqtt_v4,G as mqtt_v5,B as version};
1
+ function t(t,e=[]){for(e.push((t<128?0:128)|127&t);(t>>>=7)>0;)e.push((t<128?0:128)|127&t);return e}function e(t,e=0,r){let n=0,s=e,i=t[s++],o=127&i;for(;128&i;)o|=(127&(i=t[s++]))<<(n+=7);return t.length<s?[r,e,e]:[o,s,e]}const r=()=>function(t,e){for(let[r,n,s,i]of e)i={id:r,type:n,name:s,...i},t.set(r,i).set(s,i);return t}(new Map,[[1,"u8","payload_format_indicator"],[2,"u32","message_expiry_interval"],[3,"utf8","content_type"],[8,"utf8","response_topic"],[9,"bin","correlation_data"],[11,"vint","subscription_identifier"],[17,"u32","session_expiry_interval"],[18,"utf8","assigned_client_identifier"],[19,"u16","server_keep_alive"],[21,"utf8","authentication_method"],[22,"bin","authentication_data"],[23,"u8","request_problem_information"],[24,"u32","will_delay_interval"],[25,"u8","request_response_information"],[26,"utf8","response_information"],[28,"utf8","server_reference"],[31,"utf8","reason_string"],[33,"u16","receive_maximum"],[34,"u16","topic_alias_maximum"],[35,"u16","topic_alias"],[36,"u8","maximum_qos"],[37,"u8","retain_available"],[38,"pair","user_properties",{op:"kv_obj"}],[39,"u32","maximum_packet_size"],[40,"u8","wildcard_subscription_available"],[41,"u8","subscription_identifiers_available",{op:"u8_vec"}],[42,"u8","shared_subscription_available"]]),n=r();class s extends Number{constructor(t,e){super(t),this.reason=`:${(this.ok=t<128)?"ok":"fail"}:${e}`}}class i{static for(t,e){return(new this).of(e,{pkt:t})}of(t,e){let r=(t,e)=>(e=0|r.k,r.k=e+t,e);return{__proto__:this,buf:t,step:r,...e}}has_more(){return this.buf.byteLength>(0|this.step.k)}u8(){return this.buf[this.step(1)]}u16(){let{buf:t,step:e}=this,r=e(2);return t[r]<<8|t[r+1]}u32(){let{buf:t,step:e}=this,r=e(4);return t[r]<<24|t[r+1]<<16|t[r+2]<<8|t[r+3]}vint(){let{buf:t,step:r}=this,[n,s,i]=e(t,0|r.k);return r(s-i),n}bin(){let{buf:t,step:e}=this,r=e(2),n=t[r]<<8|t[r+1];return r=e(n),t.subarray(r,r+n)}utf8(){return new TextDecoder("utf-8").decode(this.bin())}pair(){return[this.utf8(),this.utf8()]}flags(t){return new t(this.buf[this.step(1)])}reason(t){let e=this.buf[this.step(1)];if(null!=e)return new s(e,this._reason_for?.(e,t))}flush(){let{buf:t,step:e}=this;return this.step=this.buf=null,t.subarray(0|e.k)}}function o(t,e){for(let[t,r]of Object.entries(e))e[t]=new Map(r);return class extends t{_reason_for(t,r){return e[r]?.get(t)||e.all.get(t)}warn(t){let e=this.pkt;e.warn?e.warn(t,e):console.warn("[u8-mqtt-packet] "+t)}}}const u={connack:[[1,"conn refused: unacceptable protocol version"],[2,"conn refused: identifier rejected"],[3,"conn refused: server unavailable"],[4,"conn refused: bad user name or password"],[5,"conn refused: not authorized"]],suback:[[0,"qos=0"],[1,"qos=1"],[2,"qos=2"]],unsuback:[[17,"no subscription existed"]],puback:[[16,"no matching subscribers"]],all:[[0,""],[128,"unspecified error"],[131,"implementation specific error"],[135,"not authorized"],[143,"topic filter invalid"],[145,"packet identifier in use"],[146,"packet identifier not found"]]},a=o(class extends i{props(){let{buf:t,step:r}=this,[s,i,o]=e(t,0|r.k,0);if(r(s+i-o),0===s)return null;let u={},a=this.of(t.subarray(i,0|r.k));for(;a.has_more();){let t,e=a.u8(),r=n.get(e);if(!r){u._unknown_=e,this.warn?.(`unknown property: ${e}`);break}t=a[r.type](),u[r.name]=r.op?a[r.op](u[r.name],t):t}return u}kv_obj(t=Object.create(null),[e,r]){return t[e]=r,t}u8_vec(t=[],e){return t.push(e),t}},{...u,auth:[[24,"continue authentication"],[25,"re-authenticate"]],disconnect:[[4,"disconnect with will message"]],all:[...u.all,[129,"malformed packet"],[130,"protocol error"],[132,"unsupported protocol version"],[133,"client identifier not valid"],[134,"bad user name or password"],[136,"server unavailable"],[137,"server busy"],[138,"banned"],[139,"server shutting down"],[140,"bad authentication method"],[141,"keep alive timeout"],[142,"session taken over"],[144,"topic name invalid"],[147,"receive maximum exceeded"],[148,"topic alias invalid"],[149,"packet too large"],[150,"message rate too high"],[151,"quota exceeded"],[152,"administrative action"],[153,"payload format invalid"],[154,"retain not supported"],[155,"qoS not supported"],[156,"use another server"],[157,"server moved"],[158,"shared subscriptions not supported"],[159,"connection rate exceeded"],[160,"maximum connect time"],[161,"subscription identifiers not supported"],[162,"wildcard subscriptions not supported"]]});class p{static for(t){return(new this).of()}of(){return{__proto__:this,$:[]}}static init(){return this}as_pkt(t){return this.pack([t])}push(...t){this.$.push(...t)}pack(e){let r,n,s=0,i=this.$;for(r of(this.$=!1,i))s+=r.length;n=(e=t(s,e)).length;let o=new Uint8Array(n+s);for(r of(o.set(e,0),i))o.set(r,n),n+=r.length;return o}u8(t){this.push([255&t])}u16(t){this.push([t>>>8&255,255&t])}u32(t){this.push([t>>>24&255,t>>>16&255,t>>>8&255,255&t])}vint(e){this.push(t(e))}bin(t){return t?"string"==typeof t?this.utf8(t):(t.length!==t.byteLength&&(t=new Uint8Array(t)),this.u16(t.byteLength),void this.push(t)):this.u16(0)}utf8(t){let e=new TextEncoder("utf-8").encode(t);this.u16(e.byteLength),this.push(e)}pair(t,e){this.utf8(t),this.utf8(e)}flags(t,e,r=0){return void 0!==t&&isNaN(+t)&&(t=e(t,0)),t|=r,this.push([t]),t}reason(t){this.push([0|t])}flush(t){null!=t&&this.push("string"==typeof t?new TextEncoder("utf-8").encode(t):t),this.push=!1}}const c={decode_fns:[function(t,e){class r extends Number{get session_present(){return!0&this}}return t[2]=(t,n)=>{let s=e.for(t,n);return t.flags=s.flags(r),t.reason=s.reason(t.type),5<=t.mqtt_level&&(t.props=s.props()),t}},function(t,e){return t[3]=(t,r)=>{let{hdr:n}=t;t.dup=Boolean(8&n),t.retain=Boolean(1&n);let s=t.qos=n>>1&3,i=e.for(t,r);return t.topic=i.utf8(),0!==s&&(t.pkt_id=i.u16()),5<=t.mqtt_level&&(t.props=i.props()),t.payload=i.flush(),t}},function(t,e){return t[4]=(t,r)=>{let n=e.for(t,r);return t.pkt_id=n.u16(),5<=t.mqtt_level&&(t.reason=n.reason(t.type),t.props=n.props()),t}},function(t,e){return t[9]=t[11]=(t,r)=>{let n=e.for(t,r);t.pkt_id=n.u16(),5<=t.mqtt_level&&(t.props=n.props());let s=t.answers=[];for(;n.has_more();)s.push(n.reason(t.type));return t}},function(t){return t[12]=t[13]=t=>t},function(t,e){return t[14]=(t,r)=>{if(r&&5<=t.mqtt_level){let n=e.for(t,r);t.reason=n.reason(t.type),t.props=n.props()}return t}},function(t,e){return t[15]=(t,r)=>{if(5<=t.mqtt_level){let n=e.of(r);t.reason=n.reason(t.type),t.props=n.props()}return t}}],mqtt_reader:a,encode_fns:[function(t,e){const r=new Uint8Array([0,4,77,81,84,84]),n=t=>0|(t.reserved?1:0)|(3&t.will_qos)<<3|(t.clean_start?2:0)|(t.will_flag?4:0)|(t.will_retain?32:0)|(t.password?64:0)|(t.username?128:0);return t.connect=(t,s)=>{let i=e.for(s);i.push(r),i.u8(t);let{will:o,username:u,password:a}=s,p=i.flags(s.flags,n,0|(u?128:0)|(a?64:0)|(o?(t=>4|(3&t.qos)<<3|(t.retain?32:0))(o):0));return i.u16(s.keep_alive),5<=t&&i.props(s.props),i.utf8(s.client_id),4&p&&(5<=t&&i.props(o.props),i.utf8(o.topic),i.bin(o.payload)),128&p&&i.utf8(u),64&p&&i.bin(a),i.as_pkt(16)}},function(t,e){return t.puback=(t,r)=>{let n=e.for(r);return n.u16(r.pkt_id),5<=t&&(n.reason(r.reason),n.props(r.props)),n.as_pkt(64)}},function(t,e){return t.publish=(t,r)=>{let n=(3&r.qos)<<1,s=e.for(r);return s.utf8(r.topic),0!==n&&s.u16(r.pkt_id),5<=t?(s.props(r.props),s.flush(r.payload)):s.flush(r.payload),s.as_pkt(48|n|(r.dup?8:0)|(r.retain?1:0))}},function(t,e){const r=t=>0|3&t.qos|(t.retain?4:0)|(3&t.retain_handling)<<2;return t.subscribe=(t,n)=>{let s=e.for(n);s.u16(n.pkt_id),5<=t&&s.props(n.props);let i=r(n);for(let t of n.topics)if("string"==typeof t)s.utf8(t),s.u8(i);else{let[e,n]=Array.isArray(t)?t:[t.topic,t.opts];s.utf8(e),void 0===n?s.u8(i):s.flags(n,r)}return s.as_pkt(130)}},function(t,e){return t.unsubscribe=(t,r)=>{let n=e.for(r);n.u16(r.pkt_id),5<=t&&n.props(r.props);for(let t of r.topics)n.utf8(t);return n.as_pkt(162)}},function(t){t.pingreq=()=>new Uint8Array([192,0]),t.pingresp=()=>new Uint8Array([208,0])},function(t,e){return t.disconnect=(t,r)=>{let n=e.for(r);return r&&5<=t&&(r.reason||r.props)&&(n.reason(r.reason),n.props(r.props)),n.as_pkt(224)}},function(t,e){return t.auth=(t,r)=>{if(5>t)throw new Error("Auth packets are only available after MQTT 5.x");let n=e.of(r);return n.reason(r.reason),n.props(r.props),n.as_pkt(240)}}],mqtt_writer:class extends p{props(t){if(!t)return this.u8(0);if(Array.isArray(t)||(t=t.entries?Array.from(t.entries()):Object.entries(t)),0===t.length)return this.u8(0);let e=this.of();for(let[r,s]of t){let t=n.get(r);if(!t)throw new Error(`MQTT unknown property "${r}"`);e[t.op||"one"](s,t)}this.push(e.pack())}one(t,e){this.u8(e.id),this[e.type](t)}kv_obj(t,e){for(let r of Object.entries(t))this.u8(e.id),this.pair(r)}u8_vec(t,e){for(let r of t)this.u8(e.id),this.u8(r)}}};const l=t=>"function"==typeof t,_=t=>"string"==typeof t;const f=(t=>e=>class extends e{static _aliases(){return super._aliases()+" sub_topic:subscribe_topic unsub_topic:unsubscribe_topic"}_init_router(e,r,n){this._subs=[];let s=this.router=n.router=t(e,this,n);return s?.invoke}on_sub(t,e){return t.pkt=e,this._subs.push(t),t}subs_settled(){return Promise.allSettled(this._subs.splice(0,1/0))}subscribe_topic(t,...e){let r=this.router;r.add(t,!0,e.pop());let n=r.mqtt_topic(t);return this.subscribe(n,...e),this}unsubscribe_topic(t,...e){let r=this.router;r.remove(t,!0);let n=r.mqtt_topic(t);return this.unsubscribe(n,...e)}on_topic(...t){return this.router.add(...t),this}})(m),h=t=>t.replace(/[*].*$/,"#").replace(/:\w[^\/]*/g,"+"),d=(t,e)=>(e=1,t.replace(/#$/,"*").replace(/\+/g,(()=>":$"+e++)));function b(t,e,r){r.done=!0}function m(){let t=[[],[]],e=Symbol(),r=e=>function*(t,e){e=e.replace(/^[\/]*/,"/");for(let r of t)for(let{keys:t,pattern:n,tgt:s}of r){let r=n.exec(e);if(r){let e=t?t.reduce(((t,e,n)=>(t[e]=r[1+n],t)),{}):r.groups??r;yield[s,e]}}}(t,e);return{find:r,mqtt_topic:h,add(e,...r){let n=r.pop(),s=r.pop();if(!l(n)){if(n)throw new TypeError;n=b}let i=function(t,e){if(t instanceof RegExp)return{keys:!1,pattern:t};var r,n,s,i,o=[],u="",a=t.split("/");for(a[0]||a.shift();s=a.shift();)"*"===(r=s[0])?(o.push("wild"),u+="/(.*)"):":"===r?(n=s.indexOf("?",1),i=s.indexOf(".",1),o.push(s.substring(1,~n?n:~i?i:s.length)),u+=~n&&!~i?"(?:/([^/]+?))?":"/([^/]+?)",~i&&(u+=(~n?"?":"")+"\\"+s.substring(i))):u+="/"+s;return{keys:o,pattern:new RegExp("^"+u+(e?"(?=$|/)":"/?$"),"i")}}(d(e));return i.key=e,i.tgt=n,t[s?0:1].push(i),this},remove:(e,r)=>w([t[r?0:1]],e),clear(e){t[e?0:1]=[],null==e&&(t[1]=[])},async invoke(n,s){s.idx=0,s.rm=e;for(let[i,o]of r(n.topic)){let r=await i(n,o,s);if(e===r&&w(t,i),s.done)break;s.idx++}1===n.qos&&await s.mqtt.puback(n)}}}function w(t,e){let r=t=>t===e||t.tgt===e||t.key===e;for(let e of t){let t=e.findIndex(r);if(0<=t)return e.splice(t,1),!0}return!1}function y(t,e=0,r){let n=0,s=e,i=t[s++],o=127&i;for(;128&i;)o|=(127&(i=t[s++]))<<(n+=7);return t.length<s?[r,e,e]:[o,s,e]}function k(t){let e=new Uint8Array(0),r=0;return n=>{e=0===e.byteLength?n:function(t,e){let r=t.byteLength,n=new Uint8Array(r+e.byteLength);return n.set(t,0),n.set(e,r),n}(e,n);let s=[];for(;e.byteLength>=r;){let[n,i]=y(e,1,NaN),o=n+i;if(!(o<=e.byteLength)){r=o||0;break}let u=e[0],a=0===n?null:e.subarray(i,o);e=e.subarray(o);let p=t.decode_pkt(u,a,t);null!=p&&s.push(p)}return s}}const g=["~","connect","connack","publish","puback","pubrec","pubrel","pubcomp","subscribe","suback","unsubscribe","unsuback","pingreq","pingresp","disconnect","auth"];async function v(t,e,r,n){let s=t[`mqtt_${r.type}`]||t.mqtt_pkt;await(s?.call(t,r,n))}function q(t,e,r,n){e(r.type,r),v(t,0,r,n)}function x(t,e,r){e(r.pkt_id,r)}const j=[t=>{},v,q,v,x,x,x,x,v,x,v,x,q,q,v,q];class T extends Error{constructor(t,e=t.reason){super(`[0x${e.toString(16)}] ${e.reason}`),this.mqtt_pkt=t,this.reason=e}}class ${async connect(t={}){let e=t.client_id;_(e)||(t.client_id=e=this.client_id||this.init_client_id(e)),this.client_id=e,null==t.keep_alive&&(t.keep_alive=60);let r=await this._send0("connect",t,"connack");if(0!=r[0].reason)throw new this.MQTTError(r[0]);return this.conn.on_conn(t,r)}async disconnect(t={}){let e=await this._send0("disconnect",t);return this.conn.on_dis(t,e)}async auth(t={}){let e=await this._send0("auth",t,"auth");if(e[0].reason)throw new this.MQTTError(e[0]);return this.conn.on_auth(t,e)}ping(){return this._send("pingreq",null,"pingresp")}puback({pkt_id:t}){return this._send("puback",{pkt_id:t})}subscribe(t,e,r){t=A(t,e,r);let n=this._send("subscribe",t,t);return this.on_sub?.(n,t)??n}unsubscribe(t,e,r){return t=A(t,e,r),this._send("unsubscribe",t,t)}post(t,e,r){return this.pub({topic:t,payload:e,qos:0},r)}send(t,e,r){return this.pub({topic:t,payload:e,qos:1},r)}store(t,e,r){return this.pub({topic:t,payload:e,qos:1,retain:1},r)}obj_post(t,e,r){return this.pub({topic:t,msg:e,arg:"msg",qos:0},r)}obj_send(t,e,r){return this.pub({topic:t,msg:e,arg:"msg",qos:1},r)}obj_store(t,e,r){return this.pub({topic:t,msg:e,arg:"msg",qos:1,retain:1},r)}async pub(t,e){if(void 0===t.payload){l(e)&&(e={fn_encode:e});let r=t.msg,n=e?.fn_encode;if(null==r||l(r))return r&&(e={...e,fn_encode:r}),r=>this.pub({...t,[t.arg||"payload"]:r},e);t.payload=n?await n(r):JSON.stringify(r)}return e&&(e.props&&(t.props=e.props),e.xform&&(t=e.xform(t)||t)),this._send("publish",t,t.qos?t:null)}_init_dispatch(t){this.constructor?._once_();let e={__proto__:t.on_mqtt_type};return e.mqtt_publish||=this._init_router?.(t,this,e),function(t,e){let r,n=[],s=0,{td:i=1e3,n:o=5}=t?.rotate||{},u=100,a=t=>n[0].set(r,t);return c([]),[c,function(t){return _(t)?r=t:(u=u+1&65535,r=t.pkt_id=u),new Promise(a)}];function p(t,e){for(let r of n){let n=r.get(t);if(n)return r.delete(t),n([e]),!0}return!1}function c(t,r){for(let n of t)j[n.id](e,p,n,r);let u=Date.now();if(u>s)for(s=i+u,n.unshift(new Map);n.length>o;)for(let t of n.pop().values())t([,"expired"])}}(t,e)}static _aliases(){return" publish:pub sub:subscribe unsub:unsubscribe json_post:obj_post json_send:obj_send json_store:obj_store"}static _once_(t=this){t._once_=t=>0;var e,r,n=t.prototype;for(e of(n.MQTTError=T,t._aliases().split(/\s+/)))[e,r]=e.split(":"),n[e]=n[r]}}function A(t,e,r){if(e?.trim&&(r=e,e=null),t=t.trim?{topics:[t],...e}:t[Symbol.iterator]?{topics:[...t],...e}:e?{...t,...e}:t,r){let e=t=>t.trim?r+t:t.map(e);t.topics=t.topics.map(e)}return t}const E=t=>(t.p=new Promise(((e,r)=>{t.a=e,t.e=r})),t);function S(t,e,r){let n={set:i},s=async(...t)=>(await n.p)(...t);return i();function i(){return s!==t[e]&&(E(n).p.then(r,(t=>0)),t[e]=s),n}}function L(t,e,[r,n]){let s,i=S(e,"_send0",(t=>e.conn_emit("on_live",a.has_connected))),o=S(e,"_send",(t=>e.conn_emit("on_ready"))),u=function(t){let e;return r=>{if(e=clearInterval(e),r)return e=setInterval(t,1e3*r),e.unref?.(),!0}}((()=>e._send0("pingreq"))),a=Object.create({ping:(t=a.keep_alive)=>u(t),on_conn:(r,n)=>(a.has_connected=!0,a.keep_alive=t.keep_alive||n[0].props?.server_keep_alive||r.keep_alive,e.conn_emit("on_conn"),t.use_auth?n:a.on_auth(null,n)),on_auth:(r,n)=>(o.a(i.p),0!=t.keep_alive&&a.ping(),e.conn_emit("on_auth",!r),n),on_dis:(t,e)=>(a.reset(!1),e),reset(t){t&&i.e(t),s.e(t),delete a.is_set,a.ready=p(),e.conn_emit("on_disconnect",!1===t,t)},abort:()=>(o.e(err),a.reset(err)),async setup(t,s,o){if(a.is_set)throw new Error;a.is_set=!0,await t;let u=e.mqtt_ctx.mqtt_stream();{let t={mqtt:e};o((e=>r(u.decode(e),t)),a)}s=await s,i.a((async(t,e,r)=>{let i=void 0===r||n(r);return await s(u.encode_pkt(t,e)),i}))}});return a.ready=p(),a;async function p(){s=E({}),u(0),i.set(),o.set();try{return e._send0=await Promise.race([i.p,s.p]),e._send=await Promise.race([o.p,s.p]),!0}catch(t){return!1}}}const M={utf8(t){return new TextDecoder("utf-8").decode(t||this.payload)},json(t){return JSON.parse(this.utf8(t)||null)},text(t){return this.utf8(t)}},O={sess_stg:globalThis.sessionStorage};class U extends ${constructor(t){t={...O,...t},super(),this.with(t),this.sess_stg=t.sess_stg,this.conn=L(t,this,this._init_dispatch(t))}with(t){for(let[e,r]of Object.entries(t))l(r)&&(this[e]=r);return this}static mqtt_ctx(t,e,r=M){let n=class extends(this){};return n.prototype.mqtt_ctx=function(t,e,r=e.pkt_ctx){let n,s=e=>({__proto__:e,get hdr(){return 15&this.b0},get id(){return this.b0>>>4},get type(){return g[this.b0>>>4]},mqtt_level:t}),i=[],o={};for(n of e.encode_fns)n(o,e.mqtt_writer);for(n of e.decode_fns)n(i,e.mqtt_reader);return{pkt_api:r,pkt_ctx:s(r),encode_pkt:(e,r)=>o[e](t,r),decode_pkt(t,e){if(t.map)return k(this)(t)[0];let r=i[t>>>4]||i[0];return r?.({__proto__:this.pkt_ctx,b0:t},e)},mqtt_stream(t=this.pkt_api){let e={__proto__:this,pkt_ctx:s(t)};return e.decode=k(e),e}}}(t,e,r),n}async conn_emit(t,e,r){this.log_conn?.(t,e,r);try{let n=this[await t];if(n)await n.call(this,this,e,r);else if(r)throw r}catch(e){this.on_error(e,t)}}on_error(t,e){console.warn("[[u8-mqtt error: %s]]",e,t)}log_conn(t,e,r){console.info("[[u8-mqtt conn: %s]]",t,e,r)}init_client_id(t=["u8-mqtt--",""]){let e,r=this.sess_stg,n=r?.getItem(e=t.join(" "));return n||(n=t.join(Math.random().toString(36).slice(2)),r?.setItem(e,n)),n}on_live(t,e){if(e)return t.connect()}on_disconnect(t,e){if(!e)return t.on_reconnect?.()}_use_conn(t){return(this.reconnect=t)?.()}with_autoreconnect(t=2e3){return t.toFixed&&(t={delay:t}),this.with({on_reconnect(){this.delay(t.delay||2e3).then(this.reconnect).then(t.reconnect,t.error)}})}delay(t){return new Promise((e=>setTimeout(e,t)))}with_async_iter(t,e){return this.conn.setup(t,e,(async(e,r)=>{try{t=await t;for await(let r of t)e(r);r.reset()}catch(t){r.reset(t)}})),this}with_stream(t,e){return void 0===e&&(e=t),this.with_async_iter(t,(t=>e.write(t)))}with_websock(t){if(!t?.send)return t=new URL(t||"ws://127.0.0.1:9001"),this._use_conn((()=>this.with_websock(new WebSocket(t,["mqtt"]))));t.binaryType="arraybuffer";let e,r=t.readyState;if(1!==r){if(0!==r)throw new Error("WS readyState");e=new Promise((e=>t.onopen=e))}return this.conn.setup(e,(e=>t.send(e)),((e,r)=>{t.onmessage=t=>e(new Uint8Array(t.data)),t.onclose=t=>{if(!t.wasClean){var e=new Error("websocket close");e.code=t.code,e.reason=t.reason}r.reset(e)}})),this}}const N="0.6.3-web",P=f(U.mqtt_ctx(4,c)),Q=f(U.mqtt_ctx(5,c)),I=t=>new P(t),z=t=>new Q(t);export{Q as MQTTClient,P as MQTTClient_v4,Q as MQTTClient_v5,z as default,z as mqtt,I as mqtt_v4,z as mqtt_v5,N as version};
Binary file
Binary file