aboutsummaryrefslogtreecommitdiff
path: root/application
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2017-05-13 01:24:15 +0200
committerPetr Mrázek <peterix@gmail.com>2017-05-13 01:24:15 +0200
commit868669a497fd08524eec6d31ac483f431b95198c (patch)
treea46fa4fa4e6baaf14720f10b3a2d09df3c98aaf6 /application
parent4cf4110d9dc694d2c28feca38656925980b57a4d (diff)
downloadPrismLauncher-868669a497fd08524eec6d31ac483f431b95198c.tar.gz
PrismLauncher-868669a497fd08524eec6d31ac483f431b95198c.tar.bz2
PrismLauncher-868669a497fd08524eec6d31ac483f431b95198c.zip
NOISSUE add a linux system packaging install layout
Diffstat (limited to 'application')
-rw-r--r--application/CMakeLists.txt50
-rw-r--r--application/MultiMC.cpp19
-rwxr-xr-xapplication/package/linux/multimc.desktop11
-rw-r--r--application/package/ubuntu/multimc/DEBIAN/control11
-rwxr-xr-xapplication/package/ubuntu/multimc/DEBIAN/postrm3
-rw-r--r--application/package/ubuntu/multimc/opt/multimc/icon.svg1993
-rwxr-xr-xapplication/package/ubuntu/multimc/opt/multimc/run.sh33
-rwxr-xr-xapplication/package/ubuntu/multimc/usr/share/applications/multimc.desktop16
-rw-r--r--application/package/ubuntu/readme.md12
9 files changed, 64 insertions, 2084 deletions
diff --git a/application/CMakeLists.txt b/application/CMakeLists.txt
index 2ae8b1c5..9c1ca3cd 100644
--- a/application/CMakeLists.txt
+++ b/application/CMakeLists.txt
@@ -304,8 +304,8 @@ target_link_libraries(MultiMC MultiMC_gui ${QUAZIP_LIBRARIES} hoedown MultiMC_ra
######## Packaging/install paths setup ########
# How to install the build results
-set(MultiMC_LAYOUT "auto" CACHE STRING "The layout for MultiMC installation (auto, win-bundle, lin-bundle, mac-bundle, lin-nodeps)")
-set_property(CACHE MultiMC_LAYOUT PROPERTY STRINGS auto win-bundle lin-bundle mac-bundle lin-nodeps)
+set(MultiMC_LAYOUT "auto" CACHE STRING "The layout for MultiMC installation (auto, win-bundle, lin-bundle, lin-nodeps, lin-system, mac-bundle)")
+set_property(CACHE MultiMC_LAYOUT PROPERTY STRINGS auto win-bundle lin-bundle lin-nodeps lin-system mac-bundle)
if(MultiMC_LAYOUT STREQUAL "auto")
if(UNIX AND APPLE)
@@ -326,6 +326,7 @@ if(MultiMC_LAYOUT_REAL STREQUAL "mac-bundle")
set(LIBRARY_DEST_DIR "MultiMC.app/Contents/MacOS")
set(PLUGIN_DEST_DIR "MultiMC.app/Contents/MacOS")
set(RESOURCES_DEST_DIR "MultiMC.app/Contents/Resources")
+ set(JARS_DEST_DIR "MultiMC.app/Contents/MacOS")
set(BUNDLE_DEST_DIR ".")
@@ -346,7 +347,7 @@ if(MultiMC_LAYOUT_REAL STREQUAL "mac-bundle")
set(DIRS ${QT_LIBS_DIR} ${QT_LIBEXECS_DIR} ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
# install as bundle
- set(INSTALL_BUNDLE TRUE)
+ set(INSTALL_BUNDLE "full")
# Add the icon
install(FILES resources/MultiMC.icns DESTINATION ${RESOURCES_DEST_DIR})
@@ -357,6 +358,7 @@ elseif(MultiMC_LAYOUT_REAL STREQUAL "lin-bundle")
set(PLUGIN_DEST_DIR "plugins")
set(BUNDLE_DEST_DIR ".")
set(RESOURCES_DEST_DIR ".")
+ set(JARS_DEST_DIR "bin")
# Apps to bundle
set(APPS "\${CMAKE_INSTALL_PREFIX}/bin/MultiMC")
@@ -365,7 +367,7 @@ elseif(MultiMC_LAYOUT_REAL STREQUAL "lin-bundle")
set(DIRS ${QT_LIBS_DIR} ${QT_LIBEXECS_DIR} ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
# install as bundle
- set(INSTALL_BUNDLE TRUE)
+ set(INSTALL_BUNDLE "full")
# Set RPATH
SET_TARGET_PROPERTIES(MultiMC PROPERTIES INSTALL_RPATH "$ORIGIN/")
@@ -379,9 +381,10 @@ elseif(MultiMC_LAYOUT_REAL STREQUAL "lin-nodeps")
set(PLUGIN_DEST_DIR "plugins")
set(BUNDLE_DEST_DIR ".")
set(RESOURCES_DEST_DIR ".")
+ set(JARS_DEST_DIR "bin")
- # do not install as bundle
- set(INSTALL_BUNDLE FALSE)
+ # install as bundle with no dependencies included
+ set(INSTALL_BUNDLE "nodeps")
# Set RPATH
SET_TARGET_PROPERTIES(MultiMC PROPERTIES INSTALL_RPATH "$ORIGIN/")
@@ -389,12 +392,30 @@ elseif(MultiMC_LAYOUT_REAL STREQUAL "lin-nodeps")
# Install basic runner script
install(PROGRAMS package/linux/MultiMC DESTINATION ${BUNDLE_DEST_DIR})
+elseif(MultiMC_LAYOUT_REAL STREQUAL "lin-system")
+ set(MultiMC_BINARY_DEST_DIR "usr/bin" CACHE STRING "Relative path from packaging root to the binary directory")
+ set(MultiMC_LIBRARY_DEST_DIR "usr/lib" CACHE STRING "Relative path from packaging root to the library directory")
+ set(MultiMC_SHARE_DEST_DIR "usr/share/multimc5" CACHE STRING "Relative path from packaging root to the shared data directory")
+ set(JARS_DEST_DIR "${MultiMC_SHARE_DEST_DIR}")
+
+ set(BINARY_DEST_DIR ${MultiMC_BINARY_DEST_DIR})
+ set(LIBRARY_DEST_DIR ${MultiMC_LIBRARY_DEST_DIR})
+
+ MESSAGE(STATUS "Compiling for linux system with ${MultiMC_SHARE_DEST_DIR} and MULTIMC_LINUX_DATADIR")
+ set_target_properties(MultiMC PROPERTIES OUTPUT_NAME "multimc5")
+ target_compile_definitions(MultiMC PRIVATE "-DMULTIMC_JARS_LOCATION=/${MultiMC_SHARE_DEST_DIR}/jars" "-DMULTIMC_LINUX_DATADIR"
+ )
+
+ # install as bundle with no dependencies included
+ set(INSTALL_BUNDLE "nodeps")
+
elseif(MultiMC_LAYOUT_REAL STREQUAL "win-bundle")
set(BINARY_DEST_DIR ".")
set(LIBRARY_DEST_DIR ".")
set(PLUGIN_DEST_DIR ".")
set(BUNDLE_DEST_DIR ".")
set(RESOURCES_DEST_DIR ".")
+ set(JARS_DEST_DIR ".")
# Apps to bundle
set(APPS "\${CMAKE_INSTALL_PREFIX}/MultiMC.exe")
@@ -403,7 +424,7 @@ elseif(MultiMC_LAYOUT_REAL STREQUAL "win-bundle")
set(DIRS ${QT_LIBS_DIR} ${QT_LIBEXECS_DIR} ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
# install as bundle
- set(INSTALL_BUNDLE TRUE)
+ set(INSTALL_BUNDLE "full")
else()
message(FATAL_ERROR "No sensible install layout set.")
endif()
@@ -417,12 +438,11 @@ install(TARGETS MultiMC
RUNTIME DESTINATION ${BINARY_DEST_DIR} COMPONENT Runtime
)
-#### jars needed for testing java and launching Minecraft ####
-install_jar(JavaCheck "${BINARY_DEST_DIR}/jars")
-install_jar(NewLaunch "${BINARY_DEST_DIR}/jars")
+install_jar(JavaCheck "${JARS_DEST_DIR}/jars")
+install_jar(NewLaunch "${JARS_DEST_DIR}/jars")
-#### Shared libraries and dependencies ####
-if(NOT INSTALL_BUNDLE)
+#### Dependency installations ####
+if(INSTALL_BUNDLE STREQUAL "nodeps")
# Just our own stuff
# FIXME: this does not remove RPATH.
install(
@@ -437,7 +457,7 @@ if(NOT INSTALL_BUNDLE)
DESTINATION
${LIBRARY_DEST_DIR}
)
-else()
+elseif(INSTALL_BUNDLE STREQUAL "full")
# Add qt.conf - this makes Qt stop looking for things outside the bundle
install(
CODE "file(WRITE \"\${CMAKE_INSTALL_PREFIX}/${RESOURCES_DEST_DIR}/qt.conf\" \" \")"
@@ -450,7 +470,7 @@ else()
DIRECTORY "${QT_PLUGINS_DIR}/imageformats"
DESTINATION ${PLUGIN_DEST_DIR}
COMPONENT Runtime
- REGEX "tga|tiff|mng" EXCLUDE
+ REGEX "tga|tiff|mng|webp" EXCLUDE
)
# Icon engines
install(
@@ -472,7 +492,7 @@ else()
DIRECTORY "${QT_PLUGINS_DIR}/imageformats"
DESTINATION ${PLUGIN_DEST_DIR}
COMPONENT Runtime
- REGEX "tga|tiff|mng" EXCLUDE
+ REGEX "tga|tiff|mng|webp" EXCLUDE
REGEX "d\\." EXCLUDE
REGEX "_debug\\." EXCLUDE
REGEX "\\.dSYM" EXCLUDE
diff --git a/application/MultiMC.cpp b/application/MultiMC.cpp
index 52755e84..495b14a0 100644
--- a/application/MultiMC.cpp
+++ b/application/MultiMC.cpp
@@ -79,6 +79,9 @@
#include <stdio.h>
#endif
+#define STRINGIFY(x) #x
+#define TOSTRING(x) STRINGIFY(x)
+
static const QLatin1String liveCheckFile("live.check");
using namespace Commandline;
@@ -138,7 +141,7 @@ MultiMC::MultiMC(int &argc, char **argv) : QApplication(argc, argv)
parser.addShortOpt("version", 'V');
parser.addDocumentation("version", "display program version and exit.");
// --dir
- parser.addOption("dir", applicationDirPath());
+ parser.addOption("dir");
parser.addShortOpt("dir", 'd');
parser.addDocumentation("dir", "use the supplied folder as MultiMC root instead of "
"the binary location (use '.' for current)");
@@ -199,8 +202,19 @@ MultiMC::MultiMC(int &argc, char **argv) : QApplication(argc, argv)
}
else
{
+#ifdef MULTIMC_LINUX_DATADIR
+ QString xdgDataHome = QFile::decodeName(qgetenv("XDG_DATA_HOME"));
+ if (xdgDataHome.isEmpty())
+ xdgDataHome = QDir::homePath() + QLatin1String("/.local/share");
+ dataPath = xdgDataHome + "/multimc";
+ printf("BLAH %s", xdgDataHome.toStdString().c_str());
+
+ adjustedBy += "XDG standard " + dataPath;
+
+#else
dataPath = applicationDirPath();
adjustedBy += "Fallback to binary path " + dataPath;
+#endif
}
if (!FS::ensureFolderPathExists(dataPath))
@@ -297,6 +311,9 @@ MultiMC::MultiMC(int &argc, char **argv) : QApplication(argc, argv)
{
qDebug() << "ID of instance to launch : " << m_instanceIdToLaunch;
}
+#ifdef MULTIMC_JARS_LOCATION
+ ENV.setJarsPath( TOSTRING(MULTIMC_JARS_LOCATION) );
+#endif
do // once
{
diff --git a/application/package/linux/multimc.desktop b/application/package/linux/multimc.desktop
new file mode 100755
index 00000000..ad18381e
--- /dev/null
+++ b/application/package/linux/multimc.desktop
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Version=1.0
+Encoding=UTF-8
+Name=MultiMC
+GenericName=Minecraft launcher
+Comment=Free, open source launcher and instance manager for Minecraft.
+Type=Application
+Terminal=false
+Exec=multimc
+Icon=multimc
+Categories=Application;Game
diff --git a/application/package/ubuntu/multimc/DEBIAN/control b/application/package/ubuntu/multimc/DEBIAN/control
deleted file mode 100644
index a0300e99..00000000
--- a/application/package/ubuntu/multimc/DEBIAN/control
+++ /dev/null
@@ -1,11 +0,0 @@
-Package: multimc
-Version: 1.1-2
-Architecture: all
-Maintainer: Petr Mrázek <peterix@gmail.com>
-Section: games
-Priority: optional
-Installed-Size: 75
-Depends: zenity, default-jre
-Homepage: http://multimc.org
-Description: A local install wrapper for MultiMC
-
diff --git a/application/package/ubuntu/multimc/DEBIAN/postrm b/application/package/ubuntu/multimc/DEBIAN/postrm
deleted file mode 100755
index f9bbc8a7..00000000
--- a/application/package/ubuntu/multimc/DEBIAN/postrm
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-set -e
-update-desktop-database
diff --git a/application/package/ubuntu/multimc/opt/multimc/icon.svg b/application/package/ubuntu/multimc/opt/multimc/icon.svg
deleted file mode 100644
index 178509ac..00000000
--- a/application/package/ubuntu/multimc/opt/multimc/icon.svg
+++ /dev/null
@@ -1,1993 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="64px"
- height="64px"
- id="svg4427"
- version="1.1"
- inkscape:version="0.48.4 r9939"
- sodipodi:docname="multimc.svg"
- inkscape:export-filename="/home/peterix/projects/MultiMC4/src/resources/insticons/infinity128.png"
- inkscape:export-xdpi="180"
- inkscape:export-ydpi="180">
- <defs
- id="defs4429">
- <linearGradient
- id="linearGradient5668"
- inkscape:collect="always">
- <stop
- id="stop5670"
- offset="0"
- style="stop-color:#75b54b;stop-opacity:1;" />
- <stop
- id="stop5672"
- offset="1"
- style="stop-color:#75b54b;stop-opacity:0.6" />
- </linearGradient>
- <linearGradient
- id="linearGradient5084"
- inkscape:collect="always">
- <stop
- id="stop5086"
- offset="0"
- style="stop-color:#000000;stop-opacity:0.8" />
- <stop
- id="stop5088"
- offset="1"
- style="stop-color:#000000;stop-opacity:0.35" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5668"
- id="linearGradient5072"
- x1="6.7342591"
- y1="28.510933"
- x2="50.506943"
- y2="61.773685"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-0.01532073,-0.00938002)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5084"
- id="linearGradient5082"
- x1="14.312115"
- y1="9.7948904"
- x2="44.097023"
- y2="82.973114"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5668"
- id="linearGradient3281"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-0.01532073,-0.00938002)"
- x1="6.7342591"
- y1="28.510933"
- x2="50.506943"
- y2="61.773685" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5668"
- id="linearGradient3283"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-0.01532073,-0.00938002)"
- x1="6.7342591"
- y1="28.510933"
- x2="50.506943"
- y2="61.773685" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5668"
- id="linearGradient3286"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.1879555,0,0,0.84178237,-0.01820035,-0.00789594)"
- x1="6.7342591"
- y1="28.510933"
- x2="50.506943"
- y2="61.773685" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5084"
- id="linearGradient3288"
- gradientUnits="userSpaceOnUse"
- x1="14.312115"
- y1="9.7948904"
- x2="44.097023"
- y2="82.973114" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5084"
- id="linearGradient3290"
- gradientUnits="userSpaceOnUse"
- x1="14.312115"
- y1="9.7948904"
- x2="44.097023"
- y2="82.973114" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5084"
- id="linearGradient3293"
- gradientUnits="userSpaceOnUse"
- x1="14.312115"
- y1="9.7948904"
- x2="44.097023"
- y2="82.973114"
- gradientTransform="scale(1.1879555,0.84178237)" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="6"
- inkscape:cx="10.09561"
- inkscape:cy="35.232628"
- inkscape:current-layer="layer1"
- showgrid="false"
- inkscape:document-units="px"
- inkscape:grid-bbox="true"
- inkscape:window-width="1607"
- inkscape:window-height="1030"
- inkscape:window-x="1676"
- inkscape:window-y="-3"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid4446"
- empspacing="16"
- visible="true"
- enabled="true"
- snapvisiblegridlinesonly="true"
- spacingx="4px"
- spacingy="4px" />
- </sodipodi:namedview>
- <metadata
- id="metadata4432">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- id="layer1"
- inkscape:label="Layer 1"
- inkscape:groupmode="layer">
- <rect
- style="opacity:0.34999999999999998;fill:#552200;fill-opacity:1;stroke:none"
- id="rect5674"
- width="64.125"
- height="64"
- x="-0.125"
- y="0.1249999" />
- <rect
- style="fill:#74b44a;fill-opacity:1;stroke:none"
- id="rect4448"
- width="4"
- height="4"
- x="0"
- y="0" />
- <rect
- y="0"
- x="4"
- height="4"
- width="4"
- id="rect4450"
- style="fill:#76b64c;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#73b349;fill-opacity:1;stroke:none"
- id="rect4452"
- width="4"
- height="4"
- x="8"
- y="0" />
- <rect
- y="0"
- x="12"
- height="4"
- width="4"
- id="rect4454"
- style="fill:#66a63c;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#66a63c;fill-opacity:1;stroke:none"
- id="rect4456"
- width="4"
- height="4"
- x="16"
- y="0" />
- <rect
- y="0"
- x="20"
- height="4"
- width="4"
- id="rect4458"
- style="fill:#6faf45;fill-opacity:1;stroke:none" />
- <rect
- y="4"
- x="0"
- height="4"
- width="4"
- id="rect4460"
- style="fill:#75b54b;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#6cac42;fill-opacity:1;stroke:none"
- id="rect4462"
- width="4"
- height="4"
- x="4"
- y="4" />
- <rect
- y="4"
- x="8"
- height="4"
- width="4"
- id="rect4464"
- style="fill:#8ab95a;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#81b051;fill-opacity:1;stroke:none"
- id="rect4466"
- width="4"
- height="4"
- x="12"
- y="4" />
- <rect
- y="4"
- x="16"
- height="4"
- width="4"
- id="rect4468"
- style="fill:#83b253;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#593d29;fill-opacity:1;stroke:none"
- id="rect4470"
- width="4"
- height="4"
- x="20"
- y="4" />
- <rect
- y="0"
- x="24"
- height="4"
- width="4"
- id="rect4472"
- style="fill:#5f9f35;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#6cac42;fill-opacity:1;stroke:none"
- id="rect4474"
- width="4"
- height="4"
- x="28"
- y="0" />
- <rect
- y="0"
- x="32"
- height="4"
- width="4"
- id="rect4476"
- style="fill:#7ebe54;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#76b64c;fill-opacity:1;stroke:none"
- id="rect4478"
- width="4"
- height="4"
- x="36"
- y="0" />
- <rect
- y="0"
- x="40"
- height="4"
- width="4"
- id="rect4480"
- style="fill:#6aaa40;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#67a73d;fill-opacity:1;stroke:none"
- id="rect4482"
- width="4"
- height="4"
- x="44"
- y="0" />
- <rect
- style="fill:#68a83e;fill-opacity:1;stroke:none"
- id="rect4484"
- width="4"
- height="4"
- x="24"
- y="4" />
- <rect
- y="4"
- x="28"
- height="4"
- width="4"
- id="rect4486"
- style="fill:#62a238;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#5f9f35;fill-opacity:1;stroke:none"
- id="rect4488"
- width="4"
- height="4"
- x="32"
- y="4" />
- <rect
- y="4"
- x="36"
- height="4"
- width="4"
- id="rect4490"
- style="fill:#93c263;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#90bf60;fill-opacity:1;stroke:none"
- id="rect4492"
- width="4"
- height="4"
- x="40"
- y="4" />
- <rect
- y="4"
- x="44"
- height="4"
- width="4"
- id="rect4494"
- style="fill:#73b349;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#69a93f;fill-opacity:1;stroke:none"
- id="rect4496"
- width="4"
- height="4"
- x="48"
- y="0" />
- <rect
- y="0"
- x="52"
- height="4"
- width="4"
- id="rect4498"
- style="fill:#61a137;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#509026;fill-opacity:1;stroke:none"
- id="rect4500"
- width="4"
- height="4"
- x="56"
- y="0" />
- <rect
- y="0"
- x="60"
- height="4"
- width="4"
- id="rect4502"
- style="fill:#6dad43;fill-opacity:1;stroke:none" />
- <rect
- y="4"
- x="48"
- height="4"
- width="4"
- id="rect4508"
- style="fill:#61a137;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#6cac42;fill-opacity:1;stroke:none"
- id="rect4510"
- width="4"
- height="4"
- x="52"
- y="4" />
- <rect
- y="4"
- x="56"
- height="4"
- width="4"
- id="rect4512"
- style="fill:#67a73d;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#6bab41;fill-opacity:1;stroke:none"
- id="rect4514"
- width="4"
- height="4"
- x="60"
- y="4" />
- <rect
- y="8"
- x="0"
- height="4"
- width="4"
- id="rect4520"
- style="fill:#8dbc5d;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#593d29;fill-opacity:1;stroke:none"
- id="rect4522"
- width="4"
- height="4"
- x="4"
- y="8" />
- <rect
- y="8"
- x="8"
- height="4"
- width="4"
- id="rect4524"
- style="fill:#9ccb6c;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#64a43a;fill-opacity:1;stroke:none"
- id="rect4526"
- width="4"
- height="4"
- x="12"
- y="8" />
- <rect
- y="8"
- x="16"
- height="4"
- width="4"
- id="rect4528"
- style="fill:#69a93f;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#593d29;fill-opacity:1;stroke:none"
- id="rect4530"
- width="4"
- height="4"
- x="20"
- y="8" />
- <rect
- style="fill:#593d29;fill-opacity:1;stroke:none"
- id="rect4532"
- width="4"
- height="4"
- x="0"
- y="12" />
- <rect
- y="12"
- x="4"
- height="4"
- width="4"
- id="rect4534"
- style="fill:#6c6c6c;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#593d29;fill-opacity:1;stroke:none"
- id="rect4536"
- width="4"
- height="4"
- x="8"
- y="12" />
- <rect
- y="12"
- x="12"
- height="4"
- width="4"
- id="rect4538"
- style="fill:#593d29;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#71b147;fill-opacity:1;stroke:none"
- id="rect4540"
- width="4"
- height="4"
- x="16"
- y="12" />
- <rect
- y="12"
- x="20"
- height="4"
- width="4"
- id="rect4542"
- style="fill:#593d29;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#70b046;fill-opacity:1;stroke:none"
- id="rect4544"
- width="4"
- height="4"
- x="24"
- y="8" />
- <rect
- y="8"
- x="28"
- height="4"
- width="4"
- id="rect4546"
- style="fill:#593d29;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#74b44a;fill-opacity:1;stroke:none"
- id="rect4548"
- width="4"
- height="4"
- x="32"
- y="8" />
- <rect
- y="8"
- x="36"
- height="4"
- width="4"
- id="rect4550"
- style="fill:#7fbf55;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#92c162;fill-opacity:1;stroke:none"
- id="rect4552"
- width="4"
- height="4"
- x="40"
- y="8" />
- <rect
- y="8"
- x="44"
- height="4"
- width="4"
- id="rect4554"
- style="fill:#97c667;fill-opacity:1;stroke:none" />
- <rect
- y="12"
- x="24"
- height="4"
- width="4"
- id="rect4556"
- style="fill:#593d29;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#593d29;fill-opacity:1;stroke:none"
- id="rect4558"
- width="4"
- height="4"
- x="28"
- y="12" />
- <rect
- y="12"
- x="32"
- height="4"
- width="4"
- id="rect4560"
- style="fill:#5f9f35;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#593d29;fill-opacity:1;stroke:none"
- id="rect4562"
- width="4"
- height="4"
- x="36"
- y="12" />
- <rect
- y="12"
- x="40"
- height="4"
- width="4"
- id="rect4564"
- style="fill:#6dad43;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#593d29;fill-opacity:1;stroke:none"
- id="rect4566"
- width="4"
- height="4"
- x="44"
- y="12" />
- <rect
- y="8"
- x="48"
- height="4"
- width="4"
- id="rect4568"
- style="fill:#593d29;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#57972d;fill-opacity:1;stroke:none"
- id="rect4570"
- width="4"
- height="4"
- x="52"
- y="8" />
- <rect
- y="8"
- x="56"
- height="4"
- width="4"
- id="rect4572"
- style="fill:#60a036;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#593d29;fill-opacity:1;stroke:none"
- id="rect4574"
- width="4"
- height="4"
- x="60"
- y="8" />
- <rect
- style="fill:#79553a;fill-opacity:1;stroke:none"
- id="rect4576"
- width="4"
- height="4"
- x="48"
- y="12" />
- <rect
- y="12"
- x="52"
- height="4"
- width="4"
- id="rect4578"
- style="fill:#593d29;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#593d29;fill-opacity:1;stroke:none"
- id="rect4580"
- width="4"
- height="4"
- x="56"
- y="12" />
- <rect
- y="12"
- x="60"
- height="4"
- width="4"
- id="rect4582"
- style="fill:#79553a;fill-opacity:1;stroke:none" />
- <rect
- y="16"
- x="0"
- height="4"
- width="4"
- id="rect4584"
- style="fill:#966c4a;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#79553a;fill-opacity:1;stroke:none"
- id="rect4586"
- width="4"
- height="4"
- x="4"
- y="16" />
- <rect
- y="16"
- x="8"
- height="4"
- width="4"
- id="rect4588"
- style="fill:#966c4a;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#b9855c;fill-opacity:1;stroke:none"
- id="rect4590"
- width="4"
- height="4"
- x="12"
- y="16" />
- <rect
- y="16"
- x="16"
- height="4"
- width="4"
- id="rect4592"
- style="fill:#593d29;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#966c4a;fill-opacity:1;stroke:none"
- id="rect4594"
- width="4"
- height="4"
- x="20"
- y="16" />
- <rect
- style="fill:#79553a;fill-opacity:1;stroke:none"
- id="rect4596"
- width="4"
- height="4"
- x="0"
- y="20" />
- <rect
- y="20"
- x="4"
- height="4"
- width="4"
- id="rect4598"
- style="fill:#593d29;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#966c4a;fill-opacity:1;stroke:none"
- id="rect4600"
- width="4"
- height="4"
- x="8"
- y="20" />
- <rect
- y="20"
- x="12"
- height="4"
- width="4"
- id="rect4602"
- style="fill:#966c4a;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#79553a;fill-opacity:1;stroke:none"
- id="rect4604"
- width="4"
- height="4"
- x="16"
- y="20" />
- <rect
- y="20"
- x="20"
- height="4"
- width="4"
- id="rect4606"
- style="fill:#966c4a;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#79553a;fill-opacity:1;stroke:none"
- id="rect4608"
- width="4"
- height="4"
- x="24"
- y="16" />
- <rect
- y="16"
- x="28"
- height="4"
- width="4"
- id="rect4610"
- style="fill:#79553a;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#593d29;fill-opacity:1;stroke:none"
- id="rect4612"
- width="4"
- height="4"
- x="32"
- y="16" />
- <rect
- y="16"
- x="36"
- height="4"
- width="4"
- id="rect4614"
- style="fill:#593d29;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#593d29;fill-opacity:1;stroke:none"
- id="rect4616"
- width="4"
- height="4"
- x="40"
- y="16" />
- <rect
- y="16"
- x="44"
- height="4"
- width="4"
- id="rect4618"
- style="fill:#6c6c6c;fill-opacity:1;stroke:none" />
- <rect
- y="20"
- x="24"
- height="4"
- width="4"
- id="rect4620"
- style="fill:#593d29;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#593d29;fill-opacity:1;stroke:none"
- id="rect4622"
- width="4"
- height="4"
- x="28"
- y="20" />
- <rect
- y="20"
- x="32"
- height="4"
- width="4"
- id="rect4624"
- style="fill:#593d29;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#79553a;fill-opacity:1;stroke:none"
- id="rect4626"
- width="4"
- height="4"
- x="36"
- y="20" />
- <rect
- y="20"
- x="40"
- height="4"
- width="4"
- id="rect4628"
- style="fill:#79553a;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#593d29;fill-opacity:1;stroke:none"
- id="rect4630"
- width="4"
- height="4"
- x="44"
- y="20" />
- <rect
- y="16"
- x="48"
- height="4"
- width="4"
- id="rect4632"
- style="fill:#79553a;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#966c4a;fill-opacity:1;stroke:none"
- id="rect4634"
- width="4"
- height="4"
- x="52"
- y="16" />
- <rect
- y="16"
- x="56"
- height="4"
- width="4"
- id="rect4636"
- style="fill:#593d29;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#79553a;fill-opacity:1;stroke:none"
- id="rect4638"
- width="4"
- height="4"
- x="60"
- y="16" />
- <rect
- style="fill:#79553a;fill-opacity:1;stroke:none"
- id="rect4640"
- width="4"
- height="4"
- x="48"
- y="20" />
- <rect
- y="20"
- x="52"
- height="4"
- width="4"
- id="rect4642"
- style="fill:#79553a;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#79553a;fill-opacity:1;stroke:none"
- id="rect4644"
- width="4"
-