@webiny/api-page-builder-import-export 0.0.0-unstable.5e7233243f → 0.0.0-unstable.6e5425ee89

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 (39) hide show
  1. package/client.js +6 -16
  2. package/client.js.map +1 -1
  3. package/exportPages/combine/index.js +11 -19
  4. package/exportPages/combine/index.js.map +1 -1
  5. package/exportPages/process/index.js +19 -35
  6. package/exportPages/process/index.js.map +1 -1
  7. package/exportPages/s3Stream.js +4 -25
  8. package/exportPages/s3Stream.js.map +1 -1
  9. package/exportPages/utils.js +19 -32
  10. package/exportPages/utils.js.map +1 -1
  11. package/exportPages/zipper.js +31 -45
  12. package/exportPages/zipper.js.map +1 -1
  13. package/graphql/crud/pageImportExportTasks.crud.js +34 -75
  14. package/graphql/crud/pageImportExportTasks.crud.js.map +1 -1
  15. package/graphql/crud/pages.crud.js +22 -40
  16. package/graphql/crud/pages.crud.js.map +1 -1
  17. package/graphql/crud.js +1 -6
  18. package/graphql/crud.js.map +1 -1
  19. package/graphql/graphql/pageImportExportTasks.gql.js +2 -7
  20. package/graphql/graphql/pageImportExportTasks.gql.js.map +1 -1
  21. package/graphql/graphql/pages.gql.js +2 -7
  22. package/graphql/graphql/pages.gql.js.map +1 -1
  23. package/graphql/graphql/utils/resolve.js +0 -3
  24. package/graphql/graphql/utils/resolve.js.map +1 -1
  25. package/graphql/graphql.js +1 -5
  26. package/graphql/graphql.js.map +1 -1
  27. package/graphql/index.js +1 -6
  28. package/graphql/index.js.map +1 -1
  29. package/importPages/create/index.js +9 -20
  30. package/importPages/create/index.js.map +1 -1
  31. package/importPages/process/index.js +24 -29
  32. package/importPages/process/index.js.map +1 -1
  33. package/importPages/utils.js +45 -127
  34. package/importPages/utils.js.map +1 -1
  35. package/mockSecurity.js +0 -2
  36. package/mockSecurity.js.map +1 -1
  37. package/package.json +27 -27
  38. package/types.js +0 -5
  39. package/types.js.map +1 -1
@@ -4,19 +4,12 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _types = require("../../types");
9
-
10
8
  var _utils = require("../utils");
11
-
12
9
  var _client = require("../../client");
13
-
14
10
  var _mockSecurity = require("../../mockSecurity");
15
-
16
11
  var _utils2 = require("@webiny/utils");
17
-
18
12
  var _handlerAws = require("@webiny/handler-aws");
19
-
20
13
  var _default = configuration => {
21
14
  return (0, _handlerAws.createRawEventHandler)(async ({
22
15
  payload,
@@ -34,22 +27,22 @@ var _default = configuration => {
34
27
  taskId,
35
28
  subTaskIndex,
36
29
  identity
37
- } = payload; // Disable authorization; this is necessary because we call Page Builder CRUD methods which include authorization checks
30
+ } = payload;
31
+ // Disable authorization; this is necessary because we call Page Builder CRUD methods which include authorization checks
38
32
  // and this Lambda is invoked internally, without credentials.
39
-
40
33
  (0, _mockSecurity.mockSecurity)(identity, context);
41
-
42
34
  try {
43
35
  /*
44
36
  * Note: We're not going to DB for getting next sub-task to process,
45
37
  * because the data might be out of sync due to GSI eventual consistency.
46
38
  */
39
+
47
40
  subTask = await pageBuilder.pageImportExportTask.getSubTask(taskId, (0, _utils2.zeroPad)(subTaskIndex, 5));
41
+
48
42
  /**
49
43
  * Base condition!!
50
44
  * Bail out early, if task not found or task's status is not "pending".
51
45
  */
52
-
53
46
  if (!subTask || subTask.status !== _types.PageImportExportTaskStatus.PENDING) {
54
47
  noPendingTask = true;
55
48
  return {
@@ -59,7 +52,6 @@ var _default = configuration => {
59
52
  } else {
60
53
  noPendingTask = false;
61
54
  }
62
-
63
55
  prevStatusOfSubTask = subTask.status;
64
56
  log(`Fetched sub task => ${subTask.id}`);
65
57
  const {
@@ -71,35 +63,41 @@ var _default = configuration => {
71
63
  const {
72
64
  fileUploadsData
73
65
  } = input;
74
- log(`Processing page key "${pageKey}"`); // Mark task status as PROCESSING
66
+ log(`Processing page key "${pageKey}"`);
75
67
 
68
+ // Mark task status as PROCESSING
76
69
  subTask = await pageBuilder.pageImportExportTask.updateSubTask(taskId, subTask.id, {
77
70
  status: _types.PageImportExportTaskStatus.PROCESSING
78
- }); // Update stats in main task
79
-
71
+ });
72
+ // Update stats in main task
80
73
  await pageBuilder.pageImportExportTask.updateStats(taskId, {
81
74
  prevStatus: prevStatusOfSubTask,
82
75
  nextStatus: _types.PageImportExportTaskStatus.PROCESSING
83
76
  });
84
- prevStatusOfSubTask = subTask.status; // Real job
77
+ prevStatusOfSubTask = subTask.status;
85
78
 
79
+ // Real job
86
80
  const page = await (0, _utils.importPage)({
87
81
  context,
88
82
  pageKey,
89
83
  key: zipFileKey,
90
84
  fileUploadsData
91
- }); // Create a page
85
+ });
92
86
 
93
- let pbPage = await context.pageBuilder.createPage(category); // Update page with data
87
+ // Create a page
88
+ let pbPage = await context.pageBuilder.createPage(category);
94
89
 
90
+ // Update page with data
95
91
  pbPage = await context.pageBuilder.updatePage(pbPage.id, {
96
92
  content: page.content,
97
93
  title: page.title,
98
94
  path: page.path,
99
95
  settings: page.settings
100
- }); // TODO: Publish page
101
- // Update task record in DB
96
+ });
102
97
 
98
+ // TODO: Publish page
99
+
100
+ // Update task record in DB
103
101
  subTask = await pageBuilder.pageImportExportTask.updateSubTask(taskId, subTask.id, {
104
102
  status: _types.PageImportExportTaskStatus.COMPLETED,
105
103
  data: {
@@ -111,8 +109,8 @@ var _default = configuration => {
111
109
  status: pbPage.status
112
110
  }
113
111
  }
114
- }); // Update stats in main task
115
-
112
+ });
113
+ // Update stats in main task
116
114
  await pageBuilder.pageImportExportTask.updateStats(taskId, {
117
115
  prevStatus: prevStatusOfSubTask,
118
116
  nextStatus: _types.PageImportExportTaskStatus.COMPLETED
@@ -120,7 +118,6 @@ var _default = configuration => {
120
118
  prevStatusOfSubTask = subTask.status;
121
119
  } catch (e) {
122
120
  log("[IMPORT_PAGES_PROCESS] Error => ", e);
123
-
124
121
  if (subTask && subTask.id) {
125
122
  /**
126
123
  * In case of error, we'll update the task status to "failed",
@@ -134,15 +131,15 @@ var _default = configuration => {
134
131
  stack: e.stack,
135
132
  code: "IMPORT_FAILED"
136
133
  }
137
- }); // Update stats in main task
134
+ });
138
135
 
136
+ // Update stats in main task
139
137
  await pageBuilder.pageImportExportTask.updateStats(taskId, {
140
138
  prevStatus: prevStatusOfSubTask,
141
139
  nextStatus: _types.PageImportExportTaskStatus.FAILED
142
140
  });
143
141
  prevStatusOfSubTask = subTask.status;
144
142
  }
145
-
146
143
  return {
147
144
  data: null,
148
145
  error: {
@@ -160,8 +157,8 @@ var _default = configuration => {
160
157
  }
161
158
  });
162
159
  } else {
163
- log(`Invoking PROCESS for task "${subTaskIndex + 1}"`); // We want to continue with Self invocation no matter if current page error out.
164
-
160
+ log(`Invoking PROCESS for task "${subTaskIndex + 1}"`);
161
+ // We want to continue with Self invocation no matter if current page error out.
165
162
  await (0, _client.invokeHandlerClient)({
166
163
  context,
167
164
  name: configuration.handlers.process,
@@ -174,12 +171,10 @@ var _default = configuration => {
174
171
  });
175
172
  }
176
173
  }
177
-
178
174
  return {
179
175
  data: "",
180
176
  error: null
181
177
  };
182
178
  });
183
179
  };
184
-
185
180
  exports.default = _default;
@@ -1 +1 @@
1
- {"version":3,"names":["configuration","createRawEventHandler","payload","context","log","console","subTask","noPendingTask","prevStatusOfSubTask","PageImportExportTaskStatus","PENDING","pageBuilder","taskId","subTaskIndex","identity","mockSecurity","pageImportExportTask","getSubTask","zeroPad","status","data","error","id","pageKey","category","zipFileKey","input","fileUploadsData","updateSubTask","PROCESSING","updateStats","prevStatus","nextStatus","page","importPage","key","pbPage","createPage","updatePage","content","title","path","settings","COMPLETED","message","version","e","FAILED","name","stack","code","updateTask","invokeHandlerClient","handlers","process","security","getIdentity","description"],"sources":["index.ts"],"sourcesContent":["import { PageImportExportTaskStatus, PbPageImportExportContext } from \"~/types\";\nimport { importPage } from \"~/importPages/utils\";\nimport { invokeHandlerClient } from \"~/client\";\nimport { SecurityIdentity } from \"@webiny/api-security/types\";\nimport { mockSecurity } from \"~/mockSecurity\";\nimport { zeroPad } from \"@webiny/utils\";\nimport { createRawEventHandler } from \"@webiny/handler-aws\";\n\ninterface Configuration {\n handlers: {\n process: string;\n };\n}\n\nexport interface Payload {\n taskId: string;\n subTaskIndex: number;\n identity: SecurityIdentity;\n}\n\nexport interface Response {\n data: string | null;\n error: Partial<Error> | null;\n}\n\nexport default (configuration: Configuration) => {\n return createRawEventHandler<Payload, PbPageImportExportContext, Response>(\n async ({ payload, context }) => {\n const log = console.log;\n let subTask;\n let noPendingTask = true;\n let prevStatusOfSubTask = PageImportExportTaskStatus.PENDING;\n\n log(\"RUNNING Import Page Queue Process\");\n const { pageBuilder } = context;\n const { taskId, subTaskIndex, identity } = payload;\n // Disable authorization; this is necessary because we call Page Builder CRUD methods which include authorization checks\n // and this Lambda is invoked internally, without credentials.\n mockSecurity(identity, context);\n\n try {\n /*\n * Note: We're not going to DB for getting next sub-task to process,\n * because the data might be out of sync due to GSI eventual consistency.\n */\n\n subTask = await pageBuilder.pageImportExportTask.getSubTask(\n taskId,\n zeroPad(subTaskIndex, 5)\n );\n\n /**\n * Base condition!!\n * Bail out early, if task not found or task's status is not \"pending\".\n */\n if (!subTask || subTask.status !== PageImportExportTaskStatus.PENDING) {\n noPendingTask = true;\n return {\n data: \"\",\n error: null\n };\n } else {\n noPendingTask = false;\n }\n prevStatusOfSubTask = subTask.status;\n\n log(`Fetched sub task => ${subTask.id}`);\n\n const { pageKey, category, zipFileKey, input } = subTask.data;\n const { fileUploadsData } = input;\n\n log(`Processing page key \"${pageKey}\"`);\n\n // Mark task status as PROCESSING\n subTask = await pageBuilder.pageImportExportTask.updateSubTask(taskId, subTask.id, {\n status: PageImportExportTaskStatus.PROCESSING\n });\n // Update stats in main task\n await pageBuilder.pageImportExportTask.updateStats(taskId, {\n prevStatus: prevStatusOfSubTask,\n nextStatus: PageImportExportTaskStatus.PROCESSING\n });\n prevStatusOfSubTask = subTask.status;\n\n // Real job\n const page = await importPage({\n context,\n pageKey,\n key: zipFileKey,\n fileUploadsData\n });\n\n // Create a page\n let pbPage = await context.pageBuilder.createPage(category);\n\n // Update page with data\n pbPage = await context.pageBuilder.updatePage(pbPage.id, {\n content: page.content,\n title: page.title,\n path: page.path,\n settings: page.settings\n });\n\n // TODO: Publish page\n\n // Update task record in DB\n subTask = await pageBuilder.pageImportExportTask.updateSubTask(taskId, subTask.id, {\n status: PageImportExportTaskStatus.COMPLETED,\n data: {\n message: \"Done\",\n page: {\n id: pbPage.id,\n title: pbPage.title,\n version: pbPage.version,\n status: pbPage.status\n }\n }\n });\n // Update stats in main task\n await pageBuilder.pageImportExportTask.updateStats(taskId, {\n prevStatus: prevStatusOfSubTask,\n nextStatus: PageImportExportTaskStatus.COMPLETED\n });\n prevStatusOfSubTask = subTask.status;\n } catch (e) {\n log(\"[IMPORT_PAGES_PROCESS] Error => \", e);\n\n if (subTask && subTask.id) {\n /**\n * In case of error, we'll update the task status to \"failed\",\n * so that, client can show notify the user appropriately.\n */\n subTask = await pageBuilder.pageImportExportTask.updateSubTask(\n taskId,\n subTask.id,\n {\n status: PageImportExportTaskStatus.FAILED,\n error: {\n name: e.name,\n message: e.message,\n stack: e.stack,\n code: \"IMPORT_FAILED\"\n }\n }\n );\n\n // Update stats in main task\n await pageBuilder.pageImportExportTask.updateStats(taskId, {\n prevStatus: prevStatusOfSubTask,\n nextStatus: PageImportExportTaskStatus.FAILED\n });\n prevStatusOfSubTask = subTask.status;\n }\n\n return {\n data: null,\n error: {\n message: e.message\n }\n };\n } finally {\n // Base condition!\n if (noPendingTask) {\n log(`No pending sub-task for task ${taskId}`);\n\n await pageBuilder.pageImportExportTask.updateTask(taskId, {\n status: PageImportExportTaskStatus.COMPLETED,\n data: {\n message: `Finish importing pages.`\n }\n });\n } else {\n log(`Invoking PROCESS for task \"${subTaskIndex + 1}\"`);\n // We want to continue with Self invocation no matter if current page error out.\n await invokeHandlerClient<Payload>({\n context,\n name: configuration.handlers.process,\n payload: {\n taskId,\n subTaskIndex: subTaskIndex + 1,\n identity: context.security.getIdentity()\n },\n description: \"Import pages - process - subtask\"\n });\n }\n }\n return {\n data: \"\",\n error: null\n };\n }\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["configuration","createRawEventHandler","payload","context","log","console","subTask","noPendingTask","prevStatusOfSubTask","PageImportExportTaskStatus","PENDING","pageBuilder","taskId","subTaskIndex","identity","mockSecurity","pageImportExportTask","getSubTask","zeroPad","status","data","error","id","pageKey","category","zipFileKey","input","fileUploadsData","updateSubTask","PROCESSING","updateStats","prevStatus","nextStatus","page","importPage","key","pbPage","createPage","updatePage","content","title","path","settings","COMPLETED","message","version","e","FAILED","name","stack","code","updateTask","invokeHandlerClient","handlers","process","security","getIdentity","description"],"sources":["index.ts"],"sourcesContent":["import { PageImportExportTaskStatus, PbPageImportExportContext } from \"~/types\";\nimport { importPage } from \"~/importPages/utils\";\nimport { invokeHandlerClient } from \"~/client\";\nimport { SecurityIdentity } from \"@webiny/api-security/types\";\nimport { mockSecurity } from \"~/mockSecurity\";\nimport { zeroPad } from \"@webiny/utils\";\nimport { createRawEventHandler } from \"@webiny/handler-aws\";\n\ninterface Configuration {\n handlers: {\n process: string;\n };\n}\n\nexport interface Payload {\n taskId: string;\n subTaskIndex: number;\n identity: SecurityIdentity;\n}\n\nexport interface Response {\n data: string | null;\n error: Partial<Error> | null;\n}\n\nexport default (configuration: Configuration) => {\n return createRawEventHandler<Payload, PbPageImportExportContext, Response>(\n async ({ payload, context }) => {\n const log = console.log;\n let subTask;\n let noPendingTask = true;\n let prevStatusOfSubTask = PageImportExportTaskStatus.PENDING;\n\n log(\"RUNNING Import Page Queue Process\");\n const { pageBuilder } = context;\n const { taskId, subTaskIndex, identity } = payload;\n // Disable authorization; this is necessary because we call Page Builder CRUD methods which include authorization checks\n // and this Lambda is invoked internally, without credentials.\n mockSecurity(identity, context);\n\n try {\n /*\n * Note: We're not going to DB for getting next sub-task to process,\n * because the data might be out of sync due to GSI eventual consistency.\n */\n\n subTask = await pageBuilder.pageImportExportTask.getSubTask(\n taskId,\n zeroPad(subTaskIndex, 5)\n );\n\n /**\n * Base condition!!\n * Bail out early, if task not found or task's status is not \"pending\".\n */\n if (!subTask || subTask.status !== PageImportExportTaskStatus.PENDING) {\n noPendingTask = true;\n return {\n data: \"\",\n error: null\n };\n } else {\n noPendingTask = false;\n }\n prevStatusOfSubTask = subTask.status;\n\n log(`Fetched sub task => ${subTask.id}`);\n\n const { pageKey, category, zipFileKey, input } = subTask.data;\n const { fileUploadsData } = input;\n\n log(`Processing page key \"${pageKey}\"`);\n\n // Mark task status as PROCESSING\n subTask = await pageBuilder.pageImportExportTask.updateSubTask(taskId, subTask.id, {\n status: PageImportExportTaskStatus.PROCESSING\n });\n // Update stats in main task\n await pageBuilder.pageImportExportTask.updateStats(taskId, {\n prevStatus: prevStatusOfSubTask,\n nextStatus: PageImportExportTaskStatus.PROCESSING\n });\n prevStatusOfSubTask = subTask.status;\n\n // Real job\n const page = await importPage({\n context,\n pageKey,\n key: zipFileKey,\n fileUploadsData\n });\n\n // Create a page\n let pbPage = await context.pageBuilder.createPage(category);\n\n // Update page with data\n pbPage = await context.pageBuilder.updatePage(pbPage.id, {\n content: page.content,\n title: page.title,\n path: page.path,\n settings: page.settings\n });\n\n // TODO: Publish page\n\n // Update task record in DB\n subTask = await pageBuilder.pageImportExportTask.updateSubTask(taskId, subTask.id, {\n status: PageImportExportTaskStatus.COMPLETED,\n data: {\n message: \"Done\",\n page: {\n id: pbPage.id,\n title: pbPage.title,\n version: pbPage.version,\n status: pbPage.status\n }\n }\n });\n // Update stats in main task\n await pageBuilder.pageImportExportTask.updateStats(taskId, {\n prevStatus: prevStatusOfSubTask,\n nextStatus: PageImportExportTaskStatus.COMPLETED\n });\n prevStatusOfSubTask = subTask.status;\n } catch (e) {\n log(\"[IMPORT_PAGES_PROCESS] Error => \", e);\n\n if (subTask && subTask.id) {\n /**\n * In case of error, we'll update the task status to \"failed\",\n * so that, client can show notify the user appropriately.\n */\n subTask = await pageBuilder.pageImportExportTask.updateSubTask(\n taskId,\n subTask.id,\n {\n status: PageImportExportTaskStatus.FAILED,\n error: {\n name: e.name,\n message: e.message,\n stack: e.stack,\n code: \"IMPORT_FAILED\"\n }\n }\n );\n\n // Update stats in main task\n await pageBuilder.pageImportExportTask.updateStats(taskId, {\n prevStatus: prevStatusOfSubTask,\n nextStatus: PageImportExportTaskStatus.FAILED\n });\n prevStatusOfSubTask = subTask.status;\n }\n\n return {\n data: null,\n error: {\n message: e.message\n }\n };\n } finally {\n // Base condition!\n if (noPendingTask) {\n log(`No pending sub-task for task ${taskId}`);\n\n await pageBuilder.pageImportExportTask.updateTask(taskId, {\n status: PageImportExportTaskStatus.COMPLETED,\n data: {\n message: `Finish importing pages.`\n }\n });\n } else {\n log(`Invoking PROCESS for task \"${subTaskIndex + 1}\"`);\n // We want to continue with Self invocation no matter if current page error out.\n await invokeHandlerClient<Payload>({\n context,\n name: configuration.handlers.process,\n payload: {\n taskId,\n subTaskIndex: subTaskIndex + 1,\n identity: context.security.getIdentity()\n },\n description: \"Import pages - process - subtask\"\n });\n }\n }\n return {\n data: \"\",\n error: null\n };\n }\n );\n};\n"],"mappings":";;;;;;AAAA;AACA;AACA;AAEA;AACA;AACA;AAA4D,eAmB5CA,aAA4B,IAAK;EAC7C,OAAO,IAAAC,iCAAqB,EACxB,OAAO;IAAEC,OAAO;IAAEC;EAAQ,CAAC,KAAK;IAC5B,MAAMC,GAAG,GAAGC,OAAO,CAACD,GAAG;IACvB,IAAIE,OAAO;IACX,IAAIC,aAAa,GAAG,IAAI;IACxB,IAAIC,mBAAmB,GAAGC,iCAA0B,CAACC,OAAO;IAE5DN,GAAG,CAAC,mCAAmC,CAAC;IACxC,MAAM;MAAEO;IAAY,CAAC,GAAGR,OAAO;IAC/B,MAAM;MAAES,MAAM;MAAEC,YAAY;MAAEC;IAAS,CAAC,GAAGZ,OAAO;IAClD;IACA;IACA,IAAAa,0BAAY,EAACD,QAAQ,EAAEX,OAAO,CAAC;IAE/B,IAAI;MACA;AAChB;AACA;AACA;;MAEgBG,OAAO,GAAG,MAAMK,WAAW,CAACK,oBAAoB,CAACC,UAAU,CACvDL,MAAM,EACN,IAAAM,eAAO,EAACL,YAAY,EAAE,CAAC,CAAC,CAC3B;;MAED;AAChB;AACA;AACA;MACgB,IAAI,CAACP,OAAO,IAAIA,OAAO,CAACa,MAAM,KAAKV,iCAA0B,CAACC,OAAO,EAAE;QACnEH,aAAa,GAAG,IAAI;QACpB,OAAO;UACHa,IAAI,EAAE,EAAE;UACRC,KAAK,EAAE;QACX,CAAC;MACL,CAAC,MAAM;QACHd,aAAa,GAAG,KAAK;MACzB;MACAC,mBAAmB,GAAGF,OAAO,CAACa,MAAM;MAEpCf,GAAG,CAAE,uBAAsBE,OAAO,CAACgB,EAAG,EAAC,CAAC;MAExC,MAAM;QAAEC,OAAO;QAAEC,QAAQ;QAAEC,UAAU;QAAEC;MAAM,CAAC,GAAGpB,OAAO,CAACc,IAAI;MAC7D,MAAM;QAAEO;MAAgB,CAAC,GAAGD,KAAK;MAEjCtB,GAAG,CAAE,wBAAuBmB,OAAQ,GAAE,CAAC;;MAEvC;MACAjB,OAAO,GAAG,MAAMK,WAAW,CAACK,oBAAoB,CAACY,aAAa,CAAChB,MAAM,EAAEN,OAAO,CAACgB,EAAE,EAAE;QAC/EH,MAAM,EAAEV,iCAA0B,CAACoB;MACvC,CAAC,CAAC;MACF;MACA,MAAMlB,WAAW,CAACK,oBAAoB,CAACc,WAAW,CAAClB,MAAM,EAAE;QACvDmB,UAAU,EAAEvB,mBAAmB;QAC/BwB,UAAU,EAAEvB,iCAA0B,CAACoB;MAC3C,CAAC,CAAC;MACFrB,mBAAmB,GAAGF,OAAO,CAACa,MAAM;;MAEpC;MACA,MAAMc,IAAI,GAAG,MAAM,IAAAC,iBAAU,EAAC;QAC1B/B,OAAO;QACPoB,OAAO;QACPY,GAAG,EAAEV,UAAU;QACfE;MACJ,CAAC,CAAC;;MAEF;MACA,IAAIS,MAAM,GAAG,MAAMjC,OAAO,CAACQ,WAAW,CAAC0B,UAAU,CAACb,QAAQ,CAAC;;MAE3D;MACAY,MAAM,GAAG,MAAMjC,OAAO,CAACQ,WAAW,CAAC2B,UAAU,CAACF,MAAM,CAACd,EAAE,EAAE;QACrDiB,OAAO,EAAEN,IAAI,CAACM,OAAO;QACrBC,KAAK,EAAEP,IAAI,CAACO,KAAK;QACjBC,IAAI,EAAER,IAAI,CAACQ,IAAI;QACfC,QAAQ,EAAET,IAAI,CAACS;MACnB,CAAC,CAAC;;MAEF;;MAEA;MACApC,OAAO,GAAG,MAAMK,WAAW,CAACK,oBAAoB,CAACY,aAAa,CAAChB,MAAM,EAAEN,OAAO,CAACgB,EAAE,EAAE;QAC/EH,MAAM,EAAEV,iCAA0B,CAACkC,SAAS;QAC5CvB,IAAI,EAAE;UACFwB,OAAO,EAAE,MAAM;UACfX,IAAI,EAAE;YACFX,EAAE,EAAEc,MAAM,CAACd,EAAE;YACbkB,KAAK,EAAEJ,MAAM,CAACI,KAAK;YACnBK,OAAO,EAAET,MAAM,CAACS,OAAO;YACvB1B,MAAM,EAAEiB,MAAM,CAACjB;UACnB;QACJ;MACJ,CAAC,CAAC;MACF;MACA,MAAMR,WAAW,CAACK,oBAAoB,CAACc,WAAW,CAAClB,MAAM,EAAE;QACvDmB,UAAU,EAAEvB,mBAAmB;QAC/BwB,UAAU,EAAEvB,iCAA0B,CAACkC;MAC3C,CAAC,CAAC;MACFnC,mBAAmB,GAAGF,OAAO,CAACa,MAAM;IACxC,CAAC,CAAC,OAAO2B,CAAC,EAAE;MACR1C,GAAG,CAAC,kCAAkC,EAAE0C,CAAC,CAAC;MAE1C,IAAIxC,OAAO,IAAIA,OAAO,CAACgB,EAAE,EAAE;QACvB;AACpB;AACA;AACA;QACoBhB,OAAO,GAAG,MAAMK,WAAW,CAACK,oBAAoB,CAACY,aAAa,CAC1DhB,MAAM,EACNN,OAAO,CAACgB,EAAE,EACV;UACIH,MAAM,EAAEV,iCAA0B,CAACsC,MAAM;UACzC1B,KAAK,EAAE;YACH2B,IAAI,EAAEF,CAAC,CAACE,IAAI;YACZJ,OAAO,EAAEE,CAAC,CAACF,OAAO;YAClBK,KAAK,EAAEH,CAAC,CAACG,KAAK;YACdC,IAAI,EAAE;UACV;QACJ,CAAC,CACJ;;QAED;QACA,MAAMvC,WAAW,CAACK,oBAAoB,CAACc,WAAW,CAAClB,MAAM,EAAE;UACvDmB,UAAU,EAAEvB,mBAAmB;UAC/BwB,UAAU,EAAEvB,iCAA0B,CAACsC;QAC3C,CAAC,CAAC;QACFvC,mBAAmB,GAAGF,OAAO,CAACa,MAAM;MACxC;MAEA,OAAO;QACHC,IAAI,EAAE,IAAI;QACVC,KAAK,EAAE;UACHuB,OAAO,EAAEE,CAAC,CAACF;QACf;MACJ,CAAC;IACL,CAAC,SAAS;MACN;MACA,IAAIrC,aAAa,EAAE;QACfH,GAAG,CAAE,gCAA+BQ,MAAO,EAAC,CAAC;QAE7C,MAAMD,WAAW,CAACK,oBAAoB,CAACmC,UAAU,CAACvC,MAAM,EAAE;UACtDO,MAAM,EAAEV,iCAA0B,CAACkC,SAAS;UAC5CvB,IAAI,EAAE;YACFwB,OAAO,EAAG;UACd;QACJ,CAAC,CAAC;MACN,CAAC,MAAM;QACHxC,GAAG,CAAE,8BAA6BS,YAAY,GAAG,CAAE,GAAE,CAAC;QACtD;QACA,MAAM,IAAAuC,2BAAmB,EAAU;UAC/BjD,OAAO;UACP6C,IAAI,EAAEhD,aAAa,CAACqD,QAAQ,CAACC,OAAO;UACpCpD,OAAO,EAAE;YACLU,MAAM;YACNC,YAAY,EAAEA,YAAY,GAAG,CAAC;YAC9BC,QAAQ,EAAEX,OAAO,CAACoD,QAAQ,CAACC,WAAW;UAC1C,CAAC;UACDC,WAAW,EAAE;QACjB,CAAC,CAAC;MACN;IACJ;IACA,OAAO;MACHrC,IAAI,EAAE,EAAE;MACRC,KAAK,EAAE;IACX,CAAC;EACL,CAAC,CACJ;AACL,CAAC;AAAA"}