@antelopejs/interface-database 0.0.2

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 (90) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +45 -0
  3. package/dist/antelope.test.d.ts +2 -0
  4. package/dist/antelope.test.js +35 -0
  5. package/dist/antelope.test.js.map +1 -0
  6. package/dist/common.d.ts +58 -0
  7. package/dist/common.js +44 -0
  8. package/dist/common.js.map +1 -0
  9. package/dist/datum.d.ts +55 -0
  10. package/dist/datum.js +70 -0
  11. package/dist/datum.js.map +1 -0
  12. package/dist/index.d.ts +6 -0
  13. package/dist/index.js +19 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/query.d.ts +15 -0
  16. package/dist/query.js +79 -0
  17. package/dist/query.js.map +1 -0
  18. package/dist/schema.d.ts +102 -0
  19. package/dist/schema.js +88 -0
  20. package/dist/schema.js.map +1 -0
  21. package/dist/selection.d.ts +99 -0
  22. package/dist/selection.js +119 -0
  23. package/dist/selection.js.map +1 -0
  24. package/dist/stream.d.ts +185 -0
  25. package/dist/stream.js +221 -0
  26. package/dist/stream.js.map +1 -0
  27. package/dist/tests/aggregation_operations.test.d.ts +1 -0
  28. package/dist/tests/aggregation_operations.test.js +157 -0
  29. package/dist/tests/aggregation_operations.test.js.map +1 -0
  30. package/dist/tests/basic_operations.test.d.ts +1 -0
  31. package/dist/tests/basic_operations.test.js +216 -0
  32. package/dist/tests/basic_operations.test.js.map +1 -0
  33. package/dist/tests/between_operations.test.d.ts +1 -0
  34. package/dist/tests/between_operations.test.js +76 -0
  35. package/dist/tests/between_operations.test.js.map +1 -0
  36. package/dist/tests/change_feeds.test.d.ts +1 -0
  37. package/dist/tests/change_feeds.test.js +90 -0
  38. package/dist/tests/change_feeds.test.js.map +1 -0
  39. package/dist/tests/datasets/index.d.ts +4 -0
  40. package/dist/tests/datasets/index.js +22 -0
  41. package/dist/tests/datasets/index.js.map +1 -0
  42. package/dist/tests/datasets/orders.d.ts +62 -0
  43. package/dist/tests/datasets/orders.js +158 -0
  44. package/dist/tests/datasets/orders.js.map +1 -0
  45. package/dist/tests/datasets/products.d.ts +48 -0
  46. package/dist/tests/datasets/products.js +139 -0
  47. package/dist/tests/datasets/products.js.map +1 -0
  48. package/dist/tests/datasets/users.d.ts +50 -0
  49. package/dist/tests/datasets/users.js +145 -0
  50. package/dist/tests/datasets/users.js.map +1 -0
  51. package/dist/tests/datasets/vehicles.d.ts +23 -0
  52. package/dist/tests/datasets/vehicles.js +41 -0
  53. package/dist/tests/datasets/vehicles.js.map +1 -0
  54. package/dist/tests/date_operations.test.d.ts +1 -0
  55. package/dist/tests/date_operations.test.js +119 -0
  56. package/dist/tests/date_operations.test.js.map +1 -0
  57. package/dist/tests/do_operations.test.d.ts +1 -0
  58. package/dist/tests/do_operations.test.js +209 -0
  59. package/dist/tests/do_operations.test.js.map +1 -0
  60. package/dist/tests/filters.test.d.ts +1 -0
  61. package/dist/tests/filters.test.js +158 -0
  62. package/dist/tests/filters.test.js.map +1 -0
  63. package/dist/tests/group_operations.test.d.ts +1 -0
  64. package/dist/tests/group_operations.test.js +190 -0
  65. package/dist/tests/group_operations.test.js.map +1 -0
  66. package/dist/tests/instance_modes.test.d.ts +1 -0
  67. package/dist/tests/instance_modes.test.js +192 -0
  68. package/dist/tests/instance_modes.test.js.map +1 -0
  69. package/dist/tests/joins.test.d.ts +1 -0
  70. package/dist/tests/joins.test.js +163 -0
  71. package/dist/tests/joins.test.js.map +1 -0
  72. package/dist/tests/lookup_operations.test.d.ts +1 -0
  73. package/dist/tests/lookup_operations.test.js +103 -0
  74. package/dist/tests/lookup_operations.test.js.map +1 -0
  75. package/dist/tests/merge_operations.test.d.ts +1 -0
  76. package/dist/tests/merge_operations.test.js +216 -0
  77. package/dist/tests/merge_operations.test.js.map +1 -0
  78. package/dist/tests/row_level_operations.test.d.ts +1 -0
  79. package/dist/tests/row_level_operations.test.js +467 -0
  80. package/dist/tests/row_level_operations.test.js.map +1 -0
  81. package/dist/tests/sorting.test.d.ts +1 -0
  82. package/dist/tests/sorting.test.js +161 -0
  83. package/dist/tests/sorting.test.js.map +1 -0
  84. package/dist/tests/union_operations.test.d.ts +1 -0
  85. package/dist/tests/union_operations.test.js +129 -0
  86. package/dist/tests/union_operations.test.js.map +1 -0
  87. package/dist/valueproxy.d.ts +415 -0
  88. package/dist/valueproxy.js +562 -0
  89. package/dist/valueproxy.js.map +1 -0
  90. package/package.json +88 -0
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const interface_database_1 = require("@antelopejs/interface-database");
4
+ const chai_1 = require("chai");
5
+ const users_1 = require("./datasets/users");
6
+ const tableName = "test-table";
7
+ const schema = new interface_database_1.Schema("test-sorting", {
8
+ [tableName]: users_1.User,
9
+ });
10
+ const table = schema.instance("default").table(tableName);
11
+ // Utiliser le dataset unifié
12
+ const testData = (0, users_1.getUniqueUsers)();
13
+ let insertedKeys = [];
14
+ describe("Sorting Operations", () => {
15
+ before(async () => {
16
+ await schema.createInstance("default").run();
17
+ });
18
+ after(async () => {
19
+ await table.delete().run();
20
+ await schema.destroyInstance("default").run();
21
+ });
22
+ it("Insert Test Data", InsertTestData);
23
+ it("Sort by String Ascending", SortByStringAscending);
24
+ it("Sort by String Descending", SortByStringDescending);
25
+ it("Sort by Number Ascending", SortByNumberAscending);
26
+ it("Sort by Number Descending", SortByNumberDescending);
27
+ it("Sort by Boolean Ascending", SortByBooleanAscending);
28
+ it("Sort by Boolean Descending", SortByBooleanDescending);
29
+ it("Sort by Date Ascending", SortByDateAscending);
30
+ it("Sort by Date Descending", SortByDateDescending);
31
+ it("Sort by Multiple Fields", SortByMultipleFields);
32
+ it("Cleanup", CleanupTest);
33
+ });
34
+ async function InsertTestData() {
35
+ const response = await table.insert(testData).run();
36
+ (0, chai_1.expect)(response).to.be.an("array");
37
+ (0, chai_1.expect)(response).to.have.lengthOf(testData.length);
38
+ response.forEach((val) => {
39
+ (0, chai_1.expect)(val).to.be.a("string");
40
+ });
41
+ insertedKeys = response;
42
+ }
43
+ async function SortByStringAscending() {
44
+ const result = await table.orderBy("name", "asc").run();
45
+ (0, chai_1.expect)(result).to.be.an("array");
46
+ (0, chai_1.expect)(result).to.have.lengthOf(testData.length);
47
+ const expectedOrder = ["Alice", "Antoine", "Camille", "Dominique", "Emilie"];
48
+ result.forEach((doc, index) => {
49
+ (0, chai_1.expect)(doc.name).to.equal(expectedOrder[index]);
50
+ });
51
+ }
52
+ async function SortByStringDescending() {
53
+ const result = await table.orderBy("name", "desc").run();
54
+ (0, chai_1.expect)(result).to.be.an("array");
55
+ (0, chai_1.expect)(result).to.have.lengthOf(testData.length);
56
+ const expectedOrder = ["Emilie", "Dominique", "Camille", "Antoine", "Alice"];
57
+ result.forEach((doc, index) => {
58
+ (0, chai_1.expect)(doc.name).to.equal(expectedOrder[index]);
59
+ });
60
+ }
61
+ async function SortByNumberAscending() {
62
+ const result = await table.orderBy("age", "asc").run();
63
+ (0, chai_1.expect)(result).to.be.an("array");
64
+ (0, chai_1.expect)(result).to.have.lengthOf(testData.length);
65
+ const expectedOrder = [22, 25, 28, 30, 35];
66
+ result.forEach((doc, index) => {
67
+ (0, chai_1.expect)(doc.age).to.equal(expectedOrder[index]);
68
+ });
69
+ }
70
+ async function SortByNumberDescending() {
71
+ const result = await table.orderBy("salary", "desc").run();
72
+ (0, chai_1.expect)(result).to.be.an("array");
73
+ (0, chai_1.expect)(result).to.have.lengthOf(testData.length);
74
+ const expectedOrder = [90000, 60000, 50000, 0, -15000];
75
+ result.forEach((doc, index) => {
76
+ (0, chai_1.expect)(doc.salary).to.equal(expectedOrder[index]);
77
+ });
78
+ }
79
+ async function SortByBooleanAscending() {
80
+ const result = await table.orderBy("isActive", "asc").run();
81
+ (0, chai_1.expect)(result).to.be.an("array");
82
+ (0, chai_1.expect)(result).to.have.lengthOf(testData.length);
83
+ const falseCount = testData.filter((item) => !item.isActive).length;
84
+ result.forEach((doc, index) => {
85
+ if (index < falseCount) {
86
+ (0, chai_1.expect)(doc.isActive).to.equal(false);
87
+ }
88
+ else {
89
+ (0, chai_1.expect)(doc.isActive).to.equal(true);
90
+ }
91
+ });
92
+ }
93
+ async function SortByBooleanDescending() {
94
+ const result = await table.orderBy("isActive", "desc").run();
95
+ (0, chai_1.expect)(result).to.be.an("array");
96
+ (0, chai_1.expect)(result).to.have.lengthOf(testData.length);
97
+ const trueCount = testData.filter((item) => item.isActive).length;
98
+ result.forEach((doc, index) => {
99
+ if (index < trueCount) {
100
+ (0, chai_1.expect)(doc.isActive).to.equal(true);
101
+ }
102
+ else {
103
+ (0, chai_1.expect)(doc.isActive).to.equal(false);
104
+ }
105
+ });
106
+ }
107
+ async function SortByDateAscending() {
108
+ const result = await table.orderBy("createdAt", "asc").run();
109
+ (0, chai_1.expect)(result).to.be.an("array");
110
+ (0, chai_1.expect)(result).to.have.lengthOf(testData.length);
111
+ const expectedDates = [
112
+ new Date("2021-12-05"),
113
+ new Date("2022-06-20"),
114
+ new Date("2023-01-15"),
115
+ new Date("2023-08-30"),
116
+ new Date("2024-03-10"),
117
+ ];
118
+ result.forEach((doc, index) => {
119
+ (0, chai_1.expect)(doc.createdAt?.getTime()).to.equal(expectedDates[index].getTime());
120
+ });
121
+ }
122
+ async function SortByDateDescending() {
123
+ const result = await table.orderBy("createdAt", "desc").run();
124
+ (0, chai_1.expect)(result).to.be.an("array");
125
+ (0, chai_1.expect)(result).to.have.lengthOf(testData.length);
126
+ const expectedDates = [
127
+ new Date("2024-03-10"),
128
+ new Date("2023-08-30"),
129
+ new Date("2023-01-15"),
130
+ new Date("2022-06-20"),
131
+ new Date("2021-12-05"),
132
+ ];
133
+ result.forEach((doc, index) => {
134
+ (0, chai_1.expect)(doc.createdAt?.getTime()).to.equal(expectedDates[index].getTime());
135
+ });
136
+ }
137
+ async function SortByMultipleFields() {
138
+ const result = await table
139
+ .orderBy("name", "asc")
140
+ .orderBy("age", "desc")
141
+ .run();
142
+ (0, chai_1.expect)(result).to.be.an("array");
143
+ (0, chai_1.expect)(result).to.have.lengthOf(testData.length);
144
+ const expectedOrder = [
145
+ { name: "Dominique", age: 35 },
146
+ { name: "Alice", age: 30 },
147
+ { name: "Emilie", age: 28 },
148
+ { name: "Antoine", age: 25 },
149
+ { name: "Camille", age: 22 },
150
+ ];
151
+ result.forEach((doc, index) => {
152
+ (0, chai_1.expect)(doc.name).to.equal(expectedOrder[index].name);
153
+ (0, chai_1.expect)(doc.age).to.equal(expectedOrder[index].age);
154
+ });
155
+ }
156
+ async function CleanupTest() {
157
+ for (const key of insertedKeys) {
158
+ await table.get(key).delete().run();
159
+ }
160
+ }
161
+ //# sourceMappingURL=sorting.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sorting.test.js","sourceRoot":"","sources":["../../src/tests/sorting.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const interface_database_1 = require("@antelopejs/interface-database");
4
+ const chai_1 = require("chai");
5
+ const products_1 = require("./datasets/products");
6
+ const users_1 = require("./datasets/users");
7
+ const usersTableName = "users";
8
+ const productsTableName = "products";
9
+ const schema = new interface_database_1.Schema("test-union", {
10
+ [usersTableName]: users_1.User,
11
+ [productsTableName]: products_1.Product,
12
+ });
13
+ const usersTable = schema.instance("default").table(usersTableName);
14
+ const productsTable = schema.instance("default").table(productsTableName);
15
+ const usersData = (0, users_1.getUniqueUsers)();
16
+ const productsData = (0, products_1.getUniqueProducts)();
17
+ const insertedKeys = {
18
+ users: [],
19
+ products: [],
20
+ };
21
+ describe("Union Operations", () => {
22
+ before(async () => {
23
+ await schema.createInstance("default").run();
24
+ });
25
+ after(async () => {
26
+ await usersTable.delete().run();
27
+ await productsTable.delete().run();
28
+ await schema.destroyInstance("default").run();
29
+ });
30
+ it("Insert Test Data", InsertTestData);
31
+ it("Union Same Table With Filter", UnionSameTableWithFilter);
32
+ it("Union Different Tables", UnionDifferentTables);
33
+ it("Union With Right Map", UnionWithRightMap);
34
+ it("Union Preserves Duplicates", UnionPreservesDuplicates);
35
+ it("Union With Chained Operations", UnionWithChainedOperations);
36
+ it("Chained Unions", ChainedUnions);
37
+ it("Cleanup", CleanupTest);
38
+ });
39
+ async function InsertTestData() {
40
+ const usersResponse = await usersTable.insert(usersData).run();
41
+ const productsResponse = await productsTable.insert(productsData).run();
42
+ (0, chai_1.expect)(usersResponse).to.be.an("array");
43
+ (0, chai_1.expect)(productsResponse).to.be.an("array");
44
+ insertedKeys.users = usersResponse;
45
+ insertedKeys.products = productsResponse;
46
+ }
47
+ async function UnionSameTableWithFilter() {
48
+ const activeUsers = usersTable.filter((u) => u.key("isActive").eq(true));
49
+ const inactiveUsers = usersTable.filter((u) => u.key("isActive").eq(false));
50
+ const result = await activeUsers.union(inactiveUsers).run();
51
+ (0, chai_1.expect)(result).to.be.an("array");
52
+ (0, chai_1.expect)(result).to.have.lengthOf(usersData.length);
53
+ const activeCount = usersData.filter((u) => u.isActive).length;
54
+ const inactiveCount = usersData.filter((u) => !u.isActive).length;
55
+ (0, chai_1.expect)(activeCount + inactiveCount).to.equal(result.length);
56
+ }
57
+ async function UnionDifferentTables() {
58
+ const userNames = usersTable.map((u) => ({ name: u.key("name") }));
59
+ const productNames = productsTable.map((p) => ({ name: p.key("name") }));
60
+ const result = await userNames.union(productNames).run();
61
+ (0, chai_1.expect)(result).to.be.an("array");
62
+ (0, chai_1.expect)(result).to.have.lengthOf(usersData.length + productsData.length);
63
+ const names = result.map((r) => r.name);
64
+ for (const user of usersData) {
65
+ (0, chai_1.expect)(names).to.include(user.name);
66
+ }
67
+ for (const product of productsData) {
68
+ (0, chai_1.expect)(names).to.include(product.name);
69
+ }
70
+ }
71
+ async function UnionWithRightMap() {
72
+ const mappedProducts = productsTable.map((p) => ({
73
+ name: p.key("name"),
74
+ price: p.key("price"),
75
+ }));
76
+ const result = await usersTable.union(mappedProducts).run();
77
+ (0, chai_1.expect)(result).to.be.an("array");
78
+ (0, chai_1.expect)(result).to.have.lengthOf(usersData.length + productsData.length);
79
+ const userResults = result.filter((r) => "age" in r);
80
+ const productResults = result.filter((r) => "price" in r);
81
+ (0, chai_1.expect)(userResults).to.have.lengthOf(usersData.length);
82
+ (0, chai_1.expect)(productResults).to.have.lengthOf(productsData.length);
83
+ for (const user of userResults) {
84
+ (0, chai_1.expect)(user).to.have.property("name");
85
+ (0, chai_1.expect)(user).to.have.property("age");
86
+ }
87
+ for (const product of productResults) {
88
+ (0, chai_1.expect)(product).to.have.property("name");
89
+ (0, chai_1.expect)(product).to.have.property("price");
90
+ }
91
+ }
92
+ async function UnionPreservesDuplicates() {
93
+ const allUsers = usersTable;
94
+ const result = await allUsers.union(allUsers).run();
95
+ (0, chai_1.expect)(result).to.be.an("array");
96
+ (0, chai_1.expect)(result).to.have.lengthOf(usersData.length * 2);
97
+ }
98
+ async function UnionWithChainedOperations() {
99
+ const activeUsers = usersTable.filter((u) => u.key("isActive").eq(true));
100
+ const inactiveUsers = usersTable.filter((u) => u.key("isActive").eq(false));
101
+ const count = await activeUsers.union(inactiveUsers).count().run();
102
+ (0, chai_1.expect)(count).to.equal(usersData.length);
103
+ const filtered = await activeUsers
104
+ .union(inactiveUsers)
105
+ .filter((u) => u.key("age").gt(25))
106
+ .run();
107
+ const expectedCount = usersData.filter((u) => u.age > 25).length;
108
+ (0, chai_1.expect)(filtered).to.have.lengthOf(expectedCount);
109
+ }
110
+ async function ChainedUnions() {
111
+ const dev = usersTable.filter((u) => u.key("department").eq("Development"));
112
+ const marketing = usersTable.filter((u) => u.key("department").eq("Marketing"));
113
+ const management = usersTable.filter((u) => u.key("department").eq("Management"));
114
+ const result = await dev.union(marketing).union(management).run();
115
+ (0, chai_1.expect)(result).to.be.an("array");
116
+ const expectedCount = usersData.filter((u) => u.department === "Development" ||
117
+ u.department === "Marketing" ||
118
+ u.department === "Management").length;
119
+ (0, chai_1.expect)(result).to.have.lengthOf(expectedCount);
120
+ }
121
+ async function CleanupTest() {
122
+ for (const key of insertedKeys.products) {
123
+ await productsTable.get(key).delete().run();
124
+ }
125
+ for (const key of insertedKeys.users) {
126
+ await usersTable.get(key).delete().run();
127
+ }
128
+ }
129
+ //# sourceMappingURL=union_operations.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"union_operations.test.js","sourceRoot":"","sources":["../../src/tests/union_operations.test.ts"],"names":[],"mappings":";;AAAA,uEAAwD;AACxD,+BAA8B;AAC9B,kDAAiE;AACjE,4CAAwD;AAExD,MAAM,cAAc,GAAG,OAAO,CAAC;AAC/B,MAAM,iBAAiB,GAAG,UAAU,CAAC;AAErC,MAAM,MAAM,GAAG,IAAI,2BAAM,CAGtB,YAAY,EAAE;IACf,CAAC,cAAc,CAAC,EAAE,YAAI;IACtB,CAAC,iBAAiB,CAAC,EAAE,kBAAO;CAC7B,CAAC,CAAC;AAEH,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;AACpE,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;AAE1E,MAAM,SAAS,GAAG,IAAA,sBAAc,GAAE,CAAC;AACnC,MAAM,YAAY,GAAG,IAAA,4BAAiB,GAAE,CAAC;AAEzC,MAAM,YAAY,GAGd;IACF,KAAK,EAAE,EAAE;IACT,QAAQ,EAAE,EAAE;CACb,CAAC;AAEF,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,MAAM,CAAC,KAAK,IAAI,EAAE;QAChB,MAAM,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,KAAK,IAAI,EAAE;QACf,MAAM,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC;QAChC,MAAM,aAAa,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC;QACnC,MAAM,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC;IACvC,EAAE,CAAC,8BAA8B,EAAE,wBAAwB,CAAC,CAAC;IAC7D,EAAE,CAAC,wBAAwB,EAAE,oBAAoB,CAAC,CAAC;IACnD,EAAE,CAAC,sBAAsB,EAAE,iBAAiB,CAAC,CAAC;IAC9C,EAAE,CAAC,4BAA4B,EAAE,wBAAwB,CAAC,CAAC;IAC3D,EAAE,CAAC,+BAA+B,EAAE,0BAA0B,CAAC,CAAC;IAChE,EAAE,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;IACpC,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEH,KAAK,UAAU,cAAc;IAC3B,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC;IAC/D,MAAM,gBAAgB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,CAAC;IAExE,IAAA,aAAM,EAAC,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IACxC,IAAA,aAAM,EAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IAE3C,YAAY,CAAC,KAAK,GAAG,aAAa,CAAC;IACnC,YAAY,CAAC,QAAQ,GAAG,gBAAgB,CAAC;AAC3C,CAAC;AAED,KAAK,UAAU,wBAAwB;IACrC,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACzE,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAE5E,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,CAAC;IAE5D,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IACjC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAElD,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;IAC/D,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;IAClE,IAAA,aAAM,EAAC,WAAW,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC9D,CAAC;AAED,KAAK,UAAU,oBAAoB;IACjC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACnE,MAAM,YAAY,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAEzE,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,CAAC;IAEzD,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IACjC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IAExE,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACxC,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;QACnC,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB;IAC9B,MAAM,cAAc,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/C,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;QACnB,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;KACtB,CAAC,CAAC,CAAC;IAEJ,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,EAAE,CAAC;IAC5D,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IACjC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IAExE,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;IACrD,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAC1D,IAAA,aAAM,EAAC,WAAW,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACvD,IAAA,aAAM,EAAC,cAAc,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAE7D,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,IAAA,aAAM,EAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACtC,IAAA,aAAM,EAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;QACrC,IAAA,aAAM,EAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACzC,IAAA,aAAM,EAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAED,KAAK,UAAU,wBAAwB;IACrC,MAAM,QAAQ,GAAG,UAAU,CAAC;IAE5B,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;IAEpD,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IACjC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,KAAK,UAAU,0BAA0B;IACvC,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACzE,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAE5E,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC;IACnE,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAEzC,MAAM,QAAQ,GAAG,MAAM,WAAW;SAC/B,KAAK,CAAC,aAAa,CAAC;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;SAClC,GAAG,EAAE,CAAC;IAET,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC;IACjE,IAAA,aAAM,EAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AACnD,CAAC;AAED,KAAK,UAAU,aAAa;IAC1B,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAC5E,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACxC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CACpC,CAAC;IACF,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACzC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CACrC,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,CAAC;IAElE,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IACjC,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CACpC,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,UAAU,KAAK,aAAa;QAC9B,CAAC,CAAC,UAAU,KAAK,WAAW;QAC5B,CAAC,CAAC,UAAU,KAAK,YAAY,CAChC,CAAC,MAAM,CAAC;IACT,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AACjD,CAAC;AAED,KAAK,UAAU,WAAW;IACxB,KAAK,MAAM,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC;QACxC,MAAM,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC;IAC9C,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,YAAY,CAAC,KAAK,EAAE,CAAC;QACrC,MAAM,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC;IAC3C,CAAC;AACH,CAAC"}