@yume-chan/adb 0.0.19 → 0.0.20

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 (181) hide show
  1. package/CHANGELOG.json +33 -0
  2. package/CHANGELOG.md +15 -1
  3. package/README.md +220 -103
  4. package/esm/adb.d.ts +24 -44
  5. package/esm/adb.d.ts.map +1 -1
  6. package/esm/adb.js +14 -203
  7. package/esm/adb.js.map +1 -1
  8. package/esm/banner.d.ts +17 -0
  9. package/esm/banner.d.ts.map +1 -0
  10. package/esm/banner.js +67 -0
  11. package/esm/banner.js.map +1 -0
  12. package/esm/commands/power.d.ts +1 -1
  13. package/esm/commands/power.js +2 -2
  14. package/esm/commands/reverse.d.ts +17 -18
  15. package/esm/commands/reverse.d.ts.map +1 -1
  16. package/esm/commands/reverse.js +53 -48
  17. package/esm/commands/reverse.js.map +1 -1
  18. package/esm/commands/subprocess/protocols/none.d.ts +3 -8
  19. package/esm/commands/subprocess/protocols/none.d.ts.map +1 -1
  20. package/esm/commands/subprocess/protocols/none.js +16 -16
  21. package/esm/commands/subprocess/protocols/none.js.map +1 -1
  22. package/esm/commands/subprocess/protocols/shell.d.ts +3 -9
  23. package/esm/commands/subprocess/protocols/shell.d.ts.map +1 -1
  24. package/esm/commands/subprocess/protocols/shell.js +48 -42
  25. package/esm/commands/subprocess/protocols/shell.js.map +1 -1
  26. package/esm/commands/subprocess/protocols/types.d.ts +1 -2
  27. package/esm/commands/subprocess/protocols/types.d.ts.map +1 -1
  28. package/esm/commands/sync/list.js +2 -2
  29. package/esm/commands/sync/push.d.ts +14 -3
  30. package/esm/commands/sync/push.d.ts.map +1 -1
  31. package/esm/commands/sync/push.js +8 -8
  32. package/esm/commands/sync/push.js.map +1 -1
  33. package/esm/commands/sync/request.js +1 -1
  34. package/esm/commands/sync/response.d.ts +3 -3
  35. package/esm/commands/sync/response.d.ts.map +1 -1
  36. package/esm/commands/sync/response.js +3 -3
  37. package/esm/commands/sync/response.js.map +1 -1
  38. package/esm/commands/sync/socket.d.ts +8 -13
  39. package/esm/commands/sync/socket.d.ts.map +1 -1
  40. package/esm/commands/sync/socket.js +32 -29
  41. package/esm/commands/sync/socket.js.map +1 -1
  42. package/esm/commands/sync/stat.js +2 -2
  43. package/esm/commands/sync/stat.js.map +1 -1
  44. package/esm/commands/sync/sync.d.ts +11 -18
  45. package/esm/commands/sync/sync.d.ts.map +1 -1
  46. package/esm/commands/sync/sync.js +19 -23
  47. package/esm/commands/sync/sync.js.map +1 -1
  48. package/esm/commands/tcpip.d.ts +2 -2
  49. package/esm/commands/tcpip.d.ts.map +1 -1
  50. package/esm/commands/tcpip.js +4 -2
  51. package/esm/commands/tcpip.js.map +1 -1
  52. package/esm/{auth.d.ts → daemon/auth.d.ts} +1 -2
  53. package/esm/daemon/auth.d.ts.map +1 -0
  54. package/esm/{auth.js → daemon/auth.js} +14 -14
  55. package/esm/daemon/auth.js.map +1 -0
  56. package/esm/daemon/connection.d.ts +11 -0
  57. package/esm/daemon/connection.d.ts.map +1 -0
  58. package/esm/daemon/connection.js +2 -0
  59. package/esm/daemon/connection.js.map +1 -0
  60. package/esm/{crypto.d.ts → daemon/crypto.d.ts} +5 -5
  61. package/esm/daemon/crypto.d.ts.map +1 -0
  62. package/esm/{crypto.js → daemon/crypto.js} +23 -27
  63. package/esm/daemon/crypto.js.map +1 -0
  64. package/esm/{backend.d.ts → daemon/device.d.ts} +2 -2
  65. package/esm/daemon/device.d.ts.map +1 -0
  66. package/esm/daemon/device.js +2 -0
  67. package/esm/daemon/device.js.map +1 -0
  68. package/esm/{socket → daemon}/dispatcher.d.ts +8 -26
  69. package/esm/daemon/dispatcher.d.ts.map +1 -0
  70. package/esm/{socket → daemon}/dispatcher.js +65 -63
  71. package/esm/daemon/dispatcher.js.map +1 -0
  72. package/esm/daemon/index.d.ts +8 -0
  73. package/esm/daemon/index.d.ts.map +1 -0
  74. package/esm/daemon/index.js +8 -0
  75. package/esm/daemon/index.js.map +1 -0
  76. package/esm/{packet.d.ts → daemon/packet.d.ts} +4 -4
  77. package/esm/daemon/packet.d.ts.map +1 -0
  78. package/esm/{packet.js → daemon/packet.js} +1 -1
  79. package/esm/daemon/packet.js.map +1 -0
  80. package/esm/{socket → daemon}/socket.d.ts +15 -17
  81. package/esm/daemon/socket.d.ts.map +1 -0
  82. package/esm/{socket → daemon}/socket.js +38 -35
  83. package/esm/daemon/socket.js.map +1 -0
  84. package/esm/daemon/transport.d.ts +45 -0
  85. package/esm/daemon/transport.d.ts.map +1 -0
  86. package/esm/daemon/transport.js +184 -0
  87. package/esm/daemon/transport.js.map +1 -0
  88. package/esm/index.d.ts +3 -5
  89. package/esm/index.d.ts.map +1 -1
  90. package/esm/index.js +3 -5
  91. package/esm/index.js.map +1 -1
  92. package/esm/server/client.d.ts +78 -0
  93. package/esm/server/client.d.ts.map +1 -0
  94. package/esm/server/client.js +329 -0
  95. package/esm/server/client.js.map +1 -0
  96. package/esm/server/index.d.ts +3 -0
  97. package/esm/server/index.d.ts.map +1 -0
  98. package/esm/server/index.js +3 -0
  99. package/esm/server/index.js.map +1 -0
  100. package/esm/server/transport.d.ts +19 -0
  101. package/esm/server/transport.d.ts.map +1 -0
  102. package/esm/server/transport.js +44 -0
  103. package/esm/server/transport.js.map +1 -0
  104. package/esm/utils/auto-reset-event.d.ts +1 -2
  105. package/esm/utils/auto-reset-event.d.ts.map +1 -1
  106. package/esm/utils/auto-reset-event.js +12 -12
  107. package/esm/utils/auto-reset-event.js.map +1 -1
  108. package/esm/utils/base64.js +5 -5
  109. package/esm/utils/base64.js.map +1 -1
  110. package/esm/utils/conditional-variable.d.ts +1 -2
  111. package/esm/utils/conditional-variable.d.ts.map +1 -1
  112. package/esm/utils/conditional-variable.js +10 -10
  113. package/esm/utils/conditional-variable.js.map +1 -1
  114. package/esm/utils/hex.d.ts +3 -0
  115. package/esm/utils/hex.d.ts.map +1 -0
  116. package/esm/utils/hex.js +55 -0
  117. package/esm/utils/hex.js.map +1 -0
  118. package/esm/utils/index.d.ts +2 -0
  119. package/esm/utils/index.d.ts.map +1 -1
  120. package/esm/utils/index.js +2 -0
  121. package/esm/utils/index.js.map +1 -1
  122. package/esm/utils/no-op.d.ts +7 -0
  123. package/esm/utils/no-op.d.ts.map +1 -0
  124. package/esm/utils/no-op.js +12 -0
  125. package/esm/utils/no-op.js.map +1 -0
  126. package/package.json +11 -10
  127. package/src/adb.ts +41 -252
  128. package/src/banner.ts +82 -0
  129. package/src/commands/power.ts +2 -2
  130. package/src/commands/reverse.ts +68 -73
  131. package/src/commands/subprocess/protocols/none.ts +17 -18
  132. package/src/commands/subprocess/protocols/shell.ts +54 -56
  133. package/src/commands/subprocess/protocols/types.ts +1 -2
  134. package/src/commands/sync/list.ts +2 -2
  135. package/src/commands/sync/push.ts +22 -10
  136. package/src/commands/sync/request.ts +1 -1
  137. package/src/commands/sync/response.ts +6 -6
  138. package/src/commands/sync/socket.ts +37 -35
  139. package/src/commands/sync/sync.ts +25 -28
  140. package/src/commands/tcpip.ts +6 -4
  141. package/src/{auth.ts → daemon/auth.ts} +17 -17
  142. package/src/{crypto.ts → daemon/crypto.ts} +25 -33
  143. package/src/{backend.ts → daemon/device.ts} +1 -1
  144. package/src/{socket → daemon}/dispatcher.ts +71 -78
  145. package/src/daemon/index.ts +7 -0
  146. package/src/{packet.ts → daemon/packet.ts} +5 -5
  147. package/src/{socket → daemon}/socket.ts +50 -44
  148. package/src/daemon/transport.ts +269 -0
  149. package/src/index.ts +3 -5
  150. package/src/server/client.ts +476 -0
  151. package/src/server/index.ts +2 -0
  152. package/src/server/transport.ts +77 -0
  153. package/src/utils/auto-reset-event.ts +12 -12
  154. package/src/utils/conditional-variable.ts +10 -10
  155. package/src/utils/hex.ts +58 -0
  156. package/src/utils/index.ts +2 -0
  157. package/src/utils/no-op.ts +12 -0
  158. package/tsconfig.build.json +12 -1
  159. package/tsconfig.build.tsbuildinfo +1 -1
  160. package/esm/auth.d.ts.map +0 -1
  161. package/esm/auth.js.map +0 -1
  162. package/esm/backend.d.ts.map +0 -1
  163. package/esm/backend.js +0 -2
  164. package/esm/backend.js.map +0 -1
  165. package/esm/commands/install.d.ts +0 -10
  166. package/esm/commands/install.d.ts.map +0 -1
  167. package/esm/commands/install.js +0 -29
  168. package/esm/commands/install.js.map +0 -1
  169. package/esm/crypto.d.ts.map +0 -1
  170. package/esm/crypto.js.map +0 -1
  171. package/esm/packet.d.ts.map +0 -1
  172. package/esm/packet.js.map +0 -1
  173. package/esm/socket/dispatcher.d.ts.map +0 -1
  174. package/esm/socket/dispatcher.js.map +0 -1
  175. package/esm/socket/index.d.ts +0 -3
  176. package/esm/socket/index.d.ts.map +0 -1
  177. package/esm/socket/index.js +0 -3
  178. package/esm/socket/index.js.map +0 -1
  179. package/esm/socket/socket.d.ts.map +0 -1
  180. package/esm/socket/socket.js.map +0 -1
  181. package/src/socket/index.ts +0 -2
@@ -1,8 +1,4 @@
1
1
  import { getBigUint64, setBigUint64, } from "@yume-chan/dataview-bigint-polyfill/esm/fallback.js";
2
- const BigInt0 = BigInt(0);
3
- const BigInt1 = BigInt(1);
4
- const BigInt2 = BigInt(2);
5
- const BigInt64 = BigInt(64);
6
2
  /**
7
3
  * Gets the `BigInt` value at the specified byte offset and length from the start of the view. There is
8
4
  * no alignment constraint; multi-byte values may be fetched from any offset.
@@ -11,11 +7,11 @@ const BigInt64 = BigInt(64);
11
7
  * @param byteOffset The place in the buffer at which the value should be retrieved.
12
8
  */
13
9
  export function getBigUint(dataView, byteOffset, length) {
14
- let result = BigInt0;
10
+ let result = 0n;
15
11
  // Currently `length` must be a multiplication of 8
16
12
  // Support for arbitrary length can be easily added
17
13
  for (let i = byteOffset; i < byteOffset + length; i += 8) {
18
- result <<= BigInt64;
14
+ result <<= 64n;
19
15
  const value = getBigUint64(dataView, i, false);
20
16
  result += value;
21
17
  }
@@ -31,19 +27,19 @@ export function getBigUint(dataView, byteOffset, length) {
31
27
  export function setBigUint(dataView, byteOffset, value, littleEndian) {
32
28
  const start = byteOffset;
33
29
  if (littleEndian) {
34
- while (value > BigInt0) {
30
+ while (value > 0n) {
35
31
  setBigUint64(dataView, byteOffset, value, true);
36
32
  byteOffset += 8;
37
- value >>= BigInt64;
33
+ value >>= 64n;
38
34
  }
39
35
  }
40
36
  else {
41
37
  // Because we don't know how long (in bits) the `value` is,
42
38
  // Convert it to an array of `uint64` first.
43
39
  const uint64Array = [];
44
- while (value > BigInt0) {
40
+ while (value > 0n) {
45
41
  uint64Array.push(BigInt.asUintN(64, value));
46
- value >>= BigInt64;
42
+ value >>= 64n;
47
43
  }
48
44
  for (let i = uint64Array.length - 1; i >= 0; i -= 1) {
49
45
  setBigUint64(dataView, byteOffset, uint64Array[i], false);
@@ -74,7 +70,7 @@ const RsaPrivateKeyNOffset = 38;
74
70
  const RsaPrivateKeyNLength = 2048 / 8;
75
71
  const RsaPrivateKeyDOffset = 303;
76
72
  const RsaPrivateKeyDLength = 2048 / 8;
77
- export function parsePrivateKey(key) {
73
+ export function rsaParsePrivateKey(key) {
78
74
  const view = new DataView(key.buffer, key.byteOffset, key.byteLength);
79
75
  const n = getBigUint(view, RsaPrivateKeyNOffset, RsaPrivateKeyNLength);
80
76
  const d = getBigUint(view, RsaPrivateKeyDOffset, RsaPrivateKeyDLength);
@@ -106,10 +102,10 @@ export function modInverse(a, m) {
106
102
  }
107
103
  return ((y % m) + m) % m;
108
104
  }
109
- export function calculatePublicKeyLength() {
105
+ export function adbGetPublicKeySize() {
110
106
  return 4 + 4 + 2048 / 8 + 2048 / 8 + 4;
111
107
  }
112
- export function calculatePublicKey(privateKey, output) {
108
+ export function adbGeneratePublicKey(privateKey, output) {
113
109
  // Android has its own public key generation algorithm
114
110
  // See https://android.googlesource.com/platform/system/core.git/+/91784040db2b9273687f88d8b95f729d4a61ecc2/libcrypto_utils/android_pubkey.cpp#111
115
111
  // The public key is an array of
@@ -126,9 +122,9 @@ export function calculatePublicKey(privateKey, output) {
126
122
  // (All in little endian)
127
123
  // See https://android.googlesource.com/platform/system/core.git/+/91784040db2b9273687f88d8b95f729d4a61ecc2/libcrypto_utils/android_pubkey.cpp#38
128
124
  // extract `n` from private key
129
- const [n] = parsePrivateKey(privateKey);
125
+ const [n] = rsaParsePrivateKey(privateKey);
130
126
  let outputType;
131
- const outputLength = calculatePublicKeyLength();
127
+ const outputLength = adbGetPublicKeySize();
132
128
  if (!output) {
133
129
  output = new Uint8Array(outputLength);
134
130
  outputType = "Uint8Array";
@@ -145,16 +141,16 @@ export function calculatePublicKey(privateKey, output) {
145
141
  outputView.setUint32(outputOffset, 2048 / 8 / 4, true);
146
142
  outputOffset += 4;
147
143
  // Calculate `n0inv`
148
- // Don't know why need to multiple -1
144
+ // Don't know why need to multiply by -1
149
145
  // Didn't exist in Android codebase
150
- const n0inv = modInverse(Number(BigInt.asUintN(32, n) * BigInt(-1)), 2 ** 32);
146
+ const n0inv = modInverse(-Number(BigInt.asUintN(32, n)), 2 ** 32);
151
147
  outputView.setUint32(outputOffset, n0inv, true);
152
148
  outputOffset += 4;
153
149
  // Write n
154
150
  setBigUint(outputView, outputOffset, n, true);
155
151
  outputOffset += 256;
156
152
  // Calculate rr = (2^(rsa_size)) ^ 2 mod n
157
- const rr = BigInt(2) ** BigInt(4096) % n;
153
+ const rr = 2n ** 4096n % n;
158
154
  outputOffset += setBigUint(outputView, outputOffset, rr, true);
159
155
  // exponent
160
156
  outputView.setUint32(outputOffset, 65537, true);
@@ -174,17 +170,17 @@ export function calculatePublicKey(privateKey, output) {
174
170
  * See https://en.wikipedia.org/wiki/Modular_exponentiation#Implementation_in_Lua
175
171
  */
176
172
  export function powMod(base, exponent, modulus) {
177
- if (modulus === BigInt1) {
178
- return BigInt0;
173
+ if (modulus === 1n) {
174
+ return 0n;
179
175
  }
180
- let r = BigInt1;
176
+ let r = 1n;
181
177
  base = base % modulus;
182
- while (exponent > BigInt0) {
183
- if (BigInt.asUintN(1, exponent) === BigInt1) {
178
+ while (exponent > 0n) {
179
+ if (BigInt.asUintN(1, exponent) === 1n) {
184
180
  r = (r * base) % modulus;
185
181
  }
186
- exponent >>= BigInt1;
187
- base = base ** BigInt2 % modulus;
182
+ base = (base * base) % modulus;
183
+ exponent >>= 1n;
188
184
  }
189
185
  return r;
190
186
  }
@@ -218,8 +214,8 @@ export const SHA1_DIGEST_INFO = new Uint8Array([
218
214
  // encrypt the given data with its private key)
219
215
  // However SubtileCrypto.encrypt() doesn't accept 'RSASSA-PKCS1-v1_5' algorithm
220
216
  // So we need to implement the encryption by ourself
221
- export function sign(privateKey, data) {
222
- const [n, d] = parsePrivateKey(privateKey);
217
+ export function rsaSign(privateKey, data) {
218
+ const [n, d] = rsaParsePrivateKey(privateKey);
223
219
  // PKCS#1 padding
224
220
  const padded = new Uint8Array(256);
225
221
  let index = 0;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/daemon/crypto.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import type { Consumable, ReadableWritablePair } from "@yume-chan/stream-extra";
2
2
  import type { ValueOrPromise } from "@yume-chan/struct";
3
3
  import type { AdbPacketData, AdbPacketInit } from "./packet.js";
4
- export interface AdbBackend {
4
+ export interface AdbDaemonDevice {
5
5
  readonly serial: string;
6
6
  readonly name: string | undefined;
7
7
  connect(): ValueOrPromise<ReadableWritablePair<AdbPacketData, Consumable<AdbPacketInit>>>;
8
8
  }
9
- //# sourceMappingURL=backend.d.ts.map
9
+ //# sourceMappingURL=device.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../src/daemon/device.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEhE,MAAM,WAAW,eAAe;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAElC,OAAO,IAAI,cAAc,CACrB,oBAAoB,CAAC,aAAa,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC,CACjE,CAAC;CACL"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=device.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device.js","sourceRoot":"","sources":["../../src/daemon/device.ts"],"names":[],"mappings":""}
@@ -1,9 +1,7 @@
1
- import type { RemoveEventListener } from "@yume-chan/event";
2
1
  import type { Consumable, ReadableWritablePair } from "@yume-chan/stream-extra";
3
- import type { ValueOrPromise } from "@yume-chan/struct";
4
- import type { AdbPacketData, AdbPacketInit } from "../packet.js";
5
- import { AdbCommand } from "../packet.js";
6
- import type { AdbSocket } from "./socket.js";
2
+ import type { AdbIncomingSocketHandler, AdbSocket, Closeable } from "../adb.js";
3
+ import type { AdbPacketData, AdbPacketInit } from "./packet.js";
4
+ import { AdbCommand } from "./packet.js";
7
5
  export interface AdbPacketDispatcherOptions {
8
6
  calculateChecksum: boolean;
9
7
  /**
@@ -15,10 +13,6 @@ export interface AdbPacketDispatcherOptions {
15
13
  appendNullToServiceString: boolean;
16
14
  maxPayloadSize: number;
17
15
  }
18
- export type AdbIncomingSocketHandler = (socket: AdbSocket) => ValueOrPromise<boolean>;
19
- export interface Closeable {
20
- close(): ValueOrPromise<void>;
21
- }
22
16
  /**
23
17
  * The dispatcher is the "dumb" part of the connection handling logic.
24
18
  *
@@ -30,29 +24,17 @@ export interface Closeable {
30
24
  * negotiating the options, and has shortcuts to high-level services.
31
25
  */
32
26
  export declare class AdbPacketDispatcher implements Closeable {
33
- private readonly initializers;
34
- /**
35
- * Socket local ID to the socket controller.
36
- */
37
- private readonly sockets;
38
- private _writer;
27
+ #private;
39
28
  readonly options: AdbPacketDispatcherOptions;
40
- private _closed;
41
- private _disconnected;
42
29
  get disconnected(): Promise<void>;
43
- private _incomingSocketHandlers;
44
- private _abortController;
45
30
  constructor(connection: ReadableWritablePair<AdbPacketData, Consumable<AdbPacketInit>>, options: AdbPacketDispatcherOptions);
46
31
  private handleOk;
47
32
  private handleClose;
48
- /**
49
- * Add a handler for incoming socket.
50
- * @param handler A function to call with new incoming sockets. It must return `true` if it accepts the socket.
51
- * @returns A function to remove the handler.
52
- */
53
- onIncomingSocket(handler: AdbIncomingSocketHandler): RemoveEventListener;
33
+ addReverseTunnel(service: string, handler: AdbIncomingSocketHandler): void;
34
+ removeReverseTunnel(address: string): void;
35
+ clearReverseTunnels(): void;
54
36
  private handleOpen;
55
- createSocket(serviceString: string): Promise<AdbSocket>;
37
+ createSocket(service: string): Promise<AdbSocket>;
56
38
  sendPacket(command: AdbCommand, arg0: number, arg1: number, payload?: string | Uint8Array): Promise<void>;
57
39
  close(): Promise<void>;
58
40
  private dispose;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../src/daemon/dispatcher.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACR,UAAU,EACV,oBAAoB,EAEvB,MAAM,yBAAyB,CAAC;AAQjC,OAAO,KAAK,EAAE,wBAAwB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGhF,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,UAAU,EAAqB,MAAM,aAAa,CAAC;AAG5D,MAAM,WAAW,0BAA0B;IACvC,iBAAiB,EAAE,OAAO,CAAC;IAC3B;;;;;OAKG;IACH,yBAAyB,EAAE,OAAO,CAAC;IACnC,cAAc,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;GASG;AACH,qBAAa,mBAAoB,YAAW,SAAS;;IAWjD,SAAgB,OAAO,EAAE,0BAA0B,CAAC;IAIpD,IAAW,YAAY,kBAEtB;gBAMG,UAAU,EAAE,oBAAoB,CAC5B,aAAa,EACb,UAAU,CAAC,aAAa,CAAC,CAC5B,EACD,OAAO,EAAE,0BAA0B;IAuEvC,OAAO,CAAC,QAAQ;YAkBF,WAAW;IA6ClB,gBAAgB,CACnB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,wBAAwB;IAK9B,mBAAmB,CAAC,OAAO,EAAE,MAAM;IAInC,mBAAmB;YAIZ,UAAU;IAmCX,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAsBjD,UAAU,CACnB,OAAO,EAAE,UAAU,EACnB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAAM,GAAG,UAA8B,GACjD,OAAO,CAAC,IAAI,CAAC;IAqBH,KAAK;IAgBlB,OAAO,CAAC,OAAO;CAOlB"}
@@ -1,9 +1,9 @@
1
1
  import { AsyncOperationManager, PromiseResolver } from "@yume-chan/async";
2
2
  import { AbortController, ConsumableWritableStream, WritableStream, } from "@yume-chan/stream-extra";
3
3
  import { EMPTY_UINT8_ARRAY } from "@yume-chan/struct";
4
- import { AdbCommand, calculateChecksum } from "../packet.js";
5
- import { decodeUtf8, encodeUtf8 } from "../utils/index.js";
6
- import { AdbSocketController } from "./socket.js";
4
+ import { decodeUtf8, encodeUtf8, unreachable } from "../utils/index.js";
5
+ import { AdbCommand, calculateChecksum } from "./packet.js";
6
+ import { AdbDaemonSocketController } from "./socket.js";
7
7
  /**
8
8
  * The dispatcher is the "dumb" part of the connection handling logic.
9
9
  *
@@ -17,20 +17,20 @@ import { AdbSocketController } from "./socket.js";
17
17
  export class AdbPacketDispatcher {
18
18
  // ADB socket id starts from 1
19
19
  // (0 means open failed)
20
- initializers = new AsyncOperationManager(1);
20
+ #initializers = new AsyncOperationManager(1);
21
21
  /**
22
22
  * Socket local ID to the socket controller.
23
23
  */
24
- sockets = new Map();
25
- _writer;
24
+ #sockets = new Map();
25
+ #writer;
26
26
  options;
27
- _closed = false;
28
- _disconnected = new PromiseResolver();
27
+ #closed = false;
28
+ #disconnected = new PromiseResolver();
29
29
  get disconnected() {
30
- return this._disconnected.promise;
30
+ return this.#disconnected.promise;
31
31
  }
32
- _incomingSocketHandlers = new Set();
33
- _abortController = new AbortController();
32
+ #incomingSocketHandlers = new Map();
33
+ #readAbortController = new AbortController();
34
34
  constructor(connection, options) {
35
35
  this.options = options;
36
36
  connection.readable
@@ -44,8 +44,8 @@ export class AdbPacketDispatcher {
44
44
  await this.handleClose(packet);
45
45
  break;
46
46
  case AdbCommand.Write:
47
- if (this.sockets.has(packet.arg1)) {
48
- await this.sockets
47
+ if (this.#sockets.has(packet.arg1)) {
48
+ await this.#sockets
49
49
  .get(packet.arg1)
50
50
  .enqueue(packet.payload);
51
51
  await this.sendPacket(AdbCommand.OK, packet.arg1, packet.arg0);
@@ -70,24 +70,24 @@ export class AdbPacketDispatcher {
70
70
  // it's still possible to create another ADB connection.
71
71
  // So don't close `readable` here.
72
72
  preventCancel: true,
73
- signal: this._abortController.signal,
73
+ signal: this.#readAbortController.signal,
74
74
  })
75
75
  .then(() => {
76
76
  this.dispose();
77
77
  }, (e) => {
78
- if (!this._closed) {
79
- this._disconnected.reject(e);
78
+ if (!this.#closed) {
79
+ this.#disconnected.reject(e);
80
80
  }
81
81
  this.dispose();
82
82
  });
83
- this._writer = connection.writable.getWriter();
83
+ this.#writer = connection.writable.getWriter();
84
84
  }
85
85
  handleOk(packet) {
86
- if (this.initializers.resolve(packet.arg1, packet.arg0)) {
86
+ if (this.#initializers.resolve(packet.arg1, packet.arg0)) {
87
87
  // Device successfully created the socket
88
88
  return;
89
89
  }
90
- const socket = this.sockets.get(packet.arg1);
90
+ const socket = this.#sockets.get(packet.arg1);
91
91
  if (socket) {
92
92
  // Device has received last `WRTE` to the socket
93
93
  socket.ack();
@@ -100,7 +100,7 @@ export class AdbPacketDispatcher {
100
100
  async handleClose(packet) {
101
101
  // If the socket is still pending
102
102
  if (packet.arg0 === 0 &&
103
- this.initializers.reject(packet.arg1, new Error("Socket open failed"))) {
103
+ this.#initializers.reject(packet.arg1, new Error("Socket open failed"))) {
104
104
  // Device failed to create the socket
105
105
  // (unknown service string, failed to execute command, etc.)
106
106
  // it doesn't break the connection,
@@ -115,72 +115,76 @@ export class AdbPacketDispatcher {
115
115
  * CLOSE() operations.
116
116
  */
117
117
  // Ignore `arg0` and search for the socket
118
- const socket = this.sockets.get(packet.arg1);
118
+ const socket = this.#sockets.get(packet.arg1);
119
119
  if (socket) {
120
120
  // The device want to close the socket
121
121
  if (!socket.closed) {
122
122
  await this.sendPacket(AdbCommand.Close, packet.arg1, packet.arg0);
123
123
  }
124
124
  await socket.dispose();
125
- this.sockets.delete(packet.arg1);
125
+ this.#sockets.delete(packet.arg1);
126
126
  return;
127
127
  }
128
128
  // TODO: adb: is double closing an socket a catastrophic error?
129
129
  // If the client sends two `CLSE` packets for one socket,
130
130
  // the device may also respond with two `CLSE` packets.
131
131
  }
132
- /**
133
- * Add a handler for incoming socket.
134
- * @param handler A function to call with new incoming sockets. It must return `true` if it accepts the socket.
135
- * @returns A function to remove the handler.
136
- */
137
- onIncomingSocket(handler) {
138
- this._incomingSocketHandlers.add(handler);
139
- const remove = () => {
140
- this._incomingSocketHandlers.delete(handler);
141
- };
142
- remove.dispose = remove;
143
- return remove;
132
+ addReverseTunnel(service, handler) {
133
+ this.#incomingSocketHandlers.set(service, handler);
134
+ }
135
+ removeReverseTunnel(address) {
136
+ this.#incomingSocketHandlers.delete(address);
137
+ }
138
+ clearReverseTunnels() {
139
+ this.#incomingSocketHandlers.clear();
144
140
  }
145
141
  async handleOpen(packet) {
146
142
  // `AsyncOperationManager` doesn't support skipping IDs
147
143
  // Use `add` + `resolve` to simulate this behavior
148
- const [localId] = this.initializers.add();
149
- this.initializers.resolve(localId, undefined);
144
+ const [localId] = this.#initializers.add();
145
+ this.#initializers.resolve(localId, undefined);
150
146
  const remoteId = packet.arg0;
151
- const serviceString = decodeUtf8(packet.payload);
152
- const controller = new AdbSocketController({
147
+ let service = decodeUtf8(packet.payload);
148
+ if (service.endsWith("\0")) {
149
+ service = service.substring(0, service.length - 1);
150
+ }
151
+ const handler = this.#incomingSocketHandlers.get(service);
152
+ if (!handler) {
153
+ await this.sendPacket(AdbCommand.Close, 0, remoteId);
154
+ return;
155
+ }
156
+ const controller = new AdbDaemonSocketController({
153
157
  dispatcher: this,
154
158
  localId,
155
159
  remoteId,
156
160
  localCreated: false,
157
- serviceString,
161
+ service,
158
162
  });
159
- for (const handler of this._incomingSocketHandlers) {
160
- if (await handler(controller.socket)) {
161
- this.sockets.set(localId, controller);
162
- await this.sendPacket(AdbCommand.OK, localId, remoteId);
163
- return;
164
- }
163
+ try {
164
+ await handler(controller.socket);
165
+ this.#sockets.set(localId, controller);
166
+ await this.sendPacket(AdbCommand.OK, localId, remoteId);
167
+ }
168
+ catch (e) {
169
+ await this.sendPacket(AdbCommand.Close, 0, remoteId);
165
170
  }
166
- await this.sendPacket(AdbCommand.Close, 0, remoteId);
167
171
  }
168
- async createSocket(serviceString) {
172
+ async createSocket(service) {
169
173
  if (this.options.appendNullToServiceString) {
170
- serviceString += "\0";
174
+ service += "\0";
171
175
  }
172
- const [localId, initializer] = this.initializers.add();
173
- await this.sendPacket(AdbCommand.Open, localId, 0, serviceString);
176
+ const [localId, initializer] = this.#initializers.add();
177
+ await this.sendPacket(AdbCommand.Open, localId, 0, service);
174
178
  // Fulfilled by `handleOk`
175
179
  const remoteId = await initializer;
176
- const controller = new AdbSocketController({
180
+ const controller = new AdbDaemonSocketController({
177
181
  dispatcher: this,
178
182
  localId,
179
183
  remoteId,
180
184
  localCreated: true,
181
- serviceString,
185
+ service,
182
186
  });
183
- this.sockets.set(localId, controller);
187
+ this.#sockets.set(localId, controller);
184
188
  return controller.socket;
185
189
  }
186
190
  async sendPacket(command, arg0, arg1, payload = EMPTY_UINT8_ARRAY) {
@@ -190,7 +194,7 @@ export class AdbPacketDispatcher {
190
194
  if (payload.byteLength > this.options.maxPayloadSize) {
191
195
  throw new Error("payload too large");
192
196
  }
193
- await ConsumableWritableStream.write(this._writer, {
197
+ await ConsumableWritableStream.write(this.#writer, {
194
198
  command,
195
199
  arg0,
196
200
  arg1,
@@ -203,22 +207,20 @@ export class AdbPacketDispatcher {
203
207
  }
204
208
  async close() {
205
209
  // Send `CLSE` packets for all sockets
206
- await Promise.all(Array.from(this.sockets.values(), (socket) => socket.close()));
210
+ await Promise.all(Array.from(this.#sockets.values(), (socket) => socket.close()));
207
211
  // Stop receiving
208
212
  // It's possible that we haven't received all `CLSE` confirm packets,
209
213
  // but it doesn't matter, the next connection can cope with them.
210
- this._closed = true;
211
- this._abortController.abort();
212
- this._writer.releaseLock();
214
+ this.#closed = true;
215
+ this.#readAbortController.abort();
216
+ this.#writer.releaseLock();
213
217
  // `pipe().then()` will call `dispose`
214
218
  }
215
219
  dispose() {
216
- for (const socket of this.sockets.values()) {
217
- socket.dispose().catch((e) => {
218
- void e;
219
- });
220
+ for (const socket of this.#sockets.values()) {
221
+ socket.dispose().catch(unreachable);
220
222
  }
221
- this._disconnected.resolve();
223
+ this.#disconnected.resolve();
222
224
  }
223
225
  }
224
226
  //# sourceMappingURL=dispatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../src/daemon/dispatcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export * from "./auth.js";
2
+ export * from "./crypto.js";
3
+ export * from "./device.js";
4
+ export * from "./dispatcher.js";
5
+ export * from "./packet.js";
6
+ export * from "./socket.js";
7
+ export * from "./transport.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/daemon/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,8 @@
1
+ export * from "./auth.js";
2
+ export * from "./crypto.js";
3
+ export * from "./device.js";
4
+ export * from "./dispatcher.js";
5
+ export * from "./packet.js";
6
+ export * from "./socket.js";
7
+ export * from "./transport.js";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/daemon/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC"}
@@ -30,11 +30,11 @@ export type AdbPacket = (typeof AdbPacket)["TDeserializeResult"];
30
30
  /**
31
31
  * `AdbPacketData` contains all the useful fields of `AdbPacket`.
32
32
  *
33
- * `AdbBackend#connect` will return a `ReadableStream<AdbPacketData>`,
34
- * so each backend can encode `AdbPacket` in different ways.
33
+ * `AdvDaemonConnection#connect` will return a `ReadableStream<AdbPacketData>`,
34
+ * allow each connection to encode `AdbPacket` in different methods.
35
35
  *
36
- * `AdbBackend#connect` will return a `WritableStream<AdbPacketInit>`,
37
- * however, `AdbPacketDispatcher` will transform `AdbPacketData` to `AdbPacketInit` for you,
36
+ * `AdbDaemonConnection#connect` will return a `WritableStream<AdbPacketInit>`,
37
+ * however, `AdbDaemonTransport` will transform `AdbPacketData` to `AdbPacketInit` for you,
38
38
  * so `AdbSocket#writable#write` only needs `AdbPacketData`.
39
39
  */
40
40
  export type AdbPacketData = Omit<(typeof AdbPacket)["TInit"], "checksum" | "magic">;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packet.d.ts","sourceRoot":"","sources":["../../src/daemon/packet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,oBAAY,UAAU;IAClB,IAAI,aAAa;IACjB,KAAK,aAAa;IAClB,OAAO,aAAa;IACpB,EAAE,aAAa;IACf,IAAI,aAAa;IACjB,KAAK,aAAa;CACrB;AAED,eAAO,MAAM,eAAe;;;;;;;0CAMT,CAAC;AAEpB,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,oBAAoB,CAAC,CAAC;AAI7E,eAAO,MAAM,SAAS;;;;;;;;oDAEsC,CAAC;AAE7D,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,oBAAoB,CAAC,CAAC;AAEjE;;;;;;;;;GASG;AACH,MAAM,MAAM,aAAa,GAAG,IAAI,CAC5B,CAAC,OAAO,SAAS,CAAC,CAAC,OAAO,CAAC,EAC3B,UAAU,GAAG,OAAO,CACvB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC;AAExD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAE7D;AAED,qBAAa,wBAAyB,SAAQ,yBAAyB,CACnE,aAAa,EACb,UAAU,CACb;;CAoBA"}
@@ -17,7 +17,7 @@ export const AdbPacketHeader = new Struct({ littleEndian: true })
17
17
  .uint32("checksum")
18
18
  .int32("magic");
19
19
  export const AdbPacket = new Struct({ littleEndian: true })
20
- .fields(AdbPacketHeader)
20
+ .concat(AdbPacketHeader)
21
21
  .uint8Array("payload", { lengthField: "payloadLength" });
22
22
  export function calculateChecksum(payload) {
23
23
  return payload.reduce((result, item) => result + item, 0);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packet.js","sourceRoot":"","sources":["../../src/daemon/packet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,MAAM,CAAN,IAAY,UAOX;AAPD,WAAY,UAAU;IAClB,oDAAiB,CAAA;IACjB,sDAAkB,CAAA;IAClB,0DAAoB,CAAA;IACpB,gDAAe,CAAA;IACf,oDAAiB,CAAA;IACjB,sDAAkB,CAAA;AACtB,CAAC,EAPW,UAAU,GAAV,UAAU,KAAV,UAAU,QAOrB;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;KAC5D,MAAM,CAAC,SAAS,CAAC;KACjB,MAAM,CAAC,MAAM,CAAC;KACd,MAAM,CAAC,MAAM,CAAC;KACd,MAAM,CAAC,eAAe,CAAC;KACvB,MAAM,CAAC,UAAU,CAAC;KAClB,KAAK,CAAC,OAAO,CAAC,CAAC;AAMpB,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;KACtD,MAAM,CAAC,eAAe,CAAC;KACvB,UAAU,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC,CAAC;AAqB7D,MAAM,UAAU,iBAAiB,CAAC,OAAmB;IACjD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,OAAO,wBAAyB,SAAQ,yBAG7C;IACG;QACI,MAAM,YAAY,GAAG,IAAI,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC1D,KAAK,CAAC;YACF,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;gBACnC,MAAM,IAAI,GAAG,KAA4C,CAAC;gBAC1D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;gBAE7C,eAAe,CAAC,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;gBAC9C,MAAM,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;gBAEvC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;oBACzB,4CAA4C;oBAC5C,0DAA0D;oBAC1D,oDAAoD;oBACpD,MAAM,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBAC1C;YACL,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;CACJ"}
@@ -1,29 +1,26 @@
1
1
  import type { Disposable } from "@yume-chan/event";
2
2
  import type { Consumable, ReadableStream, ReadableWritablePair, WritableStream } from "@yume-chan/stream-extra";
3
- import type { AdbPacketDispatcher, Closeable } from "./dispatcher.js";
4
- export interface AdbSocketInfo {
3
+ import type { Closeable } from "../adb.js";
4
+ import type { AdbPacketDispatcher } from "./dispatcher.js";
5
+ export interface AdbDaemonSocketInfo {
5
6
  localId: number;
6
7
  remoteId: number;
7
8
  localCreated: boolean;
8
- serviceString: string;
9
+ service: string;
9
10
  }
10
- export interface AdbSocketConstructionOptions extends AdbSocketInfo {
11
+ export interface AdbDaemonSocketConstructionOptions extends AdbDaemonSocketInfo {
11
12
  dispatcher: AdbPacketDispatcher;
12
13
  highWaterMark?: number | undefined;
13
14
  }
14
- export declare class AdbSocketController implements AdbSocketInfo, ReadableWritablePair<Uint8Array, Consumable<Uint8Array>>, Closeable, Disposable {
15
+ export declare class AdbDaemonSocketController implements AdbDaemonSocketInfo, ReadableWritablePair<Uint8Array, Consumable<Uint8Array>>, Closeable, Disposable {
16
+ #private;
15
17
  private readonly dispatcher;
16
18
  readonly localId: number;
17
19
  readonly remoteId: number;
18
20
  readonly localCreated: boolean;
19
- readonly serviceString: string;
20
- private _duplex;
21
- private _readable;
22
- private _readableController;
21
+ readonly service: string;
23
22
  get readable(): ReadableStream<Uint8Array>;
24
- private _writePromise;
25
23
  readonly writable: WritableStream<Consumable<Uint8Array>>;
26
- private _closed;
27
24
  /**
28
25
  * Whether the socket is half-closed (i.e. the local side initiated the close).
29
26
  *
@@ -31,8 +28,8 @@ export declare class AdbSocketController implements AdbSocketInfo, ReadableWrita
31
28
  */
32
29
  get closed(): boolean;
33
30
  private _socket;
34
- get socket(): AdbSocket;
35
- constructor(options: AdbSocketConstructionOptions);
31
+ get socket(): AdbDaemonSocket;
32
+ constructor(options: AdbDaemonSocketConstructionOptions);
36
33
  enqueue(data: Uint8Array): Promise<void>;
37
34
  ack(): void;
38
35
  close(): Promise<void>;
@@ -46,15 +43,16 @@ export declare class AdbSocketController implements AdbSocketInfo, ReadableWrita
46
43
  * `socket.writable.abort()`, `socket.writable.getWriter().abort()`,
47
44
  * `socket.writable.close()` or `socket.writable.getWriter().close()`.
48
45
  */
49
- export declare class AdbSocket implements AdbSocketInfo, ReadableWritablePair<Uint8Array, Consumable<Uint8Array>> {
50
- private _controller;
46
+ export declare class AdbDaemonSocket implements AdbDaemonSocketInfo, ReadableWritablePair<Uint8Array, Consumable<Uint8Array>> {
47
+ #private;
51
48
  get localId(): number;
52
49
  get remoteId(): number;
53
50
  get localCreated(): boolean;
54
- get serviceString(): string;
51
+ get service(): string;
55
52
  get readable(): ReadableStream<Uint8Array>;
56
53
  get writable(): WritableStream<Consumable<Uint8Array>>;
57
- constructor(controller: AdbSocketController);
54
+ get closed(): boolean;
55
+ constructor(controller: AdbDaemonSocketController);
58
56
  close(): Promise<void>;
59
57
  }
60
58
  //# sourceMappingURL=socket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../src/daemon/socket.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EACR,UAAU,EAEV,cAAc,EACd,oBAAoB,EACpB,cAAc,EACjB,MAAM,yBAAyB,CAAC;AASjC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAG3D,MAAM,WAAW,mBAAmB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IAEjB,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kCACb,SAAQ,mBAAmB;IAC3B,UAAU,EAAE,mBAAmB,CAAC;IAEhC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,qBAAa,yBACT,YACI,mBAAmB,EACnB,oBAAoB,CAAC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,EACxD,SAAS,EACT,UAAU;;IAEd,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuB;IAElD,SAAgB,OAAO,EAAG,MAAM,CAAC;IACjC,SAAgB,QAAQ,EAAG,MAAM,CAAC;IAClC,SAAgB,YAAY,EAAG,OAAO,CAAC;IACvC,SAAgB,OAAO,EAAG,MAAM,CAAC;IAMjC,IAAW,QAAQ,+BAElB;IAGD,SAAgB,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IAGjE;;;;OAIG;IACH,IAAW,MAAM,YAEhB;IAED,OAAO,CAAC,OAAO,CAAkB;IACjC,IAAW,MAAM,oBAEhB;gBAEkB,OAAO,EAAE,kCAAkC;IAiEjD,OAAO,CAAC,IAAI,EAAE,UAAU;IAU9B,GAAG;IAIG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,OAAO;CAGjB;AAED;;;;;;;GAOG;AACH,qBAAa,eACT,YACI,mBAAmB,EACnB,oBAAoB,CAAC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;;IAI5D,IAAW,OAAO,IAAI,MAAM,CAE3B;IACD,IAAW,QAAQ,IAAI,MAAM,CAE5B;IACD,IAAW,YAAY,IAAI,OAAO,CAEjC;IACD,IAAW,OAAO,IAAI,MAAM,CAE3B;IAED,IAAW,QAAQ,IAAI,cAAc,CAAC,UAAU,CAAC,CAEhD;IACD,IAAW,QAAQ,IAAI,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAE5D;IAED,IAAW,MAAM,IAAI,OAAO,CAE3B;gBAEkB,UAAU,EAAE,yBAAyB;IAIjD,KAAK;CAGf"}