@frogbotai/piece-linear 0.22.0 → 0.23.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 (78) hide show
  1. package/README.md +111 -0
  2. package/dist/actions/createComment.d.ts +48 -0
  3. package/dist/actions/createComment.d.ts.map +1 -0
  4. package/dist/actions/createComment.js +22 -0
  5. package/dist/actions/createComment.js.map +1 -0
  6. package/dist/actions/createIssue.d.ts +79 -0
  7. package/dist/actions/createIssue.d.ts.map +1 -0
  8. package/dist/actions/createIssue.js +37 -0
  9. package/dist/actions/createIssue.js.map +1 -0
  10. package/dist/actions/createProject.d.ts +49 -0
  11. package/dist/actions/createProject.d.ts.map +1 -0
  12. package/dist/actions/createProject.js +32 -0
  13. package/dist/actions/createProject.js.map +1 -0
  14. package/dist/actions/options.d.ts +35 -0
  15. package/dist/actions/options.d.ts.map +1 -0
  16. package/dist/actions/options.js +27 -0
  17. package/dist/actions/options.js.map +1 -0
  18. package/dist/actions/rawGraphqlQuery.d.ts +20 -0
  19. package/dist/actions/rawGraphqlQuery.d.ts.map +1 -0
  20. package/dist/actions/rawGraphqlQuery.js +16 -0
  21. package/dist/actions/rawGraphqlQuery.js.map +1 -0
  22. package/dist/actions/updateIssue.d.ts +88 -0
  23. package/dist/actions/updateIssue.d.ts.map +1 -0
  24. package/dist/actions/updateIssue.js +39 -0
  25. package/dist/actions/updateIssue.js.map +1 -0
  26. package/dist/actions/updateProject.d.ts +57 -0
  27. package/dist/actions/updateProject.d.ts.map +1 -0
  28. package/dist/actions/updateProject.js +33 -0
  29. package/dist/actions/updateProject.js.map +1 -0
  30. package/dist/client.d.ts +6 -0
  31. package/dist/client.d.ts.map +1 -0
  32. package/dist/client.js +9 -0
  33. package/dist/client.js.map +1 -0
  34. package/dist/config.d.ts +20 -0
  35. package/dist/config.d.ts.map +1 -0
  36. package/dist/config.js +25 -0
  37. package/dist/config.js.map +1 -0
  38. package/dist/index.d.ts +456 -15
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +107 -30
  41. package/dist/index.js.map +1 -1
  42. package/dist/triggers/commentCreated.d.ts +12 -0
  43. package/dist/triggers/commentCreated.d.ts.map +1 -0
  44. package/dist/triggers/commentCreated.js +17 -0
  45. package/dist/triggers/commentCreated.js.map +1 -0
  46. package/dist/triggers/issueCreated.d.ts +11 -0
  47. package/dist/triggers/issueCreated.d.ts.map +1 -0
  48. package/dist/triggers/issueCreated.js +10 -0
  49. package/dist/triggers/issueCreated.js.map +1 -0
  50. package/dist/triggers/issueRemoved.d.ts +11 -0
  51. package/dist/triggers/issueRemoved.d.ts.map +1 -0
  52. package/dist/triggers/issueRemoved.js +10 -0
  53. package/dist/triggers/issueRemoved.js.map +1 -0
  54. package/dist/triggers/issueUpdated.d.ts +11 -0
  55. package/dist/triggers/issueUpdated.d.ts.map +1 -0
  56. package/dist/triggers/issueUpdated.js +10 -0
  57. package/dist/triggers/issueUpdated.js.map +1 -0
  58. package/dist/triggers/projectCreated.d.ts +9 -0
  59. package/dist/triggers/projectCreated.d.ts.map +1 -0
  60. package/dist/triggers/projectCreated.js +9 -0
  61. package/dist/triggers/projectCreated.js.map +1 -0
  62. package/dist/triggers/projectRemoved.d.ts +9 -0
  63. package/dist/triggers/projectRemoved.d.ts.map +1 -0
  64. package/dist/triggers/projectRemoved.js +9 -0
  65. package/dist/triggers/projectRemoved.js.map +1 -0
  66. package/dist/triggers/projectUpdated.d.ts +12 -0
  67. package/dist/triggers/projectUpdated.d.ts.map +1 -0
  68. package/dist/triggers/projectUpdated.js +15 -0
  69. package/dist/triggers/projectUpdated.js.map +1 -0
  70. package/dist/triggers/webhook.d.ts +34 -0
  71. package/dist/triggers/webhook.d.ts.map +1 -0
  72. package/dist/triggers/webhook.js +52 -0
  73. package/dist/triggers/webhook.js.map +1 -0
  74. package/dist/webhook.d.ts +4 -0
  75. package/dist/webhook.d.ts.map +1 -0
  76. package/dist/webhook.js +33 -0
  77. package/dist/webhook.js.map +1 -0
  78. package/package.json +6 -4
@@ -0,0 +1,39 @@
1
+ import { z } from 'zod';
2
+ import { teamId } from '../config.js';
3
+ import { priorities, teamOptions, teams, users } from './options.js';
4
+ const inputSchema = z.object({
5
+ teamId,
6
+ issueId: z.string(),
7
+ title: z.string().optional(),
8
+ description: z.string().optional(),
9
+ stateId: z.string().optional(),
10
+ labelIds: z.array(z.string()).optional(),
11
+ assigneeId: z.string().optional(),
12
+ priority: z.number().int().min(0).max(4).optional(),
13
+ });
14
+ const output = z.object({ success: z.boolean(), lastSyncId: z.number().optional() }).passthrough();
15
+ export const updateIssue = {
16
+ slug: 'updateIssue',
17
+ description: 'Update an existing Linear issue.',
18
+ input: inputSchema,
19
+ output,
20
+ idempotent: true,
21
+ options: {
22
+ teamId: teams,
23
+ issueId: teamOptions('issues'),
24
+ stateId: teamOptions('workflowStates'),
25
+ labelIds: teamOptions('issueLabels'),
26
+ assigneeId: users,
27
+ priority: priorities,
28
+ },
29
+ async run({ client, input }) {
30
+ const { teamId: _, issueId, ...fields } = input;
31
+ const response = await client.updateIssue(issueId, fields);
32
+ return {
33
+ success: response.success,
34
+ lastSyncId: response.lastSyncId,
35
+ issue: { id: response.issueId },
36
+ };
37
+ },
38
+ };
39
+ //# sourceMappingURL=updateIssue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateIssue.js","sourceRoot":"","sources":["../../src/actions/updateIssue.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAErE,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,MAAM;IACN,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACxC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACpD,CAAC,CAAC;AACH,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AAEnG,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,kCAAkC;IAC/C,KAAK,EAAE,WAAW;IAClB,MAAM;IACN,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE;QACP,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC;QAC9B,OAAO,EAAE,WAAW,CAAC,gBAAgB,CAAC;QACtC,QAAQ,EAAE,WAAW,CAAC,aAAa,CAAC;QACpC,UAAU,EAAE,KAAK;QACjB,QAAQ,EAAE,UAAU;KACrB;IACD,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,EAA8D;QACrF,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,KAAK,CAAC;QAChD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC3D,OAAO;YACL,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,KAAK,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,OAAO,EAAE;SAChC,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -0,0 +1,57 @@
1
+ import { type PieceRunArgs } from 'frogbot/pieces';
2
+ import { z } from 'zod';
3
+ import type { Linear } from '../client.js';
4
+ declare const inputSchema: z.ZodObject<{
5
+ teamId: z.ZodString;
6
+ projectId: z.ZodString;
7
+ name: z.ZodString;
8
+ description: z.ZodOptional<z.ZodString>;
9
+ icon: z.ZodOptional<z.ZodString>;
10
+ color: z.ZodOptional<z.ZodString>;
11
+ startDate: z.ZodOptional<z.ZodString>;
12
+ targetDate: z.ZodOptional<z.ZodString>;
13
+ statusId: z.ZodOptional<z.ZodString>;
14
+ }, z.core.$strip>;
15
+ export declare const updateProject: {
16
+ slug: string;
17
+ description: string;
18
+ input: z.ZodObject<{
19
+ teamId: z.ZodString;
20
+ projectId: z.ZodString;
21
+ name: z.ZodString;
22
+ description: z.ZodOptional<z.ZodString>;
23
+ icon: z.ZodOptional<z.ZodString>;
24
+ color: z.ZodOptional<z.ZodString>;
25
+ startDate: z.ZodOptional<z.ZodString>;
26
+ targetDate: z.ZodOptional<z.ZodString>;
27
+ statusId: z.ZodOptional<z.ZodString>;
28
+ }, z.core.$strip>;
29
+ output: z.ZodObject<{
30
+ success: z.ZodBoolean;
31
+ lastSyncId: z.ZodOptional<z.ZodNumber>;
32
+ }, z.core.$loose>;
33
+ idempotent: boolean;
34
+ options: {
35
+ teamId: ({ client }: {
36
+ client: Linear;
37
+ }) => Promise<{
38
+ label: string;
39
+ value: string;
40
+ }[]>;
41
+ projectId: ({ client }: {
42
+ client: Linear;
43
+ }) => Promise<{
44
+ label: string;
45
+ value: string;
46
+ }[]>;
47
+ };
48
+ run({ client, input }: PieceRunArgs<z.output<typeof inputSchema>, object, Linear>): Promise<{
49
+ success: boolean;
50
+ lastSyncId: number;
51
+ project: {
52
+ id: string | undefined;
53
+ };
54
+ }>;
55
+ };
56
+ export {};
57
+ //# sourceMappingURL=updateProject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateProject.d.ts","sourceRoot":"","sources":["../../src/actions/updateProject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAI3C,QAAA,MAAM,WAAW;;;;;;;;;;iBAUf,CAAC;AAGH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAOK,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,WAAW,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC;;;;;;;CASxF,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { z } from 'zod';
2
+ import { teamId } from '../config.js';
3
+ import { projects, teams } from './options.js';
4
+ const inputSchema = z.object({
5
+ teamId,
6
+ projectId: z.string(),
7
+ name: z.string(),
8
+ description: z.string().optional(),
9
+ icon: z.string().optional(),
10
+ color: z.string().optional(),
11
+ startDate: z.string().optional(),
12
+ targetDate: z.string().optional(),
13
+ statusId: z.string().optional(),
14
+ });
15
+ const output = z.object({ success: z.boolean(), lastSyncId: z.number().optional() }).passthrough();
16
+ export const updateProject = {
17
+ slug: 'updateProject',
18
+ description: 'Update an existing Linear project.',
19
+ input: inputSchema,
20
+ output,
21
+ idempotent: true,
22
+ options: { teamId: teams, projectId: projects },
23
+ async run({ client, input }) {
24
+ const { teamId, projectId, ...fields } = input;
25
+ const response = await client.updateProject(projectId, { teamIds: [teamId], ...fields });
26
+ return {
27
+ success: response.success,
28
+ lastSyncId: response.lastSyncId,
29
+ project: { id: response.projectId },
30
+ };
31
+ },
32
+ };
33
+ //# sourceMappingURL=updateProject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateProject.js","sourceRoot":"","sources":["../../src/actions/updateProject.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,MAAM;IACN,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC;AACH,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AAEnG,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,oCAAoC;IACjD,KAAK,EAAE,WAAW;IAClB,MAAM;IACN,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE;IAC/C,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,EAA8D;QACrF,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,GAAG,KAAK,CAAC;QAC/C,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;QACzF,OAAO;YACL,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,OAAO,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,SAAS,EAAE;SACpC,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { LinearClient } from '@linear/sdk';
2
+ export type Linear = LinearClient;
3
+ export declare function createLinearClient({ auth }: {
4
+ auth: unknown;
5
+ }): LinearClient;
6
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,MAAM,MAAM,MAAM,GAAG,YAAY,CAAC;AAElC,wBAAgB,kBAAkB,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,gBAQ7D"}
package/dist/client.js ADDED
@@ -0,0 +1,9 @@
1
+ import { LinearClient } from '@linear/sdk';
2
+ import { linearAuth } from './config.js';
3
+ export function createLinearClient({ auth }) {
4
+ const credential = linearAuth.parse(auth);
5
+ return new LinearClient('apiKey' in credential
6
+ ? { apiKey: credential.apiKey }
7
+ : { accessToken: credential.accessToken });
8
+ }
9
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC,MAAM,UAAU,kBAAkB,CAAC,EAAE,IAAI,EAAqB;IAC5D,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE1C,OAAO,IAAI,YAAY,CACrB,QAAQ,IAAI,UAAU;QACpB,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE;QAC/B,CAAC,CAAC,EAAE,WAAW,EAAE,UAAU,CAAC,WAAW,EAAE,CAC5C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { z } from 'zod';
2
+ export declare const linearAuth: z.ZodPipe<z.ZodObject<{
3
+ apiKey: z.ZodOptional<z.ZodString>;
4
+ accessToken: z.ZodOptional<z.ZodString>;
5
+ }, z.core.$strip>, z.ZodUnion<readonly [z.ZodObject<{
6
+ apiKey: z.ZodString;
7
+ }, z.core.$strip>, z.ZodObject<{
8
+ accessToken: z.ZodString;
9
+ }, z.core.$strip>]>>;
10
+ export declare const linearOptions: z.ZodObject<{
11
+ webhookSecret: z.ZodOptional<z.ZodString>;
12
+ channelMode: z.ZodDefault<z.ZodEnum<{
13
+ "agent-sessions": "agent-sessions";
14
+ comments: "comments";
15
+ }>>;
16
+ botUsername: z.ZodOptional<z.ZodString>;
17
+ }, z.core.$strip>;
18
+ export type LinearOptions = z.output<typeof linearOptions>;
19
+ export declare const teamId: z.ZodString;
20
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAUxB,eAAO,MAAM,UAAU;;;;;;;oBAGoC,CAAC;AAE5D,eAAO,MAAM,aAAa;;;;;;;iBAWxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,aAAa,CAAC,CAAC;AAE3D,eAAO,MAAM,MAAM,aAAqC,CAAC"}
package/dist/config.js ADDED
@@ -0,0 +1,25 @@
1
+ import { z } from 'zod';
2
+ const linearApiKeyAuth = z.object({
3
+ apiKey: z.string().min(1).meta({ label: 'API key', secret: true }),
4
+ });
5
+ const linearAccessTokenAuth = z.object({
6
+ accessToken: z.string().min(1).meta({ label: 'OAuth access token', secret: true }),
7
+ });
8
+ export const linearAuth = linearApiKeyAuth
9
+ .extend(linearAccessTokenAuth.shape)
10
+ .partial()
11
+ .pipe(z.union([linearApiKeyAuth, linearAccessTokenAuth]));
12
+ export const linearOptions = z.object({
13
+ webhookSecret: z
14
+ .string()
15
+ .min(1)
16
+ .meta({ label: 'Webhook signing secret', secret: true })
17
+ .optional(),
18
+ channelMode: z
19
+ .enum(['agent-sessions', 'comments'])
20
+ .default('agent-sessions')
21
+ .meta({ label: 'Channel mode' }),
22
+ botUsername: z.string().min(1).optional().meta({ label: 'Bot username' }),
23
+ });
24
+ export const teamId = z.string().meta({ label: 'Team' });
25
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;CACnE,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;CACnF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,gBAAgB;KACvC,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC;KACnC,OAAO,EAAE;KACT,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAE5D,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,IAAI,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;SACvD,QAAQ,EAAE;IACb,WAAW,EAAE,CAAC;SACX,IAAI,CAAC,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;SACpC,OAAO,CAAC,gBAAgB,CAAC;SACzB,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;IAClC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;CAC1E,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC"}