pareto 0.80.53 → 0.80.55

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 (110) hide show
  1. package/dist/declarations/transformers/interface/typescript.d.ts +2 -2
  2. package/dist/declarations/transformers/text/filename.d.ts +1 -1
  3. package/dist/implementation/{manual/transformers/interface → transformers/implementation}/serialized_typescript.d.ts +1 -1
  4. package/dist/implementation/transformers/implementation/serialized_typescript.js +30 -0
  5. package/dist/implementation/{manual/transformers → transformers}/implementation/typescript.d.ts +3 -3
  6. package/dist/implementation/transformers/implementation/typescript.js +690 -0
  7. package/dist/implementation/{manual/transformers/implementation → transformers/interface}/serialized_typescript.d.ts +1 -1
  8. package/dist/implementation/transformers/interface/serialized_typescript.js +16 -0
  9. package/dist/implementation/{manual/transformers → transformers}/interface/typescript.d.ts +3 -3
  10. package/dist/implementation/transformers/interface/typescript.js +290 -0
  11. package/dist/implementation/transformers/library/typescript.d.ts +13 -0
  12. package/dist/implementation/transformers/library/typescript.js +13 -0
  13. package/dist/implementation/transformers/text/filename.d.ts +2 -0
  14. package/dist/implementation/transformers/text/filename.js +25 -0
  15. package/dist/interface/data/typescript_light.js +3 -0
  16. package/dist/{interface/generated/liana/schemas/implementation → modules/implementation/interface}/data/resolved.d.ts +1 -1
  17. package/dist/modules/implementation/interface/data/resolved.js +4 -0
  18. package/dist/{interface/generated/liana/schemas/implementation → modules/implementation/interface}/data/unresolved.d.ts +1 -1
  19. package/dist/modules/implementation/interface/data/unresolved.js +5 -0
  20. package/dist/modules/interface/interface/data/resolved.js +3 -0
  21. package/dist/{interface/generated/liana/schemas → modules/interface}/interface/data/unresolved.js +1 -1
  22. package/dist/modules/typescript_light/implementation/{manual/transformers → transformers}/text/identifier.d.ts +1 -1
  23. package/dist/modules/typescript_light/implementation/{manual/transformers → transformers}/text/identifier.js +1 -1
  24. package/dist/modules/typescript_light/implementation/{manual/transformers → transformers}/typescript_light/prose.d.ts +3 -3
  25. package/dist/modules/typescript_light/implementation/transformers/typescript_light/prose.js +753 -0
  26. package/dist/modules/typescript_light/shorthands/typescript_light/target.d.ts +1 -1
  27. package/dist/modules/typescript_light/shorthands/typescript_light/target.js +2 -2
  28. package/dist/shorthands/implementation/target.d.ts +2 -2
  29. package/dist/shorthands/interface/target.d.ts +1 -1
  30. package/package.json +1 -1
  31. package/dist/implementation/generated/liana/schemas/implementation/resolved/refiners/unresolved.d.ts +0 -7
  32. package/dist/implementation/generated/liana/schemas/implementation/resolved/refiners/unresolved.js +0 -1108
  33. package/dist/implementation/generated/liana/schemas/implementation/resolved/transformers/astn_sealed_target.d.ts +0 -7
  34. package/dist/implementation/generated/liana/schemas/implementation/resolved/transformers/astn_sealed_target.js +0 -1247
  35. package/dist/implementation/generated/liana/schemas/implementation/resolved/transformers/fountain_pen.d.ts +0 -7
  36. package/dist/implementation/generated/liana/schemas/implementation/resolved/transformers/fountain_pen.js +0 -11
  37. package/dist/implementation/generated/liana/schemas/implementation/unresolved/refiners/astn_parse_tree.d.ts +0 -7
  38. package/dist/implementation/generated/liana/schemas/implementation/unresolved/refiners/astn_parse_tree.js +0 -2921
  39. package/dist/implementation/generated/liana/schemas/implementation/unresolved/refiners/list_of_characters.d.ts +0 -7
  40. package/dist/implementation/generated/liana/schemas/implementation/unresolved/refiners/list_of_characters.js +0 -23
  41. package/dist/implementation/generated/liana/schemas/interface/resolved/refiners/unresolved.d.ts +0 -6
  42. package/dist/implementation/generated/liana/schemas/interface/resolved/refiners/unresolved.js +0 -225
  43. package/dist/implementation/generated/liana/schemas/interface/resolved/transformers/astn_sealed_target.d.ts +0 -6
  44. package/dist/implementation/generated/liana/schemas/interface/resolved/transformers/astn_sealed_target.js +0 -295
  45. package/dist/implementation/generated/liana/schemas/interface/resolved/transformers/fountain_pen.d.ts +0 -6
  46. package/dist/implementation/generated/liana/schemas/interface/resolved/transformers/fountain_pen.js +0 -10
  47. package/dist/implementation/generated/liana/schemas/interface/unresolved/refiners/astn_parse_tree.d.ts +0 -6
  48. package/dist/implementation/generated/liana/schemas/interface/unresolved/refiners/astn_parse_tree.js +0 -652
  49. package/dist/implementation/generated/liana/schemas/interface/unresolved/refiners/list_of_characters.d.ts +0 -6
  50. package/dist/implementation/generated/liana/schemas/interface/unresolved/refiners/list_of_characters.js +0 -20
  51. package/dist/implementation/generated/liana/schemas/typescript_light/refiners/astn_parse_tree.d.ts +0 -9
  52. package/dist/implementation/generated/liana/schemas/typescript_light/refiners/astn_parse_tree.js +0 -964
  53. package/dist/implementation/generated/liana/schemas/typescript_light/refiners/list_of_characters.d.ts +0 -9
  54. package/dist/implementation/generated/liana/schemas/typescript_light/refiners/list_of_characters.js +0 -29
  55. package/dist/implementation/generated/liana/schemas/typescript_light/transformers/astn_sealed_target.d.ts +0 -9
  56. package/dist/implementation/generated/liana/schemas/typescript_light/transformers/astn_sealed_target.js +0 -529
  57. package/dist/implementation/generated/liana/schemas/typescript_light/transformers/boilerplate_for_migrate.d.ts +0 -9
  58. package/dist/implementation/generated/liana/schemas/typescript_light/transformers/boilerplate_for_migrate.js +0 -306
  59. package/dist/implementation/generated/liana/schemas/typescript_light/transformers/fountain_pen.d.ts +0 -9
  60. package/dist/implementation/generated/liana/schemas/typescript_light/transformers/fountain_pen.js +0 -13
  61. package/dist/implementation/manual/transformers/implementation/serialized_typescript.js +0 -30
  62. package/dist/implementation/manual/transformers/implementation/typescript.js +0 -690
  63. package/dist/implementation/manual/transformers/interface/serialized_typescript.js +0 -16
  64. package/dist/implementation/manual/transformers/interface/typescript.js +0 -290
  65. package/dist/implementation/manual/transformers/library/typescript.d.ts +0 -13
  66. package/dist/implementation/manual/transformers/library/typescript.js +0 -13
  67. package/dist/implementation/manual/transformers/text/filename.d.ts +0 -2
  68. package/dist/implementation/manual/transformers/text/filename.js +0 -25
  69. package/dist/interface/generated/liana/schemas/implementation/data/resolved.js +0 -4
  70. package/dist/interface/generated/liana/schemas/implementation/data/unresolved.js +0 -5
  71. package/dist/interface/generated/liana/schemas/implementation/signatures/resolved/refiners/unresolved.d.ts +0 -53
  72. package/dist/interface/generated/liana/schemas/implementation/signatures/resolved/refiners/unresolved.js +0 -5
  73. package/dist/interface/generated/liana/schemas/implementation/signatures/resolved/transformers/astn_sealed_target.d.ts +0 -45
  74. package/dist/interface/generated/liana/schemas/implementation/signatures/resolved/transformers/astn_sealed_target.js +0 -4
  75. package/dist/interface/generated/liana/schemas/implementation/signatures/resolved/transformers/boilerplate_for_migrate.d.ts +0 -45
  76. package/dist/interface/generated/liana/schemas/implementation/signatures/resolved/transformers/boilerplate_for_migrate.js +0 -4
  77. package/dist/interface/generated/liana/schemas/implementation/signatures/resolved/transformers/fountain_pen.d.ts +0 -45
  78. package/dist/interface/generated/liana/schemas/implementation/signatures/resolved/transformers/fountain_pen.js +0 -4
  79. package/dist/interface/generated/liana/schemas/implementation/signatures/unresolved/refiners/astn_parse_tree.d.ts +0 -53
  80. package/dist/interface/generated/liana/schemas/implementation/signatures/unresolved/refiners/astn_parse_tree.js +0 -5
  81. package/dist/interface/generated/liana/schemas/implementation/signatures/unresolved/refiners/list_of_characters.d.ts +0 -71
  82. package/dist/interface/generated/liana/schemas/implementation/signatures/unresolved/refiners/list_of_characters.js +0 -5
  83. package/dist/interface/generated/liana/schemas/interface/data/resolved.js +0 -3
  84. package/dist/interface/generated/liana/schemas/interface/signatures/resolved/refiners/unresolved.d.ts +0 -45
  85. package/dist/interface/generated/liana/schemas/interface/signatures/resolved/refiners/unresolved.js +0 -5
  86. package/dist/interface/generated/liana/schemas/interface/signatures/resolved/transformers/astn_sealed_target.d.ts +0 -38
  87. package/dist/interface/generated/liana/schemas/interface/signatures/resolved/transformers/astn_sealed_target.js +0 -4
  88. package/dist/interface/generated/liana/schemas/interface/signatures/resolved/transformers/boilerplate_for_migrate.d.ts +0 -38
  89. package/dist/interface/generated/liana/schemas/interface/signatures/resolved/transformers/boilerplate_for_migrate.js +0 -4
  90. package/dist/interface/generated/liana/schemas/interface/signatures/resolved/transformers/fountain_pen.d.ts +0 -38
  91. package/dist/interface/generated/liana/schemas/interface/signatures/resolved/transformers/fountain_pen.js +0 -4
  92. package/dist/interface/generated/liana/schemas/interface/signatures/unresolved/refiners/astn_parse_tree.d.ts +0 -45
  93. package/dist/interface/generated/liana/schemas/interface/signatures/unresolved/refiners/astn_parse_tree.js +0 -5
  94. package/dist/interface/generated/liana/schemas/interface/signatures/unresolved/refiners/list_of_characters.d.ts +0 -60
  95. package/dist/interface/generated/liana/schemas/interface/signatures/unresolved/refiners/list_of_characters.js +0 -5
  96. package/dist/interface/generated/liana/schemas/typescript_light/data.js +0 -3
  97. package/dist/interface/generated/liana/schemas/typescript_light/signatures/refiners/astn_parse_tree.d.ts +0 -69
  98. package/dist/interface/generated/liana/schemas/typescript_light/signatures/refiners/astn_parse_tree.js +0 -5
  99. package/dist/interface/generated/liana/schemas/typescript_light/signatures/refiners/list_of_characters.d.ts +0 -93
  100. package/dist/interface/generated/liana/schemas/typescript_light/signatures/refiners/list_of_characters.js +0 -5
  101. package/dist/interface/generated/liana/schemas/typescript_light/signatures/transformers/astn_sealed_target.d.ts +0 -59
  102. package/dist/interface/generated/liana/schemas/typescript_light/signatures/transformers/astn_sealed_target.js +0 -4
  103. package/dist/interface/generated/liana/schemas/typescript_light/signatures/transformers/boilerplate_for_migrate.d.ts +0 -59
  104. package/dist/interface/generated/liana/schemas/typescript_light/signatures/transformers/boilerplate_for_migrate.js +0 -4
  105. package/dist/interface/generated/liana/schemas/typescript_light/signatures/transformers/fountain_pen.d.ts +0 -59
  106. package/dist/interface/generated/liana/schemas/typescript_light/signatures/transformers/fountain_pen.js +0 -4
  107. package/dist/modules/typescript_light/implementation/manual/transformers/typescript_light/prose.js +0 -753
  108. /package/dist/interface/{generated/liana/schemas/typescript_light/data.d.ts → data/typescript_light.d.ts} +0 -0
  109. /package/dist/{interface/generated/liana/schemas → modules/interface}/interface/data/resolved.d.ts +0 -0
  110. /package/dist/{interface/generated/liana/schemas → modules/interface}/interface/data/unresolved.d.ts +0 -0
@@ -0,0 +1,753 @@
1
+ import * as p_ from 'pareto-core/implementation/transformer';
2
+ import p_list_from_text from 'pareto-core/implementation/refiner/specials/list_from_text';
3
+ import p_list_build_deprecated from 'pareto-core/implementation/refiner/specials/list_build_deprecated';
4
+ import p_unreachable_code_path from 'pareto-core/implementation/transformer/specials/unreachable_code_path';
5
+ //shorthands
6
+ import * as sh from "pareto-fountain-pen/shorthands/prose/deprecated";
7
+ export const escaped_text = ($) => p_.from.list(p_list_from_text($, ($) => $)).flatten(($) => {
8
+ switch ($) {
9
+ // case 0x2F: // slash (\/)
10
+ // return p_.literal.list([
11
+ // 0x5c, // \
12
+ // 0x2f, // /
13
+ // ])
14
+ case 0x22: // " (\")
15
+ return p_.literal.list([
16
+ 0x5C, // \
17
+ 0x22, // "
18
+ ]);
19
+ case 0x5C: // \ (\\)
20
+ return p_.literal.list([
21
+ 0x5C, // \
22
+ 0x5C, // \
23
+ ]);
24
+ case 0x08: // backspace (\b)
25
+ return p_.literal.list([
26
+ 0x5C, // \
27
+ 0x62, // b
28
+ ]);
29
+ case 0x0C: // form feed (\f)
30
+ return p_.literal.list([
31
+ 0x5C, // \
32
+ 0x66, // f
33
+ ]);
34
+ case 0x0A: // line feed (\n)
35
+ return p_.literal.list([
36
+ 0x5C, // \
37
+ 0x6E, // n
38
+ ]);
39
+ case 0x0D: // carriage return (\r)
40
+ return p_.literal.list([
41
+ 0x5C, // \
42
+ 0x72, // r
43
+ ]);
44
+ case 0x09: // horizontal tab (\t)
45
+ return p_.literal.list([
46
+ 0x5C, // \
47
+ 0x74, // t
48
+ ]);
49
+ case 0x0B: // vertical tab (\v)
50
+ return p_.literal.list([
51
+ 0x5C, // \
52
+ 0x76, // v
53
+ ]);
54
+ default: {
55
+ return p_.literal.list([
56
+ $,
57
+ ]);
58
+ }
59
+ }
60
+ });
61
+ export const apostrophed_text = ($) => p_.literal.segmented_list([
62
+ p_.literal.list([
63
+ 0x27, // '
64
+ ]),
65
+ escaped_text($),
66
+ p_.literal.list([
67
+ 0x27, // '
68
+ ])
69
+ ]);
70
+ export const backticked_text = ($) => p_.literal.segmented_list([
71
+ p_.literal.list([
72
+ 0x60, // `
73
+ ]),
74
+ escaped_text($),
75
+ p_.literal.list([
76
+ 0x60, // `
77
+ ])
78
+ ]);
79
+ export const quoted_text = ($) => p_.literal.segmented_list([
80
+ p_.literal.list([
81
+ 0x22, // "
82
+ ]),
83
+ escaped_text($),
84
+ p_.literal.list([
85
+ 0x22, // "
86
+ ])
87
+ ]);
88
+ export const decimal = ($) => p_list_build_deprecated(($i) => {
89
+ if ($ < 0) {
90
+ $i['add item'](45); // '-'
91
+ $ = -$;
92
+ }
93
+ const digits = p_list_build_deprecated(($i) => {
94
+ do {
95
+ const digit = $ % 10;
96
+ $i['add item'](digit);
97
+ $ = p_.from.number($).divide(10, ['towards zero', null], {
98
+ divided_by_zero: () => p_unreachable_code_path("the divisor is hardcoded to 10"),
99
+ });
100
+ } while ($ > 0);
101
+ });
102
+ for (let j = p_.from.list(digits).amount_of_items() - 1; j >= 0; j--) {
103
+ $i['add item'](48 + p_.from.optional(digits.__deprecated_get_possible_item_at(j)).decide(($) => $, () => p_unreachable_code_path("index cannot be out of bounds")));
104
+ }
105
+ });
106
+ export const float = ($) => {
107
+ return p_list_build_deprecated(($i) => {
108
+ // Handle special case for zero
109
+ if ($ === 0) {
110
+ $i['add item'](48); // '0'
111
+ return;
112
+ }
113
+ // Handle negative numbers
114
+ if ($ < 0) {
115
+ $i['add item'](45); // '-'
116
+ $ = -$;
117
+ }
118
+ // Calculate exponent (power of 10)
119
+ let exponent = 0;
120
+ let mantissa = $;
121
+ // Normalize to range [1, 10)
122
+ if (mantissa >= 10) {
123
+ while (mantissa >= 10) {
124
+ mantissa = mantissa / 10;
125
+ exponent++;
126
+ }
127
+ }
128
+ else if (mantissa < 1) {
129
+ while (mantissa < 1) {
130
+ mantissa = mantissa * 10;
131
+ exponent--;
132
+ }
133
+ }
134
+ // Use exponential notation only if exponent < -6 or >= 21
135
+ const use_exponential = exponent < -6 || exponent >= 21;
136
+ const fixme_digits = 16;
137
+ // Create scale factor
138
+ let scale_factor = 1;
139
+ for (let i = 0; i < fixme_digits - 1; i++) {
140
+ scale_factor = scale_factor * 10;
141
+ }
142
+ const mantissa_scaled = p_.from.number(mantissa * scale_factor + 0.5).divide(1, ['towards zero', null], {
143
+ divided_by_zero: () => p_unreachable_code_path("the divisor is hardcoded to 1"),
144
+ });
145
+ // Extract all digits
146
+ const digits = p_list_build_deprecated(($i) => {
147
+ let $v_t = mantissa_scaled;
148
+ do {
149
+ const digit = $v_t % 10;
150
+ $i['add item'](digit);
151
+ $v_t = p_.from.number($v_t).divide(10, ['towards zero', null], {
152
+ divided_by_zero: () => p_unreachable_code_path("the divisor is hardcoded to 10"),
153
+ });
154
+ } while ($v_t > 0);
155
+ });
156
+ if (use_exponential) {
157
+ // OUTPUT IN EXPONENTIAL NOTATION
158
+ const first_digit = p_.from.optional(digits.__deprecated_get_possible_item_at(p_.from.list(digits).amount_of_items() - 1)).decide(($) => $, () => p_unreachable_code_path("index cannot be out of bounds"));
159
+ $i['add item'](48 + first_digit);
160
+ // Find first non-zero digit in fractional part
161
+ let first_nonzero_index = -1;
162
+ if (p_.from.list(digits).amount_of_items() > 1) {
163
+ for (let j = 0; j < p_.from.list(digits).amount_of_items() - 1; j++) {
164
+ const digit = p_.from.optional(digits.__deprecated_get_possible_item_at(j)).decide(($) => $, () => p_unreachable_code_path("index cannot be out of bounds"));
165
+ if (digit !== 0) {
166
+ if (first_nonzero_index === -1) {
167
+ first_nonzero_index = j;
168
+ }
169
+ }
170
+ }
171
+ }
172
+ if (first_nonzero_index >= 0) {
173
+ $i['add item'](46); // '.'
174
+ for (let j = p_.from.list(digits).amount_of_items() - 2; j >= first_nonzero_index; j--) {
175
+ const digit = p_.from.optional(digits.__deprecated_get_possible_item_at(j)).decide(($) => $, () => p_unreachable_code_path("index cannot be out of bounds"));
176
+ $i['add item'](48 + digit);
177
+ }
178
+ }
179
+ // Add exponent
180
+ $i['add item'](101); // 'e'
181
+ let exp = exponent;
182
+ if (exp < 0) {
183
+ $i['add item'](45); // '-'
184
+ exp = -exp;
185
+ }
186
+ else {
187
+ $i['add item'](43); // '+'
188
+ }
189
+ const exp_digits = p_list_build_deprecated(($i) => {
190
+ if (exp === 0) {
191
+ $i['add item'](0);
192
+ }
193
+ else {
194
+ do {
195
+ const digit = exp % 10;
196
+ $i['add item'](digit);
197
+ exp = p_.from.number(exp).divide(10, ['towards zero', null], {
198
+ divided_by_zero: () => p_unreachable_code_path("hardcoded 10"),
199
+ });
200
+ } while (exp > 0);
201
+ }
202
+ });
203
+ for (let j = p_.from.list(exp_digits).amount_of_items() - 1; j >= 0; j--) {
204
+ const digit = p_.from.optional(exp_digits.__deprecated_get_possible_item_at(j)).decide(($) => $, () => p_unreachable_code_path("index cannot be out of bounds"));
205
+ $i['add item'](48 + digit);
206
+ }
207
+ }
208
+ else {
209
+ // OUTPUT IN FIXED-POINT NOTATION
210
+ let digit_count = p_.from.list(digits).amount_of_items();
211
+ // Find first (lowest index) nonzero digit to know when to stop
212
+ let first_nonzero = digit_count; // Initialize beyond range
213
+ for (let j = 0; j < digit_count; j++) {
214
+ const d = p_.from.optional(digits.__deprecated_get_possible_item_at(j)).decide(($) => $, () => p_unreachable_code_path("index cannot be out of bounds"));
215
+ if (d !== 0) {
216
+ first_nonzero = j;
217
+ break;
218
+ }
219
+ }
220
+ const decimal_pos = exponent + 1; // Number of digits to the left of decimal
221
+ if (first_nonzero === digit_count) {
222
+ // All zeros
223
+ $i['add item'](48); // '0'
224
+ }
225
+ else if (decimal_pos <= 0) {
226
+ // Like 0.00123 - need leading zeros
227
+ $i['add item'](48); // '0'
228
+ $i['add item'](46); // '.'
229
+ for (let z = 0; z < -decimal_pos; z++) {
230
+ $i['add item'](48);
231
+ }
232
+ // Output digits from highest to first_nonzero
233
+ for (let i = digit_count - 1; i >= first_nonzero; i--) {
234
+ const d = p_.from.optional(digits.__deprecated_get_possible_item_at(i)).decide(($) => $, () => p_unreachable_code_path("index cannot be out of bounds"));
235
+ $i['add item'](48 + d);
236
+ }
237
+ }
238
+ else {
239
+ // Like 123 or 123.45
240
+ let digits_output = 0;
241
+ // Output all digits from highest, but ensure we output at least decimal_pos digits before decimal
242
+ // let min_digits_needed = decimal_pos
243
+ for (let i = digit_count - 1; i >= 0; i--) {
244
+ // Stop after we've output all significant fractional digits
245
+ if (i < first_nonzero && digits_output >= decimal_pos) {
246
+ break;
247
+ }
248
+ const d = p_.from.optional(digits.__deprecated_get_possible_item_at(i)).decide(($) => $, () => p_unreachable_code_path("index cannot be out of bounds"));
249
+ // Check if we need to insert decimal before this digit
250
+ if (digits_output === decimal_pos && digits_output > 0) {
251
+ $i['add item'](46); // '.'
252
+ }
253
+ $i['add item'](48 + d);
254
+ digits_output++;
255
+ }
256
+ }
257
+ }
258
+ });
259
+ };
260
+ export const Directory = ($) => {
261
+ return p_.from.dictionary($).map(($, id) => p_.from.state($).decide(($) => {
262
+ switch ($[0]) {
263
+ case 'file': return p_.option($, ($) => ['file', Statements($['statements'], { 'replace empty type literals by symbol': true })]);
264
+ case 'directory': return p_.option($, ($) => ['directory', Directory($)]);
265
+ default: return p_.exhaustive($[0]);
266
+ }
267
+ }));
268
+ };
269
+ export const Identifier = ($) => {
270
+ return sh.ph.literal($.value);
271
+ };
272
+ export const String_Literal_pseudo = ($, $p) => {
273
+ return sh.ph.serialize($p.delimiter === "quote"
274
+ ? quoted_text($)
275
+ : apostrophed_text($));
276
+ };
277
+ export const String_Literal = ($) => {
278
+ return sh.ph.serialize($.delimiter[0] === "quote"
279
+ ? quoted_text($.value)
280
+ : apostrophed_text($.value));
281
+ };
282
+ export const Statements = ($, $p) => sh.pg.composed(p_.from.list($).map(($) => p_.from.state($).decide(($) => {
283
+ switch ($[0]) {
284
+ case 'block': return p_.option($, ($) => sh.pg.sentences([
285
+ sh.sentence([]),
286
+ sh.sentence([
287
+ sh.ph.literal("{"),
288
+ sh.ph.indent(Statements($, $p)),
289
+ sh.ph.literal("}"),
290
+ ])
291
+ ]));
292
+ case 'export': return p_.option($, ($) => sh.pg.sentences([
293
+ sh.sentence([]),
294
+ sh.sentence([
295
+ sh.ph.literal("export "),
296
+ p_.from.state($.type).decide(($) => {
297
+ switch ($[0]) {
298
+ case 'named exports': return p_.option($, ($) => sh.ph.composed([
299
+ sh.ph.literal("{ "),
300
+ sh.ph.indent(sh.pg.sentences(p_.from.list($.specifiers).map(($) => sh.sentence([
301
+ Identifier($.name),
302
+ p_.from.optional($.as).decide(($) => sh.ph.composed([
303
+ sh.ph.literal(" as "),
304
+ Identifier($),
305
+ ]), () => sh.ph.nothing()),
306
+ sh.ph.literal(", ")
307
+ ])))),
308
+ sh.ph.literal("}"),
309
+ p_.from.optional($.from).decide(($) => sh.ph.composed([
310
+ sh.ph.literal(" from "),
311
+ String_Literal($),
312
+ ]), () => sh.ph.nothing())
313
+ ]));
314
+ default: return p_.exhaustive($[0]);
315
+ }
316
+ }),
317
+ ])
318
+ ]));
319
+ case 'expression': return p_.option($, ($) => sh.pg.sentences([
320
+ sh.sentence(Expression($, {
321
+ 'replace empty type literals by symbol': $p['replace empty type literals by symbol'],
322
+ 'object literal needs parentheses': true,
323
+ }))
324
+ ]));
325
+ case 'import': return p_.option($, ($) => sh.pg.sentences([
326
+ sh.sentence([]),
327
+ sh.sentence([
328
+ sh.ph.literal("import "),
329
+ p_.from.state($.type).decide(($) => {
330
+ switch ($[0]) {
331
+ case 'default': return p_.option($, ($) => sh.ph.composed([
332
+ Identifier($),
333
+ ]));
334
+ case 'named': return p_.option($, ($) => sh.ph.composed([
335
+ sh.ph.literal("{"),
336
+ sh.ph.indent(sh.pg.sentences(p_.from.list($.specifiers).map(($) => sh.sentence([
337
+ Identifier($.name),
338
+ p_.from.optional($.as).decide(($) => sh.ph.composed([
339
+ sh.ph.literal(" as "),
340
+ Identifier($),
341
+ ]), () => sh.ph.nothing()),
342
+ sh.ph.literal(",")
343
+ ])))),
344
+ sh.ph.literal("}"),
345
+ ]));
346
+ case 'namespace': return p_.option($, ($) => sh.ph.composed([
347
+ sh.ph.literal("* as "),
348
+ Identifier($),
349
+ ]));
350
+ default: return p_.exhaustive($[0]);
351
+ }
352
+ }),
353
+ sh.ph.literal(" from "),
354
+ String_Literal($.from),
355
+ ])
356
+ ]));
357
+ case 'module declaration': return p_.option($, ($) => sh.pg.sentences([
358
+ sh.sentence([]),
359
+ sh.sentence([
360
+ $.export ?
361
+ sh.ph.literal("export ")
362
+ : sh.ph.nothing(),
363
+ sh.ph.literal("namespace "),
364
+ Identifier($['name']),
365
+ sh.ph.literal(" "),
366
+ sh.ph.composed([
367
+ sh.ph.literal("{"),
368
+ sh.ph.indent(sh.pg.composed([
369
+ Statements($.block, $p),
370
+ sh.pg.sentences([
371
+ sh.sentence([]),
372
+ ])
373
+ ])),
374
+ sh.ph.literal("}"),
375
+ ])
376
+ ])
377
+ ]));
378
+ case 'return': return p_.option($, ($) => sh.pg.sentences([
379
+ sh.sentence(p_.literal.segmented_list([
380
+ p_.literal.list([
381
+ sh.ph.literal("return "),
382
+ ]),
383
+ p_.from.optional($).decide(($) => Expression($, {
384
+ 'replace empty type literals by symbol': $p['replace empty type literals by symbol'],
385
+ 'object literal needs parentheses': false,
386
+ }), () => p_.literal.list([]))
387
+ ])),
388
+ ]));
389
+ case 'switch': return p_.option($, ($) => sh.pg.sentences([
390
+ sh.sentence(p_.literal.segmented_list([
391
+ p_.literal.list([
392
+ sh.ph.literal("switch ("),
393
+ ]),
394
+ Expression($.expression, {
395
+ 'replace empty type literals by symbol': $p['replace empty type literals by symbol'],
396
+ 'object literal needs parentheses': false,
397
+ }),
398
+ p_.literal.list([
399
+ sh.ph.literal(") {"),
400
+ sh.ph.indent(sh.pg.sentences(p_.from.list($.clauses).map(($) => sh.sentence(p_.literal.segmented_list([
401
+ p_.from.state($.type).decide(($) => {
402
+ switch ($[0]) {
403
+ case 'case': return p_.option($, ($) => p_.literal.segmented_list([
404
+ p_.literal.list([
405
+ sh.ph.literal("case "),
406
+ ]),
407
+ Expression($, {
408
+ 'replace empty type literals by symbol': $p['replace empty type literals by symbol'],
409
+ 'object literal needs parentheses': true,
410
+ }),
411
+ p_.literal.list([
412
+ sh.ph.literal(":"),
413
+ ]),
414
+ ]));
415
+ case 'default': return p_.option($, ($) => p_.literal.list([
416
+ sh.ph.literal("default:")
417
+ ]));
418
+ default: return p_.exhaustive($[0]);
419
+ }
420
+ }),
421
+ p_.literal.list([
422
+ sh.ph.indent(Statements($.statements, $p))
423
+ ]),
424
+ ]))))),
425
+ sh.ph.literal("}"),
426
+ ])
427
+ ])),
428
+ ]));
429
+ case 'type alias declaration': return p_.option($, ($) => sh.pg.sentences([
430
+ sh.sentence([]),
431
+ sh.sentence([
432
+ $.export ? sh.ph.literal("export ") : sh.ph.nothing(),
433
+ sh.ph.literal("type "),
434
+ Identifier($['name']),
435
+ sh.ph.rich(p_.from.list($['parameters']).map(($) => Identifier($)), sh.ph.nothing(), sh.ph.literal("<"), sh.ph.literal(", "), sh.ph.literal(">")),
436
+ sh.ph.literal(" = "),
437
+ Type($['type'], $p),
438
+ ])
439
+ ]));
440
+ case 'variable': return p_.option($, ($) => sh.pg.sentences([
441
+ sh.sentence([]),
442
+ sh.sentence([
443
+ $.export ? sh.ph.literal("export ") : sh.ph.nothing(),
444
+ $.const ? sh.ph.literal("const ") : sh.ph.literal("let "),
445
+ Identifier($['name']),
446
+ p_.from.optional($.type).decide(($) => sh.ph.composed([
447
+ sh.ph.literal(": "),
448
+ Type($, $p)
449
+ ]), () => sh.ph.nothing()),
450
+ sh.ph.composed(p_.from.optional($.expression).decide(($) => p_.literal.segmented_list([
451
+ p_.literal.list([
452
+ sh.ph.literal(" = "),
453
+ ]),
454
+ Expression($, {
455
+ 'replace empty type literals by symbol': $p['replace empty type literals by symbol'],
456
+ 'object literal needs parentheses': false,
457
+ })
458
+ ]), () => p_.literal.list([]))),
459
+ ])
460
+ ]));
461
+ default: return p_.exhaustive($[0]);
462
+ }
463
+ })));
464
+ export const Expression = ($, $p) => p_.from.state($).decide(($) => {
465
+ switch ($[0]) {
466
+ case 'assignment': return p_.option($, ($) => p_.literal.segmented_list([
467
+ Expression($.left, $p),
468
+ p_.literal.list([
469
+ sh.ph.literal(" = "),
470
+ ]),
471
+ Expression($.right, {
472
+ 'object literal needs parentheses': false,
473
+ 'replace empty type literals by symbol': $p['replace empty type literals by symbol'],
474
+ }),
475
+ ]));
476
+ case 'array literal': return p_.option($, ($) => p_.literal.segmented_list([
477
+ p_.literal.list([
478
+ sh.ph.literal("["),
479
+ sh.ph.rich(p_.from.list($).flatten(($) => Expression($, {
480
+ 'object literal needs parentheses': false,
481
+ 'replace empty type literals by symbol': $p['replace empty type literals by symbol'],
482
+ })), sh.ph.nothing(), sh.ph.nothing(), sh.ph.literal(", "), sh.ph.nothing())
483
+ ]),
484
+ p_.literal.list([
485
+ sh.ph.literal("]"),
486
+ ]),
487
+ ]));
488
+ case 'arrow function': return p_.option($, ($) => p_.literal.segmented_list([
489
+ p_.literal.list([
490
+ sh.ph.literal("("),
491
+ sh.ph.rich(p_.from.list($.parameters).map(($) => sh.ph.composed([
492
+ Identifier($.name),
493
+ p_.from.optional($.type).decide(($) => sh.ph.composed([
494
+ sh.ph.literal(": "),
495
+ Type($, $p)
496
+ ]), () => sh.ph.nothing()),
497
+ ])), sh.ph.nothing(), sh.ph.nothing(), sh.ph.literal(", "), sh.ph.nothing()),
498
+ sh.ph.literal(")"),
499
+ ]),
500
+ p_.from.optional($['return type']).decide(($) => p_.literal.segmented_list([
501
+ p_.literal.list([
502
+ sh.ph.literal(": "),
503
+ ]),
504
+ p_.literal.list([
505
+ Type($, $p)
506
+ ])
507
+ ]), () => p_.literal.list([])),
508
+ p_.literal.list([
509
+ sh.ph.literal(" => "),
510
+ ]),
511
+ p_.from.state($.body).decide(($) => {
512
+ switch ($[0]) {
513
+ case 'block': return p_.option($, ($) => p_.literal.list([
514
+ sh.ph.literal("{"),
515
+ sh.ph.indent(Statements($, $p)),
516
+ sh.ph.literal("}"),
517
+ ]));
518
+ case 'expression': return p_.option($, ($) => Expression($, {
519
+ 'object literal needs parentheses': true,
520
+ 'replace empty type literals by symbol': $p['replace empty type literals by symbol'],
521
+ }));
522
+ default: return p_.exhaustive($[0]);
523
+ }
524
+ }),
525
+ ]));
526
+ case 'call': return p_.option($, ($) => p_.literal.segmented_list([
527
+ Expression($['function selection'], $p),
528
+ p_.literal.list([
529
+ sh.ph.literal("("),
530
+ sh.ph.indent(sh.pg.sentences(p_.from.list($['arguments']).map(($) => sh.sentence(p_.literal.segmented_list([
531
+ Expression($, {
532
+ 'object literal needs parentheses': false,
533
+ 'replace empty type literals by symbol': $p['replace empty type literals by symbol'],
534
+ }),
535
+ p_.literal.list([
536
+ sh.ph.literal(",")
537
+ ]),
538
+ ]))))),
539
+ sh.ph.literal(")"),
540
+ ])
541
+ ]));
542
+ case 'compare': return p_.option($, ($) => p_.literal.segmented_list([
543
+ Expression($.left, $p),
544
+ p_.literal.list([
545
+ sh.ph.literal(" "),
546
+ p_.from.state($.operator).decide(($) => {
547
+ switch ($[0]) {
548
+ case 'loosely equal': return p_.option($, ($) => sh.ph.literal("=="));
549
+ case 'strictly equal': return p_.option($, ($) => sh.ph.literal("==="));
550
+ case 'loosely not equal': return p_.option($, ($) => sh.ph.literal("!="));
551
+ case 'strictly not equal': return p_.option($, ($) => sh.ph.literal("!=="));
552
+ case 'smaller than': return p_.option($, ($) => sh.ph.literal("<"));
553
+ case 'smaller than or equal': return p_.option($, ($) => sh.ph.literal("<="));
554
+ case 'greater than': return p_.option($, ($) => sh.ph.literal(">"));
555
+ case 'greater than or equal': return p_.option($, ($) => sh.ph.literal(">="));
556
+ default: return p_.exhaustive($[0]);
557
+ }
558
+ }),
559
+ sh.ph.literal(" "),
560
+ ]),
561
+ Expression($.right, {
562
+ 'object literal needs parentheses': false,
563
+ 'replace empty type literals by symbol': $p['replace empty type literals by symbol'],
564
+ }),
565
+ ]));
566
+ case 'conditional': return p_.option($, ($) => p_.literal.segmented_list([
567
+ Expression($.condition, $p),
568
+ p_.literal.list([
569
+ sh.ph.indent(sh.pg.sentences(p_.literal.list([
570
+ sh.sentence(p_.literal.segmented_list([
571
+ p_.literal.list([
572
+ sh.ph.literal("? "),
573
+ ]),
574
+ Expression($['if true'], {
575
+ 'replace empty type literals by symbol': $p['replace empty type literals by symbol'],
576
+ 'object literal needs parentheses': false,
577
+ }),
578
+ ])),
579
+ sh.sentence(p_.literal.segmented_list([
580
+ p_.literal.list([
581
+ sh.ph.literal(": "),
582
+ ]),
583
+ Expression($['if false'], {
584
+ 'replace empty type literals by symbol': $p['replace empty type literals by symbol'],
585
+ 'object literal needs parentheses': false,
586
+ }),
587
+ ])),
588
+ ]))),
589
+ ])
590
+ ]));
591
+ case 'element access': return p_.option($, ($) => p_.literal.segmented_list([
592
+ Expression($.collection, $p),
593
+ p_.literal.list([
594
+ sh.ph.literal("["),
595
+ ]),
596
+ Expression($.index, $p),
597
+ p_.literal.list([
598
+ sh.ph.literal("]"),
599
+ ])
600
+ ]));
601
+ case 'false': return p_.option($, ($) => p_.literal.list([
602
+ sh.ph.literal("false")
603
+ ]));
604
+ case 'identifier': return p_.option($, ($) => p_.literal.list([
605
+ Identifier($)
606
+ ]));
607
+ case 'null': return p_.option($, ($) => p_.literal.list([
608
+ sh.ph.literal("null")
609
+ ]));
610
+ case 'number literal': return p_.option($, ($) => p_.literal.list([
611
+ sh.ph.serialize(float($))
612
+ ]));
613
+ case 'object literal': return p_.option($, ($) => p_.literal.list([
614
+ $p['object literal needs parentheses']
615
+ ? sh.ph.literal("(")
616
+ : sh.ph.nothing(),
617
+ sh.ph.literal("{"),
618
+ sh.ph.indent(sh.pg.sentences(p_.from.list($.properties).map(($) => sh.sentence(p_.literal.segmented_list([
619
+ p_.literal.list([
620
+ p_.from.state($.key).decide(($) => {
621
+ switch ($[0]) {
622
+ case 'identifier': return p_.option($, ($) => Identifier($));
623
+ case 'string literal': return p_.option($, ($) => String_Literal($));
624
+ default: return p_.exhaustive($[0]);
625
+ }
626
+ }),
627
+ sh.ph.literal(": ")
628
+ ]),
629
+ Expression($.value, {
630
+ 'object literal needs parentheses': false,
631
+ 'replace empty type literals by symbol': $p['replace empty type literals by symbol'],
632
+ }),
633
+ p_.literal.list([
634
+ sh.ph.literal(",")
635
+ ])
636
+ ]))))),
637
+ sh.ph.literal("}"),
638
+ $p['object literal needs parentheses']
639
+ ? sh.ph.literal(")")
640
+ : sh.ph.nothing(),
641
+ ]));
642
+ case 'parenthesized': return p_.option($, ($) => p_.literal.segmented_list([
643
+ p_.literal.list([
644
+ sh.ph.literal("("),
645
+ ]),
646
+ Expression($, {
647
+ 'replace empty type literals by symbol': $p['replace empty type literals by symbol'],
648
+ 'object literal needs parentheses': false,
649
+ }),
650
+ p_.literal.list([
651
+ sh.ph.literal(")"),
652
+ ])
653
+ ]));
654
+ case 'property access': return p_.option($, ($) => p_.literal.segmented_list([
655
+ Expression($.object, $p),
656
+ p_.literal.list([
657
+ sh.ph.literal("."),
658
+ Identifier($.property),
659
+ ])
660
+ ]));
661
+ case 'string literal': return p_.option($, ($) => p_.literal.list([
662
+ sh.ph.serialize($['delimiter'][0] === "quote" ? quoted_text($['value']) : apostrophed_text($['value']))
663
+ ]));
664
+ case 'true': return p_.option($, ($) => p_.literal.list([
665
+ sh.ph.literal("true")
666
+ ]));
667
+ case 'unary operation': return p_.option($, ($) => {
668
+ const operand = $.operand;
669
+ return p_.literal.segmented_list([
670
+ p_.literal.list([
671
+ p_.from.state($.operator).decide(($) => {
672
+ switch ($[0]) {
673
+ case 'negation': return p_.option($, ($) => sh.ph.literal("-"));
674
+ case 'logical not': return p_.option($, ($) => sh.ph.literal("!"));
675
+ default: return p_.exhaustive($[0]);
676
+ }
677
+ })
678
+ ]),
679
+ Expression(operand, $p)
680
+ ]);
681
+ });
682
+ default: return p_.exhaustive($[0]);
683
+ }
684
+ });
685
+ export const Type = ($, $p) => p_.from.state($).decide(($) => {
686
+ switch ($[0]) {
687
+ case 'boolean': return p_.option($, ($) => sh.ph.literal("boolean"));
688
+ case 'function': return p_.option($, ($) => sh.ph.composed([
689
+ sh.ph.rich(p_.from.list($['type parameters']).map(($) => Type($, $p)), sh.ph.nothing(), sh.ph.literal("<"), sh.ph.literal(", "), sh.ph.literal(">")),
690
+ sh.ph.literal("("),
691
+ sh.ph.indent(sh.pg.sentences(p_.from.list($['parameters']).map(($) => sh.sentence(p_.literal.list([
692
+ Identifier($.name),
693
+ p_.from.optional($.type).decide(($) => sh.ph.composed([
694
+ sh.ph.literal(": "),
695
+ Type($, $p)
696
+ ]), () => sh.ph.nothing()),
697
+ sh.ph.literal(",")
698
+ ]))))),
699
+ sh.ph.literal(") => "),
700
+ Type($['return'], $p)
701
+ ]));
702
+ case 'literal type': return p_.option($, ($) => String_Literal($)); //FIX, implement a switch for the delimiter
703
+ case 'never': return p_.option($, ($) => sh.ph.literal("never"));
704
+ case 'null': return p_.option($, ($) => sh.ph.literal("null"));
705
+ case 'number': return p_.option($, ($) => sh.ph.literal("number"));
706
+ case 'string': return p_.option($, ($) => sh.ph.literal("string"));
707
+ case 'tuple': return p_.option($, ($) => sh.ph.composed([
708
+ $.readonly ? sh.ph.literal("readonly ") : sh.ph.nothing(),
709
+ sh.ph.literal("["),
710
+ sh.ph.rich(p_.from.list($.elements).map(($) => Type($, $p)), sh.ph.nothing(), sh.ph.nothing(), sh.ph.literal(", "), sh.ph.nothing()),
711
+ sh.ph.literal("]"),
712
+ ]));
713
+ case 'type literal': return p_.option($, ($) => $p['replace empty type literals by symbol'] && p_.from.list($.properties).on_has_items(() => true, () => false)
714
+ ? sh.ph.literal("symbol")
715
+ : sh.ph.composed([
716
+ sh.ph.literal("{"),
717
+ sh.ph.indent(sh.pg.sentences(p_.from.list($.properties).map(($) => sh.sentence([
718
+ sh.ph.composed([
719
+ $['readonly'] ? sh.ph.literal("readonly ") : sh.ph.nothing(),
720
+ p_.from.state($.key).decide(($) => {
721
+ switch ($[0]) {
722
+ case 'identifier': return p_.option($, ($) => Identifier($));
723
+ case 'string literal': return p_.option($, ($) => String_Literal($));
724
+ default: return p_.exhaustive($[0]);
725
+ }
726
+ }),
727
+ sh.ph.literal(": "),
728
+ Type($.type, $p),
729
+ ])
730
+ ])))),
731
+ sh.ph.literal("}")
732
+ ]));
733
+ case 'type reference': return p_.option($, ($) => sh.ph.composed([
734
+ Identifier($['start']),
735
+ sh.ph.composed(p_.from.list($['tail']).map(($) => sh.ph.composed([
736
+ sh.ph.literal("."),
737
+ Identifier($),
738
+ ]))),
739
+ p_.from.list($['type arguments']).on_has_items(($) => sh.ph.composed([
740
+ sh.ph.literal("<"),
741
+ sh.ph.rich(p_.from.list($).map(($) => Type($, $p)), sh.ph.nothing(), sh.ph.nothing(), sh.ph.literal(", "), sh.ph.nothing()),
742
+ sh.ph.literal(">"),
743
+ ]), () => sh.ph.nothing()),
744
+ ]));
745
+ case 'union': return p_.option($, ($) => sh.ph.indent(sh.pg.sentences(p_.from.list($).map(($) => sh.sentence(p_.literal.list([
746
+ sh.ph.literal("| "),
747
+ Type($, $p),
748
+ ]))))));
749
+ case 'void': return p_.option($, ($) => sh.ph.literal("void"));
750
+ default: return p_.exhaustive($[0]);
751
+ }
752
+ });
753
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy90eXBlc2NyaXB0X2xpZ2h0L2ltcGxlbWVudGF0aW9uL3RyYW5zZm9ybWVycy90eXBlc2NyaXB0X2xpZ2h0L3Byb3NlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0sd0NBQXdDLENBQUE7QUFHNUQsT0FBTyxnQkFBZ0IsTUFBTSw0REFBNEQsQ0FBQTtBQUN6RixPQUFPLHVCQUF1QixNQUFNLG1FQUFtRSxDQUFBO0FBQ3ZHLE9BQU8sdUJBQXVCLE1BQU0sdUVBQXVFLENBQUE7QUFRM0csWUFBWTtBQUNaLE9BQU8sS0FBSyxFQUFFLE1BQU0saURBQWlELENBQUE7QUFvRnJFLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBNEIsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUNyRixDQUFDLEVBQ0QsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FDWCxDQUNBLENBQUMsT0FBTyxDQUNMLENBQUMsQ0FBQyxFQUFxQixFQUFFO0lBQ3JCLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDUiwyQkFBMkI7UUFDM0IsK0JBQStCO1FBQy9CLHFCQUFxQjtRQUNyQixxQkFBcUI7UUFDckIsU0FBUztRQUNULEtBQUssSUFBSSxFQUFFLFNBQVM7WUFDaEIsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDbkIsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsSUFBSSxFQUFFLElBQUk7YUFDYixDQUFDLENBQUE7UUFDTixLQUFLLElBQUksRUFBRSxTQUFTO1lBQ2hCLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ25CLElBQUksRUFBRSxJQUFJO2dCQUNWLElBQUksRUFBRSxJQUFJO2FBQ2IsQ0FBQyxDQUFBO1FB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LDJDQUEyQztRQUM5RyxLQUFLLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUE7UUFDaEUsS0FBSyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBO1FBQzlELEtBQUssUUFBUSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtRQUNsRSxLQUFLLFFBQVEsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUE7UUFDbEUsS0FBSyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQztZQUNwRCxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUU7WUFDekQsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1lBQ2xCLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUNOLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFD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RUFBRSxDQUFDLE9BQU8sRUFBRSxDQUN4QjtTQUNKLENBQUMsQ0FBQyxDQUFBO1FBQ0gsS0FBSyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FDakQsRUFBRSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUMvQixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FDZCxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztZQUNaLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztZQUNuQixJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztTQUNkLENBQUMsQ0FDTCxDQUNKLENBQUMsQ0FDTCxDQUFDLENBQUE7UUFDRixLQUFLLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUE7UUFDOUQsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3ZDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQSJ9