@stripe/stripe-js 1.20.3 → 1.22.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.
Files changed (53) hide show
  1. package/dist/pure.esm.js +1 -1
  2. package/dist/pure.js +1 -1
  3. package/dist/stripe.esm.js +1 -1
  4. package/dist/stripe.js +1 -1
  5. package/package.json +5 -5
  6. package/src/shared.ts +1 -2
  7. package/types/api/bank-accounts.d.ts +61 -0
  8. package/types/api/cards.d.ts +130 -0
  9. package/types/api/index.d.ts +9 -9
  10. package/types/api/payment-intents.d.ts +330 -0
  11. package/types/api/payment-methods.d.ts +349 -0
  12. package/types/api/setup-intents.d.ts +184 -0
  13. package/types/api/shared.d.ts +124 -126
  14. package/types/api/sources.d.ts +1045 -0
  15. package/types/api/tokens.d.ts +634 -0
  16. package/types/api/verification-sessions.d.ts +9 -0
  17. package/types/index.d.ts +14 -12
  18. package/types/stripe-js/checkout.d.ts +134 -136
  19. package/types/stripe-js/elements/affirm-message.d.ts +59 -61
  20. package/types/stripe-js/elements/afterpay-clearpay-message.d.ts +118 -120
  21. package/types/stripe-js/elements/au-bank-account.d.ts +123 -120
  22. package/types/stripe-js/elements/base.d.ts +263 -263
  23. package/types/stripe-js/elements/card-cvc.d.ts +107 -103
  24. package/types/stripe-js/elements/card-expiry.d.ts +107 -104
  25. package/types/stripe-js/elements/card-number.d.ts +128 -125
  26. package/types/stripe-js/elements/card.d.ts +157 -154
  27. package/types/stripe-js/elements/eps-bank.d.ts +125 -121
  28. package/types/stripe-js/elements/fpx-bank.d.ts +120 -116
  29. package/types/stripe-js/elements/iban.d.ts +134 -131
  30. package/types/stripe-js/elements/ideal-bank.d.ts +125 -121
  31. package/types/stripe-js/elements/index.d.ts +17 -0
  32. package/types/stripe-js/elements/link-authentication.d.ts +100 -93
  33. package/types/stripe-js/elements/p24-bank.d.ts +125 -121
  34. package/types/stripe-js/elements/payment-request-button.d.ts +127 -127
  35. package/types/stripe-js/elements/payment.d.ts +196 -180
  36. package/types/stripe-js/elements/shipping-address.d.ts +123 -125
  37. package/types/stripe-js/elements-group.d.ts +623 -0
  38. package/types/stripe-js/index.d.ts +8 -1069
  39. package/types/stripe-js/payment-intents.d.ts +951 -919
  40. package/types/stripe-js/payment-request.d.ts +503 -503
  41. package/types/stripe-js/setup-intents.d.ts +149 -135
  42. package/types/stripe-js/stripe.d.ts +1070 -0
  43. package/types/stripe-js/token-and-sources.d.ts +80 -80
  44. package/types/utils.d.ts +2 -0
  45. package/types/api/BankAccounts.d.ts +0 -63
  46. package/types/api/Cards.d.ts +0 -130
  47. package/types/api/PaymentIntents.d.ts +0 -329
  48. package/types/api/PaymentMethods.d.ts +0 -349
  49. package/types/api/SetupIntents.d.ts +0 -184
  50. package/types/api/Sources.d.ts +0 -1045
  51. package/types/api/Tokens.d.ts +0 -632
  52. package/types/api/VerificationSessions.d.ts +0 -11
  53. package/types/stripe-js/elements.d.ts +0 -604
@@ -0,0 +1,623 @@
1
+ import {
2
+ StripeShippingAddressElement,
3
+ StripeShippingAddressElementOptions,
4
+ StripePaymentRequestButtonElement,
5
+ StripePaymentRequestButtonElementOptions,
6
+ StripePaymentElement,
7
+ StripePaymentElementOptions,
8
+ StripeLinkAuthenticationElement,
9
+ StripeLinkAuthenticationElementOptions,
10
+ StripeIdealBankElement,
11
+ StripeIdealBankElementOptions,
12
+ StripeIbanElement,
13
+ StripeIbanElementOptions,
14
+ StripeP24BankElement,
15
+ StripeP24BankElementOptions,
16
+ StripeEpsBankElement,
17
+ StripeEpsBankElementOptions,
18
+ StripeFpxBankElement,
19
+ StripeFpxBankElementOptions,
20
+ StripeCardCvcElement,
21
+ StripeCardCvcElementOptions,
22
+ StripeCardExpiryElement,
23
+ StripeCardExpiryElementOptions,
24
+ StripeCardNumberElement,
25
+ StripeCardNumberElementOptions,
26
+ StripeCardElement,
27
+ StripeCardElementOptions,
28
+ StripeAuBankAccountElement,
29
+ StripeAfterpayClearpayMessageElementOptions,
30
+ StripeAffirmMessageElement,
31
+ StripeAffirmMessageElementOptions,
32
+ StripeAfterpayClearpayMessageElement,
33
+ StripeAuBankAccountElementOptions,
34
+ } from './elements';
35
+
36
+ export interface StripeElements {
37
+ /**
38
+ * Updates the options that `Elements` was initialized with.
39
+ * Updates are shallowly merged into the existing configuration.
40
+ */
41
+ update(options: StripeElementsUpdateOptions): void;
42
+
43
+ /////////////////////////////
44
+ /// affirmMessage
45
+ /////////////////////////////
46
+
47
+ /**
48
+ * Creates an `AffirmMessageElement`.
49
+ */
50
+ create(
51
+ elementType: 'affirmMessage',
52
+ options: StripeAffirmMessageElementOptions
53
+ ): StripeAffirmMessageElement;
54
+
55
+ /**
56
+ * Looks up a previously created `Element` by its type.
57
+ */
58
+ getElement(elementType: 'affirmMessage'): StripeAffirmMessageElement | null;
59
+
60
+ /////////////////////////////
61
+ /// afterpayClearpayMessage
62
+ /////////////////////////////
63
+
64
+ /**
65
+ * Creates an `AfterpayClearpayMessageElement`.
66
+ */
67
+ create(
68
+ elementType: 'afterpayClearpayMessage',
69
+ options: StripeAfterpayClearpayMessageElementOptions
70
+ ): StripeAfterpayClearpayMessageElement;
71
+
72
+ /**
73
+ * Looks up a previously created `Element` by its type.
74
+ */
75
+ getElement(
76
+ elementType: 'afterpayClearpayMessage'
77
+ ): StripeAfterpayClearpayMessageElement | null;
78
+
79
+ /////////////////////////////
80
+ /// auBankAccount
81
+ /////////////////////////////
82
+
83
+ /**
84
+ * Requires beta access:
85
+ * Contact [Stripe support](https://support.stripe.com/) for more information.
86
+ *
87
+ * Creates an `AuBankAccountElement`.
88
+ */
89
+ create(
90
+ elementType: 'auBankAccount',
91
+ options?: StripeAuBankAccountElementOptions
92
+ ): StripeAuBankAccountElement;
93
+
94
+ /**
95
+ * Requires beta access:
96
+ * Contact [Stripe support](https://support.stripe.com/) for more information.
97
+ *
98
+ * Looks up a previously created `Element` by its type.
99
+ */
100
+ getElement(elementType: 'auBankAccount'): StripeAuBankAccountElement | null;
101
+
102
+ /////////////////////////////
103
+ /// card
104
+ /////////////////////////////
105
+
106
+ /**
107
+ * Creates a `CardElement`.
108
+ */
109
+ create(
110
+ elementType: 'card',
111
+ options?: StripeCardElementOptions
112
+ ): StripeCardElement;
113
+
114
+ /**
115
+ * Looks up a previously created `Element` by its type.
116
+ */
117
+ getElement(elementType: 'card'): StripeCardElement | null;
118
+
119
+ /////////////////////////////
120
+ /// cardNumber
121
+ /////////////////////////////
122
+
123
+ /**
124
+ * Creates a `CardNumberElement`.
125
+ */
126
+ create(
127
+ elementType: 'cardNumber',
128
+ options?: StripeCardNumberElementOptions
129
+ ): StripeCardNumberElement;
130
+
131
+ /**
132
+ * Looks up a previously created `Element` by its type.
133
+ */
134
+ getElement(elementType: 'cardNumber'): StripeCardNumberElement | null;
135
+
136
+ /////////////////////////////
137
+ /// cardExpiry
138
+ /////////////////////////////
139
+
140
+ /**
141
+ * Creates a `CardExpiryElement`.
142
+ */
143
+ create(
144
+ elementType: 'cardExpiry',
145
+ options?: StripeCardExpiryElementOptions
146
+ ): StripeCardExpiryElement;
147
+
148
+ /**
149
+ * Looks up a previously created `Element` by its type.
150
+ */
151
+ getElement(elementType: 'cardExpiry'): StripeCardExpiryElement | null;
152
+
153
+ /////////////////////////////
154
+ /// cardCvc
155
+ /////////////////////////////
156
+
157
+ /**
158
+ * Creates a `CardCvcElement`.
159
+ */
160
+ create(
161
+ elementType: 'cardCvc',
162
+ options?: StripeCardCvcElementOptions
163
+ ): StripeCardCvcElement;
164
+
165
+ /**
166
+ * Looks up a previously created `Element` by its type.
167
+ */
168
+ getElement(elementType: 'cardCvc'): StripeCardCvcElement | null;
169
+
170
+ /////////////////////////////
171
+ /// fpxBank
172
+ /////////////////////////////
173
+
174
+ /**
175
+ * Creates an `FpxBankElement`.
176
+ */
177
+ create(
178
+ elementType: 'fpxBank',
179
+ options: StripeFpxBankElementOptions
180
+ ): StripeFpxBankElement;
181
+
182
+ /**
183
+ * Looks up a previously created `Element` by its type.
184
+ */
185
+ getElement(elementType: 'fpxBank'): StripeFpxBankElement | null;
186
+
187
+ /////////////////////////////
188
+ /// epsBank
189
+ /////////////////////////////
190
+
191
+ /**
192
+ *
193
+ * Creates an `EpsBankElement`.
194
+ */
195
+ create(
196
+ elementType: 'epsBank',
197
+ options: StripeEpsBankElementOptions
198
+ ): StripeEpsBankElement;
199
+
200
+ /**
201
+ * Requires beta access:
202
+ * Contact [Stripe support](https://support.stripe.com/) for more information.
203
+ *
204
+ * Looks up a previously created `Element` by its type.
205
+ */
206
+ getElement(elementType: 'epsBank'): StripeEpsBankElement | null;
207
+
208
+ /////////////////////////////
209
+ /// p24Bank
210
+ /////////////////////////////
211
+
212
+ /**
213
+ *
214
+ * Creates an `P24BankElement`.
215
+ */
216
+ create(
217
+ elementType: 'p24Bank',
218
+ options: StripeP24BankElementOptions
219
+ ): StripeP24BankElement;
220
+
221
+ /**
222
+ *
223
+ * Looks up a previously created `Element` by its type.
224
+ */
225
+ getElement(elementType: 'p24Bank'): StripeP24BankElement | null;
226
+
227
+ /////////////////////////////
228
+ /// iban
229
+ /////////////////////////////
230
+
231
+ /**
232
+ * Creates an `IbanElement`.
233
+ */
234
+ create(
235
+ elementType: 'iban',
236
+ options?: StripeIbanElementOptions
237
+ ): StripeIbanElement;
238
+
239
+ /**
240
+ * Looks up a previously created `Element` by its type.
241
+ */
242
+ getElement(elementType: 'iban'): StripeIbanElement | null;
243
+
244
+ /////////////////////////////
245
+ /// idealBank
246
+ /////////////////////////////
247
+
248
+ /**
249
+ * Creates an `IdealBankElement`.
250
+ */
251
+ create(
252
+ elementType: 'idealBank',
253
+ options?: StripeIdealBankElementOptions
254
+ ): StripeIdealBankElement;
255
+
256
+ /**
257
+ * Looks up a previously created `Element` by its type.
258
+ */
259
+ getElement(elementType: 'idealBank'): StripeIdealBankElement | null;
260
+
261
+ /////////////////////////////
262
+ /// linkAuthentication
263
+ /////////////////////////////
264
+
265
+ /**
266
+ * Requires beta access:
267
+ * Contact [Stripe support](https://support.stripe.com/) for more information.
268
+ *
269
+ * Creates a `LinkAuthenticationElement`.
270
+ */
271
+ create(
272
+ elementType: 'linkAuthentication',
273
+ options?: StripeLinkAuthenticationElementOptions
274
+ ): StripeLinkAuthenticationElement;
275
+
276
+ /**
277
+ * Requires beta access:
278
+ * Contact [Stripe support](https://support.stripe.com/) for more information.
279
+ *
280
+ * Looks up a previously created `Element` by its type.
281
+ */
282
+ getElement(
283
+ elementType: 'linkAuthentication'
284
+ ): StripeLinkAuthenticationElement | null;
285
+
286
+ /////////////////////////////
287
+ /// payment
288
+ /////////////////////////////
289
+
290
+ /**
291
+ * Creates a `PaymentElement`.
292
+ *
293
+ * @docs https://stripe.com/docs/payments/payment-element
294
+ */
295
+ create(
296
+ elementType: 'payment',
297
+ options?: StripePaymentElementOptions
298
+ ): StripePaymentElement;
299
+
300
+ /**
301
+ * Looks up a previously created `Element` by its type.
302
+ */
303
+ getElement(elementType: 'payment'): StripePaymentElement | null;
304
+
305
+ /////////////////////////////
306
+ /// paymentRequestButton
307
+ /////////////////////////////
308
+
309
+ /**
310
+ * Creates a `PaymentRequestButtonElement`.
311
+ *
312
+ * @docs https://stripe.com/docs/stripe-js/elements/payment-request-button
313
+ */
314
+ create(
315
+ elementType: 'paymentRequestButton',
316
+ options: StripePaymentRequestButtonElementOptions
317
+ ): StripePaymentRequestButtonElement;
318
+
319
+ /**
320
+ * Looks up a previously created `Element` by its type.
321
+ */
322
+ getElement(
323
+ elementType: 'paymentRequestButton'
324
+ ): StripePaymentRequestButtonElement | null;
325
+
326
+ /**
327
+ * Requires beta access:
328
+ * Contact [Stripe support](https://support.stripe.com/) for more information.
329
+ *
330
+ * Creates a `ShippingAddressElement`.
331
+ */
332
+ create(
333
+ elementType: 'shippingAddress',
334
+ options?: StripeShippingAddressElementOptions
335
+ ): StripeShippingAddressElement;
336
+
337
+ /**
338
+ * Requires beta access:
339
+ * Contact [Stripe support](https://support.stripe.com/) for more information.
340
+ *
341
+ * Looks up a previously created `Element` by its type.
342
+ */
343
+ getElement(
344
+ elementType: 'shippingAddress'
345
+ ): StripeShippingAddressElement | null;
346
+ }
347
+
348
+ export type StripeElementType =
349
+ | 'affirmMessage'
350
+ | 'afterpayClearpayMessage'
351
+ | 'auBankAccount'
352
+ | 'card'
353
+ | 'cardNumber'
354
+ | 'cardExpiry'
355
+ | 'cardCvc'
356
+ | 'epsBank'
357
+ | 'fpxBank'
358
+ | 'iban'
359
+ | 'idealBank'
360
+ | 'p24Bank'
361
+ | 'payment'
362
+ | 'paymentRequestButton'
363
+ | 'linkAuthentication'
364
+ | 'shippingAddress';
365
+
366
+ export type StripeElement =
367
+ | StripeAffirmMessageElement
368
+ | StripeAfterpayClearpayMessageElement
369
+ | StripeAuBankAccountElement
370
+ | StripeCardElement
371
+ | StripeCardNumberElement
372
+ | StripeCardExpiryElement
373
+ | StripeCardCvcElement
374
+ | StripeEpsBankElement
375
+ | StripeFpxBankElement
376
+ | StripeIbanElement
377
+ | StripeIdealBankElement
378
+ | StripeP24BankElement
379
+ | StripePaymentElement
380
+ | StripePaymentRequestButtonElement;
381
+
382
+ export type StripeElementLocale =
383
+ | 'auto'
384
+ | 'ar'
385
+ | 'bg'
386
+ | 'cs'
387
+ | 'da'
388
+ | 'de'
389
+ | 'el'
390
+ | 'en'
391
+ | 'en-AU'
392
+ | 'en-CA'
393
+ | 'en-NZ'
394
+ | 'en-GB'
395
+ | 'es'
396
+ | 'es-ES'
397
+ | 'es-419'
398
+ | 'et'
399
+ | 'fi'
400
+ | 'fr'
401
+ | 'fr-FR'
402
+ | 'he'
403
+ | 'hu'
404
+ | 'id'
405
+ | 'it'
406
+ | 'it-IT'
407
+ | 'ja'
408
+ | 'ko'
409
+ | 'lt'
410
+ | 'lv'
411
+ | 'ms'
412
+ | 'mt'
413
+ | 'nb'
414
+ | 'nl'
415
+ | 'no'
416
+ | 'pl'
417
+ | 'pt'
418
+ | 'pt-BR'
419
+ | 'ro'
420
+ | 'ru'
421
+ | 'sk'
422
+ | 'sl'
423
+ | 'sv'
424
+ | 'th'
425
+ | 'tr'
426
+ | 'vi'
427
+ | 'zh'
428
+ | 'zh-HK'
429
+ | 'zh-TW';
430
+
431
+ /**
432
+ * Options to create an `Elements` instance with.
433
+ */
434
+ export interface StripeElementsOptions {
435
+ /**
436
+ * An array of custom fonts, which elements created from the `Elements` object can use.
437
+ */
438
+ fonts?: Array<CssFontSource | CustomFontSource>;
439
+
440
+ /**
441
+ * The [IETF language tag](https://en.wikipedia.org/wiki/IETF_language_tag) of the locale to display placeholders and error strings in.
442
+ * Default is `auto` (Stripe detects the locale of the browser).
443
+ * Setting the locale does not affect the behavior of postal code validation—a valid postal code for the billing country of the card is still required.
444
+ */
445
+ locale?: StripeElementLocale;
446
+
447
+ /**
448
+ * Match the Payment Element with the design of your site with the appearance option.
449
+ * The layout of the Payment Element stays consistent, but you can modify colors, fonts, borders, padding, and more.
450
+ *
451
+ * @docs https://stripe.com/docs/stripe-js/appearance-api
452
+ */
453
+ appearance?: Appearance;
454
+
455
+ /**
456
+ * The client secret for a PaymentIntent or SetupIntent used by the Payment Element.
457
+ *
458
+ * @docs https://stripe.com/docs/api/payment_intents/object#payment_intent_object-client_secret
459
+ */
460
+ clientSecret?: string;
461
+ }
462
+
463
+ /*
464
+ * Updatable options for an `Elements` instance
465
+ */
466
+ export interface StripeElementsUpdateOptions {
467
+ /**
468
+ * The [IETF language tag](https://en.wikipedia.org/wiki/IETF_language_tag) of the locale to display placeholders and error strings in.
469
+ * Default is `auto` (Stripe detects the locale of the browser).
470
+ * Setting the locale does not affect the behavior of postal code validation—a valid postal code for the billing country of the card is still required.
471
+ */
472
+ locale?: StripeElementLocale;
473
+
474
+ /**
475
+ * Used with the Payment Element, requires beta access:
476
+ * Contact [Stripe support](https://support.stripe.com/) for more information.
477
+ *
478
+ * Match the design of your site with the appearance option.
479
+ * The layout of each Element stays consistent, but you can modify colors, fonts, borders, padding, and more.
480
+ *
481
+ * @docs https://stripe.com/docs/stripe-js/appearance-api
482
+ */
483
+ appearance?: Appearance;
484
+ }
485
+
486
+ /*
487
+ * Use a `CssFontSource` to pass custom fonts via a stylesheet URL when creating an `Elements` object.
488
+ */
489
+ export interface CssFontSource {
490
+ /**
491
+ * A relative or absolute URL pointing to a CSS file with [@font-face](https://developer.mozilla.org/en/docs/Web/CSS/@font-face) definitions, for example:
492
+ *
493
+ * https://fonts.googleapis.com/css?family=Open+Sans
494
+ *
495
+ * Note that if you are using a [content security policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy) (CSP), [additional directives](https://stripe.com/docs/security#content-security-policy) may be necessary.
496
+ */
497
+ cssSrc: string;
498
+ }
499
+
500
+ /*
501
+ * Use a `CustomFontSource` to pass custom fonts when creating an `Elements` object.
502
+ */
503
+ export interface CustomFontSource {
504
+ /**
505
+ * The name to give the font
506
+ */
507
+ family: string;
508
+
509
+ /**
510
+ * A valid [src](https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/src) value pointing to your custom font file.
511
+ * This is usually (though not always) a link to a file with a `.woff` , `.otf`, or `.svg` suffix.
512
+ */
513
+ src: string;
514
+
515
+ /**
516
+ * A valid [font-display](https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display) value.
517
+ */
518
+ display?: string;
519
+
520
+ /**
521
+ * Defaults to `normal`.
522
+ */
523
+ style?: 'normal' | 'italic' | 'oblique';
524
+
525
+ /**
526
+ * A valid [unicode-range](https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/unicode-range) value.
527
+ */
528
+ unicodeRange?: string;
529
+
530
+ /**
531
+ * A valid [font-weight](https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight), as a string.
532
+ */
533
+ weight?: string;
534
+ }
535
+
536
+ /*
537
+ * @docs https://stripe.com/docs/stripe-js/appearance-api
538
+ */
539
+ export interface Appearance {
540
+ theme?: 'stripe' | 'night' | 'flat' | 'none';
541
+
542
+ variables?: {
543
+ // General font styles
544
+ fontFamily?: string;
545
+ fontSmooth?: string;
546
+ fontVariantLigatures?: string;
547
+ fontVariationSettings?: string;
548
+ fontLineHeight?: string;
549
+
550
+ // Font sizes
551
+ fontSizeBase?: string;
552
+ fontSizeSm?: string;
553
+ fontSizeXs?: string;
554
+ fontSize2Xs?: string;
555
+ fontSize3Xs?: string;
556
+ fontSizeLg?: string;
557
+ fontSizeXl?: string;
558
+
559
+ // Font weights
560
+ fontWeightLight?: string;
561
+ fontWeightNormal?: string;
562
+ fontWeightMedium?: string;
563
+ fontWeightBold?: string;
564
+
565
+ // Spacing
566
+ spacingUnit?: string;
567
+ spacingGridRow?: string;
568
+ spacingGridColumn?: string;
569
+ spacingTab?: string;
570
+
571
+ // Colors
572
+ colorPrimary?: string;
573
+ colorPrimaryText?: string;
574
+ colorBackground?: string;
575
+ colorBackgroundText?: string;
576
+ colorText?: string;
577
+ colorSuccess?: string;
578
+ colorSuccessText?: string;
579
+ colorDanger?: string;
580
+ colorDangerText?: string;
581
+ colorWarning?: string;
582
+ colorWarningText?: string;
583
+
584
+ // Text variations
585
+ colorTextSecondary?: string;
586
+ colorTextPlaceholder?: string;
587
+
588
+ // Icons
589
+ colorIcon?: string;
590
+ colorIconHover?: string;
591
+ colorIconCardError?: string;
592
+ colorIconCardCvc?: string;
593
+ colorIconCardCvcError?: string;
594
+ colorIconCheckmark?: string;
595
+ colorIconChevronDown?: string;
596
+ colorIconChevronDownHover?: string;
597
+ colorIconRedirect?: string;
598
+ colorIconTab?: string;
599
+ colorIconTabHover?: string;
600
+ colorIconTabSelected?: string;
601
+ colorIconTabMore?: string;
602
+ colorIconTabMoreHover?: string;
603
+
604
+ // Logos
605
+ colorLogo?: string;
606
+ colorLogoTab?: string;
607
+ colorLogoTabSelected?: string;
608
+ colorLogoBlock?: string;
609
+
610
+ // Focus
611
+ focusBoxShadow?: string;
612
+ focusOutline?: string;
613
+
614
+ // Radius
615
+ borderRadius?: string;
616
+ };
617
+
618
+ rules?: {
619
+ [selector: string]: {
620
+ [cssPropertyName: string]: string;
621
+ };
622
+ };
623
+ }