@buildonspark/spark-sdk 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (314) hide show
  1. package/dist/graphql/client.d.ts +24 -0
  2. package/dist/graphql/client.js +177 -0
  3. package/dist/graphql/client.js.map +1 -0
  4. package/dist/graphql/mutations/CompleteCoopExit.d.ts +1 -0
  5. package/dist/graphql/mutations/CompleteCoopExit.js +19 -0
  6. package/dist/graphql/mutations/CompleteCoopExit.js.map +1 -0
  7. package/dist/graphql/mutations/CompleteLeavesSwap.d.ts +1 -0
  8. package/dist/graphql/mutations/CompleteLeavesSwap.js +17 -0
  9. package/dist/graphql/mutations/CompleteLeavesSwap.js.map +1 -0
  10. package/dist/graphql/mutations/RequestCoopExit.d.ts +1 -0
  11. package/dist/graphql/mutations/RequestCoopExit.js +20 -0
  12. package/dist/graphql/mutations/RequestCoopExit.js.map +1 -0
  13. package/dist/graphql/mutations/RequestLightningReceive.d.ts +1 -0
  14. package/dist/graphql/mutations/RequestLightningReceive.js +26 -0
  15. package/dist/graphql/mutations/RequestLightningReceive.js.map +1 -0
  16. package/dist/graphql/mutations/RequestLightningSend.d.ts +1 -0
  17. package/dist/graphql/mutations/RequestLightningSend.js +18 -0
  18. package/dist/graphql/mutations/RequestLightningSend.js.map +1 -0
  19. package/dist/graphql/mutations/RequestSwapLeaves.d.ts +1 -0
  20. package/dist/graphql/mutations/RequestSwapLeaves.js +26 -0
  21. package/dist/graphql/mutations/RequestSwapLeaves.js.map +1 -0
  22. package/dist/graphql/objects/BitcoinNetwork.d.ts +17 -0
  23. package/dist/graphql/objects/BitcoinNetwork.js +20 -0
  24. package/dist/graphql/objects/BitcoinNetwork.js.map +1 -0
  25. package/dist/graphql/objects/CompleteCoopExitInput.d.ts +7 -0
  26. package/dist/graphql/objects/CompleteCoopExitInput.js +14 -0
  27. package/dist/graphql/objects/CompleteCoopExitInput.js.map +1 -0
  28. package/dist/graphql/objects/CompleteCoopExitOutput.d.ts +7 -0
  29. package/dist/graphql/objects/CompleteCoopExitOutput.js +19 -0
  30. package/dist/graphql/objects/CompleteCoopExitOutput.js.map +1 -0
  31. package/dist/graphql/objects/CompleteLeavesSwapInput.d.ts +8 -0
  32. package/dist/graphql/objects/CompleteLeavesSwapInput.js +16 -0
  33. package/dist/graphql/objects/CompleteLeavesSwapInput.js.map +1 -0
  34. package/dist/graphql/objects/CompleteLeavesSwapOutput.d.ts +7 -0
  35. package/dist/graphql/objects/CompleteLeavesSwapOutput.js +19 -0
  36. package/dist/graphql/objects/CompleteLeavesSwapOutput.js.map +1 -0
  37. package/dist/graphql/objects/Connection.d.ts +16 -0
  38. package/dist/graphql/objects/Connection.js +56 -0
  39. package/dist/graphql/objects/Connection.js.map +1 -0
  40. package/dist/graphql/objects/CoopExitFeeEstimateInput.d.ts +7 -0
  41. package/dist/graphql/objects/CoopExitFeeEstimateInput.js +14 -0
  42. package/dist/graphql/objects/CoopExitFeeEstimateInput.js.map +1 -0
  43. package/dist/graphql/objects/CoopExitFeeEstimateOutput.d.ts +8 -0
  44. package/dist/graphql/objects/CoopExitFeeEstimateOutput.js +26 -0
  45. package/dist/graphql/objects/CoopExitFeeEstimateOutput.js.map +1 -0
  46. package/dist/graphql/objects/CoopExitRequest.d.ts +32 -0
  47. package/dist/graphql/objects/CoopExitRequest.js +64 -0
  48. package/dist/graphql/objects/CoopExitRequest.js.map +1 -0
  49. package/dist/graphql/objects/CurrencyAmount.d.ts +24 -0
  50. package/dist/graphql/objects/CurrencyAmount.js +30 -0
  51. package/dist/graphql/objects/CurrencyAmount.js.map +1 -0
  52. package/dist/graphql/objects/CurrencyUnit.d.ts +27 -0
  53. package/dist/graphql/objects/CurrencyUnit.js +30 -0
  54. package/dist/graphql/objects/CurrencyUnit.js.map +1 -0
  55. package/dist/graphql/objects/Entity.d.ts +16 -0
  56. package/dist/graphql/objects/Entity.js +141 -0
  57. package/dist/graphql/objects/Entity.js.map +1 -0
  58. package/dist/graphql/objects/Invoice.d.ts +15 -0
  59. package/dist/graphql/objects/Invoice.js +45 -0
  60. package/dist/graphql/objects/Invoice.js.map +1 -0
  61. package/dist/graphql/objects/Leaf.d.ts +11 -0
  62. package/dist/graphql/objects/Leaf.js +29 -0
  63. package/dist/graphql/objects/Leaf.js.map +1 -0
  64. package/dist/graphql/objects/LeavesSwapFeeEstimateInput.d.ts +6 -0
  65. package/dist/graphql/objects/LeavesSwapFeeEstimateInput.js +12 -0
  66. package/dist/graphql/objects/LeavesSwapFeeEstimateInput.js.map +1 -0
  67. package/dist/graphql/objects/LeavesSwapFeeEstimateOutput.d.ts +8 -0
  68. package/dist/graphql/objects/LeavesSwapFeeEstimateOutput.js +26 -0
  69. package/dist/graphql/objects/LeavesSwapFeeEstimateOutput.js.map +1 -0
  70. package/dist/graphql/objects/LeavesSwapRequest.d.ts +32 -0
  71. package/dist/graphql/objects/LeavesSwapRequest.js +87 -0
  72. package/dist/graphql/objects/LeavesSwapRequest.js.map +1 -0
  73. package/dist/graphql/objects/LightningReceiveFeeEstimateInput.d.ts +8 -0
  74. package/dist/graphql/objects/LightningReceiveFeeEstimateInput.js +15 -0
  75. package/dist/graphql/objects/LightningReceiveFeeEstimateInput.js.map +1 -0
  76. package/dist/graphql/objects/LightningReceiveFeeEstimateOutput.d.ts +8 -0
  77. package/dist/graphql/objects/LightningReceiveFeeEstimateOutput.js +26 -0
  78. package/dist/graphql/objects/LightningReceiveFeeEstimateOutput.js.map +1 -0
  79. package/dist/graphql/objects/LightningReceiveRequest.d.ts +31 -0
  80. package/dist/graphql/objects/LightningReceiveRequest.js +93 -0
  81. package/dist/graphql/objects/LightningReceiveRequest.js.map +1 -0
  82. package/dist/graphql/objects/LightningReceiveRequestStatus.d.ts +16 -0
  83. package/dist/graphql/objects/LightningReceiveRequestStatus.js +19 -0
  84. package/dist/graphql/objects/LightningReceiveRequestStatus.js.map +1 -0
  85. package/dist/graphql/objects/LightningSendFeeEstimateInput.d.ts +6 -0
  86. package/dist/graphql/objects/LightningSendFeeEstimateInput.js +12 -0
  87. package/dist/graphql/objects/LightningSendFeeEstimateInput.js.map +1 -0
  88. package/dist/graphql/objects/LightningSendFeeEstimateOutput.d.ts +8 -0
  89. package/dist/graphql/objects/LightningSendFeeEstimateOutput.js +26 -0
  90. package/dist/graphql/objects/LightningSendFeeEstimateOutput.js.map +1 -0
  91. package/dist/graphql/objects/LightningSendRequest.d.ts +32 -0
  92. package/dist/graphql/objects/LightningSendRequest.js +78 -0
  93. package/dist/graphql/objects/LightningSendRequest.js.map +1 -0
  94. package/dist/graphql/objects/LightningSendRequestStatus.d.ts +15 -0
  95. package/dist/graphql/objects/LightningSendRequestStatus.js +18 -0
  96. package/dist/graphql/objects/LightningSendRequestStatus.js.map +1 -0
  97. package/dist/graphql/objects/PageInfo.d.ts +11 -0
  98. package/dist/graphql/objects/PageInfo.js +26 -0
  99. package/dist/graphql/objects/PageInfo.js.map +1 -0
  100. package/dist/graphql/objects/RequestCoopExitInput.d.ts +7 -0
  101. package/dist/graphql/objects/RequestCoopExitInput.js +14 -0
  102. package/dist/graphql/objects/RequestCoopExitInput.js.map +1 -0
  103. package/dist/graphql/objects/RequestCoopExitOutput.d.ts +7 -0
  104. package/dist/graphql/objects/RequestCoopExitOutput.js +19 -0
  105. package/dist/graphql/objects/RequestCoopExitOutput.js.map +1 -0
  106. package/dist/graphql/objects/RequestLeavesSwapInput.d.ts +13 -0
  107. package/dist/graphql/objects/RequestLeavesSwapInput.js +25 -0
  108. package/dist/graphql/objects/RequestLeavesSwapInput.js.map +1 -0
  109. package/dist/graphql/objects/RequestLeavesSwapOutput.d.ts +7 -0
  110. package/dist/graphql/objects/RequestLeavesSwapOutput.js +19 -0
  111. package/dist/graphql/objects/RequestLeavesSwapOutput.js.map +1 -0
  112. package/dist/graphql/objects/RequestLightningReceiveInput.d.ts +16 -0
  113. package/dist/graphql/objects/RequestLightningReceiveInput.js +21 -0
  114. package/dist/graphql/objects/RequestLightningReceiveInput.js.map +1 -0
  115. package/dist/graphql/objects/RequestLightningReceiveOutput.d.ts +7 -0
  116. package/dist/graphql/objects/RequestLightningReceiveOutput.js +19 -0
  117. package/dist/graphql/objects/RequestLightningReceiveOutput.js.map +1 -0
  118. package/dist/graphql/objects/RequestLightningSendInput.d.ts +7 -0
  119. package/dist/graphql/objects/RequestLightningSendInput.js +14 -0
  120. package/dist/graphql/objects/RequestLightningSendInput.js.map +1 -0
  121. package/dist/graphql/objects/RequestLightningSendOutput.d.ts +7 -0
  122. package/dist/graphql/objects/RequestLightningSendOutput.js +19 -0
  123. package/dist/graphql/objects/RequestLightningSendOutput.js.map +1 -0
  124. package/dist/graphql/objects/SparkCoopExitRequestStatus.d.ts +11 -0
  125. package/dist/graphql/objects/SparkCoopExitRequestStatus.js +14 -0
  126. package/dist/graphql/objects/SparkCoopExitRequestStatus.js.map +1 -0
  127. package/dist/graphql/objects/SparkLeavesSwapRequestStatus.d.ts +11 -0
  128. package/dist/graphql/objects/SparkLeavesSwapRequestStatus.js +14 -0
  129. package/dist/graphql/objects/SparkLeavesSwapRequestStatus.js.map +1 -0
  130. package/dist/graphql/objects/SparkTransferToLeavesConnection.d.ts +19 -0
  131. package/dist/graphql/objects/SparkTransferToLeavesConnection.js +45 -0
  132. package/dist/graphql/objects/SparkTransferToLeavesConnection.js.map +1 -0
  133. package/dist/graphql/objects/SwapLeaf.d.ts +9 -0
  134. package/dist/graphql/objects/SwapLeaf.js +23 -0
  135. package/dist/graphql/objects/SwapLeaf.js.map +1 -0
  136. package/dist/graphql/objects/Transfer.d.ts +24 -0
  137. package/dist/graphql/objects/Transfer.js +82 -0
  138. package/dist/graphql/objects/Transfer.js.map +1 -0
  139. package/dist/graphql/objects/UserLeafInput.d.ts +8 -0
  140. package/dist/graphql/objects/UserLeafInput.js +16 -0
  141. package/dist/graphql/objects/UserLeafInput.js.map +1 -0
  142. package/dist/graphql/objects/WalletUser.d.ts +21 -0
  143. package/dist/graphql/objects/WalletUser.js +48 -0
  144. package/dist/graphql/objects/WalletUser.js.map +1 -0
  145. package/dist/graphql/objects/index.d.ts +41 -0
  146. package/dist/graphql/objects/index.js +13 -0
  147. package/dist/graphql/objects/index.js.map +1 -0
  148. package/dist/graphql/queries/CoopExitFeeEstimate.d.ts +1 -0
  149. package/dist/graphql/queries/CoopExitFeeEstimate.js +18 -0
  150. package/dist/graphql/queries/CoopExitFeeEstimate.js.map +1 -0
  151. package/dist/graphql/queries/CurrentUser.d.ts +1 -0
  152. package/dist/graphql/queries/CurrentUser.js +10 -0
  153. package/dist/graphql/queries/CurrentUser.js.map +1 -0
  154. package/dist/graphql/queries/LightningReceiveFeeEstimate.d.ts +1 -0
  155. package/dist/graphql/queries/LightningReceiveFeeEstimate.js +18 -0
  156. package/dist/graphql/queries/LightningReceiveFeeEstimate.js.map +1 -0
  157. package/dist/graphql/queries/LightningSendFeeEstimate.d.ts +1 -0
  158. package/dist/graphql/queries/LightningSendFeeEstimate.js +16 -0
  159. package/dist/graphql/queries/LightningSendFeeEstimate.js.map +1 -0
  160. package/dist/proto/common.d.ts +58 -0
  161. package/dist/proto/common.js +350 -0
  162. package/dist/proto/common.js.map +1 -0
  163. package/dist/proto/google/protobuf/descriptor.d.ts +1228 -0
  164. package/dist/proto/google/protobuf/descriptor.js +5070 -0
  165. package/dist/proto/google/protobuf/descriptor.js.map +1 -0
  166. package/dist/proto/google/protobuf/duration.d.ts +99 -0
  167. package/dist/proto/google/protobuf/duration.js +90 -0
  168. package/dist/proto/google/protobuf/duration.js.map +1 -0
  169. package/dist/proto/google/protobuf/empty.d.ts +33 -0
  170. package/dist/proto/google/protobuf/empty.js +46 -0
  171. package/dist/proto/google/protobuf/empty.js.map +1 -0
  172. package/dist/proto/google/protobuf/timestamp.d.ts +128 -0
  173. package/dist/proto/google/protobuf/timestamp.js +90 -0
  174. package/dist/proto/google/protobuf/timestamp.js.map +1 -0
  175. package/dist/proto/mock.d.ts +48 -0
  176. package/dist/proto/mock.js +103 -0
  177. package/dist/proto/mock.js.map +1 -0
  178. package/dist/proto/spark.d.ts +1101 -0
  179. package/dist/proto/spark.js +9565 -0
  180. package/dist/proto/spark.js.map +1 -0
  181. package/dist/proto/spark_authn.d.ts +111 -0
  182. package/dist/proto/spark_authn.js +517 -0
  183. package/dist/proto/spark_authn.js.map +1 -0
  184. package/dist/proto/validate/validate.d.ts +1087 -0
  185. package/dist/proto/validate/validate.js +4437 -0
  186. package/dist/proto/validate/validate.js.map +1 -0
  187. package/dist/services/config.d.ts +24 -0
  188. package/dist/services/config.js +29 -0
  189. package/dist/services/config.js.map +1 -0
  190. package/dist/services/connection.d.ts +21 -0
  191. package/dist/services/connection.js +154 -0
  192. package/dist/services/connection.js.map +1 -0
  193. package/dist/services/coop-exit.d.ts +20 -0
  194. package/dist/services/coop-exit.js +102 -0
  195. package/dist/services/coop-exit.js.map +1 -0
  196. package/dist/services/deposit.d.ts +21 -0
  197. package/dist/services/deposit.js +214 -0
  198. package/dist/services/deposit.js.map +1 -0
  199. package/dist/services/lightning.d.ts +31 -0
  200. package/dist/services/lightning.js +196 -0
  201. package/dist/services/lightning.js.map +1 -0
  202. package/dist/services/token-transactions.d.ts +17 -0
  203. package/dist/services/token-transactions.js +297 -0
  204. package/dist/services/token-transactions.js.map +1 -0
  205. package/dist/services/transfer.d.ts +63 -0
  206. package/dist/services/transfer.js +499 -0
  207. package/dist/services/transfer.js.map +1 -0
  208. package/dist/services/tree-creation.d.ts +30 -0
  209. package/dist/services/tree-creation.js +404 -0
  210. package/dist/services/tree-creation.js.map +1 -0
  211. package/dist/signer/signer.d.ts +97 -0
  212. package/dist/signer/signer.js +239 -0
  213. package/dist/signer/signer.js.map +1 -0
  214. package/dist/spark-sdk.d.ts +87 -0
  215. package/dist/spark-sdk.js +675 -0
  216. package/dist/spark-sdk.js.map +1 -0
  217. package/dist/tests/adaptor-signature.test.d.ts +1 -0
  218. package/dist/tests/adaptor-signature.test.js +34 -0
  219. package/dist/tests/adaptor-signature.test.js.map +1 -0
  220. package/dist/tests/bitcoin.test.d.ts +1 -0
  221. package/dist/tests/bitcoin.test.js +77 -0
  222. package/dist/tests/bitcoin.test.js.map +1 -0
  223. package/dist/tests/coop-exit.test.d.ts +1 -0
  224. package/dist/tests/coop-exit.test.js +140 -0
  225. package/dist/tests/coop-exit.test.js.map +1 -0
  226. package/dist/tests/deposit.test.d.ts +1 -0
  227. package/dist/tests/deposit.test.js +57 -0
  228. package/dist/tests/deposit.test.js.map +1 -0
  229. package/dist/tests/keys.test.d.ts +1 -0
  230. package/dist/tests/keys.test.js +53 -0
  231. package/dist/tests/keys.test.js.map +1 -0
  232. package/dist/tests/lightning.test.d.ts +1 -0
  233. package/dist/tests/lightning.test.js +175 -0
  234. package/dist/tests/lightning.test.js.map +1 -0
  235. package/dist/tests/secret-sharing.test.d.ts +1 -0
  236. package/dist/tests/secret-sharing.test.js +41 -0
  237. package/dist/tests/secret-sharing.test.js.map +1 -0
  238. package/dist/tests/swap.test.d.ts +1 -0
  239. package/dist/tests/swap.test.js +131 -0
  240. package/dist/tests/swap.test.js.map +1 -0
  241. package/dist/tests/test-util.d.ts +24 -0
  242. package/dist/tests/test-util.js +137 -0
  243. package/dist/tests/test-util.js.map +1 -0
  244. package/dist/tests/tokens.test.d.ts +1 -0
  245. package/dist/tests/tokens.test.js +42 -0
  246. package/dist/tests/tokens.test.js.map +1 -0
  247. package/dist/tests/transfer.test.d.ts +1 -0
  248. package/dist/tests/transfer.test.js +175 -0
  249. package/dist/tests/transfer.test.js.map +1 -0
  250. package/dist/tests/tree-creation.test.d.ts +1 -0
  251. package/dist/tests/tree-creation.test.js +32 -0
  252. package/dist/tests/tree-creation.test.js.map +1 -0
  253. package/dist/tests/utils/spark-testing-wallet.d.ts +14 -0
  254. package/dist/tests/utils/spark-testing-wallet.js +13 -0
  255. package/dist/tests/utils/spark-testing-wallet.js.map +1 -0
  256. package/dist/tests/utils/test-faucet.d.ts +22 -0
  257. package/dist/tests/utils/test-faucet.js +148 -0
  258. package/dist/tests/utils/test-faucet.js.map +1 -0
  259. package/dist/types/index.d.ts +3 -0
  260. package/dist/types/index.js +4 -0
  261. package/dist/types/index.js.map +1 -0
  262. package/dist/utils/adaptor-signature.d.ts +7 -0
  263. package/dist/utils/adaptor-signature.js +114 -0
  264. package/dist/utils/adaptor-signature.js.map +1 -0
  265. package/dist/utils/bitcoin.d.ts +12 -0
  266. package/dist/utils/bitcoin.js +87 -0
  267. package/dist/utils/bitcoin.js.map +1 -0
  268. package/dist/utils/crypto.d.ts +1 -0
  269. package/dist/utils/crypto.js +14 -0
  270. package/dist/utils/crypto.js.map +1 -0
  271. package/dist/utils/index.d.ts +14 -0
  272. package/dist/utils/index.js +15 -0
  273. package/dist/utils/index.js.map +1 -0
  274. package/dist/utils/keys.d.ts +7 -0
  275. package/dist/utils/keys.js +68 -0
  276. package/dist/utils/keys.js.map +1 -0
  277. package/dist/utils/network.d.ts +11 -0
  278. package/dist/utils/network.js +26 -0
  279. package/dist/utils/network.js.map +1 -0
  280. package/dist/utils/proof.d.ts +1 -0
  281. package/dist/utils/proof.js +12 -0
  282. package/dist/utils/proof.js.map +1 -0
  283. package/dist/utils/response-validation.d.ts +1 -0
  284. package/dist/utils/response-validation.js +16 -0
  285. package/dist/utils/response-validation.js.map +1 -0
  286. package/dist/utils/secret-sharing.d.ts +26 -0
  287. package/dist/utils/secret-sharing.js +175 -0
  288. package/dist/utils/secret-sharing.js.map +1 -0
  289. package/dist/utils/signing.d.ts +12 -0
  290. package/dist/utils/signing.js +67 -0
  291. package/dist/utils/signing.js.map +1 -0
  292. package/dist/utils/token-hashing.d.ts +3 -0
  293. package/dist/utils/token-hashing.js +117 -0
  294. package/dist/utils/token-hashing.js.map +1 -0
  295. package/dist/utils/token-keyshares.d.ts +5 -0
  296. package/dist/utils/token-keyshares.js +17 -0
  297. package/dist/utils/token-keyshares.js.map +1 -0
  298. package/dist/utils/token-transactions.d.ts +5 -0
  299. package/dist/utils/token-transactions.js +40 -0
  300. package/dist/utils/token-transactions.js.map +1 -0
  301. package/dist/utils/transaction.d.ts +8 -0
  302. package/dist/utils/transaction.js +33 -0
  303. package/dist/utils/transaction.js.map +1 -0
  304. package/dist/utils/wasm-wrapper.d.ts +2 -0
  305. package/dist/utils/wasm-wrapper.js +36 -0
  306. package/dist/utils/wasm-wrapper.js.map +1 -0
  307. package/dist/utils/wasm.d.ts +54 -0
  308. package/dist/utils/wasm.js +26 -0
  309. package/dist/utils/wasm.js.map +1 -0
  310. package/dist/wasm/spark_bindings.d.ts +229 -0
  311. package/dist/wasm/spark_bindings.js +1097 -0
  312. package/dist/wasm/spark_bindings.js.map +1 -0
  313. package/dist/wasm/spark_bindings_bg.wasm +0 -0
  314. package/package.json +140 -0
@@ -0,0 +1,111 @@
1
+ import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
2
+ import { type CallContext, type CallOptions } from "nice-grpc-common";
3
+ export declare const protobufPackage = "spark_authn";
4
+ /** Challenge represents the core challenge data */
5
+ export interface Challenge {
6
+ /** Protocol version for backward compatibility */
7
+ version: number;
8
+ /** Timestamp when challenge was issued (UTC Unix seconds) */
9
+ timestamp: number;
10
+ /** Random nonce to prevent replay attacks (32 bytes) */
11
+ nonce: Uint8Array;
12
+ /** The public key this challenge is intended for (uncompressed secp256k1 public key) */
13
+ publicKey: Uint8Array;
14
+ }
15
+ /** ProtectedChallenge wraps a Challenge with a server HMAC */
16
+ export interface ProtectedChallenge {
17
+ /** Protocol version for backward compatibility */
18
+ version: number;
19
+ /** The core challenge data */
20
+ challenge: Challenge | undefined;
21
+ /** Server's HMAC of the Challenge */
22
+ serverHmac: Uint8Array;
23
+ }
24
+ /** Request to initiate an authentication challenge */
25
+ export interface GetChallengeRequest {
26
+ /** Client's public key (uncompressed secp256k1 public key) */
27
+ publicKey: Uint8Array;
28
+ }
29
+ /** Response containing the protected challenge */
30
+ export interface GetChallengeResponse {
31
+ /** The protected challenge from the server */
32
+ protectedChallenge: ProtectedChallenge | undefined;
33
+ }
34
+ /** Request to verify a signed challenge */
35
+ export interface VerifyChallengeRequest {
36
+ /** The protected challenge from the server */
37
+ protectedChallenge: ProtectedChallenge | undefined;
38
+ /** Client's secp256k1 signature of the Challenge */
39
+ signature: Uint8Array;
40
+ /** Client's public key (uncompressed secp256k1 public key) */
41
+ publicKey: Uint8Array;
42
+ }
43
+ /** Response after successful authentication */
44
+ export interface VerifyChallengeResponse {
45
+ /** Session token for subsequent API calls */
46
+ sessionToken: string;
47
+ /** Token expiration timestamp (UTC Unix seconds) */
48
+ expirationTimestamp: number;
49
+ }
50
+ export declare const Challenge: MessageFns<Challenge>;
51
+ export declare const ProtectedChallenge: MessageFns<ProtectedChallenge>;
52
+ export declare const GetChallengeRequest: MessageFns<GetChallengeRequest>;
53
+ export declare const GetChallengeResponse: MessageFns<GetChallengeResponse>;
54
+ export declare const VerifyChallengeRequest: MessageFns<VerifyChallengeRequest>;
55
+ export declare const VerifyChallengeResponse: MessageFns<VerifyChallengeResponse>;
56
+ export type SparkAuthnServiceDefinition = typeof SparkAuthnServiceDefinition;
57
+ export declare const SparkAuthnServiceDefinition: {
58
+ readonly name: "SparkAuthnService";
59
+ readonly fullName: "spark_authn.SparkAuthnService";
60
+ readonly methods: {
61
+ /** Request a new authentication challenge for a public key */
62
+ readonly get_challenge: {
63
+ readonly name: "get_challenge";
64
+ readonly requestType: MessageFns<GetChallengeRequest>;
65
+ readonly requestStream: false;
66
+ readonly responseType: MessageFns<GetChallengeResponse>;
67
+ readonly responseStream: false;
68
+ readonly options: {};
69
+ };
70
+ /** Verify a signed challenge and return a session token */
71
+ readonly verify_challenge: {
72
+ readonly name: "verify_challenge";
73
+ readonly requestType: MessageFns<VerifyChallengeRequest>;
74
+ readonly requestStream: false;
75
+ readonly responseType: MessageFns<VerifyChallengeResponse>;
76
+ readonly responseStream: false;
77
+ readonly options: {};
78
+ };
79
+ };
80
+ };
81
+ export interface SparkAuthnServiceImplementation<CallContextExt = {}> {
82
+ /** Request a new authentication challenge for a public key */
83
+ get_challenge(request: GetChallengeRequest, context: CallContext & CallContextExt): Promise<DeepPartial<GetChallengeResponse>>;
84
+ /** Verify a signed challenge and return a session token */
85
+ verify_challenge(request: VerifyChallengeRequest, context: CallContext & CallContextExt): Promise<DeepPartial<VerifyChallengeResponse>>;
86
+ }
87
+ export interface SparkAuthnServiceClient<CallOptionsExt = {}> {
88
+ /** Request a new authentication challenge for a public key */
89
+ get_challenge(request: DeepPartial<GetChallengeRequest>, options?: CallOptions & CallOptionsExt): Promise<GetChallengeResponse>;
90
+ /** Verify a signed challenge and return a session token */
91
+ verify_challenge(request: DeepPartial<VerifyChallengeRequest>, options?: CallOptions & CallOptionsExt): Promise<VerifyChallengeResponse>;
92
+ }
93
+ type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
94
+ export type DeepPartial<T> = T extends Builtin ? T : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {
95
+ $case: string;
96
+ } ? {
97
+ [K in keyof Omit<T, "$case">]?: DeepPartial<T[K]>;
98
+ } & {
99
+ $case: T["$case"];
100
+ } : T extends {} ? {
101
+ [K in keyof T]?: DeepPartial<T[K]>;
102
+ } : Partial<T>;
103
+ export interface MessageFns<T> {
104
+ encode(message: T, writer?: BinaryWriter): BinaryWriter;
105
+ decode(input: BinaryReader | Uint8Array, length?: number): T;
106
+ fromJSON(object: any): T;
107
+ toJSON(message: T): unknown;
108
+ create(base?: DeepPartial<T>): T;
109
+ fromPartial(object: DeepPartial<T>): T;
110
+ }
111
+ export {};
@@ -0,0 +1,517 @@
1
+ // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
+ // versions:
3
+ // protoc-gen-ts_proto v2.6.1
4
+ // protoc v5.29.3
5
+ // source: spark_authn.proto
6
+ /* eslint-disable */
7
+ import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
8
+ export const protobufPackage = "spark_authn";
9
+ function createBaseChallenge() {
10
+ return { version: 0, timestamp: 0, nonce: new Uint8Array(0), publicKey: new Uint8Array(0) };
11
+ }
12
+ export const Challenge = {
13
+ encode(message, writer = new BinaryWriter()) {
14
+ if (message.version !== 0) {
15
+ writer.uint32(8).int32(message.version);
16
+ }
17
+ if (message.timestamp !== 0) {
18
+ writer.uint32(16).int64(message.timestamp);
19
+ }
20
+ if (message.nonce.length !== 0) {
21
+ writer.uint32(26).bytes(message.nonce);
22
+ }
23
+ if (message.publicKey.length !== 0) {
24
+ writer.uint32(34).bytes(message.publicKey);
25
+ }
26
+ return writer;
27
+ },
28
+ decode(input, length) {
29
+ const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
30
+ let end = length === undefined ? reader.len : reader.pos + length;
31
+ const message = createBaseChallenge();
32
+ while (reader.pos < end) {
33
+ const tag = reader.uint32();
34
+ switch (tag >>> 3) {
35
+ case 1: {
36
+ if (tag !== 8) {
37
+ break;
38
+ }
39
+ message.version = reader.int32();
40
+ continue;
41
+ }
42
+ case 2: {
43
+ if (tag !== 16) {
44
+ break;
45
+ }
46
+ message.timestamp = longToNumber(reader.int64());
47
+ continue;
48
+ }
49
+ case 3: {
50
+ if (tag !== 26) {
51
+ break;
52
+ }
53
+ message.nonce = reader.bytes();
54
+ continue;
55
+ }
56
+ case 4: {
57
+ if (tag !== 34) {
58
+ break;
59
+ }
60
+ message.publicKey = reader.bytes();
61
+ continue;
62
+ }
63
+ }
64
+ if ((tag & 7) === 4 || tag === 0) {
65
+ break;
66
+ }
67
+ reader.skip(tag & 7);
68
+ }
69
+ return message;
70
+ },
71
+ fromJSON(object) {
72
+ return {
73
+ version: isSet(object.version) ? globalThis.Number(object.version) : 0,
74
+ timestamp: isSet(object.timestamp) ? globalThis.Number(object.timestamp) : 0,
75
+ nonce: isSet(object.nonce) ? bytesFromBase64(object.nonce) : new Uint8Array(0),
76
+ publicKey: isSet(object.publicKey) ? bytesFromBase64(object.publicKey) : new Uint8Array(0),
77
+ };
78
+ },
79
+ toJSON(message) {
80
+ const obj = {};
81
+ if (message.version !== 0) {
82
+ obj.version = Math.round(message.version);
83
+ }
84
+ if (message.timestamp !== 0) {
85
+ obj.timestamp = Math.round(message.timestamp);
86
+ }
87
+ if (message.nonce.length !== 0) {
88
+ obj.nonce = base64FromBytes(message.nonce);
89
+ }
90
+ if (message.publicKey.length !== 0) {
91
+ obj.publicKey = base64FromBytes(message.publicKey);
92
+ }
93
+ return obj;
94
+ },
95
+ create(base) {
96
+ return Challenge.fromPartial(base ?? {});
97
+ },
98
+ fromPartial(object) {
99
+ const message = createBaseChallenge();
100
+ message.version = object.version ?? 0;
101
+ message.timestamp = object.timestamp ?? 0;
102
+ message.nonce = object.nonce ?? new Uint8Array(0);
103
+ message.publicKey = object.publicKey ?? new Uint8Array(0);
104
+ return message;
105
+ },
106
+ };
107
+ function createBaseProtectedChallenge() {
108
+ return { version: 0, challenge: undefined, serverHmac: new Uint8Array(0) };
109
+ }
110
+ export const ProtectedChallenge = {
111
+ encode(message, writer = new BinaryWriter()) {
112
+ if (message.version !== 0) {
113
+ writer.uint32(8).int32(message.version);
114
+ }
115
+ if (message.challenge !== undefined) {
116
+ Challenge.encode(message.challenge, writer.uint32(18).fork()).join();
117
+ }
118
+ if (message.serverHmac.length !== 0) {
119
+ writer.uint32(26).bytes(message.serverHmac);
120
+ }
121
+ return writer;
122
+ },
123
+ decode(input, length) {
124
+ const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
125
+ let end = length === undefined ? reader.len : reader.pos + length;
126
+ const message = createBaseProtectedChallenge();
127
+ while (reader.pos < end) {
128
+ const tag = reader.uint32();
129
+ switch (tag >>> 3) {
130
+ case 1: {
131
+ if (tag !== 8) {
132
+ break;
133
+ }
134
+ message.version = reader.int32();
135
+ continue;
136
+ }
137
+ case 2: {
138
+ if (tag !== 18) {
139
+ break;
140
+ }
141
+ message.challenge = Challenge.decode(reader, reader.uint32());
142
+ continue;
143
+ }
144
+ case 3: {
145
+ if (tag !== 26) {
146
+ break;
147
+ }
148
+ message.serverHmac = reader.bytes();
149
+ continue;
150
+ }
151
+ }
152
+ if ((tag & 7) === 4 || tag === 0) {
153
+ break;
154
+ }
155
+ reader.skip(tag & 7);
156
+ }
157
+ return message;
158
+ },
159
+ fromJSON(object) {
160
+ return {
161
+ version: isSet(object.version) ? globalThis.Number(object.version) : 0,
162
+ challenge: isSet(object.challenge) ? Challenge.fromJSON(object.challenge) : undefined,
163
+ serverHmac: isSet(object.serverHmac) ? bytesFromBase64(object.serverHmac) : new Uint8Array(0),
164
+ };
165
+ },
166
+ toJSON(message) {
167
+ const obj = {};
168
+ if (message.version !== 0) {
169
+ obj.version = Math.round(message.version);
170
+ }
171
+ if (message.challenge !== undefined) {
172
+ obj.challenge = Challenge.toJSON(message.challenge);
173
+ }
174
+ if (message.serverHmac.length !== 0) {
175
+ obj.serverHmac = base64FromBytes(message.serverHmac);
176
+ }
177
+ return obj;
178
+ },
179
+ create(base) {
180
+ return ProtectedChallenge.fromPartial(base ?? {});
181
+ },
182
+ fromPartial(object) {
183
+ const message = createBaseProtectedChallenge();
184
+ message.version = object.version ?? 0;
185
+ message.challenge = (object.challenge !== undefined && object.challenge !== null)
186
+ ? Challenge.fromPartial(object.challenge)
187
+ : undefined;
188
+ message.serverHmac = object.serverHmac ?? new Uint8Array(0);
189
+ return message;
190
+ },
191
+ };
192
+ function createBaseGetChallengeRequest() {
193
+ return { publicKey: new Uint8Array(0) };
194
+ }
195
+ export const GetChallengeRequest = {
196
+ encode(message, writer = new BinaryWriter()) {
197
+ if (message.publicKey.length !== 0) {
198
+ writer.uint32(10).bytes(message.publicKey);
199
+ }
200
+ return writer;
201
+ },
202
+ decode(input, length) {
203
+ const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
204
+ let end = length === undefined ? reader.len : reader.pos + length;
205
+ const message = createBaseGetChallengeRequest();
206
+ while (reader.pos < end) {
207
+ const tag = reader.uint32();
208
+ switch (tag >>> 3) {
209
+ case 1: {
210
+ if (tag !== 10) {
211
+ break;
212
+ }
213
+ message.publicKey = reader.bytes();
214
+ continue;
215
+ }
216
+ }
217
+ if ((tag & 7) === 4 || tag === 0) {
218
+ break;
219
+ }
220
+ reader.skip(tag & 7);
221
+ }
222
+ return message;
223
+ },
224
+ fromJSON(object) {
225
+ return { publicKey: isSet(object.publicKey) ? bytesFromBase64(object.publicKey) : new Uint8Array(0) };
226
+ },
227
+ toJSON(message) {
228
+ const obj = {};
229
+ if (message.publicKey.length !== 0) {
230
+ obj.publicKey = base64FromBytes(message.publicKey);
231
+ }
232
+ return obj;
233
+ },
234
+ create(base) {
235
+ return GetChallengeRequest.fromPartial(base ?? {});
236
+ },
237
+ fromPartial(object) {
238
+ const message = createBaseGetChallengeRequest();
239
+ message.publicKey = object.publicKey ?? new Uint8Array(0);
240
+ return message;
241
+ },
242
+ };
243
+ function createBaseGetChallengeResponse() {
244
+ return { protectedChallenge: undefined };
245
+ }
246
+ export const GetChallengeResponse = {
247
+ encode(message, writer = new BinaryWriter()) {
248
+ if (message.protectedChallenge !== undefined) {
249
+ ProtectedChallenge.encode(message.protectedChallenge, writer.uint32(10).fork()).join();
250
+ }
251
+ return writer;
252
+ },
253
+ decode(input, length) {
254
+ const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
255
+ let end = length === undefined ? reader.len : reader.pos + length;
256
+ const message = createBaseGetChallengeResponse();
257
+ while (reader.pos < end) {
258
+ const tag = reader.uint32();
259
+ switch (tag >>> 3) {
260
+ case 1: {
261
+ if (tag !== 10) {
262
+ break;
263
+ }
264
+ message.protectedChallenge = ProtectedChallenge.decode(reader, reader.uint32());
265
+ continue;
266
+ }
267
+ }
268
+ if ((tag & 7) === 4 || tag === 0) {
269
+ break;
270
+ }
271
+ reader.skip(tag & 7);
272
+ }
273
+ return message;
274
+ },
275
+ fromJSON(object) {
276
+ return {
277
+ protectedChallenge: isSet(object.protectedChallenge)
278
+ ? ProtectedChallenge.fromJSON(object.protectedChallenge)
279
+ : undefined,
280
+ };
281
+ },
282
+ toJSON(message) {
283
+ const obj = {};
284
+ if (message.protectedChallenge !== undefined) {
285
+ obj.protectedChallenge = ProtectedChallenge.toJSON(message.protectedChallenge);
286
+ }
287
+ return obj;
288
+ },
289
+ create(base) {
290
+ return GetChallengeResponse.fromPartial(base ?? {});
291
+ },
292
+ fromPartial(object) {
293
+ const message = createBaseGetChallengeResponse();
294
+ message.protectedChallenge = (object.protectedChallenge !== undefined && object.protectedChallenge !== null)
295
+ ? ProtectedChallenge.fromPartial(object.protectedChallenge)
296
+ : undefined;
297
+ return message;
298
+ },
299
+ };
300
+ function createBaseVerifyChallengeRequest() {
301
+ return { protectedChallenge: undefined, signature: new Uint8Array(0), publicKey: new Uint8Array(0) };
302
+ }
303
+ export const VerifyChallengeRequest = {
304
+ encode(message, writer = new BinaryWriter()) {
305
+ if (message.protectedChallenge !== undefined) {
306
+ ProtectedChallenge.encode(message.protectedChallenge, writer.uint32(10).fork()).join();
307
+ }
308
+ if (message.signature.length !== 0) {
309
+ writer.uint32(18).bytes(message.signature);
310
+ }
311
+ if (message.publicKey.length !== 0) {
312
+ writer.uint32(26).bytes(message.publicKey);
313
+ }
314
+ return writer;
315
+ },
316
+ decode(input, length) {
317
+ const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
318
+ let end = length === undefined ? reader.len : reader.pos + length;
319
+ const message = createBaseVerifyChallengeRequest();
320
+ while (reader.pos < end) {
321
+ const tag = reader.uint32();
322
+ switch (tag >>> 3) {
323
+ case 1: {
324
+ if (tag !== 10) {
325
+ break;
326
+ }
327
+ message.protectedChallenge = ProtectedChallenge.decode(reader, reader.uint32());
328
+ continue;
329
+ }
330
+ case 2: {
331
+ if (tag !== 18) {
332
+ break;
333
+ }
334
+ message.signature = reader.bytes();
335
+ continue;
336
+ }
337
+ case 3: {
338
+ if (tag !== 26) {
339
+ break;
340
+ }
341
+ message.publicKey = reader.bytes();
342
+ continue;
343
+ }
344
+ }
345
+ if ((tag & 7) === 4 || tag === 0) {
346
+ break;
347
+ }
348
+ reader.skip(tag & 7);
349
+ }
350
+ return message;
351
+ },
352
+ fromJSON(object) {
353
+ return {
354
+ protectedChallenge: isSet(object.protectedChallenge)
355
+ ? ProtectedChallenge.fromJSON(object.protectedChallenge)
356
+ : undefined,
357
+ signature: isSet(object.signature) ? bytesFromBase64(object.signature) : new Uint8Array(0),
358
+ publicKey: isSet(object.publicKey) ? bytesFromBase64(object.publicKey) : new Uint8Array(0),
359
+ };
360
+ },
361
+ toJSON(message) {
362
+ const obj = {};
363
+ if (message.protectedChallenge !== undefined) {
364
+ obj.protectedChallenge = ProtectedChallenge.toJSON(message.protectedChallenge);
365
+ }
366
+ if (message.signature.length !== 0) {
367
+ obj.signature = base64FromBytes(message.signature);
368
+ }
369
+ if (message.publicKey.length !== 0) {
370
+ obj.publicKey = base64FromBytes(message.publicKey);
371
+ }
372
+ return obj;
373
+ },
374
+ create(base) {
375
+ return VerifyChallengeRequest.fromPartial(base ?? {});
376
+ },
377
+ fromPartial(object) {
378
+ const message = createBaseVerifyChallengeRequest();
379
+ message.protectedChallenge = (object.protectedChallenge !== undefined && object.protectedChallenge !== null)
380
+ ? ProtectedChallenge.fromPartial(object.protectedChallenge)
381
+ : undefined;
382
+ message.signature = object.signature ?? new Uint8Array(0);
383
+ message.publicKey = object.publicKey ?? new Uint8Array(0);
384
+ return message;
385
+ },
386
+ };
387
+ function createBaseVerifyChallengeResponse() {
388
+ return { sessionToken: "", expirationTimestamp: 0 };
389
+ }
390
+ export const VerifyChallengeResponse = {
391
+ encode(message, writer = new BinaryWriter()) {
392
+ if (message.sessionToken !== "") {
393
+ writer.uint32(10).string(message.sessionToken);
394
+ }
395
+ if (message.expirationTimestamp !== 0) {
396
+ writer.uint32(16).int64(message.expirationTimestamp);
397
+ }
398
+ return writer;
399
+ },
400
+ decode(input, length) {
401
+ const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
402
+ let end = length === undefined ? reader.len : reader.pos + length;
403
+ const message = createBaseVerifyChallengeResponse();
404
+ while (reader.pos < end) {
405
+ const tag = reader.uint32();
406
+ switch (tag >>> 3) {
407
+ case 1: {
408
+ if (tag !== 10) {
409
+ break;
410
+ }
411
+ message.sessionToken = reader.string();
412
+ continue;
413
+ }
414
+ case 2: {
415
+ if (tag !== 16) {
416
+ break;
417
+ }
418
+ message.expirationTimestamp = longToNumber(reader.int64());
419
+ continue;
420
+ }
421
+ }
422
+ if ((tag & 7) === 4 || tag === 0) {
423
+ break;
424
+ }
425
+ reader.skip(tag & 7);
426
+ }
427
+ return message;
428
+ },
429
+ fromJSON(object) {
430
+ return {
431
+ sessionToken: isSet(object.sessionToken) ? globalThis.String(object.sessionToken) : "",
432
+ expirationTimestamp: isSet(object.expirationTimestamp) ? globalThis.Number(object.expirationTimestamp) : 0,
433
+ };
434
+ },
435
+ toJSON(message) {
436
+ const obj = {};
437
+ if (message.sessionToken !== "") {
438
+ obj.sessionToken = message.sessionToken;
439
+ }
440
+ if (message.expirationTimestamp !== 0) {
441
+ obj.expirationTimestamp = Math.round(message.expirationTimestamp);
442
+ }
443
+ return obj;
444
+ },
445
+ create(base) {
446
+ return VerifyChallengeResponse.fromPartial(base ?? {});
447
+ },
448
+ fromPartial(object) {
449
+ const message = createBaseVerifyChallengeResponse();
450
+ message.sessionToken = object.sessionToken ?? "";
451
+ message.expirationTimestamp = object.expirationTimestamp ?? 0;
452
+ return message;
453
+ },
454
+ };
455
+ export const SparkAuthnServiceDefinition = {
456
+ name: "SparkAuthnService",
457
+ fullName: "spark_authn.SparkAuthnService",
458
+ methods: {
459
+ /** Request a new authentication challenge for a public key */
460
+ get_challenge: {
461
+ name: "get_challenge",
462
+ requestType: GetChallengeRequest,
463
+ requestStream: false,
464
+ responseType: GetChallengeResponse,
465
+ responseStream: false,
466
+ options: {},
467
+ },
468
+ /** Verify a signed challenge and return a session token */
469
+ verify_challenge: {
470
+ name: "verify_challenge",
471
+ requestType: VerifyChallengeRequest,
472
+ requestStream: false,
473
+ responseType: VerifyChallengeResponse,
474
+ responseStream: false,
475
+ options: {},
476
+ },
477
+ },
478
+ };
479
+ function bytesFromBase64(b64) {
480
+ if (globalThis.Buffer) {
481
+ return Uint8Array.from(globalThis.Buffer.from(b64, "base64"));
482
+ }
483
+ else {
484
+ const bin = globalThis.atob(b64);
485
+ const arr = new Uint8Array(bin.length);
486
+ for (let i = 0; i < bin.length; ++i) {
487
+ arr[i] = bin.charCodeAt(i);
488
+ }
489
+ return arr;
490
+ }
491
+ }
492
+ function base64FromBytes(arr) {
493
+ if (globalThis.Buffer) {
494
+ return globalThis.Buffer.from(arr).toString("base64");
495
+ }
496
+ else {
497
+ const bin = [];
498
+ arr.forEach((byte) => {
499
+ bin.push(globalThis.String.fromCharCode(byte));
500
+ });
501
+ return globalThis.btoa(bin.join(""));
502
+ }
503
+ }
504
+ function longToNumber(int64) {
505
+ const num = globalThis.Number(int64.toString());
506
+ if (num > globalThis.Number.MAX_SAFE_INTEGER) {
507
+ throw new globalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER");
508
+ }
509
+ if (num < globalThis.Number.MIN_SAFE_INTEGER) {
510
+ throw new globalThis.Error("Value is smaller than Number.MIN_SAFE_INTEGER");
511
+ }
512
+ return num;
513
+ }
514
+ function isSet(value) {
515
+ return value !== null && value !== undefined;
516
+ }
517
+ //# sourceMappingURL=spark_authn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spark_authn.js","sourceRoot":"","sources":["../../src/proto/spark_authn.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,YAAY;AACZ,gCAAgC;AAChC,iCAAiC;AACjC,4BAA4B;AAE5B,oBAAoB;AACpB,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAGrE,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAAC;AA0D7C,SAAS,mBAAmB;IAC1B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;AAC9F,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAA0B;IAC9C,MAAM,CAAC,OAAkB,EAAE,SAAuB,IAAI,YAAY,EAAE;QAClE,IAAI,OAAO,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,OAAO,CAAC,SAAS,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;QACD,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,KAAgC,EAAE,MAAe;QACtD,MAAM,MAAM,GAAG,KAAK,YAAY,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;QAC/E,IAAI,GAAG,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC;QAClE,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;QACtC,OAAO,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;YAC5B,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC;gBAClB,KAAK,CAAC,CAAC,CAAC,CAAC;oBACP,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;wBACd,MAAM;oBACR,CAAC;oBAED,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;oBACjC,SAAS;gBACX,CAAC;gBACD,KAAK,CAAC,CAAC,CAAC,CAAC;oBACP,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;wBACf,MAAM;oBACR,CAAC;oBAED,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;oBACjD,SAAS;gBACX,CAAC;gBACD,KAAK,CAAC,CAAC,CAAC,CAAC;oBACP,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;wBACf,MAAM;oBACR,CAAC;oBAED,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;oBAC/B,SAAS;gBACX,CAAC;gBACD,KAAK,CAAC,CAAC,CAAC,CAAC;oBACP,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;wBACf,MAAM;oBACR,CAAC;oBAED,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;oBACnC,SAAS;gBACX,CAAC;YACH,CAAC;YACD,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;gBACjC,MAAM;YACR,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,QAAQ,CAAC,MAAW;QAClB,OAAO;YACL,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YACtE,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5E,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC;YAC9E,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC;SAC3F,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,OAAkB;QACvB,MAAM,GAAG,GAAQ,EAAE,CAAC;QACpB,IAAI,OAAO,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;YAC1B,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,OAAO,CAAC,SAAS,KAAK,CAAC,EAAE,CAAC;YAC5B,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAChD,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,GAAG,CAAC,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,GAAG,CAAC,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,CAAC,IAA6B;QAClC,OAAO,SAAS,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;IACD,WAAW,CAAC,MAA8B;QACxC,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;QACtC,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;QACtC,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;QAC1C,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;QAC1D,OAAO,OAAO,CAAC;IACjB,CAAC;CACF,CAAC;AAEF,SAAS,4BAA4B;IACnC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;AAC7E,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAmC;IAChE,MAAM,CAAC,OAA2B,EAAE,SAAuB,IAAI,YAAY,EAAE;QAC3E,IAAI,OAAO,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACpC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACvE,CAAC;QACD,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,KAAgC,EAAE,MAAe;QACtD,MAAM,MAAM,GAAG,KAAK,YAAY,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;QAC/E,IAAI,GAAG,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC;QAClE,MAAM,OAAO,GAAG,4BAA4B,EAAE,CAAC;QAC/C,OAAO,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;YAC5B,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC;gBAClB,KAAK,CAAC,CAAC,CAAC,CAAC;oBACP,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;wBACd,MAAM;oBACR,CAAC;oBAED,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;oBACjC,SAAS;gBACX,CAAC;gBACD,KAAK,CAAC,CAAC,CAAC,CAAC;oBACP,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;wBACf,MAAM;oBACR,CAAC;oBAED,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;oBAC9D,SAAS;gBACX,CAAC;gBACD,KAAK,CAAC,CAAC,CAAC,CAAC;oBACP,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;wBACf,MAAM;oBACR,CAAC;oBAED,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;oBACpC,SAAS;gBACX,CAAC;YACH,CAAC;YACD,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;gBACjC,MAAM;YACR,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,QAAQ,CAAC,MAAW;QAClB,OAAO;YACL,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YACtE,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;YACrF,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC;SAC9F,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,OAA2B;QAChC,MAAM,GAAG,GAAQ,EAAE,CAAC;QACpB,IAAI,OAAO,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;YAC1B,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACpC,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,GAAG,CAAC,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,CAAC,IAAsC;QAC3C,OAAO,kBAAkB,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,WAAW,CAAC,MAAuC;QACjD,MAAM,OAAO,GAAG,4BAA4B,EAAE,CAAC;QAC/C,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;QACtC,OAAO,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC;YAC/E,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC;YACzC,CAAC,CAAC,SAAS,CAAC;QACd,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;QAC5D,OAAO,OAAO,CAAC;IACjB,CAAC;CACF,CAAC;AAEF,SAAS,6BAA6B;IACpC,OAAO,EAAE,SAAS,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1C,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAoC;IAClE,MAAM,CAAC,OAA4B,EAAE,SAAuB,IAAI,YAAY,EAAE;QAC5E,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,KAAgC,EAAE,MAAe;QACtD,MAAM,MAAM,GAAG,KAAK,YAAY,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;QAC/E,IAAI,GAAG,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC;QAClE,MAAM,OAAO,GAAG,6BAA6B,EAAE,CAAC;QAChD,OAAO,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;YAC5B,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC;gBAClB,KAAK,CAAC,CAAC,CAAC,CAAC;oBACP,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;wBACf,MAAM;oBACR,CAAC;oBAED,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;oBACnC,SAAS;gBACX,CAAC;YACH,CAAC;YACD,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;gBACjC,MAAM;YACR,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,QAAQ,CAAC,MAAW;QAClB,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IACxG,CAAC;IAED,MAAM,CAAC,OAA4B;QACjC,MAAM,GAAG,GAAQ,EAAE,CAAC;QACpB,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,GAAG,CAAC,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,CAAC,IAAuC;QAC5C,OAAO,mBAAmB,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,WAAW,CAAC,MAAwC;QAClD,MAAM,OAAO,GAAG,6BAA6B,EAAE,CAAC;QAChD,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;QAC1D,OAAO,OAAO,CAAC;IACjB,CAAC;CACF,CAAC;AAEF,SAAS,8BAA8B;IACrC,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAqC;IACpE,MAAM,CAAC,OAA6B,EAAE,SAAuB,IAAI,YAAY,EAAE;QAC7E,IAAI,OAAO,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;YAC7C,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACzF,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,KAAgC,EAAE,MAAe;QACtD,MAAM,MAAM,GAAG,KAAK,YAAY,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;QAC/E,IAAI,GAAG,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC;QAClE,MAAM,OAAO,GAAG,8BAA8B,EAAE,CAAC;QACjD,OAAO,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;YAC5B,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC;gBAClB,KAAK,CAAC,CAAC,CAAC,CAAC;oBACP,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;wBACf,MAAM;oBACR,CAAC;oBAED,OAAO,CAAC,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;oBAChF,SAAS;gBACX,CAAC;YACH,CAAC;YACD,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;gBACjC,MAAM;YACR,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,QAAQ,CAAC,MAAW;QAClB,OAAO;YACL,kBAAkB,EAAE,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC;gBAClD,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC,kBAAkB,CAAC;gBACxD,CAAC,CAAC,SAAS;SACd,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,OAA6B;QAClC,MAAM,GAAG,GAAQ,EAAE,CAAC;QACpB,IAAI,OAAO,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;YAC7C,GAAG,CAAC,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QACjF,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,CAAC,IAAwC;QAC7C,OAAO,oBAAoB,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,WAAW,CAAC,MAAyC;QACnD,MAAM,OAAO,GAAG,8BAA8B,EAAE,CAAC;QACjD,OAAO,CAAC,kBAAkB,GAAG,CAAC,MAAM,CAAC,kBAAkB,KAAK,SAAS,IAAI,MAAM,CAAC,kBAAkB,KAAK,IAAI,CAAC;YAC1G,CAAC,CAAC,kBAAkB,CAAC,WAAW,CAAC,MAAM,CAAC,kBAAkB,CAAC;YAC3D,CAAC,CAAC,SAAS,CAAC;QACd,OAAO,OAAO,CAAC;IACjB,CAAC;CACF,CAAC;AAEF,SAAS,gCAAgC;IACvC,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;AACvG,CAAC;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAuC;IACxE,MAAM,CAAC,OAA+B,EAAE,SAAuB,IAAI,YAAY,EAAE;QAC/E,IAAI,OAAO,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;YAC7C,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACzF,CAAC;QACD,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,KAAgC,EAAE,MAAe;QACtD,MAAM,MAAM,GAAG,KAAK,YAAY,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;QAC/E,IAAI,GAAG,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC;QAClE,MAAM,OAAO,GAAG,gCAAgC,EAAE,CAAC;QACnD,OAAO,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;YAC5B,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC;gBAClB,KAAK,CAAC,CAAC,CAAC,CAAC;oBACP,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;wBACf,MAAM;oBACR,CAAC;oBAED,OAAO,CAAC,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;oBAChF,SAAS;gBACX,CAAC;gBACD,KAAK,CAAC,CAAC,CAAC,CAAC;oBACP,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;wBACf,MAAM;oBACR,CAAC;oBAED,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;oBACnC,SAAS;gBACX,CAAC;gBACD,KAAK,CAAC,CAAC,CAAC,CAAC;oBACP,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;wBACf,MAAM;oBACR,CAAC;oBAED,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;oBACnC,SAAS;gBACX,CAAC;YACH,CAAC;YACD,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;gBACjC,MAAM;YACR,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,QAAQ,CAAC,MAAW;QAClB,OAAO;YACL,kBAAkB,EAAE,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC;gBAClD,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC,kBAAkB,CAAC;gBACxD,CAAC,CAAC,SAAS;YACb,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC;YAC1F,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC;SAC3F,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,OAA+B;QACpC,MAAM,GAAG,GAAQ,EAAE,CAAC;QACpB,IAAI,OAAO,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;YAC7C,GAAG,CAAC,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QACjF,CAAC;QACD,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,GAAG,CAAC,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,GAAG,CAAC,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,CAAC,IAA0C;QAC/C,OAAO,sBAAsB,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,WAAW,CAAC,MAA2C;QACrD,MAAM,OAAO,GAAG,gCAAgC,EAAE,CAAC;QACnD,OAAO,CAAC,kBAAkB,GAAG,CAAC,MAAM,CAAC,kBAAkB,KAAK,SAAS,IAAI,MAAM,CAAC,kBAAkB,KAAK,IAAI,CAAC;YAC1G,CAAC,CAAC,kBAAkB,CAAC,WAAW,CAAC,MAAM,CAAC,kBAAkB,CAAC;YAC3D,CAAC,CAAC,SAAS,CAAC;QACd,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;QAC1D,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;QAC1D,OAAO,OAAO,CAAC;IACjB,CAAC;CACF,CAAC;AAEF,SAAS,iCAAiC;IACxC,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,mBAAmB,EAAE,CAAC,EAAE,CAAC;AACtD,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAwC;IAC1E,MAAM,CAAC,OAAgC,EAAE,SAAuB,IAAI,YAAY,EAAE;QAChF,IAAI,OAAO,CAAC,YAAY,KAAK,EAAE,EAAE,CAAC;YAChC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,OAAO,CAAC,mBAAmB,KAAK,CAAC,EAAE,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,KAAgC,EAAE,MAAe;QACtD,MAAM,MAAM,GAAG,KAAK,YAAY,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;QAC/E,IAAI,GAAG,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC;QAClE,MAAM,OAAO,GAAG,iCAAiC,EAAE,CAAC;QACpD,OAAO,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;YAC5B,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC;gBAClB,KAAK,CAAC,CAAC,CAAC,CAAC;oBACP,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;wBACf,MAAM;oBACR,CAAC;oBAED,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;oBACvC,SAAS;gBACX,CAAC;gBACD,KAAK,CAAC,CAAC,CAAC,CAAC;oBACP,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;wBACf,MAAM;oBACR,CAAC;oBAED,OAAO,CAAC,mBAAmB,GAAG,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;oBAC3D,SAAS;gBACX,CAAC;YACH,CAAC;YACD,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;gBACjC,MAAM;YACR,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,QAAQ,CAAC,MAAW;QAClB,OAAO;YACL,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE;YACtF,mBAAmB,EAAE,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3G,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,OAAgC;QACrC,MAAM,GAAG,GAAQ,EAAE,CAAC;QACpB,IAAI,OAAO,CAAC,YAAY,KAAK,EAAE,EAAE,CAAC;YAChC,GAAG,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QAC1C,CAAC;QACD,IAAI,OAAO,CAAC,mBAAmB,KAAK,CAAC,EAAE,CAAC;YACtC,GAAG,CAAC,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACpE,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,CAAC,IAA2C;QAChD,OAAO,uBAAuB,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,WAAW,CAAC,MAA4C;QACtD,MAAM,OAAO,GAAG,iCAAiC,EAAE,CAAC;QACpD,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC;QACjD,OAAO,CAAC,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,IAAI,CAAC,CAAC;QAC9D,OAAO,OAAO,CAAC;IACjB,CAAC;CACF,CAAC;AAGF,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,IAAI,EAAE,mBAAmB;IACzB,QAAQ,EAAE,+BAA+B;IACzC,OAAO,EAAE;QACP,8DAA8D;QAC9D,aAAa,EAAE;YACb,IAAI,EAAE,eAAe;YACrB,WAAW,EAAE,mBAAmB;YAChC,aAAa,EAAE,KAAK;YACpB,YAAY,EAAE,oBAAoB;YAClC,cAAc,EAAE,KAAK;YACrB,OAAO,EAAE,EAAE;SACZ;QACD,2DAA2D;QAC3D,gBAAgB,EAAE;YAChB,IAAI,EAAE,kBAAkB;YACxB,WAAW,EAAE,sBAAsB;YACnC,aAAa,EAAE,KAAK;YACpB,YAAY,EAAE,uBAAuB;YACrC,cAAc,EAAE,KAAK;YACrB,OAAO,EAAE,EAAE;SACZ;KACF;CACO,CAAC;AA4BX,SAAS,eAAe,CAAC,GAAW;IAClC,IAAK,UAAkB,CAAC,MAAM,EAAE,CAAC;QAC/B,OAAO,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChE,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;YACpC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,GAAe;IACtC,IAAK,UAAkB,CAAC,MAAM,EAAE,CAAC;QAC/B,OAAO,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACxD,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACnB,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QACH,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACvC,CAAC;AACH,CAAC;AAWD,SAAS,YAAY,CAAC,KAA6B;IACjD,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAChD,IAAI,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAC7C,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAC7C,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,KAAK,CAAC,KAAU;IACvB,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC;AAC/C,CAAC"}