From: Brett L. <wak...@us...> - 2011-12-26 14:03:24
|
data/1889/Map.xml | 53 data/1889/MapImage.svg | 4259 ++++++++++++++++++++++++++++++++ data/18AL/Game.xml | 12 data/GamesList.xml | 3 rails/ui/swing/MapPanel.java | 29 rails/ui/swing/ORPanel.java | 32 rails/ui/swing/ReportWindowDynamic.java | 24 rails/ui/swing/hexmap/HexMap.java | 37 rails/ui/swing/hexmap/HexMapImage.java | 5 9 files changed, 4408 insertions(+), 46 deletions(-) New commits: commit b26560a6877bcff52d78bdd686f86a06174bf879 Author: frederickweld <fre...@gm...> Date: Mon Dec 26 09:29:41 2011 +0100 1889: Aligned hex tooltip with style of background map The background map displays all names in Kanji and Romaji (latin alphabet). However, the hex tooltip only displayed the Romaji. Hence, the Kanji have been added to the Map.xml. diff --git a/data/1889/Map.xml b/data/1889/Map.xml index 19ea9a4..2f42650 100644 --- a/data/1889/Map.xml +++ b/data/1889/Map.xml @@ -1,72 +1,72 @@ <Map tileOrientation="NS" letterOrientation="horizontal" even="A"> <Image file="1889/MapImage.svg" x="6" y="5" scale="0.1632" /> <Hex name="A8" tile="0" cost="80"/> - <Hex name="A10" tile="-10" city="Sukomo"/> + <Hex name="A10" tile="-10" city="宿毛 - Sukomo"/> - <Hex name="B3" tile="-89030" orientation="0" city="Yawatahama"/> <!--NEW TILE:-890030--> + <Hex name="B3" tile="-89030" orientation="0" city="八幡浜 - Yawatahama"/> <!--NEW TILE:-890030--> <Hex name="B5" tile="0"/> - <Hex name="B7" tile="-89511" orientation="0" city="Uwajima"/> <!--NEW TILE:-89511--> + <Hex name="B7" tile="-89511" orientation="0" city="宇和島 - Uwajima"/> <!--NEW TILE:-89511--> <Hex name="B9" tile="0" cost="80"/> - <Hex name="B11" tile="-1" city="Nakamura"/> + <Hex name="B11" tile="-1" city="中村 - Nakamura"/> - <Hex name="C4" tile="-89115" orientation="0" city="Ohzu"/> + <Hex name="C4" tile="-89115" orientation="0" city="大洲 - Ohzu"/> <Hex name="C6" tile="0" cost="80"/> <Hex name="C8" tile="0"/> - <Hex name="C10" tile="-10" city="Kubokawa"/> + <Hex name="C10" tile="-10" city="窪川 - Kubokawa"/> <Hex name="D3" tile="0"/> <Hex name="D5" tile="0" cost="80"/> <Hex name="D7" tile="0" cost="80"/> <Hex name="D9" tile="0"/> - <Hex name="E2" tile="-10" city="Matsuyama"/> + <Hex name="E2" tile="-10" city="松山 - Matsuyama"/> <Hex name="E4" tile="0" cost="80"/> <Hex name="E6" tile="0" cost="80"/> <Hex name="E8" tile="0"/> - <Hex name="F1" tile="-902" orientation="2" value="30,60" city="Imabari"> + <Hex name="F1" tile="-902" orientation="2" value="30,60" city="今治 - Imabari"> <RevenueBonus value="40"> <Vertex id="-1"/> <Train type="D"/> </RevenueBonus> </Hex> - <Hex name="F3" tile="-10" city="Saijou"/> + <Hex name="F3" tile="-10" city="西條 - Saijou"/> <Hex name="F5" tile="0" cost="80"/> <Hex name="F7" tile="0" cost="80"/> - <Hex name="F9" tile="-89015" orientation="0" city="Kouchi" cost="80"/> <!--NEW TILE:-89015--> + <Hex name="F9" tile="-89015" orientation="0" city="高知 - Kouchi" cost="80"/> <!--NEW TILE:-89015--> - <Hex name="G4" tile="-10" city="Niihama"/> + <Hex name="G4" tile="-10" city="新居浜 - Niihama"/> <Hex name="G6" tile="0" cost="80"/> <Hex name="G8" tile="0" cost="80"/> - <Hex name="G10" tile="-1" city="Nangoku"/> - <Hex name="G12" tile="-10" city="Nahari"/> - <Hex name="G14" tile="-89031" orientation="0" city="Muroto"/> <!--NEW TILE:-890031--> + <Hex name="G10" tile="-1" city="南国 - Nangoku"/> + <Hex name="G12" tile="-10" city="奈半利 - Nahari"/> + <Hex name="G14" tile="-89031" orientation="0" city="室戸 - Muroto"/> <!--NEW TILE:-890031--> <Hex name="H3" tile="0"/> <Hex name="H5" tile="0" cost="80" label="River"/> - <Hex name="H7" tile="-10" city="Ikeda"/> + <Hex name="H7" tile="-10" city="池田 - Ikeda"/> <Hex name="H9" tile="0" cost="80"/> <Hex name="H11" tile="0" cost="80"/> <Hex name="H13" tile="0" cost="80"/> - <Hex name="I2" tile="-10" city="Marugame"/> - <Hex name="I4" tile="-89010" orientation="0" city="Kotohira" cost="80,80,80"/> <!-- NEW TILE: -89010 --> + <Hex name="I2" tile="-10" city="丸亀 - Marugame"/> + <Hex name="I4" tile="-89010" orientation="0" city="琴平 - Kotohira" cost="80,80,80"/> <!-- NEW TILE: -89010 --> <Hex name="I6" tile="0" cost="80" label="River"/> <Hex name="I8" tile="0"/> <Hex name="I10" tile="0"/> - <Hex name="I12" tile="-1" city="Muki"/> + <Hex name="I12" tile="-1" city="牟岐 - Muki"/> - <Hex name="J1" tile="-902" orientation="2" value="20,40" city="Sakaide & Okoyama"> + <Hex name="J1" tile="-902" orientation="2" value="20,40" city="坂出 & 岡山 - Sakaide & Okoyama"> <RevenueBonus value="40"> <Vertex id="-1"/> <Train type="D"/> </RevenueBonus> </Hex> <Hex name="J3" tile="0"/> - <Hex name="J5" tile="-1" city="Ritsurin Kouen"/> + <Hex name="J5" tile="-1" city="栗林公園 - Ritsurin Kouen"/> <Hex name="J7" tile="-8" orientation="2" label="River"/> - <Hex name="J9" tile="-1" city="Komatsujima"/> - <Hex name="J11" tile="-10" city="Anan"/> + <Hex name="J9" tile="-1" city="小松島 - Komatsujima"/> + <Hex name="J11" tile="-10" city="阿南 - Anan"/> - <Hex name="K4" tile="-89012" orientation="0" city="Takamatsu"/> <!--NEW TILE: -89012--> + <Hex name="K4" tile="-89012" orientation="0" city="高松 - Takamatsu"/> <!--NEW TILE: -89012--> <Hex name="K6" tile="0" cost="80" lablel="River"/> - <Hex name="K8" tile="-10" city="Tokushima"/> + <Hex name="K8" tile="-10" city="徳島 - Tokushima"/> - <Hex name="L7" tile="-902" orientation="3" value="20,40" city="Naruto & Awaji"> + <Hex name="L7" tile="-902" orientation="3" value="20,40" city="鳴門 & 淡路 - Naruto & Awaji"> <RevenueBonus value="40"> <Vertex id="-1"/> <Train type="D"/> </RevenueBonus> </Hex> commit 3f368dedba48e5422709ac1d0c7794d6f4fe619a Author: frederickweld <fre...@gm...> Date: Mon Dec 26 08:58:24 2011 +0100 Added option to start 2-player 18AL games Although the 18AL rules do not state that 2-player games are allowed, there is no reason why rails should prohibit this setup if the rails user has chosen so. The initial cash / certificate limit was set in accordance to the ones of 18GA. diff --git a/data/18AL/Game.xml b/data/18AL/Game.xml index fe35706..8cc9911 100644 --- a/data/18AL/Game.xml +++ b/data/18AL/Game.xml @@ -11,9 +11,18 @@ <GameOption name="Obsolete4Trains" type="toggle" default="yes"/> <GameOption name="LeaveAuctionOnPass" type="toggle" default="no"/> <GameOption name="SeparateSalesAtSamePrice" type="toggle" default="yes"/> + <GameOption name="TwoPlayersCertLimit70Percent" type="toggle" default="yes"/> <GameParameters> <OperatingRound class="rails.game.specific._18AL.OperatingRound_18AL"/> - <PlayerShareLimit percentage="60"/> + <PlayerShareLimit percentage="60"> + <!-- Option "NumberOfPlayers" is automatically set + by the game engine --> + <IfOption name="NumberOfPlayers" value="2"> + <IfOption name="TwoPlayersCertLimit70Percent" value="yes"> + <Attributes percentage="70"/> + </IfOption> + </IfOption> + </PlayerShareLimit> <BankPoolLimit percentage="50"/> <StockRound> <NoSaleInFirstSR/> @@ -33,6 +42,7 @@ </EndOfGame> </Component> <Component name="PlayerManager" class="rails.game.PlayerManager"> + <Players number="2" cash="810" certLimit="20"/> <Players number="3" cash="600" certLimit="15"/> <Players number="4" cash="500" certLimit="12"/> <Players number="5" cash="400" certLimit="10"/> diff --git a/data/GamesList.xml b/data/GamesList.xml index 4286a01..10d120d 100644 --- a/data/GamesList.xml +++ b/data/GamesList.xml @@ -146,7 +146,8 @@ Limitation: <Option name="Obsolete4Trains" type="toggle" default="yes"/> <Option name="LeaveAuctionOnPass" type="toggle" default="no"/> <Option name="SeparateSalesAtSamePrice" type="toggle" default="yes"/> - <Players minimum="3" maximum="5"/> + <Option name="TwoPlayersCertLimit70Percent" type="toggle" default="no"/> + <Players minimum="2" maximum="5"/> </Game> <Game name="18EU"> commit 7452a5cd9c641d61c08972e4a533c734a490e331 Author: frederickweld <fre...@gm...> Date: Mon Dec 26 07:33:51 2011 +0100 Added zoom options fit-to-window/width/height The current zoom step concept has not been altered. The new zoom options are not pixel based but, instead of that, the code determines the appropriate zoom step and triggers the existing zoom logic. Minor refactoring was needed in order to avoid code duplication. diff --git a/rails/ui/swing/MapPanel.java b/rails/ui/swing/MapPanel.java index b8a3acd..632203b 100644 --- a/rails/ui/swing/MapPanel.java +++ b/rails/ui/swing/MapPanel.java @@ -113,8 +113,7 @@ public class MapPanel extends JPanel { map.setAllowedTokenLays(allowedTokenLays); } - public void zoom (boolean in) { - map.zoom(in); + private void adjustToNewMapZoom () { currentMapSize = map.getCurrentSize(); log.debug("Map.size = " +currentMapSize); layeredPane.setPreferredSize(currentMapSize); @@ -122,12 +121,34 @@ public class MapPanel extends JPanel { if (mapImage != null) { mapImage.setBounds(0, 0, currentMapSize.width, currentMapSize.height); mapImage.setPreferredSize(currentMapSize); - mapImage.zoom(in); + mapImage.zoom(map.getZoomStep()); // FIXME setBounds() seems to be sufficient to resize a JSVGCanvas, but it doesn't always work... } layeredPane.revalidate(); } - + + public void zoom (boolean in) { + map.zoom(in); + adjustToNewMapZoom(); + } + + private void zoomFit (boolean fitWidth, boolean fitHeight) { + map.zoomFit (getSize(), fitWidth, fitHeight); + adjustToNewMapZoom(); + } + + public void fitToWindow () { + zoomFit (true, true); + } + + public void fitToWidth () { + zoomFit (true, false); + } + + public void fitToHeight () { + zoomFit (false, true); + } + public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_F1) { HelpWindow.displayHelp(gameUIManager.getHelp()); diff --git a/rails/ui/swing/ORPanel.java b/rails/ui/swing/ORPanel.java index 0eaba7e..ffcb997 100644 --- a/rails/ui/swing/ORPanel.java +++ b/rails/ui/swing/ORPanel.java @@ -56,7 +56,7 @@ implements ActionListener, KeyListener, RevenueListener { private JMenu specialMenu; private JMenu loansMenu; private JMenu zoomMenu; - private JMenuItem zoomIn, zoomOut, calibrateMap; + private JMenuItem zoomIn, zoomOut, fitToWindow, fitToWidth, fitToHeight, calibrateMap; private ActionMenuItem takeLoans; private ActionMenuItem repayLoans; @@ -211,6 +211,18 @@ implements ActionListener, KeyListener, RevenueListener { zoomOut.addActionListener(this); zoomOut.setEnabled(true); zoomMenu.add(zoomOut); + fitToWindow = new JMenuItem("Fit to window"); + fitToWindow.addActionListener(this); + fitToWindow.setEnabled(true); + zoomMenu.add(fitToWindow); + fitToWidth = new JMenuItem("Fit to width"); + fitToWidth.addActionListener(this); + fitToWidth.setEnabled(true); + zoomMenu.add(fitToWidth); + fitToHeight = new JMenuItem("Fit to height"); + fitToHeight.addActionListener(this); + fitToHeight.setEnabled(true); + zoomMenu.add(fitToHeight); calibrateMap = new JMenuItem("CalibrateMap"); calibrateMap.addActionListener(this); calibrateMap.setEnabled(Game.getDevelop()); @@ -744,6 +756,24 @@ implements ActionListener, KeyListener, RevenueListener { revenueAdapter.drawOptimalRunAsPath(orUIManager.getMap()); orUIManager.getMap().repaint(); } + } else if (source == fitToWindow) { + orWindow.getMapPanel().fitToWindow(); + if (revenueAdapter != null) { + revenueAdapter.drawOptimalRunAsPath(orUIManager.getMap()); + orUIManager.getMap().repaint(); + } + } else if (source == fitToWidth) { + orWindow.getMapPanel().fitToWidth(); + if (revenueAdapter != null) { + revenueAdapter.drawOptimalRunAsPath(orUIManager.getMap()); + orUIManager.getMap().repaint(); + } + } else if (source == fitToHeight) { + orWindow.getMapPanel().fitToHeight(); + if (revenueAdapter != null) { + revenueAdapter.drawOptimalRunAsPath(orUIManager.getMap()); + orUIManager.getMap().repaint(); + } } else if (source == calibrateMap) { MapManager mapManager = orUIManager.getMap().getMapManager(); String offsetX = JOptionPane.showInputDialog(this, "Change translation in X-dimension", mapManager.getMapXOffset()); diff --git a/rails/ui/swing/hexmap/HexMap.java b/rails/ui/swing/hexmap/HexMap.java index ddfd1d4..7ae00c8 100644 --- a/rails/ui/swing/hexmap/HexMap.java +++ b/rails/ui/swing/hexmap/HexMap.java @@ -346,6 +346,43 @@ public abstract class HexMap extends JComponent implements MouseListener, zoom(); } +/** + * Zoom-to-fit functionality is based on the discrete zoom steps. + * This means that no pixel precision is to be expected + */ + public void zoomFit (Dimension availableSize, boolean fitToWidth, boolean fitToHeight) { + double idealFactorWidth = availableSize.getWidth() / originalSize.width; + double idealFactorHeight = availableSize.getHeight() / originalSize.height; + //increase zoomFactor until constraints do not hold + //OR zoom cannot be increased any more + while + ( + ( + (!fitToWidth || idealFactorWidth > GameUIManager.getImageLoader().getZoomFactor(zoomStep)) + && + (!fitToHeight || idealFactorHeight > GameUIManager.getImageLoader().getZoomFactor(zoomStep)) + ) + && + GameUIManager.getImageLoader().getZoomFactor(zoomStep+1) != GameUIManager.getImageLoader().getZoomFactor(zoomStep) + ) + zoomStep++; + //decrease zoomFactor until constraints do hold + //OR zoom cannot be decreased any more + while + ( + ( + (fitToWidth && idealFactorWidth < GameUIManager.getImageLoader().getZoomFactor(zoomStep)) + || + (fitToHeight && idealFactorHeight < GameUIManager.getImageLoader().getZoomFactor(zoomStep)) + ) + && + GameUIManager.getImageLoader().getZoomFactor(zoomStep-1) != GameUIManager.getImageLoader().getZoomFactor(zoomStep) + ) + zoomStep--; + //trigger zoom execution + zoom(); + } + private void zoom() { zoomFactor = GameUIManager.getImageLoader().getZoomFactor(zoomStep); log.debug("HexMap: zoomStep = "+ zoomStep); diff --git a/rails/ui/swing/hexmap/HexMapImage.java b/rails/ui/swing/hexmap/HexMapImage.java index a1435e6..171642e 100644 --- a/rails/ui/swing/hexmap/HexMapImage.java +++ b/rails/ui/swing/hexmap/HexMapImage.java @@ -111,6 +111,11 @@ public final class HexMapImage extends JSVGCanvas { zoom(); } + public void zoom (int zoomStep) { + this.zoomStep = zoomStep; + zoom(); + } + private void zoom() { zoomFactor = GameUIManager.getImageLoader().getZoomFactor(zoomStep); log.debug("ImageMap zoomStep = " + zoomStep); commit dc1a96cdf357f43cb8cf219eb14063bf7e77376a Author: frederickweld <fre...@gm...> Date: Sun Dec 25 13:16:31 2011 +0100 Added background map for 1889 diff --git a/data/1889/Map.xml b/data/1889/Map.xml index 68d38a4..19ea9a4 100644 --- a/data/1889/Map.xml +++ b/data/1889/Map.xml @@ -1,5 +1,6 @@ <Map tileOrientation="NS" letterOrientation="horizontal" even="A"> - <Hex name="A8" tile="0" cost="80"/> + <Image file="1889/MapImage.svg" x="6" y="5" scale="0.1632" /> + <Hex name="A8" tile="0" cost="80"/> <Hex name="A10" tile="-10" city="Sukomo"/> <Hex name="B3" tile="-89030" orientation="0" city="Yawatahama"/> <!--NEW TILE:-890030--> diff --git a/data/1889/MapImage.svg b/data/1889/MapImage.svg new file mode 100644 index 0000000..7e02ff2 --- /dev/null +++ b/data/1889/MapImage.svg @@ -0,0 +1,4259 @@ +<?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="3698" + height="2703" + id="svg2" + version="1.1" + inkscape:version="0.48.2 r9819" + sodipodi:docname="MapImage.svg"> + <defs + id="defs4"> + <linearGradient + id="linearGradient4411"> + <stop + style="stop-color:#3584cf;stop-opacity:0.27450982;" + offset="0" + id="stop4413" /> + <stop + style="stop-color:#3584cf;stop-opacity:1;" + offset="1" + id="stop4415" /> + </linearGradient> + <polygon + id="pt" + points="-0.16245985,0 0,-0.5 0.16245985,0 " + transform="scale(0.0616,0.0616)" + style="fill:#ffffff" /> + <g + id="star"> + <use + xlink:href="#pt" + transform="matrix(-0.80901699,-0.58778525,0.58778525,-0.80901699,0,0)" + id="use4787" + x="0" + y="0" + width="5112" + height="3915" /> + <use + xlink:href="#pt" + transform="matrix(0.30901699,-0.95105652,0.95105652,0.30901699,0,0)" + id="use4789" + x="0" + y="0" + width="5112" + height="3915" /> + <use + xlink:href="#pt" + id="use4791" + x="0" + y="0" + width="5112" + height="3915" /> + <use + xlink:href="#pt" + transform="matrix(0.30901699,0.95105652,-0.95105652,0.30901699,0,0)" + id="use4793" + x="0" + y="0" + width="5112" + height="3915" /> + <use + xlink:href="#pt" + transform="matrix(-0.80901699,0.58778525,-0.58778525,-0.80901699,0,0)" + id="use4795" + x="0" + y="0" + width="5112" + height="3915" /> + </g> + <g + id="s5"> + <use + xlink:href="#star" + x="-0.252" + id="use4798" + y="0" + width="5112" + height="3915" /> + <use + xlink:href="#star" + x="-0.126" + id="use4800" + y="0" + width="5112" + height="3915" /> + <use + xlink:href="#star" + id="use4802" + x="0" + y="0" + width="5112" + height="3915" /> + <use + xlink:href="#star" + x="0.126" + id="use4804" + y="0" + width="5112" + height="3915" /> + <use + xlink:href="#star" + x="0.252" + id="use4806" + y="0" + width="5112" + height="3915" /> + </g> + <g + id="s6"> + <use + xlink:href="#s5" + x="-0.063000001" + id="use4809" + y="0" + width="5112" + height="3915" /> + <use + xlink:href="#star" + x="0.315" + id="use4811" + y="0" + width="5112" + height="3915" /> + </g> + <g + id="x4"> + <use + xlink:href="#s6" + id="use4814" + x="0" + y="0" + width="5112" + height="3915" /> + <use + xlink:href="#s5" + y="0.054000001" + id="use4816" + x="0" + width="5112" + height="3915" /> + <use + xlink:href="#s6" + y="0.108" + id="use4818" + x="0" + width="5112" + height="3915" /> + <use + xlink:href="#s5" + y="0.162" + id="use4820" + x="0" + width="5112" + height="3915" /> + </g> + <g + id="u"> + <use + xlink:href="#x4" + y="-0.21600001" + id="use4823" + x="0" + width="5112" + height="3915" /> + <use + xlink:href="#x4" + id="use4825" + x="0" + y="0" + width="5112" + height="3915" /> + <use + xlink:href="#s6" + y="0.21600001" + id="use4827" + x="0" + width="5112" + height="3915" /> + </g> + <rect + id="stripe" + width="1235" + height="50" + x="0" + y="0" + style="fill:#b22234" /> + <inkscape:perspective + id="perspective64" + inkscape:persp3d-origin="479.5 : 197.66667 : 1" + inkscape:vp_z="959 : 296.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 296.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <filter + inkscape:collect="always" + id="filter9017"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="5.4802153" + id="feGaussianBlur9019" /> + </filter> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4411" + id="linearGradient4417" + x1="2255.0874" + y1="5269.3853" + x2="3294.2241" + y2="5269.3853" + gradientUnits="userSpaceOnUse" + spreadMethod="pad" /> + <filter + color-interpolation-filters="sRGB" + inkscape:collect="always" + id="filter23757"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="5.8877422" + id="feGaussianBlur23759" /> + </filter> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#ff6666" + borderopacity="1" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.28967814" + inkscape:cx="1386.4176" + inkscape:cy="1357.2216" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:object-nodes="false" + inkscape:window-width="1737" + inkscape:window-height="1047" + inkscape:window-x="1452" + inkscape:window-y="-11" + inkscape:window-maximized="1" + borderlayer="true" + showguides="true" + inkscape:guide-bbox="true" /> + <metadata + id="metadata7"> + <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 + inkscape:groupmode="layer" + id="layer2" + inkscape:label="Geo" + style="display:inline" + transform="translate(0,-4297.3599)"> + <rect + style="fill:#a1c6e9;fill-opacity:1;stroke:none" + id="rect5187" + width="3698.0801" + height="2696.8806" + x="3.0000001e-007" + y="4303.4795" /> + <path + inkscape:connector-curvature="0" + style="fill:#348d4c;fill-opacity:1;stroke:#000000;stroke-width:5.95329189;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:3.86369991;stroke-dasharray:none" + d="m 2898.9121,4306.4953 1.7674,9.5811 -9.55,28.8052 -9.8292,13.3949 -0.5891,40.8669 16.1855,11.3175 7.8757,29.9214 c -0.6394,-27.5779 11.457,-47.6508 23.069,-72.6177 l 36.2469,-0.155 -1.2402,10.1391 c 15.4632,24.7539 22.6196,39.0043 29.0842,72.2457 l 14.6973,9.9222 -2.5427,16.4646 17.674,12.6817 15.5963,-15.5963 -6.7285,23.8441 12.9609,-2.9766 -0.1551,-7.6897 10.0151,-5.7362 -0.341,-15.3484 17.0228,-18.0769 4.4028,4.1239 21.3637,-17.7668 0.2481,11.5345 8.7129,0.5581 10.6663,-42.7583 c 11.6971,-14.5281 28.0225,-22.3652 41.58,-21.5497 l 9.023,15.9375 -8.2168,22.4798 4.8681,23.3481 7.0384,-8.4958 -3.3487,-21.9528 10.0151,-5.7363 4,-15.0692 c 7.5557,-8.7468 15.1742,-15.9748 24.2472,-18.8521 l 7.8137,26.1076 11.3485,-12.0306 4.527,7.9688 2.6976,-8.7749 5.7362,-2.1705 2.6355,-12.6197 15.5965,-15.5964 14.6351,6.0773 c 3.8592,-16.7652 7.2568,-33.6019 10.5114,-50.4479 l -2.6667,-5.3022 -122.8176,0 -2.0775,3.2557 -3.5037,-3.2557 -250.2554,0 z m 400.1108,0 -4.1858,11.4105 21.5186,-10.0772 5.9224,5.4882 c -12.5135,4.6136 -24.2009,14.4428 -32.6812,29.7975 l 6.2324,20.8675 15.9375,-0.217 -0.8992,25.5185 27.534,-0.7442 11.9066,14.8523 17.1776,-10.3563 11.6585,3.3177 11.2555,-15.8755 8.775,4.403 15.5963,-15.5654 0.4031,19.1932 18.914,2.5426 c 10.783,-13.934 23.9181,-22.66 37.1152,-25.6736 l -10.3563,-9.6431 7.9687,-34.0144 5.7363,-2.1704 7.8137,26.1076 18.573,-12.8368 -0.186,-7.6896 18.9761,6.3563 -3.0387,-6.5734 7.0695,-8.4959 4.5271,7.9688 20.1853,-3.7828 -5.8603,-14.1081 -243.5889,0 z m 248.426,0 6.6044,4.2789 3.5658,-4.2789 -10.1702,0 z m 18.201,0 1.3952,1.3023 3.4418,-1.3023 -4.837,0 z m 12.9608,0 0.093,4.62 6.4494,-4.62 -6.5423,0 z m 99.8416,0 1.9534,16.4646 15.5964,-4.9921 0,-11.4725 -17.5498,0 z m -47.1613,2044.8627 -5.6741,6.0154 -1.5504,-5.2091 -7.2245,0.8061 1.7364,12.8678 -7.1626,4.651 -11.8135,-11.0073 -7.1317,4.6199 4.8371,23.3481 -11.2554,15.8754 -7.3176,-3.0386 -1.2092,10.1392 35.0685,13.829 -1.3022,6.2944 c -13.9861,-1.3348 -28.8538,0.5228 -43.2854,8.6508 l -1.2403,10.1392 -28.9913,-0.6201 -4.2789,3.534 |