@xyo-network/shared 2.73.3 → 2.74.0

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 (103) hide show
  1. package/dist/IdLogger.d.mts.map +1 -0
  2. package/dist/IdLogger.d.ts +14 -0
  3. package/dist/IdLogger.d.ts.map +1 -0
  4. package/dist/Job/Job.d.mts.map +1 -0
  5. package/dist/Job/Job.d.ts +12 -0
  6. package/dist/Job/Job.d.ts.map +1 -0
  7. package/dist/Job/JobProvider.d.mts.map +1 -0
  8. package/dist/Job/JobProvider.d.ts +5 -0
  9. package/dist/Job/JobProvider.d.ts.map +1 -0
  10. package/dist/Job/Task.d.mts.map +1 -0
  11. package/dist/Job/Task.d.ts +2 -0
  12. package/dist/Job/Task.d.ts.map +1 -0
  13. package/dist/Job/index.d.mts.map +1 -0
  14. package/dist/{esm/Job/index.js → Job/index.d.ts} +1 -1
  15. package/dist/Job/index.d.ts.map +1 -0
  16. package/dist/Logger.d.mts.map +1 -0
  17. package/dist/Logger.d.ts +14 -0
  18. package/dist/Logger.d.ts.map +1 -0
  19. package/dist/dump.d.mts.map +1 -0
  20. package/dist/dump.d.ts +2 -0
  21. package/dist/dump.d.ts.map +1 -0
  22. package/dist/index.d.mts.map +1 -0
  23. package/dist/{esm/index.js → index.d.ts} +1 -1
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +151 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/index.mjs +118 -0
  28. package/dist/index.mjs.map +1 -0
  29. package/dist/is-ip/index.d.mts.map +1 -0
  30. package/dist/is-ip/index.d.ts +2 -0
  31. package/dist/is-ip/index.d.ts.map +1 -0
  32. package/dist/is-ip/ip-regex.d.mts.map +1 -0
  33. package/dist/is-ip/ip-regex.d.ts +10 -0
  34. package/dist/is-ip/ip-regex.d.ts.map +1 -0
  35. package/dist/is-ip/is-ip.d.mts.map +1 -0
  36. package/dist/is-ip/is-ip.d.ts +5 -0
  37. package/dist/is-ip/is-ip.d.ts.map +1 -0
  38. package/package.json +24 -17
  39. package/dist/cjs/IdLogger.js +0 -38
  40. package/dist/cjs/IdLogger.js.map +0 -1
  41. package/dist/cjs/Job/Job.js +0 -3
  42. package/dist/cjs/Job/Job.js.map +0 -1
  43. package/dist/cjs/Job/JobProvider.js +0 -3
  44. package/dist/cjs/Job/JobProvider.js.map +0 -1
  45. package/dist/cjs/Job/Task.js +0 -3
  46. package/dist/cjs/Job/Task.js.map +0 -1
  47. package/dist/cjs/Job/index.js +0 -7
  48. package/dist/cjs/Job/index.js.map +0 -1
  49. package/dist/cjs/Logger.js +0 -28
  50. package/dist/cjs/Logger.js.map +0 -1
  51. package/dist/cjs/dump.js +0 -19
  52. package/dist/cjs/dump.js.map +0 -1
  53. package/dist/cjs/index.js +0 -9
  54. package/dist/cjs/index.js.map +0 -1
  55. package/dist/cjs/is-ip/index.js +0 -5
  56. package/dist/cjs/is-ip/index.js.map +0 -1
  57. package/dist/cjs/is-ip/ip-regex.js +0 -33
  58. package/dist/cjs/is-ip/ip-regex.js.map +0 -1
  59. package/dist/cjs/is-ip/is-ip.js +0 -21
  60. package/dist/cjs/is-ip/is-ip.js.map +0 -1
  61. package/dist/docs.json +0 -1938
  62. package/dist/esm/IdLogger.js +0 -31
  63. package/dist/esm/IdLogger.js.map +0 -1
  64. package/dist/esm/Job/Job.js +0 -2
  65. package/dist/esm/Job/Job.js.map +0 -1
  66. package/dist/esm/Job/JobProvider.js +0 -2
  67. package/dist/esm/Job/JobProvider.js.map +0 -1
  68. package/dist/esm/Job/Task.js +0 -2
  69. package/dist/esm/Job/Task.js.map +0 -1
  70. package/dist/esm/Job/index.js.map +0 -1
  71. package/dist/esm/Logger.js +0 -23
  72. package/dist/esm/Logger.js.map +0 -1
  73. package/dist/esm/dump.js +0 -15
  74. package/dist/esm/dump.js.map +0 -1
  75. package/dist/esm/index.js.map +0 -1
  76. package/dist/esm/is-ip/index.js +0 -2
  77. package/dist/esm/is-ip/index.js.map +0 -1
  78. package/dist/esm/is-ip/ip-regex.js +0 -29
  79. package/dist/esm/is-ip/ip-regex.js.map +0 -1
  80. package/dist/esm/is-ip/is-ip.js +0 -14
  81. package/dist/esm/is-ip/is-ip.js.map +0 -1
  82. package/dist/types/IdLogger.d.ts.map +0 -1
  83. package/dist/types/Job/Job.d.ts.map +0 -1
  84. package/dist/types/Job/JobProvider.d.ts.map +0 -1
  85. package/dist/types/Job/Task.d.ts.map +0 -1
  86. package/dist/types/Job/index.d.ts.map +0 -1
  87. package/dist/types/Logger.d.ts.map +0 -1
  88. package/dist/types/dump.d.ts.map +0 -1
  89. package/dist/types/index.d.ts.map +0 -1
  90. package/dist/types/is-ip/index.d.ts.map +0 -1
  91. package/dist/types/is-ip/ip-regex.d.ts.map +0 -1
  92. package/dist/types/is-ip/is-ip.d.ts.map +0 -1
  93. /package/dist/{types/IdLogger.d.ts → IdLogger.d.mts} +0 -0
  94. /package/dist/{types/Job/Job.d.ts → Job/Job.d.mts} +0 -0
  95. /package/dist/{types/Job/JobProvider.d.ts → Job/JobProvider.d.mts} +0 -0
  96. /package/dist/{types/Job/Task.d.ts → Job/Task.d.mts} +0 -0
  97. /package/dist/{types/Job/index.d.ts → Job/index.d.mts} +0 -0
  98. /package/dist/{types/Logger.d.ts → Logger.d.mts} +0 -0
  99. /package/dist/{types/dump.d.ts → dump.d.mts} +0 -0
  100. /package/dist/{types/index.d.ts → index.d.mts} +0 -0
  101. /package/dist/{types/is-ip/index.d.ts → is-ip/index.d.mts} +0 -0
  102. /package/dist/{types/is-ip/ip-regex.d.ts → is-ip/ip-regex.d.mts} +0 -0
  103. /package/dist/{types/is-ip/is-ip.d.ts → is-ip/is-ip.d.mts} +0 -0
@@ -1,7 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./Job"), exports);
5
- tslib_1.__exportStar(require("./JobProvider"), exports);
6
- tslib_1.__exportStar(require("./Task"), exports);
7
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Job/index.ts"],"names":[],"mappings":";;;AAAA,gDAAqB;AACrB,wDAA6B;AAC7B,iDAAsB"}
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getFunctionName = void 0;
4
- const error_1 = require("@xyo-network/error");
5
- const getFunctionName = (depth = 2) => {
6
- try {
7
- throw Error();
8
- }
9
- catch (ex) {
10
- return (0, error_1.handleError)(ex, (error) => {
11
- var _a, _b;
12
- let newIndex = undefined;
13
- const stackParts = (_a = error.stack) === null || _a === void 0 ? void 0 : _a.split('\n')[depth].split(' ');
14
- const funcName = (_b = stackParts === null || stackParts === void 0 ? void 0 : stackParts.find((item, index) => {
15
- if (item.length > 0 && item !== 'at') {
16
- //check if constructor
17
- if (item === 'new') {
18
- newIndex = index;
19
- }
20
- return item;
21
- }
22
- })) !== null && _b !== void 0 ? _b : '<unknown>';
23
- return newIndex ? `${funcName} ${stackParts === null || stackParts === void 0 ? void 0 : stackParts[newIndex + 1]}` : funcName;
24
- });
25
- }
26
- };
27
- exports.getFunctionName = getFunctionName;
28
- //# sourceMappingURL=Logger.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../src/Logger.ts"],"names":[],"mappings":";;;AACA,8CAAgD;AAezC,MAAM,eAAe,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,EAAE;IAC3C,IAAI;QACF,MAAM,KAAK,EAAE,CAAA;KACd;IAAC,OAAO,EAAE,EAAE;QACX,OAAO,IAAA,mBAAW,EAAC,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE;;YAC/B,IAAI,QAAQ,GAAuB,SAAS,CAAA;YAC5C,MAAM,UAAU,GAAG,MAAA,KAAK,CAAC,KAAK,0CAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;YAC7D,MAAM,QAAQ,GACZ,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBAC/B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,KAAK,IAAI,EAAE;oBACpC,sBAAsB;oBACtB,IAAI,IAAI,KAAK,KAAK,EAAE;wBAClB,QAAQ,GAAG,KAAK,CAAA;qBACjB;oBACD,OAAO,IAAI,CAAA;iBACZ;YACH,CAAC,CAAC,mCAAI,WAAW,CAAA;YACnB,OAAO,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAA;QAC1E,CAAC,CAAC,CAAA;KACH;AACH,CAAC,CAAA;AApBY,QAAA,eAAe,mBAoB3B"}
package/dist/cjs/dump.js DELETED
@@ -1,19 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.dump = void 0;
4
- const dump = (obj) => {
5
- const cache = [];
6
- return JSON.stringify(obj, (key, value) => {
7
- if (typeof value === 'object' && value !== null) {
8
- // Duplicate reference found, discard key
9
- if (cache.includes(value)) {
10
- return '[circular]';
11
- }
12
- // Store value in our collection
13
- cache.push(value);
14
- }
15
- return value;
16
- }, 2);
17
- };
18
- exports.dump = dump;
19
- //# sourceMappingURL=dump.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dump.js","sourceRoot":"","sources":["../../src/dump.ts"],"names":[],"mappings":";;;AAAO,MAAM,IAAI,GAAG,CAAC,GAAY,EAAE,EAAE;IACnC,MAAM,KAAK,GAAc,EAAE,CAAA;IAC3B,OAAO,IAAI,CAAC,SAAS,CACnB,GAAG,EACH,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QACb,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;YAC/C,yCAAyC;YACzC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;gBACzB,OAAO,YAAY,CAAA;aACpB;YAED,gCAAgC;YAChC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;SAClB;QACD,OAAO,KAAK,CAAA;IACd,CAAC,EACD,CAAC,CACF,CAAA;AACH,CAAC,CAAA;AAlBY,QAAA,IAAI,QAkBhB"}
package/dist/cjs/index.js DELETED
@@ -1,9 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./dump"), exports);
5
- tslib_1.__exportStar(require("./IdLogger"), exports);
6
- tslib_1.__exportStar(require("./is-ip"), exports);
7
- tslib_1.__exportStar(require("./Job"), exports);
8
- tslib_1.__exportStar(require("./Logger"), exports);
9
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,iDAAsB;AACtB,qDAA0B;AAC1B,kDAAuB;AACvB,gDAAqB;AACrB,mDAAwB"}
@@ -1,5 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./is-ip"), exports);
5
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/is-ip/index.ts"],"names":[],"mappings":";;;AAAA,kDAAuB"}
@@ -1,33 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ipRegex = void 0;
4
- const word = '[a-fA-F\\d:]';
5
- const boundry = (options) => (options && options.includeBoundaries ? `(?:(?<=\\s|^)(?=${word})|(?<=${word})(?=\\s|$))` : '');
6
- const v4 = '(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}';
7
- const v6segment = '[a-fA-F\\d]{1,4}';
8
- const v6 = `
9
- (?:
10
- (?:${v6segment}:){7}(?:${v6segment}|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8
11
- (?:${v6segment}:){6}(?:${v4}|:${v6segment}|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4
12
- (?:${v6segment}:){5}(?::${v4}|(?::${v6segment}){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4
13
- (?:${v6segment}:){4}(?:(?::${v6segment}){0,1}:${v4}|(?::${v6segment}){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4
14
- (?:${v6segment}:){3}(?:(?::${v6segment}){0,2}:${v4}|(?::${v6segment}){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4
15
- (?:${v6segment}:){2}(?:(?::${v6segment}){0,3}:${v4}|(?::${v6segment}){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4
16
- (?:${v6segment}:){1}(?:(?::${v6segment}){0,4}:${v4}|(?::${v6segment}){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4
17
- (?::(?:(?::${v6segment}){0,5}:${v4}|(?::${v6segment}){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4
18
- )(?:%[0-9a-zA-Z]{1,})? // %eth0 %1
19
- `
20
- .replace(/\s*\/\/.*$/gm, '')
21
- .replace(/\n/g, '')
22
- .trim();
23
- // Pre-compile only the exact regexes because adding a global flag make regexes stateful
24
- const v46Exact = new RegExp(`(?:^${v4}$)|(?:^${v6}$)`);
25
- const v4exact = new RegExp(`^${v4}$`);
26
- const v6exact = new RegExp(`^${v6}$`);
27
- const ipRegex = (options) => options && options.exact
28
- ? v46Exact
29
- : new RegExp(`(?:${boundry(options)}${v4}${boundry(options)})|(?:${boundry(options)}${v6}${boundry(options)})`, 'g');
30
- exports.ipRegex = ipRegex;
31
- exports.ipRegex.v4 = (options) => (options && options.exact ? v4exact : new RegExp(`${boundry(options)}${v4}${boundry(options)}`, 'g'));
32
- exports.ipRegex.v6 = (options) => (options && options.exact ? v6exact : new RegExp(`${boundry(options)}${v6}${boundry(options)}`, 'g'));
33
- //# sourceMappingURL=ip-regex.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ip-regex.js","sourceRoot":"","sources":["../../../src/is-ip/ip-regex.ts"],"names":[],"mappings":";;;AAAA,MAAM,IAAI,GAAG,cAAc,CAAA;AAO3B,MAAM,OAAO,GAAG,CAAC,OAAgB,EAAE,EAAE,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,mBAAmB,IAAI,SAAS,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;AAErI,MAAM,EAAE,GAAG,gGAAgG,CAAA;AAE3G,MAAM,SAAS,GAAG,kBAAkB,CAAA;AAEpC,MAAM,EAAE,GAAG;;KAEN,SAAS,WAAW,SAAS;KAC7B,SAAS,WAAW,EAAE,KAAK,SAAS;KACpC,SAAS,YAAY,EAAE,QAAQ,SAAS;KACxC,SAAS,eAAe,SAAS,UAAU,EAAE,QAAQ,SAAS;KAC9D,SAAS,eAAe,SAAS,UAAU,EAAE,QAAQ,SAAS;KAC9D,SAAS,eAAe,SAAS,UAAU,EAAE,QAAQ,SAAS;KAC9D,SAAS,eAAe,SAAS,UAAU,EAAE,QAAQ,SAAS;aACtD,SAAS,UAAU,EAAE,QAAQ,SAAS;;CAElD;KACE,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;KAC3B,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;KAClB,IAAI,EAAE,CAAA;AAET,wFAAwF;AACxF,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,CAAA;AACtD,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;AACrC,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;AAE9B,MAAM,OAAO,GAAG,CAAC,OAAgB,EAAE,EAAE,CAC1C,OAAO,IAAI,OAAO,CAAC,KAAK;IACtB,CAAC,CAAC,QAAQ;IACV,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;AAH3G,QAAA,OAAO,WAGoG;AAExH,eAAO,CAAC,EAAE,GAAG,CAAC,OAAgB,EAAE,EAAE,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAA;AACxI,eAAO,CAAC,EAAE,GAAG,CAAC,OAAgB,EAAE,EAAE,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAA"}
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ipVersion = exports.isIPv4 = exports.isIPv6 = exports.isIP = void 0;
4
- const ip_regex_1 = require("./ip-regex");
5
- function isIP(value) {
6
- return (0, ip_regex_1.ipRegex)({ exact: true }).test(value);
7
- }
8
- exports.isIP = isIP;
9
- function isIPv6(value) {
10
- return ip_regex_1.ipRegex.v6({ exact: true }).test(value);
11
- }
12
- exports.isIPv6 = isIPv6;
13
- function isIPv4(value) {
14
- return ip_regex_1.ipRegex.v4({ exact: true }).test(value);
15
- }
16
- exports.isIPv4 = isIPv4;
17
- function ipVersion(value) {
18
- return isIP(value) ? (isIPv6(value) ? 6 : 4) : undefined;
19
- }
20
- exports.ipVersion = ipVersion;
21
- //# sourceMappingURL=is-ip.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"is-ip.js","sourceRoot":"","sources":["../../../src/is-ip/is-ip.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AAEpC,SAAgB,IAAI,CAAC,KAAa;IAChC,OAAO,IAAA,kBAAO,EAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC7C,CAAC;AAFD,oBAEC;AAED,SAAgB,MAAM,CAAC,KAAa;IAClC,OAAO,kBAAO,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAChD,CAAC;AAFD,wBAEC;AAED,SAAgB,MAAM,CAAC,KAAa;IAClC,OAAO,kBAAO,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAChD,CAAC;AAFD,wBAEC;AAED,SAAgB,SAAS,CAAC,KAAa;IACrC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AAC1D,CAAC;AAFD,8BAEC"}