guidepost 0.2.2__tar.gz → 0.2.3__tar.gz
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.
- {guidepost-0.2.2 → guidepost-0.2.3}/PKG-INFO +49 -14
- guidepost-0.2.3/README.md +134 -0
- guidepost-0.2.3/guidepost/version.py +2 -0
- {guidepost-0.2.2 → guidepost-0.2.3}/guidepost.egg-info/PKG-INFO +49 -14
- guidepost-0.2.2/README.md +0 -99
- guidepost-0.2.2/guidepost/version.py +0 -2
- {guidepost-0.2.2 → guidepost-0.2.3}/LICENSE +0 -0
- {guidepost-0.2.2 → guidepost-0.2.3}/guidepost/__init__.py +0 -0
- {guidepost-0.2.2 → guidepost-0.2.3}/guidepost/guidepost.py +0 -0
- {guidepost-0.2.2 → guidepost-0.2.3}/guidepost.egg-info/SOURCES.txt +0 -0
- {guidepost-0.2.2 → guidepost-0.2.3}/guidepost.egg-info/dependency_links.txt +0 -0
- {guidepost-0.2.2 → guidepost-0.2.3}/guidepost.egg-info/requires.txt +0 -0
- {guidepost-0.2.2 → guidepost-0.2.3}/guidepost.egg-info/top_level.txt +0 -0
- {guidepost-0.2.2 → guidepost-0.2.3}/pyproject.toml +0 -0
- {guidepost-0.2.2 → guidepost-0.2.3}/setup.cfg +0 -0
- {guidepost-0.2.2 → guidepost-0.2.3}/setup.py +0 -0
- {guidepost-0.2.2 → guidepost-0.2.3}/tutorials/__init__.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: guidepost
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.3
|
|
4
4
|
Summary: Guidepost. An overview visualization for understanding supercomputer queue data.
|
|
5
5
|
Home-page: https://github.com/cscully-allison/guidepost
|
|
6
6
|
Author: Connor Scully-Allison
|
|
@@ -53,10 +53,11 @@ pip install guidepost
|
|
|
53
53
|
|
|
54
54
|
## Quick Start
|
|
55
55
|
|
|
56
|
-
### 1. Import Guidepost
|
|
56
|
+
### 1. Import and Initialize Guidepost
|
|
57
57
|
|
|
58
58
|
```python
|
|
59
|
-
|
|
59
|
+
from guidepost import Guidepost
|
|
60
|
+
gp = Guidepost()
|
|
60
61
|
```
|
|
61
62
|
|
|
62
63
|
### 2. Load Your Data
|
|
@@ -65,16 +66,33 @@ Guidepost supports input data in CSV or Pandas DataFrame format. Ensure your dat
|
|
|
65
66
|
```python
|
|
66
67
|
import pandas as pd
|
|
67
68
|
|
|
68
|
-
|
|
69
|
+
jobs_data = pd.read_parquet("data/jobs_data.parquet")
|
|
69
70
|
```
|
|
70
71
|
|
|
71
|
-
### 3.
|
|
72
|
+
### 3. Configure Visualization
|
|
72
73
|
|
|
73
74
|
```python
|
|
74
|
-
gp.
|
|
75
|
+
gp.vis_data = jobs_data
|
|
76
|
+
gp.vis_configs = {
|
|
77
|
+
'x': 'queue_wait',
|
|
78
|
+
'y': 'start_time',
|
|
79
|
+
'color': 'nodes_req',
|
|
80
|
+
'color_agg': 'avg',
|
|
81
|
+
'categorical': 'user'
|
|
82
|
+
}
|
|
75
83
|
```
|
|
76
84
|
|
|
77
|
-
|
|
85
|
+
### 4. Run Visualization
|
|
86
|
+
```python
|
|
87
|
+
gp
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Run the above command in a Jupyter notebook cell to load data.
|
|
91
|
+
|
|
92
|
+
### 4. Retrieve Selections from Visualization
|
|
93
|
+
```python
|
|
94
|
+
gp.retrieve_selected_data()
|
|
95
|
+
```
|
|
78
96
|
|
|
79
97
|
---
|
|
80
98
|
|
|
@@ -86,16 +104,33 @@ Below is an example of the kind of data Guidepost works with:
|
|
|
86
104
|
| 12345 | 5.2 | 10 | short | Complete |
|
|
87
105
|
| 12346 | 12.0 | 20 | long | Running |
|
|
88
106
|
|
|
89
|
-
|
|
107
|
+
|
|
108
|
+
Note that a column named "partition" must be sepecified.
|
|
90
109
|
|
|
91
110
|
---
|
|
92
111
|
|
|
93
112
|
## API Reference
|
|
94
113
|
|
|
95
|
-
### `
|
|
96
|
-
- **Description**:
|
|
97
|
-
|
|
98
|
-
|
|
114
|
+
### `vis_data`
|
|
115
|
+
- **Description**: Holds the vis data to passed to the visualization. Updates to this variable will automatically update the visualization.
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
### `vis_configs`
|
|
119
|
+
- **Description**: Holds the vis configurations to passed to the visualization. Updates to this variable will automatically update the visualization.
|
|
120
|
+
|
|
121
|
+
Vis configurations must be specified as a python dictonary with the following fields:
|
|
122
|
+
- 'x': The column from the pandas dataframe which will be shown on the x axis. This can be a integer, float or datetime variable.
|
|
123
|
+
- 'y': The column from the pandas dataframe which will be shown on the y axis of this visualization. This can be an integer or float.
|
|
124
|
+
- 'color': The column from the pandas dataframe which will determine the color of squares in the main summary view. This can be an integer or float.
|
|
125
|
+
- 'color_agg': This is a specification for what aggregation is used for the color variable. It can be: 'avg', 'variance', 'std', 'sum', or 'median'
|
|
126
|
+
- 'categorical': A categorical variable from the dataset. It must be a string. The visualization will show the top 7 instances of this variable.
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
### `retrieve_selected_data()`
|
|
131
|
+
- **Description**: Returns selected data back from the visualization.
|
|
132
|
+
- **Returns**:
|
|
133
|
+
- `subselection` (DataFrame or str): A Pandas DataFrame that contains subselected data specified from selections made to the visualization.
|
|
99
134
|
|
|
100
135
|
---
|
|
101
136
|
|
|
@@ -117,11 +152,11 @@ Guidepost is licensed under the MIT License. See the `LICENSE` file for details.
|
|
|
117
152
|
|
|
118
153
|
## Acknowledgments
|
|
119
154
|
|
|
120
|
-
Guidepost was developed
|
|
155
|
+
Guidepost was developed under the auspices and with funding provided by the National Renewable Energy Laboratory (NREL).
|
|
121
156
|
|
|
122
157
|
---
|
|
123
158
|
|
|
124
159
|
## Contact
|
|
125
160
|
|
|
126
|
-
For questions or feedback, please reach out to the
|
|
161
|
+
For questions or feedback, please reach out to the maintainer at [cscullyallison@sci.utah.edu].
|
|
127
162
|
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
# Guidepost
|
|
2
|
+
|
|
3
|
+
Guidepost is a Python library designed for seamless integration into Jupyter notebooks to visualize High Performance Computing (HPC) job data. It simplifies the process of understanding HPC workloads by providing a single, interactive visualization that offers an intuitive overview of job performance, resource usage, and other critical metrics.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Features
|
|
8
|
+
|
|
9
|
+
- **Jupyter Notebook Integration**: Designed for your existing workflow. Load and interact with the visualization directly in your Jupyter environment.
|
|
10
|
+
- **HPC Job Data Insights**: Visualize key metrics, including job runtimes, resource usage, and queue performance.
|
|
11
|
+
- **Interactive Exploration**: Export selections of specific jobs or groups of jobs for deeper analysis.
|
|
12
|
+
- **Lightweight and Easy to Use**: Focused on simplicity and efficiency for HPC users.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Installation
|
|
17
|
+
|
|
18
|
+
Guidepost is available on PyPI. You can install it using pip:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
pip install guidepost
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Quick Start
|
|
27
|
+
|
|
28
|
+
### 1. Import and Initialize Guidepost
|
|
29
|
+
|
|
30
|
+
```python
|
|
31
|
+
from guidepost import Guidepost
|
|
32
|
+
gp = Guidepost()
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### 2. Load Your Data
|
|
36
|
+
Guidepost supports input data in CSV or Pandas DataFrame format. Ensure your data includes columns such as job IDs, runtime, and resource usage.
|
|
37
|
+
|
|
38
|
+
```python
|
|
39
|
+
import pandas as pd
|
|
40
|
+
|
|
41
|
+
jobs_data = pd.read_parquet("data/jobs_data.parquet")
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### 3. Configure Visualization
|
|
45
|
+
|
|
46
|
+
```python
|
|
47
|
+
gp.vis_data = jobs_data
|
|
48
|
+
gp.vis_configs = {
|
|
49
|
+
'x': 'queue_wait',
|
|
50
|
+
'y': 'start_time',
|
|
51
|
+
'color': 'nodes_req',
|
|
52
|
+
'color_agg': 'avg',
|
|
53
|
+
'categorical': 'user'
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### 4. Run Visualization
|
|
58
|
+
```python
|
|
59
|
+
gp
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Run the above command in a Jupyter notebook cell to load data.
|
|
63
|
+
|
|
64
|
+
### 4. Retrieve Selections from Visualization
|
|
65
|
+
```python
|
|
66
|
+
gp.retrieve_selected_data()
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Example Dataset
|
|
72
|
+
Below is an example of the kind of data Guidepost works with:
|
|
73
|
+
|
|
74
|
+
| Job ID | Runtime (hours) | Nodes Used | partition | Status |
|
|
75
|
+
|--------|-----------------|------------|-----------|--------|
|
|
76
|
+
| 12345 | 5.2 | 10 | short | Complete |
|
|
77
|
+
| 12346 | 12.0 | 20 | long | Running |
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
Note that a column named "partition" must be sepecified.
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## API Reference
|
|
85
|
+
|
|
86
|
+
### `vis_data`
|
|
87
|
+
- **Description**: Holds the vis data to passed to the visualization. Updates to this variable will automatically update the visualization.
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
### `vis_configs`
|
|
91
|
+
- **Description**: Holds the vis configurations to passed to the visualization. Updates to this variable will automatically update the visualization.
|
|
92
|
+
|
|
93
|
+
Vis configurations must be specified as a python dictonary with the following fields:
|
|
94
|
+
- 'x': The column from the pandas dataframe which will be shown on the x axis. This can be a integer, float or datetime variable.
|
|
95
|
+
- 'y': The column from the pandas dataframe which will be shown on the y axis of this visualization. This can be an integer or float.
|
|
96
|
+
- 'color': The column from the pandas dataframe which will determine the color of squares in the main summary view. This can be an integer or float.
|
|
97
|
+
- 'color_agg': This is a specification for what aggregation is used for the color variable. It can be: 'avg', 'variance', 'std', 'sum', or 'median'
|
|
98
|
+
- 'categorical': A categorical variable from the dataset. It must be a string. The visualization will show the top 7 instances of this variable.
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
### `retrieve_selected_data()`
|
|
103
|
+
- **Description**: Returns selected data back from the visualization.
|
|
104
|
+
- **Returns**:
|
|
105
|
+
- `subselection` (DataFrame or str): A Pandas DataFrame that contains subselected data specified from selections made to the visualization.
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## Contributing
|
|
110
|
+
|
|
111
|
+
Contributions to Guidepost are welcome! To contribute:
|
|
112
|
+
|
|
113
|
+
1. Fork the repository.
|
|
114
|
+
2. Create a new branch for your feature or bugfix.
|
|
115
|
+
3. Submit a pull request with a detailed description of your changes.
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## License
|
|
120
|
+
|
|
121
|
+
Guidepost is licensed under the MIT License. See the `LICENSE` file for details.
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## Acknowledgments
|
|
126
|
+
|
|
127
|
+
Guidepost was developed under the auspices and with funding provided by the National Renewable Energy Laboratory (NREL).
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## Contact
|
|
132
|
+
|
|
133
|
+
For questions or feedback, please reach out to the maintainer at [cscullyallison@sci.utah.edu].
|
|
134
|
+
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: guidepost
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.3
|
|
4
4
|
Summary: Guidepost. An overview visualization for understanding supercomputer queue data.
|
|
5
5
|
Home-page: https://github.com/cscully-allison/guidepost
|
|
6
6
|
Author: Connor Scully-Allison
|
|
@@ -53,10 +53,11 @@ pip install guidepost
|
|
|
53
53
|
|
|
54
54
|
## Quick Start
|
|
55
55
|
|
|
56
|
-
### 1. Import Guidepost
|
|
56
|
+
### 1. Import and Initialize Guidepost
|
|
57
57
|
|
|
58
58
|
```python
|
|
59
|
-
|
|
59
|
+
from guidepost import Guidepost
|
|
60
|
+
gp = Guidepost()
|
|
60
61
|
```
|
|
61
62
|
|
|
62
63
|
### 2. Load Your Data
|
|
@@ -65,16 +66,33 @@ Guidepost supports input data in CSV or Pandas DataFrame format. Ensure your dat
|
|
|
65
66
|
```python
|
|
66
67
|
import pandas as pd
|
|
67
68
|
|
|
68
|
-
|
|
69
|
+
jobs_data = pd.read_parquet("data/jobs_data.parquet")
|
|
69
70
|
```
|
|
70
71
|
|
|
71
|
-
### 3.
|
|
72
|
+
### 3. Configure Visualization
|
|
72
73
|
|
|
73
74
|
```python
|
|
74
|
-
gp.
|
|
75
|
+
gp.vis_data = jobs_data
|
|
76
|
+
gp.vis_configs = {
|
|
77
|
+
'x': 'queue_wait',
|
|
78
|
+
'y': 'start_time',
|
|
79
|
+
'color': 'nodes_req',
|
|
80
|
+
'color_agg': 'avg',
|
|
81
|
+
'categorical': 'user'
|
|
82
|
+
}
|
|
75
83
|
```
|
|
76
84
|
|
|
77
|
-
|
|
85
|
+
### 4. Run Visualization
|
|
86
|
+
```python
|
|
87
|
+
gp
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Run the above command in a Jupyter notebook cell to load data.
|
|
91
|
+
|
|
92
|
+
### 4. Retrieve Selections from Visualization
|
|
93
|
+
```python
|
|
94
|
+
gp.retrieve_selected_data()
|
|
95
|
+
```
|
|
78
96
|
|
|
79
97
|
---
|
|
80
98
|
|
|
@@ -86,16 +104,33 @@ Below is an example of the kind of data Guidepost works with:
|
|
|
86
104
|
| 12345 | 5.2 | 10 | short | Complete |
|
|
87
105
|
| 12346 | 12.0 | 20 | long | Running |
|
|
88
106
|
|
|
89
|
-
|
|
107
|
+
|
|
108
|
+
Note that a column named "partition" must be sepecified.
|
|
90
109
|
|
|
91
110
|
---
|
|
92
111
|
|
|
93
112
|
## API Reference
|
|
94
113
|
|
|
95
|
-
### `
|
|
96
|
-
- **Description**:
|
|
97
|
-
|
|
98
|
-
|
|
114
|
+
### `vis_data`
|
|
115
|
+
- **Description**: Holds the vis data to passed to the visualization. Updates to this variable will automatically update the visualization.
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
### `vis_configs`
|
|
119
|
+
- **Description**: Holds the vis configurations to passed to the visualization. Updates to this variable will automatically update the visualization.
|
|
120
|
+
|
|
121
|
+
Vis configurations must be specified as a python dictonary with the following fields:
|
|
122
|
+
- 'x': The column from the pandas dataframe which will be shown on the x axis. This can be a integer, float or datetime variable.
|
|
123
|
+
- 'y': The column from the pandas dataframe which will be shown on the y axis of this visualization. This can be an integer or float.
|
|
124
|
+
- 'color': The column from the pandas dataframe which will determine the color of squares in the main summary view. This can be an integer or float.
|
|
125
|
+
- 'color_agg': This is a specification for what aggregation is used for the color variable. It can be: 'avg', 'variance', 'std', 'sum', or 'median'
|
|
126
|
+
- 'categorical': A categorical variable from the dataset. It must be a string. The visualization will show the top 7 instances of this variable.
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
### `retrieve_selected_data()`
|
|
131
|
+
- **Description**: Returns selected data back from the visualization.
|
|
132
|
+
- **Returns**:
|
|
133
|
+
- `subselection` (DataFrame or str): A Pandas DataFrame that contains subselected data specified from selections made to the visualization.
|
|
99
134
|
|
|
100
135
|
---
|
|
101
136
|
|
|
@@ -117,11 +152,11 @@ Guidepost is licensed under the MIT License. See the `LICENSE` file for details.
|
|
|
117
152
|
|
|
118
153
|
## Acknowledgments
|
|
119
154
|
|
|
120
|
-
Guidepost was developed
|
|
155
|
+
Guidepost was developed under the auspices and with funding provided by the National Renewable Energy Laboratory (NREL).
|
|
121
156
|
|
|
122
157
|
---
|
|
123
158
|
|
|
124
159
|
## Contact
|
|
125
160
|
|
|
126
|
-
For questions or feedback, please reach out to the
|
|
161
|
+
For questions or feedback, please reach out to the maintainer at [cscullyallison@sci.utah.edu].
|
|
127
162
|
|
guidepost-0.2.2/README.md
DELETED
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
# Guidepost
|
|
2
|
-
|
|
3
|
-
Guidepost is a Python library designed for seamless integration into Jupyter notebooks to visualize High Performance Computing (HPC) job data. It simplifies the process of understanding HPC workloads by providing a single, interactive visualization that offers an intuitive overview of job performance, resource usage, and other critical metrics.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Features
|
|
8
|
-
|
|
9
|
-
- **Jupyter Notebook Integration**: Designed for your existing workflow. Load and interact with the visualization directly in your Jupyter environment.
|
|
10
|
-
- **HPC Job Data Insights**: Visualize key metrics, including job runtimes, resource usage, and queue performance.
|
|
11
|
-
- **Interactive Exploration**: Export selections of specific jobs or groups of jobs for deeper analysis.
|
|
12
|
-
- **Lightweight and Easy to Use**: Focused on simplicity and efficiency for HPC users.
|
|
13
|
-
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
## Installation
|
|
17
|
-
|
|
18
|
-
Guidepost is available on PyPI. You can install it using pip:
|
|
19
|
-
|
|
20
|
-
```bash
|
|
21
|
-
pip install guidepost
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
---
|
|
25
|
-
|
|
26
|
-
## Quick Start
|
|
27
|
-
|
|
28
|
-
### 1. Import Guidepost
|
|
29
|
-
|
|
30
|
-
```python
|
|
31
|
-
import guidepost as gp
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
### 2. Load Your Data
|
|
35
|
-
Guidepost supports input data in CSV or Pandas DataFrame format. Ensure your data includes columns such as job IDs, runtime, and resource usage.
|
|
36
|
-
|
|
37
|
-
```python
|
|
38
|
-
import pandas as pd
|
|
39
|
-
|
|
40
|
-
data = pd.read_csv("hpc_jobs.csv")
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
### 3. Generate Visualization
|
|
44
|
-
|
|
45
|
-
```python
|
|
46
|
-
gp.load_visualization(data)
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
Run the above command in a Jupyter notebook cell to render the visualization directly.
|
|
50
|
-
|
|
51
|
-
---
|
|
52
|
-
|
|
53
|
-
## Example Dataset
|
|
54
|
-
Below is an example of the kind of data Guidepost works with:
|
|
55
|
-
|
|
56
|
-
| Job ID | Runtime (hours) | Nodes Used | partition | Status |
|
|
57
|
-
|--------|-----------------|------------|-----------|--------|
|
|
58
|
-
| 12345 | 5.2 | 10 | short | Complete |
|
|
59
|
-
| 12346 | 12.0 | 20 | long | Running |
|
|
60
|
-
|
|
61
|
-
Note that a column named "parition" must be sepecified.
|
|
62
|
-
|
|
63
|
-
---
|
|
64
|
-
|
|
65
|
-
## API Reference
|
|
66
|
-
|
|
67
|
-
### `load_visualization(data)`
|
|
68
|
-
- **Description**: Renders the HPC job data visualization in the current Jupyter notebook.
|
|
69
|
-
- **Parameters**:
|
|
70
|
-
- `data` (DataFrame or str): A Pandas DataFrame or a path to a CSV file containing HPC job data.
|
|
71
|
-
|
|
72
|
-
---
|
|
73
|
-
|
|
74
|
-
## Contributing
|
|
75
|
-
|
|
76
|
-
Contributions to Guidepost are welcome! To contribute:
|
|
77
|
-
|
|
78
|
-
1. Fork the repository.
|
|
79
|
-
2. Create a new branch for your feature or bugfix.
|
|
80
|
-
3. Submit a pull request with a detailed description of your changes.
|
|
81
|
-
|
|
82
|
-
---
|
|
83
|
-
|
|
84
|
-
## License
|
|
85
|
-
|
|
86
|
-
Guidepost is licensed under the MIT License. See the `LICENSE` file for details.
|
|
87
|
-
|
|
88
|
-
---
|
|
89
|
-
|
|
90
|
-
## Acknowledgments
|
|
91
|
-
|
|
92
|
-
Guidepost was developed to simplify the analysis of HPC workloads, inspired by the challenges faced by HPC administrators and researchers. Thank you to the open-source community for their support and tools.
|
|
93
|
-
|
|
94
|
-
---
|
|
95
|
-
|
|
96
|
-
## Contact
|
|
97
|
-
|
|
98
|
-
For questions or feedback, please reach out to the maintainers at [your-email@example.com].
|
|
99
|
-
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|