@ivujs/i-utils 1.1.1 → 1.1.3

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 (140) hide show
  1. package/README.md +17 -19
  2. package/dist/cjs/id/index.cjs +26 -43
  3. package/dist/cjs/index.cjs +8 -398
  4. package/dist/es/id/index.d.ts +16 -0
  5. package/dist/es/id/index.mjs +28 -42
  6. package/dist/es/index.d.ts +2 -0
  7. package/dist/es/index.mjs +8 -58
  8. package/dist/index.d.ts +21 -0
  9. package/dist/lib/index.full.cjs.js +38 -0
  10. package/dist/lib/index.full.cjs.min.js +2 -0
  11. package/dist/lib/index.full.cjs.min.js.map +1 -0
  12. package/dist/lib/index.full.esm.js +35 -15822
  13. package/dist/lib/index.full.esm.min.js +2 -58
  14. package/dist/lib/index.full.esm.min.js.map +1 -0
  15. package/dist/lib/index.full.umd.js +39 -16176
  16. package/dist/lib/index.full.umd.min.js +2 -0
  17. package/dist/lib/index.full.umd.min.js.map +1 -0
  18. package/package.json +84 -54
  19. package/dist/cjs/ID-card/index.cjs +0 -122
  20. package/dist/cjs/array/index.cjs +0 -465
  21. package/dist/cjs/clipboard/index.cjs +0 -135
  22. package/dist/cjs/color/index.cjs +0 -210
  23. package/dist/cjs/constants/date.cjs +0 -186
  24. package/dist/cjs/constants/lang.cjs +0 -13
  25. package/dist/cjs/constants/math.cjs +0 -13
  26. package/dist/cjs/constants/regexp.cjs +0 -57
  27. package/dist/cjs/constants/sort.cjs +0 -15
  28. package/dist/cjs/cookie/index.cjs +0 -71
  29. package/dist/cjs/crypto/aes/aes.cjs +0 -533
  30. package/dist/cjs/crypto/aes/index.cjs +0 -28
  31. package/dist/cjs/crypto/base32/base32.cjs +0 -385
  32. package/dist/cjs/crypto/base32/index.cjs +0 -44
  33. package/dist/cjs/crypto/base64/base64.cjs +0 -433
  34. package/dist/cjs/crypto/base64/index.cjs +0 -64
  35. package/dist/cjs/crypto/des/des.cjs +0 -1054
  36. package/dist/cjs/crypto/des/index.cjs +0 -30
  37. package/dist/cjs/crypto/md5/index.cjs +0 -25
  38. package/dist/cjs/crypto/md5/md5.cjs +0 -944
  39. package/dist/cjs/crypto/sha/sha1/index.cjs +0 -25
  40. package/dist/cjs/crypto/sha/sha1/sha1.cjs +0 -602
  41. package/dist/cjs/crypto/sha/sha256/index.cjs +0 -46
  42. package/dist/cjs/crypto/sha/sha256/sha256.cjs +0 -654
  43. package/dist/cjs/crypto/sha/sha3/index.cjs +0 -44
  44. package/dist/cjs/crypto/sha/sha3/sha3.cjs +0 -747
  45. package/dist/cjs/crypto/sha/sha512/index.cjs +0 -88
  46. package/dist/cjs/crypto/sha/sha512/sha512.cjs +0 -1186
  47. package/dist/cjs/crypto/sm/lib/asn1.cjs +0 -167
  48. package/dist/cjs/crypto/sm/lib/ec.cjs +0 -352
  49. package/dist/cjs/crypto/sm/lib/jsbn.cjs +0 -1633
  50. package/dist/cjs/crypto/sm/lib/sm3.cjs +0 -173
  51. package/dist/cjs/crypto/sm/lib/utils.cjs +0 -198
  52. package/dist/cjs/crypto/sm/sm2/index.cjs +0 -122
  53. package/dist/cjs/crypto/sm/sm2/sm2.cjs +0 -269
  54. package/dist/cjs/crypto/sm/sm3/index.cjs +0 -15
  55. package/dist/cjs/crypto/sm/sm3/sm3.cjs +0 -103
  56. package/dist/cjs/crypto/sm/sm4/index.cjs +0 -28
  57. package/dist/cjs/crypto/sm/sm4/sm4.cjs +0 -362
  58. package/dist/cjs/crypto/tea/index.cjs +0 -26
  59. package/dist/cjs/crypto/tea/tea.cjs +0 -215
  60. package/dist/cjs/date/index.cjs +0 -1349
  61. package/dist/cjs/desensitized/index.cjs +0 -74
  62. package/dist/cjs/device/index.cjs +0 -159
  63. package/dist/cjs/dom/index.cjs +0 -176
  64. package/dist/cjs/file/index.cjs +0 -339
  65. package/dist/cjs/function/index.cjs +0 -67
  66. package/dist/cjs/keycode/index.cjs +0 -142
  67. package/dist/cjs/math/index.cjs +0 -284
  68. package/dist/cjs/number/index.cjs +0 -14
  69. package/dist/cjs/object/index.cjs +0 -216
  70. package/dist/cjs/pagination/index.cjs +0 -140
  71. package/dist/cjs/random/index.cjs +0 -25
  72. package/dist/cjs/regexp/index.cjs +0 -109
  73. package/dist/cjs/storage/index.cjs +0 -11
  74. package/dist/cjs/storage/localStorage.cjs +0 -40
  75. package/dist/cjs/storage/sessionStorage.cjs +0 -40
  76. package/dist/cjs/string/index.cjs +0 -338
  77. package/dist/cjs/url/index.cjs +0 -279
  78. package/dist/cjs/validate/index.cjs +0 -487
  79. package/dist/cjs/weapp/index.cjs +0 -151
  80. package/dist/es/ID-card/index.mjs +0 -116
  81. package/dist/es/array/index.mjs +0 -437
  82. package/dist/es/clipboard/index.mjs +0 -129
  83. package/dist/es/color/index.mjs +0 -200
  84. package/dist/es/constants/date.mjs +0 -184
  85. package/dist/es/constants/lang.mjs +0 -11
  86. package/dist/es/constants/math.mjs +0 -11
  87. package/dist/es/constants/regexp.mjs +0 -55
  88. package/dist/es/constants/sort.mjs +0 -13
  89. package/dist/es/cookie/index.mjs +0 -65
  90. package/dist/es/crypto/aes/aes.mjs +0 -529
  91. package/dist/es/crypto/aes/index.mjs +0 -25
  92. package/dist/es/crypto/base32/base32.mjs +0 -381
  93. package/dist/es/crypto/base32/index.mjs +0 -39
  94. package/dist/es/crypto/base64/base64.mjs +0 -427
  95. package/dist/es/crypto/base64/index.mjs +0 -57
  96. package/dist/es/crypto/des/des.mjs +0 -1050
  97. package/dist/es/crypto/des/index.mjs +0 -27
  98. package/dist/es/crypto/md5/index.mjs +0 -22
  99. package/dist/es/crypto/md5/md5.mjs +0 -941
  100. package/dist/es/crypto/sha/sha1/index.mjs +0 -22
  101. package/dist/es/crypto/sha/sha1/sha1.mjs +0 -599
  102. package/dist/es/crypto/sha/sha256/index.mjs +0 -41
  103. package/dist/es/crypto/sha/sha256/sha256.mjs +0 -649
  104. package/dist/es/crypto/sha/sha3/index.mjs +0 -39
  105. package/dist/es/crypto/sha/sha3/sha3.mjs +0 -742
  106. package/dist/es/crypto/sha/sha512/index.mjs +0 -79
  107. package/dist/es/crypto/sha/sha512/sha512.mjs +0 -1177
  108. package/dist/es/crypto/sm/lib/asn1.mjs +0 -164
  109. package/dist/es/crypto/sm/lib/ec.mjs +0 -349
  110. package/dist/es/crypto/sm/lib/jsbn.mjs +0 -1630
  111. package/dist/es/crypto/sm/lib/sm3.mjs +0 -170
  112. package/dist/es/crypto/sm/lib/utils.mjs +0 -186
  113. package/dist/es/crypto/sm/sm2/index.mjs +0 -111
  114. package/dist/es/crypto/sm/sm2/sm2.mjs +0 -258
  115. package/dist/es/crypto/sm/sm3/index.mjs +0 -13
  116. package/dist/es/crypto/sm/sm3/sm3.mjs +0 -99
  117. package/dist/es/crypto/sm/sm4/index.mjs +0 -25
  118. package/dist/es/crypto/sm/sm4/sm4.mjs +0 -359
  119. package/dist/es/crypto/tea/index.mjs +0 -23
  120. package/dist/es/crypto/tea/tea.mjs +0 -211
  121. package/dist/es/date/index.mjs +0 -1262
  122. package/dist/es/desensitized/index.mjs +0 -69
  123. package/dist/es/device/index.mjs +0 -145
  124. package/dist/es/dom/index.mjs +0 -164
  125. package/dist/es/file/index.mjs +0 -323
  126. package/dist/es/function/index.mjs +0 -63
  127. package/dist/es/keycode/index.mjs +0 -139
  128. package/dist/es/math/index.mjs +0 -274
  129. package/dist/es/number/index.mjs +0 -12
  130. package/dist/es/object/index.mjs +0 -203
  131. package/dist/es/pagination/index.mjs +0 -134
  132. package/dist/es/random/index.mjs +0 -22
  133. package/dist/es/regexp/index.mjs +0 -98
  134. package/dist/es/storage/index.mjs +0 -9
  135. package/dist/es/storage/localStorage.mjs +0 -35
  136. package/dist/es/storage/sessionStorage.mjs +0 -35
  137. package/dist/es/string/index.mjs +0 -321
  138. package/dist/es/url/index.mjs +0 -261
  139. package/dist/es/validate/index.mjs +0 -451
  140. package/dist/es/weapp/index.mjs +0 -140
package/dist/es/index.mjs CHANGED
@@ -1,59 +1,9 @@
1
- export { SORT } from './constants/sort.mjs';
2
- export { MATH } from './constants/math.mjs';
3
- export { LANG } from './constants/lang.mjs';
4
- export { REGEXP } from './constants/regexp.mjs';
5
- export { DATE } from './constants/date.mjs';
6
- export { formatRmbChinese, formatThousand, inString, replaceAll, toCamelCase, toKebabCase, toLower, toPascalCase, toSnakeCase, toUpper, trim, trimAll, trimEnd, trimStart, zeroEnd, zeroStart } from './string/index.mjs';
7
- export { parseInt } from './number/index.mjs';
8
- export { arrayAvg, arrayBottom, arrayComplement, arrayCreate, arrayDifference, arrayDown, arrayEquals, arrayInsert, arrayInsertAfter, arrayInsertBefore, arrayIntersect, arrayMax, arrayMin, arrayRemove, arrayRemoveAfter, arrayRemoveBefore, arrayShuffle, arraySort, arraySum, arraySwap, arrayToTree, arrayTop, arrayUnion, arrayUnique, arrayUp, inArray, treeToArray } from './array/index.mjs';
9
- export { clone, cloneDeep, getTargetValueByPath, jsonToMap, mapToJson, mapToObject, merge, objectEquals, objectToMap, parseJson, setTargetValueByPath, stringifyJson } from './object/index.mjs';
10
- export { debounce, sleep, throttle } from './function/index.mjs';
11
- export { addDate, addHours, addMillisecond, addMinutes, addMonth, addQuarter, addSeconds, addWeek, addYear, formatDate, getAge, getBetweenDates, getBetweenMonths, getBetweenYears, getChineseZodiac, getDate, getDateArray, getDateObject, getDateTime, getDayOfMonth, getDayOfWeek, getDayOfYear, getDaysOfMonth, getDaysOfWeek, getDaysOfYear, getDiffDay, getDiffMonth, getDiffWeek, getDiffYear, getFirstDateOfMonth, getFirstDateOfWeek, getFirstDateOfYear, getFullDateOfMonth, getFullDateOfWeek, getFullDateOfYear, getLastDateOfMonth, getLastDateOfWeek, getLastDateOfYear, getNow, getOverTime, getPastTime, getQuarter, getTimestamp, getUnixTimestamp, getWeek, getWeekOfMonth, getWeekOfYear, getWeeksOfMonth, getWeeksOfYear, getZodiac, isAM, isAfter, isAfterTomorrow, isBefore, isBeforeYesterday, isBetween, isCommonYear, isFirstDayOfMonth, isFirstDayOfWeek, isFirstDayOfYear, isLastDayOfMonth, isLastDayOfWeek, isLastDayOfYear, isLeapYear, isPM, isSame, isSameMonth, isSameOrAfter, isSameOrBefore, isSameWeek, isSameYear, isToday, isTomorrow, isWeekend, isWorkday, isYesterday, lastMonth, lastWeek, lastYear, nextMonth, nextWeek, nextYear, parseDate, today, tomorrow, yesterday } from './date/index.mjs';
12
- export { add, divide, gcd, modulo, multiply, scm, subtract, toDecimal, toFixed } from './math/index.mjs';
13
- export { isChinese, isEmail, isEnglish, isExternal, isIdCard, isLowerCase, isMobile, isUpperCase, isUrl, regexpTest } from './regexp/index.mjs';
14
- export { getRandom, getRandomDigit } from './random/index.mjs';
15
- export { base64ToBlob, base64ToFile, blobToBase64, blobToFile, blobToText, downloadBlobFile, downloadFileUrl, fileToBase64, fileToBlob, fileToUrl, formatFileSize, getFileName, getFileSuffix, urlToBase64, urlToFile } from './file/index.mjs';
16
- export { getRandomHex, getRandomRgb, getRandomRgba, hexToHsl, hexToRgb, hexToRgba, rgbToHex, rgbaToHex, rgbaToHsl } from './color/index.mjs';
17
- export { deepCompare, equals, equalsIgnoreCase, isArray, isAsyncFunction, isBigInt, isBlank, isBoolean, isDate, isDecimal, isEmpty, isError, isFalse, isFunction, isInteger, isJson, isMap, isNaN, isNotBlank, isNotEmpty, isNotNaN, isNotNull, isNotUndefined, isNull, isNumber, isObject, isPromise, isRegExp, isSet, isString, isSymbol, isTrue, isUndefined, isWeakMap, isWeakSet } from './validate/index.mjs';
18
- export { getKeyCode, getKeyName } from './keycode/index.mjs';
19
- export { getGUID, getUUID } from './id/index.mjs';
20
- import * as index from './crypto/base64/index.mjs';
21
- export { index as base64 };
22
- import * as index$1 from './crypto/base32/index.mjs';
23
- export { index$1 as base32 };
24
- export { md5, md5_hmac } from './crypto/md5/index.mjs';
25
- export { sha1, sha1_hmac } from './crypto/sha/sha1/index.mjs';
26
- export { sha224, sha224_hmac, sha256, sha256_hmac } from './crypto/sha/sha256/index.mjs';
27
- export { sha384, sha384_hmac, sha512, sha512_224, sha512_224_hmac, sha512_256, sha512_256_hmac, sha512_hmac } from './crypto/sha/sha512/index.mjs';
28
- export { sha3_224, sha3_256, sha3_384, sha3_512 } from './crypto/sha/sha3/index.mjs';
29
- import * as index$5 from './crypto/sm/sm2/index.mjs';
30
- export { index$5 as sm2 };
31
- import * as index$6 from './crypto/sm/sm3/index.mjs';
32
- export { index$6 as sm3 };
33
- import * as index$7 from './crypto/sm/sm4/index.mjs';
34
- export { index$7 as sm4 };
35
- import * as index$2 from './crypto/aes/index.mjs';
36
- export { index$2 as aes };
37
- import * as index$3 from './crypto/des/index.mjs';
38
- export { index$3 as des };
39
- import * as index$4 from './crypto/tea/index.mjs';
40
- export { index$4 as tea };
41
- export { formatStartOfBankCard, formatStartOfIDCard, formatStartOfMobile, formatStartOfName } from './desensitized/index.mjs';
42
- export { getAgeByIDCard, getBirthdayByIDCard, getInfoByIDCard, getProvinceByIDCard, getSexByIDCard } from './ID-card/index.mjs';
43
- export { getLimit, getNextPage, getPrevPage, getRainbowPager, getTotalPage } from './pagination/index.mjs';
44
- export { appendSearchParam, appendToSearchParam, formatSearchString, getHost, getHostName, getPort, getProtocol, getSearchParam, getSearchString, getUrlHash, getUrlPath, hasSearchParam, parseSearchParam, prependSearchParam, prependToSearchParam, removeSearchParam, setSearchParam } from './url/index.mjs';
45
- export { clearCookie, getCookie, isSupportCookie, removeCookie, setCookie } from './cookie/index.mjs';
46
- export { isSupportStorage } from './storage/index.mjs';
47
- export { addClass, addStyle, copyText, getCopyText, getStyle, hasClass, htmlDecode, htmlEncode, removeClass, removeStyle, replaceClass } from './dom/index.mjs';
48
- export { getBrowserInfo, isAndroid, isIos, isIpad, isIphone, isLinux, isMac, isPc, isPhone, isQQ, isWeixin, isWindows, isWindowsPhone } from './device/index.mjs';
49
- export { clearClipboard, getClipboard, getClipboardText, setClipboard, setClipboardText } from './clipboard/index.mjs';
50
- export { clearStorage, clearStorageSync, getStorage, getStorageInfo, getStorageInfoSync, getStorageSync, removeStorage, removeStorageSync, setStorage, setStorageSync } from './weapp/index.mjs';
51
- export { clearLocalStorage, getLocalStorage, removeLocalStorage, setLocalStorage } from './storage/localStorage.mjs';
52
- export { clearSessionStorage, getSessionStorage, removeSessionStorage, setSessionStorage } from './storage/sessionStorage.mjs';
53
-
54
- // 测试加载成功方法
55
- const loadedTest = function () {
56
- console.log("Nice, iUtils loaded successfully!");
1
+ import { getGUID, getUUID } from "./id/index.mjs";
2
+ function loadedTest() {
3
+ console.log("Nice, iUtils loaded successfully!");
4
+ }
5
+ export {
6
+ getGUID,
7
+ getUUID,
8
+ loadedTest
57
9
  };
58
-
59
- export { loadedTest };
@@ -0,0 +1,21 @@
1
+ /**
2
+ * 生成GUID
3
+ * @example
4
+ * getGUID() // 输出:275ec770-0853-6767-4875-7b270220ce9c
5
+ * @returns {String} 返回字符串
6
+ */
7
+ export declare function getGUID(): string;
8
+
9
+ /**
10
+ * 生成UUID
11
+ * @param {Number} len 生成的长度,默认32位
12
+ * @param {Number} radix 进制数,默认16进制
13
+ * @example
14
+ * getUUID() // 输出:0a559343dbbf0e7e6c1de90163e7aa0a
15
+ * @returns {String} 返回字符串
16
+ */
17
+ export declare function getUUID(len?: number, radix?: number): string;
18
+
19
+ export declare function loadedTest(): void;
20
+
21
+ export { }
@@ -0,0 +1,38 @@
1
+ /*!
2
+ * @ivujs/i-utils v1.1.3
3
+ * Copyright 2021-2026, <gao911222@163.com>
4
+ * Released under the MIT License.
5
+ */
6
+ "use strict";
7
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
8
+ function getUUID(len = 32, radix = 16) {
9
+ const CHARS = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");
10
+ let uuid = [], i;
11
+ radix = radix || CHARS.length;
12
+ if (len) {
13
+ for (i = 0; i < len; i++) uuid[i] = CHARS[0 | Math.random() * radix];
14
+ } else {
15
+ let r;
16
+ uuid[8] = uuid[13] = uuid[18] = uuid[23] = "-";
17
+ uuid[14] = "4";
18
+ for (i = 0; i < 36; i++) {
19
+ if (!uuid[i]) {
20
+ r = 0 | Math.random() * 16;
21
+ uuid[i] = CHARS[i === 19 ? r & 3 | 8 : r];
22
+ }
23
+ }
24
+ }
25
+ return uuid.join("");
26
+ }
27
+ function getGUID() {
28
+ let s4 = function() {
29
+ return ((1 + Math.random()) * 65536 | 0).toString(16).substring(1);
30
+ };
31
+ return s4() + s4() + "-" + s4() + "-" + s4() + "-" + s4() + "-" + s4() + s4() + s4();
32
+ }
33
+ function loadedTest() {
34
+ console.log("Nice, iUtils loaded successfully!");
35
+ }
36
+ exports.getGUID = getGUID;
37
+ exports.getUUID = getUUID;
38
+ exports.loadedTest = loadedTest;
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"}),exports.getGUID=function(){let t=function(){return(65536*(1+Math.random())|0).toString(16).substring(1)};return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()},exports.getUUID=function(t=32,e=16){const o="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");let n,r=[];if(e=e||o.length,t)for(n=0;n<t;n++)r[n]=o[0|Math.random()*e];else{let t;for(r[8]=r[13]=r[18]=r[23]="-",r[14]="4",n=0;n<36;n++)r[n]||(t=0|16*Math.random(),r[n]=o[19===n?3&t|8:t])}return r.join("")},exports.loadedTest=function(){console.log("Nice, iUtils loaded successfully!")};
2
+ //# sourceMappingURL=index.full.cjs.min.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.full.cjs.min.js","sources":["../../src/id/index.ts","../../src/index.ts"],"sourcesContent":["/**\r\n * 生成UUID\r\n * @param {Number} len 生成的长度,默认32位\r\n * @param {Number} radix 进制数,默认16进制\r\n * @example\r\n * getUUID() // 输出:0a559343dbbf0e7e6c1de90163e7aa0a\r\n * @returns {String} 返回字符串\r\n */\r\nexport function getUUID(len: number = 32, radix: number = 16): string {\r\n const CHARS = \"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\".split(\"\");\r\n let uuid = [],\r\n i;\r\n radix = radix || CHARS.length;\r\n if (len) {\r\n for (i = 0; i < len; i++) uuid[i] = CHARS[0 | (Math.random() * radix)];\r\n } else {\r\n let r;\r\n uuid[8] = uuid[13] = uuid[18] = uuid[23] = \"-\";\r\n uuid[14] = \"4\";\r\n for (i = 0; i < 36; i++) {\r\n if (!uuid[i]) {\r\n r = 0 | (Math.random() * 16);\r\n uuid[i] = CHARS[i === 19 ? (r & 0x3) | 0x8 : r];\r\n }\r\n }\r\n }\r\n return uuid.join(\"\");\r\n}\r\n\r\n/**\r\n * 生成GUID\r\n * @example\r\n * getGUID() // 输出:275ec770-0853-6767-4875-7b270220ce9c\r\n * @returns {String} 返回字符串\r\n */\r\nexport function getGUID(): string {\r\n let s4 = function () {\r\n return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);\r\n };\r\n return s4() + s4() + \"-\" + s4() + \"-\" + s4() + \"-\" + s4() + \"-\" + s4() + s4() + s4();\r\n}\r\n","// 测试加载成功方法\r\nexport function loadedTest(): void {\r\n console.log(\"Nice, iUtils loaded successfully!\");\r\n}\r\n\r\n// 生成id\r\nexport * from \"./id/index.ts\";\r\n"],"names":["s4","Math","random","toString","substring","len","radix","CHARS","split","i","uuid","length","r","join","console","log"],"mappings":"gGAmCO,WACL,IAAIA,EAAK,WACP,OAA+B,OAArB,EAAIC,KAAKC,UAAuB,GAAGC,SAAS,IAAIC,UAAU,EACtE,EACA,OAAOJ,IAAOA,IAAO,IAAMA,IAAO,IAAMA,IAAO,IAAMA,IAAO,IAAMA,IAAOA,IAAOA,GAClF,kBAhCO,SAAiBK,EAAc,GAAIC,EAAgB,IACxD,MAAMC,EAAQ,iEAAiEC,MAAM,IACrF,IACEC,EADEC,EAAO,GAGX,GADAJ,EAAQA,GAASC,EAAMI,OACnBN,EACF,IAAKI,EAAI,EAAGA,EAAIJ,EAAKI,IAAKC,EAAKD,GAAKF,EAAM,EAAKN,KAAKC,SAAWI,OAC1D,CACL,IAAIM,EAGJ,IAFAF,EAAK,GAAKA,EAAK,IAAMA,EAAK,IAAMA,EAAK,IAAM,IAC3CA,EAAK,IAAM,IACND,EAAI,EAAGA,EAAI,GAAIA,IACbC,EAAKD,KACRG,EAAI,EAAqB,GAAhBX,KAAKC,SACdQ,EAAKD,GAAKF,EAAY,KAANE,EAAgB,EAAJG,EAAW,EAAMA,GAGnD,CACA,OAAOF,EAAKG,KAAK,GACnB,qBC1BO,WACLC,QAAQC,IAAI,oCACd"}