Skip to content

Commit 049bab4

Browse files
committed
Updated the filter for superchargers or not. Checked dashboard with Teslamate 1.27.2 and Grafana 8.5.15.
1 parent f3d0dbd commit 049bab4

4 files changed

Lines changed: 55 additions & 55 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
## How to import boards
66

7-
Tested with Teslamate v1.27.1 and Grafana v8.5.6
7+
Tested with Teslamate v1.27.1+ and Grafana v8.5.6+
88

99
1. Sign in to Grafana
1010
2. Create an API key (More information below)

dashboards/charging-costs-stats.json

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
"type": "grafana",
1212
"id": "grafana",
1313
"name": "Grafana",
14-
"version": "8.5.6"
14+
"version": "8.5.15"
1515
},
1616
{
1717
"type": "datasource",
@@ -62,7 +62,7 @@
6262
"fiscalYearStartMonth": 0,
6363
"graphTooltip": 1,
6464
"id": null,
65-
"iteration": 1672790710530,
65+
"iteration": 1673621413295,
6666
"links": [
6767
{
6868
"icon": "dashboard",
@@ -112,7 +112,7 @@
112112
"content": "",
113113
"mode": "markdown"
114114
},
115-
"pluginVersion": "8.5.6",
115+
"pluginVersion": "8.5.15",
116116
"targets": [
117117
{
118118
"datasource": "TeslaMate",
@@ -196,7 +196,7 @@
196196
},
197197
"textMode": "value"
198198
},
199-
"pluginVersion": "8.5.6",
199+
"pluginVersion": "8.5.15",
200200
"targets": [
201201
{
202202
"datasource": "TeslaMate",
@@ -303,7 +303,7 @@
303303
},
304304
"textMode": "value"
305305
},
306-
"pluginVersion": "8.5.6",
306+
"pluginVersion": "8.5.15",
307307
"targets": [
308308
{
309309
"datasource": "TeslaMate",
@@ -385,7 +385,7 @@
385385
},
386386
"textMode": "value"
387387
},
388-
"pluginVersion": "8.5.6",
388+
"pluginVersion": "8.5.15",
389389
"targets": [
390390
{
391391
"datasource": "TeslaMate",
@@ -468,7 +468,7 @@
468468
},
469469
"textMode": "value"
470470
},
471-
"pluginVersion": "8.5.6",
471+
"pluginVersion": "8.5.15",
472472
"targets": [
473473
{
474474
"datasource": "TeslaMate",
@@ -551,7 +551,7 @@
551551
},
552552
"textMode": "value"
553553
},
554-
"pluginVersion": "8.5.6",
554+
"pluginVersion": "8.5.15",
555555
"targets": [
556556
{
557557
"datasource": "TeslaMate",
@@ -762,7 +762,7 @@
762762
},
763763
"textMode": "auto"
764764
},
765-
"pluginVersion": "8.5.6",
765+
"pluginVersion": "8.5.15",
766766
"targets": [
767767
{
768768
"datasource": "TeslaMate",
@@ -841,7 +841,7 @@
841841
},
842842
"textMode": "auto"
843843
},
844-
"pluginVersion": "8.5.6",
844+
"pluginVersion": "8.5.15",
845845
"targets": [
846846
{
847847
"datasource": "TeslaMate",
@@ -924,15 +924,15 @@
924924
},
925925
"textMode": "value"
926926
},
927-
"pluginVersion": "8.5.6",
927+
"pluginVersion": "8.5.15",
928928
"targets": [
929929
{
930930
"datasource": "TeslaMate",
931931
"format": "table",
932932
"group": [],
933933
"metricColumn": "none",
934934
"rawQuery": true,
935-
"rawSql": "WITH data AS (\n\tSELECT c.charging_process_id \n\tFROM charges c\n\tLEFT JOIN charging_processes cp ON cp.id = c.charging_process_id\n\tLEFT JOIN addresses addr ON addr.id = cp.address_id\n\tLEFT JOIN geofences geo ON geo.id = geofence_id\n\tWHERE \n\t\tc.fast_charger_present IS true\n\t\tAND c.charger_voltage = 2\n\t\tAND cp.car_id = $car_id\n\t\tAND (addr.name LIKE '%Supercharger%' OR geo.name LIKE '%Supercharger%')\n\tGROUP BY 1\n)\nSELECT\n\tsum(cp.cost) as total\nFROM\n\tcharging_processes cp, data\nWHERE\n $__timeFilter(end_date)\n AND cp.cost IS NOT NULL\n AND cp.id IN (data.charging_process_id);",
935+
"rawSql": "WITH data AS (\n\tSELECT c.charging_process_id \n\tFROM charges c\n\tLEFT JOIN charging_processes cp ON cp.id = c.charging_process_id\n\tLEFT JOIN addresses addr ON addr.id = cp.address_id\n\tLEFT JOIN geofences geo ON geo.id = geofence_id\n\tWHERE \n\t\tc.fast_charger_present IS true\n\t\tAND c.charger_voltage = 2\n\t\tAND cp.car_id = $car_id\n\t\tAND (addr.name ILIKE '%supercharger%' OR geo.name ILIKE '%supercharger%')\n\tGROUP BY 1\n)\nSELECT\n\tsum(cp.cost) as total\nFROM\n\tcharging_processes cp, data\nWHERE\n $__timeFilter(end_date)\n AND cp.cost IS NOT NULL\n AND cp.id IN (data.charging_process_id);",
936936
"refId": "A",
937937
"select": [
938938
[
@@ -1007,15 +1007,15 @@
10071007
},
10081008
"textMode": "value"
10091009
},
1010-
"pluginVersion": "8.5.6",
1010+
"pluginVersion": "8.5.15",
10111011
"targets": [
10121012
{
10131013
"datasource": "TeslaMate",
10141014
"format": "table",
10151015
"group": [],
10161016
"metricColumn": "none",
10171017
"rawQuery": true,
1018-
"rawSql": "WITH data AS (\n\tSELECT c.charging_process_id \n\tFROM charges c\n\tLEFT JOIN charging_processes cp ON cp.id = c.charging_process_id\n\tLEFT JOIN addresses addr ON addr.id = cp.address_id\n\tLEFT JOIN geofences geo ON geo.id = geofence_id\n\tWHERE \n\t\tc.fast_charger_present IS true\n\t\tAND c.charger_voltage = 2\n\t\tAND cp.car_id = $car_id\n\t\tAND CASE \n\t\t\tWHEN (cp.geofence_id IS NOT NULL) THEN (addr.name NOT LIKE '%Supercharger%' AND geo.name NOT LIKE '%Supercharger%')\n\t\t\tELSE addr.name NOT LIKE '%Supercharger%'\n\t\tEND\n\tGROUP BY 1\n)\nSELECT\n\tsum(cp.cost) as total\nFROM\n\tcharging_processes cp, data\nWHERE\n $__timeFilter(end_date)\n AND cp.cost IS NOT NULL\n AND cp.id IN (data.charging_process_id);",
1018+
"rawSql": "WITH data AS (\n\tSELECT c.charging_process_id \n\tFROM charges c\n\tLEFT JOIN charging_processes cp ON cp.id = c.charging_process_id\n\tLEFT JOIN addresses addr ON addr.id = cp.address_id\n\tLEFT JOIN geofences geo ON geo.id = geofence_id\n\tWHERE \n\t\tc.fast_charger_present IS true\n\t\tAND c.charger_voltage = 2\n\t\tAND cp.car_id = $car_id\n\t\tAND CASE \n\t\t\tWHEN (cp.geofence_id IS NOT NULL) THEN (addr.name NOT ILIKE '%supercharger%' AND geo.name NOT ILIKE '%supercharger%')\n\t\t\tELSE addr.name NOT ILIKE '%supercharger%'\n\t\tEND\n\tGROUP BY 1\n)\nSELECT\n\tsum(cp.cost) as total\nFROM\n\tcharging_processes cp, data\nWHERE\n $__timeFilter(end_date)\n AND cp.cost IS NOT NULL\n AND cp.id IN (data.charging_process_id);",
10191019
"refId": "A",
10201020
"select": [
10211021
[
@@ -1090,7 +1090,7 @@
10901090
},
10911091
"textMode": "value"
10921092
},
1093-
"pluginVersion": "8.5.6",
1093+
"pluginVersion": "8.5.15",
10941094
"targets": [
10951095
{
10961096
"datasource": "TeslaMate",
@@ -1138,7 +1138,7 @@
11381138
"content": "# Totals",
11391139
"mode": "markdown"
11401140
},
1141-
"pluginVersion": "8.5.6",
1141+
"pluginVersion": "8.5.15",
11421142
"targets": [
11431143
{
11441144
"datasource": "TeslaMate",
@@ -1222,7 +1222,7 @@
12221222
},
12231223
"textMode": "value"
12241224
},
1225-
"pluginVersion": "8.5.6",
1225+
"pluginVersion": "8.5.15",
12261226
"targets": [
12271227
{
12281228
"datasource": "TeslaMate",
@@ -1329,7 +1329,7 @@
13291329
},
13301330
"textMode": "value"
13311331
},
1332-
"pluginVersion": "8.5.6",
1332+
"pluginVersion": "8.5.15",
13331333
"targets": [
13341334
{
13351335
"datasource": "TeslaMate",
@@ -1411,7 +1411,7 @@
14111411
},
14121412
"textMode": "value"
14131413
},
1414-
"pluginVersion": "8.5.6",
1414+
"pluginVersion": "8.5.15",
14151415
"targets": [
14161416
{
14171417
"datasource": "TeslaMate",
@@ -1495,7 +1495,7 @@
14951495
"text": {},
14961496
"textMode": "value"
14971497
},
1498-
"pluginVersion": "8.5.6",
1498+
"pluginVersion": "8.5.15",
14991499
"targets": [
15001500
{
15011501
"datasource": "TeslaMate",
@@ -1578,7 +1578,7 @@
15781578
},
15791579
"textMode": "value"
15801580
},
1581-
"pluginVersion": "8.5.6",
1581+
"pluginVersion": "8.5.15",
15821582
"targets": [
15831583
{
15841584
"datasource": "TeslaMate",
@@ -1789,7 +1789,7 @@
17891789
},
17901790
"textMode": "auto"
17911791
},
1792-
"pluginVersion": "8.5.6",
1792+
"pluginVersion": "8.5.15",
17931793
"targets": [
17941794
{
17951795
"datasource": "TeslaMate",
@@ -1868,7 +1868,7 @@
18681868
},
18691869
"textMode": "auto"
18701870
},
1871-
"pluginVersion": "8.5.6",
1871+
"pluginVersion": "8.5.15",
18721872
"targets": [
18731873
{
18741874
"datasource": "TeslaMate",
@@ -1951,15 +1951,15 @@
19511951
},
19521952
"textMode": "value"
19531953
},
1954-
"pluginVersion": "8.5.6",
1954+
"pluginVersion": "8.5.15",
19551955
"targets": [
19561956
{
19571957
"datasource": "TeslaMate",
19581958
"format": "table",
19591959
"group": [],
19601960
"metricColumn": "none",
19611961
"rawQuery": true,
1962-
"rawSql": "WITH data AS (\n\tSELECT c.charging_process_id \n\tFROM charges c\n\tLEFT JOIN charging_processes cp ON cp.id = c.charging_process_id\n\tLEFT JOIN addresses addr ON addr.id = cp.address_id\n\tLEFT JOIN geofences geo ON geo.id = geofence_id\n\tWHERE \n\t\tc.fast_charger_present IS true\n\t\tAND c.charger_voltage = 2\n\t\tAND cp.car_id = $car_id\n\t\tAND (addr.name LIKE '%Supercharger%' OR geo.name LIKE '%Supercharger%')\n\tGROUP BY 1\n)\nSELECT\n\tsum(cp.cost) as total\nFROM\n\tcharging_processes cp, data\nWHERE\n cp.cost IS NOT NULL\n AND cp.id IN (data.charging_process_id);",
1962+
"rawSql": "WITH data AS (\n\tSELECT c.charging_process_id \n\tFROM charges c\n\tLEFT JOIN charging_processes cp ON cp.id = c.charging_process_id\n\tLEFT JOIN addresses addr ON addr.id = cp.address_id\n\tLEFT JOIN geofences geo ON geo.id = geofence_id\n\tWHERE \n\t\tc.fast_charger_present IS true\n\t\tAND c.charger_voltage = 2\n\t\tAND cp.car_id = $car_id\n\t\tAND (addr.name ILIKE '%supercharger%' OR geo.name ILIKE '%supercharger%')\n\tGROUP BY 1\n)\nSELECT\n\tsum(cp.cost) as total\nFROM\n\tcharging_processes cp, data\nWHERE\n cp.cost IS NOT NULL\n AND cp.id IN (data.charging_process_id);",
19631963
"refId": "A",
19641964
"select": [
19651965
[
@@ -2034,15 +2034,15 @@
20342034
},
20352035
"textMode": "value"
20362036
},
2037-
"pluginVersion": "8.5.6",
2037+
"pluginVersion": "8.5.15",
20382038
"targets": [
20392039
{
20402040
"datasource": "TeslaMate",
20412041
"format": "table",
20422042
"group": [],
20432043
"metricColumn": "none",
20442044
"rawQuery": true,
2045-
"rawSql": "WITH data AS (\n\tSELECT c.charging_process_id \n\tFROM charges c\n\tLEFT JOIN charging_processes cp ON cp.id = c.charging_process_id\n\tLEFT JOIN addresses addr ON addr.id = cp.address_id\n\tLEFT JOIN geofences geo ON geo.id = geofence_id\n\tWHERE \n\t\tc.fast_charger_present IS true\n\t\tAND c.charger_voltage = 2\n\t\tAND cp.car_id = $car_id\n\t\tAND CASE \n\t\t\tWHEN (cp.geofence_id IS NOT NULL) THEN (addr.name NOT LIKE '%Supercharger%' AND geo.name NOT LIKE '%Supercharger%')\n\t\t\tELSE addr.name NOT LIKE '%Supercharger%'\n\t\tEND\n\tGROUP BY 1\n)\nSELECT\n\tsum(cp.cost) as total\nFROM\n\tcharging_processes cp, data\nWHERE\n cp.cost IS NOT NULL\n AND cp.id IN (data.charging_process_id);",
2045+
"rawSql": "WITH data AS (\n\tSELECT c.charging_process_id \n\tFROM charges c\n\tLEFT JOIN charging_processes cp ON cp.id = c.charging_process_id\n\tLEFT JOIN addresses addr ON addr.id = cp.address_id\n\tLEFT JOIN geofences geo ON geo.id = geofence_id\n\tWHERE \n\t\tc.fast_charger_present IS true\n\t\tAND c.charger_voltage = 2\n\t\tAND cp.car_id = $car_id\n\t\tAND CASE \n\t\t\tWHEN (cp.geofence_id IS NOT NULL) THEN (addr.name NOT ILIKE '%supercharger%' AND geo.name NOT ILIKE '%supercharger%')\n\t\t\tELSE addr.name NOT ILIKE '%supercharger%'\n\t\tEND\n\tGROUP BY 1\n)\nSELECT\n\tsum(cp.cost) as total\nFROM\n\tcharging_processes cp, data\nWHERE\n cp.cost IS NOT NULL\n AND cp.id IN (data.charging_process_id);",
20462046
"refId": "A",
20472047
"select": [
20482048
[
@@ -2117,7 +2117,7 @@
21172117
},
21182118
"textMode": "value"
21192119
},
2120-
"pluginVersion": "8.5.6",
2120+
"pluginVersion": "8.5.15",
21212121
"targets": [
21222122
{
21232123
"datasource": "TeslaMate",
@@ -2654,7 +2654,7 @@
26542654
}
26552655
]
26562656
},
2657-
"pluginVersion": "8.5.6",
2657+
"pluginVersion": "8.5.15",
26582658
"repeatDirection": "h",
26592659
"targets": [
26602660
{
@@ -3026,6 +3026,6 @@
30263026
"timezone": "browser",
30273027
"title": "Custom - Charging Costs Stats",
30283028
"uid": "LdwdLXt4z",
3029-
"version": 5,
3029+
"version": 6,
30303030
"weekStart": ""
3031-
}
3031+
}

dashboards/charging-curves.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"type": "grafana",
66
"id": "grafana",
77
"name": "Grafana",
8-
"version": "8.5.6"
8+
"version": "8.5.15"
99
},
1010
{
1111
"type": "panel",
@@ -44,7 +44,7 @@
4444
"fiscalYearStartMonth": 0,
4545
"graphTooltip": 1,
4646
"id": null,
47-
"iteration": 1673289982668,
47+
"iteration": 1673621413861,
4848
"links": [
4949
{
5050
"icon": "dashboard",
@@ -216,7 +216,7 @@
216216
"hide": false,
217217
"metricColumn": "none",
218218
"rawQuery": true,
219-
"rawSql": "SELECT\r\n c.battery_level as \"SOC [%]\",\r\n round(avg(c.charger_power), 0) as \"Power [kW]\",\r\n c.charging_process_id as \"charging_process_id\",\r\n COALESCE(g.name, a.name) || ' ' || to_char(c.date, 'YYYY-MM-dd') as \"Charge\"\r\nFROM\r\n charges c\r\nJOIN charging_processes p ON p.id = c.charging_process_id \r\nJOIN addresses a ON a.id = p.address_id\r\nLEFT JOIN geofences g ON g.id = p.geofence_id\r\nWHERE\r\n $__timeFilter(date)\r\n AND p.car_id = $car_id\r\n AND charger_power > 0\r\n AND c.fast_charger_present\r\n AND (a.display_name LIKE '%Supercharger%' OR a.name LIKE '%Supercharger%')\r\nGROUP BY c.battery_level, c.charging_process_id, a.name, g.name, to_char(c.date, 'YYYY-MM-dd')",
219+
"rawSql": "SELECT\r\n c.battery_level as \"SOC [%]\",\r\n round(avg(c.charger_power), 0) as \"Power [kW]\",\r\n c.charging_process_id as \"charging_process_id\",\r\n COALESCE(g.name, a.name) || ' ' || to_char(c.date, 'YYYY-MM-dd') as \"Charge\"\r\nFROM\r\n charges c\r\nJOIN charging_processes p ON p.id = c.charging_process_id \r\nJOIN addresses a ON a.id = p.address_id\r\nLEFT JOIN geofences g ON g.id = p.geofence_id\r\nWHERE\r\n $__timeFilter(date)\r\n AND p.car_id = $car_id\r\n AND charger_power > 0\r\n AND c.fast_charger_present\r\n AND (a.display_name ILIKE '%supercharger%' OR a.name ILIKE '%supercharger%')\r\nGROUP BY c.battery_level, c.charging_process_id, a.name, g.name, to_char(c.date, 'YYYY-MM-dd')",
220220
"refId": "A",
221221
"select": [
222222
[
@@ -244,7 +244,7 @@
244244
"hide": false,
245245
"metricColumn": "none",
246246
"rawQuery": true,
247-
"rawSql": "SELECT\n c.battery_level as \"B - SOC [%]\",\n PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY charger_power) as \"B - Avg Power [kW]\"\nFROM\n charges c\nJOIN charging_processes p ON p.id = c.charging_process_id \nJOIN addresses a ON a.id = p.address_id\nWHERE\n $__timeFilter(date)\n AND p.car_id = $car_id\n AND charger_power > 0\n AND c.fast_charger_present\n AND (a.display_name LIKE '%Supercharger%' OR a.name LIKE '%Supercharger%')\nGROUP BY battery_level",
247+
"rawSql": "SELECT\n c.battery_level as \"B - SOC [%]\",\n PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY charger_power) as \"B - Avg Power [kW]\"\nFROM\n charges c\nJOIN charging_processes p ON p.id = c.charging_process_id \nJOIN addresses a ON a.id = p.address_id\nWHERE\n $__timeFilter(date)\n AND p.car_id = $car_id\n AND charger_power > 0\n AND c.fast_charger_present\n AND (a.display_name ILIKE '%supercharger%' OR a.name ILIKE '%supercharger%')\nGROUP BY battery_level",
248248
"refId": "B",
249249
"select": [
250250
[
@@ -407,7 +407,7 @@
407407
"hide": false,
408408
"metricColumn": "none",
409409
"rawQuery": true,
410-
"rawSql": "SELECT\r\n c.battery_level as \"SOC [%]\",\r\n round(avg(c.charger_power), 0) as \"Power [kW]\",\r\n c.charging_process_id as \"charging_process_id\",\r\n COALESCE(g.name, a.name) || ' ' || to_char(c.date, 'YYYY-MM-dd') as \"Charge\"\r\nFROM\r\n charges c\r\nJOIN charging_processes p ON p.id = c.charging_process_id \r\nJOIN addresses a ON a.id = p.address_id\r\nLEFT JOIN geofences g ON g.id = p.geofence_id\r\nWHERE\r\n $__timeFilter(date)\r\n AND p.car_id = $car_id\r\n AND charger_power > 0\r\n AND c.fast_charger_present\r\n AND NOT (a.display_name LIKE '%Supercharger%' OR a.name LIKE '%Supercharger%')\r\nGROUP BY c.battery_level, c.charging_process_id, a.name, g.name, to_char(c.date, 'YYYY-MM-dd')",
410+
"rawSql": "SELECT\r\n c.battery_level as \"SOC [%]\",\r\n round(avg(c.charger_power), 0) as \"Power [kW]\",\r\n c.charging_process_id as \"charging_process_id\",\r\n COALESCE(g.name, a.name) || ' ' || to_char(c.date, 'YYYY-MM-dd') as \"Charge\"\r\nFROM\r\n charges c\r\nJOIN charging_processes p ON p.id = c.charging_process_id \r\nJOIN addresses a ON a.id = p.address_id\r\nLEFT JOIN geofences g ON g.id = p.geofence_id\r\nWHERE\r\n $__timeFilter(date)\r\n AND p.car_id = $car_id\r\n AND charger_power > 0\r\n AND c.fast_charger_present\r\n AND CASE \r\n\t\t\tWHEN (p.geofence_id IS NOT NULL) THEN (a.name NOT ILIKE '%supercharger%' AND g.name NOT ILIKE '%supercharger%')\r\n\t\t\tELSE a.name NOT ILIKE '%supercharger%'\r\n\t\tEND\r\nGROUP BY c.battery_level, c.charging_process_id, a.name, g.name, to_char(c.date, 'YYYY-MM-dd')",
411411
"refId": "A",
412412
"select": [
413413
[
@@ -435,7 +435,7 @@
435435
"hide": false,
436436
"metricColumn": "none",
437437
"rawQuery": true,
438-
"rawSql": "SELECT\n c.battery_level as \"B - SOC [%]\",\n PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY charger_power) as \"B - Avg Power [kW]\"\nFROM\n charges c\nJOIN charging_processes p ON p.id = c.charging_process_id \nJOIN addresses a ON a.id = p.address_id\nWHERE\n $__timeFilter(date)\n AND p.car_id = $car_id\n AND charger_power > 0\n AND c.fast_charger_present\n AND NOT (a.display_name LIKE '%Supercharger%' OR a.name LIKE '%Supercharger%')\nGROUP BY battery_level",
438+
"rawSql": "SELECT\n c.battery_level as \"B - SOC [%]\",\n PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY charger_power) as \"B - Avg Power [kW]\"\nFROM\n charges c\nJOIN charging_processes p ON p.id = c.charging_process_id \nJOIN addresses a ON a.id = p.address_id\nLEFT JOIN geofences g ON g.id = p.geofence_id\nWHERE\n $__timeFilter(date)\n AND p.car_id = $car_id\n AND charger_power > 0\n AND c.fast_charger_present\n AND CASE \n\t\t\tWHEN (p.geofence_id IS NOT NULL) THEN (a.name NOT ILIKE '%supercharger%' AND g.name NOT ILIKE '%supercharger%')\n\t\t\tELSE a.name NOT ILIKE '%supercharger%'\n\t\tEND\nGROUP BY battery_level",
439439
"refId": "B",
440440
"select": [
441441
[
@@ -566,6 +566,6 @@
566566
"timezone": "",
567567
"title": "Custom - Charging Curves",
568568
"uid": "bdPvluK4z",
569-
"version": 1,
569+
"version": 6,
570570
"weekStart": ""
571571
}

0 commit comments

Comments
 (0)