irie 0.0.16__py3-none-any.whl → 0.0.18__py3-none-any.whl
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.
Potentially problematic release.
This version of irie might be problematic. Click here for more details.
- irie/apps/events/views_events.py +4 -6
- irie/apps/inventory/filters.py +37 -5
- irie/apps/inventory/models.py +14 -1
- irie/apps/inventory/sitemaps.py +19 -0
- irie/apps/inventory/views.py +2 -7
- irie/apps/prediction/forms.py +4 -1
- irie/apps/prediction/predictor.py +5 -274
- irie/apps/prediction/runners/__init__.py +17 -15
- irie/apps/prediction/runners/hazus.py +271 -182
- irie/apps/prediction/runners/opensees/__init__.py +88 -11
- irie/apps/prediction/runners/ssid.py +168 -9
- irie/apps/prediction/urls.py +3 -4
- irie/apps/prediction/views.py +8 -85
- irie/apps/sitemaps.py +14 -0
- irie/apps/static/assets/content_images/brace/mdof.svg +1 -0
- irie/apps/static/assets/content_images/brace/opensees.jpg +0 -0
- irie/apps/static/assets/content_images/brace/sdof.svg +327 -0
- irie/apps/static/assets/content_images/brace/sees.png +0 -0
- irie/apps/templates/accounts/login.html +50 -55
- irie/apps/templates/inventory/asset-profile.html +0 -15
- irie/apps/templates/inventory/asset-table.html +38 -15
- irie/apps/templates/prediction/asset-predictors.html +38 -5
- irie/apps/templates/prediction/new-runner.html +1 -1
- irie/apps/templates/prediction/predictor-profile.html +11 -0
- irie/apps/templates/site/index.html +5 -7
- irie/init/__main__.py +8 -5
- irie/init/data/cgs-stations.json +2967 -0
- irie/init/getCGSData.py +9 -4
- irie/init/management/commands/init_assets.py +1 -1
- irie/init/management/commands/init_cesmd.py +25 -0
- {irie-0.0.16.dist-info → irie-0.0.18.dist-info}/METADATA +1 -1
- {irie-0.0.16.dist-info → irie-0.0.18.dist-info}/RECORD +35 -27
- {irie-0.0.16.dist-info → irie-0.0.18.dist-info}/WHEEL +0 -0
- {irie-0.0.16.dist-info → irie-0.0.18.dist-info}/entry_points.txt +0 -0
- {irie-0.0.16.dist-info → irie-0.0.18.dist-info}/top_level.txt +0 -0
|
@@ -11,7 +11,7 @@ import zipfile
|
|
|
11
11
|
from pathlib import Path
|
|
12
12
|
import contextlib
|
|
13
13
|
|
|
14
|
-
from irie.apps.prediction.runners import (Runner,
|
|
14
|
+
from irie.apps.prediction.runners import (Runner, RunID, classproperty)
|
|
15
15
|
|
|
16
16
|
from .utilities import read_model
|
|
17
17
|
from .metrics import (
|
|
@@ -29,7 +29,6 @@ OPENSEES = [
|
|
|
29
29
|
@contextlib.contextmanager
|
|
30
30
|
def new_cd(x):
|
|
31
31
|
d = os.getcwd()
|
|
32
|
-
|
|
33
32
|
# This could raise an exception, but it's probably
|
|
34
33
|
# best to let it propagate and let the caller
|
|
35
34
|
# deal with it, since they requested x
|
|
@@ -52,19 +51,28 @@ class OpenSeesRunner(Runner):
|
|
|
52
51
|
|
|
53
52
|
|
|
54
53
|
@classmethod
|
|
55
|
-
def create(cls, asset, request
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
54
|
+
def create(cls, asset, request):
|
|
55
|
+
from irie.apps.prediction.models import PredictorModel
|
|
56
|
+
predictor = PredictorModel()
|
|
57
|
+
data = json.loads(request.body)
|
|
58
|
+
# TODO
|
|
59
|
+
data.pop("file")
|
|
60
|
+
uploaded_file = request.FILES.get('config_file', None)
|
|
61
|
+
print(uploaded_file)
|
|
62
|
+
if uploaded_file:
|
|
63
|
+
|
|
64
|
+
with open(uploaded_file.name, 'wb+') as destination:
|
|
65
|
+
for chunk in uploaded_file.chunks():
|
|
66
|
+
destination.write(chunk)
|
|
67
|
+
|
|
68
|
+
# predictor.config_file = uploaded_file # data.pop("file")
|
|
69
|
+
predictor.name = data.pop("name")
|
|
70
|
+
predictor.config = data
|
|
71
|
+
predictor.asset = asset
|
|
62
72
|
predictor.protocol = "IRIE_PREDICTOR_T4"
|
|
63
73
|
predictor.active = True
|
|
64
|
-
# predictor.metrics = self.getMetricList()
|
|
65
74
|
return predictor
|
|
66
75
|
|
|
67
|
-
|
|
68
76
|
@classproperty
|
|
69
77
|
def schema(cls):
|
|
70
78
|
from . import schemas
|
|
@@ -491,3 +499,72 @@ class OpenSeesRunner(Runner):
|
|
|
491
499
|
return {}
|
|
492
500
|
return {}
|
|
493
501
|
|
|
502
|
+
|
|
503
|
+
import subprocess
|
|
504
|
+
class Event: pass
|
|
505
|
+
|
|
506
|
+
class PredictorType1(Runner):
|
|
507
|
+
@property
|
|
508
|
+
def platform(self):
|
|
509
|
+
return self.conf.get("platform", "")
|
|
510
|
+
|
|
511
|
+
@classmethod
|
|
512
|
+
def create(cls, asset, request):
|
|
513
|
+
from irie.apps.prediction.models import PredictorModel
|
|
514
|
+
predictor = PredictorModel()
|
|
515
|
+
data = json.loads(request.data.get("json"))
|
|
516
|
+
predictor.entry_point = [
|
|
517
|
+
sys.executable, "-m", "opensees"
|
|
518
|
+
]
|
|
519
|
+
data["metrics"] = []
|
|
520
|
+
|
|
521
|
+
predictor.name = data.pop("name")
|
|
522
|
+
predictor.config = data
|
|
523
|
+
predictor.asset = asset
|
|
524
|
+
predictor.protocol = "IRIE_PREDICTOR_T1"
|
|
525
|
+
predictor.active = False
|
|
526
|
+
return predictor
|
|
527
|
+
|
|
528
|
+
|
|
529
|
+
@classproperty
|
|
530
|
+
def schema(cls):
|
|
531
|
+
from irie.apps.prediction.runners.opensees import schemas
|
|
532
|
+
return {
|
|
533
|
+
"title": "Structural Model",
|
|
534
|
+
"options": {"disable_collaps": True},
|
|
535
|
+
"schema": "http://json-schema.org/draft-04/schema#",
|
|
536
|
+
"type": "object",
|
|
537
|
+
"properties": {
|
|
538
|
+
"platform": {
|
|
539
|
+
"type": "string",
|
|
540
|
+
"title": "Platform",
|
|
541
|
+
"enum": ["OpenSees","CSiBridge"]
|
|
542
|
+
},
|
|
543
|
+
"model": schemas.load("hwd_conf.schema.json"),
|
|
544
|
+
"analysis": schemas.load("hwd_analysis.schema.json"),
|
|
545
|
+
}
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
def newPrediction(self, event: Event) -> RunID:
|
|
549
|
+
self.event = event
|
|
550
|
+
event_file = Path(event.event_file.path).resolve()
|
|
551
|
+
command = [*self.entry_point, "new", event_file]
|
|
552
|
+
run_id = subprocess.check_output(command).decode().strip()
|
|
553
|
+
return RunID(int(run_id))
|
|
554
|
+
|
|
555
|
+
def runPrediction(self, run_id: RunID):
|
|
556
|
+
command = [*self.entry_point, "run", str(run_id)]
|
|
557
|
+
|
|
558
|
+
if "scale" in self.event.upload_data:
|
|
559
|
+
command.extend(["--scale", str(float(self.event.upload_data["scale"]))])
|
|
560
|
+
print(":: Running ", command, file=sys.stderr)
|
|
561
|
+
subprocess.check_output(command)
|
|
562
|
+
|
|
563
|
+
print(f":: Model {self.name} returned", file=sys.stderr)
|
|
564
|
+
return
|
|
565
|
+
|
|
566
|
+
def getMetricData(self, run, metric):
|
|
567
|
+
try:
|
|
568
|
+
return json.loads(subprocess.check_output([*self.entry_point, "get", str(run), metric]).decode())
|
|
569
|
+
except json.decoder.JSONDecodeError:
|
|
570
|
+
return {}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
from irie.apps.events.models import EventRecord
|
|
2
|
+
from irie.apps.prediction.runners import Runner, RunID
|
|
3
|
+
from irie.apps.prediction.models import PredictorModel
|
|
4
|
+
|
|
1
5
|
from pathlib import Path
|
|
2
6
|
import json
|
|
3
7
|
import io
|
|
@@ -12,6 +16,7 @@ from mdof import transform
|
|
|
12
16
|
from scipy.signal import find_peaks
|
|
13
17
|
from mdof.utilities import Config, extract_channels
|
|
14
18
|
from matplotlib import colormaps
|
|
19
|
+
import subprocess
|
|
15
20
|
# try:
|
|
16
21
|
# import scienceplots
|
|
17
22
|
# plt.style.use(["science"])
|
|
@@ -22,7 +27,155 @@ N_PEAKS = 5 # number of "significant" peaks per record
|
|
|
22
27
|
MISSING_CHANNEL_LIMIT = 3 # number of missing output channels allowed before skipping event
|
|
23
28
|
MAX_ACCEL = 3.0
|
|
24
29
|
|
|
25
|
-
|
|
30
|
+
|
|
31
|
+
class SystemIdRunner(Runner):
|
|
32
|
+
platform = "mdof"
|
|
33
|
+
|
|
34
|
+
schema = {
|
|
35
|
+
"title": "System ID",
|
|
36
|
+
"name": "P2",
|
|
37
|
+
"type": "object",
|
|
38
|
+
"required": [
|
|
39
|
+
"name",
|
|
40
|
+
"decimation",
|
|
41
|
+
"method",
|
|
42
|
+
"channels"
|
|
43
|
+
],
|
|
44
|
+
"properties": {
|
|
45
|
+
"name": {
|
|
46
|
+
"type": "string",
|
|
47
|
+
"title": "Name",
|
|
48
|
+
"description": "Predictor name",
|
|
49
|
+
"minLength": 2,
|
|
50
|
+
# "default": "S1"
|
|
51
|
+
},
|
|
52
|
+
"method": {
|
|
53
|
+
"type": "string",
|
|
54
|
+
"title": "Method",
|
|
55
|
+
"enum": ["Fourier Spectrum","Response Spectrum","SRIM","OKID"]
|
|
56
|
+
},
|
|
57
|
+
"decimation": {
|
|
58
|
+
"type": "integer",
|
|
59
|
+
"title": "Decimation",
|
|
60
|
+
"default": 1,
|
|
61
|
+
"minimum": 1,
|
|
62
|
+
"maximum": 8
|
|
63
|
+
},
|
|
64
|
+
"order": {
|
|
65
|
+
"type": "integer",
|
|
66
|
+
"title": "Model Order",
|
|
67
|
+
"default": 8,
|
|
68
|
+
"minimum": 2,
|
|
69
|
+
"maximum": 64,
|
|
70
|
+
"options": {"dependencies": {"method": ["SRIM","OKID"]}}
|
|
71
|
+
},
|
|
72
|
+
"horizon": {
|
|
73
|
+
"type": "integer",
|
|
74
|
+
"title": "Prediction Horizon",
|
|
75
|
+
"default": 100,
|
|
76
|
+
"minimum": 50,
|
|
77
|
+
"maximum": 500,
|
|
78
|
+
"options": {"dependencies": {"method": ["SRIM"]}}
|
|
79
|
+
},
|
|
80
|
+
"period_band": {
|
|
81
|
+
"type": "string",
|
|
82
|
+
"title": "Period Band",
|
|
83
|
+
"default": "[0.1,2.3]",
|
|
84
|
+
"options": {"dependencies": {"method": ["Fourier Spectrum"]}},
|
|
85
|
+
"description": "[0.1,2.3] if interested in periods between 0.1 seconds and 2.3 seconds"
|
|
86
|
+
},
|
|
87
|
+
"damping": {
|
|
88
|
+
"type": "float",
|
|
89
|
+
"title": "Damping",
|
|
90
|
+
"default": 0.02,
|
|
91
|
+
"options": {"dependencies": {"method": ["Response Spectrum"]}},
|
|
92
|
+
"description": "assumed damping ratio"
|
|
93
|
+
},
|
|
94
|
+
"channels": {
|
|
95
|
+
"type": "array",
|
|
96
|
+
"format": "table",
|
|
97
|
+
"title": "Channels",
|
|
98
|
+
"uniqueItems": True,
|
|
99
|
+
"items": {
|
|
100
|
+
"title": "Acceleration",
|
|
101
|
+
"type": "object",
|
|
102
|
+
"properties": {
|
|
103
|
+
"type": {
|
|
104
|
+
"type": "string",
|
|
105
|
+
"enum": ["output","input"],
|
|
106
|
+
"default": "output"
|
|
107
|
+
},
|
|
108
|
+
"id": {"type": "integer", "description": "Number identifying signal channel"}
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
"default": [{"type": "output", "id": 1}]
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
def render(self):
|
|
117
|
+
try:
|
|
118
|
+
return make_mountains(self.asset, self.conf)
|
|
119
|
+
except:
|
|
120
|
+
return None
|
|
121
|
+
|
|
122
|
+
@classmethod
|
|
123
|
+
def create(cls, asset, request):
|
|
124
|
+
predictor = PredictorModel()
|
|
125
|
+
data = json.loads(request.body)
|
|
126
|
+
method = {
|
|
127
|
+
"Fourier Spectrum": "fourier",
|
|
128
|
+
"Response Spectrum": "response",
|
|
129
|
+
"FDD": "fdd",
|
|
130
|
+
"OKID": "okid-era",
|
|
131
|
+
"SRIM": "srim"
|
|
132
|
+
}[data.pop("method")]
|
|
133
|
+
|
|
134
|
+
predictor.entry_point = [
|
|
135
|
+
sys.executable, "-m", "mdof", method
|
|
136
|
+
]
|
|
137
|
+
data["outputs"] = [i["id"] for i in data["channels"] if i["type"] == "output"]
|
|
138
|
+
data["inputs"] = [i["id"] for i in data["channels"] if i["type"] == "input"]
|
|
139
|
+
data["threads"] = 4
|
|
140
|
+
data["metrics"] = ["SPECTRAL_SHIFT_IDENTIFICATION"]
|
|
141
|
+
del data["channels"]
|
|
142
|
+
|
|
143
|
+
predictor.name = data.pop("name")
|
|
144
|
+
predictor.config = data
|
|
145
|
+
predictor.asset = asset
|
|
146
|
+
predictor.protocol = "IRIE_PREDICTOR_T2"
|
|
147
|
+
predictor.active = True
|
|
148
|
+
return predictor
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
def newPrediction(self, event):
|
|
152
|
+
self.event = event
|
|
153
|
+
return RunID(1)
|
|
154
|
+
|
|
155
|
+
def runPrediction(self, run_id: RunID) -> bool:
|
|
156
|
+
event_file = Path(self.event.event_file.path).resolve()
|
|
157
|
+
command = [*self.entry_point,
|
|
158
|
+
"--config",
|
|
159
|
+
json.dumps(self.conf),
|
|
160
|
+
event_file]
|
|
161
|
+
|
|
162
|
+
if False:
|
|
163
|
+
command = [*self.entry_point,
|
|
164
|
+
event_file,
|
|
165
|
+
*map(str, self.conf.get("argv", []))]
|
|
166
|
+
try:
|
|
167
|
+
self.metric_data = json.loads(
|
|
168
|
+
subprocess.check_output(command).decode()
|
|
169
|
+
)
|
|
170
|
+
return True
|
|
171
|
+
except Exception as e:
|
|
172
|
+
self.metric_data = {"error": str(e)}
|
|
173
|
+
return False
|
|
174
|
+
|
|
175
|
+
def getMetricData(self, run, metric):
|
|
176
|
+
if not hasattr(self, "metric_data"):
|
|
177
|
+
raise Exception(f"Error {self.name}({id(self)}), {run}")
|
|
178
|
+
return self.metric_data
|
|
26
179
|
|
|
27
180
|
|
|
28
181
|
|
|
@@ -186,12 +339,14 @@ def _load_events(asset, output_channels):
|
|
|
186
339
|
return {k:v for k,v in events}
|
|
187
340
|
|
|
188
341
|
|
|
189
|
-
def
|
|
342
|
+
def _get_spectra(event, conf, cmap):
|
|
190
343
|
"""
|
|
191
344
|
Get coordinates (periods, amplitudes) of spectra for an event, and return them along
|
|
192
345
|
with the maximum period of the N_PEAKS tallest peaks, as well as plotting options
|
|
193
346
|
such as color and alpha.
|
|
194
347
|
"""
|
|
348
|
+
period_band = conf.period_band
|
|
349
|
+
|
|
195
350
|
n_outputs = event['outputs'].shape[0]
|
|
196
351
|
frequencies,_,S = transform.fdd(outputs=event['outputs'], step=event['dt']) # Full frequency spectrum
|
|
197
352
|
periods = 1/frequencies
|
|
@@ -309,14 +464,18 @@ def _plot_mountains(spectra, accellim=None):
|
|
|
309
464
|
return fig
|
|
310
465
|
|
|
311
466
|
|
|
312
|
-
def make_mountains(asset, output_channels=None):
|
|
467
|
+
def make_mountains(asset, conf=None, output_channels=None):
|
|
313
468
|
|
|
314
469
|
cmap = colormaps['plasma']
|
|
315
|
-
conf
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
470
|
+
if conf is None:
|
|
471
|
+
conf = Config()
|
|
472
|
+
conf.period_band = (0.1,3)
|
|
473
|
+
conf.damping = 0.02
|
|
474
|
+
conf.ss_decimation = 8
|
|
475
|
+
conf.order = 40
|
|
476
|
+
conf.method = "fdd"
|
|
477
|
+
else:
|
|
478
|
+
conf = Config(**conf)
|
|
320
479
|
|
|
321
480
|
if output_channels is None:
|
|
322
481
|
if not asset.bridge_sensors:
|
|
@@ -333,7 +492,7 @@ def make_mountains(asset, output_channels=None):
|
|
|
333
492
|
print(f"Missing {n_expected_outputs-n_parsed_channels} output channels; skipping event") # Missing too many channels
|
|
334
493
|
continue
|
|
335
494
|
|
|
336
|
-
spectra[filename] =
|
|
495
|
+
spectra[filename] = _get_spectra(event, conf, cmap) # {'spec_coords':spec_coords, 'max_peak_period':max_peak_period, 'plot_conf':plot_conf}
|
|
337
496
|
|
|
338
497
|
|
|
339
498
|
# if station == 'CE89494':
|
irie/apps/prediction/urls.py
CHANGED
|
@@ -12,8 +12,7 @@ from .views import new_prediction, asset_predictors, predictor_profile, predicto
|
|
|
12
12
|
|
|
13
13
|
urlpatterns = [
|
|
14
14
|
re_path("^inventory/[0-9 A-Z-]*/predictors/new", new_prediction),
|
|
15
|
-
re_path("^inventory/[0-9 A-Z-]
|
|
16
|
-
re_path("^inventory/(?P<calid>[0-9 A-Z-]*)/predictors/create
|
|
17
|
-
re_path("^inventory/[0-9 A-Z-]*/predictors/", asset_predictors, name="asset_predictors")
|
|
18
|
-
re_path("^inventory/[0-9 A-Z-]*/predictors/", asset_predictors),
|
|
15
|
+
re_path("^inventory/(?P<calid>[0-9 A-Z-]*)/predictors/(?P<preid>[0-9 A-Z-]{1,})", predictor_profile),
|
|
16
|
+
re_path("^inventory/(?P<calid>[0-9 A-Z-]*)/predictors/create", predictor_upload),
|
|
17
|
+
re_path("^inventory/[0-9 A-Z-]*/predictors/", asset_predictors, name="asset_predictors")
|
|
19
18
|
]
|
irie/apps/prediction/views.py
CHANGED
|
@@ -19,9 +19,6 @@ from django.core.exceptions import ObjectDoesNotExist
|
|
|
19
19
|
|
|
20
20
|
from django.shortcuts import render
|
|
21
21
|
|
|
22
|
-
from rest_framework.decorators import api_view, permission_classes
|
|
23
|
-
from rest_framework.permissions import IsAuthenticated
|
|
24
|
-
|
|
25
22
|
from irie.apps.site.view_utils import raise404
|
|
26
23
|
from irie.apps.inventory.models import Asset
|
|
27
24
|
from irie.apps.prediction.predictor import PREDICTOR_TYPES, OpenSeesRunner
|
|
@@ -38,41 +35,7 @@ def new_prediction(request):
|
|
|
38
35
|
return HttpResponse(html_template.render(context, request))
|
|
39
36
|
|
|
40
37
|
|
|
41
|
-
|
|
42
|
-
@api_view(["GET", "POST", "PUT"])
|
|
43
|
-
@permission_classes([IsAuthenticated])
|
|
44
|
-
def predictor_api(request):
|
|
45
|
-
|
|
46
|
-
context = {"segment": "assets"}
|
|
47
|
-
|
|
48
|
-
context["predictor_types"] = list(reversed([
|
|
49
|
-
{"schema": json.dumps(cls.schema),
|
|
50
|
-
"name": cls.__name__,
|
|
51
|
-
"title": cls.schema["title"]}
|
|
52
|
-
for cls in set(PREDICTOR_TYPES.values())
|
|
53
|
-
]))
|
|
54
|
-
|
|
55
|
-
calid = request.path.split("/")[-3]
|
|
56
|
-
|
|
57
|
-
try:
|
|
58
|
-
context["asset"] = Asset.objects.get(calid=calid)
|
|
59
|
-
|
|
60
|
-
except:
|
|
61
|
-
return HttpResponse(
|
|
62
|
-
loader.get_template("site/page-404-sidebar.html").render(context, request)
|
|
63
|
-
)
|
|
64
|
-
|
|
65
|
-
if request.method == "POST":
|
|
66
|
-
print(request.POST)
|
|
67
|
-
PREDICTOR_TYPES["IRIE_PREDICTOR_T2"].create(context["asset"],request).save()
|
|
68
|
-
|
|
69
|
-
html_template = loader.get_template("prediction/asset-predictors.html")
|
|
70
|
-
return HttpResponse(html_template.render(context, request))
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
@api_view(["GET", "POST", "PUT"])
|
|
74
|
-
# @login_required(login_url="/login/")
|
|
75
|
-
@permission_classes([IsAuthenticated])
|
|
38
|
+
@login_required(login_url="/login/")
|
|
76
39
|
def asset_predictors(request):
|
|
77
40
|
|
|
78
41
|
calid = request.path.split("/")[-3]
|
|
@@ -97,45 +60,17 @@ def asset_predictors(request):
|
|
|
97
60
|
loader.get_template("site/page-404-sidebar.html").render(context, request)
|
|
98
61
|
)
|
|
99
62
|
|
|
100
|
-
if request.method == "POST":
|
|
101
|
-
form = PredictorForm(request.POST, request.FILES)
|
|
102
|
-
if form.is_valid():
|
|
103
|
-
# Process the form data and uploaded file
|
|
104
|
-
# asset = form.cleaned_data['asset']
|
|
105
|
-
asset = Asset.objects.get(calid=calid)
|
|
106
|
-
uploaded_file = request.FILES['config_file']
|
|
107
|
-
|
|
108
|
-
if uploaded_file:
|
|
109
|
-
with open(uploaded_file.name, 'wb+') as destination:
|
|
110
|
-
for chunk in uploaded_file.chunks():
|
|
111
|
-
destination.write(chunk)
|
|
112
|
-
|
|
113
|
-
# Save the predictor
|
|
114
|
-
if request.POST.get("runner", None) == "IRIE_PREDICTOR_T2":
|
|
115
|
-
PREDICTOR_TYPES["IRIE_PREDICTOR_T2"].create(context["asset"],request).save()
|
|
116
|
-
else:
|
|
117
|
-
OpenSeesRunner.create(asset,None,form).save()
|
|
118
|
-
else:
|
|
119
|
-
context["form"] = PredictorForm()
|
|
120
|
-
|
|
121
63
|
html_template = loader.get_template("prediction/asset-predictors.html")
|
|
122
64
|
return HttpResponse(html_template.render(context, request))
|
|
123
65
|
|
|
124
66
|
|
|
125
67
|
@login_required(login_url="/login/")
|
|
126
|
-
def predictor_profile(request):
|
|
68
|
+
def predictor_profile(request, calid, preid):
|
|
127
69
|
|
|
128
70
|
context = {}
|
|
129
71
|
html_template = loader.get_template("prediction/predictor-profile.html")
|
|
130
72
|
context["segment"] = "inventory"
|
|
131
73
|
|
|
132
|
-
url_segs = request.path.split("/")
|
|
133
|
-
if len(url_segs) < 5:
|
|
134
|
-
return raise404(request, context)
|
|
135
|
-
else:
|
|
136
|
-
calid = url_segs[2]
|
|
137
|
-
preid = url_segs[4]
|
|
138
|
-
|
|
139
74
|
try:
|
|
140
75
|
asset = Asset.objects.get(calid=calid)
|
|
141
76
|
except Asset.DoesNotExist:
|
|
@@ -149,7 +84,6 @@ def predictor_profile(request):
|
|
|
149
84
|
context["asset"] = asset
|
|
150
85
|
context["predictor"] = PREDICTOR_TYPES[predictor.protocol](predictor)
|
|
151
86
|
|
|
152
|
-
|
|
153
87
|
try:
|
|
154
88
|
return HttpResponse(html_template.render(context, request))
|
|
155
89
|
|
|
@@ -167,29 +101,19 @@ def predictor_profile(request):
|
|
|
167
101
|
@login_required(login_url="/login/")
|
|
168
102
|
def predictor_upload(request, calid):
|
|
169
103
|
|
|
170
|
-
context = {}
|
|
171
104
|
html_template = loader.get_template("prediction/predictor-upload.html")
|
|
172
|
-
context["segment"] = "assets"
|
|
173
105
|
|
|
174
106
|
if request.method == 'POST':
|
|
175
107
|
form = PredictorForm(request.POST, request.FILES) # include request.FILES
|
|
176
|
-
if form.is_valid():
|
|
177
|
-
|
|
178
|
-
# asset = form.cleaned_data['asset']
|
|
179
|
-
asset = Asset.objects.get(calid=calid)
|
|
180
|
-
uploaded_file = request.FILES['config_file']
|
|
181
|
-
|
|
182
|
-
with open(uploaded_file.name, 'wb+') as destination:
|
|
183
|
-
for chunk in uploaded_file.chunks():
|
|
184
|
-
destination.write(chunk)
|
|
108
|
+
# if form.is_valid():
|
|
109
|
+
asset = Asset.objects.get(calid=calid)
|
|
185
110
|
|
|
186
|
-
|
|
187
|
-
|
|
111
|
+
# Save the predictor
|
|
112
|
+
predictor = PREDICTOR_TYPES[request.POST.get("runner")].create(asset, request)
|
|
113
|
+
predictor.save()
|
|
188
114
|
|
|
189
|
-
|
|
115
|
+
return HttpResponse(json.dumps({"data": {"id": predictor.id}}))
|
|
190
116
|
|
|
191
|
-
return render(request, 'prediction/predictor-upload.html',
|
|
192
|
-
context)
|
|
193
117
|
else:
|
|
194
118
|
form = PredictorForm()
|
|
195
119
|
|
|
@@ -197,7 +121,6 @@ def predictor_upload(request, calid):
|
|
|
197
121
|
try:
|
|
198
122
|
return render(request, 'prediction/predictor-upload.html', {"form": form})
|
|
199
123
|
|
|
200
|
-
|
|
201
124
|
except Exception as e:
|
|
202
125
|
if "DEBUG" in os.environ and os.environ["DEBUG"]:
|
|
203
126
|
raise e
|
irie/apps/sitemaps.py
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
from django.contrib.sitemaps import Sitemap
|
|
2
|
+
from django.urls import reverse
|
|
3
|
+
|
|
4
|
+
class IrieSitemap(Sitemap):
|
|
5
|
+
priority = 0.9
|
|
6
|
+
changefreq = 'weekly'
|
|
7
|
+
|
|
8
|
+
def items(self):
|
|
9
|
+
# Return the names of your static views
|
|
10
|
+
return ['home', 'about', 'dashboard', 'asset_table']
|
|
11
|
+
|
|
12
|
+
def location(self, item):
|
|
13
|
+
return reverse(item)
|
|
14
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg width="3952" height="1926" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" overflow="hidden"><defs><clipPath id="clip0"><rect x="273" y="266" width="3952" height="1926"/></clipPath><image width="72" height="348" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAAFcCAMAAABcAwhMAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAtUExURQ4ODg0NDQ4ODhwcHB4eHiIiIiYmJjY2Njo6OkBAQFpaWmZmZmpqaoCAgKWlpTCHJ+wAAAAPdFJOU2x0gICAgICAgICAgICAgEqfGHkAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADZSURBVHhe7d3JTQMBAARBe23uI/9wmUEWAmnEB55VAXQKfTod/yKd+7rcPX3zcH3+zfXl7cvj6/unQ+gHoRAqoU0ohEpoEwqhEtqEQqiENqEQKqFNKIRKaBMKoRLahEKohDahECqhTSiESmgTCqES2oRCqIQ2oRAqoU0ohEpoEwqhEtqEQqiENqEQKqFNKIRKaBMKoRLahEKohDahECqhTSiESmgTCqES2oRCqIQ2oRAqoU0ohEpoEwqhEtqEQqiENqEQKqFNKIRKaBMKoRLaduh8e1b8zXH+AGfYs2DwKlXZAAAAAElFTkSuQmCC" preserveAspectRatio="none" id="img1"></image><clipPath id="clip2"><rect x="0" y="0" width="120965" height="584662"/></clipPath><clipPath id="clip3"><rect x="0" y="0" width="120964" height="584661"/></clipPath><image width="700" height="400" xlink:href="data:image/png;base64,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" preserveAspectRatio="none" id="img4"></image><clipPath id="clip5"><rect x="0" y="0" width="3048000" height="1741714"/></clipPath><image width="700" height="400" xlink:href="data:image/png;base64,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" preserveAspectRatio="none" id="img6"></image><clipPath id="clip7"><rect x="0" y="0" width="3048000" height="1741714"/></clipPath></defs><g clip-path="url(#clip0)" transform="translate(-273 -266)"><rect x="1527.5" y="840.5" width="101" height="27.0002" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#595959"/><rect x="1607.5" y="856.5" width="29.0002" height="561" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#A6A6A6"/><rect x="1522.5" y="856.5" width="22" height="561" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#262626"/><rect x="1533.5" y="856.5" width="32" height="561" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#404040"/><rect x="1592.5" y="856.5" width="32" height="561" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#7F7F7F"/><rect x="1555.5" y="856.5" width="49.0001" height="561" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#595959"/><rect x="774.5" y="822.5" width="101" height="26.9998" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#595959"/><rect x="855.5" y="838.5" width="27.9998" height="561" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#A6A6A6"/><rect x="769.5" y="838.5" width="22" height="561" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#262626"/><rect x="780.5" y="838.5" width="31.9999" height="561" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#404040"/><rect x="839.5" y="838.5" width="31.9999" height="561" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#7F7F7F"/><rect x="802.5" y="838.5" width="48.9998" height="561" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#595959"/><path d="M767.5 719.5 812.397 671.167 829.5 661.5 783.178 712.733 767.5 719.5Z" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#BFBFBF" fill-rule="evenodd"/><path d="M828.952 662.5 782.5 711.5 1100.4 711.5 1142.5 662.5 828.952 662.5Z" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#E7E6E6" fill-rule="evenodd"/><path d="M1573.5 708.5 782.772 709.45 769.714 716.103 766.812 721.806 746.5 823.5 1473.39 823.5 1573.5 708.5Z" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#7F7F7F" fill-rule="evenodd"/><path d="M1242.11 793.019 1677.5 788.5 1512.93 903.5 1060.5 902.734 1242.11 793.019Z" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#E7E6E6" fill-rule="evenodd"/><path d="M1461.64 814.53 1550.75 814.5 1553.5 820.926 1552.35 843.885 1453.5 903.5 1456.76 821.149 1461.64 814.53Z" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#A6A6A6" fill-rule="evenodd"/><path d="M1061.18 903.5 1026.5 819.101 1031.65 812.972 1116.47 812.5 1123.5 820.516 1119.28 867.194 1061.18 903.5Z" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#BFBFBF" fill-rule="evenodd"/><path d="M1138.64 814.53 1227.75 814.5 1230.5 820.926 1229.35 843.885 1130.5 903.5 1133.76 821.149 1138.64 814.53Z" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#A6A6A6" fill-rule="evenodd"/><path d="M1518.5 909.5 1565.88 817.163 1614.01 812.659 1891.5 644.5 1862.92 700.052 1518.5 909.5Z" stroke="#0D0D0D" stroke-width="4.58333" stroke-linejoin="round" stroke-miterlimit="10" fill="#7F7F7F" fill-rule="evenodd"/><path d="M1609.81 803.5 1954.5 594.915C1954.45 590.246 1954.16 584.17 1954.11 579.5L1609.5 787.381C1609.53 792.754 1609.79 798.127 1609.81 803.5Z" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#A6A6A6" fill-rule="evenodd"/><path d="M0 0 346.015 210.445" stroke="#000000" stroke-width="4.58333" stroke-miterlimit="8" fill="none" fill-rule="evenodd" transform="matrix(1 0 0 -1 1616.5 786.945)"/><path d="M0 0 14.1849 8.62713" stroke="#000000" stroke-width="4.58333" stroke-miterlimit="8" fill="none" fill-rule="evenodd" transform="matrix(1 0 0 -1 967.5 805.127)"/><path d="M1334.99 594.5 1895.5 594.5 1606.38 770.261 1605.61 784.717 1596.35 804.5 986.5 803.739 1334.99 594.5Z" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#E7E6E6" fill-rule="evenodd"/><path d="M1609.5 804.251 1954.97 594.5 1959.5 595.046 1613.64 805.5 1609.5 804.251Z" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#E7E6E6" fill-rule="evenodd"/><path d="M969.5 767.21 1314.52 559.5 1327.5 560.492 982.559 767.5 969.5 767.21Z" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#E7E6E6" fill-rule="evenodd"/><path d="M982.578 784.5 1327.5 575.212C1327.45 570.543 1326.93 565.17 1326.88 560.5L982.5 768.381C982.526 773.754 982.552 779.127 982.578 784.5Z" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#A6A6A6" fill-rule="evenodd"/><path d="M981.5 784.548 1327.49 575.033C1327.44 570.359 1336.55 598.07 1336.5 593.395L990.741 802.832C990.767 808.211 981.474 779.169 981.5 784.548Z" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#BFBFBF" fill-rule="evenodd"/><path d="M1616.58 786.5 1961.5 577.212C1961.45 572.542 1960.93 567.169 1960.88 562.5L1616.5 770.381C1616.53 775.754 1616.55 781.127 1616.58 786.5Z" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#A6A6A6" fill-rule="evenodd"/><path d="M1615.52 814.5 1959.5 603.614C1959.45 598.93 1959.4 599.184 1959.34 594.5L1614.5 804.445C1614.53 809.834 1615.49 809.11 1615.52 814.5Z" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#A6A6A6" fill-rule="evenodd"/><path d="M1605.5 770.245 1950.88 559.5 1961.5 560.755 1617.37 771.5 1605.5 770.245Z" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#E7E6E6" fill-rule="evenodd"/><path d="M1246.8 812.53 1337.69 812.5 1340.5 818.998 1339.33 842.215 1238.5 902.5 1241.83 819.224 1246.8 812.53Z" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#A6A6A6" fill-rule="evenodd"/><path d="M1353.64 814.53 1442.75 814.5 1445.5 820.926 1444.35 843.885 1345.5 903.5 1348.76 821.149 1353.64 814.53Z" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#A6A6A6" fill-rule="evenodd"/><path d="M1355.79 813.646 1349.97 819.825 1345.04 903.242 1441.3 902.409C1442.78 874.594 1444.26 846.778 1445.73 818.963L1442.07 813.854 1355.79 813.646ZM1226.85 813.635 1139.06 813.881C1136.57 816.544 1136.25 817.923 1134.23 820.118L1130.35 902.51 1225.62 901.619C1227.07 874.345 1228.51 847.071 1229.96 819.797L1226.85 813.635ZM1245.23 813.09 1242.28 821.069C1240.38 847.592 1239.94 874.743 1238.04 901.266L1333.15 903.083 1339.07 819.724 1331.51 813.298 1245.23 813.09ZM1463.45 812.944 1459.21 817.585 1453.16 903.11 1509.78 901.565 1551.91 818.173 1546.7 814.06 1463.45 812.944ZM1032.03 812.446 1027.23 818.141 1060.41 902.724 1116.48 902.234 1122.34 819.958 1117.25 813.679 1032.03 812.446ZM968.763 766.852 981.84 767.479 981.736 782.295 990.897 803.492 1594.35 804.918 1596.06 801.214 1603.38 786.427 1605.33 770.235 1616.72 770.366 1616.26 786.645 1611.32 786.353 1609.3 803.628 1614.21 804.462 1615.68 813.245 1566.83 817.424 1517.74 909.645 1049.62 909.153 1013.39 817.323 967.524 812.982 967.542 804.286 973.473 804.636 973.669 784.536 968.759 783.702 968.763 766.852Z" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#404040" fill-rule="evenodd"/><path d="M906.111 996.98 1341.5 992.5 1176.93 1106.5 724.5 1105.74 906.111 996.98Z" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#E7E6E6" fill-rule="evenodd"/><path d="M1125.64 1017.53 1214.75 1017.5 1217.5 1023.93 1216.35 1046.88 1117.5 1106.5 1120.76 1024.15 1125.64 1017.53Z" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#A6A6A6" fill-rule="evenodd"/><path d="M725.176 1106.5 690.5 1023.03 695.655 1016.97 780.471 1016.5 787.5 1024.43 783.283 1070.59 725.176 1106.5Z" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#BFBFBF" fill-rule="evenodd"/><path d="M803.637 1017.53 892.745 1017.5 895.5 1023.93 894.352 1046.88 795.5 1106.5 798.762 1024.15 803.637 1017.53Z" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#A6A6A6" fill-rule="evenodd"/><path d="M1182.5 1113.5 1229.88 1021.16 1278.01 1016.66 1555.5 848.5 1526.92 904.052 1182.5 1113.5Z" stroke="#0D0D0D" stroke-width="4.58333" stroke-linejoin="round" stroke-miterlimit="10" fill="#7F7F7F" fill-rule="evenodd"/><path d="M1274.81 1006.5 1619.5 797.915C1619.45 793.246 1619.16 787.169 1619.11 782.5L1274.5 990.381C1274.53 995.754 1274.79 1001.13 1274.81 1006.5Z" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#A6A6A6" fill-rule="evenodd"/><path d="M0 0 346.015 210.445" stroke="#000000" stroke-width="4.58333" stroke-miterlimit="8" fill="none" fill-rule="evenodd" transform="matrix(1 0 0 -1 1280.5 990.946)"/><path d="M0 0 14.1849 8.62713" stroke="#000000" stroke-width="4.58333" stroke-miterlimit="8" fill="none" fill-rule="evenodd" transform="matrix(1 0 0 -1 631.5 1008.13)"/><path d="M999.605 797.5 1559.5 797.5 1270.7 973.261 1269.93 987.717 1260.68 1007.5 651.5 1006.74 999.605 797.5Z" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#E7E6E6" fill-rule="evenodd"/><path d="M1273.5 1007.25 1619.96 797.5 1624.5 798.046 1277.65 1008.5 1273.5 1007.25Z" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#E7E6E6" fill-rule="evenodd"/><path d="M633.5 971.208 978.519 762.5 991.5 763.496 646.56 971.5 633.5 971.208Z" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#E7E6E6" fill-rule="evenodd"/><path d="M646.578 987.5 991.5 778.212C991.448 773.542 990.927 768.17 990.875 763.5L646.5 971.381C646.526 976.754 646.552 982.127 646.578 987.5Z" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#A6A6A6" fill-rule="evenodd"/><path d="M646.5 987.631 991.52 779.031C991.468 774.377 1000.55 801.967 1000.5 797.313L655.715 1005.84C655.741 1011.19 646.474 982.276 646.5 987.631Z" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#BFBFBF" fill-rule="evenodd"/><path d="M1280.58 989.5 1625.5 780.212C1625.45 775.542 1624.93 770.17 1624.88 765.5L1280.5 973.381C1280.53 978.754 1280.55 984.127 1280.58 989.5Z" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#A6A6A6" fill-rule="evenodd"/><path d="M1279.52 1017.5 1623.5 807.573C1623.45 802.91 1623.4 803.163 1623.34 798.5L1278.5 1007.49C1278.53 1012.86 1279.49 1012.13 1279.52 1017.5Z" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#A6A6A6" fill-rule="evenodd"/><path d="M1269.5 973.251 1614.88 763.5 1625.5 764.748 1281.37 974.5 1269.5 973.251Z" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#E7E6E6" fill-rule="evenodd"/><path d="M910.799 1016.53 1001.69 1016.5 1004.5 1022.93 1003.33 1045.88 902.5 1105.5 905.828 1023.15 910.799 1016.53Z" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#A6A6A6" fill-rule="evenodd"/><path d="M1018.64 1017.53 1107.75 1017.5 1110.5 1023.93 1109.35 1046.88 1010.5 1106.5 1013.76 1024.15 1018.64 1017.53Z" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#A6A6A6" fill-rule="evenodd"/><path d="M1019.91 1016.96 1014.09 1023.14 1009.16 1106.56 1105.42 1105.73C1106.9 1077.91 1108.38 1050.09 1109.86 1022.28L1106.19 1017.17 1019.91 1016.96ZM890.974 1016.95 803.181 1017.2C800.693 1019.86 800.369 1021.24 798.349 1023.43L794.471 1105.83 889.741 1104.94C891.187 1077.66 892.634 1050.39 894.081 1023.11L890.974 1016.95ZM909.355 1016.41 906.404 1024.39C904.506 1050.91 904.058 1078.06 902.16 1104.58L997.269 1106.4 1003.19 1023.04 995.633 1016.61 909.355 1016.41ZM1127.57 1016.26 1123.33 1020.9 1117.28 1106.43 1173.91 1104.88 1216.03 1021.49 1210.82 1017.38 1127.57 1016.26ZM696.147 1015.76 691.347 1021.46 724.534 1106.04 780.602 1105.55 786.457 1023.28 781.373 1017 696.147 1015.76ZM632.885 970.169 645.962 970.796 645.858 985.612 655.019 1006.81 1258.47 1008.23 1260.18 1004.53 1267.5 989.744 1269.45 973.552 1280.85 973.682 1280.38 989.961 1275.44 989.669 1273.42 1006.94 1278.33 1007.78 1279.8 1016.56 1230.95 1020.74 1181.86 1112.96 713.739 1112.47 677.51 1020.64 631.646 1016.3 631.664 1007.6 637.594 1007.95 637.791 987.853 632.881 987.019 632.885 970.169Z" stroke="#0D0D0D" stroke-width="3.4375" stroke-linejoin="bevel" stroke-miterlimit="10" fill="#404040" fill-rule="evenodd"/><g transform="matrix(0.000360892 0 0 0.000360892 1508 1417)"><g clip-path="url(#clip2)" transform="matrix(3.27567 0 0 1 0.174805 -0.126576)"><use width="100%" height="100%" xlink:href="#img1" transform="scale(1680.06 1680.06)"></use></g></g><g transform="matrix(0.000360892 0 0 0.000360892 754 1401)"><g clip-path="url(#clip3)" transform="matrix(3.25278 0 0 1 0.0800338 0.00694689)"><use width="100%" height="100%" xlink:href="#img1" transform="scale(1680.06 1680.06)"></use></g></g><g transform="matrix(0.000360892 0 0 0.000360892 273 1197)"><g clip-path="url(#clip5)" transform="matrix(1 0 0 1.00068 -0.0297186 -0.0923961)"><use width="100%" height="100%" xlink:href="#img4" transform="scale(4354.29 4354.29)"></use></g></g><g transform="matrix(0.000360892 0 0 0.000360892 1269 387)"><g clip-path="url(#clip7)" transform="matrix(1 0 0 1.00068 -0.222545 -0.0728205)"><use width="100%" height="100%" xlink:href="#img6" transform="scale(4354.29 4354.29)"></use></g></g><text fill="#3D576E" font-family="Bodoni MT,Bodoni MT_MSFontService,sans-serif" font-style="italic" font-weight="400" font-size="917" transform="matrix(1 0 0 1 1840.82 1383)">mdof</text></g></svg>
|
|
Binary file
|