@strapi/plugin-documentation 5.0.0-beta.0 → 5.0.0-beta.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 (184) hide show
  1. package/README.md +0 -1
  2. package/dist/_chunks/{index-D1KkfApT.js → App-Dsqz1mTz.js} +74 -22
  3. package/dist/_chunks/App-Dsqz1mTz.js.map +1 -0
  4. package/dist/_chunks/{index-7xstUX8_.mjs → App-mrzd5Xqj.mjs} +49 -16
  5. package/dist/_chunks/App-mrzd5Xqj.mjs.map +1 -0
  6. package/dist/_chunks/{index-VpLAJXMs.mjs → Settings-8v7IbdtY.mjs} +64 -33
  7. package/dist/_chunks/Settings-8v7IbdtY.mjs.map +1 -0
  8. package/dist/_chunks/{index-NbPCucJl.js → Settings-wdLQpouP.js} +69 -37
  9. package/dist/_chunks/Settings-wdLQpouP.js.map +1 -0
  10. package/dist/_chunks/getTrad-SeEDjZbP.mjs +6 -0
  11. package/dist/_chunks/getTrad-SeEDjZbP.mjs.map +1 -0
  12. package/dist/_chunks/getTrad-xlpeC9HP.js +5 -0
  13. package/dist/_chunks/getTrad-xlpeC9HP.js.map +1 -0
  14. package/{server/public/index.html → dist/_chunks/index-MKWIGajW.mjs} +9 -4
  15. package/dist/_chunks/index-MKWIGajW.mjs.map +1 -0
  16. package/dist/_chunks/index-WbbYm9_u.js +75 -0
  17. package/dist/_chunks/index-WbbYm9_u.js.map +1 -0
  18. package/dist/_chunks/{index-r7HsQTou.js → index-_yYcImHU.js} +126 -119
  19. package/dist/_chunks/index-_yYcImHU.js.map +1 -0
  20. package/dist/_chunks/{index-NvJ4m2q5.mjs → index-mXCyE3EQ.mjs} +128 -121
  21. package/dist/_chunks/index-mXCyE3EQ.mjs.map +1 -0
  22. package/dist/_chunks/login-HAajOKpu.js +150 -0
  23. package/dist/_chunks/login-HAajOKpu.js.map +1 -0
  24. package/{server/public/login.html → dist/_chunks/login-slUa679p.mjs} +6 -1
  25. package/dist/_chunks/login-slUa679p.mjs.map +1 -0
  26. package/dist/admin/index.js +1 -1
  27. package/dist/admin/index.mjs +2 -2
  28. package/dist/admin/src/components/SettingsForm.d.ts +8 -0
  29. package/dist/admin/src/constants.d.ts +18 -0
  30. package/dist/admin/src/index.d.ts +14 -0
  31. package/dist/admin/src/pages/App.d.ts +2 -0
  32. package/dist/admin/src/pages/Settings.d.ts +2 -0
  33. package/dist/admin/src/pluginId.d.ts +1 -0
  34. package/dist/admin/src/services/api.d.ts +25 -0
  35. package/dist/admin/src/types.d.ts +16 -0
  36. package/dist/admin/src/utils/baseQuery.d.ts +20 -0
  37. package/dist/admin/src/utils/getTrad.d.ts +1 -0
  38. package/dist/admin/src/utils/index.d.ts +2 -0
  39. package/dist/admin/src/utils/prefixPluginTranslations.d.ts +2 -0
  40. package/dist/server/index.js +1263 -0
  41. package/dist/server/index.js.map +1 -0
  42. package/dist/server/index.mjs +1238 -0
  43. package/dist/server/index.mjs.map +1 -0
  44. package/dist/server/src/bootstrap.d.ts +5 -0
  45. package/dist/server/src/bootstrap.d.ts.map +1 -0
  46. package/dist/server/src/config/default-plugin-config.d.ts +3 -0
  47. package/dist/server/src/config/default-plugin-config.d.ts.map +1 -0
  48. package/dist/server/src/config/index.d.ts +4 -0
  49. package/dist/server/src/config/index.d.ts.map +1 -0
  50. package/dist/server/src/controllers/documentation.d.ts +12 -0
  51. package/dist/server/src/controllers/documentation.d.ts.map +1 -0
  52. package/dist/server/src/controllers/index.d.ts +14 -0
  53. package/dist/server/src/controllers/index.d.ts.map +1 -0
  54. package/dist/server/src/index.d.ts +91 -0
  55. package/dist/server/src/index.d.ts.map +1 -0
  56. package/dist/server/src/middlewares/documentation.d.ts +5 -0
  57. package/dist/server/src/middlewares/documentation.d.ts.map +1 -0
  58. package/dist/server/src/middlewares/restrict-access.d.ts +4 -0
  59. package/dist/server/src/middlewares/restrict-access.d.ts.map +1 -0
  60. package/dist/server/src/register.d.ts +5 -0
  61. package/dist/server/src/register.d.ts.map +1 -0
  62. package/dist/server/src/routes/index.d.ts +36 -0
  63. package/dist/server/src/routes/index.d.ts.map +1 -0
  64. package/dist/server/src/services/__mocks__/mock-content-types.d.ts +449 -0
  65. package/dist/server/src/services/__mocks__/mock-content-types.d.ts.map +1 -0
  66. package/dist/server/src/services/__mocks__/mock-strapi-data.d.ts +592 -0
  67. package/dist/server/src/services/__mocks__/mock-strapi-data.d.ts.map +1 -0
  68. package/dist/server/src/services/documentation.d.ts +36 -0
  69. package/dist/server/src/services/documentation.d.ts.map +1 -0
  70. package/dist/server/src/services/helpers/build-api-endpoint-path.d.ts +7 -0
  71. package/dist/server/src/services/helpers/build-api-endpoint-path.d.ts.map +1 -0
  72. package/dist/server/src/services/helpers/build-component-schema.d.ts +4 -0
  73. package/dist/server/src/services/helpers/build-component-schema.d.ts.map +1 -0
  74. package/dist/server/src/services/helpers/index.d.ts +4 -0
  75. package/dist/server/src/services/helpers/index.d.ts.map +1 -0
  76. package/dist/server/src/services/helpers/utils/clean-schema-attributes.d.ts +15 -0
  77. package/dist/server/src/services/helpers/utils/clean-schema-attributes.d.ts.map +1 -0
  78. package/dist/server/src/services/helpers/utils/get-api-responses.d.ts +15 -0
  79. package/dist/server/src/services/helpers/utils/get-api-responses.d.ts.map +1 -0
  80. package/dist/server/src/services/helpers/utils/get-schema-data.d.ts +12 -0
  81. package/dist/server/src/services/helpers/utils/get-schema-data.d.ts.map +1 -0
  82. package/dist/server/src/services/helpers/utils/loop-content-type-names.d.ts +7 -0
  83. package/dist/server/src/services/helpers/utils/loop-content-type-names.d.ts.map +1 -0
  84. package/dist/server/src/services/helpers/utils/pascal-case.d.ts +3 -0
  85. package/dist/server/src/services/helpers/utils/pascal-case.d.ts.map +1 -0
  86. package/dist/server/src/services/helpers/utils/query-params.d.ts +4 -0
  87. package/dist/server/src/services/helpers/utils/query-params.d.ts.map +1 -0
  88. package/dist/server/src/services/helpers/utils/routes.d.ts +3 -0
  89. package/dist/server/src/services/helpers/utils/routes.d.ts.map +1 -0
  90. package/dist/server/src/services/index.d.ts +43 -0
  91. package/dist/server/src/services/index.d.ts.map +1 -0
  92. package/dist/server/src/services/override.d.ts +21 -0
  93. package/dist/server/src/services/override.d.ts.map +1 -0
  94. package/dist/server/src/services/utils/get-plugins-that-need-documentation.d.ts +4 -0
  95. package/dist/server/src/services/utils/get-plugins-that-need-documentation.d.ts.map +1 -0
  96. package/dist/server/src/types.d.ts +28 -0
  97. package/dist/server/src/types.d.ts.map +1 -0
  98. package/dist/server/src/utils.d.ts +12 -0
  99. package/dist/server/src/utils.d.ts.map +1 -0
  100. package/package.json +33 -16
  101. package/strapi-server.js +1 -1
  102. package/.eslintignore +0 -1
  103. package/.eslintrc +0 -17
  104. package/admin/src/constants.js +0 -17
  105. package/admin/src/hooks/useDocumentation.js +0 -81
  106. package/admin/src/index.js +0 -62
  107. package/admin/src/pages/PluginPage/index.jsx +0 -212
  108. package/admin/src/pages/PluginPage/tests/index.test.jsx +0 -160
  109. package/admin/src/pages/SettingsPage/index.jsx +0 -202
  110. package/admin/src/pages/SettingsPage/tests/index.test.jsx +0 -72
  111. package/admin/src/pluginId.js +0 -5
  112. package/admin/src/translations/ar.json +0 -20
  113. package/admin/src/translations/cs.json +0 -21
  114. package/admin/src/translations/de.json +0 -26
  115. package/admin/src/translations/dk.json +0 -39
  116. package/admin/src/translations/en.json +0 -39
  117. package/admin/src/translations/es.json +0 -39
  118. package/admin/src/translations/fr.json +0 -26
  119. package/admin/src/translations/id.json +0 -24
  120. package/admin/src/translations/it.json +0 -26
  121. package/admin/src/translations/ko.json +0 -39
  122. package/admin/src/translations/ms.json +0 -23
  123. package/admin/src/translations/nl.json +0 -21
  124. package/admin/src/translations/pl.json +0 -39
  125. package/admin/src/translations/pt-BR.json +0 -21
  126. package/admin/src/translations/pt.json +0 -21
  127. package/admin/src/translations/ru.json +0 -39
  128. package/admin/src/translations/sk.json +0 -24
  129. package/admin/src/translations/sv.json +0 -39
  130. package/admin/src/translations/th.json +0 -24
  131. package/admin/src/translations/tr.json +0 -39
  132. package/admin/src/translations/uk.json +0 -23
  133. package/admin/src/translations/vi.json +0 -24
  134. package/admin/src/translations/zh-Hans.json +0 -28
  135. package/admin/src/translations/zh.json +0 -39
  136. package/admin/src/utils/getTrad.js +0 -5
  137. package/admin/src/utils/index.js +0 -2
  138. package/admin/src/utils/prefixPluginTranslations.js +0 -13
  139. package/dist/_chunks/index-7xstUX8_.mjs.map +0 -1
  140. package/dist/_chunks/index-D1KkfApT.js.map +0 -1
  141. package/dist/_chunks/index-NbPCucJl.js.map +0 -1
  142. package/dist/_chunks/index-NvJ4m2q5.mjs.map +0 -1
  143. package/dist/_chunks/index-VpLAJXMs.mjs.map +0 -1
  144. package/dist/_chunks/index-r7HsQTou.js.map +0 -1
  145. package/dist/_chunks/useDocumentation-6Ks-_Ms6.mjs +0 -68
  146. package/dist/_chunks/useDocumentation-6Ks-_Ms6.mjs.map +0 -1
  147. package/dist/_chunks/useDocumentation-S0e4mU-U.js +0 -67
  148. package/dist/_chunks/useDocumentation-S0e4mU-U.js.map +0 -1
  149. package/jest.config.front.js +0 -7
  150. package/jest.config.js +0 -6
  151. package/packup.config.ts +0 -22
  152. package/server/bootstrap.js +0 -54
  153. package/server/config/default-plugin-config.js +0 -35
  154. package/server/config/index.js +0 -7
  155. package/server/controllers/documentation.js +0 -241
  156. package/server/controllers/index.js +0 -7
  157. package/server/index.js +0 -17
  158. package/server/middlewares/documentation.js +0 -25
  159. package/server/middlewares/index.js +0 -7
  160. package/server/middlewares/restrict-access.js +0 -24
  161. package/server/register.js +0 -11
  162. package/server/routes/index.js +0 -84
  163. package/server/services/__mocks__/mock-content-types.js +0 -264
  164. package/server/services/__mocks__/mock-strapi-data.js +0 -183
  165. package/server/services/__tests__/build-component-schema.test.js +0 -761
  166. package/server/services/__tests__/documentation.test.js +0 -481
  167. package/server/services/__tests__/override.test.js +0 -85
  168. package/server/services/documentation.js +0 -246
  169. package/server/services/helpers/build-api-endpoint-path.js +0 -186
  170. package/server/services/helpers/build-component-schema.js +0 -254
  171. package/server/services/helpers/index.js +0 -9
  172. package/server/services/helpers/utils/clean-schema-attributes.js +0 -246
  173. package/server/services/helpers/utils/get-api-responses.js +0 -105
  174. package/server/services/helpers/utils/get-schema-data.js +0 -32
  175. package/server/services/helpers/utils/loop-content-type-names.js +0 -55
  176. package/server/services/helpers/utils/pascal-case.js +0 -9
  177. package/server/services/helpers/utils/query-params.js +0 -105
  178. package/server/services/helpers/utils/routes.js +0 -10
  179. package/server/services/index.js +0 -9
  180. package/server/services/override.js +0 -52
  181. package/server/services/utils/default-openapi-components.js +0 -40
  182. package/server/services/utils/get-plugins-that-need-documentation.js +0 -24
  183. package/tests/server.js +0 -37
  184. package/tests/setup.js +0 -15
@@ -0,0 +1,449 @@
1
+ declare const _default: {
2
+ 'plugin::upload.file': {
3
+ collectionName: string;
4
+ info: {
5
+ singularName: string;
6
+ pluralName: string;
7
+ displayName: string;
8
+ description: string;
9
+ };
10
+ options: {};
11
+ pluginOptions: {
12
+ 'content-manager': {
13
+ visible: boolean;
14
+ };
15
+ 'content-type-builder': {
16
+ visible: boolean;
17
+ };
18
+ };
19
+ attributes: {
20
+ name: {
21
+ type: string;
22
+ configurable: boolean;
23
+ required: boolean;
24
+ };
25
+ alternativeText: {
26
+ type: string;
27
+ configurable: boolean;
28
+ };
29
+ caption: {
30
+ type: string;
31
+ configurable: boolean;
32
+ };
33
+ width: {
34
+ type: string;
35
+ configurable: boolean;
36
+ };
37
+ height: {
38
+ type: string;
39
+ configurable: boolean;
40
+ };
41
+ formats: {
42
+ type: string;
43
+ configurable: boolean;
44
+ };
45
+ hash: {
46
+ type: string;
47
+ configurable: boolean;
48
+ required: boolean;
49
+ };
50
+ ext: {
51
+ type: string;
52
+ configurable: boolean;
53
+ };
54
+ mime: {
55
+ type: string;
56
+ configurable: boolean;
57
+ required: boolean;
58
+ };
59
+ size: {
60
+ type: string;
61
+ configurable: boolean;
62
+ required: boolean;
63
+ };
64
+ url: {
65
+ type: string;
66
+ configurable: boolean;
67
+ required: boolean;
68
+ };
69
+ previewUrl: {
70
+ type: string;
71
+ configurable: boolean;
72
+ };
73
+ provider: {
74
+ type: string;
75
+ configurable: boolean;
76
+ required: boolean;
77
+ };
78
+ provider_metadata: {
79
+ type: string;
80
+ configurable: boolean;
81
+ };
82
+ related: {
83
+ type: string;
84
+ relation: string;
85
+ configurable: boolean;
86
+ };
87
+ folder: {
88
+ type: string;
89
+ relation: string;
90
+ target: string;
91
+ inversedBy: string;
92
+ private: boolean;
93
+ };
94
+ folderPath: {
95
+ type: string;
96
+ min: number;
97
+ required: boolean;
98
+ private: boolean;
99
+ };
100
+ createdAt: {
101
+ type: string;
102
+ };
103
+ updatedAt: {
104
+ type: string;
105
+ };
106
+ createdBy: {
107
+ type: string;
108
+ relation: string;
109
+ target: string;
110
+ configurable: boolean;
111
+ writable: boolean;
112
+ visible: boolean;
113
+ useJoinTable: boolean;
114
+ private: boolean;
115
+ };
116
+ updatedBy: {
117
+ type: string;
118
+ relation: string;
119
+ target: string;
120
+ configurable: boolean;
121
+ writable: boolean;
122
+ visible: boolean;
123
+ useJoinTable: boolean;
124
+ private: boolean;
125
+ };
126
+ };
127
+ indexes: {
128
+ name: string;
129
+ columns: string[];
130
+ type: null;
131
+ }[];
132
+ kind: string;
133
+ modelType: string;
134
+ modelName: string;
135
+ uid: string;
136
+ plugin: string;
137
+ globalId: string;
138
+ };
139
+ 'plugin::upload.folder': {
140
+ collectionName: string;
141
+ info: {
142
+ singularName: string;
143
+ pluralName: string;
144
+ displayName: string;
145
+ };
146
+ options: {};
147
+ pluginOptions: {
148
+ 'content-manager': {
149
+ visible: boolean;
150
+ };
151
+ 'content-type-builder': {
152
+ visible: boolean;
153
+ };
154
+ };
155
+ attributes: {
156
+ name: {
157
+ type: string;
158
+ min: number;
159
+ required: boolean;
160
+ };
161
+ pathId: {
162
+ type: string;
163
+ unique: boolean;
164
+ required: boolean;
165
+ };
166
+ parent: {
167
+ type: string;
168
+ relation: string;
169
+ target: string;
170
+ inversedBy: string;
171
+ };
172
+ children: {
173
+ type: string;
174
+ relation: string;
175
+ target: string;
176
+ mappedBy: string;
177
+ };
178
+ files: {
179
+ type: string;
180
+ relation: string;
181
+ target: string;
182
+ mappedBy: string;
183
+ };
184
+ path: {
185
+ type: string;
186
+ min: number;
187
+ required: boolean;
188
+ };
189
+ createdAt: {
190
+ type: string;
191
+ };
192
+ updatedAt: {
193
+ type: string;
194
+ };
195
+ createdBy: {
196
+ type: string;
197
+ relation: string;
198
+ target: string;
199
+ configurable: boolean;
200
+ writable: boolean;
201
+ visible: boolean;
202
+ useJoinTable: boolean;
203
+ private: boolean;
204
+ };
205
+ updatedBy: {
206
+ type: string;
207
+ relation: string;
208
+ target: string;
209
+ configurable: boolean;
210
+ writable: boolean;
211
+ visible: boolean;
212
+ useJoinTable: boolean;
213
+ private: boolean;
214
+ };
215
+ };
216
+ indexes: {
217
+ name: string;
218
+ columns: string[];
219
+ type: string;
220
+ }[];
221
+ kind: string;
222
+ modelType: string;
223
+ modelName: string;
224
+ uid: string;
225
+ plugin: string;
226
+ globalId: string;
227
+ };
228
+ 'api::kitchensink.kitchensink': {
229
+ kind: string;
230
+ collectionName: string;
231
+ info: {
232
+ displayName: string;
233
+ singularName: string;
234
+ pluralName: string;
235
+ description: string;
236
+ name: string;
237
+ };
238
+ pluginOptions: {};
239
+ attributes: {
240
+ short_text: {
241
+ type: string;
242
+ };
243
+ long_text: {
244
+ type: string;
245
+ };
246
+ rich_text: {
247
+ type: string;
248
+ };
249
+ integer: {
250
+ type: string;
251
+ };
252
+ biginteger: {
253
+ type: string;
254
+ };
255
+ decimal: {
256
+ type: string;
257
+ };
258
+ float: {
259
+ type: string;
260
+ };
261
+ date: {
262
+ type: string;
263
+ };
264
+ datetime: {
265
+ type: string;
266
+ };
267
+ time: {
268
+ type: string;
269
+ };
270
+ timestamp: {
271
+ type: string;
272
+ };
273
+ boolean: {
274
+ type: string;
275
+ };
276
+ email: {
277
+ type: string;
278
+ };
279
+ password: {
280
+ type: string;
281
+ };
282
+ enumeration: {
283
+ type: string;
284
+ enum: string[];
285
+ };
286
+ single_media: {
287
+ type: string;
288
+ multiple: boolean;
289
+ required: boolean;
290
+ allowedTypes: string[];
291
+ };
292
+ multiple_media: {
293
+ type: string;
294
+ multiple: boolean;
295
+ required: boolean;
296
+ allowedTypes: string[];
297
+ };
298
+ json: {
299
+ type: string;
300
+ };
301
+ single_compo: {
302
+ type: string;
303
+ repeatable: boolean;
304
+ component: string;
305
+ };
306
+ repeatable_compo: {
307
+ type: string;
308
+ repeatable: boolean;
309
+ component: string;
310
+ };
311
+ dynamiczone: {
312
+ type: string;
313
+ components: string[];
314
+ };
315
+ one_way_tag: {
316
+ type: string;
317
+ relation: string;
318
+ target: string;
319
+ };
320
+ one_to_one_tag: {
321
+ type: string;
322
+ relation: string;
323
+ target: string;
324
+ private: boolean;
325
+ inversedBy: string;
326
+ };
327
+ one_to_many_tags: {
328
+ type: string;
329
+ relation: string;
330
+ target: string;
331
+ mappedBy: string;
332
+ };
333
+ many_to_one_tag: {
334
+ type: string;
335
+ relation: string;
336
+ target: string;
337
+ inversedBy: string;
338
+ };
339
+ many_to_many_tags: {
340
+ type: string;
341
+ relation: string;
342
+ target: string;
343
+ inversedBy: string;
344
+ };
345
+ many_way_tags: {
346
+ type: string;
347
+ relation: string;
348
+ target: string;
349
+ };
350
+ morph_to_one: {
351
+ type: string;
352
+ relation: string;
353
+ };
354
+ morph_to_many: {
355
+ type: string;
356
+ relation: string;
357
+ };
358
+ custom_field: {
359
+ type: string;
360
+ customField: string;
361
+ };
362
+ custom_field_with_default_options: {
363
+ type: string;
364
+ regex: string;
365
+ customField: string;
366
+ };
367
+ cats: {
368
+ type: string;
369
+ components: string[];
370
+ };
371
+ createdAt: {
372
+ type: string;
373
+ };
374
+ updatedAt: {
375
+ type: string;
376
+ };
377
+ publishedAt: {
378
+ type: string;
379
+ configurable: boolean;
380
+ writable: boolean;
381
+ visible: boolean;
382
+ };
383
+ createdBy: {
384
+ type: string;
385
+ relation: string;
386
+ target: string;
387
+ configurable: boolean;
388
+ writable: boolean;
389
+ visible: boolean;
390
+ useJoinTable: boolean;
391
+ private: boolean;
392
+ };
393
+ updatedBy: {
394
+ type: string;
395
+ relation: string;
396
+ target: string;
397
+ configurable: boolean;
398
+ writable: boolean;
399
+ visible: boolean;
400
+ useJoinTable: boolean;
401
+ private: boolean;
402
+ };
403
+ };
404
+ modelType: string;
405
+ modelName: string;
406
+ uid: string;
407
+ apiName: string;
408
+ globalId: string;
409
+ actions: {};
410
+ lifecycles: {};
411
+ };
412
+ 'api::homepage.homepage': {
413
+ kind: string;
414
+ collectionName: string;
415
+ info: {
416
+ displayName: string;
417
+ singularName: string;
418
+ pluralName: string;
419
+ };
420
+ pluginOptions: {
421
+ i18n: {
422
+ localized: boolean;
423
+ };
424
+ };
425
+ attributes: {
426
+ title: {
427
+ type: string;
428
+ required: boolean;
429
+ pluginOptions: {
430
+ i18n: {
431
+ localized: boolean;
432
+ };
433
+ };
434
+ };
435
+ slug: {
436
+ type: string;
437
+ targetField: string;
438
+ required: boolean;
439
+ pluginOptions: {
440
+ i18n: {
441
+ localized: boolean;
442
+ };
443
+ };
444
+ };
445
+ };
446
+ };
447
+ };
448
+ export default _default;
449
+ //# sourceMappingURL=mock-content-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-content-types.d.ts","sourceRoot":"","sources":["../../../../../server/src/services/__mocks__/mock-content-types.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wBAqQE"}