@aircast-4g/mavlink 1.0.1 → 1.1.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.
- package/dist/cli-generate-decoders.d.ts +4 -0
- package/dist/cli-generate-decoders.d.ts.map +1 -0
- package/dist/cli-generate-decoders.js +201 -0
- package/dist/cli-generate-decoders.js.map +1 -0
- package/dist/decoders/ardupilotmega.ts +11939 -0
- package/dist/decoders/common.ts +9107 -0
- package/dist/decoders/minimal.ts +76 -0
- package/dist/generator/generator.d.ts +1 -0
- package/dist/generator/generator.d.ts.map +1 -1
- package/dist/generator/generator.js +51 -0
- package/dist/generator/generator.js.map +1 -1
- package/dist/generator/template-engine.d.ts +1 -0
- package/dist/generator/template-engine.d.ts.map +1 -1
- package/dist/generator/template-engine.js +50 -0
- package/dist/generator/template-engine.js.map +1 -1
- package/dist/parser/decoders/ardupilotmega-decoder.d.ts +14 -0
- package/dist/parser/decoders/ardupilotmega-decoder.d.ts.map +1 -0
- package/dist/parser/decoders/ardupilotmega-decoder.js +11929 -0
- package/dist/parser/decoders/ardupilotmega-decoder.js.map +1 -0
- package/dist/parser/decoders/common-decoder.d.ts +14 -0
- package/dist/parser/decoders/common-decoder.d.ts.map +1 -0
- package/dist/parser/decoders/common-decoder.js +9097 -0
- package/dist/parser/decoders/common-decoder.js.map +1 -0
- package/dist/parser/decoders/minimal-decoder.d.ts +14 -0
- package/dist/parser/decoders/minimal-decoder.d.ts.map +1 -0
- package/dist/parser/decoders/minimal-decoder.js +66 -0
- package/dist/parser/decoders/minimal-decoder.js.map +1 -0
- package/dist/parser/generated-decoders.d.ts +15 -0
- package/dist/parser/generated-decoders.d.ts.map +1 -0
- package/dist/parser/generated-decoders.js +11938 -0
- package/dist/parser/generated-decoders.js.map +1 -0
- package/dist/parser/mavlink-parser.d.ts.map +1 -1
- package/dist/parser/mavlink-parser.js +17 -6
- package/dist/parser/mavlink-parser.js.map +1 -1
- package/dist/parser/message-decoder.d.ts +26 -5
- package/dist/parser/message-decoder.d.ts.map +1 -1
- package/dist/parser/message-decoder.js +406 -224
- package/dist/parser/message-decoder.js.map +1 -1
- package/dist/parser/test-decoder.d.ts +2 -0
- package/dist/parser/test-decoder.d.ts.map +1 -0
- package/dist/parser/test-decoder.js +54 -0
- package/dist/parser/test-decoder.js.map +1 -0
- package/dist/parser/types.d.ts +1 -0
- package/dist/parser/types.d.ts.map +1 -1
- package/dist/parser/types.js.map +1 -1
- package/package.json +24 -25
- package/types/ardupilotmega/enums.d.ts +0 -2427
- package/types/ardupilotmega/enums.d.ts.map +0 -1
- package/types/ardupilotmega/enums.js +0 -4636
- package/types/ardupilotmega/enums.js.map +0 -1
- package/types/ardupilotmega/index.d.ts +0 -4
- package/types/ardupilotmega/index.d.ts.map +0 -1
- package/types/ardupilotmega/index.js +0 -22
- package/types/ardupilotmega/index.js.map +0 -1
- package/types/ardupilotmega/messages.d.ts +0 -3719
- package/types/ardupilotmega/messages.d.ts.map +0 -1
- package/types/ardupilotmega/messages.js +0 -1281
- package/types/ardupilotmega/messages.js.map +0 -1
- package/types/ardupilotmega/types.d.ts +0 -221
- package/types/ardupilotmega/types.d.ts.map +0 -1
- package/types/ardupilotmega/types.js +0 -5
- package/types/ardupilotmega/types.js.map +0 -1
- package/types/common/enums.d.ts +0 -1843
- package/types/common/enums.d.ts.map +0 -1
- package/types/common/enums.js +0 -3636
- package/types/common/enums.js.map +0 -1
- package/types/common/index.d.ts +0 -4
- package/types/common/index.d.ts.map +0 -1
- package/types/common/index.js +0 -21
- package/types/common/index.js.map +0 -1
- package/types/common/messages.d.ts +0 -2805
- package/types/common/messages.d.ts.map +0 -1
- package/types/common/messages.js +0 -920
- package/types/common/messages.js.map +0 -1
- package/types/common/types.d.ts +0 -157
- package/types/common/types.d.ts.map +0 -1
- package/types/common/types.js +0 -4
- package/types/common/types.js.map +0 -1
- package/types/minimal/enums.d.ts +0 -244
- package/types/minimal/enums.d.ts.map +0 -1
- package/types/minimal/enums.js +0 -496
- package/types/minimal/enums.js.map +0 -1
- package/types/minimal/index.d.ts +0 -4
- package/types/minimal/index.d.ts.map +0 -1
- package/types/minimal/index.js +0 -21
- package/types/minimal/index.js.map +0 -1
- package/types/minimal/messages.d.ts +0 -25
- package/types/minimal/messages.d.ts.map +0 -1
- package/types/minimal/messages.js +0 -12
- package/types/minimal/messages.js.map +0 -1
- package/types/minimal/types.d.ts +0 -14
- package/types/minimal/types.d.ts.map +0 -1
- package/types/minimal/types.js +0 -4
- package/types/minimal/types.js.map +0 -1
- package/types/paparazzi/enums.ts +0 -3632
- package/types/paparazzi/index.ts +0 -6
- package/types/paparazzi/messages.ts +0 -6185
- package/types/paparazzi/types.ts +0 -2159
- package/types/python_array_test/enums.ts +0 -3632
- package/types/python_array_test/index.ts +0 -6
- package/types/python_array_test/messages.ts +0 -6258
- package/types/python_array_test/types.ts +0 -2159
- package/types/standard/enums.d.ts +0 -248
- package/types/standard/enums.d.ts.map +0 -1
- package/types/standard/enums.js +0 -505
- package/types/standard/enums.js.map +0 -1
- package/types/standard/enums.ts +0 -502
- package/types/standard/index.d.ts +0 -4
- package/types/standard/index.d.ts.map +0 -1
- package/types/standard/index.js +0 -22
- package/types/standard/index.js.map +0 -1
- package/types/standard/index.ts +0 -6
- package/types/standard/messages.d.ts +0 -25
- package/types/standard/messages.d.ts.map +0 -1
- package/types/standard/messages.js +0 -13
- package/types/standard/messages.js.map +0 -1
- package/types/standard/messages.ts +0 -63
- package/types/standard/types.d.ts +0 -15
- package/types/standard/types.d.ts.map +0 -1
- package/types/standard/types.js +0 -5
- package/types/standard/types.js.map +0 -1
- package/types/standard/types.ts +0 -278
- package/types/test/enums.ts +0 -2
- package/types/test/index.ts +0 -6
- package/types/test/messages.ts +0 -69
- package/types/test/types.ts +0 -11
- /package/{types → dist/types}/ardupilotmega/enums.ts +0 -0
- /package/{types → dist/types}/ardupilotmega/index.ts +0 -0
- /package/{types → dist/types}/ardupilotmega/messages.ts +0 -0
- /package/{types → dist/types}/ardupilotmega/types.ts +0 -0
- /package/{types → dist/types}/common/enums.ts +0 -0
- /package/{types → dist/types}/common/index.ts +0 -0
- /package/{types → dist/types}/common/messages.ts +0 -0
- /package/{types → dist/types}/common/types.ts +0 -0
- /package/{types → dist/types}/minimal/enums.ts +0 -0
- /package/{types → dist/types}/minimal/index.ts +0 -0
- /package/{types → dist/types}/minimal/messages.ts +0 -0
- /package/{types → dist/types}/minimal/types.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-generate-decoders.d.ts","sourceRoot":"","sources":["../src/cli-generate-decoders.ts"],"names":[],"mappings":";AAsHA,iBAAe,gBAAgB,kBAmH9B;AAeD,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.generateDecoders = generateDecoders;
|
|
5
|
+
const fs_1 = require("fs");
|
|
6
|
+
const path_1 = require("path");
|
|
7
|
+
const xml_parser_1 = require("./generator/xml-parser");
|
|
8
|
+
const DIALECT_CONFIGS = [
|
|
9
|
+
{
|
|
10
|
+
dialectName: 'common',
|
|
11
|
+
xmlSource: 'https://raw.githubusercontent.com/mavlink/mavlink/master/message_definitions/v1.0/common.xml',
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
dialectName: 'ardupilotmega',
|
|
15
|
+
xmlSource: 'https://raw.githubusercontent.com/mavlink/mavlink/master/message_definitions/v1.0/ardupilotmega.xml',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
dialectName: 'minimal',
|
|
19
|
+
xmlSource: 'https://raw.githubusercontent.com/mavlink/mavlink/master/message_definitions/v1.0/minimal.xml',
|
|
20
|
+
}
|
|
21
|
+
];
|
|
22
|
+
function convertToDecoderDefinition(rawMessage) {
|
|
23
|
+
const fields = [];
|
|
24
|
+
for (const field of rawMessage.fields || []) {
|
|
25
|
+
let fieldType = field.type;
|
|
26
|
+
let arrayLength;
|
|
27
|
+
// Handle array types like uint8_t[4]
|
|
28
|
+
const arrayMatch = fieldType.match(/^([^[]+)\[(\d+)\]$/);
|
|
29
|
+
if (arrayMatch) {
|
|
30
|
+
fieldType = arrayMatch[1];
|
|
31
|
+
arrayLength = parseInt(arrayMatch[2]);
|
|
32
|
+
}
|
|
33
|
+
fields.push({
|
|
34
|
+
name: field.name,
|
|
35
|
+
type: fieldType,
|
|
36
|
+
arrayLength,
|
|
37
|
+
extension: field.extension
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
id: rawMessage.id,
|
|
42
|
+
name: rawMessage.name,
|
|
43
|
+
fields
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
function generateDecoderCode(dialectName, messages) {
|
|
47
|
+
let code = `// Auto-generated decoder definitions for ${dialectName} dialect
|
|
48
|
+
// Generated from MAVLink XML definitions
|
|
49
|
+
|
|
50
|
+
interface MessageDefinition {
|
|
51
|
+
id: number;
|
|
52
|
+
name: string;
|
|
53
|
+
fields: FieldDefinition[];
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
interface FieldDefinition {
|
|
57
|
+
name: string;
|
|
58
|
+
type: string;
|
|
59
|
+
arrayLength?: number;
|
|
60
|
+
extension?: boolean;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export const ${dialectName.toUpperCase()}_MESSAGE_DEFINITIONS: MessageDefinition[] = [
|
|
64
|
+
`;
|
|
65
|
+
for (const message of messages) {
|
|
66
|
+
code += ` {\n`;
|
|
67
|
+
code += ` id: ${message.id},\n`;
|
|
68
|
+
code += ` name: '${message.name}',\n`;
|
|
69
|
+
code += ` fields: [\n`;
|
|
70
|
+
for (const field of message.fields) {
|
|
71
|
+
code += ` {\n`;
|
|
72
|
+
code += ` name: '${field.name}',\n`;
|
|
73
|
+
code += ` type: '${field.type}',\n`;
|
|
74
|
+
if (field.arrayLength) {
|
|
75
|
+
code += ` arrayLength: ${field.arrayLength},\n`;
|
|
76
|
+
}
|
|
77
|
+
if (field.extension) {
|
|
78
|
+
code += ` extension: ${field.extension},\n`;
|
|
79
|
+
}
|
|
80
|
+
code += ` },\n`;
|
|
81
|
+
}
|
|
82
|
+
code += ` ]\n`;
|
|
83
|
+
code += ` },\n`;
|
|
84
|
+
}
|
|
85
|
+
code += `];
|
|
86
|
+
`;
|
|
87
|
+
return code;
|
|
88
|
+
}
|
|
89
|
+
async function generateDecoders() {
|
|
90
|
+
console.log('Generating MAVLink message decoders...');
|
|
91
|
+
const xmlParser = new xml_parser_1.XMLParser();
|
|
92
|
+
const allMessages = [];
|
|
93
|
+
for (const config of DIALECT_CONFIGS) {
|
|
94
|
+
try {
|
|
95
|
+
console.log(`Processing ${config.dialectName} dialect...`);
|
|
96
|
+
let definition;
|
|
97
|
+
if (config.xmlSource.startsWith('http')) {
|
|
98
|
+
definition = await xmlParser.parseFromURL(config.xmlSource);
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
definition = await xmlParser.parseFromFile(config.xmlSource);
|
|
102
|
+
}
|
|
103
|
+
// Convert raw definitions to decoder format
|
|
104
|
+
const decoderMessages = [];
|
|
105
|
+
for (const rawMessage of definition.messages || []) {
|
|
106
|
+
const decoderMessage = convertToDecoderDefinition(rawMessage);
|
|
107
|
+
decoderMessages.push(decoderMessage);
|
|
108
|
+
allMessages.push(decoderMessage);
|
|
109
|
+
}
|
|
110
|
+
// Generate decoder code for this dialect
|
|
111
|
+
const decoderCode = generateDecoderCode(config.dialectName, decoderMessages);
|
|
112
|
+
// Save individual dialect decoder
|
|
113
|
+
const dialectOutputPath = (0, path_1.join)(process.cwd(), 'generated', 'decoders', `${config.dialectName}.ts`);
|
|
114
|
+
await fs_1.promises.mkdir((0, path_1.join)(process.cwd(), 'generated', 'decoders'), { recursive: true });
|
|
115
|
+
await fs_1.promises.writeFile(dialectOutputPath, decoderCode);
|
|
116
|
+
console.log(`Generated decoder for ${config.dialectName}: ${dialectOutputPath}`);
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
console.error(`Failed to process ${config.dialectName}:`, error);
|
|
120
|
+
}
|
|
121
|
+
// Reset parser state between dialects
|
|
122
|
+
xmlParser.reset();
|
|
123
|
+
}
|
|
124
|
+
// Generate combined decoder definitions
|
|
125
|
+
let allDecoderCode = `// Auto-generated decoder definitions from MAVLink XML
|
|
126
|
+
// This file contains all message definitions for decoding MAVLink payloads
|
|
127
|
+
|
|
128
|
+
interface MessageDefinition {
|
|
129
|
+
id: number;
|
|
130
|
+
name: string;
|
|
131
|
+
fields: FieldDefinition[];
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
interface FieldDefinition {
|
|
135
|
+
name: string;
|
|
136
|
+
type: string;
|
|
137
|
+
arrayLength?: number;
|
|
138
|
+
extension?: boolean;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
export const ALL_MESSAGE_DEFINITIONS: MessageDefinition[] = [
|
|
142
|
+
`;
|
|
143
|
+
// Sort messages by ID to avoid duplicates and ensure consistent ordering
|
|
144
|
+
const uniqueMessages = new Map();
|
|
145
|
+
for (const message of allMessages) {
|
|
146
|
+
if (!uniqueMessages.has(message.id)) {
|
|
147
|
+
uniqueMessages.set(message.id, message);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
const sortedMessages = Array.from(uniqueMessages.values()).sort((a, b) => a.id - b.id);
|
|
151
|
+
for (const message of sortedMessages) {
|
|
152
|
+
allDecoderCode += ` {\n`;
|
|
153
|
+
allDecoderCode += ` id: ${message.id},\n`;
|
|
154
|
+
allDecoderCode += ` name: '${message.name}',\n`;
|
|
155
|
+
allDecoderCode += ` fields: [\n`;
|
|
156
|
+
for (const field of message.fields) {
|
|
157
|
+
allDecoderCode += ` {\n`;
|
|
158
|
+
allDecoderCode += ` name: '${field.name}',\n`;
|
|
159
|
+
allDecoderCode += ` type: '${field.type}',\n`;
|
|
160
|
+
if (field.arrayLength) {
|
|
161
|
+
allDecoderCode += ` arrayLength: ${field.arrayLength},\n`;
|
|
162
|
+
}
|
|
163
|
+
if (field.extension) {
|
|
164
|
+
allDecoderCode += ` extension: ${field.extension},\n`;
|
|
165
|
+
}
|
|
166
|
+
allDecoderCode += ` },\n`;
|
|
167
|
+
}
|
|
168
|
+
allDecoderCode += ` ]\n`;
|
|
169
|
+
allDecoderCode += ` },\n`;
|
|
170
|
+
}
|
|
171
|
+
allDecoderCode += `];
|
|
172
|
+
|
|
173
|
+
// Helper function to create a message definitions map
|
|
174
|
+
export function createMessageDefinitionsMap(): Map<number, MessageDefinition> {
|
|
175
|
+
const map = new Map<number, MessageDefinition>();
|
|
176
|
+
for (const def of ALL_MESSAGE_DEFINITIONS) {
|
|
177
|
+
map.set(def.id, def);
|
|
178
|
+
}
|
|
179
|
+
return map;
|
|
180
|
+
}
|
|
181
|
+
`;
|
|
182
|
+
// Save combined decoder definitions
|
|
183
|
+
const combinedOutputPath = (0, path_1.join)(process.cwd(), 'generated', 'all-decoders.ts');
|
|
184
|
+
await fs_1.promises.writeFile(combinedOutputPath, allDecoderCode);
|
|
185
|
+
console.log(`Generated combined decoder definitions: ${combinedOutputPath}`);
|
|
186
|
+
console.log(`Generated ${sortedMessages.length} unique message definitions`);
|
|
187
|
+
console.log('Decoder generation completed!');
|
|
188
|
+
}
|
|
189
|
+
// Run if called directly
|
|
190
|
+
if (require.main === module) {
|
|
191
|
+
generateDecoders()
|
|
192
|
+
.then(() => {
|
|
193
|
+
console.log('All decoders generated successfully!');
|
|
194
|
+
process.exit(0);
|
|
195
|
+
})
|
|
196
|
+
.catch((error) => {
|
|
197
|
+
console.error('Error generating decoders:', error);
|
|
198
|
+
process.exit(1);
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
//# sourceMappingURL=cli-generate-decoders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-generate-decoders.js","sourceRoot":"","sources":["../src/cli-generate-decoders.ts"],"names":[],"mappings":";;;AAwPS,4CAAgB;AAtPzB,2BAAoC;AACpC,+BAA4B;AAC5B,uDAAmD;AAqBnD,MAAM,eAAe,GAAuB;IAC1C;QACE,WAAW,EAAE,QAAQ;QACrB,SAAS,EAAE,8FAA8F;KAC1G;IACD;QACE,WAAW,EAAE,eAAe;QAC5B,SAAS,EAAE,qGAAqG;KACjH;IACD;QACE,WAAW,EAAE,SAAS;QACtB,SAAS,EAAE,+FAA+F;KAC3G;CACF,CAAC;AAEF,SAAS,0BAA0B,CAAC,UAAgC;IAClE,MAAM,MAAM,GAA6B,EAAE,CAAC;IAE5C,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;QAC5C,IAAI,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;QAC3B,IAAI,WAA+B,CAAC;QAEpC,qCAAqC;QACrC,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACzD,IAAI,UAAU,EAAE,CAAC;YACf,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAC1B,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,CAAC;QAED,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,SAAS;YACf,WAAW;YACX,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,EAAE,EAAE,UAAU,CAAC,EAAE;QACjB,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,MAAM;KACP,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,WAAmB,EAAE,QAAoC;IACpF,IAAI,IAAI,GAAG,6CAA6C,WAAW;;;;;;;;;;;;;;;;eAgBtD,WAAW,CAAC,WAAW,EAAE;CACvC,CAAC;IAEA,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,IAAI,OAAO,CAAC;QAChB,IAAI,IAAI,WAAW,OAAO,CAAC,EAAE,KAAK,CAAC;QACnC,IAAI,IAAI,cAAc,OAAO,CAAC,IAAI,MAAM,CAAC;QACzC,IAAI,IAAI,iBAAiB,CAAC;QAE1B,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnC,IAAI,IAAI,WAAW,CAAC;YACpB,IAAI,IAAI,kBAAkB,KAAK,CAAC,IAAI,MAAM,CAAC;YAC3C,IAAI,IAAI,kBAAkB,KAAK,CAAC,IAAI,MAAM,CAAC;YAC3C,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;gBACtB,IAAI,IAAI,wBAAwB,KAAK,CAAC,WAAW,KAAK,CAAC;YACzD,CAAC;YACD,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;gBACpB,IAAI,IAAI,sBAAsB,KAAK,CAAC,SAAS,KAAK,CAAC;YACrD,CAAC;YACD,IAAI,IAAI,YAAY,CAAC;QACvB,CAAC;QAED,IAAI,IAAI,SAAS,CAAC;QAClB,IAAI,IAAI,QAAQ,CAAC;IACnB,CAAC;IAED,IAAI,IAAI;CACT,CAAC;IAEA,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,gBAAgB;IAC7B,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IAEtD,MAAM,SAAS,GAAG,IAAI,sBAAS,EAAE,CAAC;IAClC,MAAM,WAAW,GAA+B,EAAE,CAAC;IAEnD,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,WAAW,aAAa,CAAC,CAAC;YAE3D,IAAI,UAAoC,CAAC;YACzC,IAAI,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBACxC,UAAU,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC9D,CAAC;iBAAM,CAAC;gBACN,UAAU,GAAG,MAAM,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC/D,CAAC;YAED,4CAA4C;YAC5C,MAAM,eAAe,GAA+B,EAAE,CAAC;YACvD,KAAK,MAAM,UAAU,IAAI,UAAU,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;gBACnD,MAAM,cAAc,GAAG,0BAA0B,CAAC,UAAU,CAAC,CAAC;gBAC9D,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBACrC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACnC,CAAC;YAED,yCAAyC;YACzC,MAAM,WAAW,GAAG,mBAAmB,CAAC,MAAM,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;YAE7E,kCAAkC;YAClC,MAAM,iBAAiB,GAAG,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,WAAW,KAAK,CAAC,CAAC;YACnG,MAAM,aAAE,CAAC,KAAK,CAAC,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAClF,MAAM,aAAE,CAAC,SAAS,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;YAEnD,OAAO,CAAC,GAAG,CAAC,yBAAyB,MAAM,CAAC,WAAW,KAAK,iBAAiB,EAAE,CAAC,CAAC;QAEnF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,qBAAqB,MAAM,CAAC,WAAW,GAAG,EAAE,KAAK,CAAC,CAAC;QACnE,CAAC;QAED,sCAAsC;QACtC,SAAS,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;IAED,wCAAwC;IACxC,IAAI,cAAc,GAAG;;;;;;;;;;;;;;;;;CAiBtB,CAAC;IAEA,yEAAyE;IACzE,MAAM,cAAc,GAAG,IAAI,GAAG,EAAoC,CAAC;IACnE,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;QAClC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;YACpC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IAEvF,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;QACrC,cAAc,IAAI,OAAO,CAAC;QAC1B,cAAc,IAAI,WAAW,OAAO,CAAC,EAAE,KAAK,CAAC;QAC7C,cAAc,IAAI,cAAc,OAAO,CAAC,IAAI,MAAM,CAAC;QACnD,cAAc,IAAI,iBAAiB,CAAC;QAEpC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnC,cAAc,IAAI,WAAW,CAAC;YAC9B,cAAc,IAAI,kBAAkB,KAAK,CAAC,IAAI,MAAM,CAAC;YACrD,cAAc,IAAI,kBAAkB,KAAK,CAAC,IAAI,MAAM,CAAC;YACrD,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;gBACtB,cAAc,IAAI,wBAAwB,KAAK,CAAC,WAAW,KAAK,CAAC;YACnE,CAAC;YACD,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;gBACpB,cAAc,IAAI,sBAAsB,KAAK,CAAC,SAAS,KAAK,CAAC;YAC/D,CAAC;YACD,cAAc,IAAI,YAAY,CAAC;QACjC,CAAC;QAED,cAAc,IAAI,SAAS,CAAC;QAC5B,cAAc,IAAI,QAAQ,CAAC;IAC7B,CAAC;IAED,cAAc,IAAI;;;;;;;;;;CAUnB,CAAC;IAEA,oCAAoC;IACpC,MAAM,kBAAkB,GAAG,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC;IAC/E,MAAM,aAAE,CAAC,SAAS,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC;IAEvD,OAAO,CAAC,GAAG,CAAC,2CAA2C,kBAAkB,EAAE,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,aAAa,cAAc,CAAC,MAAM,6BAA6B,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;AAC/C,CAAC;AAED,yBAAyB;AACzB,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,gBAAgB,EAAE;SACf,IAAI,CAAC,GAAG,EAAE;QACT,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;QACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACP,CAAC"}
|