@antimatter-audio/antimatter-ui 9.0.6 → 9.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.
- package/dist/assets/src/core/Button/Button.css.ts.vanilla-Be5tO_i6.css +30 -0
- package/dist/assets/src/core/Button/Button.css.ts.vanilla-BgDwK7hH.css +30 -0
- package/dist/assets/src/core/Button/Button.css.ts.vanilla-CqBl7vyU.css +30 -0
- package/dist/assets/src/core/Button/Button.css.ts.vanilla-DBvWYymw.css +32 -0
- package/dist/assets/src/core/Button/Button.css.ts.vanilla-DklkKqpr.css +28 -0
- package/dist/assets/src/core/Button/Button.css.ts.vanilla-UfrXQS8M.css +30 -0
- package/dist/assets/src/core/Button/Button.css.ts.vanilla-ZHEMMDf9.css +33 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.js +36 -14
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
.Button_ButtonStyle__1m3jauc0 {
|
|
2
|
+
font-size: var(--fontSizes-small__1rgzsg09);
|
|
3
|
+
display: flex;
|
|
4
|
+
align-items: center;
|
|
5
|
+
justify-content: center;
|
|
6
|
+
padding-right: var(--spacing-mediumSmall__1rgzsg03);
|
|
7
|
+
padding-left: var(--spacing-mediumSmall__1rgzsg03);
|
|
8
|
+
cursor: pointer;
|
|
9
|
+
vertical-align: middle;
|
|
10
|
+
white-space: nowrap;
|
|
11
|
+
text-decoration: none;
|
|
12
|
+
text-align: center;
|
|
13
|
+
border: 0;
|
|
14
|
+
border-radius: var(--borderRadius__1rgzsg0e);
|
|
15
|
+
appearance: none;
|
|
16
|
+
user-select: none;
|
|
17
|
+
min-width: 1rem;
|
|
18
|
+
min-height: 1rem;
|
|
19
|
+
}
|
|
20
|
+
.Button_variants_xSmall__1m3jauc1 {
|
|
21
|
+
width: var(--spacing-medium__1rgzsg04);
|
|
22
|
+
height: var(--spacing-medium__1rgzsg04);
|
|
23
|
+
}
|
|
24
|
+
.Button_variants_small__1m3jauc2 {
|
|
25
|
+
height: var(--spacing-large__1rgzsg06);
|
|
26
|
+
font-size: var(--fontSizes-xSmall__1rgzsg08);
|
|
27
|
+
}
|
|
28
|
+
.Button_variants_large__1m3jauc3 {
|
|
29
|
+
height: var(--spacing-xLarge__1rgzsg07);
|
|
30
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
.Button_ButtonStyle__1m3jauc0 {
|
|
2
|
+
font-size: var(--fontSizes-small__1rgzsg09);
|
|
3
|
+
display: flex;
|
|
4
|
+
align-items: center;
|
|
5
|
+
justify-content: center;
|
|
6
|
+
padding-right: var(--spacing-mediumSmall__1rgzsg03);
|
|
7
|
+
padding-left: var(--spacing-mediumSmall__1rgzsg03);
|
|
8
|
+
cursor: pointer;
|
|
9
|
+
vertical-align: middle;
|
|
10
|
+
white-space: nowrap;
|
|
11
|
+
text-decoration: none;
|
|
12
|
+
text-align: center;
|
|
13
|
+
border: 0;
|
|
14
|
+
border-radius: var(--borderRadius__1rgzsg0e);
|
|
15
|
+
appearance: none;
|
|
16
|
+
user-select: none;
|
|
17
|
+
min-width: 1rem;
|
|
18
|
+
min-height: 1rem;
|
|
19
|
+
}
|
|
20
|
+
.Button_variants_xSmall__1m3jauc1 {
|
|
21
|
+
width: var(--spacing-small__1rgzsg02);
|
|
22
|
+
height: var(--spacing-small__1rgzsg02);
|
|
23
|
+
}
|
|
24
|
+
.Button_variants_small__1m3jauc2 {
|
|
25
|
+
height: var(--spacing-large__1rgzsg06);
|
|
26
|
+
font-size: var(--fontSizes-xSmall__1rgzsg08);
|
|
27
|
+
}
|
|
28
|
+
.Button_variants_large__1m3jauc3 {
|
|
29
|
+
height: var(--spacing-xLarge__1rgzsg07);
|
|
30
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
.Button_ButtonStyle__1m3jauc0 {
|
|
2
|
+
font-size: var(--fontSizes-small__1rgzsg09);
|
|
3
|
+
display: flex;
|
|
4
|
+
align-items: center;
|
|
5
|
+
justify-content: center;
|
|
6
|
+
padding-right: var(--spacing-mediumSmall__1rgzsg03);
|
|
7
|
+
padding-left: var(--spacing-mediumSmall__1rgzsg03);
|
|
8
|
+
cursor: pointer;
|
|
9
|
+
vertical-align: middle;
|
|
10
|
+
white-space: nowrap;
|
|
11
|
+
text-decoration: none;
|
|
12
|
+
text-align: center;
|
|
13
|
+
border: 0;
|
|
14
|
+
border-radius: var(--borderRadius__1rgzsg0e);
|
|
15
|
+
appearance: none;
|
|
16
|
+
user-select: none;
|
|
17
|
+
min-width: 1rem;
|
|
18
|
+
min-height: 1rem;
|
|
19
|
+
}
|
|
20
|
+
.Button_variants_xSmall__1m3jauc1 {
|
|
21
|
+
width: var(--spacing-mediumLarge__1rgzsg05);
|
|
22
|
+
height: var(--spacing-mediumLarge__1rgzsg05);
|
|
23
|
+
}
|
|
24
|
+
.Button_variants_small__1m3jauc2 {
|
|
25
|
+
height: var(--spacing-large__1rgzsg06);
|
|
26
|
+
font-size: var(--fontSizes-xSmall__1rgzsg08);
|
|
27
|
+
}
|
|
28
|
+
.Button_variants_large__1m3jauc3 {
|
|
29
|
+
height: var(--spacing-xLarge__1rgzsg07);
|
|
30
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
.Button_ButtonStyle__1m3jauc0 {
|
|
2
|
+
font-size: var(--fontSizes-small__1rgzsg09);
|
|
3
|
+
display: flex;
|
|
4
|
+
align-items: center;
|
|
5
|
+
justify-content: center;
|
|
6
|
+
padding-right: var(--spacing-mediumSmall__1rgzsg03);
|
|
7
|
+
padding-left: var(--spacing-mediumSmall__1rgzsg03);
|
|
8
|
+
cursor: pointer;
|
|
9
|
+
vertical-align: middle;
|
|
10
|
+
white-space: nowrap;
|
|
11
|
+
text-decoration: none;
|
|
12
|
+
text-align: center;
|
|
13
|
+
border: 0;
|
|
14
|
+
border-radius: var(--borderRadius__1rgzsg0e);
|
|
15
|
+
appearance: none;
|
|
16
|
+
user-select: none;
|
|
17
|
+
}
|
|
18
|
+
.Button_variants_xSmall__1m3jauc1 {
|
|
19
|
+
width: var(--spacing-mediumLarge__1rgzsg05);
|
|
20
|
+
height: var(--spacing-mediumLarge__1rgzsg05);
|
|
21
|
+
}
|
|
22
|
+
.Button_variants_small__1m3jauc2 {
|
|
23
|
+
height: var(--spacing-large__1rgzsg06);
|
|
24
|
+
font-size: var(--fontSizes-xSmall__1rgzsg08);
|
|
25
|
+
min-width: 1rem;
|
|
26
|
+
min-height: 1rem;
|
|
27
|
+
}
|
|
28
|
+
.Button_variants_large__1m3jauc3 {
|
|
29
|
+
height: var(--spacing-xLarge__1rgzsg07);
|
|
30
|
+
min-width: 1rem;
|
|
31
|
+
min-height: 1rem;
|
|
32
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
.Button_ButtonStyle__1m3jauc0 {
|
|
2
|
+
font-size: var(--fontSizes-small__1rgzsg09);
|
|
3
|
+
display: flex;
|
|
4
|
+
align-items: center;
|
|
5
|
+
justify-content: center;
|
|
6
|
+
padding-right: var(--spacing-mediumSmall__1rgzsg03);
|
|
7
|
+
padding-left: var(--spacing-mediumSmall__1rgzsg03);
|
|
8
|
+
cursor: pointer;
|
|
9
|
+
vertical-align: middle;
|
|
10
|
+
white-space: nowrap;
|
|
11
|
+
text-decoration: none;
|
|
12
|
+
text-align: center;
|
|
13
|
+
border: 0;
|
|
14
|
+
border-radius: var(--borderRadius__1rgzsg0e);
|
|
15
|
+
appearance: none;
|
|
16
|
+
user-select: none;
|
|
17
|
+
}
|
|
18
|
+
.Button_variants_xSmall__1m3jauc1 {
|
|
19
|
+
width: var(--spacing-mediumLarge__1rgzsg05);
|
|
20
|
+
height: var(--spacing-mediumLarge__1rgzsg05);
|
|
21
|
+
}
|
|
22
|
+
.Button_variants_small__1m3jauc2 {
|
|
23
|
+
height: var(--spacing-large__1rgzsg06);
|
|
24
|
+
font-size: var(--fontSizes-xSmall__1rgzsg08);
|
|
25
|
+
}
|
|
26
|
+
.Button_variants_large__1m3jauc3 {
|
|
27
|
+
height: var(--spacing-xLarge__1rgzsg07);
|
|
28
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
.Button_ButtonStyle__1m3jauc0 {
|
|
2
|
+
font-size: var(--fontSizes-small__1rgzsg09);
|
|
3
|
+
display: flex;
|
|
4
|
+
align-items: center;
|
|
5
|
+
justify-content: center;
|
|
6
|
+
padding-right: var(--spacing-mediumSmall__1rgzsg03);
|
|
7
|
+
padding-left: var(--spacing-mediumSmall__1rgzsg03);
|
|
8
|
+
cursor: pointer;
|
|
9
|
+
vertical-align: middle;
|
|
10
|
+
white-space: nowrap;
|
|
11
|
+
text-decoration: none;
|
|
12
|
+
text-align: center;
|
|
13
|
+
border: 0;
|
|
14
|
+
border-radius: var(--borderRadius__1rgzsg0e);
|
|
15
|
+
appearance: none;
|
|
16
|
+
user-select: none;
|
|
17
|
+
}
|
|
18
|
+
.Button_variants_xSmall__1m3jauc1 {
|
|
19
|
+
width: var(--spacing-mediumLarge__1rgzsg05);
|
|
20
|
+
height: var(--spacing-mediumLarge__1rgzsg05);
|
|
21
|
+
}
|
|
22
|
+
.Button_variants_small__1m3jauc2 {
|
|
23
|
+
height: var(--spacing-large__1rgzsg06);
|
|
24
|
+
font-size: var(--fontSizes-xSmall__1rgzsg08);
|
|
25
|
+
min-width: 1rem;
|
|
26
|
+
min-height: 1rem;
|
|
27
|
+
}
|
|
28
|
+
.Button_variants_large__1m3jauc3 {
|
|
29
|
+
height: var(--spacing-xLarge__1rgzsg07);
|
|
30
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
.Button_ButtonStyle__1m3jauc0 {
|
|
2
|
+
font-size: var(--fontSizes-small__1rgzsg09);
|
|
3
|
+
display: flex;
|
|
4
|
+
align-items: center;
|
|
5
|
+
justify-content: center;
|
|
6
|
+
padding-right: var(--spacing-mediumSmall__1rgzsg03);
|
|
7
|
+
padding-left: var(--spacing-mediumSmall__1rgzsg03);
|
|
8
|
+
cursor: pointer;
|
|
9
|
+
vertical-align: middle;
|
|
10
|
+
white-space: nowrap;
|
|
11
|
+
text-decoration: none;
|
|
12
|
+
text-align: center;
|
|
13
|
+
border: 0;
|
|
14
|
+
appearance: none;
|
|
15
|
+
user-select: none;
|
|
16
|
+
}
|
|
17
|
+
.Button_variants_xSmall__1m3jauc1 {
|
|
18
|
+
width: var(--spacing-mediumLarge__1rgzsg05);
|
|
19
|
+
height: var(--spacing-mediumLarge__1rgzsg05);
|
|
20
|
+
}
|
|
21
|
+
.Button_variants_small__1m3jauc2 {
|
|
22
|
+
height: var(--spacing-large__1rgzsg06);
|
|
23
|
+
font-size: var(--fontSizes-xSmall__1rgzsg08);
|
|
24
|
+
min-width: 1rem;
|
|
25
|
+
min-height: 1rem;
|
|
26
|
+
border-radius: var(--borderRadius__1rgzsg0e);
|
|
27
|
+
}
|
|
28
|
+
.Button_variants_large__1m3jauc3 {
|
|
29
|
+
border-radius: var(--borderRadius__1rgzsg0e);
|
|
30
|
+
height: var(--spacing-xLarge__1rgzsg07);
|
|
31
|
+
min-width: 1rem;
|
|
32
|
+
min-height: 1rem;
|
|
33
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -53,6 +53,7 @@ declare namespace Tabs {
|
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
declare enum ButtonSize {
|
|
56
|
+
xSmall = "xSmall",
|
|
56
57
|
small = "small",
|
|
57
58
|
large = "large"
|
|
58
59
|
}
|
|
@@ -79,10 +80,10 @@ declare namespace Button {
|
|
|
79
80
|
|
|
80
81
|
interface DropdownProps {
|
|
81
82
|
id: string;
|
|
82
|
-
items
|
|
83
|
+
items?: Array<string>;
|
|
83
84
|
className?: string;
|
|
84
85
|
style?: React__default.CSSProperties;
|
|
85
|
-
onChange?: (event: any) =>
|
|
86
|
+
onChange?: (event: any) => any;
|
|
86
87
|
}
|
|
87
88
|
declare function Dropdown({ items, className, id, style }: DropdownProps): React__default.JSX.Element;
|
|
88
89
|
|
package/dist/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import React__default, { useState, useRef, useCallback
|
|
2
|
+
import React__default, { useState, useEffect, useRef, useCallback } from 'react';
|
|
3
3
|
import classnames from 'classnames';
|
|
4
4
|
import { TabGroup, TabList, Tab, Listbox, ListboxButton, ListboxOptions, ListboxOption } from '@headlessui/react';
|
|
5
5
|
import './assets/src/common/styles/base.css.ts.vanilla-aBQSVOsn.css';
|
|
6
6
|
import './assets/src/core/Tabs/Tabs.css.ts.vanilla-DQ1nIUyD.css';
|
|
7
7
|
import * as Juce from 'juce-framework-frontend';
|
|
8
|
-
import './assets/src/core/Button/Button.css.ts.vanilla-
|
|
8
|
+
import './assets/src/core/Button/Button.css.ts.vanilla-ZHEMMDf9.css';
|
|
9
9
|
import './assets/src/core/Dropdown/Dropdown.css.ts.vanilla-BLtRNWLI.css';
|
|
10
10
|
import './assets/src/core/Input/Input.css.ts.vanilla-BKrnSGGE.css';
|
|
11
11
|
import { useDrag } from '@use-gesture/react';
|
|
@@ -178,6 +178,7 @@ Tabs.margin = Spacing;
|
|
|
178
178
|
|
|
179
179
|
var ButtonSize;
|
|
180
180
|
(function(ButtonSize) {
|
|
181
|
+
ButtonSize["xSmall"] = "xSmall";
|
|
181
182
|
ButtonSize["small"] = "small";
|
|
182
183
|
ButtonSize["large"] = "large";
|
|
183
184
|
})(ButtonSize || (ButtonSize = {}));
|
|
@@ -188,7 +189,7 @@ var ButtonType;
|
|
|
188
189
|
})(ButtonType || (ButtonType = {}));
|
|
189
190
|
|
|
190
191
|
var ButtonStyle = 'Button_ButtonStyle__1m3jauc0';
|
|
191
|
-
var variants$2 = {small:'
|
|
192
|
+
var variants$2 = {xSmall:'Button_variants_xSmall__1m3jauc1 Button_ButtonStyle__1m3jauc0',small:'Button_variants_small__1m3jauc2 Button_ButtonStyle__1m3jauc0',large:'Button_variants_large__1m3jauc3 Button_ButtonStyle__1m3jauc0'};
|
|
192
193
|
|
|
193
194
|
function _array_like_to_array$5(arr, len) {
|
|
194
195
|
if (len == null || len > arr.length) len = arr.length;
|
|
@@ -299,7 +300,7 @@ function Button(param) {
|
|
|
299
300
|
disabled: disabled,
|
|
300
301
|
style: _object_spread$b({}, style),
|
|
301
302
|
className: classnames('Button', ButtonStyle, variants$2[size], isSelected && 'selected', className)
|
|
302
|
-
}, text ? text : children);
|
|
303
|
+
}, size !== ButtonSize.xSmall && (text ? text : children));
|
|
303
304
|
}
|
|
304
305
|
Button.type = ButtonType;
|
|
305
306
|
Button.size = ButtonSize;
|
|
@@ -356,14 +357,34 @@ function _unsupported_iterable_to_array$4(o, minLen) {
|
|
|
356
357
|
}
|
|
357
358
|
function Dropdown(param) {
|
|
358
359
|
var items = param.items, className = param.className, id = param.id, style = param.style;
|
|
359
|
-
var
|
|
360
|
-
var
|
|
361
|
-
var
|
|
362
|
-
|
|
363
|
-
|
|
360
|
+
var comboBoxState = Juce.getComboBoxState(id);
|
|
361
|
+
var _useState = _sliced_to_array$4(useState(comboBoxState.getChoiceIndex()), 2), value = _useState[0], setValue = _useState[1];
|
|
362
|
+
var _useState1 = _sliced_to_array$4(useState(comboBoxState.properties), 2), properties = _useState1[0], setProperties = _useState1[1];
|
|
363
|
+
var handleChange = function(event) {
|
|
364
|
+
comboBoxState.setChoiceIndex(event);
|
|
365
|
+
setValue(event);
|
|
364
366
|
};
|
|
367
|
+
useEffect(function() {
|
|
368
|
+
var comboBoxState = Juce.getComboBoxState(id);
|
|
369
|
+
setValue(comboBoxState.getChoiceIndex());
|
|
370
|
+
}, [
|
|
371
|
+
id
|
|
372
|
+
]);
|
|
373
|
+
useEffect(function() {
|
|
374
|
+
var valueListenerId = comboBoxState.valueChangedEvent.addListener(function() {
|
|
375
|
+
setValue(comboBoxState.getChoiceIndex());
|
|
376
|
+
});
|
|
377
|
+
var propertiesListenerId = comboBoxState.propertiesChangedEvent.addListener(function() {
|
|
378
|
+
setProperties(comboBoxState.properties);
|
|
379
|
+
});
|
|
380
|
+
return function cleanup() {
|
|
381
|
+
comboBoxState.valueChangedEvent.removeListener(valueListenerId);
|
|
382
|
+
comboBoxState.propertiesChangedEvent.removeListener(propertiesListenerId);
|
|
383
|
+
};
|
|
384
|
+
});
|
|
385
|
+
var _properties_choices, _properties_choices1;
|
|
365
386
|
return /*#__PURE__*/ React__default.createElement(Listbox, {
|
|
366
|
-
value:
|
|
387
|
+
value: value,
|
|
367
388
|
onChange: handleChange
|
|
368
389
|
}, /*#__PURE__*/ React__default.createElement(ListboxButton, {
|
|
369
390
|
className: classnames('Dropdown-button', DropdownButtonStyle, className),
|
|
@@ -372,16 +393,17 @@ function Dropdown(param) {
|
|
|
372
393
|
onChange: function(value) {
|
|
373
394
|
return console.log(value);
|
|
374
395
|
}
|
|
375
|
-
}, items[
|
|
396
|
+
}, ((_properties_choices = properties.choices) !== null && _properties_choices !== void 0 ? _properties_choices : items)[value]), /*#__PURE__*/ React__default.createElement(ListboxOptions, {
|
|
376
397
|
anchor: "bottom",
|
|
377
398
|
portal: false,
|
|
378
399
|
className: classnames(DropdownMenuStyle)
|
|
379
|
-
}, items.map(function(item, i)
|
|
380
|
-
|
|
400
|
+
}, ((_properties_choices1 = properties.choices) !== null && _properties_choices1 !== void 0 ? _properties_choices1 : items).map(function(item, i) {
|
|
401
|
+
var _properties_choices;
|
|
402
|
+
return React__default.createElement(ListboxOption, {
|
|
381
403
|
className: classnames(DropdownMenuItemStyle),
|
|
382
404
|
key: item,
|
|
383
405
|
value: i
|
|
384
|
-
}, items[i]);
|
|
406
|
+
}, ((_properties_choices = properties.choices) !== null && _properties_choices !== void 0 ? _properties_choices : items)[i]);
|
|
385
407
|
})));
|
|
386
408
|
}
|
|
387
409
|
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|