diff --git a/assets/favicon/android-chrome-192x192.png b/assets/favicon/android-chrome-192x192.png
new file mode 100644
index 0000000000000000000000000000000000000000..c8aed28b7a53c4ed039761a59a4024fdcfcb9927
Binary files /dev/null and b/assets/favicon/android-chrome-192x192.png differ
diff --git a/assets/favicon/android-chrome-512x512.png b/assets/favicon/android-chrome-512x512.png
new file mode 100644
index 0000000000000000000000000000000000000000..c046f0b8159297368bfb3db79a73828aac88bffd
Binary files /dev/null and b/assets/favicon/android-chrome-512x512.png differ
diff --git a/assets/favicon/apple-touch-icon.png b/assets/favicon/apple-touch-icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..90b6db1b7aa63168e14ac96600517a3013b6e23f
Binary files /dev/null and b/assets/favicon/apple-touch-icon.png differ
diff --git a/assets/favicon/browserconfig.xml b/assets/favicon/browserconfig.xml
new file mode 100644
index 0000000000000000000000000000000000000000..153c99b8ada1e9b196c3d0a8f0a4380901b9ff6e
--- /dev/null
+++ b/assets/favicon/browserconfig.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<browserconfig>
+    <msapplication>
+        <tile>
+            <square70x70logo src="./mstile-70x70.png"/>
+            <square150x150logo src="./mstile-150x150.png"/>
+            <square310x310logo src="./mstile-310x310.png"/>
+            <wide310x150logo src="./mstile-310x150.png"/>
+            <TileColor>#dc0067</TileColor>
+        </tile>
+    </msapplication>
+</browserconfig>
diff --git a/assets/favicon/favicon-16x16.png b/assets/favicon/favicon-16x16.png
new file mode 100644
index 0000000000000000000000000000000000000000..62c4991721c848828b3aff24fb7ee1a9e4763320
Binary files /dev/null and b/assets/favicon/favicon-16x16.png differ
diff --git a/assets/favicon/favicon-32x32.png b/assets/favicon/favicon-32x32.png
new file mode 100644
index 0000000000000000000000000000000000000000..a4907a616ae55408133fba77bbb67f06ad6f2f2a
Binary files /dev/null and b/assets/favicon/favicon-32x32.png differ
diff --git a/assets/favicon/favicon.ico b/assets/favicon/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..fc79f4e7f678499e464a7417d10912b1a1dea57c
Binary files /dev/null and b/assets/favicon/favicon.ico differ
diff --git a/assets/favicon/manifest.json b/assets/favicon/manifest.json
new file mode 100644
index 0000000000000000000000000000000000000000..e7e10e0c1a752d86555a520a9eb20a88c100d7ac
--- /dev/null
+++ b/assets/favicon/manifest.json
@@ -0,0 +1,18 @@
+{
+    "name": "Meshviewer",
+    "icons": [
+        {
+            "src": "./android-chrome-192x192.png",
+            "sizes": "192x192",
+            "type": "image/png"
+        },
+        {
+            "src": "./android-chrome-512x512.png",
+            "sizes": "512x512",
+            "type": "image/png"
+        }
+    ],
+    "theme_color": "#dc0067",
+    "background_color": "#dc0067",
+    "display": "standalone"
+}
diff --git a/assets/favicon/mstile-144x144.png b/assets/favicon/mstile-144x144.png
new file mode 100644
index 0000000000000000000000000000000000000000..4be7a27f4a4c890813442f097f81c2255dd1db2a
Binary files /dev/null and b/assets/favicon/mstile-144x144.png differ
diff --git a/assets/favicon/mstile-150x150.png b/assets/favicon/mstile-150x150.png
new file mode 100644
index 0000000000000000000000000000000000000000..2ea0c5f70deb25f11ab96618c536004ada7b771c
Binary files /dev/null and b/assets/favicon/mstile-150x150.png differ
diff --git a/assets/favicon/mstile-310x150.png b/assets/favicon/mstile-310x150.png
new file mode 100644
index 0000000000000000000000000000000000000000..b4bcb75b1ab56206e143675c1ce3e2e21554a688
Binary files /dev/null and b/assets/favicon/mstile-310x150.png differ
diff --git a/assets/favicon/mstile-310x310.png b/assets/favicon/mstile-310x310.png
new file mode 100644
index 0000000000000000000000000000000000000000..b2a9f3917b3f7e438e3497a865cea0770aeaedb4
Binary files /dev/null and b/assets/favicon/mstile-310x310.png differ
diff --git a/assets/favicon/mstile-70x70.png b/assets/favicon/mstile-70x70.png
new file mode 100644
index 0000000000000000000000000000000000000000..82ea8764334d79bc9b92fd380ff32034a5332049
Binary files /dev/null and b/assets/favicon/mstile-70x70.png differ
diff --git a/assets/favicon/safari-pinned-tab.svg b/assets/favicon/safari-pinned-tab.svg
new file mode 100644
index 0000000000000000000000000000000000000000..a732bc7292b643d38651d4cc7d3384535618bf47
--- /dev/null
+++ b/assets/favicon/safari-pinned-tab.svg
@@ -0,0 +1,134 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
+ width="16.000000pt" height="16.000000pt" viewBox="0 0 16.000000 16.000000"
+ preserveAspectRatio="xMidYMid meet">
+<metadata>
+Created by potrace 1.11, written by Peter Selinger 2001-2013
+</metadata>
+<g transform="translate(0.000000,16.000000) scale(0.001600,-0.001600)"
+fill="#000000" stroke="none">
+<path d="M8658 8875 c-2 -2 -27 -6 -55 -10 -29 -3 -66 -10 -83 -15 -16 -5 -30
+-7 -30 -5 0 3 -12 0 -27 -6 -16 -6 -37 -12 -48 -15 -41 -7 -255 -105 -255
+-116 0 -5 -5 -8 -11 -8 -22 0 -145 -96 -225 -175 -153 -151 -286 -382 -319
+-554 -2 -9 -7 -34 -13 -56 -5 -22 -10 -47 -10 -55 0 -8 -3 -31 -6 -50 -21
+-106 -5 -303 36 -460 20 -79 28 -100 72 -190 14 -30 26 -60 26 -66 0 -6 -43
+-51 -96 -100 -53 -49 -123 -114 -155 -144 -81 -76 -139 -129 -259 -240 -57
+-52 -115 -106 -130 -120 -15 -14 -68 -63 -119 -110 -51 -47 -114 -105 -141
+-130 -46 -44 -204 -190 -265 -245 -16 -16 -62 -58 -101 -94 -39 -36 -110 -102
+-158 -146 -48 -44 -119 -110 -158 -146 l-71 -66 -71 46 c-39 26 -107 64 -151
+85 -44 21 -88 42 -97 47 -10 5 -22 9 -27 9 -5 0 -22 5 -38 12 -38 15 -38 15
+-118 33 -114 27 -119 27 -147 28 -16 0 -29 3 -29 6 -4 19 -3 704 1 710 3 4 32
+20 65 36 118 56 235 206 274 350 14 50 14 168 1 215 -5 19 -10 38 -10 43 0 16
+-54 114 -84 152 -57 74 -170 157 -239 176 -23 7 -49 15 -57 17 -8 3 -55 7
+-104 8 -78 2 -101 -2 -170 -27 -44 -16 -82 -32 -85 -37 -3 -4 -24 -19 -46 -34
+-119 -81 -204 -232 -210 -374 -9 -198 112 -406 288 -492 l67 -33 -2 -356 -3
+-356 -25 -4 c-58 -8 -78 -12 -143 -27 -69 -16 -258 -83 -267 -95 -3 -3 -29
+-17 -57 -30 -29 -14 -53 -28 -53 -32 0 -3 -10 -9 -21 -12 -17 -5 -33 5 -68 42
+-47 50 -305 321 -376 396 -38 40 -200 212 -415 438 -52 55 -112 118 -132 139
+-21 21 -38 41 -38 44 0 3 18 35 40 71 123 205 166 485 108 708 -6 22 -11 45
+-13 50 -25 109 -132 290 -229 387 -56 58 -124 118 -131 118 -2 0 -32 17 -66
+38 -64 38 -167 84 -203 89 -11 2 -25 8 -31 13 -7 5 -14 8 -17 5 -2 -3 -19 0
+-37 5 -34 10 -155 23 -201 23 -39 -1 -152 -12 -178 -18 -12 -3 -30 -7 -40 -9
+-56 -13 -78 -19 -87 -25 -5 -3 -12 -6 -15 -7 -52 -10 -182 -84 -271 -155 -85
+-67 -219 -225 -219 -258 0 -6 -4 -11 -8 -11 -9 0 -81 -162 -84 -190 0 -3 -4
+-15 -9 -27 -5 -13 -11 -44 -15 -70 -3 -27 -8 -51 -11 -56 -9 -16 -4 -236 7
+-277 6 -23 12 -52 14 -64 10 -90 95 -269 174 -368 66 -83 160 -169 223 -204
+19 -10 36 -22 39 -25 3 -4 33 -20 67 -37 142 -69 286 -100 439 -97 107 3 157
+10 236 35 l59 18 47 -47 c26 -27 108 -112 182 -191 165 -175 256 -271 335
+-354 33 -34 123 -129 200 -211 77 -81 163 -172 190 -200 28 -28 63 -66 79 -83
+l29 -31 -39 -58 c-21 -32 -36 -58 -34 -58 3 0 -5 -13 -16 -30 -47 -66 -120
+-267 -143 -390 -30 -162 -32 -383 -4 -510 14 -65 9 -85 -22 -103 -16 -9 -32
+-20 -35 -23 -3 -3 -27 -16 -55 -29 -27 -13 -57 -29 -65 -35 -8 -7 -46 -29 -85
+-50 -38 -21 -132 -73 -208 -116 -75 -44 -142 -79 -147 -79 -6 0 -10 -4 -10 -9
+0 -5 -9 -13 -21 -16 -21 -7 -256 -140 -276 -157 -7 -6 -13 -7 -13 -3 0 4 -7 2
+-15 -5 -8 -6 -29 -20 -47 -29 -18 -10 -76 -42 -129 -73 -52 -30 -102 -58 -110
+-62 -8 -4 -23 -12 -34 -19 -18 -11 -104 -60 -195 -110 -132 -73 -519 -292
+-536 -303 -18 -11 -24 -10 -40 4 -139 124 -315 211 -505 250 -99 21 -304 27
+-363 11 -17 -4 -44 -10 -61 -13 -60 -10 -118 -27 -146 -42 -16 -8 -29 -12 -29
+-9 0 7 -182 -88 -221 -117 -178 -126 -321 -316 -392 -518 -58 -167 -66 -232
+-57 -495 1 -26 36 -172 54 -221 12 -35 68 -153 101 -212 7 -13 21 -33 31 -45
+11 -12 31 -38 45 -57 124 -165 362 -318 570 -366 13 -3 42 -10 64 -15 22 -5
+112 -8 200 -8 153 1 258 14 302 37 11 6 23 9 26 6 3 -3 22 3 44 14 21 11 41
+20 46 21 26 3 191 100 245 144 32 26 149 144 176 177 28 35 101 151 119 190
+35 78 56 130 51 130 -2 0 0 9 6 21 6 11 20 64 30 117 27 138 25 309 -5 437
+-18 77 -19 73 18 92 20 10 107 58 194 107 170 96 247 140 351 198 37 21 78 44
+92 50 14 7 27 15 30 19 3 4 32 21 65 38 33 17 67 35 75 41 39 24 191 110 196
+110 2 0 21 10 42 23 34 22 121 70 202 113 19 11 37 22 38 27 2 4 7 7 12 7 4 0
+50 24 101 53 101 57 129 73 344 193 77 43 142 80 145 84 3 3 18 11 34 18 28
+13 31 11 55 -20 60 -80 274 -278 300 -278 6 0 11 -3 11 -7 0 -5 22 -20 49 -35
+l49 -28 -70 -162 c-38 -90 -75 -176 -83 -193 -7 -16 -21 -49 -30 -72 -10 -26
+-24 -43 -34 -43 -104 -3 -177 -17 -226 -43 -11 -6 -22 -11 -25 -12 -16 -1
+-102 -60 -141 -97 -104 -98 -152 -211 -151 -353 0 -55 6 -106 16 -132 8 -24
+13 -43 11 -43 -3 0 11 -30 31 -67 33 -63 173 -216 192 -211 4 1 21 -6 39 -15
+81 -43 212 -56 316 -32 62 14 130 37 137 46 3 3 20 14 38 23 32 16 109 88 142
+131 24 31 66 124 76 170 13 54 10 187 -6 247 -18 68 -54 150 -82 183 -9 11
+-28 34 -42 50 -14 17 -26 33 -26 36 0 5 70 172 90 214 8 17 30 70 35 85 1 3 8
+19 15 35 7 17 14 32 15 35 3 14 44 100 48 100 2 0 26 -6 53 -14 27 -8 65 -17
+84 -21 19 -3 49 -8 65 -11 43 -8 368 -13 380 -6 10 6 15 7 80 16 40 5 80 13
+80 16 0 1 9 3 20 5 23 4 43 10 65 17 8 3 44 16 80 28 124 43 264 125 394 229
+97 79 94 77 111 66 230 -156 583 -391 593 -393 6 -2 12 -8 12 -13 0 -5 6 -9
+14 -9 8 0 16 -3 18 -7 4 -11 428 -293 439 -293 5 0 9 -4 9 -10 0 -5 6 -10 14
+-10 8 0 16 -3 18 -7 2 -5 40 -33 85 -63 66 -44 81 -59 77 -75 -35 -142 -11
+-350 59 -524 31 -77 104 -201 119 -201 4 0 8 -6 8 -13 0 -22 119 -130 203
+-185 74 -48 218 -112 252 -112 9 0 24 -4 34 -9 38 -21 229 -31 337 -19 107 13
+311 91 364 140 10 10 23 18 28 18 13 0 152 138 187 185 17 22 36 46 43 53 6 7
+12 20 12 28 0 8 4 14 8 14 5 0 21 28 37 62 39 88 43 97 56 148 18 67 21 82 23
+113 0 15 3 27 6 27 14 0 -1 226 -21 305 -23 89 -94 258 -120 286 -8 8 -23 27
+-33 43 -24 38 -63 82 -106 120 -19 17 -44 41 -57 53 -13 12 -23 20 -23 17 0
+-3 -15 6 -32 19 -75 57 -242 126 -347 143 -99 17 -270 12 -356 -10 -11 -3 -40
+-10 -64 -16 -65 -16 -166 -66 -254 -127 l-77 -53 -110 75 c-61 41 -115 75
+-119 75 -5 0 -11 3 -13 8 -1 4 -57 43 -123 87 -66 43 -124 83 -130 87 -5 5
+-80 54 -165 110 -85 56 -157 105 -160 108 -3 3 -17 11 -32 19 -16 8 -28 18
+-28 23 0 4 -4 8 -9 8 -12 0 -105 61 -109 72 -2 4 -9 8 -16 8 -7 0 -21 8 -32
+18 -10 10 -53 39 -94 65 -42 26 -88 58 -103 70 l-27 22 24 70 c33 96 58 194
+65 256 1 4 22 5 49 3 228 -14 552 -32 603 -33 21 -1 29 -10 47 -54 27 -66 87
+-159 95 -150 4 3 7 1 7 -6 0 -7 10 -22 23 -32 285 -250 712 -132 823 226 40
+127 16 291 -59 410 -35 55 -91 115 -107 115 -5 0 -10 4 -10 9 0 13 -141 81
+-177 86 -15 2 -28 5 -28 6 0 1 -37 3 -83 4 -75 3 -143 -6 -182 -22 -8 -3 -24
+-8 -34 -10 -11 -2 -26 -9 -34 -15 -15 -13 -47 -32 -72 -44 -35 -17 -102 -103
+-156 -199 -12 -22 -9 -21 -179 -10 -60 4 -141 8 -180 10 -284 14 -321 17 -329
+26 -2 2 -7 27 -10 54 -3 28 -8 61 -11 75 -3 14 -8 39 -11 55 -17 95 -71 247
+-125 351 l-37 71 77 70 c42 39 90 83 106 98 17 15 60 55 96 89 36 33 112 104
+169 156 57 52 119 110 139 129 20 18 78 72 130 120 52 47 110 101 130 120 20
+18 76 70 125 115 99 91 121 112 267 247 57 53 118 109 134 124 17 15 77 70
+134 123 130 121 123 115 142 129 13 11 23 8 58 -17 22 -17 41 -27 41 -24 0 4
+7 1 15 -6 29 -24 165 -85 235 -105 138 -40 236 -53 380 -50 127 3 170 6 230
+21 14 3 32 7 40 8 8 1 40 11 70 21 30 11 57 20 60 21 111 31 304 153 415 262
+68 66 135 140 135 148 0 2 15 25 34 51 88 125 170 339 193 508 10 75 8 277 -3
+345 -35 202 -111 382 -232 545 -38 51 -163 180 -216 223 -118 95 -318 197
+-448 228 -116 28 -172 35 -290 38 -75 2 -138 2 -140 1z m252 -530 c6 -3 23 -9
+38 -11 34 -6 178 -77 215 -107 65 -51 167 -159 167 -177 0 -6 5 -10 10 -10 6
+0 10 -5 10 -11 0 -6 9 -23 20 -38 21 -31 66 -159 76 -217 4 -22 6 -68 6 -104
+-1 -215 -80 -384 -249 -530 -65 -57 -207 -123 -289 -135 -16 -2 -40 -7 -54
+-10 -53 -12 -246 -5 -271 11 -5 3 -18 7 -29 9 -43 8 -148 61 -202 102 -61 46
+-137 128 -159 172 -8 14 -16 28 -19 31 -20 20 -71 150 -85 216 -4 16 -8 68
+-11 117 -4 76 0 119 20 213 14 68 97 205 165 274 99 102 252 185 375 204 22 4
+42 8 44 11 7 6 210 -3 222 -10z m-6085 -700 c81 -23 147 -73 225 -171 45 -56
+79 -182 74 -273 -10 -173 -154 -338 -336 -385 -133 -34 -294 12 -397 114 -94
+92 -145 267 -117 400 11 49 61 150 90 181 72 77 173 134 259 145 23 4 43 8 45
+9 7 7 110 -6 157 -20z m2460 -451 c121 -44 166 -200 88 -303 -27 -35 -113 -80
+-148 -76 -123 12 -187 76 -191 192 -3 56 0 67 29 110 18 26 47 55 65 65 17 10
+32 16 32 13 0 -2 10 0 23 5 23 9 68 7 102 -6z m101 -1942 c206 -43 423 -197
+543 -387 37 -58 78 -138 87 -170 40 -135 46 -174 46 -270 0 -99 -16 -213 -34
+-248 -5 -10 -11 -27 -13 -39 -6 -28 -64 -145 -99 -198 -44 -66 -152 -170 -231
+-220 -37 -25 -71 -45 -74 -45 -3 0 -11 -3 -17 -7 -21 -14 -120 -50 -148 -55
+-16 -3 -41 -9 -55 -15 -45 -17 -258 -19 -346 -2 -44 8 -89 19 -100 23 -11 5
+-39 16 -63 25 -23 9 -60 27 -82 41 -22 14 -42 25 -45 25 -20 0 -173 152 -219
+218 -77 110 -128 239 -150 380 -33 206 11 406 127 576 46 69 177 201 207 211
+11 4 20 10 20 14 0 5 45 31 100 60 55 28 100 48 100 46 0 -3 10 0 23 7 70 38
+301 54 423 30z m2468 -770 c136 -67 150 -259 26 -337 -157 -99 -340 41 -291
+222 12 44 70 105 116 121 41 15 114 12 149 -6z m621 -1765 c103 -32 206 -108
+221 -164 3 -13 10 -23 14 -23 4 0 15 -28 25 -62 17 -59 22 -142 12 -198 -4
+-24 -7 -33 -33 -96 -15 -40 -79 -110 -124 -139 -102 -63 -217 -77 -324 -40
+-155 54 -255 188 -258 345 -3 221 165 392 382 387 30 0 69 -5 85 -10z m-7234
+-36 c66 -21 163 -78 209 -123 39 -38 85 -92 93 -108 4 -8 16 -29 26 -47 11
+-17 29 -62 41 -100 25 -79 26 -208 3 -282 -8 -25 -16 -50 -17 -56 -14 -52 -74
+-142 -132 -198 -26 -26 -51 -47 -55 -47 -4 0 -14 -6 -21 -13 -13 -13 -114 -59
+-157 -72 -57 -17 -181 -24 -239 -14 -87 15 -182 54 -228 92 -99 81 -163 175
+-203 298 -22 68 -29 180 -15 256 18 104 100 236 191 307 45 36 151 98 173 102
+3 0 12 3 20 7 70 29 215 28 311 -2z m3111 -269 c15 -6 39 -21 53 -34 133 -115
+49 -343 -126 -341 -136 2 -226 130 -182 260 34 100 154 154 255 115z"/>
+</g>
+</svg>
diff --git a/assets/faviconData.json b/assets/faviconData.json
new file mode 100644
index 0000000000000000000000000000000000000000..d4b60d2f34fd9704f49a910a35c3e74b879d4f46
--- /dev/null
+++ b/assets/faviconData.json
@@ -0,0 +1 @@
+{"result":{"status":"success"},"favicon":{"package_url":"https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/favicons.zip","files_urls":["https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/package_files/android-chrome-192x192.png","https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/package_files/android-chrome-512x512.png","https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/package_files/apple-touch-icon.png","https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/package_files/browserconfig.xml","https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/package_files/favicon-16x16.png","https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/package_files/favicon-32x32.png","https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/package_files/favicon.ico","https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/package_files/manifest.json","https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/package_files/mstile-144x144.png","https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/package_files/mstile-150x150.png","https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/package_files/mstile-310x150.png","https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/package_files/mstile-310x310.png","https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/package_files/mstile-70x70.png","https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/package_files/safari-pinned-tab.svg"],"html_code":"<link rel=\"apple-touch-icon\" sizes=\"180x180\" href=\"./apple-touch-icon.png\">\n<link rel=\"icon\" type=\"image/png\" href=\"./favicon-32x32.png\" sizes=\"32x32\">\n<link rel=\"icon\" type=\"image/png\" href=\"./favicon-16x16.png\" sizes=\"16x16\">\n<link rel=\"manifest\" href=\"./manifest.json\">\n<link rel=\"mask-icon\" href=\"./safari-pinned-tab.svg\" color=\"#dc0067\">\n<link rel=\"shortcut icon\" href=\"./favicon.ico\">\n<meta name=\"apple-mobile-web-app-title\" content=\"Meshviewer\">\n<meta name=\"application-name\" content=\"Meshviewer\">\n<meta name=\"msapplication-TileColor\" content=\"#dc0067\">\n<meta name=\"msapplication-TileImage\" content=\"./mstile-144x144.png\">\n<meta name=\"msapplication-config\" content=\"./browserconfig.xml\">\n<meta name=\"theme-color\" content=\"#dc0067\">","compression":"true","overlapping_markups":["link[rel=\"apple-touch-icon\"]","meta[name=\"apple-mobile-web-app-title\"]","link[rel=\"shortcut\"]","link[rel=\"shortcut icon\"]","link[rel=\"icon\",sizes=\"16x16\"]","link[rel=\"icon\",sizes=\"32x32\"]","meta[name=\"msapplication-TileColor\"]","meta[name=\"msapplication-TileImage\"]","meta[name=\"msapplication-config\"]","meta[name=\"application-name\"]","link[rel=\"manifest\"]","meta[name=\"theme-color\"]","link[rel=\"mask-icon\"]"]},"files_location":{"type":"path","path":"."},"preview_picture_url":"https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/favicon_preview.png","version":"0.14"}
diff --git a/assets/logo.svg b/assets/logo.svg
new file mode 100644
index 0000000000000000000000000000000000000000..b8d9c3274d3c7e94037ad4bbdf3e490f4c746b5a
--- /dev/null
+++ b/assets/logo.svg
@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" data-name="Ebene 1" viewBox="0 0 125 97.5" width="125" height="97.5">
+  <title>
+    Meshviewer
+  </title>
+  <path d="m 41.426847,11.807177 a 11.89,11.89 0 1 0 -7.75,20.919993 12,12 0 0 0 4,-0.7 l 15.81,16.66 a 13.45,13.45 0 0 1 5.08,-4.82 l -15.25,-16.07 a 11.9,11.9 0 0 0 -1.89,-15.989993 z m -11.25,13.119993 a 5.41,5.41 0 1 1 3.5,1.29 5.35,5.35 0 0 1 -3.5,-1.29 z m 20.86,33.55 -28.39,16 c -0.24,-0.23 -0.49,-0.46 -0.75,-0.67 a 13.38,13.38 0 1 0 4.45,6.62 l 28.13,-15.85 a 14,14 0 0 1 -3.44,-6.1 z m -32.12,30.06 a 6.86,6.86 0 1 1 1.45,-5 6.85,6.85 0 0 1 -1.45,5 z M 119.4569,3.8671829 A 15.09,15.09 0 0 0 96.456847,22.64717 l -23.44,21.69 a 13.58,13.58 0 0 1 4.75,5.14 l 23.390033,-21.61 A 15.1,15.1 0 0 0 119.4569,3.8671829 Z m -3.3,17.0599871 a 8.62,8.62 0 1 1 2,-6.26 8.6,8.6 0 0 1 -2,6.31 z m -4.05,52.4 a 11.23,11.23 0 0 0 -14.690053,0.07 l -18.76,-12.53 a 13.56,13.56 0 0 1 -3.9,5.81 l 19.1,12.74 a 11.24,11.24 0 1 0 18.280053,-6.09 z m -3.72,11.62 a 4.74,4.74 0 0 1 -3.61,1.65 4.74,4.74 0 0 1 -3.59001,-7.82 4.74,4.74 0 0 1 3.61001,-1.65 4.67,4.67 0 0 1 3.06,1.14 4.75,4.75 0 0 1 0.53,6.68 z" fill="#ad2358"/>
+  <path fill="#f4c72f" d="m 101.52068,52.899268 a 6.2809967,6.2864323 0 0 0 -8.861411,0.190195 6.2109856,6.2163606 0 0 0 -1.310208,2.102151 L 82.787703,54.711122 A 17.502777,17.517924 0 0 0 67.185227,38.51455 v -8.939146 a 6.3810126,6.3865347 0 1 0 -3.820606,0 v 8.949156 a 17.552785,17.567976 0 0 0 -6.781076,32.753514 l -2.5204,5.896032 a 6.3810126,6.3865347 0 1 0 3.510557,1.521557 l 2.5204,-5.966104 A 17.512779,17.527935 0 0 0 82.637679,58.545045 l 8.491348,0.470482 A 6.2709951,6.276422 0 1 0 101.53068,52.899268 Z M 54.513216,85.602731 a 2.4403873,2.4424992 0 0 1 -2.000317,0 2.4103825,2.4124684 0 0 1 -1.230196,-1.161189 2.4403873,2.4424992 0 0 1 3.160502,-3.3234 2.4103825,2.4124684 0 0 1 1.230195,1.161188 2.4503888,2.4525094 0 0 1 -1.130179,3.323401 z M 63.384624,22.01767 a 2.4403873,2.4424992 0 0 1 1.860295,-0.85087 2.4103825,2.4124684 0 0 1 1.590252,0.590604 2.4403873,2.4424992 0 0 1 -1.590252,4.304404 2.4103825,2.4124684 0 0 1 -1.590252,-0.590604 2.4503888,2.4525094 0 0 1 -0.230037,-3.453534 z m 9.881568,40.86181 a 10.591681,10.600847 0 1 1 2.510398,-7.697876 10.571678,10.580826 0 0 1 -2.480393,7.697876 z m 25.654071,-3.753841 a 2.4403873,2.4424992 0 0 1 -4.200667,-1.831874 2.4103825,2.4124684 0 0 1 0.670107,-1.551588 2.4403873,2.4424992 0 0 1 4.200666,1.831875 2.4103825,2.4124684 0 0 1 -0.640101,1.551587 z"/>
+</svg>
diff --git a/gulp/config.js b/gulp/config.js
index 15413cbfee96a13d909036fc81606bcc49a6295b..f34cd8e0eb0cb77fa492ee1f2f2cc3220fa020d2 100644
--- a/gulp/config.js
+++ b/gulp/config.js
@@ -3,6 +3,7 @@ module.exports = function () {
 
   return {
     build: build,
+    faviconData: 'assets/faviconData.json',
     src: {
       sass: 'scss/**/*.scss',
       javascript: ['app.js', 'lib/**/*.js'],
diff --git a/gulp/tasks/copy.js b/gulp/tasks/copy.js
index ee2fb4c617e6bf3fe0d15358905e10cbc31ecf2c..b01325a12fab54ad263a4254e2999e84525d2fcd 100644
--- a/gulp/tasks/copy.js
+++ b/gulp/tasks/copy.js
@@ -2,6 +2,8 @@ module.exports = function (gulp, plugins, config) {
   return function copy() {
     gulp.src(['html/*.html', 'assets/favicon/*'])
       .pipe(gulp.dest(config.build));
+    gulp.src(['assets/logo.svg'])
+      .pipe(gulp.dest(config.build));
     gulp.src('node_modules/promise-polyfill/promise.js')
       .pipe(gulp.dest(config.build + '/vendor'));
     return gulp.src(['assets/fonts/*', 'assets/icons/fonts/*'])
diff --git a/gulp/tasks/favicon.js b/gulp/tasks/favicon.js
new file mode 100644
index 0000000000000000000000000000000000000000..cabe0f6de1871bc8809beb3bc8713efe96437681
--- /dev/null
+++ b/gulp/tasks/favicon.js
@@ -0,0 +1,65 @@
+module.exports = function (gulp, plugins, config) {
+  return function javascript(cb) {
+    plugins.realFavicon.generateFavicon({
+      masterPicture: 'assets/logo.svg',
+      dest: 'assets/favicon',
+      iconsPath: '.',
+      design: {
+        ios: {
+          pictureAspect: 'backgroundAndMargin',
+          backgroundColor: '#000000',
+          margin: '14%',
+          assets: {
+            ios6AndPriorIcons: false,
+            ios7AndLaterIcons: false,
+            precomposedIcons: false,
+            declareOnlyDefaultIcon: true
+          },
+          appName: 'Meshviewer'
+        },
+        desktopBrowser: {},
+        windows: {
+          pictureAspect: 'noChange',
+          backgroundColor: '#dc0067',
+          onConflict: 'override',
+          assets: {
+            windows80Ie10Tile: false,
+            windows10Ie11EdgeTiles: {
+              small: true,
+              medium: true,
+              big: true,
+              rectangle: false
+            }
+          },
+          appName: 'Meshviewer'
+        },
+        androidChrome: {
+          // pictureAspect: 'shadow',
+          themeColor: '#dc0067',
+          manifest: {
+            name: 'Meshviewer',
+            display: 'standalone',
+            orientation: 'notSet',
+            onConflict: 'override',
+            declared: true
+          },
+          assets: {
+            legacyIcon: false,
+            lowResolutionIcons: false
+          }
+        },
+        safariPinnedTab: {
+          pictureAspect: 'silhouette',
+          themeColor: '#dc0067'
+        }
+      },
+      settings: {
+        compression: 2,
+        scalingAlgorithm: 'Mitchell',
+        errorOnImageTooSmall: false
+      },
+      markupFile: config.faviconData
+    });
+    return cb();
+  };
+};
diff --git a/gulp/tasks/html.js b/gulp/tasks/html.js
index e67551323e2841c185e93abd63e774c591f796df..4994e6d7313c58fba51668fc239d8e0ea184a599 100644
--- a/gulp/tasks/html.js
+++ b/gulp/tasks/html.js
@@ -1,3 +1,4 @@
+const fs = require('fs');
 module.exports = function (gulp, plugins, config, env) {
   return function html() {
     return gulp.src(env.production() ? config.build + '/*.html' : 'html/*.html')
@@ -13,6 +14,7 @@ module.exports = function (gulp, plugins, config, env) {
         }
       }))
       .pipe(env.production(plugins.kyhInlineSource({ compress: false })))
+      .pipe(plugins.realFavicon.injectFaviconMarkups(JSON.parse(fs.readFileSync(config.faviconData)).favicon.html_code))
       .pipe(plugins.cacheBust({
         type: 'timestamp'
       }))
diff --git a/gulpfile.js b/gulpfile.js
index b8d0d8d6274c656c1a3e1bdd892d74846f2a15f6..e217c8fcf3df64068ba498806098da2e93dd4f4e 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -14,6 +14,10 @@ function getTask(task) {
   return require('./gulp/tasks/' + task)(gulp, plugins, config, env);
 }
 
+gulp.task('generate-favicon',
+  getTask('favicon')
+);
+
 require('./gulp/serve')(gulp, plugins, config, env);
 gulp.task('serve',
   gulp.series(
diff --git a/html/index.html b/html/index.html
index 57d4051449eab70b39c487bf09569ea020ef73a9..b44227de836252939ae2e895022d7432969ba299 100644
--- a/html/index.html
+++ b/html/index.html
@@ -15,7 +15,8 @@
 <div class="loader">
   <p>
     Lade<br />
-    <span class="spinner"></span><br />
+    <img inline src="logo.svg" class="spinner" />
+    <br />
     Karten &amp; Knoten...
   </p>
   <noscript>
diff --git a/package.json b/package.json
index 962f11008f7e2f8af3166662a913be90723124c7..3d23d94420f4fb92319c3b3b7103203c7d5de560 100644
--- a/package.json
+++ b/package.json
@@ -25,6 +25,7 @@
     "gulp-jsonminify": "^1.0.0",
     "gulp-kyh-inline-source": "^3.0.2",
     "gulp-load-plugins": "^1.5.0",
+    "gulp-real-favicon": "^0.2.2",
     "gulp-requirejs-optimize": "^1.2.0",
     "gulp-sass": "^3.1.0",
     "gulp-sass-lint": "^1.3.2",
diff --git a/scss/modules/_loader.scss b/scss/modules/_loader.scss
index b628d490fa6a4652a6c9e85e19192a19c0290ec2..a780a85539dc4248f374608836bf710a8edd49bf 100644
--- a/scss/modules/_loader.scss
+++ b/scss/modules/_loader.scss
@@ -7,17 +7,17 @@
 }
 
 .spinner {
-  animation: .6s spinner ease-in-out infinite alternate;
-  border-bottom: 2px solid $color-primary;
-  border-radius: 50%;
-  display: inline-block;
-  height: 64px;
-  margin-top: 10px;
-  width: 64px;
+  path {
+    &:first-of-type {
+      animation: 1s spinner ease-in-out infinite alternate;
+      opacity: 1;
+    }
+  }
 }
 
 @keyframes spinner {
   to {
-    transform: rotate(360deg);
+    filter: grayscale(.8);
+    opacity: .2;
   }
 }
diff --git a/yarn.lock b/yarn.lock
index afce416f0f76329356f1ec9bbceac66a16083847..430f7669759d1eaa557c6e87181fb57119453795 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -239,7 +239,7 @@ async-settle@^1.0.0:
   dependencies:
     async-done "^1.2.2"
 
-async@1.5.2:
+async@*, async@1.5.2:
   version "1.5.2"
   resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
 
@@ -381,6 +381,13 @@ binary-extensions@^1.0.0:
   version "1.8.0"
   resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774"
 
+binary@~0.3.0:
+  version "0.3.0"
+  resolved "https://registry.yarnpkg.com/binary/-/binary-0.3.0.tgz#9f60553bc5ce8c3386f3b553cff47462adecaa79"
+  dependencies:
+    buffers "~0.1.1"
+    chainsaw "~0.1.0"
+
 blob@0.0.4:
   version "0.0.4"
   resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921"
@@ -503,6 +510,10 @@ buffer-shims@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51"
 
+buffers@~0.1.1:
+  version "0.1.1"
+  resolved "https://registry.yarnpkg.com/buffers/-/buffers-0.1.1.tgz#b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb"
+
 bufferstreams@^1.1.0, bufferstreams@^1.1.1:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/bufferstreams/-/bufferstreams-1.1.1.tgz#0161373060ac5988eff99058731114f6e195d51e"
@@ -583,6 +594,12 @@ center-align@^0.1.1:
     align-text "^0.1.3"
     lazy-cache "^1.0.3"
 
+chainsaw@~0.1.0:
+  version "0.1.0"
+  resolved "https://registry.yarnpkg.com/chainsaw/-/chainsaw-0.1.0.tgz#5eab50b28afe58074d0d58291388828b5e5fbc98"
+  dependencies:
+    traverse ">=0.3.0 <0.4"
+
 chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:
   version "1.1.3"
   resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
@@ -597,7 +614,7 @@ charenc@~0.0.1:
   version "0.0.2"
   resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667"
 
-cheerio@^0.19.0:
+cheerio@*, cheerio@^0.19.0:
   version "0.19.0"
   resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.19.0.tgz#772e7015f2ee29965096d71ea4175b75ab354925"
   dependencies:
@@ -1716,6 +1733,15 @@ fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2:
     mkdirp ">=0.5 0"
     rimraf "2"
 
+fstream@~0.1.21:
+  version "0.1.31"
+  resolved "https://registry.yarnpkg.com/fstream/-/fstream-0.1.31.tgz#7337f058fbbbbefa8c9f561a28cab0849202c988"
+  dependencies:
+    graceful-fs "~3.0.2"
+    inherits "~2.0.0"
+    mkdirp "0.5"
+    rimraf "2"
+
 function-bind@^1.0.2, function-bind@^1.1.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771"
@@ -1898,6 +1924,12 @@ graceful-fs@4.X, graceful-fs@^4.0.0, graceful-fs@^4.1.2, graceful-fs@^4.1.6, gra
   version "4.1.11"
   resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
 
+graceful-fs@~3.0.2:
+  version "3.0.11"
+  resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-3.0.11.tgz#7613c778a1afea62f25c630a086d7f3acbbdd818"
+  dependencies:
+    natives "^1.1.0"
+
 "graceful-readlink@>= 1.0.0":
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
@@ -2036,6 +2068,14 @@ gulp-match@^1.0.3:
   dependencies:
     minimatch "^3.0.3"
 
+gulp-real-favicon@^0.2.2:
+  version "0.2.2"
+  resolved "https://registry.yarnpkg.com/gulp-real-favicon/-/gulp-real-favicon-0.2.2.tgz#050c9f68e55ef48a51e3e18eb86299a364391195"
+  dependencies:
+    gulp-util "^3.0.7"
+    rfg-api "^0.3.0"
+    through2 "^2.0.0"
+
 gulp-requirejs-optimize@^1.2.0:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/gulp-requirejs-optimize/-/gulp-requirejs-optimize-1.2.0.tgz#70c3f15ac17acbf22ce0c507e83d434365ca530b"
@@ -3011,6 +3051,13 @@ map-stream@^0.1.0, map-stream@~0.1.0:
   version "0.1.0"
   resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194"
 
+match-stream@~0.0.2:
+  version "0.0.2"
+  resolved "https://registry.yarnpkg.com/match-stream/-/match-stream-0.0.2.tgz#99eb050093b34dffade421b9ac0b410a9cfa17cf"
+  dependencies:
+    buffers "~0.1.1"
+    readable-stream "~1.0.0"
+
 matchdep@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/matchdep/-/matchdep-1.0.1.tgz#a57a33804491fbae208aba8f68380437abc2dca5"
@@ -3053,6 +3100,15 @@ merge@^1.2.0:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da"
 
+metaparser@^1.0.7:
+  version "1.0.7"
+  resolved "https://registry.yarnpkg.com/metaparser/-/metaparser-1.0.7.tgz#c0699a6686a07a8bce1ac06b62e9462c2e66aaca"
+  dependencies:
+    async "*"
+    cheerio "*"
+    mkdirp "*"
+    underscore "*"
+
 micromatch@2.3.11, micromatch@^2.1.5, micromatch@^2.3.7, micromatch@^2.3.8:
   version "2.3.11"
   resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
@@ -3113,16 +3169,16 @@ minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
 
-mkdirp@0.3.0:
-  version "0.3.0"
-  resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e"
-
-"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1:
+mkdirp@*, mkdirp@0.5, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1:
   version "0.5.1"
   resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
   dependencies:
     minimist "0.0.8"
 
+mkdirp@0.3.0:
+  version "0.3.0"
+  resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e"
+
 moment@^2.17.1:
   version "2.18.1"
   resolved "https://registry.yarnpkg.com/moment/-/moment-2.18.1.tgz#c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f"
@@ -3153,6 +3209,10 @@ nan@^2.3.0, nan@^2.3.2:
   version "2.5.1"
   resolved "https://registry.yarnpkg.com/nan/-/nan-2.5.1.tgz#d5b01691253326a97a2bbee9e61c55d8d60351e2"
 
+natives@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/natives/-/natives-1.1.0.tgz#e9ff841418a6b2ec7a495e939984f78f163e6e31"
+
 natural-compare@^1.4.0:
   version "1.4.0"
   resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
@@ -3222,6 +3282,13 @@ node-pre-gyp@^0.6.29:
     tar "^2.2.1"
     tar-pack "^3.4.0"
 
+node-rest-client@^1.4.1:
+  version "1.8.0"
+  resolved "https://registry.yarnpkg.com/node-rest-client/-/node-rest-client-1.8.0.tgz#8d3c566b817e27394cb7273783a41caefe3e5955"
+  dependencies:
+    debug "~2.2.0"
+    xml2js ">=0.2.4"
+
 node-sass@^4.2.0:
   version "4.5.1"
   resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.5.1.tgz#e8e119fe3c8213ad7e56ca618dd231e9e8b30f5b"
@@ -3442,6 +3509,10 @@ osenv@0, osenv@^0.1.4:
     os-homedir "^1.0.0"
     os-tmpdir "^1.0.0"
 
+"over@>= 0.0.5 < 1":
+  version "0.0.5"
+  resolved "https://registry.yarnpkg.com/over/-/over-0.0.5.tgz#f29852e70fd7e25f360e013a8ec44c82aedb5708"
+
 param-case@2.1.x:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247"
@@ -3617,6 +3688,15 @@ pseudomap@^1.0.1:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
 
+pullstream@~0.4.0:
+  version "0.4.1"
+  resolved "https://registry.yarnpkg.com/pullstream/-/pullstream-0.4.1.tgz#d6fb3bf5aed697e831150eb1002c25a3f8ae1314"
+  dependencies:
+    over ">= 0.0.5 < 1"
+    readable-stream "~1.0.31"
+    setimmediate ">= 1.0.2 < 2"
+    slice-stream ">= 1.0.0 < 2"
+
 punycode@^1.4.1:
   version "1.4.1"
   resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
@@ -3695,7 +3775,7 @@ readable-stream@1.1, readable-stream@~1.1.9:
     isarray "0.0.1"
     string_decoder "~0.10.x"
 
-"readable-stream@>=1.0.33-1 <1.1.0-0":
+"readable-stream@>=1.0.33-1 <1.1.0-0", readable-stream@~1.0.0, readable-stream@~1.0.31:
   version "1.0.34"
   resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c"
   dependencies:
@@ -3904,6 +3984,16 @@ restore-cursor@^1.0.1:
     exit-hook "^1.0.0"
     onetime "^1.0.0"
 
+rfg-api@^0.3.0:
+  version "0.3.0"
+  resolved "https://registry.yarnpkg.com/rfg-api/-/rfg-api-0.3.0.tgz#42745648547f254f35d70edccf7cd3f465d9390a"
+  dependencies:
+    fstream "^1.0.2"
+    metaparser "^1.0.7"
+    mkdirp "^0.5.0"
+    node-rest-client "^1.4.1"
+    unzip2 "^0.2.5"
+
 right-align@^0.1.1:
   version "0.1.3"
   resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef"
@@ -3960,7 +4050,7 @@ sass-lint@^1.10.2:
     path-is-absolute "^1.0.0"
     util "^0.10.3"
 
-sax@~1.2.1:
+sax@>=0.6.0, sax@~1.2.1:
   version "1.2.2"
   resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.2.tgz#fd8631a23bc7826bef5d871bdb87378c95647828"
 
@@ -4043,6 +4133,10 @@ set-value@^0.4.3:
     is-plain-object "^2.0.1"
     to-object-path "^0.3.0"
 
+"setimmediate@>= 1.0.2 < 2", setimmediate@~1.0.1:
+  version "1.0.5"
+  resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
+
 setprototypeof@1.0.2:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.2.tgz#81a552141ec104b88e89ce383103ad5c66564d08"
@@ -4067,6 +4161,12 @@ slice-ansi@0.0.4:
   version "0.0.4"
   resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35"
 
+"slice-stream@>= 1.0.0 < 2":
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/slice-stream/-/slice-stream-1.0.0.tgz#5b33bd66f013b1a7f86460b03d463dec39ad3ea0"
+  dependencies:
+    readable-stream "~1.0.31"
+
 sntp@1.x.x:
   version "1.0.9"
   resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
@@ -4442,6 +4542,10 @@ tough-cookie@~2.3.0:
   dependencies:
     punycode "^1.4.1"
 
+"traverse@>=0.3.0 <0.4":
+  version "0.3.9"
+  resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9"
+
 trim-newlines@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
@@ -4507,7 +4611,7 @@ unc-path-regex@^0.1.0:
   version "0.1.2"
   resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa"
 
-underscore@1.7.x:
+underscore@*, underscore@1.7.x:
   version "1.7.0"
   resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.7.0.tgz#6bbaf0877500d36be34ecaa584e0db9fef035209"
 
@@ -4549,6 +4653,17 @@ unpipe@~1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
 
+unzip2@^0.2.5:
+  version "0.2.5"
+  resolved "https://registry.yarnpkg.com/unzip2/-/unzip2-0.2.5.tgz#4ef7a579a78c15c51f550f6a053db194149c8992"
+  dependencies:
+    binary "~0.3.0"
+    fstream "~0.1.21"
+    match-stream "~0.0.2"
+    pullstream "~0.4.0"
+    readable-stream "~1.0.0"
+    setimmediate "~1.0.1"
+
 upper-case@^1.1.1:
   version "1.1.3"
   resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598"
@@ -4774,6 +4889,19 @@ xml-char-classes@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/xml-char-classes/-/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d"
 
+xml2js@>=0.2.4:
+  version "0.4.17"
+  resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.17.tgz#17be93eaae3f3b779359c795b419705a8817e868"
+  dependencies:
+    sax ">=0.6.0"
+    xmlbuilder "^4.1.0"
+
+xmlbuilder@^4.1.0:
+  version "4.2.1"
+  resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-4.2.1.tgz#aa58a3041a066f90eaa16c2f5389ff19f3f461a5"
+  dependencies:
+    lodash "^4.0.0"
+
 xmlhttprequest-ssl@1.5.3:
   version "1.5.3"
   resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d"