giime 0.8.2 → 0.8.4

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 (36) hide show
  1. package/dist/index.css +538 -538
  2. package/es/giime/index.mjs +1 -0
  3. package/es/giime/index.mjs.map +1 -1
  4. package/es/giime/version.d.ts +1 -1
  5. package/es/giime/version.mjs +1 -1
  6. package/es/giime/version.mjs.map +1 -1
  7. package/es/hooks/base/useDictionary/index.d.ts +4 -1
  8. package/es/hooks/base/useDictionary/index.mjs.map +1 -1
  9. package/es/index.css +538 -538
  10. package/es/utils/__tests__/tree.test.d.ts +1 -0
  11. package/es/utils/index.mjs +1 -0
  12. package/es/utils/index.mjs.map +1 -1
  13. package/es/utils/src/tree/flattenTree.d.ts +9 -0
  14. package/es/utils/src/tree/flattenTree.mjs +19 -0
  15. package/es/utils/src/tree/flattenTree.mjs.map +1 -0
  16. package/es/utils/src/tree/index.d.ts +1 -0
  17. package/es/utils/src/tree/index.mjs +1 -0
  18. package/es/utils/src/tree/index.mjs.map +1 -1
  19. package/lib/giime/index.js +2 -0
  20. package/lib/giime/index.js.map +1 -1
  21. package/lib/giime/version.d.ts +1 -1
  22. package/lib/giime/version.js +1 -1
  23. package/lib/giime/version.js.map +1 -1
  24. package/lib/hooks/base/useDictionary/index.d.ts +4 -1
  25. package/lib/hooks/base/useDictionary/index.js.map +1 -1
  26. package/lib/index.css +538 -538
  27. package/lib/utils/__tests__/tree.test.d.ts +1 -0
  28. package/lib/utils/index.js +2 -0
  29. package/lib/utils/index.js.map +1 -1
  30. package/lib/utils/src/tree/flattenTree.d.ts +9 -0
  31. package/lib/utils/src/tree/flattenTree.js +21 -0
  32. package/lib/utils/src/tree/flattenTree.js.map +1 -0
  33. package/lib/utils/src/tree/index.d.ts +1 -0
  34. package/lib/utils/src/tree/index.js +2 -0
  35. package/lib/utils/src/tree/index.js.map +1 -1
  36. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ export {};
@@ -32,6 +32,7 @@ export { any_hmac_sha1, any_sha1, b64_hmac_sha1, b64_sha1, hex_hmac_sha1, hex_sh
32
32
  export { base64ToString, base64ToUint8Array, isBase64, stringToBase64, stringToBase64URI, uint8ArrayToBase64 } from './src/crypto/base64.mjs';
33
33
  export { filterTreeByName } from './src/tree/filterTreeByName.mjs';
34
34
  export { findChildrenItem } from './src/tree/findChildrenItem.mjs';
35
+ export { flattenTree } from './src/tree/flattenTree.mjs';
35
36
  export { integerPattern, moneyPattern, nonNegativeIntegerPattern, nonNegativeNumberPattern, nonZeroNumberPattern, numberPattern, positiveIntegerPattern, positiveNumberPattern } from './src/regexPatterns/number.mjs';
36
37
  export { base64Pattern, domainPattern, emailPattern, urlPattern } from './src/regexPatterns/url.mjs';
37
38
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * 将树形结构打平为一维数组
3
+ * @param treeData 树形数据数组
4
+ * @param option 配置项,可指定 children 字段名
5
+ * @returns 打平后的一维数组(不包含 children 字段)
6
+ */
7
+ export declare function flattenTree<T extends Record<string, any>>(treeData: T[], option?: {
8
+ children?: string;
9
+ }): T[];
@@ -0,0 +1,19 @@
1
+ function flattenTree(treeData, option) {
2
+ const childrenField = option?.children || "children";
3
+ const result = [];
4
+ function flatten(nodes) {
5
+ for (const node of nodes) {
6
+ const currentNode = node;
7
+ const { [childrenField]: children, ...rest } = currentNode;
8
+ result.push(rest);
9
+ if (children && Array.isArray(children)) {
10
+ flatten(children);
11
+ }
12
+ }
13
+ }
14
+ flatten(treeData);
15
+ return result;
16
+ }
17
+
18
+ export { flattenTree };
19
+ //# sourceMappingURL=flattenTree.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flattenTree.mjs","sources":["../../../../../../packages/utils/src/tree/flattenTree.ts"],"sourcesContent":["/**\n * 将树形结构打平为一维数组\n * @param treeData 树形数据数组\n * @param option 配置项,可指定 children 字段名\n * @returns 打平后的一维数组(不包含 children 字段)\n */\nexport function flattenTree<T extends Record<string, any>>(treeData: T[], option?: { children?: string }): T[] {\n const childrenField = option?.children || 'children';\n const result: any[] = [];\n\n /**\n * 递归打平节点\n * @param nodes 当前层级的节点数组\n */\n function flatten(nodes: T[]) {\n for (const node of nodes) {\n const currentNode = node as Record<string, any>;\n\n // 复制节点,排除 children 字段\n const { [childrenField]: children, ...rest } = currentNode;\n\n result.push(rest);\n\n // 如果有子节点,递归处理\n if (children && Array.isArray(children)) {\n flatten(children);\n }\n }\n }\n\n flatten(treeData);\n\n return result;\n}\n"],"names":[],"mappings":"AAMO,SAAS,WAAA,CAA2C,UAAe,MAAA,EAAqC;AAC7G,EAAA,MAAM,aAAA,GAAgB,QAAQ,QAAA,IAAY,UAAA;AAC1C,EAAA,MAAM,SAAgB,EAAC;AAMvB,EAAA,SAAS,QAAQ,KAAA,EAAY;AAC3B,IAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,MAAA,MAAM,WAAA,GAAc,IAAA;AAGpB,MAAA,MAAM,EAAE,CAAC,aAAa,GAAG,QAAA,EAAU,GAAG,MAAK,GAAI,WAAA;AAE/C,MAAA,MAAA,CAAO,KAAK,IAAI,CAAA;AAGhB,MAAA,IAAI,QAAA,IAAY,KAAA,CAAM,OAAA,CAAQ,QAAQ,CAAA,EAAG;AACvC,QAAA,OAAA,CAAQ,QAAQ,CAAA;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAEA,EAAA,OAAA,CAAQ,QAAQ,CAAA;AAEhB,EAAA,OAAO,MAAA;AACT;;;;"}
@@ -1,2 +1,3 @@
1
1
  export * from './filterTreeByName';
2
2
  export * from './findChildrenItem';
3
+ export * from './flattenTree';
@@ -1,3 +1,4 @@
1
1
  export { filterTreeByName } from './filterTreeByName.mjs';
2
2
  export { findChildrenItem } from './findChildrenItem.mjs';
3
+ export { flattenTree } from './flattenTree.mjs';
3
4
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
@@ -30,6 +30,7 @@ var base64 = require('../utils/src/crypto/base64.js');
30
30
  var number = require('../utils/src/number.js');
31
31
  var filterTreeByName = require('../utils/src/tree/filterTreeByName.js');
32
32
  var findChildrenItem = require('../utils/src/tree/findChildrenItem.js');
33
+ var flattenTree = require('../utils/src/tree/flattenTree.js');
33
34
  var index = require('../utils/src/pasteFile/index.js');
34
35
  var image = require('../utils/src/image.js');
35
36
  var array = require('../utils/src/array.js');
@@ -480,6 +481,7 @@ exports.uint8ArrayToBase64 = base64.uint8ArrayToBase64;
480
481
  exports.formatNumberWithCommas = number.formatNumberWithCommas;
481
482
  exports.filterTreeByName = filterTreeByName.filterTreeByName;
482
483
  exports.findChildrenItem = findChildrenItem.findChildrenItem;
484
+ exports.flattenTree = flattenTree.flattenTree;
483
485
  exports.PasteFileError = index.PasteFileError;
484
486
  exports.generateFileName = index.generateFileName;
485
487
  exports.handlePasteEvent = index.handlePasteEvent;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../packages/giime/index.ts"],"sourcesContent":["import installer from './defaults';\nimport './tailwind.css';\nexport * from '@giime/utils';\nexport * from '@giime/components';\nexport * from '@giime/hooks';\n// export * from '@giime/api'; // 用户通过giime/es/api 导入类型\nexport const install = installer.install;\nexport const version = installer.version;\nexport default installer;\n"],"names":["installer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMO,MAAM,UAAUA,gBAAA,CAAU;AAC1B,MAAM,UAAUA,gBAAA,CAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../packages/giime/index.ts"],"sourcesContent":["import installer from './defaults';\nimport './tailwind.css';\nexport * from '@giime/utils';\nexport * from '@giime/components';\nexport * from '@giime/hooks';\n// export * from '@giime/api'; // 用户通过giime/es/api 导入类型\nexport const install = installer.install;\nexport const version = installer.version;\nexport default installer;\n"],"names":["installer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMO,MAAM,UAAUA,gBAAA,CAAU;AAC1B,MAAM,UAAUA,gBAAA,CAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- export declare const version = "0.8.2";
1
+ export declare const version = "0.8.4";
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const version = "0.8.2";
3
+ const version = "0.8.3";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sources":["../../../../packages/giime/version.ts"],"sourcesContent":["export const version = '0.8.2';\n"],"names":[],"mappings":";;AAAO,MAAM,OAAA,GAAU;;;;"}
1
+ {"version":3,"file":"version.js","sources":["../../../../packages/giime/version.ts"],"sourcesContent":["export const version = '0.8.3';\n"],"names":[],"mappings":";;AAAO,MAAM,OAAA,GAAU;;;;"}
@@ -1,7 +1,10 @@
1
1
  export interface DictionaryOption {
2
2
  label: string;
3
3
  value: any;
4
- tagType?: 'success' | 'warning' | 'info' | 'primary' | 'danger';
4
+ /**
5
+ * 标签类型 'success' | 'warning' | 'info' | 'primary' | 'danger'
6
+ */
7
+ tagType?: string;
5
8
  }
6
9
  /**字典 */
7
10
  export declare const useDictionary: <T extends string>(fieldCodes: T[], options?: {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../../packages/hooks/base/useDictionary/index.ts"],"sourcesContent":["import type { DataDictVo } from '@giime/api/guardBasic/interface';\nimport { usePostBasicV1DataDictionaryBatchDetailByCode } from '@giime/api/guardBasic/controller';\nimport { ref, computed } from 'vue';\nimport { tryOnMounted } from '@vueuse/core';\n\nexport interface DictionaryOption {\n label: string;\n value: any;\n tagType?: 'success' | 'warning' | 'info' | 'primary' | 'danger';\n}\n/**字典 */\nexport const useDictionary = <T extends string>(fieldCodes: T[], options?: { immediate?: boolean }) => {\n const { exec: getDictionaryExec } = usePostBasicV1DataDictionaryBatchDetailByCode();\n const isLoading = ref(false);\n const dictionaryList = ref<DataDictVo[]>([]);\n const dictionary = computed(() => {\n return dictionaryList.value.reduce(\n (acc, item) => {\n acc[item.fieldCode as T] =\n item?.values?.map(it => ({\n label: it.valueName,\n value: it.valueCode,\n tagType: it.tagType as DictionaryOption['tagType'],\n })) || [];\n\n return acc;\n },\n {} as Record<T, DictionaryOption[]>,\n );\n });\n const getDictionary = async () => {\n isLoading.value = true;\n try {\n const { data } = await getDictionaryExec({ fieldCodes });\n\n dictionaryList.value = data.value?.data || [];\n } finally {\n isLoading.value = false;\n }\n };\n const immediate = options?.immediate ?? true;\n tryOnMounted(() => {\n if (immediate) {\n getDictionary();\n }\n });\n\n return {\n dictionaryList,\n dictionary,\n isLoading,\n getDictionary,\n };\n};\n"],"names":["usePostBasicV1DataDictionaryBatchDetailByCode","ref","computed","tryOnMounted"],"mappings":";;;;;;;AAWO,MAAM,aAAA,GAAgB,CAAmB,UAAA,EAAiB,OAAA,KAAsC;AACrG,EAAA,MAAM,EAAE,IAAA,EAAM,iBAAA,EAAkB,GAAIA,2FAAA,EAA8C;AAClF,EAAA,MAAM,SAAA,GAAYC,QAAI,KAAK,CAAA;AAC3B,EAAA,MAAM,cAAA,GAAiBA,OAAA,CAAkB,EAAE,CAAA;AAC3C,EAAA,MAAM,UAAA,GAAaC,aAAS,MAAM;AAChC,IAAA,OAAO,eAAe,KAAA,CAAM,MAAA;AAAA,MAC1B,CAAC,KAAK,IAAA,KAAS;AACb,QAAA,GAAA,CAAI,KAAK,SAAc,CAAA,GACrB,IAAA,EAAM,MAAA,EAAQ,IAAI,CAAA,EAAA,MAAO;AAAA,UACvB,OAAO,EAAA,CAAG,SAAA;AAAA,UACV,OAAO,EAAA,CAAG,SAAA;AAAA,UACV,SAAS,EAAA,CAAG;AAAA,SACd,CAAE,KAAK,EAAC;AAEV,QAAA,OAAO,GAAA;AAAA,MACT,CAAA;AAAA,MACA;AAAC,KACH;AAAA,EACF,CAAC,CAAA;AACD,EAAA,MAAM,gBAAgB,YAAY;AAChC,IAAA,SAAA,CAAU,KAAA,GAAQ,IAAA;AAClB,IAAA,IAAI;AACF,MAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,iBAAA,CAAkB,EAAE,YAAY,CAAA;AAEvD,MAAA,cAAA,CAAe,KAAA,GAAQ,IAAA,CAAK,KAAA,EAAO,IAAA,IAAQ,EAAC;AAAA,IAC9C,CAAA,SAAE;AACA,MAAA,SAAA,CAAU,KAAA,GAAQ,KAAA;AAAA,IACpB;AAAA,EACF,CAAA;AACA,EAAA,MAAM,SAAA,GAAY,SAAS,SAAA,IAAa,IAAA;AACxC,EAAAC,iBAAA,CAAa,MAAM;AACjB,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,aAAA,EAAc;AAAA,IAChB;AAAA,EACF,CAAC,CAAA;AAED,EAAA,OAAO;AAAA,IACL,cAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../../packages/hooks/base/useDictionary/index.ts"],"sourcesContent":["import type { DataDictVo } from '@giime/api/guardBasic/interface';\nimport { usePostBasicV1DataDictionaryBatchDetailByCode } from '@giime/api/guardBasic/controller';\nimport { ref, computed } from 'vue';\nimport { tryOnMounted } from '@vueuse/core';\n\nexport interface DictionaryOption {\n label: string;\n value: any;\n /**\n * 标签类型 'success' | 'warning' | 'info' | 'primary' | 'danger'\n */\n tagType?: string;\n}\n/**字典 */\nexport const useDictionary = <T extends string>(fieldCodes: T[], options?: { immediate?: boolean }) => {\n const { exec: getDictionaryExec } = usePostBasicV1DataDictionaryBatchDetailByCode();\n const isLoading = ref(false);\n const dictionaryList = ref<DataDictVo[]>([]);\n const dictionary = computed(() => {\n return dictionaryList.value.reduce(\n (acc, item) => {\n acc[item.fieldCode as T] =\n item?.values?.map(it => ({\n label: it.valueName,\n value: it.valueCode,\n tagType: it.tagType as DictionaryOption['tagType'],\n })) || [];\n\n return acc;\n },\n {} as Record<T, DictionaryOption[]>,\n );\n });\n const getDictionary = async () => {\n isLoading.value = true;\n try {\n const { data } = await getDictionaryExec({ fieldCodes });\n\n dictionaryList.value = data.value?.data || [];\n } finally {\n isLoading.value = false;\n }\n };\n const immediate = options?.immediate ?? true;\n tryOnMounted(() => {\n if (immediate) {\n getDictionary();\n }\n });\n\n return {\n dictionaryList,\n dictionary,\n isLoading,\n getDictionary,\n };\n};\n"],"names":["usePostBasicV1DataDictionaryBatchDetailByCode","ref","computed","tryOnMounted"],"mappings":";;;;;;;AAcO,MAAM,aAAA,GAAgB,CAAmB,UAAA,EAAiB,OAAA,KAAsC;AACrG,EAAA,MAAM,EAAE,IAAA,EAAM,iBAAA,EAAkB,GAAIA,2FAAA,EAA8C;AAClF,EAAA,MAAM,SAAA,GAAYC,QAAI,KAAK,CAAA;AAC3B,EAAA,MAAM,cAAA,GAAiBA,OAAA,CAAkB,EAAE,CAAA;AAC3C,EAAA,MAAM,UAAA,GAAaC,aAAS,MAAM;AAChC,IAAA,OAAO,eAAe,KAAA,CAAM,MAAA;AAAA,MAC1B,CAAC,KAAK,IAAA,KAAS;AACb,QAAA,GAAA,CAAI,KAAK,SAAc,CAAA,GACrB,IAAA,EAAM,MAAA,EAAQ,IAAI,CAAA,EAAA,MAAO;AAAA,UACvB,OAAO,EAAA,CAAG,SAAA;AAAA,UACV,OAAO,EAAA,CAAG,SAAA;AAAA,UACV,SAAS,EAAA,CAAG;AAAA,SACd,CAAE,KAAK,EAAC;AAEV,QAAA,OAAO,GAAA;AAAA,MACT,CAAA;AAAA,MACA;AAAC,KACH;AAAA,EACF,CAAC,CAAA;AACD,EAAA,MAAM,gBAAgB,YAAY;AAChC,IAAA,SAAA,CAAU,KAAA,GAAQ,IAAA;AAClB,IAAA,IAAI;AACF,MAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,iBAAA,CAAkB,EAAE,YAAY,CAAA;AAEvD,MAAA,cAAA,CAAe,KAAA,GAAQ,IAAA,CAAK,KAAA,EAAO,IAAA,IAAQ,EAAC;AAAA,IAC9C,CAAA,SAAE;AACA,MAAA,SAAA,CAAU,KAAA,GAAQ,KAAA;AAAA,IACpB;AAAA,EACF,CAAA;AACA,EAAA,MAAM,SAAA,GAAY,SAAS,SAAA,IAAa,IAAA;AACxC,EAAAC,iBAAA,CAAa,MAAM;AACjB,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,aAAA,EAAc;AAAA,IAChB;AAAA,EACF,CAAC,CAAA;AAED,EAAA,OAAO;AAAA,IACL,cAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}