gauss_spectrum 0.2.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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 46a7fad52ff56697d3583b1a668fed0c8a07fdeab742917dff2b51ba21de894c
4
+ data.tar.gz: 9c7eafc0d0065d177b26c5abf7c38bd301bd34c9eaaa6b5488ac2d9bca4aabef
5
+ SHA512:
6
+ metadata.gz: 73b65f788df4fb4c3b111dcccc73666abbb1eaf6ccac07afe61065c11adaeea29becf6489945f40dc6676be05dc57a6aa043fb5d5c1fcd4ea3c6d8bc09fe05dc
7
+ data.tar.gz: 9e47ce69e965311ed59d8323558737494a53a3443d3b5ecce458ef6eb3b6dd37800fe42a01d3258a7c041639fd5c602b3839587a5d1b05b44b0dd7a780002edc
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --require spec_helper
data/.rubocop.yml ADDED
@@ -0,0 +1,680 @@
1
+ require: rubocop-performance
2
+
3
+ AllCops:
4
+ TargetRubyVersion: 3.4.1
5
+ EnabledByDefault: false
6
+ SuggestExtensions: false
7
+ NewCops: disable
8
+ Exclude:
9
+ - "vendor/**/*"
10
+ - "spec/**/*.rb"
11
+ # RuboCop has a bunch of cops enabled by default. This setting tells RuboCop
12
+ # to ignore them, so only the ones explicitly set in this file are enabled.
13
+ Performance/RedundantBlockCall:
14
+ Enabled: false
15
+
16
+ Lint/DuplicateRegexpCharacterClassElement: # (new in 1.1)
17
+ Enabled: true
18
+
19
+ Lint/EmptyBlock: # (new in 1.1)
20
+ Enabled: true
21
+
22
+ Lint/NoReturnInBeginEndBlocks: # (new in 1.2)
23
+ Enabled: true
24
+
25
+ Lint/ToEnumArguments: # (new in 1.1)
26
+ Enabled: true
27
+
28
+ Lint/UnmodifiedReduceAccumulator: # (new in 1.1)
29
+ Enabled: true
30
+
31
+ Style/Alias:
32
+ EnforcedStyle: prefer_alias_method
33
+ Enabled: true
34
+
35
+ Style/ArgumentsForwarding: # (new in 1.1)
36
+ Enabled: true
37
+
38
+ Style/CollectionCompact: # (new in 1.2)
39
+ Enabled: true
40
+
41
+ Style/DocumentDynamicEvalDefinition: # (new in 1.1)
42
+ Enabled: true
43
+
44
+ Style/NegatedIfElseCondition: # (new in 1.2)
45
+ Enabled: true
46
+
47
+ Style/SwapValues: # (new in 1.1)
48
+ Enabled: true
49
+
50
+ Style/Documentation:
51
+ Enabled: false
52
+
53
+ Layout/EmptyLinesAroundAttributeAccessor:
54
+ Enabled: true
55
+
56
+ Layout/SpaceAroundMethodCallOperator:
57
+ Enabled: true
58
+
59
+ Lint/BinaryOperatorWithIdenticalOperands:
60
+ Enabled: true
61
+
62
+ Lint/DeprecatedOpenSSLConstant:
63
+ Enabled: true
64
+
65
+ Lint/DuplicateElsifCondition:
66
+ Enabled: true
67
+
68
+ Lint/DuplicateRescueException:
69
+ Enabled: true
70
+
71
+ Lint/EmptyConditionalBody:
72
+ Enabled: true
73
+
74
+ Lint/FloatComparison:
75
+ Enabled: true
76
+
77
+ Lint/MissingSuper:
78
+ Enabled: true
79
+
80
+ Lint/MixedRegexpCaptureTypes:
81
+ Enabled: true
82
+
83
+ Lint/OutOfRangeRegexpRef:
84
+ Enabled: true
85
+
86
+ Lint/RaiseException:
87
+ Enabled: true
88
+
89
+ Lint/SelfAssignment:
90
+ Enabled: true
91
+
92
+ Lint/StructNewOverride:
93
+ Enabled: true
94
+
95
+ Lint/TopLevelReturnWithArgument:
96
+ Enabled: true
97
+
98
+ Lint/UnreachableLoop:
99
+ Enabled: true
100
+
101
+ Style/AccessorGrouping:
102
+ Enabled: true
103
+
104
+ Style/ArrayCoercion:
105
+ Enabled: true
106
+
107
+ Style/BisectedAttrAccessor:
108
+ Enabled: true
109
+
110
+ Style/CaseLikeIf:
111
+ Enabled: true
112
+
113
+ Style/ExplicitBlockArgument:
114
+ Enabled: true
115
+
116
+ Style/ExponentialNotation:
117
+ Enabled: true
118
+
119
+ Style/GlobalStdStream:
120
+ Enabled: true
121
+
122
+ Style/HashAsLastArrayItem:
123
+ Enabled: true
124
+
125
+ Style/HashEachMethods:
126
+ Enabled: true
127
+
128
+ Style/HashLikeCase:
129
+ Enabled: true
130
+
131
+ Style/HashTransformKeys:
132
+ Enabled: true
133
+
134
+ Style/HashTransformValues:
135
+ Enabled: true
136
+
137
+ Style/OptionalBooleanParameter:
138
+ Enabled: true
139
+
140
+ Style/RedundantAssignment:
141
+ Enabled: true
142
+
143
+ Style/RedundantFetchBlock:
144
+ Enabled: true
145
+
146
+ Style/RedundantFileExtensionInRequire:
147
+ Enabled: true
148
+
149
+ Style/RedundantRegexpCharacterClass:
150
+ Enabled: true
151
+
152
+ Style/RedundantRegexpEscape:
153
+ Enabled: true
154
+
155
+ Style/SingleArgumentDig:
156
+ Enabled: true
157
+
158
+ Style/SlicingWithRange:
159
+ Enabled: true
160
+
161
+ Style/StringConcatenation:
162
+ Enabled: true
163
+
164
+ Layout/AccessModifierIndentation:
165
+ Description: Check indentation of private/protected visibility modifiers.
166
+ StyleGuide: "#indent-public-private-protected"
167
+ Enabled: true
168
+ VersionAdded: "0.49"
169
+ # ClearCove
170
+ EnforcedStyle: outdent
171
+ SupportedStyles:
172
+ - outdent
173
+ - indent
174
+ # By default, the indentation width from Layout/IndentationWidth is used
175
+ # But it can be overridden by setting this parameter
176
+ IndentationWidth: ~
177
+
178
+ # Method definitions after `private` or `protected` isolated calls need one
179
+ # extra level of indentation.
180
+ Layout/IndentationConsistency:
181
+ Enabled: false
182
+
183
+ Style/Lambda:
184
+ Description: "Use the new lambda literal syntax for single-line blocks."
185
+ StyleGuide: "#lambda-multi-line"
186
+ Enabled: true
187
+ VersionAdded: "0.9"
188
+ VersionChanged: "0.40"
189
+ # ClearCove
190
+ EnforcedStyle: literal
191
+ SupportedStyles:
192
+ - line_count_dependent
193
+ - lambda
194
+ - literal
195
+
196
+ Layout/LineLength:
197
+ Description: "Limit lines to 80 characters."
198
+ StyleGuide: "#80-character-limits"
199
+ Enabled: true
200
+ VersionAdded: "0.25"
201
+ VersionChanged: "0.46"
202
+ # ClearCove
203
+ Max: 120
204
+ # To make it possible to copy or click on URIs in the code, we allow lines
205
+ # containing a URI to be longer than Max.
206
+ AllowHeredoc: true
207
+ AllowURI: true
208
+ URISchemes:
209
+ - http
210
+ - https
211
+ # The IgnoreCopDirectives option causes the LineLength rule to ignore cop
212
+ # directives like '# rubocop: enable ...' when calculating a line's length.
213
+ IgnoreCopDirectives: false
214
+ # The IgnoredPatterns option is a list of !ruby/regexp and/or string
215
+ # elements. Strings will be converted to Regexp objects. A line that matches
216
+ # any regular expression listed in this option will be ignored by LineLength.
217
+ AllowedPatterns: []
218
+
219
+ Layout/MultilineMethodCallIndentation:
220
+ Description: >-
221
+ Checks indentation of method calls with the dot operator
222
+ that span more than one line.
223
+ Enabled: true
224
+ VersionAdded: "0.49"
225
+ # ClearCove
226
+ EnforcedStyle: indented_relative_to_receiver
227
+ SupportedStyles:
228
+ - aligned
229
+ - indented
230
+ - indented_relative_to_receiver
231
+ # By default, the indentation width from Layout/IndentationWidth is used
232
+ # But it can be overridden by setting this parameter
233
+ IndentationWidth: ~
234
+
235
+ Metrics/AbcSize:
236
+ Description: >-
237
+ A calculated magnitude based on number of assignments,
238
+ branches, and conditions.
239
+ Enabled: false
240
+
241
+ Metrics/BlockLength:
242
+ Description: "Avoid long blocks with many lines."
243
+ Enabled: false
244
+
245
+ Metrics/ClassLength:
246
+ Description: "Avoid classes longer than 100 lines of code."
247
+ Enabled: false
248
+
249
+ Metrics/CyclomaticComplexity:
250
+ Description: >
251
+ This cop checks that the cyclomatic complexity of methods is not higher
252
+ than the configured maximum.
253
+ Enabled: false
254
+
255
+ Metrics/MethodLength:
256
+ Description: "Avoid methods longer than 10 lines of code."
257
+ Enabled: false
258
+
259
+ Metrics/ModuleLength:
260
+ Description: "Avoid modules longer than 100 lines of code."
261
+ Enabled: false
262
+
263
+ Naming/PredicateName:
264
+ Description: "Check the names of predicate methods."
265
+ # ClearCove: We allow names like "has_admin_role?".
266
+ Enabled: false
267
+
268
+ Style/StringLiterals:
269
+ Description: "Checks if uses of quotes match the configured preference."
270
+ StyleGuide: "#consistent-string-literals"
271
+ Enabled: true
272
+ VersionAdded: "0.9"
273
+ VersionChanged: "0.36"
274
+ # ClearCove
275
+ EnforcedStyle: single_quotes
276
+ SupportedStyles:
277
+ - single_quotes
278
+ - double_quotes
279
+ # If `true`, strings which span multiple lines using `\` for continuation must
280
+ # use the same type of quotes on each line.
281
+ # ClearCove
282
+ ConsistentQuotesInMultiline: true
283
+
284
+ Style/NegatedIf:
285
+ Description: >-
286
+ Favor unless over if for negative conditions
287
+ (or control flow or).
288
+ Enabled: false
289
+
290
+ Layout/ExtraSpacing:
291
+ Description: "Do not use unnecessary spacing."
292
+ Enabled: false
293
+
294
+ Style/TrailingCommaInArguments:
295
+ Description: "Checks for trailing comma in argument lists."
296
+ StyleGuide: "#no-trailing-params-comma"
297
+ Enabled: true
298
+ VersionAdded: "0.36"
299
+ # If `comma`, the cop requires a comma after the last argument, but only for
300
+ # parenthesized method calls where each argument is on its own line.
301
+ # If `consistent_comma`, the cop requires a comma after the last argument,
302
+ # for all parenthesized method calls with arguments.
303
+ # ClearCove
304
+ EnforcedStyleForMultiline: no_comma
305
+ SupportedStylesForMultiline:
306
+ - comma
307
+ - consistent_comma
308
+ - no_comma
309
+
310
+ Style/TrailingCommaInArrayLiteral:
311
+ Description: "Checks for trailing comma in array literals."
312
+ StyleGuide: "#no-trailing-array-commas"
313
+ Enabled: true
314
+ VersionAdded: "0.53"
315
+ # but only when each item is on its own line.
316
+ # If `consistent_comma`, the cop requires a comma after the last item of all
317
+ # non-empty array literals.
318
+ # ClearCove
319
+ EnforcedStyleForMultiline: no_comma
320
+ SupportedStylesForMultiline:
321
+ - comma
322
+ - consistent_comma
323
+ - no_comma
324
+
325
+ Style/TrailingCommaInHashLiteral:
326
+ Description: "Checks for trailing comma in hash literals."
327
+ Enabled: true
328
+ # If `comma`, the cop requires a comma after the last item in a hash,
329
+ # but only when each item is on its own line.
330
+ # If `consistent_comma`, the cop requires a comma after the last item of all
331
+ # non-empty hash literals.
332
+ # ClearCove
333
+ EnforcedStyleForMultiline: no_comma
334
+ SupportedStylesForMultiline:
335
+ - comma
336
+ - consistent_comma
337
+ - no_comma
338
+ VersionAdded: "0.53"
339
+
340
+ Style/BlockDelimiters:
341
+ Description: >-
342
+ Avoid using {...} for multi-line blocks (multiline chaining is
343
+ always ugly).
344
+ Prefer {...} over do...end for single-line blocks.
345
+ StyleGuide: "#single-line-blocks"
346
+ # ClearCove
347
+ Enabled: false
348
+ VersionAdded: "0.30"
349
+ VersionChanged: "0.35"
350
+ # ClearCove
351
+ EnforcedStyle: semantic
352
+ SupportedStyles:
353
+ # The `line_count_based` style enforces braces around single line blocks and
354
+ # do..end around multi-line blocks.
355
+ - line_count_based
356
+ # The `semantic` style enforces braces around functional blocks, where the
357
+ # primary purpose of the block is to return a value and do..end for
358
+ # procedural blocks, where the primary purpose of the block is its
359
+ # side-effects.
360
+ #
361
+ # This looks at the usage of a block's method to determine its type (e.g. is
362
+ # the result of a `map` assigned to a variable or passed to another
363
+ # method) but exceptions are permitted in the `ProceduralMethods`,
364
+ # `FunctionalMethods` and `IgnoredMethods` sections below.
365
+ - semantic
366
+ # The `braces_for_chaining` style enforces braces around single line blocks
367
+ # and do..end around multi-line blocks, except for multi-line blocks whose
368
+ # return value is being chained with another method (in which case braces
369
+ # are enforced).
370
+ - braces_for_chaining
371
+ ProceduralMethods:
372
+ # Methods that are known to be procedural in nature but look functional from
373
+ # their usage, e.g.
374
+ #
375
+ # time = Benchmark.realtime do
376
+ # foo.bar
377
+ # end
378
+ #
379
+ # Here, the return value of the block is discarded but the return value of
380
+ # `Benchmark.realtime` is used.
381
+ - benchmark
382
+ - bm
383
+ - bmbm
384
+ - create
385
+ - each_with_object
386
+ - measure
387
+ - new
388
+ - realtime
389
+ - tap
390
+ - with_object
391
+ FunctionalMethods:
392
+ # Methods that are known to be functional in nature but look procedural from
393
+ # their usage, e.g.
394
+ #
395
+ # let(:foo) { Foo.new }
396
+ #
397
+ # Here, the return value of `Foo.new` is used to define a `foo` helper but
398
+ # doesn't appear to be used from the return value of `let`.
399
+ - let
400
+ - let!
401
+ - subject
402
+ - watch
403
+ AllowedPatterns:
404
+ # Methods that can be either procedural or functional and cannot be
405
+ # categorised from their usage alone, e.g.
406
+ #
407
+ # foo = lambda do |x|
408
+ # puts "Hello, #{x}"
409
+ # end
410
+ #
411
+ # foo = lambda do |x|
412
+ # x * 100
413
+ # end
414
+ #
415
+ # Here, it is impossible to tell from the return value of `lambda` whether
416
+ # the inner block's return value is significant.
417
+ - lambda
418
+ - proc
419
+ - it
420
+
421
+ Style/SymbolProc:
422
+ Enabled: false
423
+
424
+ Style/SymbolArray:
425
+ Description: "Use %i or %I for arrays of symbols."
426
+ StyleGuide: "#percent-i"
427
+ Enabled: true
428
+ VersionAdded: "0.9"
429
+ VersionChanged: "0.49"
430
+ # ClearCove
431
+ EnforcedStyle: brackets
432
+ MinSize: 2
433
+ SupportedStyles:
434
+ - percent
435
+ - brackets
436
+
437
+ Layout/EmptyLinesAroundClassBody:
438
+ Description: "Keeps track of empty lines around class bodies."
439
+ StyleGuide: "#empty-lines-around-bodies"
440
+ Enabled: true
441
+ VersionAdded: "0.49"
442
+ VersionChanged: "0.53"
443
+ # ClearCove
444
+ EnforcedStyle: empty_lines_except_namespace
445
+ SupportedStyles:
446
+ - empty_lines
447
+ - empty_lines_except_namespace
448
+ - empty_lines_special
449
+ - no_empty_lines
450
+ - beginning_only
451
+ - ending_only
452
+
453
+ Layout/EmptyLinesAroundModuleBody:
454
+ Description: "Keeps track of empty lines around module bodies."
455
+ StyleGuide: "#empty-lines-around-bodies"
456
+ Enabled: true
457
+ VersionAdded: "0.49"
458
+ # ClearCove
459
+ EnforcedStyle: empty_lines_except_namespace
460
+ SupportedStyles:
461
+ - empty_lines
462
+ - empty_lines_except_namespace
463
+ - empty_lines_special
464
+ - no_empty_lines
465
+
466
+ Layout/ClassStructure:
467
+ Description: "Enforces a configured order of definitions within a class body."
468
+ StyleGuide: >
469
+ https://github.com/rubocop-hq/ruby-style-guide#consistent-classes
470
+ # ClearCove
471
+ Enabled: true
472
+ VersionAdded: "0.52"
473
+ Categories:
474
+ module_inclusion:
475
+ - include
476
+ - prepend
477
+ - extend
478
+ ExpectedOrder:
479
+ - module_inclusion
480
+ - constants
481
+ - public_class_methods
482
+ - initializer
483
+ - public_methods
484
+ - protected_methods
485
+ - private_methods
486
+
487
+ Style/YodaCondition:
488
+ Description: "Forbid or enforce yoda conditions."
489
+ Reference: "https://en.wikipedia.org/wiki/Yoda_conditions"
490
+ Enabled: true
491
+ AutoCorrect: true
492
+ # ClearCove
493
+ EnforcedStyle: forbid_for_all_comparison_operators
494
+ VersionAdded: "0.49"
495
+ VersionChanged: "0.63"
496
+
497
+ Style/FrozenStringLiteralComment:
498
+ Description: >-
499
+ Add the frozen_string_literal comment to the top of files
500
+ to help transition from Ruby 2.3.0 to Ruby 3.0.
501
+ Enabled: true
502
+
503
+ Layout/EndAlignment:
504
+ Description: "Align ends correctly."
505
+ Enabled: true
506
+ VersionAdded: "0.53"
507
+ # The value `keyword` means that `end` should be aligned with the matching
508
+ # keyword (`if`, `while`, etc.).
509
+ # The value `variable` means that in assignments, `end` should be aligned
510
+ # with the start of the variable on the left hand side of `=`. In all other
511
+ # situations, `end` should still be aligned with the keyword.
512
+ # The value `start_of_line` means that `end` should be aligned with the start
513
+ # of the line which the matching keyword appears on.
514
+ EnforcedStyleAlignWith: keyword
515
+ SupportedStylesAlignWith:
516
+ - keyword
517
+ - variable
518
+ - start_of_line
519
+ # ClearCove
520
+ AutoCorrect: true
521
+ Severity: warning
522
+
523
+ # Prefer &&/|| over and/or.
524
+ Style/AndOr:
525
+ Enabled: true
526
+
527
+ # Align `when` with `case`.
528
+ Layout/CaseIndentation:
529
+ Enabled: false
530
+
531
+ # Align comments with method definitions.
532
+ Layout/CommentIndentation:
533
+ Enabled: true
534
+
535
+ Layout/ElseAlignment:
536
+ Enabled: false
537
+
538
+ Layout/EmptyLineAfterMagicComment:
539
+ Enabled: true
540
+
541
+ Layout/EmptyLinesAroundBlockBody:
542
+ Enabled: false
543
+
544
+ Layout/FirstArgumentIndentation:
545
+ Enabled: true
546
+
547
+ # Use Ruby >= 1.9 syntax for hashes. Prefer { a: :b } over { :a => :b }.
548
+ Style/HashSyntax:
549
+ Enabled: true
550
+
551
+ # Detect hard tabs, no hard tabs.
552
+ Layout/IndentationStyle:
553
+ Enabled: true
554
+
555
+ # Two spaces, no tabs (for indentation).
556
+ Layout/IndentationWidth:
557
+ Enabled: true
558
+
559
+ Layout/LeadingCommentSpace:
560
+ Enabled: true
561
+
562
+ Layout/SpaceAfterColon:
563
+ Enabled: true
564
+
565
+ Layout/SpaceAfterComma:
566
+ Enabled: true
567
+
568
+ Layout/SpaceAfterSemicolon:
569
+ Enabled: true
570
+
571
+ Layout/SpaceAroundEqualsInParameterDefault:
572
+ Enabled: true
573
+
574
+ Layout/SpaceAroundKeyword:
575
+ Enabled: true
576
+
577
+ Layout/SpaceAroundOperators:
578
+ Enabled: true
579
+
580
+ Layout/SpaceBeforeComma:
581
+ Enabled: true
582
+
583
+ Layout/SpaceBeforeComment:
584
+ Enabled: true
585
+
586
+ Layout/SpaceBeforeFirstArg:
587
+ Enabled: true
588
+
589
+ Style/DefWithParentheses:
590
+ Enabled: true
591
+
592
+ # Defining a method with parameters needs parentheses.
593
+ Style/MethodDefParentheses:
594
+ Enabled: true
595
+
596
+ Style/RedundantFreeze:
597
+ Enabled: true
598
+
599
+ # Use `foo {}` not `foo{}`.
600
+ Layout/SpaceBeforeBlockBraces:
601
+ Enabled: true
602
+
603
+ # Use `foo { bar }` not `foo {bar}`.
604
+ Layout/SpaceInsideBlockBraces:
605
+ Enabled: true
606
+ EnforcedStyleForEmptyBraces: space
607
+
608
+ # Use `{ a: 1 }` not `{a:1}`.
609
+ Layout/SpaceInsideHashLiteralBraces:
610
+ Enabled: true
611
+
612
+ Layout/SpaceInsideParens:
613
+ Enabled: true
614
+
615
+ # Blank lines should not have any spaces.
616
+ Layout/TrailingEmptyLines:
617
+ Enabled: true
618
+
619
+ # No trailing whitespace.
620
+ Layout/TrailingWhitespace:
621
+ Enabled: true
622
+
623
+ # Use quotes for string literals when they are enough.
624
+ Style/RedundantPercentQ:
625
+ Enabled: true
626
+
627
+ Lint/Void:
628
+ Enabled: false
629
+
630
+ Lint/AmbiguousOperator:
631
+ Enabled: true
632
+
633
+ Lint/AmbiguousRegexpLiteral:
634
+ Enabled: true
635
+
636
+ Lint/ErbNewArguments:
637
+ Enabled: true
638
+
639
+ # Use my_method(my_arg) not my_method( my_arg ) or my_method my_arg.
640
+ Lint/RequireParentheses:
641
+ Enabled: true
642
+
643
+ Lint/ShadowingOuterLocalVariable:
644
+ Enabled: true
645
+
646
+ Lint/RedundantStringCoercion:
647
+ Enabled: true
648
+
649
+ Lint/UriEscapeUnescape:
650
+ Enabled: true
651
+
652
+ Lint/UselessAssignment:
653
+ Enabled: true
654
+
655
+ Lint/DeprecatedClassMethods:
656
+ Enabled: true
657
+
658
+ Lint/Debugger:
659
+ Enabled: false
660
+
661
+ Style/ParenthesesAroundCondition:
662
+ Enabled: true
663
+
664
+ Style/RedundantBegin:
665
+ Enabled: true
666
+
667
+ Style/RedundantReturn:
668
+ Enabled: true
669
+ AllowMultipleReturnValues: true
670
+
671
+ Style/Semicolon:
672
+ Enabled: true
673
+ AllowAsExpressionSeparator: true
674
+
675
+ # Prefer Foo.method over Foo::method
676
+ Style/ColonMethodCall:
677
+ Enabled: true
678
+
679
+ Style/TrivialAccessors:
680
+ Enabled: true
data/.tool-versions ADDED
@@ -0,0 +1 @@
1
+ ruby 3.4.1
@@ -0,0 +1,6 @@
1
+ {
2
+ "recommendations": [
3
+ "rust-lang.rust-analyzer",
4
+ "shopify.ruby-lsp"
5
+ ]
6
+ }