@sveltejs/kit 1.0.0-next.25 → 1.0.0-next.250

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 (86) hide show
  1. package/README.md +12 -9
  2. package/assets/app/env.js +20 -0
  3. package/assets/app/navigation.js +79 -0
  4. package/assets/app/paths.js +1 -0
  5. package/assets/{runtime/app → app}/stores.js +19 -15
  6. package/assets/chunks/utils.js +13 -0
  7. package/assets/client/singletons.js +21 -0
  8. package/assets/client/start.js +1382 -0
  9. package/assets/components/error.svelte +18 -2
  10. package/assets/env.js +8 -0
  11. package/assets/paths.js +13 -0
  12. package/assets/server/index.js +2365 -0
  13. package/dist/chunks/amp_hook.js +56 -0
  14. package/dist/chunks/build.js +658 -0
  15. package/dist/chunks/cert.js +28154 -0
  16. package/dist/chunks/index.js +2690 -0
  17. package/dist/chunks/index2.js +806 -0
  18. package/dist/chunks/index3.js +644 -0
  19. package/dist/chunks/index4.js +114 -0
  20. package/dist/chunks/index5.js +765 -0
  21. package/dist/chunks/index6.js +170 -0
  22. package/dist/chunks/index7.js +15582 -0
  23. package/dist/chunks/index8.js +4207 -0
  24. package/dist/chunks/misc.js +3 -0
  25. package/dist/chunks/multipart-parser.js +449 -0
  26. package/dist/chunks/url.js +119 -0
  27. package/dist/cli.js +1122 -84
  28. package/dist/hooks.js +28 -0
  29. package/dist/install-fetch.js +6518 -0
  30. package/dist/node.js +95 -0
  31. package/package.json +95 -54
  32. package/svelte-kit.js +2 -0
  33. package/types/ambient-modules.d.ts +201 -0
  34. package/types/app.d.ts +35 -0
  35. package/types/config.d.ts +173 -0
  36. package/types/csp.d.ts +115 -0
  37. package/types/endpoint.d.ts +24 -0
  38. package/types/helper.d.ts +32 -0
  39. package/types/hooks.d.ts +38 -0
  40. package/types/index.d.ts +10 -0
  41. package/types/internal.d.ts +252 -0
  42. package/types/page.d.ts +85 -0
  43. package/CHANGELOG.md +0 -306
  44. package/assets/runtime/app/navigation.js +0 -23
  45. package/assets/runtime/app/navigation.js.map +0 -1
  46. package/assets/runtime/app/paths.js +0 -2
  47. package/assets/runtime/app/paths.js.map +0 -1
  48. package/assets/runtime/app/stores.js.map +0 -1
  49. package/assets/runtime/internal/singletons.js +0 -15
  50. package/assets/runtime/internal/singletons.js.map +0 -1
  51. package/assets/runtime/internal/start.js +0 -591
  52. package/assets/runtime/internal/start.js.map +0 -1
  53. package/assets/runtime/utils-85ebcc60.js +0 -18
  54. package/assets/runtime/utils-85ebcc60.js.map +0 -1
  55. package/dist/api.js +0 -44
  56. package/dist/api.js.map +0 -1
  57. package/dist/build.js +0 -246
  58. package/dist/build.js.map +0 -1
  59. package/dist/cli.js.map +0 -1
  60. package/dist/colors.js +0 -37
  61. package/dist/colors.js.map +0 -1
  62. package/dist/create_app.js +0 -578
  63. package/dist/create_app.js.map +0 -1
  64. package/dist/index.js +0 -367
  65. package/dist/index.js.map +0 -1
  66. package/dist/index2.js +0 -12043
  67. package/dist/index2.js.map +0 -1
  68. package/dist/index3.js +0 -550
  69. package/dist/index3.js.map +0 -1
  70. package/dist/index4.js +0 -74
  71. package/dist/index4.js.map +0 -1
  72. package/dist/index5.js +0 -464
  73. package/dist/index5.js.map +0 -1
  74. package/dist/index6.js +0 -727
  75. package/dist/index6.js.map +0 -1
  76. package/dist/logging.js +0 -43
  77. package/dist/logging.js.map +0 -1
  78. package/dist/package.js +0 -432
  79. package/dist/package.js.map +0 -1
  80. package/dist/renderer.js +0 -2403
  81. package/dist/renderer.js.map +0 -1
  82. package/dist/standard.js +0 -101
  83. package/dist/standard.js.map +0 -1
  84. package/dist/utils.js +0 -54
  85. package/dist/utils.js.map +0 -1
  86. package/svelte-kit +0 -3
package/CHANGELOG.md DELETED
@@ -1,306 +0,0 @@
1
- # @sveltejs/kit
2
-
3
- ## 1.0.0-next.25
4
-
5
- ### Patch Changes
6
-
7
- - Surface stack traces for endpoint/page rendering errors
8
-
9
- ## 1.0.0-next.24
10
-
11
- ### Patch Changes
12
-
13
- - 26643df: Account for config.paths when prerendering
14
-
15
- ## 1.0.0-next.23
16
-
17
- ### Patch Changes
18
-
19
- - 9b758aa: Upgrade to Snowpack 3
20
-
21
- ## 1.0.0-next.22
22
-
23
- ### Patch Changes
24
-
25
- - bb68595: use readFileSync instead of createReadStream
26
-
27
- ## 1.0.0-next.21
28
-
29
- ### Patch Changes
30
-
31
- - 217e4cc: Set paths to empty string before prerender
32
-
33
- ## 1.0.0-next.20
34
-
35
- ### Patch Changes
36
-
37
- - ccf4aa7: Implement prerender config
38
-
39
- ## 1.0.0-next.19
40
-
41
- ### Patch Changes
42
-
43
- - deda984: Make navigating store contain from and to properties
44
-
45
- ## 1.0.0-next.18
46
-
47
- ### Patch Changes
48
-
49
- - c29b61e: Announce page changes
50
- - 72da270: Reset focus properly
51
-
52
- ## 1.0.0-next.17
53
-
54
- ### Patch Changes
55
-
56
- - f7dea55: Set process.env.NODE_ENV when invoking via the CLI
57
-
58
- ## 1.0.0-next.16
59
-
60
- ### Patch Changes
61
-
62
- - Remove temporary logging
63
- - Add sveltekit:prefetch and sveltekit:noscroll
64
-
65
- ## 1.0.0-next.15
66
-
67
- ### Patch Changes
68
-
69
- - 6d1bb11: Fix AMP CSS
70
- - d8b53af: Ignore $layout and $error files when finding static paths
71
- - Better scroll tracking
72
-
73
- ## 1.0.0-next.14
74
-
75
- ### Patch Changes
76
-
77
- - Fix dev loader
78
-
79
- ## 1.0.0-next.13
80
-
81
- ### Patch Changes
82
-
83
- - 1ea4d6b: More robust CSS extraction
84
-
85
- ## 1.0.0-next.12
86
-
87
- ### Patch Changes
88
-
89
- - e7c88dd: Tweak AMP validation screen
90
-
91
- ## 1.0.0-next.11
92
-
93
- ### Patch Changes
94
-
95
- - a31f218: Fix SSR loader invalidation
96
-
97
- ## 1.0.0-next.10
98
-
99
- ### Patch Changes
100
-
101
- - 8b14d29: Omit svelte-data scripts from AMP pages
102
-
103
- ## 1.0.0-next.9
104
-
105
- ### Patch Changes
106
-
107
- - f5fa223: AMP support
108
- - 47f2ee1: Always remove trailing slashes
109
- - 1becb94: Replace preload with load
110
-
111
- ## 1.0.0-next.8
112
-
113
- ### Patch Changes
114
-
115
- - 15dd751: Use meta http-equiv=refresh
116
- - be7e031: Fix handling of static files
117
- - ed6b8fd: Implement \$app/env
118
-
119
- ## 1.0.0-next.7
120
-
121
- ### Patch Changes
122
-
123
- - 76705b0: make HMR work outside localhost
124
-
125
- ## 1.0.0-next.6
126
-
127
- ### Patch Changes
128
-
129
- - 0e45255: Move options behind kit namespace, change paths -> kit.files
130
- - fa7f2b2: Implement live bindings for SSR code
131
-
132
- ## 1.0.0-next.5
133
-
134
- ### Patch Changes
135
-
136
- - Return dependencies from render
137
-
138
- ## 1.0.0-next.4
139
-
140
- ### Patch Changes
141
-
142
- - af01b0d: Move renderer out of app assets folder
143
-
144
- ## 1.0.0-next.3
145
-
146
- ### Patch Changes
147
-
148
- - Add paths to manifest, for static prerendering
149
-
150
- ## 1.0.0-next.2
151
-
152
- ### Patch Changes
153
-
154
- - Fix typo causing misnamed assets folder
155
-
156
- ## 1.0.0-next.1
157
-
158
- ### Patch Changes
159
-
160
- - a4bc090: Transform exported functions correctly
161
- - 00bbf98: Fix nested layouts
162
-
163
- ## 0.0.31-next.0
164
-
165
- ### Patch Changes
166
-
167
- - ffd7bba: Fix SSR cache invalidation
168
-
169
- ## 0.0.30
170
-
171
- ### Patch Changes
172
-
173
- - Add back stores(), but with deprecation warning
174
- - Rename stores.preloading to stores.navigating
175
- - Rewrite routing logic
176
-
177
- ## 0.0.29
178
-
179
- ### Patch Changes
180
-
181
- - 10872cc: Normalize request.query
182
-
183
- ## 0.0.28
184
-
185
- ### Patch Changes
186
-
187
- - Add svelte-kit start command
188
-
189
- ## 0.0.27
190
-
191
- ### Patch Changes
192
-
193
- - rename CLI to svelte-kit
194
- - 0904e22: rename svelte CLI to svelte-kit
195
- - Validate route responses
196
- - Make paths and target configurable
197
-
198
- ## 0.0.26
199
-
200
- ### Patch Changes
201
-
202
- - b475ed4: Overhaul adapter API - fixes #166
203
- - Updated dependencies [b475ed4]
204
- - @sveltejs/app-utils@0.0.18
205
-
206
- ## 0.0.25
207
-
208
- ### Patch Changes
209
-
210
- - Updated dependencies [3bdf33b]
211
- - @sveltejs/app-utils@0.0.17
212
-
213
- ## 0.0.24
214
-
215
- ### Patch Changes
216
-
217
- - 67eaeea: Move app-utils stuff into subpackages
218
- - 7f8df30: Move kit runtime code, expose via \$app aliases
219
- - Updated dependencies [67eaeea]
220
- - @sveltejs/app-utils@0.0.16
221
-
222
- ## 0.0.23
223
-
224
- ### Patch Changes
225
-
226
- - a163000: Parse body on incoming requests
227
- - a346eab: Copy over latest Sapper router code
228
- - Updated dependencies [a163000]
229
- - @sveltejs/app-utils@0.0.15
230
-
231
- ## 0.0.22
232
-
233
- ### Patch Changes
234
-
235
- - Force bump version
236
-
237
- ## 0.0.21
238
-
239
- ### Patch Changes
240
-
241
- - Build setup entry point
242
- - Work around pkg.exports constraint
243
- - Respond with 500s if render fails
244
- - Updated dependencies [undefined]
245
- - Updated dependencies [undefined]
246
- - Updated dependencies [undefined]
247
- - @sveltejs/app-utils@0.0.14
248
-
249
- ## 0.0.20
250
-
251
- ### Patch Changes
252
-
253
- - Pass setup module to renderer
254
- - Bump Snowpack version
255
- - Updated dependencies [undefined]
256
- - Updated dependencies [96c06d8]
257
- - @sveltejs/app-utils@0.0.13
258
-
259
- ## 0.0.19
260
-
261
- ### Patch Changes
262
-
263
- - fa9d7ce: Handle import.meta in SSR module loader
264
- - 0320208: Rename 'server route' to 'endpoint'
265
- - b9444d2: Update to Snowpack 2.15
266
- - 5ca907c: Use shared mkdirp helper
267
- - Updated dependencies [0320208]
268
- - Updated dependencies [5ca907c]
269
- - @sveltejs/app-utils@0.0.12
270
-
271
- ## 0.0.18
272
-
273
- ### Patch Changes
274
-
275
- - Updated dependencies [undefined]
276
- - @sveltejs/app-utils@0.0.11
277
-
278
- ## 0.0.17
279
-
280
- ### Patch Changes
281
-
282
- - 19323e9: Update Snowpack
283
- - Updated dependencies [19323e9]
284
- - @sveltejs/app-utils@0.0.10
285
-
286
- ## 0.0.16
287
-
288
- ### Patch Changes
289
-
290
- - Updated dependencies [90a98ae]
291
- - @sveltejs/app-utils@0.0.9
292
-
293
- ## 0.0.15
294
-
295
- ### Patch Changes
296
-
297
- - Updated dependencies [undefined]
298
- - @sveltejs/app-utils@0.0.8
299
-
300
- ## 0.0.14
301
-
302
- ### Patch Changes
303
-
304
- - various
305
- - Updated dependencies [undefined]
306
- - @sveltejs/app-utils@0.0.7
@@ -1,23 +0,0 @@
1
- import { g as get_base_uri } from '../utils-85ebcc60.js';
2
- import { router, renderer } from '../internal/singletons.js';
3
-
4
- async function goto(href, opts) {
5
- return router.goto(href, opts);
6
- }
7
-
8
- function prefetch(href) {
9
- return renderer.prefetch(new URL(href, get_base_uri(document)));
10
- }
11
-
12
- async function prefetchRoutes(pathnames) {
13
- const path_routes = pathnames
14
- ? router.pages.filter((page) => pathnames.some((pathname) => page.pattern.test(pathname)))
15
- : router.pages;
16
-
17
- const promises = path_routes.map((r) => Promise.all(r.parts.map((load) => load())));
18
-
19
- await Promise.all(promises);
20
- }
21
-
22
- export { goto, prefetch, prefetchRoutes };
23
- //# sourceMappingURL=navigation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"navigation.js","sources":["../../../src/runtime/app/navigation/index.js"],"sourcesContent":["import { router, renderer } from '../../internal/singletons';\nimport { get_base_uri } from '../../internal/utils';\n\nexport async function goto(href, opts) {\n\treturn router.goto(href, opts);\n}\n\nexport function prefetch(href) {\n\treturn renderer.prefetch(new URL(href, get_base_uri(document)));\n}\n\nexport async function prefetchRoutes(pathnames) {\n\tconst path_routes = pathnames\n\t\t? router.pages.filter((page) => pathnames.some((pathname) => page.pattern.test(pathname)))\n\t\t: router.pages;\n\n\tconst promises = path_routes.map((r) => Promise.all(r.parts.map((load) => load())));\n\n\tawait Promise.all(promises);\n}\n"],"names":[],"mappings":";;;AAGO,eAAe,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE;AACvC,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAChC,CAAC;AACD;AACO,SAAS,QAAQ,CAAC,IAAI,EAAE;AAC/B,CAAC,OAAO,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACjE,CAAC;AACD;AACO,eAAe,cAAc,CAAC,SAAS,EAAE;AAChD,CAAC,MAAM,WAAW,GAAG,SAAS;AAC9B,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC5F,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB;AACA,CAAC,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACrF;AACA,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC7B;;;;"}
@@ -1,2 +0,0 @@
1
- export { assets, base } from '../internal/singletons.js';
2
- //# sourceMappingURL=paths.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"paths.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"stores.js","sources":["../../../src/runtime/app/stores/index.js"],"sourcesContent":["import { getContext } from 'svelte';\n\n// const ssr = (import.meta as any).env.SSR;\nconst ssr = typeof window === 'undefined'; // TODO why doesn't previous line work in build?\n\n// TODO remove this (for 1.0? after 1.0?)\nlet warned = false;\nexport function stores() {\n\tif (!warned) {\n\t\tconsole.error('stores() is deprecated; use getStores() instead');\n\t\twarned = true;\n\t}\n\treturn getStores();\n}\n\nexport const getStores = () => {\n\tconst stores = getContext('__svelte__');\n\n\treturn {\n\t\tpage: {\n\t\t\tsubscribe: stores.page.subscribe\n\t\t},\n\t\tnavigating: {\n\t\t\tsubscribe: stores.navigating.subscribe\n\t\t},\n\t\tget preloading() {\n\t\t\tconsole.error('stores.preloading is deprecated; use stores.navigating instead');\n\t\t\treturn {\n\t\t\t\tsubscribe: stores.navigating.subscribe\n\t\t\t};\n\t\t},\n\t\tsession: stores.session\n\t};\n};\n\nexport const page = {\n\tsubscribe(fn) {\n\t\tconst store = getStores().page;\n\t\treturn store.subscribe(fn);\n\t}\n};\n\nexport const navigating = {\n\tsubscribe(fn) {\n\t\tconst store = getStores().navigating;\n\t\treturn store.subscribe(fn);\n\t}\n};\n\nconst error = (verb) => {\n\tthrow new Error(\n\t\tssr\n\t\t\t? `Can only ${verb} session store in browser`\n\t\t\t: `Cannot ${verb} session store before subscribing`\n\t);\n};\n\nexport const session = {\n\tsubscribe(fn) {\n\t\tconst store = getStores().session;\n\n\t\tif (!ssr) {\n\t\t\tsession.set = store.set;\n\t\t\tsession.update = store.update;\n\t\t}\n\n\t\treturn store.subscribe(fn);\n\t},\n\tset: (value) => {\n\t\terror('set');\n\t},\n\tupdate: (updater) => {\n\t\terror('update');\n\t}\n};\n"],"names":[],"mappings":";;AAEA;AACA,MAAM,GAAG,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC;AAC1C;AACA;AACA,IAAI,MAAM,GAAG,KAAK,CAAC;AACZ,SAAS,MAAM,GAAG;AACzB,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,EAAE,OAAO,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;AACnE,EAAE,MAAM,GAAG,IAAI,CAAC;AAChB,EAAE;AACF,CAAC,OAAO,SAAS,EAAE,CAAC;AACpB,CAAC;AACD;AACY,MAAC,SAAS,GAAG,MAAM;AAC/B,CAAC,MAAM,MAAM,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;AACzC;AACA,CAAC,OAAO;AACR,EAAE,IAAI,EAAE;AACR,GAAG,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS;AACnC,GAAG;AACH,EAAE,UAAU,EAAE;AACd,GAAG,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,SAAS;AACzC,GAAG;AACH,EAAE,IAAI,UAAU,GAAG;AACnB,GAAG,OAAO,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;AACnF,GAAG,OAAO;AACV,IAAI,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,SAAS;AAC1C,IAAI,CAAC;AACL,GAAG;AACH,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO;AACzB,EAAE,CAAC;AACH,EAAE;AACF;AACY,MAAC,IAAI,GAAG;AACpB,CAAC,SAAS,CAAC,EAAE,EAAE;AACf,EAAE,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC,IAAI,CAAC;AACjC,EAAE,OAAO,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AAC7B,EAAE;AACF,EAAE;AACF;AACY,MAAC,UAAU,GAAG;AAC1B,CAAC,SAAS,CAAC,EAAE,EAAE;AACf,EAAE,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC,UAAU,CAAC;AACvC,EAAE,OAAO,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AAC7B,EAAE;AACF,EAAE;AACF;AACA,MAAM,KAAK,GAAG,CAAC,IAAI,KAAK;AACxB,CAAC,MAAM,IAAI,KAAK;AAChB,EAAE,GAAG;AACL,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,yBAAyB,CAAC;AAChD,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,iCAAiC,CAAC;AACtD,EAAE,CAAC;AACH,CAAC,CAAC;AACF;AACY,MAAC,OAAO,GAAG;AACvB,CAAC,SAAS,CAAC,EAAE,EAAE;AACf,EAAE,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC,OAAO,CAAC;AACpC;AACA,EAAE,IAAI,CAAC,GAAG,EAAE;AACZ,GAAG,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;AAC3B,GAAG,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AACjC,GAAG;AACH;AACA,EAAE,OAAO,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AAC7B,EAAE;AACF,CAAC,GAAG,EAAE,CAAC,KAAK,KAAK;AACjB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf,EAAE;AACF,CAAC,MAAM,EAAE,CAAC,OAAO,KAAK;AACtB,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;AAClB,EAAE;AACF;;;;"}
@@ -1,15 +0,0 @@
1
- let router;
2
- let renderer;
3
- let base;
4
- let assets;
5
-
6
- function init(opts) {
7
- ({ router, renderer } = opts);
8
- }
9
-
10
- function set_paths(paths) {
11
- ({ base, assets } = paths);
12
- }
13
-
14
- export { assets, base, init, renderer, router, set_paths };
15
- //# sourceMappingURL=singletons.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"singletons.js","sources":["../../../src/runtime/internal/singletons.js"],"sourcesContent":["export let router;\nexport let renderer;\nexport let base;\nexport let assets;\n\nexport function init(opts) {\n\t({ router, renderer } = opts);\n}\n\nexport function set_paths(paths) {\n\t({ base, assets } = paths);\n}\n"],"names":[],"mappings":"AAAU,IAAC,OAAO;AACR,IAAC,SAAS;AACV,IAAC,KAAK;AACN,IAAC,OAAO;AAClB;AACO,SAAS,IAAI,CAAC,IAAI,EAAE;AAC3B,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE;AAC/B,CAAC;AACD;AACO,SAAS,SAAS,CAAC,KAAK,EAAE;AACjC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE;AAC5B;;;;"}