Files
klz-cables.com/.pnpm-store/v10/files/ef/8351dc7db129eed9586149b7063d140501bb6e1b5cbf84eab4b2455747367bd2204fd4b912f9b5ea37f5ece550787ba1f15acb40b8f2a34cc96042951aa802
Marc Mintel 5397309103
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
fix(products): fix breadcrumbs and product filtering (backport from main)
2026-02-24 16:04:21 +01:00

1 line
24 KiB
Plaintext

{"version":3,"sources":["../../../src/fields/config/client.ts"],"sourcesContent":["// @ts-strict-ignore\n/* eslint-disable perfectionist/sort-switch-case */\n// Keep perfectionist/sort-switch-case disabled - it incorrectly messes up the ordering of the switch cases, causing it to break\nimport type { I18nClient, TFunction } from '@payloadcms/translations'\n\nimport type {\n AdminClient,\n ArrayFieldClient,\n Block,\n BlockJSX,\n BlocksFieldClient,\n ClientBlock,\n ClientField,\n DateFieldClient,\n Field,\n FieldBase,\n JoinFieldClient,\n LabelsClient,\n RadioFieldClient,\n RowFieldClient,\n SelectFieldClient,\n TabsFieldClient,\n} from '../../fields/config/types.js'\nimport type { Payload } from '../../types/index.js'\n\nimport { getFromImportMap } from '../../bin/generateImportMap/utilities/getFromImportMap.js'\nimport { MissingEditorProp } from '../../errors/MissingEditorProp.js'\nimport { fieldAffectsData } from '../../fields/config/types.js'\nimport { flattenTopLevelFields, type ImportMap } from '../../index.js'\n\n// Should not be used - ClientField should be used instead. This is why we don't export ClientField, we don't want people\n// to accidentally use it instead of ClientField and get confused\n\nexport { ClientField }\n\nexport type ServerOnlyFieldProperties =\n | 'dbName' // can be a function\n | 'editor' // This is a `richText` only property\n | 'enumName' // can be a function\n | 'filterOptions' // This is a `relationship`, `upload`, and `select` only property\n | 'graphQL'\n | 'label'\n | 'typescriptSchema'\n | 'validate'\n | keyof Pick<FieldBase, 'access' | 'custom' | 'defaultValue' | 'hooks'>\n\nexport type ServerOnlyFieldAdminProperties = keyof Pick<\n FieldBase['admin'],\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n 'components' | 'condition'\n>\n\nconst serverOnlyFieldProperties: Partial<ServerOnlyFieldProperties>[] = [\n 'hooks',\n 'access',\n 'validate',\n 'defaultValue',\n 'filterOptions', // This is a `relationship`, `upload`, and `select` only property\n 'editor', // This is a `richText` only property\n 'custom',\n 'typescriptSchema',\n 'dbName', // can be a function\n 'enumName', // can be a function\n 'graphQL', // client does not need graphQL\n // the following props are handled separately (see below):\n // `label`\n // `fields`\n // `blocks`\n // `tabs`\n // `admin`\n]\n\nconst serverOnlyFieldAdminProperties: Partial<ServerOnlyFieldAdminProperties>[] = [\n 'condition',\n 'components',\n]\n\ntype FieldWithDescription = {\n admin: AdminClient\n} & ClientField\n\nexport const createClientBlocks = ({\n blocks,\n defaultIDType,\n i18n,\n importMap,\n}: {\n blocks: (Block | string)[]\n defaultIDType: Payload['config']['db']['defaultIDType']\n i18n: I18nClient\n importMap: ImportMap\n}): (ClientBlock | string)[] | ClientBlock[] => {\n const clientBlocks: (ClientBlock | string)[] = []\n for (let i = 0; i < blocks.length; i++) {\n const block = blocks[i]!\n\n if (typeof block === 'string') {\n // Do not process blocks that are just strings - they are processed once in the client config\n clientBlocks.push(block)\n continue\n }\n\n const clientBlock: ClientBlock = {\n slug: block.slug,\n fields: [],\n }\n if (block.imageAltText) {\n clientBlock.imageAltText = block.imageAltText\n }\n if (block.imageURL) {\n clientBlock.imageURL = block.imageURL\n }\n\n if (block.admin?.custom || block.admin?.group) {\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n clientBlock.admin = {}\n if (block.admin.custom) {\n clientBlock.admin!.custom = block.admin.custom\n }\n if (block.admin.group) {\n clientBlock.admin!.group = block.admin.group\n }\n }\n\n if (block?.admin?.jsx) {\n const jsxResolved = getFromImportMap<BlockJSX>({\n importMap,\n PayloadComponent: block.admin.jsx,\n schemaPath: '',\n })\n clientBlock.jsx = jsxResolved\n }\n\n if (block?.admin?.disableBlockName) {\n // Check for existing admin object, this way we don't have to spread it in\n if (clientBlock.admin) {\n clientBlock.admin.disableBlockName = block.admin.disableBlockName\n } else {\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n clientBlock.admin = { disableBlockName: block.admin.disableBlockName }\n }\n }\n\n if (block.labels) {\n clientBlock.labels = {} as unknown as LabelsClient\n\n if (block.labels.singular) {\n if (typeof block.labels.singular === 'function') {\n clientBlock.labels.singular = block.labels.singular({ i18n, t: i18n.t as TFunction })\n } else {\n clientBlock.labels.singular = block.labels.singular\n }\n if (typeof block.labels.plural === 'function') {\n clientBlock.labels.plural = block.labels.plural({ i18n, t: i18n.t as TFunction })\n } else {\n clientBlock.labels.plural = block.labels.plural\n }\n }\n }\n\n clientBlock.fields = createClientFields({\n defaultIDType,\n fields: block.fields,\n i18n,\n importMap,\n })\n\n clientBlocks.push(clientBlock)\n }\n\n return clientBlocks\n}\n\nexport const createClientField = ({\n defaultIDType,\n field: incomingField,\n i18n,\n importMap,\n}: {\n defaultIDType: Payload['config']['db']['defaultIDType']\n field: Field\n i18n: I18nClient\n importMap: ImportMap\n}): ClientField => {\n const clientField: ClientField = {} as ClientField\n\n for (const key in incomingField) {\n if (serverOnlyFieldProperties.includes(key as any)) {\n continue\n }\n\n switch (key) {\n case 'admin':\n if (!incomingField.admin) {\n break\n }\n\n clientField.admin = {} as AdminClient\n\n for (const adminKey in incomingField.admin) {\n if (serverOnlyFieldAdminProperties.includes(adminKey as any)) {\n continue\n }\n\n switch (adminKey) {\n case 'description':\n if ('description' in incomingField.admin) {\n if (typeof incomingField.admin?.description !== 'function') {\n ;(clientField as FieldWithDescription).admin.description =\n incomingField.admin.description\n }\n }\n\n break\n\n default:\n ;(clientField.admin as any)[adminKey] =\n incomingField.admin[adminKey as keyof typeof incomingField.admin]\n }\n }\n\n break\n\n case 'blocks':\n case 'fields':\n case 'tabs':\n // Skip - we handle sub-fields in the switch below\n break\n\n case 'options':\n // Skip - we handle options in the radio/select switch below to avoid mutating the global config\n break\n\n case 'label':\n //@ts-expect-error - would need to type narrow\n if (typeof incomingField.label === 'function') {\n //@ts-expect-error - would need to type narrow\n clientField.label = incomingField.label({ i18n, t: i18n.t })\n } else {\n //@ts-expect-error - would need to type narrow\n clientField.label = incomingField.label\n }\n\n break\n\n default:\n ;(clientField as any)[key] = incomingField[key as keyof Field]\n }\n }\n\n switch (incomingField.type) {\n case 'array': {\n if (incomingField.labels) {\n const field = clientField as unknown as ArrayFieldClient\n\n field.labels = {} as unknown as LabelsClient\n\n if (incomingField.labels.singular) {\n if (typeof incomingField.labels.singular === 'function') {\n field.labels.singular = incomingField.labels.singular({ i18n, t: i18n.t as TFunction })\n } else {\n field.labels.singular = incomingField.labels.singular\n }\n if (typeof incomingField.labels.plural === 'function') {\n field.labels.plural = incomingField.labels.plural({ i18n, t: i18n.t as TFunction })\n } else {\n field.labels.plural = incomingField.labels.plural\n }\n }\n }\n }\n // falls through\n case 'collapsible':\n case 'group':\n case 'row': {\n const field = clientField as unknown as RowFieldClient\n\n if (!field.fields) {\n field.fields = []\n }\n\n field.fields = createClientFields({\n defaultIDType,\n disableAddingID: incomingField.type !== 'array',\n fields: incomingField.fields,\n i18n,\n importMap,\n })\n\n break\n }\n\n case 'blocks': {\n const field = clientField as unknown as BlocksFieldClient\n\n if (incomingField.labels) {\n field.labels = {} as unknown as LabelsClient\n\n if (incomingField.labels.singular) {\n if (typeof incomingField.labels.singular === 'function') {\n field.labels.singular = incomingField.labels.singular({ i18n, t: i18n.t as TFunction })\n } else {\n field.labels.singular = incomingField.labels.singular\n }\n if (typeof incomingField.labels.plural === 'function') {\n field.labels.plural = incomingField.labels.plural({ i18n, t: i18n.t as TFunction })\n } else {\n field.labels.plural = incomingField.labels.plural\n }\n }\n }\n\n if (incomingField.blockReferences?.length) {\n field.blockReferences = createClientBlocks({\n blocks: incomingField.blockReferences,\n defaultIDType,\n i18n,\n importMap,\n })\n }\n\n if (incomingField.blocks?.length) {\n field.blocks = createClientBlocks({\n blocks: incomingField.blocks,\n defaultIDType,\n i18n,\n importMap,\n }) as ClientBlock[]\n }\n\n break\n }\n\n case 'date': {\n // Strip the `override` function from timezone config as it cannot be serialized\n if (\n incomingField.timezone &&\n typeof incomingField.timezone === 'object' &&\n 'override' in incomingField.timezone\n ) {\n const field = clientField as DateFieldClient\n const { override: _, ...timezoneConfigWithoutOverride } = incomingField.timezone\n field.timezone = timezoneConfigWithoutOverride\n }\n\n break\n }\n\n case 'join': {\n const field = clientField as JoinFieldClient\n\n field.targetField = {\n relationTo: field.targetField?.relationTo,\n }\n\n break\n }\n\n case 'radio':\n // falls through\n case 'select': {\n const field = clientField as RadioFieldClient | SelectFieldClient\n\n if (incomingField.options?.length) {\n field.options = [] // Create new array to avoid mutating global config\n\n for (let i = 0; i < incomingField.options.length; i++) {\n const option = incomingField.options[i]\n\n if (typeof option === 'object' && typeof option.label === 'function') {\n field.options[i] = {\n label: option.label({ i18n, t: i18n.t as TFunction }),\n value: option.value,\n }\n } else if (typeof option === 'object') {\n field.options[i] = {\n label: option.label,\n value: option.value,\n }\n } else if (typeof option === 'string') {\n field.options[i] = option\n }\n }\n }\n\n break\n }\n\n case 'richText': {\n if (!incomingField?.editor) {\n throw new MissingEditorProp(incomingField) // while we allow disabling editor functionality, you should not have any richText fields defined if you do not have an editor\n }\n\n if (typeof incomingField?.editor === 'function') {\n throw new Error('Attempted to access unsanitized rich text editor.')\n }\n\n break\n }\n\n case 'tabs': {\n const field = clientField as unknown as TabsFieldClient\n\n if (incomingField.tabs?.length) {\n field.tabs = []\n\n for (let i = 0; i < incomingField.tabs.length; i++) {\n const tab = incomingField.tabs[i]\n const clientTab = {} as unknown as TabsFieldClient['tabs'][0]\n\n for (const key in tab) {\n if (serverOnlyFieldProperties.includes(key as any)) {\n continue\n }\n\n const tabProp = tab[key as keyof typeof tab]\n\n if (key === 'fields') {\n clientTab.fields = createClientFields({\n defaultIDType,\n disableAddingID: true,\n fields: tab.fields,\n i18n,\n importMap,\n })\n } else if (\n (key === 'label' || key === 'description') &&\n typeof tabProp === 'function'\n ) {\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n clientTab[key] = tabProp({ t: i18n.t })\n } else if (key === 'admin') {\n clientTab.admin = {} as AdminClient\n\n for (const adminKey in tab.admin) {\n if (serverOnlyFieldAdminProperties.includes(adminKey as any)) {\n continue\n }\n\n switch (adminKey) {\n case 'description':\n if ('description' in tab.admin) {\n if (typeof tab.admin?.description === 'function') {\n clientTab.admin.description = tab.admin.description({\n i18n,\n t: i18n.t as TFunction,\n })\n } else {\n clientTab.admin.description = tab.admin.description\n }\n }\n\n break\n\n default:\n ;(clientTab.admin as any)[adminKey] =\n tab.admin[adminKey as keyof typeof tab.admin]\n }\n }\n } else {\n ;(clientTab as any)[key] = tabProp\n }\n }\n field.tabs[i] = clientTab\n }\n }\n\n break\n }\n\n default:\n break\n }\n\n return clientField\n}\n\nexport const createClientFields = ({\n defaultIDType,\n disableAddingID,\n fields,\n i18n,\n importMap,\n}: {\n defaultIDType: Payload['config']['db']['defaultIDType']\n disableAddingID?: boolean\n fields: Field[]\n i18n: I18nClient\n importMap: ImportMap\n}): ClientField[] => {\n const clientFields: ClientField[] = []\n\n for (let i = 0; i < fields.length; i++) {\n const field = fields[i]!\n\n const clientField = createClientField({\n defaultIDType,\n field,\n i18n,\n importMap,\n })\n\n clientFields.push(clientField)\n }\n\n const hasID = flattenTopLevelFields(fields).some((f) => fieldAffectsData(f) && f.name === 'id')\n\n if (!disableAddingID && !hasID) {\n clientFields.push({\n name: 'id',\n type: defaultIDType,\n admin: {\n description: 'The unique identifier for this document',\n disableBulkEdit: true,\n disabled: true,\n hidden: true,\n },\n hidden: true,\n label: 'ID',\n } as ClientField)\n }\n\n return clientFields\n}\n"],"names":["getFromImportMap","MissingEditorProp","fieldAffectsData","flattenTopLevelFields","serverOnlyFieldProperties","serverOnlyFieldAdminProperties","createClientBlocks","blocks","defaultIDType","i18n","importMap","clientBlocks","i","length","block","push","clientBlock","slug","fields","imageAltText","imageURL","admin","custom","group","jsx","jsxResolved","PayloadComponent","schemaPath","disableBlockName","labels","singular","t","plural","createClientFields","createClientField","field","incomingField","clientField","key","includes","adminKey","description","label","type","disableAddingID","blockReferences","timezone","override","_","timezoneConfigWithoutOverride","targetField","relationTo","options","option","value","editor","Error","tabs","tab","clientTab","tabProp","clientFields","hasID","some","f","name","disableBulkEdit","disabled","hidden"],"mappings":"AAAA,oBAAoB;AACpB,iDAAiD,GACjD,gIAAgI;AAuBhI,SAASA,gBAAgB,QAAQ,4DAA2D;AAC5F,SAASC,iBAAiB,QAAQ,oCAAmC;AACrE,SAASC,gBAAgB,QAAQ,+BAA8B;AAC/D,SAASC,qBAAqB,QAAwB,iBAAgB;AAwBtE,MAAMC,4BAAkE;IACtE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CAOD;AAED,MAAMC,iCAA4E;IAChF;IACA;CACD;AAMD,OAAO,MAAMC,qBAAqB,CAAC,EACjCC,MAAM,EACNC,aAAa,EACbC,IAAI,EACJC,SAAS,EAMV;IACC,MAAMC,eAAyC,EAAE;IACjD,IAAK,IAAIC,IAAI,GAAGA,IAAIL,OAAOM,MAAM,EAAED,IAAK;QACtC,MAAME,QAAQP,MAAM,CAACK,EAAE;QAEvB,IAAI,OAAOE,UAAU,UAAU;YAC7B,6FAA6F;YAC7FH,aAAaI,IAAI,CAACD;YAClB;QACF;QAEA,MAAME,cAA2B;YAC/BC,MAAMH,MAAMG,IAAI;YAChBC,QAAQ,EAAE;QACZ;QACA,IAAIJ,MAAMK,YAAY,EAAE;YACtBH,YAAYG,YAAY,GAAGL,MAAMK,YAAY;QAC/C;QACA,IAAIL,MAAMM,QAAQ,EAAE;YAClBJ,YAAYI,QAAQ,GAAGN,MAAMM,QAAQ;QACvC;QAEA,IAAIN,MAAMO,KAAK,EAAEC,UAAUR,MAAMO,KAAK,EAAEE,OAAO;YAC7C,oFAAoF;YACpFP,YAAYK,KAAK,GAAG,CAAC;YACrB,IAAIP,MAAMO,KAAK,CAACC,MAAM,EAAE;gBACtBN,YAAYK,KAAK,CAAEC,MAAM,GAAGR,MAAMO,KAAK,CAACC,MAAM;YAChD;YACA,IAAIR,MAAMO,KAAK,CAACE,KAAK,EAAE;gBACrBP,YAAYK,KAAK,CAAEE,KAAK,GAAGT,MAAMO,KAAK,CAACE,KAAK;YAC9C;QACF;QAEA,IAAIT,OAAOO,OAAOG,KAAK;YACrB,MAAMC,cAAczB,iBAA2B;gBAC7CU;gBACAgB,kBAAkBZ,MAAMO,KAAK,CAACG,GAAG;gBACjCG,YAAY;YACd;YACAX,YAAYQ,GAAG,GAAGC;QACpB;QAEA,IAAIX,OAAOO,OAAOO,kBAAkB;YAClC,0EAA0E;YAC1E,IAAIZ,YAAYK,KAAK,EAAE;gBACrBL,YAAYK,KAAK,CAACO,gBAAgB,GAAGd,MAAMO,KAAK,CAACO,gBAAgB;YACnE,OAAO;gBACL,oFAAoF;gBACpFZ,YAAYK,KAAK,GAAG;oBAAEO,kBAAkBd,MAAMO,KAAK,CAACO,gBAAgB;gBAAC;YACvE;QACF;QAEA,IAAId,MAAMe,MAAM,EAAE;YAChBb,YAAYa,MAAM,GAAG,CAAC;YAEtB,IAAIf,MAAMe,MAAM,CAACC,QAAQ,EAAE;gBACzB,IAAI,OAAOhB,MAAMe,MAAM,CAACC,QAAQ,KAAK,YAAY;oBAC/Cd,YAAYa,MAAM,CAACC,QAAQ,GAAGhB,MAAMe,MAAM,CAACC,QAAQ,CAAC;wBAAErB;wBAAMsB,GAAGtB,KAAKsB,CAAC;oBAAc;gBACrF,OAAO;oBACLf,YAAYa,MAAM,CAACC,QAAQ,GAAGhB,MAAMe,MAAM,CAACC,QAAQ;gBACrD;gBACA,IAAI,OAAOhB,MAAMe,MAAM,CAACG,MAAM,KAAK,YAAY;oBAC7ChB,YAAYa,MAAM,CAACG,MAAM,GAAGlB,MAAMe,MAAM,CAACG,MAAM,CAAC;wBAAEvB;wBAAMsB,GAAGtB,KAAKsB,CAAC;oBAAc;gBACjF,OAAO;oBACLf,YAAYa,MAAM,CAACG,MAAM,GAAGlB,MAAMe,MAAM,CAACG,MAAM;gBACjD;YACF;QACF;QAEAhB,YAAYE,MAAM,GAAGe,mBAAmB;YACtCzB;YACAU,QAAQJ,MAAMI,MAAM;YACpBT;YACAC;QACF;QAEAC,aAAaI,IAAI,CAACC;IACpB;IAEA,OAAOL;AACT,EAAC;AAED,OAAO,MAAMuB,oBAAoB,CAAC,EAChC1B,aAAa,EACb2B,OAAOC,aAAa,EACpB3B,IAAI,EACJC,SAAS,EAMV;IACC,MAAM2B,cAA2B,CAAC;IAElC,IAAK,MAAMC,OAAOF,cAAe;QAC/B,IAAIhC,0BAA0BmC,QAAQ,CAACD,MAAa;YAClD;QACF;QAEA,OAAQA;YACN,KAAK;gBACH,IAAI,CAACF,cAAcf,KAAK,EAAE;oBACxB;gBACF;gBAEAgB,YAAYhB,KAAK,GAAG,CAAC;gBAErB,IAAK,MAAMmB,YAAYJ,cAAcf,KAAK,CAAE;oBAC1C,IAAIhB,+BAA+BkC,QAAQ,CAACC,WAAkB;wBAC5D;oBACF;oBAEA,OAAQA;wBACN,KAAK;4BACH,IAAI,iBAAiBJ,cAAcf,KAAK,EAAE;gCACxC,IAAI,OAAOe,cAAcf,KAAK,EAAEoB,gBAAgB,YAAY;;oCACxDJ,YAAqChB,KAAK,CAACoB,WAAW,GACtDL,cAAcf,KAAK,CAACoB,WAAW;gCACnC;4BACF;4BAEA;wBAEF;;4BACIJ,YAAYhB,KAAK,AAAQ,CAACmB,SAAS,GACnCJ,cAAcf,KAAK,CAACmB,SAA6C;oBACvE;gBACF;gBAEA;YAEF,KAAK;YACL,KAAK;YACL,KAAK;gBAEH;YAEF,KAAK;gBAEH;YAEF,KAAK;gBACH,8CAA8C;gBAC9C,IAAI,OAAOJ,cAAcM,KAAK,KAAK,YAAY;oBAC7C,8CAA8C;oBAC9CL,YAAYK,KAAK,GAAGN,cAAcM,KAAK,CAAC;wBAAEjC;wBAAMsB,GAAGtB,KAAKsB,CAAC;oBAAC;gBAC5D,OAAO;oBACL,8CAA8C;oBAC9CM,YAAYK,KAAK,GAAGN,cAAcM,KAAK;gBACzC;gBAEA;YAEF;;gBACIL,WAAmB,CAACC,IAAI,GAAGF,aAAa,CAACE,IAAmB;QAClE;IACF;IAEA,OAAQF,cAAcO,IAAI;QACxB,KAAK;YAAS;gBACZ,IAAIP,cAAcP,MAAM,EAAE;oBACxB,MAAMM,QAAQE;oBAEdF,MAAMN,MAAM,GAAG,CAAC;oBAEhB,IAAIO,cAAcP,MAAM,CAACC,QAAQ,EAAE;wBACjC,IAAI,OAAOM,cAAcP,MAAM,CAACC,QAAQ,KAAK,YAAY;4BACvDK,MAAMN,MAAM,CAACC,QAAQ,GAAGM,cAAcP,MAAM,CAACC,QAAQ,CAAC;gCAAErB;gCAAMsB,GAAGtB,KAAKsB,CAAC;4BAAc;wBACvF,OAAO;4BACLI,MAAMN,MAAM,CAACC,QAAQ,GAAGM,cAAcP,MAAM,CAACC,QAAQ;wBACvD;wBACA,IAAI,OAAOM,cAAcP,MAAM,CAACG,MAAM,KAAK,YAAY;4BACrDG,MAAMN,MAAM,CAACG,MAAM,GAAGI,cAAcP,MAAM,CAACG,MAAM,CAAC;gCAAEvB;gCAAMsB,GAAGtB,KAAKsB,CAAC;4BAAc;wBACnF,OAAO;4BACLI,MAAMN,MAAM,CAACG,MAAM,GAAGI,cAAcP,MAAM,CAACG,MAAM;wBACnD;oBACF;gBACF;YACF;QACA,gBAAgB;QAChB,KAAK;QACL,KAAK;QACL,KAAK;YAAO;gBACV,MAAMG,QAAQE;gBAEd,IAAI,CAACF,MAAMjB,MAAM,EAAE;oBACjBiB,MAAMjB,MAAM,GAAG,EAAE;gBACnB;gBAEAiB,MAAMjB,MAAM,GAAGe,mBAAmB;oBAChCzB;oBACAoC,iBAAiBR,cAAcO,IAAI,KAAK;oBACxCzB,QAAQkB,cAAclB,MAAM;oBAC5BT;oBACAC;gBACF;gBAEA;YACF;QAEA,KAAK;YAAU;gBACb,MAAMyB,QAAQE;gBAEd,IAAID,cAAcP,MAAM,EAAE;oBACxBM,MAAMN,MAAM,GAAG,CAAC;oBAEhB,IAAIO,cAAcP,MAAM,CAACC,QAAQ,EAAE;wBACjC,IAAI,OAAOM,cAAcP,MAAM,CAACC,QAAQ,KAAK,YAAY;4BACvDK,MAAMN,MAAM,CAACC,QAAQ,GAAGM,cAAcP,MAAM,CAACC,QAAQ,CAAC;gCAAErB;gCAAMsB,GAAGtB,KAAKsB,CAAC;4BAAc;wBACvF,OAAO;4BACLI,MAAMN,MAAM,CAACC,QAAQ,GAAGM,cAAcP,MAAM,CAACC,QAAQ;wBACvD;wBACA,IAAI,OAAOM,cAAcP,MAAM,CAACG,MAAM,KAAK,YAAY;4BACrDG,MAAMN,MAAM,CAACG,MAAM,GAAGI,cAAcP,MAAM,CAACG,MAAM,CAAC;gCAAEvB;gCAAMsB,GAAGtB,KAAKsB,CAAC;4BAAc;wBACnF,OAAO;4BACLI,MAAMN,MAAM,CAACG,MAAM,GAAGI,cAAcP,MAAM,CAACG,MAAM;wBACnD;oBACF;gBACF;gBAEA,IAAII,cAAcS,eAAe,EAAEhC,QAAQ;oBACzCsB,MAAMU,eAAe,GAAGvC,mBAAmB;wBACzCC,QAAQ6B,cAAcS,eAAe;wBACrCrC;wBACAC;wBACAC;oBACF;gBACF;gBAEA,IAAI0B,cAAc7B,MAAM,EAAEM,QAAQ;oBAChCsB,MAAM5B,MAAM,GAAGD,mBAAmB;wBAChCC,QAAQ6B,cAAc7B,MAAM;wBAC5BC;wBACAC;wBACAC;oBACF;gBACF;gBAEA;YACF;QAEA,KAAK;YAAQ;gBACX,gFAAgF;gBAChF,IACE0B,cAAcU,QAAQ,IACtB,OAAOV,cAAcU,QAAQ,KAAK,YAClC,cAAcV,cAAcU,QAAQ,EACpC;oBACA,MAAMX,QAAQE;oBACd,MAAM,EAAEU,UAAUC,CAAC,EAAE,GAAGC,+BAA+B,GAAGb,cAAcU,QAAQ;oBAChFX,MAAMW,QAAQ,GAAGG;gBACnB;gBAEA;YACF;QAEA,KAAK;YAAQ;gBACX,MAAMd,QAAQE;gBAEdF,MAAMe,WAAW,GAAG;oBAClBC,YAAYhB,MAAMe,WAAW,EAAEC;gBACjC;gBAEA;YACF;QAEA,KAAK;QACL,gBAAgB;QAChB,KAAK;YAAU;gBACb,MAAMhB,QAAQE;gBAEd,IAAID,cAAcgB,OAAO,EAAEvC,QAAQ;oBACjCsB,MAAMiB,OAAO,GAAG,EAAE,EAAC,mDAAmD;oBAEtE,IAAK,IAAIxC,IAAI,GAAGA,IAAIwB,cAAcgB,OAAO,CAACvC,MAAM,EAAED,IAAK;wBACrD,MAAMyC,SAASjB,cAAcgB,OAAO,CAACxC,EAAE;wBAEvC,IAAI,OAAOyC,WAAW,YAAY,OAAOA,OAAOX,KAAK,KAAK,YAAY;4BACpEP,MAAMiB,OAAO,CAACxC,EAAE,GAAG;gCACjB8B,OAAOW,OAAOX,KAAK,CAAC;oCAAEjC;oCAAMsB,GAAGtB,KAAKsB,CAAC;gCAAc;gCACnDuB,OAAOD,OAAOC,KAAK;4BACrB;wBACF,OAAO,IAAI,OAAOD,WAAW,UAAU;4BACrClB,MAAMiB,OAAO,CAACxC,EAAE,GAAG;gCACjB8B,OAAOW,OAAOX,KAAK;gCACnBY,OAAOD,OAAOC,KAAK;4BACrB;wBACF,OAAO,IAAI,OAAOD,WAAW,UAAU;4BACrClB,MAAMiB,OAAO,CAACxC,EAAE,GAAGyC;wBACrB;oBACF;gBACF;gBAEA;YACF;QAEA,KAAK;YAAY;gBACf,IAAI,CAACjB,eAAemB,QAAQ;oBAC1B,MAAM,IAAItD,kBAAkBmC,eAAe,8HAA8H;;gBAC3K;gBAEA,IAAI,OAAOA,eAAemB,WAAW,YAAY;oBAC/C,MAAM,IAAIC,MAAM;gBAClB;gBAEA;YACF;QAEA,KAAK;YAAQ;gBACX,MAAMrB,QAAQE;gBAEd,IAAID,cAAcqB,IAAI,EAAE5C,QAAQ;oBAC9BsB,MAAMsB,IAAI,GAAG,EAAE;oBAEf,IAAK,IAAI7C,IAAI,GAAGA,IAAIwB,cAAcqB,IAAI,CAAC5C,MAAM,EAAED,IAAK;wBAClD,MAAM8C,MAAMtB,cAAcqB,IAAI,CAAC7C,EAAE;wBACjC,MAAM+C,YAAY,CAAC;wBAEnB,IAAK,MAAMrB,OAAOoB,IAAK;4BACrB,IAAItD,0BAA0BmC,QAAQ,CAACD,MAAa;gCAClD;4BACF;4BAEA,MAAMsB,UAAUF,GAAG,CAACpB,IAAwB;4BAE5C,IAAIA,QAAQ,UAAU;gCACpBqB,UAAUzC,MAAM,GAAGe,mBAAmB;oCACpCzB;oCACAoC,iBAAiB;oCACjB1B,QAAQwC,IAAIxC,MAAM;oCAClBT;oCACAC;gCACF;4BACF,OAAO,IACL,AAAC4B,CAAAA,QAAQ,WAAWA,QAAQ,aAAY,KACxC,OAAOsB,YAAY,YACnB;gCACA,oFAAoF;gCACpFD,SAAS,CAACrB,IAAI,GAAGsB,QAAQ;oCAAE7B,GAAGtB,KAAKsB,CAAC;gCAAC;4BACvC,OAAO,IAAIO,QAAQ,SAAS;gCAC1BqB,UAAUtC,KAAK,GAAG,CAAC;gCAEnB,IAAK,MAAMmB,YAAYkB,IAAIrC,KAAK,CAAE;oCAChC,IAAIhB,+BAA+BkC,QAAQ,CAACC,WAAkB;wCAC5D;oCACF;oCAEA,OAAQA;wCACN,KAAK;4CACH,IAAI,iBAAiBkB,IAAIrC,KAAK,EAAE;gDAC9B,IAAI,OAAOqC,IAAIrC,KAAK,EAAEoB,gBAAgB,YAAY;oDAChDkB,UAAUtC,KAAK,CAACoB,WAAW,GAAGiB,IAAIrC,KAAK,CAACoB,WAAW,CAAC;wDAClDhC;wDACAsB,GAAGtB,KAAKsB,CAAC;oDACX;gDACF,OAAO;oDACL4B,UAAUtC,KAAK,CAACoB,WAAW,GAAGiB,IAAIrC,KAAK,CAACoB,WAAW;gDACrD;4CACF;4CAEA;wCAEF;;4CACIkB,UAAUtC,KAAK,AAAQ,CAACmB,SAAS,GACjCkB,IAAIrC,KAAK,CAACmB,SAAmC;oCACnD;gCACF;4BACF,OAAO;;gCACHmB,SAAiB,CAACrB,IAAI,GAAGsB;4BAC7B;wBACF;wBACAzB,MAAMsB,IAAI,CAAC7C,EAAE,GAAG+C;oBAClB;gBACF;gBAEA;YACF;QAEA;YACE;IACJ;IAEA,OAAOtB;AACT,EAAC;AAED,OAAO,MAAMJ,qBAAqB,CAAC,EACjCzB,aAAa,EACboC,eAAe,EACf1B,MAAM,EACNT,IAAI,EACJC,SAAS,EAOV;IACC,MAAMmD,eAA8B,EAAE;IAEtC,IAAK,IAAIjD,IAAI,GAAGA,IAAIM,OAAOL,MAAM,EAAED,IAAK;QACtC,MAAMuB,QAAQjB,MAAM,CAACN,EAAE;QAEvB,MAAMyB,cAAcH,kBAAkB;YACpC1B;YACA2B;YACA1B;YACAC;QACF;QAEAmD,aAAa9C,IAAI,CAACsB;IACpB;IAEA,MAAMyB,QAAQ3D,sBAAsBe,QAAQ6C,IAAI,CAAC,CAACC,IAAM9D,iBAAiB8D,MAAMA,EAAEC,IAAI,KAAK;IAE1F,IAAI,CAACrB,mBAAmB,CAACkB,OAAO;QAC9BD,aAAa9C,IAAI,CAAC;YAChBkD,MAAM;YACNtB,MAAMnC;YACNa,OAAO;gBACLoB,aAAa;gBACbyB,iBAAiB;gBACjBC,UAAU;gBACVC,QAAQ;YACV;YACAA,QAAQ;YACR1B,OAAO;QACT;IACF;IAEA,OAAOmB;AACT,EAAC"}