|
@@ -1,388 +0,0 @@
|
1
|
|
-###############################################################
|
2
|
|
-# Mongoose <stu7440@westga.edu>
|
3
|
|
-###############################################################
|
4
|
|
-# + Cleaner clean
|
5
|
|
-# + Add new include tree
|
6
|
|
-# + Add new flags
|
7
|
|
-# + Install/Uninstall
|
8
|
|
-# + Debian and Redhat packaging
|
9
|
|
-# + Lots of misc new features
|
10
|
|
-###############################################################
|
11
|
|
-BUILD_SELECT=debug
|
12
|
|
-
|
13
|
|
-NAME=OpenRaider
|
14
|
|
-NAME_TAR=openraider
|
15
|
|
-MAJOR_VERSION=0
|
16
|
|
-MINOR_VERSION=1
|
17
|
|
-MICRO_VERSION=2
|
18
|
|
-BUILD_ID=$(shell date "+%Y%m%d")
|
19
|
|
-PRE=
|
20
|
|
-VERSION=$(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION)$(PRE)
|
21
|
|
-VERSION_DEB=$(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION).$(BUILD_ID)
|
22
|
|
-BUILD_HOST=$(shell uname -s -n -r -m)
|
23
|
|
-ARCH=$(shell uname -m -s | sed -e "s/ /-/g")
|
24
|
|
-UNAME=$(shell uname -s)
|
25
|
|
-
|
26
|
|
-###############################################################
|
27
|
|
-
|
28
|
|
-# -DMULTITEXTURE Add OpenGL multitexturing
|
29
|
|
-# -DUSING_EMITTER_IN_GAME Run particle test in game
|
30
|
|
-
|
31
|
|
-BASE_DEFS=-Iinclude $(shell sdl2-config --cflags | sed "s/-I/-isystem /g") -DUSING_EMITTER
|
32
|
|
-
|
33
|
|
-BASE_LIBS=$(shell sdl2-config --libs) -lz -lstdc++ \
|
34
|
|
- -lpthread -lSDL2_ttf
|
35
|
|
-
|
36
|
|
-# -DDEBUG_GL
|
37
|
|
-DEBUG_DEFS=-DDEBUG -DEXPERIMENTAL
|
38
|
|
-DEBUG_OBJ=
|
39
|
|
-
|
40
|
|
-ifeq ($(UNAME),Darwin)
|
41
|
|
-AUDIO_LIBS += -lalut
|
42
|
|
-AUDIO_LIBS += -framework OpenAL
|
43
|
|
-AUDIO_LIBS += -L/usr/local/lib
|
44
|
|
-AUDIO_DEFS += -isystem /usr/local/include
|
45
|
|
-GL_LIBS += -framework OpenGL
|
46
|
|
-else
|
47
|
|
-AUDIO_LIBS += -lopenal -lalut
|
48
|
|
-GL_LIBS += -lGL -lGLU
|
49
|
|
-GL_LIBS += -L/usr/local/lib
|
50
|
|
-GL_DEFS += -isystem /usr/local/include
|
51
|
|
-BASE_LIBS += -L/usr/X11/lib -lXmu -lXt -lSM -lICE -lXext -lX11 -lXi
|
52
|
|
-endif
|
53
|
|
-
|
54
|
|
-BASE_LIBS += $(AUDIO_LIBS)
|
55
|
|
-BASE_LIBS += $(GL_LIBS)
|
56
|
|
-BASE_DEFS += $(AUDIO_DEFS)
|
57
|
|
-BASE_DEFS += $(GL_DEFS)
|
58
|
|
-
|
59
|
|
-###############################################################
|
60
|
|
-
|
61
|
|
-TREE_DIR=OpenRaider
|
62
|
|
-BUILD_DEBUG_DIR=bin/debug
|
63
|
|
-BUILD_RELEASE_DIR=bin/release
|
64
|
|
-BUILD_PROF_DIR=bin/prof
|
65
|
|
-BUILD_TEST_DIR=bin/test
|
66
|
|
-BUILD_INSTALL_DIR=bin/$(BUILD_SELECT)
|
67
|
|
-DEB_DIR=/tmp/$(NAME).deb
|
68
|
|
-
|
69
|
|
-# Edited for Debian GNU/Linux.
|
70
|
|
-DESTDIR =
|
71
|
|
-INSTALL_BIN=$(DESTDIR)/usr/games
|
72
|
|
-INSTALL_LIB=$(DESTDIR)/usr/lib
|
73
|
|
-INSTALL_DOC=$(DESTDIR)/usr/share/doc/$(NAME)
|
74
|
|
-INSTALL_SHARE=$(DESTDIR)/usr/share/$(NAME)
|
75
|
|
-INSTALL_INCLUDE=$(DESTDIR)/usr/include
|
76
|
|
-
|
77
|
|
-###############################################################
|
78
|
|
-CC=gcc
|
79
|
|
-WARNINGS=-Weverything -Wno-padded -Wno-packed
|
80
|
|
-WARNINGS+=-Wno-global-constructors -Wno-exit-time-destructors
|
81
|
|
-WARNINGS+=-Wno-documentation-unknown-command -Wno-c++98-compat-pedantic
|
82
|
|
-WARNINGS+=-Wno-missing-prototypes -Wno-missing-variable-declarations
|
83
|
|
-WARNINGS+=-Wno-disabled-macro-expansion
|
84
|
|
-
|
85
|
|
-WARNINGS+=-Wno-shorten-64-to-32 -Wno-sign-conversion
|
86
|
|
-
|
87
|
|
-FLAGS_ALL=-std=c++11
|
88
|
|
-
|
89
|
|
-BASE_CFLAGS=$(FLAGS_ALL) $(BASE_DEFS) \
|
90
|
|
- -DVERSION=\"\\\"$(NAME)-$(VERSION)-$(BUILD_ID)\\\"\" \
|
91
|
|
- -DBUILD_HOST=\"\\\"$(BUILD_HOST)\\\"\"
|
92
|
|
-
|
93
|
|
-LD_FLAGS=-lm $(BASE_LIBS)
|
94
|
|
-
|
95
|
|
-RELEASE_CFLAGS=$(BASE_CFLAGS) -ffast-math -funroll-loops \
|
96
|
|
- -fomit-frame-pointer -O2 -Wall
|
97
|
|
-
|
98
|
|
-DEBUG_CFLAGS=$(BASE_CFLAGS) -g -O0 $(DEBUG_DEFS) $(WARNINGS)
|
99
|
|
-
|
100
|
|
-################################################################
|
101
|
|
-
|
102
|
|
-DO_CC=$(CC) $(CFLAGS) -o $@ -c $<
|
103
|
|
-DO_SHLIB_CC=$(CC) $(CFLAGS) $(SHLIBCFLAGS) -o $@ -c $<
|
104
|
|
-
|
105
|
|
-TARGETS=$(BUILDDIR)/$(NAME)
|
106
|
|
-
|
107
|
|
-################################################################
|
108
|
|
-auto: $(BUILD_SELECT)
|
109
|
|
-
|
110
|
|
-run: $(BUILD_SELECT)
|
111
|
|
- bin/$(BUILD_SELECT)/OpenRaider
|
112
|
|
-
|
113
|
|
-targets: $(TARGETS)
|
114
|
|
-
|
115
|
|
-bundle: release
|
116
|
|
- mac_dist/bundle.sh
|
117
|
|
- mac_dist/plist.sh $(NAME) $(VERSION) $(BUILD_ID) > bin/OpenRaider.app/Contents/Info.plist
|
118
|
|
- mac_dist/frameworks.sh
|
119
|
|
-
|
120
|
|
-bundle-image: bundle
|
121
|
|
- mac_dist/image.sh
|
122
|
|
-
|
123
|
|
-bundle-archive: bundle
|
124
|
|
- mac_dist/archive.sh
|
125
|
|
-
|
126
|
|
-all: debug release prof
|
127
|
|
-
|
128
|
|
-debug:
|
129
|
|
- @-mkdir -p $(BUILD_DEBUG_DIR)
|
130
|
|
- $(MAKE) targets BUILDDIR=$(BUILD_DEBUG_DIR) \
|
131
|
|
- CFLAGS="$(DEBUG_CFLAGS)" \
|
132
|
|
- LD_FLAGS="$(LD_FLAGS)"
|
133
|
|
-
|
134
|
|
-prof:
|
135
|
|
- @-mkdir -p $(BUILD_PROF_DIR)
|
136
|
|
- $(MAKE) targets BUILDDIR=$(BUILD_PROF_DIR) \
|
137
|
|
- CFLAGS="$(DEBUG_CFLAGS) -pg" \
|
138
|
|
- LD_FLAGS="$(LD_FLAGS) -pg"
|
139
|
|
-
|
140
|
|
-release:
|
141
|
|
- @-mkdir -p $(BUILD_RELEASE_DIR)
|
142
|
|
- $(MAKE) targets BUILDDIR=$(BUILD_RELEASE_DIR) \
|
143
|
|
- CFLAGS="$(RELEASE_CFLAGS)" \
|
144
|
|
- LD_FLAGS="$(LD_FLAGS)"
|
145
|
|
-
|
146
|
|
-#####################################
|
147
|
|
-
|
148
|
|
-ded:
|
149
|
|
- @-mkdir -p $(BUILD_DEBUG_DIR)/ded
|
150
|
|
- $(MAKE) targets BUILDDIR=$(BUILD_DEBUG_DIR)/ded \
|
151
|
|
- CFLAGS="$(DEBUG_CFLAGS) -DDEDICATED_SERVER" \
|
152
|
|
- LD_FLAGS="$(LD_FLAGS)"
|
153
|
|
-
|
154
|
|
-depend:
|
155
|
|
- @-echo "Making deps..."
|
156
|
|
- @-echo "# Autogenerated dependency file" > depend
|
157
|
|
- @-find ./src -name "*.cpp" -exec ./deps.sh $(BASE_DEFS) {} \; >> depend
|
158
|
|
- @-echo "[DONE]"
|
159
|
|
-
|
160
|
|
-################################################################
|
161
|
|
-
|
162
|
|
-OBJS = \
|
163
|
|
- $(DEBUG_OBJ) \
|
164
|
|
- $(BUILDDIR)/Camera.o \
|
165
|
|
- $(BUILDDIR)/Emitter.o \
|
166
|
|
- $(BUILDDIR)/GLString.o \
|
167
|
|
- $(BUILDDIR)/MatMath.o \
|
168
|
|
- $(BUILDDIR)/Matrix.o \
|
169
|
|
- $(BUILDDIR)/Mesh.o \
|
170
|
|
- $(BUILDDIR)/Network.o \
|
171
|
|
- $(BUILDDIR)/OpenRaider.o \
|
172
|
|
- $(BUILDDIR)/Particle.o \
|
173
|
|
- $(BUILDDIR)/Quaternion.o \
|
174
|
|
- $(BUILDDIR)/Render.o \
|
175
|
|
- $(BUILDDIR)/SDLSystem.o \
|
176
|
|
- $(BUILDDIR)/SkeletalModel.o \
|
177
|
|
- $(BUILDDIR)/Sound.o \
|
178
|
|
- $(BUILDDIR)/System.o \
|
179
|
|
- $(BUILDDIR)/Texture.o \
|
180
|
|
- $(BUILDDIR)/tga.o \
|
181
|
|
- $(BUILDDIR)/TombRaider.o \
|
182
|
|
- $(BUILDDIR)/Vector3d.o \
|
183
|
|
- $(BUILDDIR)/ViewVolume.o \
|
184
|
|
- $(BUILDDIR)/World.o
|
185
|
|
-
|
186
|
|
-
|
187
|
|
-$(BUILDDIR)/$(NAME) : $(OBJS)
|
188
|
|
- $(CC) $(CFLAGS) $(LD_FLAGS) -o $@ $(OBJS)
|
189
|
|
-
|
190
|
|
-#################################################################
|
191
|
|
-
|
192
|
|
-CHECK_BIN=cppcheck
|
193
|
|
-CHECK_DIR=.
|
194
|
|
-CHECK_STD=--std=c++11 --std=posix
|
195
|
|
-CHECK_FLAGS=--quiet --force
|
196
|
|
-CHECK_INC=-Iinclude
|
197
|
|
-CHECK_NORMAL=--enable=information,warning,performance,portability
|
198
|
|
-CHECK_FULL=--enable=all
|
199
|
|
-CHECK_CONFIG=--check-config
|
200
|
|
-
|
201
|
|
-check:
|
202
|
|
- $(CHECK_BIN) $(CHECK_FLAGS) $(CHECK_INC) $(CHECK_STD) \
|
203
|
|
- $(CHECK_NORMAL) $(CHECK_DIR)
|
204
|
|
-
|
205
|
|
-checkFull:
|
206
|
|
- $(CHECK_BIN) $(CHECK_FLAGS) $(CHECK_INC) $(CHECK_STD) \
|
207
|
|
- $(CHECK_FULL) $(CHECK_DIR)
|
208
|
|
-
|
209
|
|
-checkConfig:
|
210
|
|
- $(CHECK_BIN) $(CHECK_FLAGS) $(CHECK_INC) $(CHECK_CONFIG) $(CHECK_DIR)
|
211
|
|
-
|
212
|
|
-#################################################################
|
213
|
|
-
|
214
|
|
-docLocal:
|
215
|
|
- sed -i '' 's/HAVE_DOT = YES/HAVE_DOT = NO/g' Doxyfile
|
216
|
|
- doxygen
|
217
|
|
- cp -R doc/html/* ../apache/
|
218
|
|
- rm -rf doc
|
219
|
|
- sed -i '' 's/HAVE_DOT = NO/HAVE_DOT = YES/g' Doxyfile
|
220
|
|
-
|
221
|
|
-#################################################################
|
222
|
|
-
|
223
|
|
-clean: clean-small clean-dep clean-doc
|
224
|
|
-
|
225
|
|
-clean-small: clean-build clean-test clean-obj
|
226
|
|
- @-rm -rf bin/OpenRaider.app
|
227
|
|
- @-rm -rf bin/OpenRaider.dmg
|
228
|
|
- @-rm -rf bin/OpenRaider.zip
|
229
|
|
-
|
230
|
|
-clean-dep:
|
231
|
|
- @-echo "Cleaning dependencies"
|
232
|
|
- @-rm -f depend
|
233
|
|
- @-echo "[DONE]"
|
234
|
|
-
|
235
|
|
-clean-test:
|
236
|
|
- @-echo "Cleaning test builds"
|
237
|
|
- @-rm -f $(BUILD_TEST_DIR)/*.o
|
238
|
|
- @-rm -rf $(BUILD_TEST_DIR)/*.dSYM
|
239
|
|
- @-rm -f $(BUILD_TEST_DIR)/*.test
|
240
|
|
- @-rm -rf $(BUILD_TEST_DIR)/*.build
|
241
|
|
- @-echo "[DONE]"
|
242
|
|
-
|
243
|
|
-clean-obj:
|
244
|
|
- @-echo "Cleaning objects"
|
245
|
|
- @-rm -f $(BUILD_PROF_DIR)/*.o
|
246
|
|
- @-rm -f $(BUILD_DEBUG_DIR)/*.o
|
247
|
|
- @-rm -f $(BUILD_RELEASE_DIR)/*.o
|
248
|
|
- @-rm -f $(BUILD_TEST_DIR)/*.o
|
249
|
|
- @-echo "[DONE]"
|
250
|
|
-
|
251
|
|
-clean-build:
|
252
|
|
- @-echo "Cleaning builds"
|
253
|
|
- @-rm -f $(BUILD_PROF_DIR)/$(NAME)
|
254
|
|
- @-rm -f $(BUILD_DEBUG_DIR)/$(NAME)
|
255
|
|
- @-rm -f $(BUILD_RELEASE_DIR)/$(NAME)
|
256
|
|
- @-echo "[DONE]"
|
257
|
|
-
|
258
|
|
-clean-doc:
|
259
|
|
- @-echo "Cleaning docs"
|
260
|
|
- @-rm -rf doc
|
261
|
|
- @-echo "[DONE]"
|
262
|
|
-
|
263
|
|
-
|
264
|
|
-#################################################################
|
265
|
|
-
|
266
|
|
--include depend
|
267
|
|
-
|
268
|
|
-#################################################################
|
269
|
|
-
|
270
|
|
-ifneq ($(UNAME),Darwin)
|
271
|
|
-
|
272
|
|
-install:
|
273
|
|
- mkdir -p $(INSTALL_SHARE)/data
|
274
|
|
- cp setup.sh $(INSTALL_SHARE)
|
275
|
|
- cp data/* $(INSTALL_SHARE)/data
|
276
|
|
- mkdir -p $(INSTALL_DOC)
|
277
|
|
- cp README.md README.old ChangeLog
|
278
|
|
- mkdir -p $(INSTALL_BIN)
|
279
|
|
- cp bin/$(BUILD_SELECT)/OpenRaider $(INSTALL_BIN)
|
280
|
|
-
|
281
|
|
-bin-tarball: clean-build clean-test clean-obj $(BUILD_SELECT)
|
282
|
|
- @-cd .. && tar zcvf $(NAME_TAR)-$(VERSION_DEB)-$(ARCH).tar.gz \
|
283
|
|
- $(TREE_DIR)/Makefile $(TREE_DIR)/data \
|
284
|
|
- $(TREE_DIR)/bin/$(BUILD_SELECT)/OpenRaider \
|
285
|
|
- $(TREE_DIR)/README.md $(TREE_DIR)/ChangeLog
|
286
|
|
-
|
287
|
|
-endif
|
288
|
|
-
|
289
|
|
-#################################################################
|
290
|
|
-# Unit Test builds
|
291
|
|
-#################################################################
|
292
|
|
-TEST_FLAGS=$(FLAGS_ALL) -g -O0 -DDEBUG -DUNIT_TEST -lstdc++ -Iinclude
|
293
|
|
-
|
294
|
|
-TEST_MAP_TR5=~/.OpenRaider/paks/tr5/demo.trc
|
295
|
|
-TEST_MAP_TR4=~/.OpenRaider/paks/tr4/angkor1.tr4
|
296
|
|
-TEST_MAP_TR3=~/.OpenRaider/paks/tr3/scotland.tr2
|
297
|
|
-TEST_MAP_TR2=~/.OpenRaider/paks/tr2/unwater.tr2
|
298
|
|
-TEST_MAP_TR1=~/.OpenRaider/paks/tr1/level1.phd
|
299
|
|
-
|
300
|
|
-test.build: Matrix.test Math.test Network.test Sound.test tga.test GLString.test TombRaider.test
|
301
|
|
-
|
302
|
|
-test: test.build
|
303
|
|
- @-echo "================================================="
|
304
|
|
- @-echo "Running Matrix unit test"
|
305
|
|
- $(BUILD_TEST_DIR)/Matrix.test
|
306
|
|
- @-echo "================================================="
|
307
|
|
- @-echo "Running Math unit test"
|
308
|
|
- $(BUILD_TEST_DIR)/Math.test
|
309
|
|
- @-echo "================================================="
|
310
|
|
- @-echo "Running Sound unit test"
|
311
|
|
- $(BUILD_TEST_DIR)/Sound.test
|
312
|
|
- @-echo "================================================="
|
313
|
|
- @-echo "Running TGA unit test"
|
314
|
|
- $(BUILD_TEST_DIR)/tga.test
|
315
|
|
- @-echo "================================================="
|
316
|
|
- @-echo "Running GLString unit test"
|
317
|
|
- $(BUILD_TEST_DIR)/GLString.test
|
318
|
|
- @-echo "================================================="
|
319
|
|
- @-echo "Running TombRaider unit test"
|
320
|
|
- $(BUILD_TEST_DIR)/TombRaider.test load $(TEST_MAP_TR1)
|
321
|
|
-
|
322
|
|
-TombRaider.reg_test:
|
323
|
|
- $(MAKE) TombRaider.test
|
324
|
|
- $(BUILD_TEST_DIR)/TombRaider.test load $(TEST_MAP_TR1) > /tmp/log.tr1
|
325
|
|
- $(BUILD_TEST_DIR)/TombRaider.test load $(TEST_MAP_TR2) > /tmp/log.tr2
|
326
|
|
- $(BUILD_TEST_DIR)/TombRaider.test load $(TEST_MAP_TR3) > /tmp/log.tr3
|
327
|
|
- $(BUILD_TEST_DIR)/TombRaider.test load $(TEST_MAP_TR4) > /tmp/log.tr4
|
328
|
|
- $(BUILD_TEST_DIR)/TombRaider.test load $(TEST_MAP_TR5) > /tmp/log.tr5
|
329
|
|
-
|
330
|
|
-TR_FLAGS = -D__TEST_TR5_DUMP_TGA -D__TEST_32BIT_TEXTILES
|
331
|
|
-
|
332
|
|
-TombRaider.test:
|
333
|
|
- @-mkdir -p $(BUILD_TEST_DIR)
|
334
|
|
- $(CC) $(FLAGS_ALL) $(WARNINGS) -Iinclude $(TR_FLAGS) -o $(BUILD_TEST_DIR)/TombRaiderTest.o -c test/TombRaider.cpp
|
335
|
|
- $(MAKE) targets NAME=TombRaider.test BUILDDIR=$(BUILD_TEST_DIR) \
|
336
|
|
- OBJS="$(BUILD_TEST_DIR)/TombRaiderTest.o $(BUILD_TEST_DIR)/TombRaider.o $(BUILD_TEST_DIR)/tga.o" \
|
337
|
|
- CFLAGS="$(BASE_CFLAGS) -g $(TR_FLAGS)" \
|
338
|
|
- LD_FLAGS="-lz -lstdc++"
|
339
|
|
-
|
340
|
|
-#################################################################
|
341
|
|
-
|
342
|
|
-GLString.test:
|
343
|
|
- mkdir -p $(BUILD_TEST_DIR)
|
344
|
|
- $(CC) $(FLAGS_ALL) $(WARNINGS) -Iinclude \
|
345
|
|
- $(shell sdl2-config --libs) \
|
346
|
|
- $(GL_LIBS) $(GL_DEFS) -lSDL2_ttf -lm -lstdc++ \
|
347
|
|
- src/Texture.cpp src/tga.cpp src/GLString.cpp \
|
348
|
|
- test/GLString.cpp -o $(BUILD_TEST_DIR)/GLString.test
|
349
|
|
-
|
350
|
|
-#################################################################
|
351
|
|
-
|
352
|
|
-Matrix.test:
|
353
|
|
- @-echo "Building Matrix unit test"
|
354
|
|
- mkdir -p $(BUILD_TEST_DIR)
|
355
|
|
- $(CC) $(FLAGS_ALL) $(WARNINGS) -g -lm -lstdc++ -Iinclude \
|
356
|
|
- src/Matrix.cpp src/Quaternion.cpp src/Vector3d.cpp src/MatMath.cpp \
|
357
|
|
- test/Matrix.cpp -o $(BUILD_TEST_DIR)/Matrix.test
|
358
|
|
-
|
359
|
|
-Math.test:
|
360
|
|
- @-echo "Building Math unit test"
|
361
|
|
- mkdir -p $(BUILD_TEST_DIR)
|
362
|
|
- $(CC) $(FLAGS_ALL) $(WARNINGS) -g -lm -lstdc++ -Iinclude \
|
363
|
|
- src/MatMath.cpp src/Vector3d.cpp test/MatMath.cpp -o $(BUILD_TEST_DIR)/Math.test
|
364
|
|
-
|
365
|
|
-#################################################################
|
366
|
|
-
|
367
|
|
-Network.test:
|
368
|
|
- mkdir -p $(BUILD_TEST_DIR)
|
369
|
|
- $(CC) $(TEST_FLAGS) $(WARNINGS) src/MatMath.cpp src/Vector3d.cpp \
|
370
|
|
- src/Network.cpp test/Network.cpp -o $(BUILD_TEST_DIR)/Network.test
|
371
|
|
-
|
372
|
|
-#################################################################
|
373
|
|
-
|
374
|
|
-Sound.test:
|
375
|
|
- mkdir -p $(BUILD_TEST_DIR)
|
376
|
|
- $(CC) $(TEST_FLAGS) $(WARNINGS) \
|
377
|
|
- $(AUDIO_LIBS) $(AUDIO_DEFS) \
|
378
|
|
- src/Sound.cpp test/Sound.cpp -o $(BUILD_TEST_DIR)/Sound.test
|
379
|
|
-
|
380
|
|
-#################################################################
|
381
|
|
-
|
382
|
|
-tga.test:
|
383
|
|
- mkdir -p $(BUILD_TEST_DIR)
|
384
|
|
- $(CC) $(TEST_FLAGS) $(WARNINGS) \
|
385
|
|
- src/tga.cpp test/tga.cpp -o $(BUILD_TEST_DIR)/tga.test
|
386
|
|
-
|
387
|
|
-#################################################################
|
388
|
|
-
|