@unchainedshop/api 3.1.9 → 3.1.10

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 (127) hide show
  1. package/lib/errors.d.ts +0 -1
  2. package/lib/errors.d.ts.map +1 -1
  3. package/lib/errors.js +0 -1
  4. package/lib/errors.js.map +1 -1
  5. package/lib/resolvers/mutations/accounts/changePassword.d.ts +2 -2
  6. package/lib/resolvers/mutations/accounts/changePassword.d.ts.map +1 -1
  7. package/lib/resolvers/mutations/accounts/changePassword.js +0 -6
  8. package/lib/resolvers/mutations/accounts/changePassword.js.map +1 -1
  9. package/lib/resolvers/mutations/accounts/loginWithWebAuthn.js +2 -2
  10. package/lib/resolvers/mutations/accounts/loginWithWebAuthn.js.map +1 -1
  11. package/lib/resolvers/mutations/accounts/resetPassword.d.ts +1 -1
  12. package/lib/resolvers/mutations/accounts/resetPassword.d.ts.map +1 -1
  13. package/lib/resolvers/mutations/accounts/resetPassword.js +0 -3
  14. package/lib/resolvers/mutations/accounts/resetPassword.js.map +1 -1
  15. package/lib/resolvers/mutations/accounts/setPassword.d.ts.map +1 -1
  16. package/lib/resolvers/mutations/accounts/setPassword.js +0 -3
  17. package/lib/resolvers/mutations/accounts/setPassword.js.map +1 -1
  18. package/lib/resolvers/mutations/users/setRoles.d.ts +1 -1
  19. package/lib/resolvers/mutations/users/setRoles.d.ts.map +1 -1
  20. package/lib/resolvers/mutations/users/setRoles.js +1 -1
  21. package/lib/resolvers/mutations/users/setRoles.js.map +1 -1
  22. package/lib/resolvers/mutations/users/setUserTags.d.ts +1 -1
  23. package/lib/resolvers/mutations/users/setUserTags.d.ts.map +1 -1
  24. package/lib/resolvers/mutations/users/setUserTags.js +1 -1
  25. package/lib/resolvers/mutations/users/setUserTags.js.map +1 -1
  26. package/lib/schema/mutation.js +3 -3
  27. package/package.json +1 -1
  28. package/src/errors.ts +0 -5
  29. package/src/resolvers/mutations/accounts/changePassword.ts +2 -9
  30. package/src/resolvers/mutations/accounts/loginWithWebAuthn.ts +2 -2
  31. package/src/resolvers/mutations/accounts/resetPassword.ts +1 -5
  32. package/src/resolvers/mutations/accounts/setPassword.ts +1 -3
  33. package/src/resolvers/mutations/users/setRoles.ts +1 -1
  34. package/src/resolvers/mutations/users/setUserTags.ts +1 -1
  35. package/src/schema/mutation.ts +3 -3
  36. package/lib/loaders/assortmentLinkLoader.d.ts +0 -12
  37. package/lib/loaders/assortmentLinkLoader.d.ts.map +0 -1
  38. package/lib/loaders/assortmentLinkLoader.js +0 -23
  39. package/lib/loaders/assortmentLinkLoader.js.map +0 -1
  40. package/lib/loaders/assortmentLinksLoader.d.ts +0 -14
  41. package/lib/loaders/assortmentLinksLoader.d.ts.map +0 -1
  42. package/lib/loaders/assortmentLinksLoader.js +0 -38
  43. package/lib/loaders/assortmentLinksLoader.js.map +0 -1
  44. package/lib/loaders/assortmentLoader.d.ts +0 -10
  45. package/lib/loaders/assortmentLoader.d.ts.map +0 -1
  46. package/lib/loaders/assortmentLoader.js +0 -15
  47. package/lib/loaders/assortmentLoader.js.map +0 -1
  48. package/lib/loaders/assortmentMediaTextLoader.d.ts +0 -12
  49. package/lib/loaders/assortmentMediaTextLoader.d.ts.map +0 -1
  50. package/lib/loaders/assortmentMediaTextLoader.js +0 -20
  51. package/lib/loaders/assortmentMediaTextLoader.js.map +0 -1
  52. package/lib/loaders/assortmentMediasLoader.d.ts +0 -10
  53. package/lib/loaders/assortmentMediasLoader.d.ts.map +0 -1
  54. package/lib/loaders/assortmentMediasLoader.js +0 -18
  55. package/lib/loaders/assortmentMediasLoader.js.map +0 -1
  56. package/lib/loaders/assortmentProductLoader.d.ts +0 -12
  57. package/lib/loaders/assortmentProductLoader.d.ts.map +0 -1
  58. package/lib/loaders/assortmentProductLoader.js +0 -14
  59. package/lib/loaders/assortmentProductLoader.js.map +0 -1
  60. package/lib/loaders/assortmentProductsLoader.d.ts +0 -10
  61. package/lib/loaders/assortmentProductsLoader.d.ts.map +0 -1
  62. package/lib/loaders/assortmentProductsLoader.js +0 -18
  63. package/lib/loaders/assortmentProductsLoader.js.map +0 -1
  64. package/lib/loaders/assortmentTextLoader.d.ts +0 -12
  65. package/lib/loaders/assortmentTextLoader.d.ts.map +0 -1
  66. package/lib/loaders/assortmentTextLoader.js +0 -20
  67. package/lib/loaders/assortmentTextLoader.js.map +0 -1
  68. package/lib/loaders/countryLoader.d.ts +0 -10
  69. package/lib/loaders/countryLoader.d.ts.map +0 -1
  70. package/lib/loaders/countryLoader.js +0 -14
  71. package/lib/loaders/countryLoader.js.map +0 -1
  72. package/lib/loaders/currencyLoader copy.d.ts +0 -10
  73. package/lib/loaders/currencyLoader copy.d.ts.map +0 -1
  74. package/lib/loaders/currencyLoader copy.js +0 -14
  75. package/lib/loaders/currencyLoader copy.js.map +0 -1
  76. package/lib/loaders/currencyLoader.d.ts +0 -10
  77. package/lib/loaders/currencyLoader.d.ts.map +0 -1
  78. package/lib/loaders/currencyLoader.js +0 -14
  79. package/lib/loaders/currencyLoader.js.map +0 -1
  80. package/lib/loaders/currencyLoaderByIsoCode.d.ts +0 -10
  81. package/lib/loaders/currencyLoaderByIsoCode.d.ts.map +0 -1
  82. package/lib/loaders/currencyLoaderByIsoCode.js +0 -13
  83. package/lib/loaders/currencyLoaderByIsoCode.js.map +0 -1
  84. package/lib/loaders/fileLoader.d.ts +0 -10
  85. package/lib/loaders/fileLoader.d.ts.map +0 -1
  86. package/lib/loaders/fileLoader.js +0 -13
  87. package/lib/loaders/fileLoader.js.map +0 -1
  88. package/lib/loaders/filterLoader.d.ts +0 -10
  89. package/lib/loaders/filterLoader.d.ts.map +0 -1
  90. package/lib/loaders/filterLoader.js +0 -14
  91. package/lib/loaders/filterLoader.js.map +0 -1
  92. package/lib/loaders/filterTextLoader.d.ts +0 -14
  93. package/lib/loaders/filterTextLoader.d.ts.map +0 -1
  94. package/lib/loaders/filterTextLoader.js +0 -20
  95. package/lib/loaders/filterTextLoader.js.map +0 -1
  96. package/lib/loaders/productLoader.d.ts +0 -10
  97. package/lib/loaders/productLoader.d.ts.map +0 -1
  98. package/lib/loaders/productLoader.js +0 -16
  99. package/lib/loaders/productLoader.js.map +0 -1
  100. package/lib/loaders/productLoaderBySKU.d.ts +0 -10
  101. package/lib/loaders/productLoaderBySKU.d.ts.map +0 -1
  102. package/lib/loaders/productLoaderBySKU.js +0 -16
  103. package/lib/loaders/productLoaderBySKU.js.map +0 -1
  104. package/lib/loaders/productMediaTextLoader.d.ts +0 -12
  105. package/lib/loaders/productMediaTextLoader.d.ts.map +0 -1
  106. package/lib/loaders/productMediaTextLoader.js +0 -20
  107. package/lib/loaders/productMediaTextLoader.js.map +0 -1
  108. package/lib/loaders/productMediasLoader.d.ts +0 -10
  109. package/lib/loaders/productMediasLoader.d.ts.map +0 -1
  110. package/lib/loaders/productMediasLoader.js +0 -18
  111. package/lib/loaders/productMediasLoader.js.map +0 -1
  112. package/lib/loaders/productTextLoader.d.ts +0 -12
  113. package/lib/loaders/productTextLoader.d.ts.map +0 -1
  114. package/lib/loaders/productTextLoader.js +0 -20
  115. package/lib/loaders/productTextLoader.js.map +0 -1
  116. package/lib/loaders/userLoader copy.d.ts +0 -10
  117. package/lib/loaders/userLoader copy.d.ts.map +0 -1
  118. package/lib/loaders/userLoader copy.js +0 -13
  119. package/lib/loaders/userLoader copy.js.map +0 -1
  120. package/lib/loaders/userLoader.d.ts +0 -10
  121. package/lib/loaders/userLoader.d.ts.map +0 -1
  122. package/lib/loaders/userLoader.js +0 -13
  123. package/lib/loaders/userLoader.js.map +0 -1
  124. package/lib/loaders/utils.d.ts +0 -7
  125. package/lib/loaders/utils.d.ts.map +0 -1
  126. package/lib/loaders/utils.js +0 -30
  127. package/lib/loaders/utils.js.map +0 -1
@@ -1,12 +0,0 @@
1
- import { UnchainedCore } from '@unchainedshop/core';
2
- import DataLoader from 'dataloader';
3
- import { ProductText } from '@unchainedshop/core-products';
4
- declare const _default: (unchainedAPI: UnchainedCore) => DataLoader<{
5
- productId: string;
6
- locale: string;
7
- }, ProductText, {
8
- productId: string;
9
- locale: string;
10
- }>;
11
- export default _default;
12
- //# sourceMappingURL=productTextLoader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"productTextLoader.d.ts","sourceRoot":"","sources":["../../src/loaders/productTextLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;yBAE3C,cAAc,aAAa;eACb,MAAM;YAAU,MAAM;;eAAtB,MAAM;YAAU,MAAM;;AADpD,wBAqBK"}
@@ -1,20 +0,0 @@
1
- import DataLoader from 'dataloader';
2
- import { buildLocaleMap } from './utils.js';
3
- export default (unchainedAPI) => new DataLoader(async (queries) => {
4
- const productIds = [...new Set(queries.map((q) => q.productId))].filter(Boolean);
5
- const texts = await unchainedAPI.modules.products.texts.findTexts({ productId: { $in: productIds } }, {
6
- sort: {
7
- productId: 1,
8
- },
9
- });
10
- const localeMap = buildLocaleMap(queries, texts);
11
- const textsMap = {};
12
- for (const text of texts) {
13
- const localesForText = localeMap[text.locale] || [];
14
- for (const locale of localesForText) {
15
- textsMap[locale + text.productId] = text;
16
- }
17
- }
18
- return queries.map((q) => textsMap[q.locale + q.productId]);
19
- });
20
- //# sourceMappingURL=productTextLoader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"productTextLoader.js","sourceRoot":"","sources":["../../src/loaders/productTextLoader.ts"],"names":[],"mappings":"AACA,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG5C,eAAe,CAAC,YAA2B,EAAE,EAAE,CAC7C,IAAI,UAAU,CAAqD,KAAK,EAAE,OAAO,EAAE,EAAE;IACnF,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACjF,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAC/D,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAClC;QACE,IAAI,EAAE;YACJ,SAAS,EAAE,CAAC;SACb;KACF,CACF,CAAC;IACF,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAEjD,MAAM,QAAQ,GAAG,EAAE,CAAC;IACpB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,cAAc,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACpD,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;YACpC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;QAC3C,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC9D,CAAC,CAAC,CAAC"}
@@ -1,10 +0,0 @@
1
- import { UnchainedCore } from '@unchainedshop/core';
2
- import { User } from '@unchainedshop/core-users';
3
- import DataLoader from 'dataloader';
4
- declare const _default: (unchainedAPI: UnchainedCore) => DataLoader<{
5
- userId: string;
6
- }, User, {
7
- userId: string;
8
- }>;
9
- export default _default;
10
- //# sourceMappingURL=userLoader%20copy.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"userLoader copy.d.ts","sourceRoot":"","sources":["../../src/loaders/userLoader copy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACjD,OAAO,UAAU,MAAM,YAAY,CAAC;yBAEpB,cAAc,aAAa;YAChB,MAAM;;YAAN,MAAM;;AADjC,wBAcK"}
@@ -1,13 +0,0 @@
1
- import DataLoader from 'dataloader';
2
- export default (unchainedAPI) => new DataLoader(async (queries) => {
3
- const userIds = [...new Set(queries.map((q) => q.userId).filter(Boolean))]; // you don't need lodash, _.unique my ass
4
- const users = await unchainedAPI.modules.users.findUsers({
5
- _id: { $in: userIds },
6
- });
7
- const userMap = {};
8
- for (const user of users) {
9
- userMap[user._id] = user;
10
- }
11
- return queries.map((q) => userMap[q.userId]);
12
- });
13
- //# sourceMappingURL=userLoader%20copy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"userLoader copy.js","sourceRoot":"","sources":["../../src/loaders/userLoader copy.ts"],"names":[],"mappings":"AAEA,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,eAAe,CAAC,YAA2B,EAAE,EAAE,CAC7C,IAAI,UAAU,CAA2B,KAAK,EAAE,OAAO,EAAE,EAAE;IACzD,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,yCAAyC;IAErH,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;QACvD,GAAG,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE;KACtB,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,EAAE,CAAC;IACnB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC"}
@@ -1,10 +0,0 @@
1
- import { UnchainedCore } from '@unchainedshop/core';
2
- import { User } from '@unchainedshop/core-users';
3
- import DataLoader from 'dataloader';
4
- declare const _default: (unchainedAPI: UnchainedCore) => DataLoader<{
5
- userId: string;
6
- }, User, {
7
- userId: string;
8
- }>;
9
- export default _default;
10
- //# sourceMappingURL=userLoader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"userLoader.d.ts","sourceRoot":"","sources":["../../src/loaders/userLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACjD,OAAO,UAAU,MAAM,YAAY,CAAC;yBAEpB,cAAc,aAAa;YAChB,MAAM;;YAAN,MAAM;;AADjC,wBAcK"}
@@ -1,13 +0,0 @@
1
- import DataLoader from 'dataloader';
2
- export default (unchainedAPI) => new DataLoader(async (queries) => {
3
- const userIds = [...new Set(queries.map((q) => q.userId).filter(Boolean))]; // you don't need lodash, _.unique my ass
4
- const users = await unchainedAPI.modules.users.findUsers({
5
- _id: { $in: userIds },
6
- });
7
- const userMap = {};
8
- for (const user of users) {
9
- userMap[user._id] = user;
10
- }
11
- return queries.map((q) => userMap[q.userId]);
12
- });
13
- //# sourceMappingURL=userLoader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"userLoader.js","sourceRoot":"","sources":["../../src/loaders/userLoader.ts"],"names":[],"mappings":"AAEA,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,eAAe,CAAC,YAA2B,EAAE,EAAE,CAC7C,IAAI,UAAU,CAA2B,KAAK,EAAE,OAAO,EAAE,EAAE;IACzD,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,yCAAyC;IAErH,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;QACvD,GAAG,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE;KACtB,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,EAAE,CAAC;IACnB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC"}
@@ -1,7 +0,0 @@
1
- export declare function getLocaleStrings(locale: string): string[];
2
- export declare function buildLocaleMap(queries: Readonly<Array<{
3
- locale: string;
4
- }>>, texts: Readonly<Array<{
5
- locale?: string;
6
- }>>): Record<string, string[]>;
7
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/loaders/utils.ts"],"names":[],"mappings":"AAEA,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,YAS9C;AAED,wBAAgB,cAAc,CAC5B,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,EAC5C,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,GAC1C,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAe1B"}
@@ -1,30 +0,0 @@
1
- import { systemLocale } from '@unchainedshop/utils';
2
- export function getLocaleStrings(locale) {
3
- try {
4
- const localeObj = new Intl.Locale(locale);
5
- return [
6
- ...new Set([localeObj.baseName, localeObj.language, systemLocale.baseName, systemLocale.language]),
7
- ];
8
- }
9
- catch {
10
- return [...new Set([systemLocale.baseName, systemLocale.language])];
11
- }
12
- }
13
- export function buildLocaleMap(queries, texts) {
14
- // key = texts.locale
15
- // value = input query locale
16
- const queryLocales = [...new Set(queries.map((q) => q.locale))];
17
- const textLocales = [...new Set(texts.map((t) => t.locale))];
18
- const localeMap = {};
19
- for (const queryLocale of queryLocales) {
20
- const potentialMatches = getLocaleStrings(queryLocale);
21
- const matches = potentialMatches.filter((l) => textLocales.includes(l));
22
- for (const match of matches) {
23
- if (!localeMap[match])
24
- localeMap[match] = [];
25
- localeMap[match].push(queryLocale);
26
- }
27
- }
28
- return localeMap;
29
- }
30
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/loaders/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC7C,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1C,OAAO;YACL,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;SACnG,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,OAA4C,EAC5C,KAA2C;IAE3C,qBAAqB;IACrB,6BAA6B;IAC7B,MAAM,YAAY,GAAe,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC5E,MAAM,WAAW,GAAkB,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC5E,MAAM,SAAS,GAAG,EAAE,CAAC;IACrB,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;gBAAE,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YAC7C,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}