@open-nav/invoicing 0.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/LICENSE +29 -0
- package/README.md +190 -0
- package/dist/color.d.ts +31 -0
- package/dist/color.d.ts.map +1 -0
- package/dist/color.js +150 -0
- package/dist/color.js.map +1 -0
- package/dist/export.d.ts +89 -0
- package/dist/export.d.ts.map +1 -0
- package/dist/export.js +115 -0
- package/dist/export.js.map +1 -0
- package/dist/format.d.ts +23 -0
- package/dist/format.d.ts.map +1 -0
- package/dist/format.js +52 -0
- package/dist/format.js.map +1 -0
- package/dist/html.d.ts +43 -0
- package/dist/html.d.ts.map +1 -0
- package/dist/html.js +355 -0
- package/dist/html.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/labels.d.ts +8 -0
- package/dist/labels.d.ts.map +1 -0
- package/dist/labels.js +199 -0
- package/dist/labels.js.map +1 -0
- package/dist/markings.d.ts +28 -0
- package/dist/markings.d.ts.map +1 -0
- package/dist/markings.js +69 -0
- package/dist/markings.js.map +1 -0
- package/dist/pdf-native.d.ts +32 -0
- package/dist/pdf-native.d.ts.map +1 -0
- package/dist/pdf-native.js +601 -0
- package/dist/pdf-native.js.map +1 -0
- package/dist/pdf.d.ts +92 -0
- package/dist/pdf.d.ts.map +1 -0
- package/dist/pdf.js +203 -0
- package/dist/pdf.js.map +1 -0
- package/dist/theme.d.ts +85 -0
- package/dist/theme.d.ts.map +1 -0
- package/dist/theme.js +210 -0
- package/dist/theme.js.map +1 -0
- package/package.json +54 -0
- package/src/color.ts +170 -0
- package/src/export.ts +204 -0
- package/src/format.ts +66 -0
- package/src/html.ts +446 -0
- package/src/index.ts +9 -0
- package/src/labels.ts +222 -0
- package/src/markings.ts +102 -0
- package/src/pdf-native.ts +754 -0
- package/src/pdf.ts +302 -0
- package/src/theme.ts +305 -0
package/dist/labels.js
ADDED
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Document labels.
|
|
3
|
+
*
|
|
4
|
+
* Hungarian is the reference: an invoice issued in Hungary is a Hungarian
|
|
5
|
+
* document, and the phrases the VAT Act requires on it are prescribed in
|
|
6
|
+
* Hungarian. The English column is a courtesy translation for a foreign
|
|
7
|
+
* recipient, not a substitute.
|
|
8
|
+
*/
|
|
9
|
+
const LABELS = {
|
|
10
|
+
hu: {
|
|
11
|
+
invoice: 'SZÁMLA',
|
|
12
|
+
simplifiedInvoice: 'EGYSZERŰSÍTETT SZÁMLA',
|
|
13
|
+
aggregateInvoice: 'GYŰJTŐSZÁMLA',
|
|
14
|
+
modificationDocument: 'MÓDOSÍTÓ OKIRAT',
|
|
15
|
+
invoiceNumber: 'Számla sorszáma',
|
|
16
|
+
issueDate: 'Számla kelte',
|
|
17
|
+
deliveryDate: 'Teljesítés dátuma',
|
|
18
|
+
deliveryPeriod: 'Elszámolási időszak',
|
|
19
|
+
paymentDate: 'Fizetési határidő',
|
|
20
|
+
paymentMethod: 'Fizetési mód',
|
|
21
|
+
supplier: 'Eladó',
|
|
22
|
+
customer: 'Vevő',
|
|
23
|
+
taxNumber: 'Adószám',
|
|
24
|
+
communityVatNumber: 'Közösségi adószám',
|
|
25
|
+
thirdStateTaxId: 'Harmadik országbeli adószám',
|
|
26
|
+
groupMemberTaxNumber: 'Csoporttag adószáma',
|
|
27
|
+
bankAccount: 'Bankszámlaszám',
|
|
28
|
+
fiscalRepresentative: 'Pénzügyi képviselő',
|
|
29
|
+
originalInvoiceNumber: 'Eredeti számla sorszáma',
|
|
30
|
+
lineNumber: 'Sor',
|
|
31
|
+
description: 'Megnevezés',
|
|
32
|
+
quantity: 'Mennyiség',
|
|
33
|
+
unit: 'Egység',
|
|
34
|
+
unitPrice: 'Egységár',
|
|
35
|
+
netAmount: 'Nettó érték',
|
|
36
|
+
vatRate: 'Áfa',
|
|
37
|
+
vatAmount: 'Áfa érték',
|
|
38
|
+
grossAmount: 'Bruttó érték',
|
|
39
|
+
summary: 'Összesítés',
|
|
40
|
+
summaryByVatRate: 'Áfa-összesítő',
|
|
41
|
+
totalNet: 'Nettó összesen',
|
|
42
|
+
totalVat: 'Áfa összesen',
|
|
43
|
+
totalGross: 'Bruttó összesen',
|
|
44
|
+
currency: 'Pénznem',
|
|
45
|
+
exchangeRate: 'Árfolyam',
|
|
46
|
+
inHuf: 'Forintban',
|
|
47
|
+
exempt: 'Adómentes',
|
|
48
|
+
outOfScope: 'Áfa tv. hatályán kívüli',
|
|
49
|
+
reverseCharge: 'fordított adózás',
|
|
50
|
+
cashAccounting: 'pénzforgalmi elszámolás',
|
|
51
|
+
selfBilling: 'önszámlázás',
|
|
52
|
+
marginTravel: 'különbözet szerinti szabályozás – utazási irodák',
|
|
53
|
+
marginSecondHand: 'különbözet szerinti szabályozás – használt cikkek',
|
|
54
|
+
marginArtwork: 'különbözet szerinti szabályozás – műalkotások',
|
|
55
|
+
marginAntiques: 'különbözet szerinti szabályozás – gyűjteménydarabok és régiségek',
|
|
56
|
+
newTransportMean: 'új közlekedési eszköz értékesítése',
|
|
57
|
+
markings: 'Jogszabályi jelölések',
|
|
58
|
+
notReported: 'Ez a dokumentum a NAV felé beküldött adatokból készült megjelenítés.',
|
|
59
|
+
page: 'oldal',
|
|
60
|
+
},
|
|
61
|
+
en: {
|
|
62
|
+
invoice: 'INVOICE',
|
|
63
|
+
simplifiedInvoice: 'SIMPLIFIED INVOICE',
|
|
64
|
+
aggregateInvoice: 'AGGREGATE INVOICE',
|
|
65
|
+
modificationDocument: 'MODIFICATION DOCUMENT',
|
|
66
|
+
invoiceNumber: 'Invoice number',
|
|
67
|
+
issueDate: 'Date of issue',
|
|
68
|
+
deliveryDate: 'Date of supply',
|
|
69
|
+
deliveryPeriod: 'Settlement period',
|
|
70
|
+
paymentDate: 'Payment due',
|
|
71
|
+
paymentMethod: 'Payment method',
|
|
72
|
+
supplier: 'Supplier',
|
|
73
|
+
customer: 'Customer',
|
|
74
|
+
taxNumber: 'Tax number',
|
|
75
|
+
communityVatNumber: 'Community VAT number',
|
|
76
|
+
thirdStateTaxId: 'Third state tax id',
|
|
77
|
+
groupMemberTaxNumber: 'Group member tax number',
|
|
78
|
+
bankAccount: 'Bank account',
|
|
79
|
+
fiscalRepresentative: 'Fiscal representative',
|
|
80
|
+
originalInvoiceNumber: 'Original invoice number',
|
|
81
|
+
lineNumber: 'No.',
|
|
82
|
+
description: 'Description',
|
|
83
|
+
quantity: 'Quantity',
|
|
84
|
+
unit: 'Unit',
|
|
85
|
+
unitPrice: 'Unit price',
|
|
86
|
+
netAmount: 'Net amount',
|
|
87
|
+
vatRate: 'VAT',
|
|
88
|
+
vatAmount: 'VAT amount',
|
|
89
|
+
grossAmount: 'Gross amount',
|
|
90
|
+
summary: 'Summary',
|
|
91
|
+
summaryByVatRate: 'VAT summary',
|
|
92
|
+
totalNet: 'Total net',
|
|
93
|
+
totalVat: 'Total VAT',
|
|
94
|
+
totalGross: 'Total gross',
|
|
95
|
+
currency: 'Currency',
|
|
96
|
+
exchangeRate: 'Exchange rate',
|
|
97
|
+
inHuf: 'In HUF',
|
|
98
|
+
exempt: 'Exempt',
|
|
99
|
+
outOfScope: 'Outside the scope of the VAT Act',
|
|
100
|
+
reverseCharge: 'reverse charge',
|
|
101
|
+
cashAccounting: 'cash accounting',
|
|
102
|
+
selfBilling: 'self-billing',
|
|
103
|
+
marginTravel: 'margin scheme — travel agents',
|
|
104
|
+
marginSecondHand: 'margin scheme — second-hand goods',
|
|
105
|
+
marginArtwork: 'margin scheme — works of art',
|
|
106
|
+
marginAntiques: 'margin scheme — collectors items and antiques',
|
|
107
|
+
newTransportMean: 'supply of a new means of transport',
|
|
108
|
+
markings: 'Statutory markings',
|
|
109
|
+
notReported: 'Rendered from the data reported to NAV.',
|
|
110
|
+
page: 'page',
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
export function label(key, language) {
|
|
114
|
+
return LABELS[language][key] ?? LABELS.hu[key] ?? key;
|
|
115
|
+
}
|
|
116
|
+
const UNITS = {
|
|
117
|
+
hu: {
|
|
118
|
+
PIECE: 'db',
|
|
119
|
+
KILOGRAM: 'kg',
|
|
120
|
+
TON: 't',
|
|
121
|
+
KWH: 'kWh',
|
|
122
|
+
DAY: 'nap',
|
|
123
|
+
HOUR: 'óra',
|
|
124
|
+
MINUTE: 'perc',
|
|
125
|
+
MONTH: 'hónap',
|
|
126
|
+
LITER: 'l',
|
|
127
|
+
KILOMETER: 'km',
|
|
128
|
+
CUBIC_METER: 'm³',
|
|
129
|
+
METER: 'm',
|
|
130
|
+
LINEAR_METER: 'fm',
|
|
131
|
+
CARTON: 'karton',
|
|
132
|
+
PACK: 'csomag',
|
|
133
|
+
OWN: '',
|
|
134
|
+
},
|
|
135
|
+
en: {
|
|
136
|
+
PIECE: 'pcs',
|
|
137
|
+
KILOGRAM: 'kg',
|
|
138
|
+
TON: 't',
|
|
139
|
+
KWH: 'kWh',
|
|
140
|
+
DAY: 'day',
|
|
141
|
+
HOUR: 'hour',
|
|
142
|
+
MINUTE: 'min',
|
|
143
|
+
MONTH: 'month',
|
|
144
|
+
LITER: 'l',
|
|
145
|
+
KILOMETER: 'km',
|
|
146
|
+
CUBIC_METER: 'm³',
|
|
147
|
+
METER: 'm',
|
|
148
|
+
LINEAR_METER: 'lm',
|
|
149
|
+
CARTON: 'carton',
|
|
150
|
+
PACK: 'pack',
|
|
151
|
+
OWN: '',
|
|
152
|
+
},
|
|
153
|
+
};
|
|
154
|
+
export function unitLabel(unit, own, language) {
|
|
155
|
+
if (unit === 'OWN')
|
|
156
|
+
return own ?? '';
|
|
157
|
+
return unit ? UNITS[language][unit] : '';
|
|
158
|
+
}
|
|
159
|
+
const PAYMENT_METHODS = {
|
|
160
|
+
hu: {
|
|
161
|
+
TRANSFER: 'átutalás',
|
|
162
|
+
CASH: 'készpénz',
|
|
163
|
+
CARD: 'bankkártya',
|
|
164
|
+
VOUCHER: 'utalvány',
|
|
165
|
+
OTHER: 'egyéb',
|
|
166
|
+
},
|
|
167
|
+
en: {
|
|
168
|
+
TRANSFER: 'bank transfer',
|
|
169
|
+
CASH: 'cash',
|
|
170
|
+
CARD: 'card',
|
|
171
|
+
VOUCHER: 'voucher',
|
|
172
|
+
OTHER: 'other',
|
|
173
|
+
},
|
|
174
|
+
};
|
|
175
|
+
export function paymentMethodLabel(method, language) {
|
|
176
|
+
return method ? PAYMENT_METHODS[language][method] : '';
|
|
177
|
+
}
|
|
178
|
+
export function documentTitle(category, isModification, language) {
|
|
179
|
+
if (isModification)
|
|
180
|
+
return label('modificationDocument', language);
|
|
181
|
+
if (category === 'SIMPLIFIED')
|
|
182
|
+
return label('simplifiedInvoice', language);
|
|
183
|
+
if (category === 'AGGREGATE')
|
|
184
|
+
return label('aggregateInvoice', language);
|
|
185
|
+
return label('invoice', language);
|
|
186
|
+
}
|
|
187
|
+
export function marginSchemeLabel(scheme, language) {
|
|
188
|
+
switch (scheme) {
|
|
189
|
+
case 'TRAVEL_AGENCY':
|
|
190
|
+
return label('marginTravel', language);
|
|
191
|
+
case 'SECOND_HAND':
|
|
192
|
+
return label('marginSecondHand', language);
|
|
193
|
+
case 'ARTWORK':
|
|
194
|
+
return label('marginArtwork', language);
|
|
195
|
+
default:
|
|
196
|
+
return label('marginAntiques', language);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
//# sourceMappingURL=labels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"labels.js","sourceRoot":"","sources":["../src/labels.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { InvoiceType } from '@open-nav/core';
|
|
2
|
+
import type { DocumentLanguage } from './format.js';
|
|
3
|
+
/**
|
|
4
|
+
* A phrase the VAT Act requires on the invoice itself.
|
|
5
|
+
*
|
|
6
|
+
* Section 169 of the VAT Act (Áfa tv. 169. §) prescribes not just the figures
|
|
7
|
+
* but specific wording: an exempt supply must state the legal ground, a
|
|
8
|
+
* domestic reverse charge must say "fordított adózás", cash accounting must
|
|
9
|
+
* say "pénzforgalmi elszámolás", and so on. These are derived from the data
|
|
10
|
+
* rather than left to whoever fills in a template, because a missing phrase
|
|
11
|
+
* makes the invoice defective even when every number on it is right.
|
|
12
|
+
*/
|
|
13
|
+
export interface Marking {
|
|
14
|
+
/** The text to print, in the document's language. */
|
|
15
|
+
text: string;
|
|
16
|
+
/** Where the requirement comes from, for the reader and for review. */
|
|
17
|
+
reference: string;
|
|
18
|
+
/** Free text NAV carries alongside a coded reason, if any. */
|
|
19
|
+
detail?: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Derive every marking the invoice must carry.
|
|
23
|
+
*
|
|
24
|
+
* Duplicates are collapsed: a reverse charge on twelve lines is one phrase on
|
|
25
|
+
* the document, not twelve.
|
|
26
|
+
*/
|
|
27
|
+
export declare function deriveMarkings(invoice: InvoiceType, language: DocumentLanguage): Marking[];
|
|
28
|
+
//# sourceMappingURL=markings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markings.d.ts","sourceRoot":"","sources":["../src/markings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAyB,MAAM,gBAAgB,CAAC;AAEzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD;;;;;;;;;GASG;AACH,MAAM,WAAW,OAAO;IACtB,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,SAAS,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAgBD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,EAAE,CA0D1F"}
|
package/dist/markings.js
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { marginSchemeLabel, label } from './labels.js';
|
|
2
|
+
function vatRatesOf(invoice) {
|
|
3
|
+
const lines = invoice.invoiceLines?.line ?? [];
|
|
4
|
+
const fromLines = lines.flatMap((line) => [line.lineAmountsNormal?.lineVatRate, line.lineAmountsSimplified?.lineVatRate].filter((rate) => rate !== undefined));
|
|
5
|
+
const fromSummary = [
|
|
6
|
+
...(invoice.invoiceSummary.summaryNormal?.summaryByVatRate ?? []).map((entry) => entry.vatRate),
|
|
7
|
+
...(invoice.invoiceSummary.summarySimplified ?? []).map((entry) => entry.vatRate),
|
|
8
|
+
];
|
|
9
|
+
return [...fromLines, ...fromSummary];
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Derive every marking the invoice must carry.
|
|
13
|
+
*
|
|
14
|
+
* Duplicates are collapsed: a reverse charge on twelve lines is one phrase on
|
|
15
|
+
* the document, not twelve.
|
|
16
|
+
*/
|
|
17
|
+
export function deriveMarkings(invoice, language) {
|
|
18
|
+
const markings = new Map();
|
|
19
|
+
const add = (marking) => {
|
|
20
|
+
markings.set(`${marking.text}|${marking.detail ?? ''}`, marking);
|
|
21
|
+
};
|
|
22
|
+
const detail = invoice.invoiceHead.invoiceDetail;
|
|
23
|
+
if (detail.cashAccountingIndicator) {
|
|
24
|
+
add({ text: label('cashAccounting', language), reference: 'Áfa tv. 169. § h)' });
|
|
25
|
+
}
|
|
26
|
+
if (detail.selfBillingIndicator) {
|
|
27
|
+
add({ text: label('selfBilling', language), reference: 'Áfa tv. 169. § l)' });
|
|
28
|
+
}
|
|
29
|
+
if (invoice.invoiceHead.fiscalRepresentativeInfo) {
|
|
30
|
+
add({
|
|
31
|
+
text: `${label('fiscalRepresentative', language)}: ${invoice.invoiceHead.fiscalRepresentativeInfo.fiscalRepresentativeName}`,
|
|
32
|
+
reference: 'Áfa tv. 169. § p)',
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
for (const rate of vatRatesOf(invoice)) {
|
|
36
|
+
if (rate.vatDomesticReverseCharge) {
|
|
37
|
+
add({ text: label('reverseCharge', language), reference: 'Áfa tv. 169. § n)' });
|
|
38
|
+
}
|
|
39
|
+
if (rate.vatExemption) {
|
|
40
|
+
add({
|
|
41
|
+
text: `${label('exempt', language)} — ${rate.vatExemption.case}`,
|
|
42
|
+
reference: 'Áfa tv. 169. § m)',
|
|
43
|
+
detail: rate.vatExemption.reason,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
if (rate.vatOutOfScope) {
|
|
47
|
+
add({
|
|
48
|
+
text: `${label('outOfScope', language)} — ${rate.vatOutOfScope.case}`,
|
|
49
|
+
reference: 'Áfa tv. 169. § m)',
|
|
50
|
+
detail: rate.vatOutOfScope.reason,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
if (rate.marginSchemeIndicator) {
|
|
54
|
+
add({
|
|
55
|
+
text: marginSchemeLabel(rate.marginSchemeIndicator, language),
|
|
56
|
+
reference: 'Áfa tv. 169. § o) p)',
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
if (rate.noVatCharge) {
|
|
60
|
+
add({ text: label('outOfScope', language), reference: 'Áfa tv. 169. § m)' });
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
const hasNewTransportMean = (invoice.invoiceLines?.line ?? []).some((line) => line.newTransportMean !== undefined);
|
|
64
|
+
if (hasNewTransportMean) {
|
|
65
|
+
add({ text: label('newTransportMean', language), reference: 'Áfa tv. 169. § k)' });
|
|
66
|
+
}
|
|
67
|
+
return [...markings.values()];
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=markings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markings.js","sourceRoot":"","sources":["../src/markings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { InvoiceData } from '@open-nav/core';
|
|
2
|
+
import type { RenderOptions } from './html.js';
|
|
3
|
+
/**
|
|
4
|
+
* PDF output without a browser.
|
|
5
|
+
*
|
|
6
|
+
* pdfmake does the layout and pdfkit the serialisation, and the fonts pdfmake
|
|
7
|
+
* bundles are Roboto — which covers Latin Extended-A, so `ő` and `ű` come out
|
|
8
|
+
* right. That was the whole reason a browser was needed: the PDF core fonts
|
|
9
|
+
* cannot represent those two characters, and Roboto embedded as a subset can.
|
|
10
|
+
*
|
|
11
|
+
* The output is smaller than a browser's and needs nothing installed. The
|
|
12
|
+
* cost is a second layout: this is pdfmake's document model, not CSS, so it
|
|
13
|
+
* follows the theme but will not match the HTML pixel for pixel.
|
|
14
|
+
*/
|
|
15
|
+
export declare class NativePdfError extends Error {
|
|
16
|
+
}
|
|
17
|
+
/** A brand font for the PDF engine, as four files. */
|
|
18
|
+
export interface PdfFont {
|
|
19
|
+
/** Family name referenced in the document. */
|
|
20
|
+
name: string;
|
|
21
|
+
normal: string;
|
|
22
|
+
bold?: string;
|
|
23
|
+
italics?: string;
|
|
24
|
+
bolditalics?: string;
|
|
25
|
+
}
|
|
26
|
+
export interface NativePdfOptions extends RenderOptions {
|
|
27
|
+
/** Replace Roboto with your own font files. */
|
|
28
|
+
font?: PdfFont;
|
|
29
|
+
}
|
|
30
|
+
/** Render an invoice to PDF bytes without a browser. */
|
|
31
|
+
export declare function renderInvoicePdfNative(document: InvoiceData, options?: NativePdfOptions): Promise<Buffer>;
|
|
32
|
+
//# sourceMappingURL=pdf-native.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pdf-native.d.ts","sourceRoot":"","sources":["../src/pdf-native.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAe,WAAW,EAAsC,MAAM,gBAAgB,CAAC;AAMnG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C;;;;;;;;;;;GAWG;AAEH,qBAAa,cAAe,SAAQ,KAAK;CAAG;AAe5C,sDAAsD;AACtD,MAAM,WAAW,OAAO;IACtB,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACrD,+CAA+C;IAC/C,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAuDD,wDAAwD;AACxD,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,WAAW,EACrB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,MAAM,CAAC,CAMjB"}
|