@reminix/sdk 0.8.2 → 0.8.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/README.md +10 -43
  3. package/client.d.mts +12 -6
  4. package/client.d.mts.map +1 -1
  5. package/client.d.ts +12 -6
  6. package/client.d.ts.map +1 -1
  7. package/client.js +9 -3
  8. package/client.js.map +1 -1
  9. package/client.mjs +9 -3
  10. package/client.mjs.map +1 -1
  11. package/core/streaming.d.mts +33 -0
  12. package/core/streaming.d.mts.map +1 -0
  13. package/core/streaming.d.ts +33 -0
  14. package/core/streaming.d.ts.map +1 -0
  15. package/core/streaming.js +263 -0
  16. package/core/streaming.js.map +1 -0
  17. package/core/streaming.mjs +258 -0
  18. package/core/streaming.mjs.map +1 -0
  19. package/index.d.mts +0 -1
  20. package/index.d.mts.map +1 -1
  21. package/index.d.ts +0 -1
  22. package/index.d.ts.map +1 -1
  23. package/index.js +1 -5
  24. package/index.js.map +1 -1
  25. package/index.mjs +0 -2
  26. package/index.mjs.map +1 -1
  27. package/internal/decoders/line.d.mts +17 -0
  28. package/internal/decoders/line.d.mts.map +1 -0
  29. package/internal/decoders/line.d.ts +17 -0
  30. package/internal/decoders/line.d.ts.map +1 -0
  31. package/internal/decoders/line.js +113 -0
  32. package/internal/decoders/line.js.map +1 -0
  33. package/internal/decoders/line.mjs +108 -0
  34. package/internal/decoders/line.mjs.map +1 -0
  35. package/internal/parse.d.mts.map +1 -1
  36. package/internal/parse.d.ts.map +1 -1
  37. package/internal/parse.js +10 -0
  38. package/internal/parse.js.map +1 -1
  39. package/internal/parse.mjs +10 -0
  40. package/internal/parse.mjs.map +1 -1
  41. package/internal/request-options.d.mts +2 -0
  42. package/internal/request-options.d.mts.map +1 -1
  43. package/internal/request-options.d.ts +2 -0
  44. package/internal/request-options.d.ts.map +1 -1
  45. package/internal/request-options.js.map +1 -1
  46. package/internal/request-options.mjs.map +1 -1
  47. package/package.json +1 -1
  48. package/resources/agents.d.mts +49 -40
  49. package/resources/agents.d.mts.map +1 -1
  50. package/resources/agents.d.ts +49 -40
  51. package/resources/agents.d.ts.map +1 -1
  52. package/resources/agents.js +7 -127
  53. package/resources/agents.js.map +1 -1
  54. package/resources/agents.mjs +7 -126
  55. package/resources/agents.mjs.map +1 -1
  56. package/resources/deployments.d.mts +4 -0
  57. package/resources/deployments.d.mts.map +1 -0
  58. package/resources/deployments.d.ts +4 -0
  59. package/resources/deployments.d.ts.map +1 -0
  60. package/resources/deployments.js +9 -0
  61. package/resources/deployments.js.map +1 -0
  62. package/resources/deployments.mjs +5 -0
  63. package/resources/deployments.mjs.map +1 -0
  64. package/resources/index.d.mts +4 -2
  65. package/resources/index.d.mts.map +1 -1
  66. package/resources/index.d.ts +4 -2
  67. package/resources/index.d.ts.map +1 -1
  68. package/resources/index.js +7 -3
  69. package/resources/index.js.map +1 -1
  70. package/resources/index.mjs +3 -1
  71. package/resources/index.mjs.map +1 -1
  72. package/resources/{project.d.mts → projects.d.mts} +31 -7
  73. package/resources/projects.d.mts.map +1 -0
  74. package/resources/{project.d.ts → projects.d.ts} +31 -7
  75. package/resources/projects.d.ts.map +1 -0
  76. package/resources/{project.js → projects.js} +8 -7
  77. package/resources/projects.js.map +1 -0
  78. package/resources/{project.mjs → projects.mjs} +6 -5
  79. package/resources/projects.mjs.map +1 -0
  80. package/resources/secrets.d.mts +4 -0
  81. package/resources/secrets.d.mts.map +1 -0
  82. package/resources/secrets.d.ts +4 -0
  83. package/resources/secrets.d.ts.map +1 -0
  84. package/resources/secrets.js +9 -0
  85. package/resources/secrets.js.map +1 -0
  86. package/resources/secrets.mjs +5 -0
  87. package/resources/secrets.mjs.map +1 -0
  88. package/src/client.ts +25 -5
  89. package/src/core/streaming.ts +315 -0
  90. package/src/index.ts +0 -4
  91. package/src/internal/decoders/line.ts +135 -0
  92. package/src/internal/parse.ts +14 -0
  93. package/src/internal/request-options.ts +2 -0
  94. package/src/resources/agents.ts +101 -67
  95. package/src/resources/deployments.ts +5 -0
  96. package/src/resources/index.ts +8 -1
  97. package/src/resources/{project.ts → projects.ts} +35 -7
  98. package/src/resources/secrets.ts +5 -0
  99. package/src/streaming.ts +2 -87
  100. package/src/version.ts +1 -1
  101. package/streaming.d.mts +1 -30
  102. package/streaming.d.mts.map +1 -1
  103. package/streaming.d.ts +1 -30
  104. package/streaming.d.ts.map +1 -1
  105. package/streaming.js +3 -80
  106. package/streaming.js.map +1 -1
  107. package/streaming.mjs +1 -78
  108. package/streaming.mjs.map +1 -1
  109. package/version.d.mts +1 -1
  110. package/version.d.ts +1 -1
  111. package/version.js +1 -1
  112. package/version.mjs +1 -1
  113. package/resources/project.d.mts.map +0 -1
  114. package/resources/project.d.ts.map +0 -1
  115. package/resources/project.js.map +0 -1
  116. package/resources/project.mjs.map +0 -1
package/streaming.js CHANGED
@@ -1,83 +1,6 @@
1
1
  "use strict";
2
- // stainless-custom-start
3
- /**
4
- * Streaming utilities for SSE (Server-Sent Events) responses.
5
- *
6
- * This module provides streaming support for the Reminix API.
7
- * When you upgrade to Stainless Pro, you can remove this file
8
- * and use the built-in streaming support.
9
- */
10
2
  Object.defineProperty(exports, "__esModule", { value: true });
11
- exports.Stream = void 0;
12
- /**
13
- * An async iterable stream that parses SSE (Server-Sent Events) responses.
14
- *
15
- * @example
16
- * ```ts
17
- * const stream = await client.agents.chatStream('agent', { messages: [...] });
18
- * for await (const chunk of stream) {
19
- * process.stdout.write(chunk.chunk);
20
- * }
21
- * ```
22
- */
23
- class Stream {
24
- constructor(response) {
25
- this.response = response;
26
- }
27
- async *[Symbol.asyncIterator]() {
28
- const reader = this.response.body?.getReader();
29
- if (!reader) {
30
- throw new Error('Response body is not readable');
31
- }
32
- const decoder = new TextDecoder();
33
- let buffer = '';
34
- try {
35
- while (true) {
36
- const { done, value } = await reader.read();
37
- if (done)
38
- break;
39
- buffer += decoder.decode(value, { stream: true });
40
- const lines = buffer.split('\n');
41
- buffer = lines.pop() || '';
42
- for (const line of lines) {
43
- const trimmed = line.trim();
44
- if (trimmed.startsWith('data: ')) {
45
- const data = trimmed.slice(6);
46
- if (data === '[DONE]') {
47
- return;
48
- }
49
- if (data) {
50
- try {
51
- yield JSON.parse(data);
52
- }
53
- catch {
54
- // Skip malformed JSON
55
- }
56
- }
57
- }
58
- }
59
- }
60
- // Process any remaining data in buffer
61
- if (buffer.trim()) {
62
- const trimmed = buffer.trim();
63
- if (trimmed.startsWith('data: ')) {
64
- const data = trimmed.slice(6);
65
- if (data && data !== '[DONE]') {
66
- try {
67
- yield JSON.parse(data);
68
- }
69
- catch {
70
- // Skip malformed JSON
71
- }
72
- }
73
- }
74
- }
75
- }
76
- finally {
77
- reader.releaseLock();
78
- }
79
- }
80
- }
81
- exports.Stream = Stream;
82
- // stainless-custom-end
3
+ const tslib_1 = require("./internal/tslib.js");
4
+ /** @deprecated Import from ./core/streaming instead */
5
+ tslib_1.__exportStar(require("./core/streaming.js"), exports);
83
6
  //# sourceMappingURL=streaming.js.map
package/streaming.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"streaming.js","sourceRoot":"","sources":["src/streaming.ts"],"names":[],"mappings":";AAAA,yBAAyB;AACzB;;;;;;GAMG;;;AAUH;;;;;;;;;;GAUG;AACH,MAAa,MAAM;IACjB,YAAoB,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;IAAG,CAAC;IAE1C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;QAC/C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,IAAI,CAAC;YACH,OAAO,IAAI,EAAE,CAAC;gBACZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC5C,IAAI,IAAI;oBAAE,MAAM;gBAEhB,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBAClD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACjC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;gBAE3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC5B,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;wBACjC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBAC9B,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;4BACtB,OAAO;wBACT,CAAC;wBACD,IAAI,IAAI,EAAE,CAAC;4BACT,IAAI,CAAC;gCACH,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,CAAC;4BAC9B,CAAC;4BAAC,MAAM,CAAC;gCACP,sBAAsB;4BACxB,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,uCAAuC;YACvC,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;gBAClB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC9B,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACjC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC9B,IAAI,IAAI,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;wBAC9B,IAAI,CAAC;4BACH,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,CAAC;wBAC9B,CAAC;wBAAC,MAAM,CAAC;4BACP,sBAAsB;wBACxB,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;CACF;AAzDD,wBAyDC;AACD,uBAAuB"}
1
+ {"version":3,"file":"streaming.js","sourceRoot":"","sources":["src/streaming.ts"],"names":[],"mappings":";;;AAAA,uDAAuD;AACvD,8DAAiC"}
package/streaming.mjs CHANGED
@@ -1,79 +1,2 @@
1
- // stainless-custom-start
2
- /**
3
- * Streaming utilities for SSE (Server-Sent Events) responses.
4
- *
5
- * This module provides streaming support for the Reminix API.
6
- * When you upgrade to Stainless Pro, you can remove this file
7
- * and use the built-in streaming support.
8
- */
9
- /**
10
- * An async iterable stream that parses SSE (Server-Sent Events) responses.
11
- *
12
- * @example
13
- * ```ts
14
- * const stream = await client.agents.chatStream('agent', { messages: [...] });
15
- * for await (const chunk of stream) {
16
- * process.stdout.write(chunk.chunk);
17
- * }
18
- * ```
19
- */
20
- export class Stream {
21
- constructor(response) {
22
- this.response = response;
23
- }
24
- async *[Symbol.asyncIterator]() {
25
- const reader = this.response.body?.getReader();
26
- if (!reader) {
27
- throw new Error('Response body is not readable');
28
- }
29
- const decoder = new TextDecoder();
30
- let buffer = '';
31
- try {
32
- while (true) {
33
- const { done, value } = await reader.read();
34
- if (done)
35
- break;
36
- buffer += decoder.decode(value, { stream: true });
37
- const lines = buffer.split('\n');
38
- buffer = lines.pop() || '';
39
- for (const line of lines) {
40
- const trimmed = line.trim();
41
- if (trimmed.startsWith('data: ')) {
42
- const data = trimmed.slice(6);
43
- if (data === '[DONE]') {
44
- return;
45
- }
46
- if (data) {
47
- try {
48
- yield JSON.parse(data);
49
- }
50
- catch {
51
- // Skip malformed JSON
52
- }
53
- }
54
- }
55
- }
56
- }
57
- // Process any remaining data in buffer
58
- if (buffer.trim()) {
59
- const trimmed = buffer.trim();
60
- if (trimmed.startsWith('data: ')) {
61
- const data = trimmed.slice(6);
62
- if (data && data !== '[DONE]') {
63
- try {
64
- yield JSON.parse(data);
65
- }
66
- catch {
67
- // Skip malformed JSON
68
- }
69
- }
70
- }
71
- }
72
- }
73
- finally {
74
- reader.releaseLock();
75
- }
76
- }
77
- }
78
- // stainless-custom-end
1
+ export * from "./core/streaming.mjs";
79
2
  //# sourceMappingURL=streaming.mjs.map
package/streaming.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"streaming.mjs","sourceRoot":"","sources":["src/streaming.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB;;;;;;GAMG;AAUH;;;;;;;;;;GAUG;AACH,MAAM,OAAO,MAAM;IACjB,YAAoB,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;IAAG,CAAC;IAE1C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;QAC/C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,IAAI,CAAC;YACH,OAAO,IAAI,EAAE,CAAC;gBACZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC5C,IAAI,IAAI;oBAAE,MAAM;gBAEhB,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBAClD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACjC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;gBAE3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC5B,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;wBACjC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBAC9B,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;4BACtB,OAAO;wBACT,CAAC;wBACD,IAAI,IAAI,EAAE,CAAC;4BACT,IAAI,CAAC;gCACH,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,CAAC;4BAC9B,CAAC;4BAAC,MAAM,CAAC;gCACP,sBAAsB;4BACxB,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,uCAAuC;YACvC,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;gBAClB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC9B,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACjC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC9B,IAAI,IAAI,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;wBAC9B,IAAI,CAAC;4BACH,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,CAAC;wBAC9B,CAAC;wBAAC,MAAM,CAAC;4BACP,sBAAsB;wBACxB,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;CACF;AACD,uBAAuB"}
1
+ {"version":3,"file":"streaming.mjs","sourceRoot":"","sources":["src/streaming.ts"],"names":[],"mappings":""}
package/version.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.8.2";
1
+ export declare const VERSION = "0.8.4";
2
2
  //# sourceMappingURL=version.d.mts.map
package/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.8.2";
1
+ export declare const VERSION = "0.8.4";
2
2
  //# sourceMappingURL=version.d.ts.map
package/version.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
- exports.VERSION = '0.8.2'; // x-release-please-version
4
+ exports.VERSION = '0.8.4'; // x-release-please-version
5
5
  //# sourceMappingURL=version.js.map
package/version.mjs CHANGED
@@ -1,2 +1,2 @@
1
- export const VERSION = '0.8.2'; // x-release-please-version
1
+ export const VERSION = '0.8.4'; // x-release-please-version
2
2
  //# sourceMappingURL=version.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project.d.mts","sourceRoot":"","sources":["../src/resources/project.ts"],"names":[],"mappings":"OAEO,EAAE,WAAW,EAAE;OACf,EAAE,UAAU,EAAE;OACd,EAAE,cAAc,EAAE;AAEzB,qBAAa,OAAQ,SAAQ,WAAW;IACtC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU,CAAC,uBAAuB,CAAC;CAGxE;AAED,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,CAAC,OAAO,WAAW,OAAO,CAAC;IAC/B,OAAO,EAAE,KAAK,uBAAuB,IAAI,uBAAuB,EAAE,CAAC;CACpE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../src/resources/project.ts"],"names":[],"mappings":"OAEO,EAAE,WAAW,EAAE;OACf,EAAE,UAAU,EAAE;OACd,EAAE,cAAc,EAAE;AAEzB,qBAAa,OAAQ,SAAQ,WAAW;IACtC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU,CAAC,uBAAuB,CAAC;CAGxE;AAED,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,CAAC,OAAO,WAAW,OAAO,CAAC;IAC/B,OAAO,EAAE,KAAK,uBAAuB,IAAI,uBAAuB,EAAE,CAAC;CACpE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../src/resources/project.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;AAEtF,kDAA+C;AAI/C,MAAa,OAAQ,SAAQ,sBAAW;IACtC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,OAAwB;QAC/B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;CACF;AAjBD,0BAiBC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"project.mjs","sourceRoot":"","sources":["../src/resources/project.ts"],"names":[],"mappings":"AAAA,sFAAsF;OAE/E,EAAE,WAAW,EAAE;AAItB,MAAM,OAAO,OAAQ,SAAQ,WAAW;IACtC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,OAAwB;QAC/B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;CACF"}