@bubblelab/bubble-core 0.1.41 → 0.1.42
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.
- package/dist/bubble-bundle.d.ts +75 -75
- package/dist/bubbles/service-bubble/agi-inc.d.ts +100 -100
- package/dist/bubbles/service-bubble/ai-agent.d.ts +60 -60
- package/dist/bubbles/service-bubble/airtable.d.ts +136 -136
- package/dist/bubbles/service-bubble/apify/apify.d.ts +14 -14
- package/dist/bubbles/service-bubble/ashby/ashby.d.ts +70 -70
- package/dist/bubbles/service-bubble/browserbase/browserbase.d.ts +39 -39
- package/dist/bubbles/service-bubble/crustdata/crustdata.d.ts +126 -126
- package/dist/bubbles/service-bubble/eleven-labs.d.ts +28 -28
- package/dist/bubbles/service-bubble/firecrawl.d.ts +592 -592
- package/dist/bubbles/service-bubble/followupboss.d.ts +156 -156
- package/dist/bubbles/service-bubble/fullenrich/fullenrich.d.ts +76 -76
- package/dist/bubbles/service-bubble/github.d.ts +188 -188
- package/dist/bubbles/service-bubble/gmail.d.ts +248 -248
- package/dist/bubbles/service-bubble/google-calendar.d.ts +134 -134
- package/dist/bubbles/service-bubble/google-drive.d.ts +92 -92
- package/dist/bubbles/service-bubble/google-sheets/google-sheets.d.ts +40 -40
- package/dist/bubbles/service-bubble/hello-world.d.ts +4 -4
- package/dist/bubbles/service-bubble/http.d.ts +4 -4
- package/dist/bubbles/service-bubble/insforge-db.d.ts +12 -12
- package/dist/bubbles/service-bubble/jira/jira.d.ts +44 -44
- package/dist/bubbles/service-bubble/notion/notion.d.ts +2077 -2077
- package/dist/bubbles/service-bubble/postgresql.d.ts +12 -12
- package/dist/bubbles/service-bubble/resend.d.ts +32 -32
- package/dist/bubbles/service-bubble/slack/slack.d.ts +430 -430
- package/dist/bubbles/service-bubble/storage.d.ts +20 -20
- package/dist/bubbles/service-bubble/telegram.d.ts +1549 -1549
- package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.d.ts +19 -19
- package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.d.ts +16 -16
- package/dist/bubbles/tool-bubble/chart-js-tool.d.ts +16 -16
- package/dist/bubbles/tool-bubble/code-edit-tool.d.ts +4 -4
- package/dist/bubbles/tool-bubble/company-enrichment-tool.d.ts +86 -86
- package/dist/bubbles/tool-bubble/google-maps-tool.d.ts +16 -16
- package/dist/bubbles/tool-bubble/instagram-tool.d.ts +14 -14
- package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.d.ts +10 -10
- package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.js +1 -1
- package/dist/bubbles/tool-bubble/linkedin-tool.d.ts +332 -332
- package/dist/bubbles/tool-bubble/people-search-tool.d.ts +144 -132
- package/dist/bubbles/tool-bubble/people-search-tool.d.ts.map +1 -1
- package/dist/bubbles/tool-bubble/people-search-tool.js +11 -1
- package/dist/bubbles/tool-bubble/people-search-tool.js.map +1 -1
- package/dist/bubbles/tool-bubble/reddit-scrape-tool.d.ts +10 -10
- package/dist/bubbles/tool-bubble/sql-query-tool.d.ts +8 -8
- package/dist/bubbles/tool-bubble/tiktok-tool.d.ts +70 -70
- package/dist/bubbles/tool-bubble/twitter-tool.d.ts +134 -134
- package/dist/bubbles/tool-bubble/web-crawl-tool.d.ts +14 -14
- package/dist/bubbles/tool-bubble/web-search-tool.d.ts +6 -6
- package/dist/bubbles/tool-bubble/youtube-tool.d.ts +18 -18
- package/dist/bubbles/workflow-bubble/generate-document.workflow.d.ts +24 -24
- package/dist/bubbles/workflow-bubble/parse-document.workflow.d.ts +4 -4
- package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.d.ts +74 -74
- package/dist/bubbles/workflow-bubble/pdf-ocr.workflow.d.ts +8 -8
- package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.d.ts +28 -28
- package/dist/bubbles/workflow-bubble/slack-formatter-agent.d.ts +84 -84
- package/dist/bubbles/workflow-bubble/slack-notifier.workflow.d.ts +4 -4
- package/dist/bubbles.json +11 -3
- package/package.json +2 -2
|
@@ -81,6 +81,7 @@ export declare class BrowserBaseBubble<T extends BrowserBaseParamsInput = Browse
|
|
|
81
81
|
viewport_width: number;
|
|
82
82
|
viewport_height: number;
|
|
83
83
|
credentials?: Partial<Record<CredentialType, string>> | undefined;
|
|
84
|
+
context_id?: string | undefined;
|
|
84
85
|
cookies?: {
|
|
85
86
|
value: string;
|
|
86
87
|
path: string;
|
|
@@ -90,10 +91,10 @@ export declare class BrowserBaseBubble<T extends BrowserBaseParamsInput = Browse
|
|
|
90
91
|
httpOnly: boolean;
|
|
91
92
|
secure: boolean;
|
|
92
93
|
}[] | undefined;
|
|
93
|
-
context_id?: string | undefined;
|
|
94
94
|
}, {
|
|
95
95
|
operation: "start_session";
|
|
96
96
|
credentials?: Partial<Record<CredentialType, string>> | undefined;
|
|
97
|
+
context_id?: string | undefined;
|
|
97
98
|
cookies?: {
|
|
98
99
|
value: string;
|
|
99
100
|
path: string;
|
|
@@ -103,7 +104,6 @@ export declare class BrowserBaseBubble<T extends BrowserBaseParamsInput = Browse
|
|
|
103
104
|
httpOnly: boolean;
|
|
104
105
|
secure: boolean;
|
|
105
106
|
}[] | undefined;
|
|
106
|
-
context_id?: string | undefined;
|
|
107
107
|
viewport_width?: number | undefined;
|
|
108
108
|
viewport_height?: number | undefined;
|
|
109
109
|
}>, import("zod").ZodObject<{
|
|
@@ -114,19 +114,19 @@ export declare class BrowserBaseBubble<T extends BrowserBaseParamsInput = Browse
|
|
|
114
114
|
timeout: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodNumber>>;
|
|
115
115
|
credentials: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodNativeEnum<typeof CredentialType>, import("zod").ZodString>>;
|
|
116
116
|
}, "strip", import("zod").ZodTypeAny, {
|
|
117
|
-
operation: "navigate";
|
|
118
117
|
url: string;
|
|
118
|
+
timeout: number;
|
|
119
|
+
operation: "navigate";
|
|
119
120
|
session_id: string;
|
|
120
121
|
wait_until: "load" | "domcontentloaded" | "networkidle0" | "networkidle2";
|
|
121
|
-
timeout: number;
|
|
122
122
|
credentials?: Partial<Record<CredentialType, string>> | undefined;
|
|
123
123
|
}, {
|
|
124
|
-
operation: "navigate";
|
|
125
124
|
url: string;
|
|
125
|
+
operation: "navigate";
|
|
126
126
|
session_id: string;
|
|
127
127
|
credentials?: Partial<Record<CredentialType, string>> | undefined;
|
|
128
|
-
wait_until?: "load" | "domcontentloaded" | "networkidle0" | "networkidle2" | undefined;
|
|
129
128
|
timeout?: number | undefined;
|
|
129
|
+
wait_until?: "load" | "domcontentloaded" | "networkidle0" | "networkidle2" | undefined;
|
|
130
130
|
}>, import("zod").ZodObject<{
|
|
131
131
|
operation: import("zod").ZodLiteral<"click">;
|
|
132
132
|
session_id: import("zod").ZodString;
|
|
@@ -135,9 +135,9 @@ export declare class BrowserBaseBubble<T extends BrowserBaseParamsInput = Browse
|
|
|
135
135
|
timeout: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodNumber>>;
|
|
136
136
|
credentials: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodNativeEnum<typeof CredentialType>, import("zod").ZodString>>;
|
|
137
137
|
}, "strip", import("zod").ZodTypeAny, {
|
|
138
|
+
timeout: number;
|
|
138
139
|
operation: "click";
|
|
139
140
|
session_id: string;
|
|
140
|
-
timeout: number;
|
|
141
141
|
selector: string;
|
|
142
142
|
wait_for_navigation: boolean;
|
|
143
143
|
credentials?: Partial<Record<CredentialType, string>> | undefined;
|
|
@@ -158,20 +158,20 @@ export declare class BrowserBaseBubble<T extends BrowserBaseParamsInput = Browse
|
|
|
158
158
|
credentials: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodNativeEnum<typeof CredentialType>, import("zod").ZodString>>;
|
|
159
159
|
}, "strip", import("zod").ZodTypeAny, {
|
|
160
160
|
operation: "type";
|
|
161
|
+
text: string;
|
|
161
162
|
session_id: string;
|
|
162
163
|
selector: string;
|
|
163
|
-
text: string;
|
|
164
|
-
clear_first: boolean;
|
|
165
164
|
delay: number;
|
|
165
|
+
clear_first: boolean;
|
|
166
166
|
credentials?: Partial<Record<CredentialType, string>> | undefined;
|
|
167
167
|
}, {
|
|
168
168
|
operation: "type";
|
|
169
|
+
text: string;
|
|
169
170
|
session_id: string;
|
|
170
171
|
selector: string;
|
|
171
|
-
text: string;
|
|
172
172
|
credentials?: Partial<Record<CredentialType, string>> | undefined;
|
|
173
|
-
clear_first?: boolean | undefined;
|
|
174
173
|
delay?: number | undefined;
|
|
174
|
+
clear_first?: boolean | undefined;
|
|
175
175
|
}>, import("zod").ZodObject<{
|
|
176
176
|
operation: import("zod").ZodLiteral<"evaluate">;
|
|
177
177
|
session_id: import("zod").ZodString;
|
|
@@ -195,16 +195,16 @@ export declare class BrowserBaseBubble<T extends BrowserBaseParamsInput = Browse
|
|
|
195
195
|
credentials: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodNativeEnum<typeof CredentialType>, import("zod").ZodString>>;
|
|
196
196
|
}, "strip", import("zod").ZodTypeAny, {
|
|
197
197
|
operation: "get_content";
|
|
198
|
-
session_id: string;
|
|
199
198
|
content_type: "text" | "html" | "outer_html";
|
|
199
|
+
session_id: string;
|
|
200
200
|
credentials?: Partial<Record<CredentialType, string>> | undefined;
|
|
201
201
|
selector?: string | undefined;
|
|
202
202
|
}, {
|
|
203
203
|
operation: "get_content";
|
|
204
204
|
session_id: string;
|
|
205
205
|
credentials?: Partial<Record<CredentialType, string>> | undefined;
|
|
206
|
-
selector?: string | undefined;
|
|
207
206
|
content_type?: "text" | "html" | "outer_html" | undefined;
|
|
207
|
+
selector?: string | undefined;
|
|
208
208
|
}>, import("zod").ZodObject<{
|
|
209
209
|
operation: import("zod").ZodLiteral<"screenshot">;
|
|
210
210
|
session_id: import("zod").ZodString;
|
|
@@ -214,21 +214,21 @@ export declare class BrowserBaseBubble<T extends BrowserBaseParamsInput = Browse
|
|
|
214
214
|
quality: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
215
215
|
credentials: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodNativeEnum<typeof CredentialType>, import("zod").ZodString>>;
|
|
216
216
|
}, "strip", import("zod").ZodTypeAny, {
|
|
217
|
-
operation: "screenshot";
|
|
218
217
|
format: "png" | "jpeg" | "webp";
|
|
218
|
+
operation: "screenshot";
|
|
219
219
|
session_id: string;
|
|
220
220
|
full_page: boolean;
|
|
221
221
|
credentials?: Partial<Record<CredentialType, string>> | undefined;
|
|
222
|
-
selector?: string | undefined;
|
|
223
222
|
quality?: number | undefined;
|
|
223
|
+
selector?: string | undefined;
|
|
224
224
|
}, {
|
|
225
225
|
operation: "screenshot";
|
|
226
226
|
session_id: string;
|
|
227
227
|
format?: "png" | "jpeg" | "webp" | undefined;
|
|
228
228
|
credentials?: Partial<Record<CredentialType, string>> | undefined;
|
|
229
|
+
quality?: number | undefined;
|
|
229
230
|
selector?: string | undefined;
|
|
230
231
|
full_page?: boolean | undefined;
|
|
231
|
-
quality?: number | undefined;
|
|
232
232
|
}>, import("zod").ZodObject<{
|
|
233
233
|
operation: import("zod").ZodLiteral<"wait">;
|
|
234
234
|
session_id: import("zod").ZodString;
|
|
@@ -237,9 +237,9 @@ export declare class BrowserBaseBubble<T extends BrowserBaseParamsInput = Browse
|
|
|
237
237
|
timeout: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodNumber>>;
|
|
238
238
|
credentials: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodNativeEnum<typeof CredentialType>, import("zod").ZodString>>;
|
|
239
239
|
}, "strip", import("zod").ZodTypeAny, {
|
|
240
|
+
timeout: number;
|
|
240
241
|
operation: "wait";
|
|
241
242
|
session_id: string;
|
|
242
|
-
timeout: number;
|
|
243
243
|
wait_type: "timeout" | "selector" | "navigation";
|
|
244
244
|
credentials?: Partial<Record<CredentialType, string>> | undefined;
|
|
245
245
|
selector?: string | undefined;
|
|
@@ -286,18 +286,18 @@ export declare class BrowserBaseBubble<T extends BrowserBaseParamsInput = Browse
|
|
|
286
286
|
debug_url: import("zod").ZodOptional<import("zod").ZodString>;
|
|
287
287
|
error: import("zod").ZodString;
|
|
288
288
|
}, "strip", import("zod").ZodTypeAny, {
|
|
289
|
-
operation: "start_session";
|
|
290
289
|
success: boolean;
|
|
291
290
|
error: string;
|
|
292
|
-
|
|
291
|
+
operation: "start_session";
|
|
293
292
|
session_id?: string | undefined;
|
|
293
|
+
context_id?: string | undefined;
|
|
294
294
|
debug_url?: string | undefined;
|
|
295
295
|
}, {
|
|
296
|
-
operation: "start_session";
|
|
297
296
|
success: boolean;
|
|
298
297
|
error: string;
|
|
299
|
-
|
|
298
|
+
operation: "start_session";
|
|
300
299
|
session_id?: string | undefined;
|
|
300
|
+
context_id?: string | undefined;
|
|
301
301
|
debug_url?: string | undefined;
|
|
302
302
|
}>, import("zod").ZodObject<{
|
|
303
303
|
operation: import("zod").ZodLiteral<"navigate">;
|
|
@@ -305,53 +305,53 @@ export declare class BrowserBaseBubble<T extends BrowserBaseParamsInput = Browse
|
|
|
305
305
|
url: import("zod").ZodOptional<import("zod").ZodString>;
|
|
306
306
|
error: import("zod").ZodString;
|
|
307
307
|
}, "strip", import("zod").ZodTypeAny, {
|
|
308
|
-
operation: "navigate";
|
|
309
308
|
success: boolean;
|
|
310
309
|
error: string;
|
|
310
|
+
operation: "navigate";
|
|
311
311
|
url?: string | undefined;
|
|
312
312
|
}, {
|
|
313
|
-
operation: "navigate";
|
|
314
313
|
success: boolean;
|
|
315
314
|
error: string;
|
|
315
|
+
operation: "navigate";
|
|
316
316
|
url?: string | undefined;
|
|
317
317
|
}>, import("zod").ZodObject<{
|
|
318
318
|
operation: import("zod").ZodLiteral<"click">;
|
|
319
319
|
success: import("zod").ZodBoolean;
|
|
320
320
|
error: import("zod").ZodString;
|
|
321
321
|
}, "strip", import("zod").ZodTypeAny, {
|
|
322
|
-
operation: "click";
|
|
323
322
|
success: boolean;
|
|
324
323
|
error: string;
|
|
325
|
-
}, {
|
|
326
324
|
operation: "click";
|
|
325
|
+
}, {
|
|
327
326
|
success: boolean;
|
|
328
327
|
error: string;
|
|
328
|
+
operation: "click";
|
|
329
329
|
}>, import("zod").ZodObject<{
|
|
330
330
|
operation: import("zod").ZodLiteral<"type">;
|
|
331
331
|
success: import("zod").ZodBoolean;
|
|
332
332
|
error: import("zod").ZodString;
|
|
333
333
|
}, "strip", import("zod").ZodTypeAny, {
|
|
334
|
-
operation: "type";
|
|
335
334
|
success: boolean;
|
|
336
335
|
error: string;
|
|
337
|
-
}, {
|
|
338
336
|
operation: "type";
|
|
337
|
+
}, {
|
|
339
338
|
success: boolean;
|
|
340
339
|
error: string;
|
|
340
|
+
operation: "type";
|
|
341
341
|
}>, import("zod").ZodObject<{
|
|
342
342
|
operation: import("zod").ZodLiteral<"evaluate">;
|
|
343
343
|
success: import("zod").ZodBoolean;
|
|
344
344
|
result: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
345
345
|
error: import("zod").ZodString;
|
|
346
346
|
}, "strip", import("zod").ZodTypeAny, {
|
|
347
|
-
operation: "evaluate";
|
|
348
347
|
success: boolean;
|
|
349
348
|
error: string;
|
|
349
|
+
operation: "evaluate";
|
|
350
350
|
result?: unknown;
|
|
351
351
|
}, {
|
|
352
|
-
operation: "evaluate";
|
|
353
352
|
success: boolean;
|
|
354
353
|
error: string;
|
|
354
|
+
operation: "evaluate";
|
|
355
355
|
result?: unknown;
|
|
356
356
|
}>, import("zod").ZodObject<{
|
|
357
357
|
operation: import("zod").ZodLiteral<"get_content">;
|
|
@@ -359,14 +359,14 @@ export declare class BrowserBaseBubble<T extends BrowserBaseParamsInput = Browse
|
|
|
359
359
|
content: import("zod").ZodOptional<import("zod").ZodString>;
|
|
360
360
|
error: import("zod").ZodString;
|
|
361
361
|
}, "strip", import("zod").ZodTypeAny, {
|
|
362
|
-
operation: "get_content";
|
|
363
362
|
success: boolean;
|
|
364
363
|
error: string;
|
|
364
|
+
operation: "get_content";
|
|
365
365
|
content?: string | undefined;
|
|
366
366
|
}, {
|
|
367
|
-
operation: "get_content";
|
|
368
367
|
success: boolean;
|
|
369
368
|
error: string;
|
|
369
|
+
operation: "get_content";
|
|
370
370
|
content?: string | undefined;
|
|
371
371
|
}>, import("zod").ZodObject<{
|
|
372
372
|
operation: import("zod").ZodLiteral<"screenshot">;
|
|
@@ -375,15 +375,15 @@ export declare class BrowserBaseBubble<T extends BrowserBaseParamsInput = Browse
|
|
|
375
375
|
format: import("zod").ZodOptional<import("zod").ZodString>;
|
|
376
376
|
error: import("zod").ZodString;
|
|
377
377
|
}, "strip", import("zod").ZodTypeAny, {
|
|
378
|
-
operation: "screenshot";
|
|
379
378
|
success: boolean;
|
|
380
379
|
error: string;
|
|
380
|
+
operation: "screenshot";
|
|
381
381
|
format?: string | undefined;
|
|
382
382
|
data?: string | undefined;
|
|
383
383
|
}, {
|
|
384
|
-
operation: "screenshot";
|
|
385
384
|
success: boolean;
|
|
386
385
|
error: string;
|
|
386
|
+
operation: "screenshot";
|
|
387
387
|
format?: string | undefined;
|
|
388
388
|
data?: string | undefined;
|
|
389
389
|
}>, import("zod").ZodObject<{
|
|
@@ -391,13 +391,13 @@ export declare class BrowserBaseBubble<T extends BrowserBaseParamsInput = Browse
|
|
|
391
391
|
success: import("zod").ZodBoolean;
|
|
392
392
|
error: import("zod").ZodString;
|
|
393
393
|
}, "strip", import("zod").ZodTypeAny, {
|
|
394
|
-
operation: "wait";
|
|
395
394
|
success: boolean;
|
|
396
395
|
error: string;
|
|
397
|
-
}, {
|
|
398
396
|
operation: "wait";
|
|
397
|
+
}, {
|
|
399
398
|
success: boolean;
|
|
400
399
|
error: string;
|
|
400
|
+
operation: "wait";
|
|
401
401
|
}>, import("zod").ZodObject<{
|
|
402
402
|
operation: import("zod").ZodLiteral<"get_cookies">;
|
|
403
403
|
success: import("zod").ZodBoolean;
|
|
@@ -428,9 +428,9 @@ export declare class BrowserBaseBubble<T extends BrowserBaseParamsInput = Browse
|
|
|
428
428
|
}>, "many">>;
|
|
429
429
|
error: import("zod").ZodString;
|
|
430
430
|
}, "strip", import("zod").ZodTypeAny, {
|
|
431
|
-
operation: "get_cookies";
|
|
432
431
|
success: boolean;
|
|
433
432
|
error: string;
|
|
433
|
+
operation: "get_cookies";
|
|
434
434
|
cookies?: {
|
|
435
435
|
value: string;
|
|
436
436
|
path: string;
|
|
@@ -441,9 +441,9 @@ export declare class BrowserBaseBubble<T extends BrowserBaseParamsInput = Browse
|
|
|
441
441
|
secure: boolean;
|
|
442
442
|
}[] | undefined;
|
|
443
443
|
}, {
|
|
444
|
-
operation: "get_cookies";
|
|
445
444
|
success: boolean;
|
|
446
445
|
error: string;
|
|
446
|
+
operation: "get_cookies";
|
|
447
447
|
cookies?: {
|
|
448
448
|
value: string;
|
|
449
449
|
path: string;
|
|
@@ -458,13 +458,13 @@ export declare class BrowserBaseBubble<T extends BrowserBaseParamsInput = Browse
|
|
|
458
458
|
success: import("zod").ZodBoolean;
|
|
459
459
|
error: import("zod").ZodString;
|
|
460
460
|
}, "strip", import("zod").ZodTypeAny, {
|
|
461
|
-
operation: "end_session";
|
|
462
461
|
success: boolean;
|
|
463
462
|
error: string;
|
|
464
|
-
}, {
|
|
465
463
|
operation: "end_session";
|
|
464
|
+
}, {
|
|
466
465
|
success: boolean;
|
|
467
466
|
error: string;
|
|
467
|
+
operation: "end_session";
|
|
468
468
|
}>]>;
|
|
469
469
|
static readonly shortDescription = "Browser automation service using BrowserBase cloud browsers";
|
|
470
470
|
static readonly longDescription = "\n BrowserBase service integration for cloud-based browser automation.\n\n Features:\n - Cloud-based browser sessions\n - Session persistence via context IDs\n - Cookie injection for authenticated sessions\n - Full page automation (click, type, evaluate)\n - Screenshot and content extraction\n - Cross-browser support\n\n Use cases:\n - Automated shopping workflows (Amazon, etc.)\n - Web scraping with authentication\n - Form automation and submission\n - Browser-based testing\n\n Security Features:\n - Sessions are isolated in BrowserBase cloud\n - Credentials are handled securely\n - Sessions are properly closed and cleaned up\n ";
|