Push project up

This commit is contained in:
2026-08-23 12:38:19 -05:00
parent a348e975e3
commit dcd3b0525c
45 changed files with 1429 additions and 0 deletions

4
.editorconfig Normal file
View File

@@ -0,0 +1,4 @@
root = true
[*]
charset = utf-8

View File

@@ -1,2 +1,3 @@
# game-shell # game-shell
> **Note:** Meant to be both a shell and also starting base for games. In shell mode it loads PCK files such as assets, game, loggy-client, and store. In game mode you extend he scripts such as data_bridge and the shell replaces the old with the new. You export as game.pck

28
configs/games.cfg Normal file
View File

@@ -0,0 +1,28 @@
[lobby_load]
; Defaults to joning a lobby server bound to 8080.
; Has clients go through lobby to load a mode.
client1="client host_freeball freeball88"
client2="client join freeball88"
[only_game_server]
server="server_5010 game freeball"
[8ball_game_server]
server="server_5001 game 8ball"
client1="join_server 127.0.0.1 5001"
client2="join_server 127.0.0.1 5001"
[9ball_game_server]
server="server_5002 game 9ball"
client1="join_server 127.0.0.1 5002"
client2="join_server 127.0.0.1 5002"
[snooker_game_server]
server="server_5003 game snooker"
client1="join_server 127.0.0.1 5003"
client2="join_server 127.0.0.1 5003"
[freeball_game_server]
server="server_5004 game freeball"
client1="join_server 127.0.0.1 5004"
client2="join_server 127.0.0.1 5004"

17
globals/globals.gd Normal file
View File

@@ -0,0 +1,17 @@
extends Node
# NOTE: These should get overriden by '.pck' packs that load their own versions.
var game_data: GameData
var game_state: GameState
var lobby_data: LobbyData
var multiplayer_data: MultiplayerData
func cache_invalidate_load_resource(target: String) -> Resource:
# NOTE: Deep replace version b/c we don't want to use an autoloads
# that does this replasce before any nodes actually load.
ResourceLoader.load(target, "", ResourceLoader.CACHE_MODE_REPLACE_DEEP)
# NOTE: Let prior call propigate naturally. (Unsure when...)
# Enforce new script/node from pck called here.
return ResourceLoader.load(target, "", ResourceLoader.CACHE_MODE_IGNORE_DEEP)

1
globals/globals.gd.uid Normal file
View File

@@ -0,0 +1 @@
uid://biu64hvcxb1su

68
globals/message_bus.gd Normal file
View File

@@ -0,0 +1,68 @@
extends Node
var message_types: Dictionary[String, Array] = {}
func subscribe(id: String, callback: Callable) -> void:
if not message_types.has(id):
message_types.set(id, Array())
message_types.get(id).append(callback)
func clear_voided_listeners() -> void:
for mtype in message_types.keys():
var mlisteners: Array = message_types.get(mtype)
for mlistener in mlisteners:
if mlistener.is_valid(): continue
mlisteners.erase(mlistener)
func emit_local(id: String, data: Variant, expand: bool = false) -> void:
emit_propagation(id, data, expand)
# TODO: Need to actually validate client request. Also, message bus is more
# about server talking to clients than clients to server. I.E, reducing
# the number of needed @rpc method decorator bindings.
@rpc("any_peer", "call_remote", "reliable")
func emit_request(id: String, data: Variant, expand: bool = false) -> void:
if not multiplayer.is_server(): return
if not message_types.has(id):
push_error("'%s' not an existing message type to handle...", [id])
return
emit_propagation(id, data, expand)
@rpc("authority", "call_local", "reliable")
func emit_propagation(id: String, data: Variant, expand: bool = false) -> void:
if not message_types.has(id):
push_error("'%s' not an existing message type to handle...", [id])
return
for callback: Callable in message_types.get(id):
if data == null:
callback.call()
continue
if not expand:
callback.call(data)
else:
callback.callv(data)
@rpc("authority", "call_remote", "reliable")
func emit_propagation_clients_only(id: String, data: Variant, expand: bool = false) -> void:
if not message_types.has(id):
push_error("'%s' not an existing message type to handle...", [id])
return
for callback: Callable in message_types.get(id):
if data == null:
callback.call()
continue
if not expand:
callback.call(data)
else:
callback.callv(data)

View File

@@ -0,0 +1 @@
uid://dgkbelaqw2a2g

654
icon.svg Normal file
View File

@@ -0,0 +1,654 @@
<?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="645.000000pt" height="1280.000000pt" viewBox="0 0 645.000000 1280.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.15, written by Peter Selinger 2001-2017
</metadata>
<g transform="translate(0.000000,1280.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M3035 12786 c-16 -7 -40 -24 -52 -37 -73 -80 -222 -499 -238 -671 -7
-70 -10 -79 -42 -110 -65 -62 -78 -100 -77 -218 1 -71 7 -129 21 -177 l19 -73
-30 0 c-40 -1 -66 -22 -110 -92 -78 -124 -94 -186 -160 -629 -50 -337 -54
-357 -83 -400 -16 -24 -73 -116 -126 -205 -90 -150 -97 -167 -112 -249 -26
-151 -38 -454 -21 -562 27 -176 13 -197 -301 -469 -121 -105 -190 -192 -251
-318 -60 -121 -70 -152 -121 -371 -63 -269 -66 -297 -66 -565 0 -214 3 -259
23 -357 12 -61 29 -131 38 -155 9 -23 24 -101 34 -171 16 -115 17 -134 4 -190
-32 -137 -153 -309 -337 -481 -63 -59 -138 -136 -168 -172 -97 -117 -327 -455
-384 -563 -30 -58 -74 -129 -96 -156 -23 -28 -51 -70 -62 -95 -30 -70 -126
-279 -153 -335 -24 -50 -100 -361 -128 -525 -36 -206 -50 -386 -50 -645 -1
-280 6 -354 55 -590 108 -523 312 -924 652 -1281 339 -355 676 -582 1327 -894
712 -340 649 -301 1050 -646 259 -223 312 -265 386 -302 55 -28 249 -82 295
-82 48 0 110 41 200 133 86 87 139 171 174 277 20 60 41 94 106 175 150 187
210 292 312 550 67 170 81 221 112 423 42 266 35 395 -40 717 -55 235 -54 313
7 550 26 100 59 206 73 238 35 76 40 115 21 160 l-15 38 77 35 c77 36 77 36
187 181 61 80 169 207 240 282 226 235 675 774 790 946 188 282 342 670 406
1020 19 101 22 158 23 355 0 244 -11 369 -55 585 -24 123 -134 455 -187 567
-40 86 -180 303 -286 443 -86 114 -243 273 -338 341 -44 33 -127 94 -185 136
-57 43 -122 83 -143 89 -45 14 -44 11 -30 59 38 127 42 309 10 475 -46 235
-179 567 -306 762 -125 193 -304 378 -386 398 -37 10 -48 59 -41 185 5 90 2
124 -22 240 -15 76 -42 168 -60 210 -18 41 -35 96 -39 122 -4 26 -17 59 -29
75 -73 95 -178 209 -242 262 -89 74 -101 101 -85 191 14 78 6 133 -37 245 -43
113 -69 157 -145 248 -55 66 -60 75 -55 110 3 24 -4 70 -19 125 -13 48 -24
103 -24 123 0 27 -18 68 -69 155 -79 137 -117 182 -161 191 -29 5 -37 16 -77
100 -59 123 -129 200 -225 248 -76 38 -123 43 -173 21z m195 -186 c25 -55 48
-100 51 -100 4 0 10 12 13 26 6 22 9 24 22 13 14 -11 64 -101 64 -114 0 -15
-164 -2 -262 21 -92 22 -111 30 -128 54 -32 44 -35 81 -11 128 25 50 30 52 95
62 116 17 107 22 156 -90z m1 -231 c145 -35 266 -82 297 -116 21 -23 22 -33
22 -169 l0 -144 40 0 c32 0 40 -4 40 -18 0 -24 -19 -42 -44 -42 -11 0 -153 43
-315 96 -163 53 -318 99 -346 103 -80 11 -95 24 -95 80 0 59 34 191 52 202 26
17 30 8 26 -58 -2 -56 0 -68 13 -71 13 -2 19 11 28 58 13 65 29 74 44 24 5
-16 11 -36 13 -44 8 -23 44 40 44 77 0 17 -8 39 -17 49 -16 16 -15 17 30 10
27 -4 102 -21 168 -37z m454 -353 c22 -22 45 -81 45 -116 0 -19 -19 -40 -37
-40 -11 0 -12 14 -7 66 l7 66 -42 -7 c-39 -6 -41 -5 -41 17 0 14 3 28 7 31 13
14 45 6 68 -17z m-548 -76 c288 -74 407 -112 498 -157 92 -47 125 -83 125
-136 l0 -41 -46 62 c-26 36 -56 65 -70 68 -53 13 -53 13 -21 -235 16 -127 27
-234 24 -237 -13 -13 -733 220 -844 272 -68 33 -93 81 -93 181 0 126 46 224
123 262 23 12 48 21 56 21 8 0 120 -27 248 -60z m563 -374 c29 -88 42 -207 30
-279 -18 -116 -27 -89 -33 108 -4 116 -10 164 -26 210 -14 40 -16 54 -6 41 8
-10 23 -46 35 -80z m123 -136 c17 -69 16 -114 -2 -94 -8 8 -41 143 -41 166 0
5 5 8 12 6 7 -3 20 -37 31 -78z m-856 -59 c338 -107 582 -188 699 -231 152
-57 411 -188 451 -229 18 -19 31 -36 29 -38 -2 -2 -34 15 -71 38 -37 22 -104
57 -149 76 -85 36 -265 87 -275 78 -6 -7 45 -212 65 -262 7 -18 26 -50 43 -70
47 -59 60 -130 62 -331 0 -98 -2 -189 -6 -204 -10 -40 -33 -35 -40 10 -3 20
-8 52 -11 70 -9 56 -24 34 -24 -35 l0 -66 -25 23 c-14 13 -30 42 -36 64 -21
79 -40 124 -59 141 -25 22 -25 24 -5 -124 14 -107 13 -131 -3 -131 -4 0 -32
74 -62 165 -30 91 -58 165 -62 165 -4 0 -8 -56 -8 -124 0 -69 -4 -127 -9 -131
-9 -5 -18 21 -72 208 -13 47 -27 77 -36 77 -10 0 -13 -28 -13 -132 l-1 -133
-24 27 c-22 25 -34 67 -50 176 -8 52 -44 98 -69 89 -10 -4 -15 -10 -12 -15 9
-15 9 -186 -1 -189 -5 -2 -30 61 -55 139 -26 78 -50 144 -55 145 -24 8 -30
-15 -22 -82 12 -115 14 -165 4 -166 -5 0 -32 66 -60 147 -29 82 -57 150 -63
152 -9 3 -12 -27 -12 -102 0 -66 -4 -107 -11 -112 -17 -10 -23 6 -69 175 -23
86 -44 159 -46 163 -3 4 -11 5 -19 1 -23 -8 -18 -95 9 -188 13 -44 20 -84 16
-89 -5 -5 -36 -7 -70 -4 -44 3 -66 10 -81 25 -44 43 -75 310 -59 497 10 113
32 241 44 253 15 16 16 -16 5 -173 -9 -129 -10 -190 -1 -258 13 -101 40 -206
54 -206 4 0 6 10 3 23 -4 12 -7 124 -8 247 -2 233 0 247 45 368 21 55 23 56
71 37 13 -5 17 -2 17 12 0 24 -31 54 -85 81 -76 40 -2 24 222 -47z m-341 -7
c-8 -33 -27 -126 -42 -209 -14 -82 -31 -175 -36 -205 -14 -79 -2 -220 27 -329
14 -52 23 -96 21 -99 -12 -12 -35 10 -56 53 -22 45 -23 60 -24 275 -1 126 -4
232 -8 236 -4 4 -14 1 -23 -6 -28 -23 -28 -1 -1 84 36 109 135 280 153 262 2
-2 -3 -30 -11 -62z m1328 -48 c9 -58 16 -116 16 -129 0 -26 -23 -52 -38 -43
-22 13 -24 276 -2 276 4 0 15 -47 24 -104z m-131 -453 c83 -197 104 -295 112
-540 7 -191 3 -209 -48 -218 -41 -7 -139 16 -145 34 -3 10 8 12 54 10 l58 -4
14 55 c19 72 21 316 4 395 -20 90 -60 210 -102 302 -21 45 -36 84 -33 87 16
16 46 -26 86 -121z m228 -85 c39 -66 85 -108 120 -108 27 0 43 -30 92 -165 64
-177 67 -188 76 -283 5 -45 11 -85 14 -89 4 -3 14 0 23 8 14 11 15 26 10 90
-8 100 -33 193 -95 363 -28 76 -50 141 -48 143 8 7 67 -69 92 -118 25 -48 63
-179 84 -289 12 -59 51 -345 51 -371 0 -8 -16 -23 -35 -32 l-35 -17 0 65 c0
36 -2 65 -5 65 -3 0 -22 -7 -42 -15 -20 -9 -40 -12 -44 -8 -4 5 -15 78 -24
163 -23 217 -47 316 -102 409 -43 75 -46 31 -7 -120 29 -108 37 -161 42 -275
8 -154 16 -178 75 -215 l32 -20 -35 6 c-41 8 -76 30 -104 69 -19 25 -22 47
-27 219 -8 231 -16 262 -128 482 -93 184 -90 176 -52 141 17 -16 49 -61 72
-98z m-1585 -80 c13 -79 24 -148 24 -154 0 -7 -12 -15 -27 -19 -16 -3 -41 -18
-57 -33 -23 -21 -28 -23 -22 -8 3 10 16 97 28 192 12 96 24 172 26 169 2 -2
15 -68 28 -147z m1523 -30 c55 -122 81 -280 81 -490 0 -101 -3 -128 -13 -128
-39 0 -44 29 -50 255 -6 196 -9 229 -32 304 -40 133 -32 162 14 59z m-1204
-280 c585 -216 719 -261 1090 -368 348 -100 427 -132 655 -263 171 -98 284
-177 271 -190 -10 -10 -22 -8 -99 21 -14 5 -4 -24 68 -191 87 -206 127 -454
110 -682 -22 -281 -23 -303 -10 -335 11 -27 11 -32 -6 -45 -23 -17 -66 -19
-134 -4 -41 9 -51 15 -58 37 -12 46 -5 162 18 267 28 128 37 350 21 466 -11
69 -43 193 -112 422 -13 46 17 14 52 -54 77 -154 113 -375 106 -654 -4 -161
-8 -205 -30 -285 -17 -68 -21 -97 -13 -102 19 -13 53 -9 76 10 30 25 50 166
50 367 0 228 -32 403 -107 584 -19 47 -50 124 -68 171 -38 96 -60 119 -167
175 -98 52 -216 89 -411 131 -94 20 -210 52 -259 70 -104 41 -135 43 -143 12
-7 -30 9 -315 18 -324 4 -4 16 1 27 11 15 13 20 31 20 65 0 77 12 200 20 200
13 0 39 -102 45 -175 11 -136 17 -175 24 -175 18 0 36 100 36 193 0 96 0 98
17 77 21 -26 21 -28 41 -180 9 -63 21 -128 28 -145 l12 -30 7 25 c14 43 11
164 -6 250 -18 98 -15 114 14 73 32 -45 48 -120 62 -295 13 -158 13 -158 38
-158 l25 0 -6 108 c-5 89 -34 239 -62 327 -5 15 0 12 19 -10 122 -143 148
-726 47 -1077 -23 -78 -57 -151 -82 -174 -16 -15 -17 -13 -12 23 2 21 24 181
47 355 39 296 41 317 24 321 -22 6 -21 10 -58 -208 -17 -99 -39 -212 -50 -252
-25 -93 -80 -214 -92 -206 -7 3 -8 35 -4 82 7 74 -3 131 -22 131 -5 0 -16 -26
-26 -57 -32 -101 -57 -163 -67 -163 -5 0 -9 93 -9 225 0 192 -2 225 -15 225
-17 0 -20 -12 -35 -140 -11 -101 -49 -198 -91 -236 l-22 -19 7 155 c3 85 9
179 12 208 5 43 4 52 -9 52 -21 0 -23 -8 -43 -223 -13 -138 -21 -190 -31 -194
-8 -3 -15 -4 -17 -2 -2 2 -11 105 -21 229 -9 124 -18 227 -21 229 -11 12 -34
-77 -34 -133 0 -35 -9 -117 -20 -181 -11 -64 -20 -121 -20 -126 0 -5 -6 -9
-13 -9 -10 0 -18 46 -31 173 -27 276 -28 277 -42 277 -11 0 -14 -40 -16 -192
-3 -187 -4 -193 -24 -196 -19 -3 -22 8 -48 215 -26 202 -36 246 -52 231 -3 -3
-10 -100 -16 -215 -10 -188 -17 -237 -33 -221 -3 3 -19 113 -36 244 -16 131
-32 240 -34 242 -15 16 -23 -28 -29 -165 -8 -178 -12 -203 -32 -203 -8 0 -14
3 -14 8 -1 24 -59 365 -64 369 -16 17 -24 -25 -30 -174 -7 -158 -16 -205 -35
-175 -4 7 -23 95 -42 197 -18 102 -37 185 -41 185 -20 0 -22 -300 -2 -357 5
-13 4 -15 -5 -7 -22 20 -82 207 -97 306 -9 55 -14 127 -12 160 4 49 2 58 -11
56 -23 -5 -33 -100 -26 -248 3 -69 8 -142 11 -162 5 -29 3 -38 -8 -38 -10 0
-27 52 -58 178 -35 145 -44 201 -49 307 l-6 130 -20 -35 c-28 -49 -26 -232 4
-380 24 -119 25 -130 11 -130 -48 0 -119 353 -120 596 0 193 31 342 106 499
35 74 104 189 110 183 2 -2 -17 -66 -42 -142 -28 -87 -47 -166 -51 -210 -6
-82 3 -80 37 9 39 102 99 210 135 245 19 19 35 29 35 24 0 -6 -16 -57 -35
-114 -46 -136 -47 -202 -3 -152 14 14 101 198 129 271 6 14 13 21 19 15 5 -5
-6 -59 -26 -129 -37 -129 -41 -167 -20 -204 15 -27 12 -33 57 98 30 87 67 158
93 181 20 16 21 23 -10 -142 -24 -134 -26 -168 -5 -168 5 0 30 62 57 138 52
150 51 148 61 139 3 -4 1 -49 -6 -100 -10 -71 -10 -103 -2 -135 7 -23 15 -42
20 -42 4 0 25 50 46 111 34 97 55 132 70 117 2 -2 -5 -37 -16 -78 -19 -71 -21
-151 -4 -168 14 -15 64 59 91 137 16 44 35 81 42 81 16 0 16 0 -10 -107 -19
-82 -20 -95 -8 -119 l14 -26 17 21 c9 11 22 51 29 87 20 115 64 168 55 66 -15
-169 -15 -192 5 -192 14 0 22 11 30 43 36 133 44 157 57 157 10 0 13 -28 13
-131 0 -119 2 -130 18 -127 13 3 21 26 37 118 15 87 24 115 35 115 12 0 17
-27 25 -140 8 -117 13 -140 27 -143 19 -4 26 33 29 143 4 154 -6 172 -106 194
-53 12 -361 135 -700 281 -92 39 -246 119 -284 146 -10 8 14 24 28 19 9 -4
102 -38 206 -77z m-335 9 c0 -2 -47 -97 -105 -211 -139 -274 -140 -279 -140
-498 0 -209 12 -243 39 -110 68 337 171 638 241 708 47 47 44 22 -11 -87 -114
-229 -159 -409 -158 -644 0 -172 14 -272 60 -417 14 -44 24 -82 21 -84 -13
-13 -77 80 -91 132 -21 75 -45 131 -63 145 -18 16 -17 6 9 -107 12 -52 19 -97
15 -100 -3 -4 -23 2 -44 13 -143 74 -192 345 -137 758 19 137 21 145 45 145
23 0 23 -8 4 -80 -68 -251 -54 -618 28 -725 9 -11 17 -18 20 -15 3 3 -2 70 -9
150 -19 203 -19 396 1 500 20 104 73 243 126 332 22 37 53 97 69 133 25 55 33
65 55 65 14 0 25 -2 25 -3z m1749 -665 c27 -53 58 -158 78 -265 25 -133 25
-496 0 -622 -24 -120 -60 -228 -100 -295 l-32 -55 -3 47 c-2 27 4 87 13 135
46 259 55 319 66 438 17 193 -2 427 -46 579 -27 90 -13 111 24 38z m84 9 c29
-49 66 -156 86 -249 56 -254 58 -621 5 -829 -17 -67 -71 -183 -85 -183 -16 0
-10 159 10 238 34 134 45 232 45 402 0 184 -17 314 -64 509 -17 67 -30 126
-30 132 0 18 16 8 33 -20z m246 -141 c16 -30 33 -77 40 -103 20 -83 62 -465
68 -627 5 -139 3 -164 -17 -245 -27 -107 -40 -136 -74 -159 -31 -20 -31 -16
-6 76 51 186 65 479 34 700 -13 93 -72 352 -99 433 l-7 20 17 -20 c9 -11 29
-45 44 -75z m-106 22 c51 -112 89 -334 103 -589 7 -138 -3 -226 -47 -423 -31
-135 -46 -167 -69 -144 -5 5 5 101 22 214 24 163 30 240 31 375 0 172 -1 183
-57 493 -13 72 -20 132 -16 132 4 0 19 -26 33 -58z m445 -275 c103 -206 132
-339 132 -611 0 -99 -3 -232 -7 -293 -5 -100 -8 -113 -24 -113 -27 0 -33 38
-23 138 5 48 9 179 8 292 0 172 -4 221 -22 304 -24 107 -73 255 -116 350 -45
98 -3 45 52 -67z m76 26 c35 -61 42 -79 30 -81 -30 -7 -62 27 -82 87 -19 56
-19 71 -1 71 4 0 28 -35 53 -77z m110 -201 c58 -116 85 -191 110 -311 34 -162
50 -319 42 -433 -8 -128 -22 -169 -61 -180 -36 -9 -51 3 -36 31 11 19 9 21
-17 21 -48 0 -57 21 -43 93 7 34 15 137 18 229 6 178 -7 297 -47 428 -11 36
-20 76 -20 89 l0 24 25 -23 c30 -28 30 -28 6 43 -11 32 -18 57 -16 57 3 0 20
-31 39 -68z m-2619 -228 c409 -235 495 -278 590 -299 126 -27 423 -101 620
-155 192 -52 246 -63 537 -110 220 -36 303 -56 451 -110 108 -40 419 -132 487
-145 l35 -6 -45 40 c-56 51 -38 52 67 7 289 -124 432 -221 562 -380 105 -130
92 -124 -70 31 -108 103 -186 157 -334 230 -121 61 -145 69 -145 51 0 -18 53
-50 144 -88 304 -127 540 -426 695 -882 55 -162 66 -188 83 -188 19 0 1 79
-53 225 -28 77 -58 166 -65 198 -9 36 -40 100 -85 175 -76 125 -75 126 20 15
109 -128 172 -225 242 -368 149 -306 213 -576 226 -940 19 -572 -123 -1062
-450 -1550 -145 -217 -362 -484 -379 -467 -5 5 50 87 141 210 213 284 273 376
357 547 139 283 242 652 274 980 28 287 -5 603 -94 904 -54 181 -142 393 -189
456 -14 18 -16 18 -22 4 -3 -9 24 -97 63 -200 171 -453 207 -616 206 -939 0
-195 -14 -322 -60 -550 -67 -336 -195 -641 -393 -935 -114 -171 -320 -448
-423 -570 -82 -98 -259 -273 -378 -375 -224 -191 -652 -471 -993 -650 -97 -51
-194 -108 -217 -127 -47 -41 -94 -120 -175 -295 -32 -71 -63 -128 -68 -128 -8
0 -5 99 6 202 1 9 -2 18 -8 20 -9 3 -27 -42 -49 -117 -6 -18 -7 -19 -17 -3 -7
13 0 56 26 165 56 227 89 286 234 410 61 52 125 89 350 203 462 234 565 305
816 561 303 310 582 689 725 984 122 250 255 669 301 947 29 169 33 217 33
388 1 225 -11 313 -80 595 -80 323 -120 421 -259 636 -137 211 -233 336 -299
388 -35 28 -66 51 -69 51 -3 0 43 -100 103 -222 76 -156 126 -274 165 -391
139 -416 207 -799 185 -1037 -48 -518 -93 -737 -230 -1115 -171 -476 -294
-685 -587 -1008 -128 -141 -351 -353 -472 -450 -105 -84 -197 -142 -325 -207
-60 -30 -107 -59 -105 -65 2 -5 11 -9 19 -8 26 3 358 191 452 255 270 185 575
506 817 863 182 269 286 479 343 695 17 63 48 162 69 220 47 127 59 182 103
478 33 215 49 282 67 282 31 0 -4 -262 -87 -640 -90 -411 -265 -793 -528
-1154 -190 -260 -492 -584 -654 -701 -113 -82 -435 -265 -679 -386 -281 -141
-350 -207 -429 -411 -20 -51 -38 -95 -41 -98 -8 -8 7 127 23 204 20 103 61
180 158 300 48 59 86 111 84 117 -2 5 -61 -41 -131 -101 -71 -61 -130 -110
-132 -110 -2 0 1 15 6 33 5 17 14 66 19 107 9 83 1 72 138 183 47 38 69 62 66
72 -9 23 -19 19 -101 -46 -41 -33 -79 -57 -83 -52 -7 9 -90 325 -90 345 0 7
53 40 118 72 216 108 390 238 544 409 389 431 677 1043 770 1638 19 125 22
184 23 449 0 308 -3 355 -47 665 -15 106 -26 157 -39 174 -17 21 -19 21 -25 6
-7 -18 26 -329 52 -495 26 -166 34 -343 23 -500 -23 -337 -94 -663 -201 -925
-50 -123 -252 -518 -326 -639 -158 -257 -439 -535 -679 -674 -128 -73 -222
-121 -227 -114 -2 4 -7 27 -11 52 -9 58 -17 71 -34 61 -11 -7 -11 -42 4 -217
11 -124 18 -315 19 -469 1 -233 -1 -274 -23 -390 -41 -227 -21 -434 61 -630
14 -33 38 -116 52 -185 23 -105 40 -151 102 -282 63 -130 78 -173 90 -245 7
-49 18 -116 24 -150 6 -37 28 -98 54 -150 25 -48 52 -116 60 -150 17 -67 35
-260 36 -381 0 -105 11 -121 112 -160 66 -26 97 -32 156 -32 39 0 72 -4 72 -9
0 -14 -20 -18 -162 -32 -70 -7 -133 -16 -139 -20 -6 -4 -23 -78 -38 -165 -21
-126 -29 -160 -42 -162 -28 -5 -32 43 -8 109 32 87 23 207 -30 414 -39 153
-48 173 -186 450 -79 160 -176 346 -215 415 -187 331 -232 605 -175 1071 25
202 85 615 99 685 8 39 10 67 4 70 -5 3 -12 4 -15 1 -6 -6 -92 -366 -127 -535
-72 -343 -79 -649 -19 -882 3 -14 3 -22 -1 -19 -16 15 -67 221 -78 316 -19
166 9 426 82 747 16 72 45 201 65 286 74 325 101 556 91 775 -14 312 -78 497
-275 797 -184 281 -358 463 -660 692 -101 77 -223 175 -272 218 -90 80 -155
128 -170 128 -5 0 -21 -13 -35 -29 -15 -17 -40 -33 -58 -37 -59 -12 -151 -61
-232 -122 -110 -83 -527 -493 -623 -612 -196 -243 -362 -591 -421 -879 -85
-419 -10 -991 201 -1518 101 -255 170 -388 214 -417 18 -12 25 -26 25 -47 0
-21 12 -43 43 -77 70 -76 89 -108 73 -121 -11 -9 -35 17 -118 126 -171 225
-208 295 -296 558 -152 453 -224 847 -224 1230 -1 344 35 485 220 865 83 170
97 194 187 298 128 149 512 540 621 633 135 114 144 125 69 73 -175 -119 -274
-203 -461 -389 -337 -335 -470 -514 -569 -763 -65 -166 -92 -319 -132 -769
-14 -159 -21 -203 -32 -203 -19 0 -9 406 13 540 49 282 169 605 302 806 47 72
482 516 614 626 96 80 425 325 468 347 20 11 26 10 36 -5 11 -15 18 -15 46 -6
56 20 103 15 142 -15 20 -16 105 -86 189 -157 208 -175 338 -271 351 -258 18
18 -11 109 -51 161 -93 124 -379 435 -433 471 -54 36 -160 70 -217 70 -30 0
-179 -80 -247 -132 -87 -67 -344 -299 -344 -310 0 -31 126 53 246 164 58 54
138 117 177 141 68 40 196 91 206 81 2 -2 2 -5 0 -7 -2 -2 -49 -39 -104 -83
-55 -44 -170 -134 -255 -199 -432 -329 -751 -664 -929 -974 -122 -214 -204
-446 -249 -706 -106 -608 -3 -1332 256 -1801 124 -225 382 -562 583 -763 237
-235 414 -345 787 -487 672 -256 1093 -502 1466 -854 56 -53 114 -101 130
-108 l29 -13 -7 -91 c-3 -50 -8 -93 -11 -96 -17 -17 -72 23 -173 124 -94 93
-123 116 -160 128 -35 10 -48 19 -52 36 -4 17 -31 39 -90 73 -47 27 -175 105
-286 173 -231 141 -361 208 -640 330 -274 119 -396 182 -554 283 -74 48 -175
112 -223 142 -107 66 -221 164 -431 369 -177 173 -292 310 -381 455 -58 95
-98 132 -136 127 -11 -2 -34 34 -77 120 -108 219 -181 416 -237 638 -64 257
-85 429 -85 715 0 355 49 659 166 1015 42 129 48 142 134 259 50 67 88 126 85
132 -4 5 -25 -5 -47 -23 l-41 -32 7 29 c15 60 186 313 350 519 167 209 279
341 446 526 113 125 173 205 230 304 57 99 69 103 162 47 48 -30 92 -46 162
-61 177 -39 246 -69 378 -167 106 -78 193 -170 278 -292 101 -145 326 -447
399 -536 36 -44 124 -141 196 -216 160 -167 245 -285 330 -454 76 -151 112
-278 121 -424 6 -86 2 -124 -22 -282 -7 -39 13 -69 44 -69 37 0 238 145 332
240 155 154 309 348 295 370 -5 8 -71 -52 -189 -172 -204 -207 -403 -374 -422
-355 -3 3 -1 22 6 42 9 28 24 43 67 67 117 66 364 330 494 528 118 179 269
481 269 539 0 44 -30 2 -94 -134 -75 -157 -181 -333 -279 -464 -130 -173 -355
-391 -404 -391 -9 0 -13 18 -13 63 0 72 20 122 73 185 78 93 242 350 303 475
39 81 92 215 135 347 73 220 95 330 67 330 -10 0 -21 -30 -37 -101 -78 -348
-251 -691 -507 -1007 l-43 -53 -11 38 c-6 21 -17 47 -25 57 -29 39 -18 81 65
239 140 269 219 482 264 716 54 279 117 710 107 728 -6 10 -11 13 -11 8 0 -6
-23 -139 -50 -295 -81 -456 -149 -703 -256 -930 -68 -142 -153 -280 -174 -280
-11 0 -22 22 -36 70 -21 70 -17 87 6 30 l13 -31 28 43 c77 115 183 415 224
631 56 303 84 586 126 1287 25 426 29 611 13 617 -6 2 -14 -4 -18 -13 -4 -10
-18 -236 -31 -503 -58 -1128 -115 -1488 -292 -1846 -37 -74 -69 -115 -89 -115
-17 0 2 76 49 202 80 212 119 429 162 913 33 376 99 1267 98 1333 -1 50 -15
84 -29 70 -9 -10 -21 -129 -43 -423 -70 -936 -94 -1221 -107 -1310 -18 -127
-68 -315 -138 -525 -73 -215 -66 -201 -81 -160 -20 52 -18 73 14 164 33 93 59
218 95 461 28 183 31 225 17 225 -5 0 -49 -160 -97 -356 -49 -196 -92 -360
-95 -366 -4 -6 -12 -7 -18 -4 -20 12 -12 104 19 219 31 117 44 232 140 1232
80 844 88 973 57 962 -18 -6 -25 -52 -37 -257 -6 -107 -28 -370 -50 -585 -22
-214 -49 -496 -60 -625 -25 -290 -42 -395 -86 -530 -18 -58 -38 -141 -44 -185
-20 -143 -12 -142 -100 -10 -77 116 -78 119 -57 130 20 9 25 30 49 185 54 346
70 500 50 500 -8 0 -69 -241 -118 -465 -18 -83 -24 -135 -20 -170 l6 -49 -77
76 c-61 61 -76 82 -75 105 0 16 22 176 47 356 37 256 46 340 40 385 -4 31 -10
50 -13 42 -3 -8 -35 -175 -72 -370 -52 -276 -70 -356 -82 -358 -31 -6 -28 63
14 285 30 165 41 253 45 363 3 90 2 141 -4 135 -5 -5 -33 -163 -63 -350 -29
-187 -56 -346 -60 -354 -5 -9 -13 -3 -28 22 -35 55 -38 90 -12 132 24 39 27
66 50 440 11 184 6 241 -18 226 -14 -8 -84 -432 -97 -588 -4 -46 -11 -83 -16
-83 -19 0 -49 41 -49 68 0 15 7 45 14 67 8 22 19 123 25 225 6 102 13 218 16
258 6 73 -9 152 -25 135 -5 -4 -29 -136 -55 -293 -26 -157 -49 -287 -51 -289
-2 -3 -9 0 -16 7 -8 8 -7 83 3 294 17 343 17 313 0 313 -11 0 -21 -45 -42
-195 -16 -107 -28 -196 -29 -197 0 -2 -9 -3 -20 -3 -19 0 -20 7 -20 255 0 241
-1 255 -18 255 -17 0 -21 -20 -40 -182 -12 -101 -25 -211 -28 -245 -4 -35 -10
-63 -14 -63 -14 0 -20 77 -20 277 0 193 -11 303 -31 303 -5 0 -9 -10 -9 -22 0
-151 -39 -440 -61 -453 -11 -8 -11 47 1 277 10 205 1 271 -37 276 l-23 3 0
-265 c0 -225 -2 -266 -14 -266 -19 0 -22 30 -35 330 -11 244 -22 320 -48 320
-16 0 -16 -11 1 -245 23 -299 23 -299 6 -303 -13 -2 -22 50 -53 311 -44 360
-55 547 -38 696 26 239 115 547 221 766 59 122 170 300 230 369 27 30 31 39
19 47 -8 5 -17 9 -21 9 -17 0 -173 -200 -224 -287 -166 -281 -261 -609 -294
-1020 -11 -137 -10 -148 51 -521 38 -237 48 -362 30 -362 -12 0 -15 11 -41
140 -70 347 -94 668 -66 890 56 440 190 787 416 1075 26 34 52 71 59 83 10 19
9 22 -8 22 -41 0 -262 -274 -331 -410 -46 -91 -111 -274 -145 -410 -74 -294
-78 -474 -17 -993 23 -197 42 -361 42 -366 0 -5 -18 -12 -41 -16 -38 -7 -43
-5 -71 29 -34 42 -45 44 -82 15 l-26 -20 -10 23 c-13 31 -92 352 -124 506 -30
142 -33 246 -11 454 13 134 24 170 67 228 14 19 20 51 25 128 3 56 9 102 14
102 4 0 10 19 14 43 12 77 36 151 79 238 105 210 242 357 416 444 30 15 72 43
93 61 23 22 47 34 65 34 18 0 133 -60 317 -166z m3245 -1478 c112 -226 220
-644 237 -917 6 -97 -2 -209 -16 -209 -4 0 -15 66 -25 148 -51 432 -89 582
-250 995 -25 66 -46 122 -46 125 0 3 11 -5 25 -18 14 -13 47 -69 75 -124z
m-3601 -1627 c30 -42 30 -42 12 -68 -60 -86 -115 -343 -153 -716 -21 -207 -17
-949 5 -1140 30 -247 66 -409 111 -491 8 -16 15 -24 16 -18 0 6 -16 122 -35
257 -60 430 -69 530 -69 817 0 157 5 306 12 365 17 132 151 925 158 934 2 2
72 -50 156 -116 84 -66 189 -146 233 -180 44 -33 99 -80 123 -103 122 -122
386 -486 450 -620 40 -82 46 -105 48 -167 1 -39 8 -82 16 -95 l13 -23 3 25 c6
41 19 44 25 5 4 -25 0 -53 -14 -87 -20 -51 -19 -59 12 -94 16 -17 20 -44 25
-170 7 -168 17 -102 -121 -829 -143 -756 -149 -799 -134 -985 12 -148 42 -303
104 -535 25 -93 45 -173 45 -177 0 -5 -9 -8 -20 -8 -26 0 -16 -27 13 -36 12
-3 32 -16 45 -27 20 -19 232 -414 232 -434 0 -5 -61 -63 -135 -131 -104 -93
-142 -122 -163 -122 -18 0 -51 19 -97 57 -237 191 -399 266 -1055 488 -274 92
-356 133 -483 239 -85 71 -72 80 22 16 124 -82 199 -119 376 -180 189 -64 534
-197 685 -263 141 -61 216 -103 393 -225 96 -65 142 -91 149 -84 13 13 -15 52
-57 79 -17 11 -142 89 -278 173 -137 84 -246 154 -243 157 7 8 263 -119 366
-182 52 -31 125 -79 163 -106 70 -51 84 -48 44 12 -33 48 -97 94 -259 181 -79
43 -161 89 -183 103 -38 24 -38 25 -10 19 48 -11 162 -62 259 -117 200 -112
229 -127 233 -123 5 5 -110 101 -178 147 -31 21 -103 63 -160 95 -120 65 -125
68 -84 59 50 -12 209 -90 324 -159 60 -36 112 -66 117 -66 4 0 -8 16 -27 36
-83 86 -397 266 -624 357 -110 44 -203 72 -212 63 -2 -2 53 -35 124 -72 175
-93 183 -98 174 -113 -6 -9 -55 5 -196 59 -104 38 -191 72 -193 75 -3 2 7 10
22 16 28 13 22 33 -14 42 -22 6 -84 -56 -77 -76 2 -7 32 -22 68 -35 101 -36
279 -124 279 -139 0 -7 -2 -13 -4 -13 -2 0 -87 31 -187 70 -101 38 -187 70
-191 70 -5 0 -8 -8 -8 -19 0 -14 34 -32 160 -82 148 -59 194 -89 125 -81 -30
4 -149 46 -236 83 -47 21 -53 27 -94 108 -33 67 -56 97 -101 136 -85 73 -113
91 -185 118 -92 35 -135 58 -206 112 -109 81 -148 139 -408 605 -75 135 -147
255 -160 266 -17 16 -28 44 -40 105 -10 46 -50 172 -90 280 -130 350 -151 486
-142 924 5 256 15 351 59 530 21 90 55 182 63 173 2 -2 -2 -26 -10 -52 -22
-73 -62 -289 -75 -401 -16 -146 -14 -440 5 -589 50 -407 186 -809 422 -1251
47 -88 105 -189 128 -225 42 -66 164 -203 129 -145 -362 595 -545 1103 -594
1645 -31 346 12 755 115 1093 19 64 35 120 35 124 0 3 2 4 5 1 3 -3 -8 -67
-25 -142 -138 -620 -130 -1088 27 -1606 110 -367 345 -845 534 -1090 109 -142
136 -165 53 -45 -78 113 -215 350 -284 490 -371 763 -442 1509 -219 2305 47
168 142 431 147 406 2 -9 -19 -92 -47 -184 -236 -781 -247 -1266 -43 -1849 71
-203 161 -409 294 -674 127 -254 166 -319 265 -446 69 -89 117 -131 128 -113
8 13 -27 68 -93 149 -81 99 -160 231 -271 451 -196 392 -280 648 -341 1048
-27 176 -42 392 -35 487 27 337 116 851 190 1089 28 89 40 114 51 104 8 -8 -8
-95 -77 -423 -126 -606 -137 -965 -38 -1360 46 -182 176 -562 247 -723 46
-104 283 -510 313 -538 14 -12 23 -14 30 -7 14 14 -3 48 -107 204 -128 191
-203 364 -299 684 -65 215 -121 451 -142 590 -23 162 -23 523 0 730 41 351 74
579 117 790 36 177 48 217 63 212 14 -5 17 20 -38 -312 -86 -521 -110 -783
-102 -1107 9 -363 68 -611 282 -1183 31 -84 111 -223 121 -212 2 1 -22 60 -52
130 -139 326 -230 690 -264 1057 -15 166 -12 549 5 736 24 259 55 458 122 767
33 153 49 194 69 175 2 -3 -7 -58 -21 -123 -26 -117 -127 -914 -140 -1095 -17
-247 53 -727 155 -1060 63 -204 184 -474 233 -518 19 -17 19 -16 2 23 -225
527 -316 962 -316 1520 0 421 48 778 165 1238 43 166 50 186 62 174 8 -7 -43
-293 -92 -523 -47 -221 -62 -329 -75 -534 -32 -526 44 -1061 211 -1488 36 -94
69 -164 70 -152 0 3 -16 52 -35 109 -71 212 -130 494 -155 741 -30 308 -38
642 -20 850 14 156 75 587 106 740 51 253 110 417 140 387 3 -3 -12 -67 -34
-144 -70 -241 -93 -364 -103 -543 -6 -91 -19 -239 -30 -330 -54 -440 -26 -889
82 -1325 32 -129 120 -407 136 -432 31 -47 30 -20 -2 75 -58 166 -102 361
-132 577 -35 255 -18 1246 27 1595 6 41 22 122 36 178 26 105 106 319 126 337
8 7 9 4 4 -10 -16 -43 -65 -277 -90 -420 -55 -328 -61 -417 -61 -895 0 -567
22 -801 100 -1084 40 -144 104 -308 124 -314 20 -7 8 67 -24 145 -142 350
-183 1064 -104 1833 19 184 35 274 92 520 14 58 30 138 37 178 6 39 13 72 15
72 2 0 17 -19 34 -41z m-1654 -2301 c15 -104 54 -268 111 -466 20 -68 33 -126
31 -128 -6 -6 -82 207 -108 302 -31 114 -49 231 -53 349 -3 61 -2 94 0 75 3
-19 11 -79 19 -132z m4175 -232 c0 -14 -174 -131 -330 -220 -197 -114 -216
-128 -205 -145 4 -8 51 12 139 59 74 38 139 70 145 70 17 0 -15 -69 -47 -103
-15 -16 -63 -50 -107 -77 -97 -58 -180 -129 -167 -142 5 -5 77 16 175 53 92
34 170 59 174 55 5 -4 -8 -21 -27 -38 -34 -29 -34 -29 -8 -24 14 3 33 9 42 12
38 15 11 -19 -51 -62 -87 -61 -86 -60 -78 -73 4 -8 16 -6 38 7 18 11 55 32 82
48 l50 28 -26 -34 c-14 -19 -77 -70 -140 -113 -63 -43 -129 -92 -147 -110 -27
-26 -30 -33 -18 -45 11 -12 36 -2 164 65 82 43 154 74 159 70 4 -5 -14 -28
-42 -50 -90 -76 -110 -95 -104 -101 3 -4 36 8 73 24 38 17 74 30 82 28 8 -2
-46 -54 -121 -116 -121 -102 -156 -142 -125 -142 6 0 60 25 122 56 61 30 121
60 134 64 49 19 31 -10 -42 -65 -41 -32 -71 -62 -67 -66 5 -5 38 7 73 26 36
19 68 35 73 35 24 1 -9 -31 -138 -134 -80 -63 -141 -117 -136 -120 5 -4 76 18
157 49 81 30 151 55 155 55 25 0 1 -22 -73 -70 -46 -29 -78 -55 -73 -57 6 -2
51 10 100 27 97 33 105 34 105 21 0 -5 -63 -44 -140 -86 -78 -42 -140 -82
-140 -90 0 -8 6 -12 13 -10 38 13 227 65 235 65 6 0 14 -12 20 -27 l9 -28 -56
0 c-42 -1 -69 -8 -108 -29 -29 -16 -53 -33 -53 -37 0 -4 24 -1 53 7 110 29
104 12 -18 -49 -52 -26 -95 -51 -95 -57 0 -14 7 -13 132 15 70 16 115 22 121
16 6 -6 -33 -31 -104 -66 -126 -63 -125 -63 -116 -71 5 -5 40 3 140 32 10 3
17 0 17 -8 -1 -22 -187 -101 -250 -106 -65 -5 -181 30 -315 95 l-80 38 193 3
c156 2 192 5 192 16 0 8 -12 17 -27 20 -27 6 -254 25 -301 26 -49 0 -9 17 55
24 113 11 253 57 253 82 0 18 -4 18 -210 -15 -120 -19 -177 -25 -182 -18 -11
18 2 27 41 27 51 0 125 23 172 55 35 23 104 103 96 111 -2 2 -62 -23 -134 -56
-72 -33 -140 -60 -151 -60 -10 0 -27 9 -37 20 -10 11 -33 23 -53 26 -34 7 -32
8 64 49 126 53 143 62 177 94 27 25 62 80 55 86 -2 1 -41 -19 -88 -46 -74 -43
-91 -49 -142 -49 -32 0 -58 3 -58 8 0 4 37 29 81 56 66 40 91 63 136 123 55
75 103 151 103 166 0 21 -32 -4 -151 -114 -71 -67 -133 -119 -136 -115 -4 4 5
31 20 61 14 30 22 57 17 60 -5 3 -31 -23 -57 -58 -26 -35 -52 -63 -58 -63 -15
1 -13 6 137 244 111 176 138 226 127 233 -18 11 -22 6 -159 -181 -62 -85 -117
-159 -122 -165 -20 -20 5 59 38 124 38 73 49 119 35 140 -17 26 -36 3 -76 -93
-37 -89 -55 -116 -55 -82 0 13 85 222 129 316 11 25 21 54 21 66 0 11 14 49
31 83 42 84 93 120 324 229 105 49 249 119 320 155 124 63 145 72 145 63z
m-1110 -178 c0 -7 -9 -40 -19 -73 -10 -33 -24 -79 -30 -102 -8 -28 -17 -43
-27 -43 -11 0 -14 6 -10 16 3 9 18 61 33 115 17 63 31 99 40 99 7 0 13 -6 13
-12z m-2799 -437 c33 -74 57 -136 54 -139 -14 -14 -36 19 -88 134 -31 71 -57
133 -57 137 0 5 7 7 16 5 11 -2 39 -53 75 -137z m171 -293 c31 -51 54 -96 52
-100 -8 -13 -16 -5 -78 85 -51 75 -62 107 -38 107 4 0 33 -42 64 -92z m670
-534 c183 -130 335 -238 337 -240 3 -3 0 -9 -5 -14 -21 -21 -363 210 -593 400
-86 71 -103 90 -82 90 5 0 159 -106 343 -236z m-232 34 c0 -5 -7 -11 -16 -15
-23 -8 -106 87 -91 105 8 10 21 3 59 -35 26 -26 48 -51 48 -55z m416 -259
c115 -72 213 -135 219 -140 14 -14 -93 25 -155 56 -46 23 -325 196 -339 210
-2 3 12 5 31 5 29 0 78 -27 244 -131z m2142 -78 c128 -65 299 -84 505 -56 71
9 131 14 134 12 13 -13 -12 -26 -73 -38 -36 -7 -69 -19 -71 -26 -8 -20 -6 -20
75 -14 41 4 76 3 78 0 2 -4 -45 -24 -105 -44 -102 -34 -154 -65 -137 -83 4 -4
44 -6 89 -6 73 1 79 0 61 -13 -140 -108 -387 -71 -529 77 -51 54 -66 80 -47
80 4 0 41 -9 81 -20 40 -12 79 -19 85 -17 6 2 -35 34 -91 71 -57 37 -103 74
-103 82 0 18 3 18 48 -5z m178 -339 c144 -58 217 -75 289 -69 33 3 68 9 78 12
12 5 17 2 17 -12 0 -16 -15 -22 -90 -38 -115 -24 -123 -45 -16 -45 65 0 99
-10 84 -26 -3 -2 -52 -9 -111 -16 -128 -14 -140 -19 -110 -50 18 -17 37 -23
90 -26 38 -2 72 -7 76 -12 4 -4 -49 -15 -118 -25 -136 -20 -145 -26 -100 -70
21 -22 33 -25 99 -25 41 0 77 -4 80 -8 3 -4 -22 -23 -54 -40 -141 -78 -309
-38 -341 80 -5 22 -8 43 -5 46 3 3 24 0 47 -7 22 -7 43 -10 46 -8 2 3 -12 26
-31 52 -27 35 -36 56 -36 86 0 50 12 55 85 34 31 -9 60 -14 63 -10 4 4 -42 53
-102 109 -148 139 -140 149 60 68z m-558 -315 c7 -6 20 -26 27 -44 14 -33 55
-228 55 -259 0 -9 -21 11 -46 45 -75 100 -194 199 -194 161 0 -5 53 -66 118
-136 64 -69 122 -133 129 -142 14 -21 28 -102 16 -102 -4 0 -24 28 -43 62 -43
75 -161 202 -234 253 -46 32 -58 36 -71 25 -8 -7 -15 -16 -15 -21 0 -4 32 -27
70 -50 81 -48 85 -52 65 -69 -15 -13 -42 4 -154 98 l-33 28 63 46 c95 67 101
69 134 52 16 -8 51 -38 77 -67 45 -50 47 -51 48 -25 0 17 -18 50 -50 92 -51
66 -51 80 0 70 14 -3 31 -11 38 -17z"/>
<path d="M3267 12306 c-4 -10 18 -29 72 -60 43 -25 83 -46 89 -46 16 0 15 -4
-8 -50 -11 -22 -20 -42 -20 -45 0 -11 24 -4 42 12 17 15 18 14 19 -33 0 -27 4
-69 8 -94 8 -45 8 -45 19 -18 32 78 26 225 -12 263 -18 18 -172 85 -196 85 -4
0 -10 -6 -13 -14z"/>
<path d="M2851 11936 c-36 -39 -57 -166 -27 -166 9 0 21 31 36 90 12 50 20 93
18 95 -3 3 -15 -6 -27 -19z"/>
<path d="M2940 11926 c0 -7 -3 -34 -6 -60 -5 -37 -4 -46 8 -46 10 0 18 14 22
38 10 60 7 82 -9 82 -8 0 -15 -6 -15 -14z"/>
<path d="M3021 11830 l1 -95 16 35 c21 46 21 99 -1 130 -17 24 -17 22 -16 -70z"/>
<path d="M3115 11870 c-3 -5 -7 -37 -7 -71 -1 -62 17 -99 41 -85 15 10 14 139
-1 154 -15 15 -25 15 -33 2z"/>
<path d="M3215 11831 c-8 -14 7 -151 17 -157 17 -11 28 11 36 74 7 52 6 64 -8
77 -19 17 -36 19 -45 6z"/>
<path d="M3320 11783 c-1 -57 23 -173 36 -173 36 0 25 123 -16 172 l-19 23 -1
-22z"/>
<path d="M3403 11768 c3 -18 18 -111 33 -205 14 -95 30 -173 35 -173 5 0 9 69
10 153 l1 152 19 -75 c10 -41 24 -114 31 -162 7 -49 15 -88 19 -88 13 0 29 89
29 157 0 76 -19 157 -47 205 -22 38 -43 47 -43 19 0 -30 -14 -26 -44 14 -34
44 -50 45 -43 3z"/>
<path d="M2872 11240 c4 -154 41 -138 42 19 1 45 -3 56 -22 69 l-23 15 3 -103z"/>
<path d="M2963 11199 c4 -46 7 -99 7 -117 0 -26 4 -33 17 -30 13 2 21 23 33
83 8 44 20 80 25 80 6 0 16 -34 22 -75 18 -109 18 -109 36 -68 21 47 22 117 1
146 -19 27 -58 48 -108 58 l-39 7 6 -84z"/>
<path d="M2766 11203 c-4 -32 -10 -73 -13 -90 -5 -30 -3 -33 21 -33 l26 0 0
90 c0 70 -3 90 -14 90 -9 0 -16 -18 -20 -57z"/>
<path d="M3180 11205 c-10 -12 -8 -36 6 -116 16 -94 32 -125 51 -105 8 7 20
180 15 196 -2 6 -16 17 -32 25 -24 13 -30 13 -40 0z"/>
<path d="M3317 11154 c-11 -4 -15 -12 -12 -27 2 -12 11 -53 20 -90 17 -78 30
-107 48 -107 10 0 11 20 4 91 -4 50 -5 94 -2 98 15 15 45 -46 65 -133 24 -105
43 -133 67 -101 11 15 13 36 8 90 -8 80 -29 130 -66 158 -27 19 -98 30 -132
21z"/>
<path d="M3532 11079 c3 -8 22 -63 43 -124 21 -60 42 -114 47 -119 12 -15 10
106 -4 145 -15 44 -44 86 -70 100 -17 9 -20 9 -16 -2z"/>
<path d="M5105 8785 c3 -99 8 -220 12 -270 6 -88 7 -89 20 -57 34 82 22 333
-21 462 -15 43 -15 36 -11 -135z"/>
<path d="M2035 9022 c-88 -48 -141 -90 -223 -173 -206 -207 -352 -503 -328
-661 4 -27 11 -48 15 -48 4 0 21 51 38 113 59 213 155 398 303 585 67 84 84
101 96 91 12 -9 6 -21 -35 -68 -200 -232 -332 -537 -372 -864 -27 -221 2 -693
56 -908 17 -69 65 -192 72 -186 2 3 -10 87 -26 188 -48 292 -56 380 -55 604 0
231 12 325 65 524 84 313 146 434 356 693 57 70 103 130 103 133 0 10 -15 5
-65 -23z"/>
<path d="M2269 8883 c-188 -176 -397 -720 -440 -1147 -12 -114 -2 -247 18
-267 5 -5 41 167 80 384 40 215 84 433 98 482 33 117 144 341 238 483 42 61
71 112 66 112 -6 0 -32 -21 -60 -47z"/>
<path d="M2323 8806 c-68 -72 -147 -217 -208 -380 -45 -122 -107 -363 -131
-511 -23 -137 -25 -395 -4 -440 13 -29 14 -25 22 75 33 430 97 738 197 955 21
45 73 142 116 216 43 74 79 137 82 142 2 4 0 7 -5 7 -5 0 -37 -29 -69 -64z"/>
<path d="M2475 8809 c-23 -7 -43 -29 -90 -101 -116 -180 -156 -278 -167 -402
-6 -74 19 -47 57 61 54 154 83 207 207 378 41 57 39 76 -7 64z"/>
<path d="M2508 8688 c-78 -86 -168 -311 -168 -424 0 -45 11 -62 27 -41 5 6 17
50 27 97 21 104 79 227 140 298 32 37 46 63 46 83 0 42 -25 37 -72 -13z"/>
<path d="M2631 8633 c-54 -56 -102 -147 -126 -238 -17 -66 -20 -145 -6 -129
17 16 193 406 187 412 -4 3 -28 -17 -55 -45z"/>
<path d="M2720 8583 c-48 -49 -73 -119 -106 -295 -32 -171 -33 -183 -15 -183
7 0 21 24 31 55 9 30 45 130 79 223 89 241 92 280 11 200z"/>
<path d="M2852 8554 c-32 -22 -36 -34 -76 -206 -31 -132 -35 -162 -25 -180 10
-18 13 -19 17 -8 2 8 31 90 63 181 54 152 71 229 51 229 -4 0 -18 -7 -30 -16z"/>
<path d="M2957 8500 c-31 -52 -131 -530 -114 -546 20 -20 41 35 72 189 39 196
48 225 86 294 38 69 38 93 1 93 -20 0 -32 -8 -45 -30z"/>
<path d="M3112 8470 c-25 -27 -123 -453 -108 -468 13 -12 26 20 105 251 l80
237 -29 0 c-16 0 -37 -9 -48 -20z"/>
<path d="M3230 8408 c-29 -47 -50 -122 -56 -203 l-5 -70 40 107 c38 103 61
198 47 198 -3 0 -15 -15 -26 -32z"/>
<path d="M3325 8391 c-27 -54 -45 -144 -45 -232 0 -148 11 -136 52 56 20 99
37 186 38 193 0 23 -30 12 -45 -17z"/>
<path d="M3436 8408 c-12 -41 -46 -292 -46 -340 0 -54 11 -80 25 -59 10 17 75
310 75 339 0 46 -44 94 -54 60z"/>
<path d="M3546 8300 c-20 -85 -31 -303 -18 -345 l9 -30 11 40 c39 141 54 367
25 396 -8 8 -15 -7 -27 -61z"/>
<path d="M3662 8348 c-12 -15 -22 -418 -11 -418 19 0 28 43 42 210 14 174 14
186 -2 203 -15 15 -20 16 -29 5z"/>
<path d="M3781 8065 c0 -231 2 -267 13 -252 21 28 36 131 36 252 0 121 -15
224 -36 252 -11 15 -13 -21 -13 -252z"/>
<path d="M3883 8280 c17 -135 63 -410 68 -410 3 0 9 23 12 50 12 103 -28 325
-68 375 -16 19 -16 19 -12 -15z"/>
<path d="M4000 8278 c0 -7 21 -109 47 -225 40 -182 49 -213 65 -213 14 0 17 5
13 23 -5 22 -75 416 -75 423 0 11 -50 2 -50 -8z"/>
<path d="M4122 8158 c23 -57 45 -107 50 -112 12 -15 10 76 -3 115 -15 44 -56
99 -74 99 -10 0 -2 -29 27 -102z"/>
<path d="M4193 8238 c45 -112 251 -577 255 -574 8 9 -29 168 -59 249 -56 151
-161 337 -191 337 -6 0 -8 -6 -5 -12z"/>
<path d="M4290 8234 c0 -11 145 -244 151 -244 4 0 2 24 -3 53 -12 64 -53 142
-87 166 -30 20 -61 33 -61 25z"/>
<path d="M4567 8093 c221 -334 345 -701 394 -1168 19 -175 16 -628 -5 -794
-65 -529 -248 -999 -565 -1451 -78 -112 -91 -152 -38 -118 34 23 290 430 372
593 163 322 261 664 296 1030 15 152 6 573 -15 750 -41 338 -129 691 -223 895
-60 132 -184 349 -210 370 -14 11 -40 20 -58 20 l-32 0 84 -127z"/>
<path d="M4647 8194 c-8 -9 3 -29 78 -144 149 -227 200 -377 299 -893 72 -371
79 -453 73 -816 -6 -323 -7 -331 -77 -580 -102 -360 -262 -714 -456 -1006
-102 -153 -188 -259 -334 -409 -205 -211 -357 -329 -540 -421 -101 -50 -133
-72 -124 -86 19 -32 153 36 376 188 257 176 345 259 548 514 313 393 535 884
619 1373 35 201 44 318 44 561 0 355 -33 632 -114 949 -88 344 -192 572 -329
729 -41 47 -51 53 -63 41z"/>
<path d="M4780 8167 c0 -8 45 -104 100 -213 148 -296 203 -465 275 -848 48
-258 58 -397 52 -736 -6 -371 -21 -458 -154 -880 -139 -444 -306 -738 -649
-1145 -141 -167 -149 -174 -301 -295 -79 -63 -143 -117 -143 -122 0 -14 19 -9
78 24 294 164 553 437 767 812 72 124 224 442 293 612 77 189 136 443 164 704
16 160 16 607 -1 770 -35 342 -112 628 -250 932 -60 131 -69 186 -18 109 43
-65 222 -555 267 -729 50 -198 54 -252 55 -697 0 -358 -3 -437 -18 -535 -46
-292 -129 -558 -271 -867 -187 -408 -522 -849 -801 -1055 -49 -37 -165 -107
-257 -155 -153 -80 -179 -98 -163 -115 8 -7 241 100 345 158 489 275 925 909
1145 1667 83 282 105 436 112 782 8 375 -21 642 -101 950 -84 319 -222 588
-399 780 -70 76 -127 117 -127 92z"/>
<path d="M4483 8088 c19 -42 78 -172 132 -291 67 -149 101 -214 110 -211 11 5
11 15 -2 57 -48 163 -114 307 -195 424 -70 102 -84 108 -45 21z"/>
<path d="M4913 8144 c-3 -9 6 -28 24 -47 40 -43 189 -253 246 -347 75 -125 96
-187 186 -550 84 -343 86 -359 86 -755 0 -367 -10 -473 -61 -705 -89 -397
-331 -943 -562 -1263 -133 -185 -478 -524 -681 -669 -76 -55 -109 -84 -102
-91 11 -11 215 104 361 204 266 182 475 432 729 873 193 334 334 794 397 1291
25 193 25 572 1 745 -63 448 -205 841 -404 1118 -71 98 -106 138 -160 180 -47
37 -51 38 -60 16z"/>
<path d="M5096 8072 c-3 -5 20 -39 51 -78 91 -113 119 -161 189 -324 118 -274
199 -546 239 -805 49 -317 18 -854 -70 -1205 -112 -449 -242 -751 -481 -1117
-292 -450 -517 -659 -931 -866 -90 -45 -176 -91 -191 -103 -38 -31 -21 -46 37
-33 70 16 397 181 492 248 105 75 503 475 609 611 188 244 350 521 428 735 70
191 169 576 206 800 51 307 45 787 -12 892 -7 13 -9 39 -6 67 5 31 1 58 -10
85 -9 23 -34 114 -56 203 -75 302 -113 389 -280 643 -155 235 -194 280 -214
247z"/>
<path d="M1483 8048 c-55 -69 -76 -183 -77 -413 0 -209 18 -356 60 -503 24
-82 61 -168 70 -160 2 3 -9 94 -25 204 -55 372 -62 597 -26 802 7 42 12 78 10
80 -1 1 -7 -3 -12 -10z"/>
<path d="M2170 8030 c-32 -60 -52 -160 -57 -287 -5 -119 4 -265 14 -236 12 32
70 529 63 537 -4 4 -14 -2 -20 -14z"/>
<path d="M2308 7970 c-4 -8 -23 -134 -43 -280 -19 -146 -38 -280 -41 -297 -7
-38 9 -45 26 -12 17 30 47 197 60 329 12 117 10 287 -2 260z"/>
<path d="M4213 7883 c4 -63 12 -95 33 -140 l29 -58 3 63 c3 73 -18 158 -49
193 l-20 24 4 -82z"/>
<path d="M2426 7873 c-5 -32 -86 -663 -86 -670 0 -2 8 -3 18 -3 15 0 20 14 29
98 7 53 23 169 37 257 28 181 38 346 19 352 -6 2 -14 -12 -17 -34z"/>
<path d="M2545 7808 c-2 -18 -21 -166 -40 -328 -20 -162 -38 -303 -41 -312 -4
-14 1 -18 20 -18 23 0 26 4 26 34 0 18 13 125 30 237 30 204 40 419 20 419 -5
0 -12 -15 -15 -32z"/>
<path d="M5540 7828 c0 -6 54 -93 119 -192 188 -284 251 -418 310 -652 33
-131 88 -478 97 -613 10 -140 -36 -482 -96 -721 -142 -564 -544 -1262 -956
-1660 -157 -152 -414 -343 -778 -581 -104 -68 -184 -125 -178 -127 15 -5 155
62 297 143 156 88 345 217 470 320 194 161 628 628 695 749 19 34 51 78 71 97
27 25 74 111 181 329 164 332 199 419 222 538 9 46 34 138 56 205 50 150 58
182 76 327 27 219 15 521 -31 745 -96 473 -252 812 -482 1048 -56 57 -73 68
-73 45z"/>
<path d="M3117 7720 c-23 -179 -89 -841 -84 -847 11 -10 17 1 33 58 35 135 75
503 73 693 -1 116 -12 167 -22 96z"/>
<path d="M2783 7417 c-23 -160 -40 -293 -38 -296 8 -7 41 82 58 154 27 112 38
203 39 313 3 188 -15 136 -59 -171z"/>
<path d="M3250 7694 c0 -5 -7 -58 -15 -119 -8 -60 -21 -225 -30 -365 -15 -242
-30 -401 -41 -445 -4 -16 -3 -17 5 -5 19 30 50 228 60 381 19 274 31 552 26
557 -3 3 -5 1 -5 -4z"/>
<path d="M3512 7640 c-50 -242 -102 -807 -102 -1114 0 -93 2 -167 5 -164 7 7
117 1298 112 1318 -2 8 -9 -10 -15 -40z"/>
<path d="M2966 7628 c-3 -13 -19 -144 -36 -293 -17 -148 -34 -287 -37 -307 -5
-33 -3 -38 14 -38 18 0 21 9 27 63 4 34 18 127 32 207 14 80 28 200 31 268 5
108 4 122 -10 122 -9 0 -19 -10 -21 -22z"/>
<path d="M3900 7346 c0 -128 4 -217 10 -221 27 -17 52 303 31 400 -3 17 -14
31 -24 33 -16 3 -17 -13 -17 -212z"/>
<path d="M4030 7218 c0 -269 7 -302 32 -163 24 138 10 400 -23 421 -5 3 -9
-105 -9 -258z"/>
<path d="M4190 7443 c0 -29 -28 -524 -34 -600 -5 -58 -4 -63 14 -63 14 0 20 7
20 21 0 11 7 156 15 320 14 270 14 302 0 321 -15 22 -15 22 -15 1z"/>
<path d="M2627 7340 c-20 -120 -21 -130 -4 -130 10 0 19 31 30 100 20 120 21
130 4 130 -10 0 -19 -31 -30 -100z"/>
<path d="M4348 7414 c-9 -14 -52 -784 -44 -791 24 -24 36 73 61 472 14 213 14
256 2 289 -7 22 -16 35 -19 30z"/>
<path d="M4470 6885 c1 -471 5 -510 38 -322 22 128 22 547 -1 666 -32 170 -37
125 -37 -344z"/>
<path d="M4601 6822 c-1 -408 0 -433 17 -430 15 3 18 21 25 138 20 346 12 558
-27 680 -13 40 -14 1 -15 -388z"/>
<path d="M4730 7177 c-3 -3 -4 -224 -2 -491 2 -407 5 -486 16 -486 22 0 31
154 30 480 -1 231 -5 306 -20 393 -11 60 -21 107 -24 104z"/>
<path d="M6112 6918 c-7 -9 0 -66 23 -185 50 -255 58 -350 52 -573 -7 -260
-50 -502 -139 -775 -39 -120 -305 -662 -379 -773 -117 -174 -406 -517 -570
-677 -183 -178 -267 -242 -663 -507 -164 -109 -197 -138 -160 -138 41 0 318
165 467 277 333 252 495 416 843 853 253 318 382 536 487 830 102 284 167 612
174 885 7 259 -13 414 -93 722 -20 75 -24 82 -42 61z"/>
<path d="M2930 6523 c-1 -80 -17 -180 -65 -404 -31 -142 -45 -229 -42 -257 11
-107 38 -57 76 141 41 216 50 278 57 435 6 119 5 132 -9 132 -13 0 -17 -10
-17 -47z"/>
<path d="M1395 6452 c-176 -154 -592 -620 -713 -799 -57 -85 -69 -115 -25 -63
76 89 221 248 409 445 225 236 398 431 428 483 17 28 -15 7 -99 -66z"/>
<path d="M1342 6268 c-107 -118 -142 -163 -137 -176 7 -18 -2 -28 209 202 84
91 97 109 85 120 -12 11 -36 -11 -157 -146z"/>
<path d="M1340 6163 c-167 -160 -216 -213 -218 -235 -2 -15 0 -28 5 -27 4 0
82 81 173 180 185 202 263 289 258 289 -2 -1 -100 -94 -218 -207z"/>
<path d="M3377 6258 c-4 -24 -9 -65 -13 -91 -6 -44 -5 -49 12 -45 14 2 21 16
26 53 4 28 9 67 12 88 5 32 4 37 -13 37 -15 0 -20 -9 -24 -42z"/>
<path d="M3987 6180 c-4 -8 -32 -124 -62 -257 -90 -393 -135 -519 -321 -902
-63 -129 -114 -236 -114 -238 0 -16 47 29 84 81 163 228 372 812 416 1166 12
96 10 179 -3 150z"/>
<path d="M3113 6133 c-5 -27 -31 -143 -58 -260 -48 -215 -53 -283 -20 -283 36
0 105 357 105 546 0 58 -15 56 -27 -3z"/>
<path d="M4707 6100 c-15 -37 -208 -752 -204 -756 9 -9 73 136 110 251 65 198
114 425 105 490 -3 20 -6 25 -11 15z"/>
<path d="M4216 5774 c-3 -9 -36 -100 -72 -203 -86 -241 -150 -389 -218 -506
-50 -84 -209 -303 -355 -487 -29 -38 -50 -68 -46 -68 16 0 107 75 156 128 257
280 512 789 545 1090 6 60 3 79 -10 46z"/>
<path d="M910 5707 c-252 -199 -578 -802 -670 -1238 -20 -94 -38 -289 -27
-278 4 3 13 57 22 121 50 383 221 763 521 1159 66 87 101 131 212 262 27 31
-2 18 -58 -26z"/>
<path d="M2750 5535 c0 -3 45 -60 100 -126 253 -303 387 -518 479 -764 35 -94
41 -68 11 49 -68 266 -331 665 -529 805 -34 23 -61 40 -61 36z"/>
<path d="M4394 5354 c-20 -42 -33 -83 -29 -92 8 -23 20 -6 55 77 33 81 35 91
19 91 -6 0 -26 -34 -45 -76z"/>
<path d="M4217 5033 c-109 -180 -111 -183 -99 -195 11 -11 11 -12 135 193 43
69 77 129 77 133 0 3 -6 6 -14 6 -8 0 -52 -62 -99 -137z"/>
<path d="M4362 5049 c-53 -101 -62 -123 -51 -135 11 -14 22 3 76 111 57 113
67 145 45 145 -4 0 -35 -54 -70 -121z"/>
<path d="M4095 4648 c-88 -104 -171 -204 -185 -221 l-25 -32 49 35 c77 54 184
158 231 225 47 66 98 162 93 175 -2 4 -75 -77 -163 -182z"/>
<path d="M3663 4237 c-73 -51 -131 -96 -129 -102 6 -18 45 -6 99 29 51 33 179
141 185 158 10 23 -35 -2 -155 -85z"/>
<path d="M3337 3258 c-3 -13 -13 -67 -22 -122 -15 -82 -16 -99 -4 -107 7 -4
15 -7 17 -5 8 9 30 242 23 249 -5 5 -11 -2 -14 -15z"/>
<path d="M3296 2270 c9 -100 42 -254 69 -327 28 -72 116 -245 122 -239 5 5
-176 594 -189 616 -5 9 -6 -11 -2 -50z"/>
<path d="M2176 5671 c-17 -18 -83 -362 -126 -656 -56 -381 -50 -658 26 -1150
26 -171 47 -245 70 -245 19 0 18 10 -10 153 -41 204 -49 328 -43 685 6 354 6
363 90 907 32 206 41 286 34 303 -12 27 -19 27 -41 3z"/>
<path d="M2271 5576 c-18 -19 -28 -60 -56 -226 -45 -265 -53 -331 -65 -540
-16 -268 6 -624 61 -975 24 -155 45 -225 66 -225 22 0 14 92 -28 315 l-34 180
1 340 c2 448 24 724 83 1007 15 70 18 105 11 123 -12 31 -11 31 -39 1z"/>
<path d="M2376 5509 c-35 -83 -63 -244 -88 -494 -20 -201 -17 -802 5 -934 9
-57 19 -107 22 -109 3 -3 5 153 5 346 0 389 7 527 51 936 16 154 27 281 24
284 -3 3 -11 -10 -19 -29z"/>
<path d="M2463 5446 c-21 -26 -42 -118 -67 -291 -54 -368 -44 -865 24 -1240
19 -107 70 -257 89 -263 16 -5 14 13 -13 130 -65 275 -91 555 -83 908 5 261
19 418 57 655 10 65 17 121 16 123 -2 2 -13 -8 -23 -22z"/>
<path d="M2540 5385 c-17 -44 -48 -215 -62 -335 -16 -148 -16 -687 0 -835 19
-174 42 -304 68 -385 23 -70 57 -131 67 -120 3 3 -10 97 -29 210 -96 576 -101
792 -28 1268 24 155 25 222 3 222 -5 0 -14 -11 -19 -25z"/>
<path d="M2621 5298 c-21 -65 -40 -175 -52 -300 -15 -169 -7 -645 15 -788 19
-128 53 -243 69 -237 13 4 12 25 -9 282 -9 99 -18 284 -21 411 -5 205 -3 253
17 411 22 169 22 253 0 253 -5 0 -13 -15 -19 -32z"/>
<path d="M2705 5222 c-21 -68 -35 -260 -35 -492 0 -346 29 -604 79 -714 l19
-41 1 36 c1 20 -9 119 -21 220 -19 157 -21 224 -19 454 7 517 7 548 -6 552 -6
2 -14 -5 -18 -15z"/>
<path d="M2783 5015 c-20 -167 -23 -277 -13 -462 12 -198 31 -349 61 -467 19
-75 57 -171 65 -163 2 2 -5 66 -16 143 -51 367 -78 664 -83 929 l-2 120 -12
-100z"/>
<path d="M2861 5020 c-21 -71 27 -589 94 -1015 44 -273 41 -261 60 -245 22 18
19 74 -14 255 -27 145 -39 268 -91 909 -10 128 -28 164 -49 96z"/>
<path d="M2959 4864 c-1 -121 3 -192 17 -294 22 -162 84 -401 83 -325 0 40
-86 666 -93 672 -3 3 -6 -20 -7 -53z"/>
<path d="M3052 4731 c-11 -7 -3 -75 42 -362 71 -444 64 -409 87 -409 15 0 19
5 16 18 -3 9 -31 181 -63 382 -32 201 -60 368 -63 372 -4 4 -12 3 -19 -1z"/>
<path d="M2345 3799 c-5 -14 27 -155 38 -166 3 -3 10 -2 15 1 6 4 2 36 -10 83
-20 82 -33 106 -43 82z"/>
<path d="M2134 3577 c-8 -21 62 -202 79 -205 28 -6 26 14 -10 116 -34 96 -55
124 -69 89z"/>
<path d="M2648 2284 c-6 -5 22 -57 99 -192 42 -73 48 -36 10 56 -49 116 -85
161 -109 136z"/>
<path d="M2510 2206 c-21 -26 301 -459 439 -588 58 -56 190 -158 203 -158 2 0
-46 51 -107 113 -147 150 -262 289 -402 485 -63 89 -117 162 -118 162 -1 0 -8
-7 -15 -14z"/>
<path d="M2865 2158 c-7 -17 142 -328 156 -328 26 0 14 40 -55 178 -76 151
-92 175 -101 150z"/>
<path d="M2395 2088 c-8 -20 70 -121 88 -115 23 7 15 25 -32 77 -41 46 -50 52
-56 38z"/>
<path d="M2300 1977 c0 -21 147 -193 243 -284 99 -95 249 -209 368 -280 119
-71 235 -133 248 -133 17 0 13 55 -7 80 -11 13 -45 29 -92 41 -146 39 -316
164 -561 411 -97 98 -181 178 -188 178 -6 0 -11 -6 -11 -13z"/>
<path d="M2805 1980 c-8 -13 213 -315 231 -315 8 0 15 3 17 7 4 11 -217 318
-229 318 -7 0 -15 -4 -19 -10z"/>
<path d="M2564 1848 c82 -119 368 -379 391 -357 4 5 -391 379 -400 379 -3 0 1
-10 9 -22z"/>
<path d="M2194 1849 c-8 -13 -16 -6 138 -122 108 -82 131 -95 150 -88 13 5 22
12 21 16 -2 9 -281 205 -293 205 -5 0 -12 -5 -16 -11z"/>
<path d="M3872 1950 c-57 -26 -78 -39 -67 -44 9 -3 29 -3 43 0 46 11 143 64
137 74 -9 15 -23 11 -113 -30z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 44 KiB

43
icon.svg.import Normal file
View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b5u0mk2y43ht2"
path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://icon.svg"
dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

15
import_manager.gd Normal file
View File

@@ -0,0 +1,15 @@
@tool class_name ImportManager extends EditorScenePostImport
# NOTE: Example of editing an import
#func _post_import(scene: Node) -> Object:
# if scene.name == "balls":
# scene.name = "bodies"
# setup_balls_scene(scene)
# return scene # NOTE: Must return the scene no matter what
#func setup_balls_scene(scene: Node) -> void:
# for node in scene.get_children():
# # NOTE: Would do further logic here
# setup_balls_scene(node)

1
import_manager.gd.uid Normal file
View File

@@ -0,0 +1 @@
uid://jfenmjssu7v7

56
project.godot Normal file
View File

@@ -0,0 +1,56 @@
; Engine configuration file.
; It's best edited using the editor UI and not directly,
; since the parameters that go here are not all obvious.
;
; Format:
; [section] ; section goes between []
; param=value ; assign values to parameters
config_version=5
[application]
config/name="Game Shell"
config/description="A shell setup to load core game related modules such as a multiplayer lobby client or the core game files."
run/main_scene="uid://04nv87epssf4"
run/print_header=false
config/features=PackedStringArray("4.5", "Forward Plus")
run/max_fps=30
boot_splash/bg_color=Color(0, 0, 0, 1)
boot_splash/image="uid://cwqth1sgffu3c"
config/icon="res://icon.svg"
boot_splash/minimum_display_time=2500
[autoload]
Globals="*res://globals/globals.gd"
MessageBus="*res://globals/message_bus.gd"
[editor]
movie_writer/fps=30
naming/node_name_casing=2
naming/script_name_casing=2
[input]
aim_incline={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194320,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
aim_decline={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194322,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
[physics]
3d/physics_engine="Jolt Physics"
jolt_physics_3d/simulation/velocity_steps=20
jolt_physics_3d/simulation/position_steps=20
3d/simulation/position_steps=10
3d/simulation/velocity_steps=10

View File

@@ -0,0 +1,5 @@
class_name BaseEnvironment extends Node3D
func _ready() -> void:
pass

View File

@@ -0,0 +1 @@
uid://cvsrejn43b7xu

View File

@@ -0,0 +1,25 @@
[gd_scene load_steps=5 format=3 uid="uid://djtq6hbp70kut"]
[ext_resource type="Script" uid="uid://cvsrejn43b7xu" path="res://scenes/environments/base_environment.gd" id="1_pm2xn"]
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_yw8f4"]
[sub_resource type="Sky" id="Sky_uwrxv"]
sky_material = SubResource("ProceduralSkyMaterial_yw8f4")
[sub_resource type="Environment" id="Environment_jtak5"]
background_mode = 2
sky = SubResource("Sky_uwrxv")
ambient_light_source = 3
reflected_light_source = 2
[node name="base_environment" type="Node3D"]
script = ExtResource("1_pm2xn")
[node name="world" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_jtak5")
[node name="sun" type="DirectionalLight3D" parent="."]
transform = Transform3D(0.49999997, 0.43301272, -0.75000006, 0, 0.8660254, 0.50000006, 0.86602545, -0.24999999, 0.43301266, 0, 225, 0)
[node name="sounds" type="Node3D" parent="."]

View File

@@ -0,0 +1,9 @@
class_name StartMenu extends Node3D
@onready var base_environment: Node = $base_environment
@onready var animation_player: AnimationPlayer = $animation_player
func _ready() -> void:
animation_player.play("rotation")

View File

@@ -0,0 +1 @@
uid://cywa27h25s1j8

View File

@@ -0,0 +1,61 @@
[gd_scene load_steps=7 format=3 uid="uid://1uhmlnh88yq7"]
[ext_resource type="Script" uid="uid://cywa27h25s1j8" path="res://scenes/screens/start_screen/start.gd" id="1_mqdda"]
[ext_resource type="PackedScene" uid="uid://djtq6hbp70kut" path="res://scenes/environments/base_environment.tscn" id="2_7nvb2"]
[ext_resource type="PackedScene" uid="uid://da0ok71rkjpx8" path="res://scenes/ui/start_screen/start_ui.tscn" id="4_hk434"]
[sub_resource type="Animation" id="Animation_qell1"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("rotation_dolly:rotation")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0, 0)]
}
[sub_resource type="Animation" id="Animation_rxs04"]
resource_name = "rotation"
length = 60.0
loop_mode = 1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("rotation_dolly:rotation")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 60),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(0, 0, 0), Vector3(0, 6.2831855, 0)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_cn28k"]
_data = {
&"RESET": SubResource("Animation_qell1"),
&"rotation": SubResource("Animation_rxs04")
}
[node name="start_screen" type="Node3D"]
script = ExtResource("1_mqdda")
[node name="base_environment" parent="." instance=ExtResource("2_7nvb2")]
[node name="rotation_dolly" type="Node3D" parent="."]
[node name="camera" type="Camera3D" parent="rotation_dolly"]
transform = Transform3D(0.9995127, 0.012299462, -0.028690739, 0, 0.9191053, 0.39401212, 0.031215947, -0.39382014, 0.9186573, 0.020791333, 1.2903607, 1.9422052)
current = true
[node name="start_ui" parent="rotation_dolly/camera" instance=ExtResource("4_hk434")]
[node name="animation_player" type="AnimationPlayer" parent="."]
libraries = {
&"": SubResource("AnimationLibrary_cn28k")
}

View File

@@ -0,0 +1 @@
class_name StartMenuControls extends Control

View File

@@ -0,0 +1 @@
uid://ykbcl0j1wouh

View File

@@ -0,0 +1,34 @@
[gd_scene load_steps=3 format=3 uid="uid://da0ok71rkjpx8"]
[ext_resource type="Script" uid="uid://ykbcl0j1wouh" path="res://scenes/ui/start_screen/start_ui.gd" id="1_mwcbl"]
[sub_resource type="LabelSettings" id="LabelSettings_o8har"]
font_size = 45
font_color = Color(1, 0.10980392, 0.02745098, 1)
outline_size = 5
[node name="start_ui" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_mwcbl")
[node name="vbox" type="VBoxContainer" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
alignment = 1
[node name="alert" type="Label" parent="vbox"]
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 6
text = "No Game PCK Loaded"
label_settings = SubResource("LabelSettings_o8har")
uppercase = true

View File

@@ -0,0 +1,67 @@
class_name ClientNetworking extends Node
var peer: ENetMultiplayerPeer
func start_client(address: String = "127.0.0.1", port: int = 8080) -> void:
if peer: return
push_warning("Client Starting... Address: ", address, " Port: ", port)
# TODO: Add throbber or other indication of connection attempt.
peer = ENetMultiplayerPeer.new()
peer.create_client(address, port)
multiplayer.multiplayer_peer = peer
multiplayer.connected_to_server.connect(client_connected_to_server)
multiplayer.server_disconnected.connect(client_disconnected_from_server)
multiplayer.connection_failed.connect(client_connection_failed_to_server)
func _wait_for_connection() -> void:
while not peer:
await get_tree().process_frame
while peer.get_connection_status() != 2:
await get_tree().process_frame
func _wait_close_connection():
close_connection()
while peer:
await get_tree().process_frame
func client_connected_to_server() -> void:
assert(false, "This method needs to be overridden...")
func client_disconnected_from_server() -> void:
assert(false, "This method needs to be overridden...")
func client_connection_failed_to_server() -> void:
assert(false, "This method needs to be overridden...")
func close_connection() -> void:
if not peer: return
push_warning("Disconnected from, server...")
unset_client()
func unset_client() -> void:
if not peer: return
if not multiplayer:
peer.close()
peer = null
return
multiplayer.connected_to_server.disconnect(client_connected_to_server)
multiplayer.connection_failed.disconnect(client_connection_failed_to_server)
multiplayer.server_disconnected.disconnect(client_disconnected_from_server)
peer.close()
peer = null

View File

@@ -0,0 +1 @@
uid://ci57tiuqsx1jp

View File

@@ -0,0 +1,42 @@
class_name GameClient extends ClientNetworking
func _ready() -> void:
setup_signals()
func setup_signals() -> void:
MessageBus.subscribe("game_start_client", _start_client)
MessageBus.subscribe("game_wait_for_connection", _wait_for_connection)
MessageBus.subscribe("game_close_connection", _wait_close_connection)
MessageBus.subscribe("game_peer_disconnected", _on_game_peer_disconnected)
func _start_client(address: String = "127.0.0.1", port: int = 8080) -> void:
if peer: return
start_client(address, port)
func _on_game_peer_disconnected() -> void:
close_connection()
Globals.multiplayer_data.reset()
Globals.lobby_data.go_back_to_match_screen()
MessageBus.clear_voided_listeners()
func client_connected_to_server() -> void:
push_warning("Connected to server!")
func close_connection() -> void:
if not peer: return
push_warning("Disconnected from, server...")
unset_client()
func client_disconnected_from_server() -> void:
push_warning("Disconnected from, server...")
func client_connection_failed_to_server() -> void:
push_warning("Connection failed!")
unset_client()

View File

@@ -0,0 +1 @@
uid://cjtu1d1j35r32

View File

@@ -0,0 +1,6 @@
[gd_scene load_steps=2 format=3 uid="uid://cbvv2msu13vr2"]
[ext_resource type="Script" uid="uid://cjtu1d1j35r32" path="res://scripts/controllers/networking/game_client.gd" id="1_tea1p"]
[node name="client_net" type="Node"]
script = ExtResource("1_tea1p")

View File

@@ -0,0 +1,31 @@
class_name GameServer extends ServerNetworking
func _ready() -> void:
setup_signals()
func setup_signals() -> void:
pass
func server_client_connected(id: int) -> void:
push_warning("Client Connected... ID: ", id)
if not Globals.game_data.client1:
Globals.game_data.client1 = id
elif not Globals.game_data.client2:
Globals.game_data.client2 = id
if Globals.game_data.client1 and Globals.game_data.client2:
Globals.multiplayer_data.init_match()
# TODO: Add watch match feature...
func server_client_disconnected(id: int) -> void:
push_warning("Client Disconnected... ID: ", id)
MessageBus.emit_propagation_clients_only.rpc("game_peer_disconnected", null)
await get_tree().create_timer(5.0).timeout
# NOTE: Quits game server instance.
get_tree().quit()

View File

@@ -0,0 +1 @@
uid://bndylf4rwtlkn

View File

@@ -0,0 +1,6 @@
[gd_scene load_steps=2 format=3 uid="uid://bss61m8hfvab3"]
[ext_resource type="Script" uid="uid://bndylf4rwtlkn" path="res://scripts/controllers/networking/game_server.gd" id="1_3xapr"]
[node name="server_net" type="Node"]
script = ExtResource("1_3xapr")

View File

@@ -0,0 +1,20 @@
[gd_scene load_steps=5 format=3 uid="uid://dy51wny4x53f4"]
[ext_resource type="Script" uid="uid://b808va021l1w7" path="res://scripts/data/game_data.gd" id="1_hulqm"]
[ext_resource type="Script" uid="uid://cai8lpy7e00d6" path="res://scripts/data/game_state.gd" id="2_6ash1"]
[ext_resource type="Script" uid="uid://cihlohg5ouy6q" path="res://scripts/data/lobby_data.gd" id="3_80q4n"]
[ext_resource type="Script" uid="uid://dof720ujunrw8" path="res://scripts/data/multiplayer_data.gd" id="4_setx2"]
[node name="data_bridge" type="Node"]
[node name="game_data" type="Node" parent="."]
script = ExtResource("1_hulqm")
[node name="game_state" type="Node" parent="."]
script = ExtResource("2_6ash1")
[node name="lobby_data" type="Node" parent="."]
script = ExtResource("3_80q4n")
[node name="multiplayer_data" type="Node" parent="."]
script = ExtResource("4_setx2")

View File

@@ -0,0 +1,5 @@
class_name GameData extends Node
func _ready() -> void:
Globals.game_data = self

View File

@@ -0,0 +1 @@
uid://b808va021l1w7

View File

@@ -0,0 +1,32 @@
class_name GameState extends Node
func _ready() -> void:
Globals.game_state = self
func load_game_scene(scene_str: String) -> void:
var scene = load(scene_str).instantiate()
var target = get_tree().root.get_node("shell/scene")
target.add_child(scene)
func set_game_scene(scene_str: String) -> void:
var scene = load(scene_str).instantiate()
var target = get_tree().root.get_node("shell/scene")
if "game" in scene_str:
scene.name = "game"
elif "lobby" in scene_str:
scene.name = "lobby_screen"
elif "start" in scene_str:
scene.name = "start_screen"
clear_game_scene(target)
target.add_child(scene)
func clear_game_scene(container: Node) -> void:
for child in container.get_children():
child.queue_free()
await get_tree().process_frame

View File

@@ -0,0 +1 @@
uid://cai8lpy7e00d6

View File

@@ -0,0 +1,5 @@
class_name LobbyData extends Node
func _init() -> void:
Globals.lobby_data = self

View File

@@ -0,0 +1 @@
uid://cihlohg5ouy6q

View File

@@ -0,0 +1,13 @@
class_name MultiplayerData extends Node
var is_multiplayer_active: bool = false
var multiplayer_synchronizer: MultiplayerSynchronizer = MultiplayerSynchronizer.new()
var synchronizer_config: SceneReplicationConfig = SceneReplicationConfig.new()
func _ready() -> void:
Globals.multiplayer_data = self
multiplayer_synchronizer.name = "multiplayer_synchronizer"
multiplayer_synchronizer.replication_config = synchronizer_config
multiplayer_synchronizer.root_path = "/root/shell"

View File

@@ -0,0 +1 @@
uid://dof720ujunrw8

View File

@@ -0,0 +1,47 @@
class_name ServerNetworking extends Node
var peer: ENetMultiplayerPeer
func _ready() -> void:
pass
func start_server(address: String = "0.0.0.0", port: int = 8080) -> void:
if peer: return
push_warning("Server Starting... Address: ", address, " Port: ", port)
peer = ENetMultiplayerPeer.new()
peer.set_bind_ip(address)
var state = peer.create_server(port)
match state:
OK:
push_warning("Server Started: ", state)
multiplayer.multiplayer_peer = peer
multiplayer.peer_connected.connect(server_client_connected)
multiplayer.peer_disconnected.connect(server_client_disconnected)
ERR_ALREADY_IN_USE:
peer.close()
peer = null
start_server(address, port)
ERR_CANT_CREATE:
push_warning("Couldn't create server...")
func close_connection() -> void:
push_warning("Server Closed...")
multiplayer.peer_connected.disconnect(server_client_connected)
multiplayer.peer_disconnected.disconnect(server_client_disconnected)
peer.close()
peer = null
func server_client_connected(_id: int) -> void:
assert(false, "This method needs to be overridden...")
func server_client_disconnected(_id: int) -> void:
assert(false, "This method needs to be overridden...")

View File

@@ -0,0 +1 @@
uid://bgnr36m8qvbx3

62
shell.gd Normal file
View File

@@ -0,0 +1,62 @@
class_name Shell extends Node
@onready var game_server: GameServer = $game_server
@onready var game_client: GameClient = $game_client
func _ready() -> void:
_load_resources()
_load_scene()
#_parse_args()
func _load_resources():
_load_asset_pck()
_load_game_pck()
_load_lobby_pck()
_load_store_pck()
func _load_asset_pck():
_load_resource_pck("assets.pck")
func _load_game_pck():
_load_resource_pck("game.pck")
$data_bridge.free()
var data_bridge = Globals.cache_invalidate_load_resource(
"res://scripts/data/data_bridge.tscn"
).instantiate()
add_child(data_bridge)
move_child(data_bridge, 0)
func _load_lobby_pck():
_load_resource_pck("lobby-client.pck")
func _load_store_pck():
_load_resource_pck("store.pck")
func _load_resource_pck(target: String):
#var TARGET_PCK := OS.get_executable_path().get_base_dir() + "/modules/" + target
var TARGET_PCK = "/home/abaddon/Coding/Projects/Active/Godot_Projects/builds/desktop/shell-test/modules/" + target
push_warning("PCK Path: ", TARGET_PCK)
if not FileAccess.file_exists(TARGET_PCK):
push_warning(target + " PCK is missing.")
return
var target_pck_loaded := ProjectSettings.load_resource_pack(TARGET_PCK, true)
if not target_pck_loaded:
push_error("Failed to load " + target + " PCK.")
return
func _load_scene():
add_child(Globals.multiplayer_data.multiplayer_synchronizer)
move_child(Globals.multiplayer_data.multiplayer_synchronizer, 0)
Globals.game_state.set_game_scene(
"res://scenes/screens/start_screen/start.tscn"
)

1
shell.gd.uid Normal file
View File

@@ -0,0 +1 @@
uid://dbca7qndk7coq

17
shell.tscn Normal file
View File

@@ -0,0 +1,17 @@
[gd_scene load_steps=5 format=3 uid="uid://04nv87epssf4"]
[ext_resource type="Script" uid="uid://dbca7qndk7coq" path="res://shell.gd" id="1_bhs8v"]
[ext_resource type="PackedScene" uid="uid://dy51wny4x53f4" path="res://scripts/data/data_bridge.tscn" id="1_xa5nf"]
[ext_resource type="PackedScene" uid="uid://cbvv2msu13vr2" path="res://scripts/controllers/networking/game_client.tscn" id="3_hkpkv"]
[ext_resource type="PackedScene" uid="uid://bss61m8hfvab3" path="res://scripts/controllers/networking/game_server.tscn" id="4_cni66"]
[node name="shell" type="Node"]
script = ExtResource("1_bhs8v")
[node name="data_bridge" parent="." instance=ExtResource("1_xa5nf")]
[node name="game_client" parent="." instance=ExtResource("3_hkpkv")]
[node name="game_server" parent="." instance=ExtResource("4_cni66")]
[node name="scene" type="Node" parent="."]

BIN
splash.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 KiB

40
splash.png.import Normal file
View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cwqth1sgffu3c"
path="res://.godot/imported/splash.png-929ed8a00b89ba36c51789452f874c77.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://splash.png"
dest_files=["res://.godot/imported/splash.png-929ed8a00b89ba36c51789452f874c77.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1