# HG changeset patch # User Edouard Tisserant <edouard.tisserant@gmail.com> # Date 1690916640 -7200 # Node ID c2b6354f036ff1df8201114631b220101d0e2cd1 # Parent a466d4468d7ac11c0046dd1e12c6f7c85a18c3e9 Tests: Add minimal SVGHMI test diff -r a466d4468d7a -r c2b6354f036f tests/ide_tests/svghmi_basic.sikuli/svghmi_basic.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/ide_tests/svghmi_basic.sikuli/svghmi_basic.py Tue Aug 01 21:04:00 2023 +0200 @@ -0,0 +1,43 @@ +""" This test opens, builds and runs exemple project named "python". +Test succeeds if runtime's stdout behaves as expected +""" + +import os +import time + +# allow module import from current test directory's parent +addImportPath(os.path.dirname(getBundlePath())) + +# common test definitions module +from sikuliberemiz import * + +def test(app): + # Start the app + + app.k.Clean() + + app.waitForChangeAndIdleStdout() + + app.k.Build() + + app.waitPatternInStdout("Successfully built.", 10) + + app.k.Connect() + + app.waitForChangeAndIdleStdout() + + app.k.Transfer() + + app.waitForChangeAndIdleStdout() + + app.k.Run() + + app.waitForChangeAndIdleStdout() + # app.WaitIdleUI() + + app.click("OFF") + + # wait 10 seconds for 10 Grumpfs + return app.waitPatternInStdout("ALL GREEN LIGHTS", 10) + +run_test(test, testproject="svghmi_basic") diff -r a466d4468d7a -r c2b6354f036f tests/projects/svghmi_basic/beremiz.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/projects/svghmi_basic/beremiz.xml Tue Aug 01 21:04:00 2023 +0200 @@ -0,0 +1,5 @@ +<?xml version='1.0' encoding='utf-8'?> +<BeremizRoot URI_location="LOCAL://"> + <TargetType/> + <Libraries Enable_SVGHMI_Library="true"/> +</BeremizRoot> diff -r a466d4468d7a -r c2b6354f036f tests/projects/svghmi_basic/plc.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/projects/svghmi_basic/plc.xml Tue Aug 01 21:04:00 2023 +0200 @@ -0,0 +1,1490 @@ +<?xml version='1.0' encoding='utf-8'?> +<project xmlns="http://www.plcopen.org/xml/tc6_0201" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xhtml="http://www.w3.org/1999/xhtml" xsi:schemaLocation="http://www.plcopen.org/xml/tc6_0201"> + <fileHeader companyName="Beremiz" productName="Unnamed" productVersion="1" creationDateTime="2012-09-04T16:16:33"/> + <contentHeader name="traffic_lights" modificationDateTime="2023-08-01T20:50:25"> + <coordinateInfo> + <fbd> + <scaling x="0" y="0"/> + </fbd> + <ld> + <scaling x="0" y="0"/> + </ld> + <sfc> + <scaling x="0" y="0"/> + </sfc> + </coordinateInfo> + </contentHeader> + <types> + <dataTypes/> + <pous> + <pou name="traffic_light_sequence" pouType="functionBlock"> + <interface> + <inputVars> + <variable name="SWITCH_BUTTON"> + <type> + <BOOL/> + </type> + </variable> + <variable name="PEDESTRIAN_BUTTON"> + <type> + <BOOL/> + </type> + </variable> + </inputVars> + <outputVars> + <variable name="RED_LIGHT"> + <type> + <BOOL/> + </type> + </variable> + <variable name="ORANGE_LIGHT"> + <type> + <BOOL/> + </type> + </variable> + <variable name="GREEN_LIGHT"> + <type> + <BOOL/> + </type> + </variable> + <variable name="PEDESTRIAN_RED_LIGHT"> + <type> + <BOOL/> + </type> + </variable> + <variable name="PEDESTRIAN_GREEN_LIGHT"> + <type> + <BOOL/> + </type> + </variable> + </outputVars> + <localVars> + <variable name="TON1"> + <type> + <derived name="TON"/> + </type> + </variable> + <variable name="TON2"> + <type> + <derived name="TON"/> + </type> + </variable> + <variable name="ALLOW_CARS"> + <type> + <BOOL/> + </type> + </variable> + <variable name="WARN_CARS"> + <type> + <BOOL/> + </type> + </variable> + <variable name="STOP_CARS"> + <type> + <BOOL/> + </type> + </variable> + <variable name="ALLOW_PEDESTRIANS"> + <type> + <BOOL/> + </type> + </variable> + <variable name="STOP_PEDESTRIANS"> + <type> + <BOOL/> + </type> + </variable> + <variable name="TON3"> + <type> + <derived name="TON"/> + </type> + </variable> + <variable name="R_TRIG0"> + <type> + <derived name="R_TRIG"/> + </type> + </variable> + <variable name="R_TRIG1"> + <type> + <derived name="R_TRIG"/> + </type> + </variable> + <variable name="SR0"> + <type> + <derived name="SR"/> + </type> + </variable> + </localVars> + </interface> + <actions> + <action name="BLINK_ORANGE_LIGHT"> + <body> + <LD> + <leftPowerRail localId="1" height="40" width="3"> + <position x="54" y="123"/> + <connectionPointOut formalParameter=""> + <relPosition x="3" y="20"/> + </connectionPointOut> + </leftPowerRail> + <contact localId="2" height="15" width="21" negated="true"> + <position x="121" y="135"/> + <connectionPointIn> + <relPosition x="0" y="8"/> + <connection refLocalId="1"> + <position x="121" y="143"/> + <position x="56" y="143"/> + </connection> + </connectionPointIn> + <connectionPointOut> + <relPosition x="21" y="8"/> + </connectionPointOut> + <variable>ORANGE_LIGHT</variable> + </contact> + <block localId="3" width="97" height="102" typeName="TON" instanceName="TON1"> + <position x="216" y="103"/> + <inputVariables> + <variable formalParameter="IN"> + <connectionPointIn> + <relPosition x="0" y="40"/> + <connection refLocalId="2"> + <position x="216" y="143"/> + <position x="142" y="143"/> + </connection> + </connectionPointIn> + </variable> + <variable formalParameter="PT"> + <connectionPointIn> + <relPosition x="0" y="81"/> + <connection refLocalId="4"> + <position x="216" y="184"/> + <position x="151" y="184"/> + </connection> + </connectionPointIn> + </variable> + </inputVariables> + <inOutVariables/> + <outputVariables> + <variable formalParameter="Q"> + <connectionPointOut> + <relPosition x="97" y="40"/> + </connectionPointOut> + </variable> + <variable formalParameter="ET"> + <connectionPointOut> + <relPosition x="97" y="81"/> + </connectionPointOut> + </variable> + </outputVariables> + </block> + <inVariable localId="4" height="37" width="76" negated="false"> + <position x="75" y="166"/> + <connectionPointOut> + <relPosition x="76" y="18"/> + </connectionPointOut> + <expression>T#500ms</expression> + </inVariable> + <block localId="5" width="97" height="106" typeName="TON" instanceName="TON2"> + <position x="216" y="251"/> + <inputVariables> + <variable formalParameter="IN"> + <connectionPointIn> + <relPosition x="0" y="41"/> + <connection refLocalId="14"> + <position x="216" y="292"/> + <position x="155" y="292"/> + </connection> + </connectionPointIn> + </variable> + <variable formalParameter="PT"> + <connectionPointIn> + <relPosition x="0" y="84"/> + <connection refLocalId="15"> + <position x="216" y="335"/> + <position x="162" y="335"/> + </connection> + </connectionPointIn> + </variable> + </inputVariables> + <inOutVariables/> + <outputVariables> + <variable formalParameter="Q"> + <connectionPointOut> + <relPosition x="97" y="41"/> + </connectionPointOut> + </variable> + <variable formalParameter="ET"> + <connectionPointOut> + <relPosition x="97" y="84"/> + </connectionPointOut> + </variable> + </outputVariables> + </block> + <coil localId="6" height="15" width="21" storage="reset"> + <position x="517" y="284"/> + <connectionPointIn> + <relPosition x="0" y="8"/> + <connection refLocalId="10" formalParameter="Q"> + <position x="517" y="292"/> + <position x="427" y="292"/> + </connection> + </connectionPointIn> + <connectionPointOut> + <relPosition x="21" y="8"/> + </connectionPointOut> + <variable>ORANGE_LIGHT</variable> + </coil> + <rightPowerRail localId="7" height="40" width="3"> + <position x="598" y="123"/> + <connectionPointIn> + <relPosition x="0" y="20"/> + <connection refLocalId="8"> + <position x="598" y="143"/> + <position x="530" y="143"/> + </connection> + </connectionPointIn> + </rightPowerRail> + <coil localId="8" height="15" width="21" storage="set"> + <position x="509" y="135"/> + <connectionPointIn> + <relPosition x="0" y="8"/> + <connection refLocalId="11" formalParameter="Q"> + <position x="509" y="143"/> + <position x="428" y="143"/> + </connection> + </connectionPointIn> + <connectionPointOut> + <relPosition x="21" y="8"/> + </connectionPointOut> + <variable>ORANGE_LIGHT</variable> + </coil> + <comment localId="9" height="52" width="318"> + <position x="51" y="11"/> + <content> + <xhtml:p><![CDATA[This action makes the orange light blink]]></xhtml:p> + </content> + </comment> + <block localId="10" width="58" height="40" typeName="R_TRIG" instanceName="R_TRIG0"> + <position x="370" y="262"/> + <inputVariables> + <variable formalParameter="CLK"> + <connectionPointIn> + <relPosition x="0" y="30"/> + <connection refLocalId="5" formalParameter="Q"> + <position x="370" y="292"/> + <position x="313" y="292"/> + </connection> + </connectionPointIn> + </variable> + </inputVariables> + <inOutVariables/> + <outputVariables> + <variable formalParameter="Q"> + <connectionPointOut> + <relPosition x="58" y="30"/> + </connectionPointOut> + </variable> + </outputVariables> + </block> + <block localId="11" width="58" height="40" typeName="R_TRIG" instanceName="R_TRIG1"> + <position x="371" y="113"/> + <inputVariables> + <variable formalParameter="CLK"> + <connectionPointIn> + <relPosition x="0" y="30"/> + <connection refLocalId="3" formalParameter="Q"> + <position x="371" y="143"/> + <position x="313" y="143"/> + </connection> + </connectionPointIn> + </variable> + </inputVariables> + <inOutVariables/> + <outputVariables> + <variable formalParameter="Q"> + <connectionPointOut> + <relPosition x="58" y="30"/> + </connectionPointOut> + </variable> + </outputVariables> + </block> + <rightPowerRail localId="12" height="40" width="3"> + <position x="597" y="272"/> + <connectionPointIn> + <relPosition x="0" y="20"/> + <connection refLocalId="6"> + <position x="597" y="292"/> + <position x="538" y="292"/> + </connection> + </connectionPointIn> + </rightPowerRail> + <leftPowerRail localId="13" height="40" width="3"> + <position x="67" y="272"/> + <connectionPointOut formalParameter=""> + <relPosition x="3" y="20"/> + </connectionPointOut> + </leftPowerRail> + <contact localId="14" height="15" width="21"> + <position x="134" y="284"/> + <connectionPointIn> + <relPosition x="0" y="8"/> + <connection refLocalId="13"> + <position x="134" y="292"/> + <position x="69" y="292"/> + </connection> + </connectionPointIn> + <connectionPointOut> + <relPosition x="21" y="8"/> + </connectionPointOut> + <variable>ORANGE_LIGHT</variable> + </contact> + <inVariable localId="15" height="36" width="77" negated="false"> + <position x="85" y="317"/> + <connectionPointOut> + <relPosition x="77" y="18"/> + </connectionPointOut> + <expression>T#500ms</expression> + </inVariable> + </LD> + </body> + </action> + </actions> + <transitions> + <transition name="STOP"> + <body> + <FBD> + <block localId="42" width="59" height="53" typeName="NOT" executionOrderId="0"> + <position x="237" y="31"/> + <inputVariables> + <variable formalParameter="IN"> + <connectionPointIn> + <relPosition x="0" y="36"/> + <connection refLocalId="43"> + <position x="237" y="67"/> + <position x="202" y="67"/> + </connection> + </connectionPointIn> + </variable> + </inputVariables> + <inOutVariables/> + <outputVariables> + <variable formalParameter="OUT"> + <connectionPointOut> + <relPosition x="59" y="36"/> + </connectionPointOut> + </variable> + </outputVariables> + </block> + <inVariable localId="43" height="39" width="164" executionOrderId="0" negated="false"> + <position x="38" y="48"/> + <connectionPointOut> + <relPosition x="164" y="19"/> + </connectionPointOut> + <expression>SWITCH_BUTTON</expression> + </inVariable> + <outVariable localId="44" height="40" width="46" executionOrderId="0" negated="false"> + <position x="351" y="47"/> + <connectionPointIn> + <relPosition x="0" y="20"/> + <connection refLocalId="42" formalParameter="OUT"> + <position x="351" y="67"/> + <position x="296" y="67"/> + </connection> + </connectionPointIn> + <expression>STOP</expression> + </outVariable> + </FBD> + </body> + </transition> + </transitions> + <body> + <SFC> + <step localId="1" height="37" width="121" name="Standstill" initialStep="true"> + <position x="509" y="31"/> + <connectionPointIn> + <relPosition x="60" y="0"/> + <connection refLocalId="39"> + <position x="569" y="31"/> + <position x="569" y="11"/> + <position x="963" y="11"/> + <position x="963" y="1151"/> + <position x="776" y="1151"/> + <position x="776" y="1097"/> + </connection> + </connectionPointIn> + <connectionPointOut formalParameter=""> + <relPosition x="60" y="37"/> + </connectionPointOut> + <connectionPointOutAction formalParameter=""> + <relPosition x="121" y="18"/> + </connectionPointOutAction> + </step> + <transition localId="2" height="2" width="20"> + <position x="559" y="222"/> + <connectionPointIn> + <relPosition x="10" y="0"/> + <connection refLocalId="1"> + <position x="569" y="222"/> + <position x="569" y="68"/> + </connection> + </connectionPointIn> + <connectionPointOut> + <relPosition x="10" y="2"/> + </connectionPointOut> + <condition> + <inline name=""> + <ST> + <xhtml:p><![CDATA[SWITCH_BUTTON]]></xhtml:p> + </ST> + </inline> + </condition> + </transition> + <step localId="3" height="30" width="118" name="ORANGE"> + <position x="510" y="250"/> + <connectionPointIn> + <relPosition x="59" y="0"/> + <connection refLocalId="2"> + <position x="569" y="250"/> + <position x="569" y="224"/> + </connection> + </connectionPointIn> + <connectionPointOut formalParameter=""> + <relPosition x="59" y="30"/> + </connectionPointOut> + <connectionPointOutAction formalParameter=""> + <relPosition x="118" y="15"/> + </connectionPointOutAction> + </step> + <transition localId="6" height="2" width="20"> + <position x="559" y="376"/> + <connectionPointIn> + <relPosition x="10" y="0"/> + <connection refLocalId="15"> + <position x="569" y="376"/> + <position x="569" y="336"/> + </connection> + </connectionPointIn> + <connectionPointOut> + <relPosition x="10" y="2"/> + </connectionPointOut> + <condition> + <inline name=""> + <ST> + <xhtml:p><![CDATA[STOP_CARS]]></xhtml:p> + </ST> + </inline> + </condition> + </transition> + <actionBlock localId="8" width="231" height="162"> + <position x="711" y="34"/> + <connectionPointIn> + <relPosition x="0" y="15"/> + <connection refLocalId="1"> + <position x="711" y="49"/> + <position x="630" y="49"/> + </connection> + </connectionPointIn> + <action localId="0" qualifier="P"> + <relPosition x="0" y="0"/> + <inline> + <ST> + <xhtml:p><![CDATA[ORANGE_LIGHT := 1;]]></xhtml:p> + </ST> + </inline> + </action> + <action localId="0"> + <relPosition x="0" y="0"/> + <reference name="BLINK_ORANGE_LIGHT"/> + </action> + <action localId="0" qualifier="R"> + <relPosition x="0" y="0"/> + <reference name="PEDESTRIAN_RED_LIGHT"/> + </action> + <action localId="0" qualifier="R"> + <relPosition x="0" y="0"/> + <reference name="PEDESTRIAN_GREEN_LIGHT"/> + </action> + <action localId="0" qualifier="R"> + <relPosition x="0" y="0"/> + <reference name="RED_LIGHT"/> + </action> + <action localId="0" qualifier="R"> + <relPosition x="0" y="0"/> + <reference name="GREEN_LIGHT"/> + </action> + </actionBlock> + <actionBlock localId="9" width="232" height="125"> + <position x="711" y="250"/> + <connectionPointIn> + <relPosition x="0" y="15"/> + <connection refLocalId="3"> + <position x="711" y="265"/> + <position x="628" y="265"/> + </connection> + </connectionPointIn> + <action localId="0" qualifier="R"> + <relPosition x="0" y="0"/> + <reference name="GREEN_LIGHT"/> + </action> + <action localId="0" qualifier="S"> + <relPosition x="0" y="0"/> + <reference name="ORANGE_LIGHT"/> + </action> + <action localId="0" qualifier="S"> + <relPosition x="0" y="0"/> + <reference name="PEDESTRIAN_RED_LIGHT"/> + </action> + <action localId="0" qualifier="D" duration="T#2s"> + <relPosition x="0" y="0"/> + <reference name="STOP_CARS"/> + </action> + </actionBlock> + <step localId="10" height="34" width="92" name="RED"> + <position x="523" y="411"/> + <connectionPointIn> + <relPosition x="46" y="0"/> + <connection refLocalId="6"> + <position x="569" y="411"/> + <position x="569" y="378"/> + </connection> + </connectionPointIn> + <connectionPointOut formalParameter=""> + <relPosition x="46" y="34"/> + </connectionPointOut> + <connectionPointOutAction formalParameter=""> + <relPosition x="92" y="17"/> + </connectionPointOutAction> + </step> + <actionBlock localId="11" width="235" height="103"> + <position x="710" y="413"/> + <connectionPointIn> + <relPosition x="0" y="15"/> + <connection refLocalId="10"> + <position x="710" y="428"/> + <position x="615" y="428"/> + </connection> + </connectionPointIn> + <action localId="0" qualifier="R"> + <relPosition x="0" y="0"/> + <reference name="ORANGE_LIGHT"/> + </action> + <action localId="0" qualifier="S"> + <relPosition x="0" y="0"/> + <reference name="RED_LIGHT"/> + </action> + <action localId="0" qualifier="D" duration="T#2s"> + <relPosition x="0" y="0"/> + <reference name="ALLOW_PEDESTRIANS"/> + </action> + </actionBlock> + <transition localId="12" height="2" width="20"> + <position x="559" y="533"/> + <connectionPointIn> + <relPosition x="10" y="0"/> + <connection refLocalId="7"> + <position x="569" y="533"/> + <position x="569" y="487"/> + </connection> + </connectionPointIn> + <connectionPointOut> + <relPosition x="10" y="2"/> + </connectionPointOut> + <condition> + <inline name=""> + <ST> + <xhtml:p><![CDATA[ALLOW_PEDESTRIANS]]></xhtml:p> + </ST> + </inline> + </condition> + </transition> + <selectionDivergence localId="15" height="1" width="154"> + <position x="415" y="335"/> + <connectionPointIn> + <relPosition x="154" y="0"/> + <connection refLocalId="3"> + <position x="569" y="335"/> + <position x="569" y="280"/> + </connection> + </connectionPointIn> + <connectionPointOut formalParameter=""> + <relPosition x="0" y="1"/> + </connectionPointOut> + <connectionPointOut formalParameter=""> + <relPosition x="154" y="1"/> + </connectionPointOut> + </selectionDivergence> + <transition localId="16" height="2" width="20"> + <position x="405" y="377"/> + <connectionPointIn> + <relPosition x="10" y="0"/> + <connection refLocalId="15"> + <position x="415" y="377"/> + <position x="415" y="336"/> + </connection> + </connectionPointIn> + <connectionPointOut> + <relPosition x="10" y="2"/> + </connectionPointOut> + <condition> + <reference name="STOP"/> + </condition> + </transition> + <jumpStep localId="17" height="13" width="12" targetName="Standstill"> + <position x="409" y="418"/> + <connectionPointIn> + <relPosition x="6" y="0"/> + <connection refLocalId="16"> + <position x="415" y="418"/> + <position x="415" y="379"/> + </connection> + </connectionPointIn> + </jumpStep> + <transition localId="4" height="2" width="20"> + <position x="400" y="528"/> + <connectionPointIn> + <relPosition x="10" y="0"/> + <connection refLocalId="7"> + <position x="410" y="528"/> + <position x="410" y="487"/> + </connection> + </connectionPointIn> + <connectionPointOut> + <relPosition x="10" y="2"/> + </connectionPointOut> + <condition> + <reference name="STOP"/> + </condition> + </transition> + <jumpStep localId="5" height="13" width="12" targetName="Standstill"> + <position x="404" y="553"/> + <connectionPointIn> + <relPosition x="6" y="0"/> + <connection refLocalId="4"> + <position x="410" y="553"/> + <position x="410" y="530"/> + </connection> + </connectionPointIn> + </jumpStep> + <selectionDivergence localId="7" height="1" width="159"> + <position x="410" y="486"/> + <connectionPointIn> + <relPosition x="159" y="0"/> + <connection refLocalId="10"> + <position x="569" y="486"/> + <position x="569" y="445"/> + </connection> + </connectionPointIn> + <connectionPointOut formalParameter=""> + <relPosition x="0" y="1"/> + </connectionPointOut> + <connectionPointOut formalParameter=""> + <relPosition x="159" y="1"/> + </connectionPointOut> + </selectionDivergence> + <step localId="18" height="32" width="177" name="PEDESTRIAN_GREEN"> + <position x="481" y="572"/> + <connectionPointIn> + <relPosition x="88" y="0"/> + <connection refLocalId="12"> + <position x="569" y="572"/> + <position x="569" y="535"/> + </connection> + </connectionPointIn> + <connectionPointOut formalParameter=""> + <relPosition x="88" y="32"/> + </connectionPointOut> + <connectionPointOutAction formalParameter=""> + <relPosition x="177" y="16"/> + </connectionPointOutAction> + </step> + <actionBlock localId="19" width="247" height="110"> + <position x="708" y="573"/> + <connectionPointIn> + <relPosition x="0" y="15"/> + <connection refLocalId="18"> + <position x="708" y="588"/> + <position x="658" y="588"/> + </connection> + </connectionPointIn> + <action localId="0" qualifier="S"> + <relPosition x="0" y="0"/> + <reference name="PEDESTRIAN_GREEN_LIGHT"/> + </action> + <action localId="0" qualifier="R"> + <relPosition x="0" y="0"/> + <reference name="PEDESTRIAN_RED_LIGHT"/> + </action> + <action localId="0" qualifier="D" duration="T#10s"> + <relPosition x="0" y="0"/> + <reference name="STOP_PEDESTRIANS"/> + </action> + </actionBlock> + <transition localId="20" height="2" width="20"> + <position x="400" y="653"/> + <connectionPointIn> + <relPosition x="10" y="0"/> + <connection refLocalId="22"> + <position x="410" y="653"/> + <position x="410" y="626"/> + </connection> + </connectionPointIn> + <connectionPointOut> + <relPosition x="10" y="2"/> + </connectionPointOut> + <condition> + <inline name=""> + <ST> + <xhtml:p><![CDATA[NOT SWITCH_BUTTON]]></xhtml:p> + </ST> + </inline> + </condition> + </transition> + <jumpStep localId="21" height="13" width="12" targetName="Standstill"> + <position x="404" y="694"/> + <connectionPointIn> + <relPosition x="6" y="0"/> + <connection refLocalId="20"> + <position x="410" y="694"/> + <position x="410" y="655"/> + </connection> + </connectionPointIn> + </jumpStep> + <selectionDivergence localId="22" height="1" width="159"> + <position x="410" y="625"/> + <connectionPointIn> + <relPosition x="159" y="0"/> + <connection refLocalId="18"> + <position x="569" y="625"/> + <position x="569" y="615"/> + <position x="569" y="615"/> + <position x="569" y="604"/> + </connection> + </connectionPointIn> + <connectionPointOut formalParameter=""> + <relPosition x="0" y="1"/> + </connectionPointOut> + <connectionPointOut formalParameter=""> + <relPosition x="159" y="1"/> + </connectionPointOut> + </selectionDivergence> + <transition localId="23" height="2" width="20"> + <position x="559" y="709"/> + <connectionPointIn> + <relPosition x="10" y="0"/> + <connection refLocalId="22"> + <position x="569" y="709"/> + <position x="569" y="626"/> + </connection> + </connectionPointIn> + <connectionPointOut> + <relPosition x="10" y="2"/> + </connectionPointOut> + <condition> + <inline name=""> + <ST> + <xhtml:p><![CDATA[STOP_PEDESTRIANS]]></xhtml:p> + </ST> + </inline> + </condition> + </transition> + <step localId="24" height="30" width="148" name="PEDESTRIAN_RED"> + <position x="495" y="748"/> + <connectionPointIn> + <relPosition x="74" y="0"/> + <connection refLocalId="23"> + <position x="569" y="748"/> + <position x="569" y="711"/> + </connection> + </connectionPointIn> + <connectionPointOut formalParameter=""> + <relPosition x="74" y="30"/> + </connectionPointOut> + <connectionPointOutAction formalParameter=""> + <relPosition x="148" y="15"/> + </connectionPointOutAction> + </step> + <actionBlock localId="25" width="239" height="110"> + <position x="708" y="748"/> + <connectionPointIn> + <relPosition x="0" y="15"/> + <connection refLocalId="24"> + <position x="708" y="763"/> + <position x="643" y="763"/> + </connection> + </connectionPointIn> + <action localId="0" qualifier="S"> + <relPosition x="0" y="0"/> + <reference name="PEDESTRIAN_RED_LIGHT"/> + </action> + <action localId="0" qualifier="R"> + <relPosition x="0" y="0"/> + <reference name="PEDESTRIAN_GREEN_LIGHT"/> + </action> + <action localId="0" qualifier="D" duration="T#2s"> + <relPosition x="0" y="0"/> + <reference name="ALLOW_CARS"/> + </action> + </actionBlock> + <transition localId="26" height="2" width="20"> + <position x="400" y="857"/> + <connectionPointIn> + <relPosition x="10" y="0"/> + <connection refLocalId="28"> + <position x="410" y="857"/> + <position x="410" y="816"/> + </connection> + </connectionPointIn> + <connectionPointOut> + <relPosition x="10" y="2"/> + </connectionPointOut> + <condition> + <connectionPointIn> + <connection refLocalId="48"> + <position x="400" y="858"/> + <position x="290" y="858"/> + </connection> + </connectionPointIn> + </condition> + </transition> + <jumpStep localId="27" height="13" width="12" targetName="Standstill"> + <position x="404" y="898"/> + <connectionPointIn> + <relPosition x="6" y="0"/> + <connection refLocalId="26"> + <position x="410" y="898"/> + <position x="410" y="859"/> + </connection> + </connectionPointIn> + </jumpStep> + <selectionDivergence localId="28" height="1" width="159"> + <position x="410" y="815"/> + <connectionPointIn> + <relPosition x="159" y="0"/> + <connection refLocalId="24"> + <position x="569" y="815"/> + <position x="569" y="778"/> + </connection> + </connectionPointIn> + <connectionPointOut formalParameter=""> + <relPosition x="0" y="1"/> + </connectionPointOut> + <connectionPointOut formalParameter=""> + <relPosition x="159" y="1"/> + </connectionPointOut> + </selectionDivergence> + <transition localId="29" height="2" width="20"> + <position x="559" y="879"/> + <connectionPointIn> + <relPosition x="10" y="0"/> + <connection refLocalId="28"> + <position x="569" y="879"/> + <position x="569" y="816"/> + </connection> + </connectionPointIn> + <connectionPointOut> + <relPosition x="10" y="2"/> + </connectionPointOut> + <condition> + <inline name=""> + <ST> + <xhtml:p><![CDATA[ALLOW_CARS]]></xhtml:p> + </ST> + </inline> + </condition> + </transition> + <step localId="30" height="33" width="92" name="GREEN"> + <position x="523" y="930"/> + <connectionPointIn> + <relPosition x="46" y="0"/> + <connection refLocalId="29"> + <position x="569" y="930"/> + <position x="569" y="881"/> + </connection> + </connectionPointIn> + <connectionPointOut formalParameter=""> + <relPosition x="46" y="33"/> + </connectionPointOut> + <connectionPointOutAction formalParameter=""> + <relPosition x="92" y="16"/> + </connectionPointOutAction> + </step> + <actionBlock localId="31" width="227" height="110"> + <position x="709" y="931"/> + <connectionPointIn> + <relPosition x="0" y="15"/> + <connection refLocalId="30"> + <position x="709" y="946"/> + <position x="615" y="946"/> + </connection> + </connectionPointIn> + <action localId="0" qualifier="S"> + <relPosition x="0" y="0"/> + <reference name="GREEN_LIGHT"/> + </action> + <action localId="0" qualifier="R"> + <relPosition x="0" y="0"/> + <reference name="RED_LIGHT"/> + </action> + <action localId="0" qualifier="D" duration="T#20s"> + <relPosition x="0" y="0"/> + <reference name="WARN_CARS"/> + </action> + </actionBlock> + <block localId="32" width="89" height="94" typeName="TON" instanceName="TON3"> + <position x="308" y="1053"/> + <inputVariables> + <variable formalParameter="IN"> + <connectionPointIn> + <relPosition x="0" y="38"/> + <connection refLocalId="44" formalParameter="Q1"> + <position x="308" y="1091"/> + <position x="291" y="1091"/> + <position x="291" y="1065"/> + <position x="275" y="1065"/> + </connection> + </connectionPointIn> + </variable> + <variable formalParameter="PT"> + <connectionPointIn> + <relPosition x="0" y="75"/> + <connection refLocalId="34"> + <position x="308" y="1128"/> + <position x="270" y="1128"/> + </connection> + </connectionPointIn> + </variable> + </inputVariables> + <inOutVariables/> + <outputVariables> + <variable formalParameter="Q"> + <connectionPointOut> + <relPosition x="89" y="38"/> + </connectionPointOut> + </variable> + <variable formalParameter="ET"> + <connectionPointOut> + <relPosition x="89" y="75"/> + </connectionPointOut> + </variable> + </outputVariables> + </block> + <inVariable localId="33" height="36" width="168" negated="false"> + <position x="15" y="1047"/> + <connectionPointOut> + <relPosition x="168" y="18"/> + </connectionPointOut> + <expression>PEDESTRIAN_BUTTON</expression> + </inVariable> + <inVariable localId="34" height="33" width="53" negated="false"> + <position x="217" y="1112"/> + <connectionPointOut> + <relPosition x="53" y="16"/> + </connectionPointOut> + <expression>T#2s</expression> + </inVariable> + <block localId="35" width="67" height="60" typeName="OR"> + <position x="459" y="1061"/> + <inputVariables> + <variable formalParameter="IN1"> + <connectionPointIn> + <relPosition x="0" y="30"/> + <connection refLocalId="32" formalParameter="Q"> + <position x="459" y="1091"/> + <position x="397" y="1091"/> + </connection> + </connectionPointIn> + </variable> + <variable formalParameter="IN2"> + <connectionPointIn> + <relPosition x="0" y="50"/> + <connection refLocalId="36"> + <position x="459" y="1111"/> + <position x="427" y="1111"/> + <position x="427" y="1195"/> + <position x="260" y="1195"/> + </connection> + </connectionPointIn> + </variable> + </inputVariables> + <inOutVariables/> + <outputVariables> + <variable formalParameter="OUT"> + <connectionPointOut> + <relPosition x="67" y="30"/> + </connectionPointOut> + </variable> + </outputVariables> + </block> + <inVariable localId="36" height="30" width="97" negated="false"> + <position x="163" y="1182"/> + <connectionPointOut> + <relPosition x="97" y="15"/> + </connectionPointOut> + <expression>WARN_CARS</expression> + </inVariable> + <transition localId="37" height="2" width="20"> + <position x="559" y="1090"/> + <connectionPointIn> + <relPosition x="10" y="0"/> + <connection refLocalId="38"> + <position x="569" y="1090"/> + <position x="569" y="1060"/> + </connection> + </connectionPointIn> + <connectionPointOut> + <relPosition x="10" y="2"/> + </connectionPointOut> + <condition> + <connectionPointIn> + <connection refLocalId="35" formalParameter="OUT"> + <position x="559" y="1091"/> + <position x="526" y="1091"/> + </connection> + </connectionPointIn> + </condition> + </transition> + <selectionDivergence localId="38" height="1" width="207"> + <position x="569" y="1059"/> + <connectionPointIn> + <relPosition x="0" y="0"/> + <connection refLocalId="30"> + <position x="569" y="1059"/> + <position x="569" y="963"/> + </connection> + </connectionPointIn> + <connectionPointOut formalParameter=""> + <relPosition x="0" y="1"/> + </connectionPointOut> + <connectionPointOut formalParameter=""> + <relPosition x="207" y="1"/> + </connectionPointOut> + </selectionDivergence> + <transition localId="39" height="2" width="20"> + <position x="766" y="1095"/> + <connectionPointIn> + <relPosition x="10" y="0"/> + <connection refLocalId="38"> + <position x="776" y="1095"/> + <position x="776" y="1060"/> + </connection> + </connectionPointIn> + <connectionPointOut> + <relPosition x="10" y="2"/> + </connectionPointOut> + <condition> + <inline name=""> + <ST> + <xhtml:p><![CDATA[NOT SWITCH_BUTTON]]></xhtml:p> + </ST> + </inline> + </condition> + </transition> + <jumpStep localId="41" height="13" width="12" targetName="ORANGE"> + <position x="563" y="1137"/> + <connectionPointIn> + <relPosition x="6" y="0"/> + <connection refLocalId="37"> + <position x="569" y="1137"/> + <position x="569" y="1092"/> + </connection> + </connectionPointIn> + </jumpStep> + <block localId="44" width="51" height="60" typeName="SR" instanceName="SR0"> + <position x="224" y="1035"/> + <inputVariables> + <variable formalParameter="S1"> + <connectionPointIn> + <relPosition x="0" y="30"/> + <connection refLocalId="33"> + <position x="224" y="1065"/> + <position x="183" y="1065"/> + </connection> + </connectionPointIn> + </variable> + <variable formalParameter="R"> + <connectionPointIn> + <relPosition x="0" y="50"/> + <connection refLocalId="32" formalParameter="Q"> + <position x="224" y="1085"/> + <position x="203" y="1085"/> + <position x="203" y="1167"/> + <position x="416" y="1167"/> + <position x="416" y="1091"/> + <position x="397" y="1091"/> + </connection> + </connectionPointIn> + </variable> + </inputVariables> + <inOutVariables/> + <outputVariables> + <variable formalParameter="Q1"> + <connectionPointOut> + <relPosition x="51" y="30"/> + </connectionPointOut> + </variable> + </outputVariables> + </block> + <comment localId="45" height="767" width="753"> + <position x="973" y="21"/> + <content> + <xhtml:p><![CDATA[*** Description of SFC action qualifiers *** + +N : non-stored - The action code body is executed or the Boolean variable is set as +long as the step is active. + +R : overriding reset – When the step has previously been executed with the S +(including DS, DS, and SL) qualifier, the R qualifier will stop the execution of the +code or reset the Boolean variable. + +S : set (stored) - The action code body is executed or the Boolean variable is set. +This state is stored as soon as the step becomes active. It can only be reset +explicitly by associating the same action to a different step using the qualifier 'R'. + +L : time limited - The action code body is executed or the Boolean variable is set as +long as the step is active but maximal for the fixed time interval. + +D : time delayed - The action code body is executed or the Boolean variable is set +after the fixed delay time has elapsed. The action remains active as long as the step +is active. If the step is active shorter than the fixed delay time the action does not +become active. + +P : pulse - As soon as the step is active the action code body is executed or the +Boolean variable is set for one operating cycle. (Note: The code body will then +execute for one additional operating cycle with the Step.X variable FALSE.) + +SD : stored and time delayed - the action code body is executed or the Boolean +variable is stored and set when the fixed delay time has elapsed after the step +activation, even if the step becomes inactive. The action remains active until it is +reset. If the step is active shorter than the fixed delay time the action becomes active +anyway. + +DS : delayed and stored - The action code body is executed or the Boolean variable +is set when the fixed delay time has elapsed after the step activation. The action +remains active until it is reset. If the step is active shorter than the fixed delay time +the action does not become active. + +SL : stored and time limited - The action code body is executed or the Boolean +variable is set and stored for a fixed time interval as soon as the step is active. If the +step is active shorter than the time interval the action is active for the whole time +interval anyway. If the action is reset during the time interval the action becomes +inactive as soon as the action is reset. +]]></xhtml:p> + </content> + </comment> + <comment localId="46" height="224" width="375"> + <position x="8" y="326"/> + <content> + <xhtml:p><![CDATA[Conditions can be written in any IEC 61131-3 language. +They can be implemented in defferent ways: +- reference to external implementation; +- inline implementation; +- written in FBD or LD on SFC diagram and connected to the condition. + +See below examples of all these types.]]></xhtml:p> + </content> + </comment> + <leftPowerRail localId="47" height="40" width="3"> + <position x="189" y="838"/> + <connectionPointOut formalParameter=""> + <relPosition x="3" y="20"/> + </connectionPointOut> + </leftPowerRail> + <contact localId="48" height="15" width="21" negated="true"> + <position x="269" y="850"/> + <connectionPointIn> + <relPosition x="0" y="8"/> + <connection refLocalId="47"> + <position x="269" y="858"/> + <position x="192" y="858"/> + </connection> + </connectionPointIn> + <connectionPointOut> + <relPosition x="21" y="8"/> + </connectionPointOut> + <variable>SWITCH_BUTTON</variable> + </contact> + <comment localId="13" height="86" width="379"> + <position x="9" y="28"/> + <content> + <xhtml:p><![CDATA[Sequential function chart (SFC) is commonly used to describe state machines.]]></xhtml:p> + </content> + </comment> + </SFC> + </body> + </pou> + <pou name="main_program" pouType="program"> + <interface> + <localVars> + <variable name="trafic_light_sequence0"> + <type> + <derived name="traffic_light_sequence"/> + </type> + </variable> + <variable name="SwitchButton"> + <type> + <derived name="HMI_BOOL"/> + </type> + </variable> + <variable name="PedestrianButton"> + <type> + <derived name="HMI_BOOL"/> + </type> + </variable> + <variable name="RedLight"> + <type> + <derived name="HMI_BOOL"/> + </type> + </variable> + <variable name="OrangeLight"> + <type> + <derived name="HMI_BOOL"/> + </type> + </variable> + <variable name="GreenLight"> + <type> + <derived name="HMI_BOOL"/> + </type> + </variable> + <variable name="PedestrianRedLight"> + <type> + <derived name="HMI_BOOL"/> + </type> + </variable> + <variable name="PedestrianGreenLight"> + <type> + <derived name="HMI_BOOL"/> + </type> + </variable> + <variable name="Block1"> + <type> + <derived name="python_eval"/> + </type> + </variable> + </localVars> + </interface> + <body> + <FBD> + <block localId="1" width="350" height="836" typeName="traffic_light_sequence" instanceName="trafic_light_sequence0" executionOrderId="0"> + <position x="494" y="462"/> + <inputVariables> + <variable formalParameter="SWITCH_BUTTON"> + <connectionPointIn> + <relPosition x="0" y="101"/> + <connection refLocalId="103"> + <position x="494" y="563"/> + <position x="470" y="563"/> + <position x="470" y="564"/> + <position x="446" y="564"/> + </connection> + </connectionPointIn> + </variable> + <variable formalParameter="PEDESTRIAN_BUTTON"> + <connectionPointIn> + <relPosition x="0" y="264"/> + <connection refLocalId="104"> + <position x="494" y="726"/> + <position x="466" y="726"/> + <position x="466" y="727"/> + <position x="438" y="727"/> + </connection> + </connectionPointIn> + </variable> + </inputVariables> + <inOutVariables/> + <outputVariables> + <variable formalParameter="RED_LIGHT"> + <connectionPointOut> + <relPosition x="350" y="101"/> + </connectionPointOut> + </variable> + <variable formalParameter="ORANGE_LIGHT"> + <connectionPointOut> + <relPosition x="350" y="264"/> + </connectionPointOut> + </variable> + <variable formalParameter="GREEN_LIGHT"> + <connectionPointOut> + <relPosition x="350" y="427"/> + </connectionPointOut> + </variable> + <variable formalParameter="PEDESTRIAN_RED_LIGHT"> + <connectionPointOut> + <relPosition x="350" y="590"/> + </connectionPointOut> + </variable> + <variable formalParameter="PEDESTRIAN_GREEN_LIGHT"> + <connectionPointOut> + <relPosition x="350" y="753"/> + </connectionPointOut> + </variable> + </outputVariables> + </block> + <comment localId="24" height="287" width="1008"> + <position x="22" y="13"/> + <content> + <xhtml:p><![CDATA[This example implements control of traffic lights. + +Basically it shows following features of Beremiz: +- web interface (SCADA) using integrated web server in SVGHMI extension; +- interaction with web UI; +- functional blocks in SFC language. + + + + +SVGHMI is extensions to build web interface to PLC. It has *integrated* web-server. So it's NOT necessary to install Apache, lighttpd or nginx for that!!! + +As the program is running in PLC, web UI will be available at http://localhost:8009/. + +Web interface is build as SVG file in Inkscape. To edit SVG file click 'Inkscape' button in 0x: SVGHMI extension. +Inkscape is a free and open-source vector graphics editor. It's not part of Beremiz and needs to be installed separately. +]]></xhtml:p> + </content> + </comment> + <comment localId="102" height="134" width="734"> + <position x="21" y="303"/> + <content> + <xhtml:p><![CDATA[In this example FB like 'Button', 'Led' and 'Text' are used. +Back_id and sele_id inputs of these blocks are IDs of graphic primitives in SVG file. +This is the way how elements in SVG are bound to elements in PLC program. +You can find out or edit these IDs in Inkscape.]]></xhtml:p> + </content> + </comment> + <inVariable localId="103" executionOrderId="0" height="27" width="106" negated="false"> + <position x="340" y="551"/> + <connectionPointOut> + <relPosition x="106" y="13"/> + </connectionPointOut> + <expression>SwitchButton</expression> + </inVariable> + <inVariable localId="104" executionOrderId="0" height="27" width="138" negated="false"> + <position x="300" y="714"/> + <connectionPointOut> + <relPosition x="138" y="13"/> + </connectionPointOut> + <expression>PedestrianButton</expression> + </inVariable> + <outVariable localId="105" executionOrderId="0" height="27" width="74" negated="false"> + <position x="891" y="551"/> + <connectionPointIn> + <relPosition x="0" y="13"/> + <connection refLocalId="1" formalParameter="RED_LIGHT"> + <position x="891" y="564"/> + <position x="867" y="564"/> + <position x="867" y="563"/> + <position x="844" y="563"/> + </connection> + </connectionPointIn> + <expression>RedLight</expression> + </outVariable> + <outVariable localId="106" executionOrderId="0" height="27" width="98" negated="false"> + <position x="880" y="714"/> + <connectionPointIn> + <relPosition x="0" y="13"/> + <connection refLocalId="1" formalParameter="ORANGE_LIGHT"> + <position x="880" y="727"/> + <position x="862" y="727"/> + <position x="862" y="726"/> + <position x="844" y="726"/> + </connection> + </connectionPointIn> + <expression>OrangeLight</expression> + </outVariable> + <outVariable localId="107" executionOrderId="0" height="27" width="90" negated="false"> + <position x="881" y="876"/> + <connectionPointIn> + <relPosition x="0" y="13"/> + <connection refLocalId="1" formalParameter="GREEN_LIGHT"> + <position x="881" y="889"/> + <position x="844" y="889"/> + </connection> + </connectionPointIn> + <expression>GreenLight</expression> + </outVariable> + <outVariable localId="108" executionOrderId="0" height="27" width="154" negated="false"> + <position x="882" y="1040"/> + <connectionPointIn> + <relPosition x="0" y="13"/> + <connection refLocalId="1" formalParameter="PEDESTRIAN_RED_LIGHT"> + <position x="882" y="1053"/> + <position x="863" y="1053"/> + <position x="863" y="1052"/> + <position x="844" y="1052"/> + </connection> + </connectionPointIn> + <expression>PedestrianRedLight</expression> + </outVariable> + <outVariable localId="109" executionOrderId="0" height="27" width="170" negated="false"> + <position x="873" y="1203"/> + <connectionPointIn> + <relPosition x="0" y="13"/> + <connection refLocalId="1" formalParameter="PEDESTRIAN_GREEN_LIGHT"> + <position x="873" y="1216"/> + <position x="858" y="1216"/> + <position x="858" y="1215"/> + <position x="844" y="1215"/> + </connection> + </connectionPointIn> + <expression>PedestrianGreenLight</expression> + </outVariable> + <inVariable localId="9" height="30" width="490" executionOrderId="0" negated="false"> + <position x="874" y="644"/> + <connectionPointOut> + <relPosition x="490" y="15"/> + </connectionPointOut> + <expression>'sys.stdout.write("ALL GREEN LIGHTS\n"), sys.stdout.flush()'</expression> + </inVariable> + <block localId="8" width="125" height="80" typeName="python_eval" instanceName="Block1" executionOrderId="0"> + <position x="1425" y="594"/> + <inputVariables> + <variable formalParameter="TRIG"> + <connectionPointIn> + <relPosition x="0" y="35"/> + <connection refLocalId="1" formalParameter="RED_LIGHT"> + <position x="1425" y="629"/> + <position x="866" y="629"/> + <position x="866" y="563"/> + <position x="844" y="563"/> + </connection> + </connectionPointIn> + </variable> + <variable formalParameter="CODE"> + <connectionPointIn> + <relPosition x="0" y="65"/> + <connection refLocalId="9"> + <position x="1425" y="659"/> + <position x="1356" y="659"/> + </connection> + </connectionPointIn> + </variable> + </inputVariables> + <inOutVariables/> + <outputVariables> + <variable formalParameter="ACK"> + <connectionPointOut> + <relPosition x="125" y="35"/> + </connectionPointOut> + </variable> + <variable formalParameter="RESULT"> + <connectionPointOut> + <relPosition x="125" y="65"/> + </connectionPointOut> + </variable> + </outputVariables> + </block> + </FBD> + </body> + </pou> + </pous> + </types> + <instances> + <configurations> + <configuration name="config"> + <resource name="resource1"> + <task name="test_task" interval="T#100ms" priority="0"> + <pouInstance name="main_instance" typeName="main_program"/> + </task> + </resource> + </configuration> + </configurations> + </instances> +</project> diff -r a466d4468d7a -r c2b6354f036f tests/projects/svghmi_basic/svghmi_0@svghmi/baseconfnode.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/projects/svghmi_basic/svghmi_0@svghmi/baseconfnode.xml Tue Aug 01 21:04:00 2023 +0200 @@ -0,0 +1,2 @@ +<?xml version='1.0' encoding='utf-8'?> +<BaseParams xmlns:xsd="http://www.w3.org/2001/XMLSchema" IEC_Channel="0" Name="svghmi_0"/> diff -r a466d4468d7a -r c2b6354f036f tests/projects/svghmi_basic/svghmi_0@svghmi/confnode.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/projects/svghmi_basic/svghmi_0@svghmi/confnode.xml Tue Aug 01 21:04:00 2023 +0200 @@ -0,0 +1,2 @@ +<?xml version='1.0' encoding='utf-8'?> +<SVGHMI xmlns:xsd="http://www.w3.org/2001/XMLSchema" WatchdogInitial="10" WatchdogInterval="5" EnableWatchdog="true" Path="{name}" OnStart="chromium-browser --no-sandbox --test-type --single-process --start-fullscreen {url}"/> diff -r a466d4468d7a -r c2b6354f036f tests/projects/svghmi_basic/svghmi_0@svghmi/svghmi.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/projects/svghmi_basic/svghmi_0@svghmi/svghmi.svg Tue Aug 01 21:04:00 2023 +0200 @@ -0,0 +1,1551 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="1920" + height="1080" + id="svg2" + version="1.1" + inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)" + sodipodi:docname="svghmi.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + <defs + id="defs4"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective23716" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective23669" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective23629" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective23580" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective23540" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective23506" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective23466" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective23432" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective23330" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective23257" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective23226" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective23189" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective23118" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective23081" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective23044" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective22995" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective22946" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective22891" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective22866" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective22829" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective22795" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective22692" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective22661" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective22630" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective22569" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective22532" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective22501" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective22470" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective22403" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective22318" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective22290" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective22265" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective22090" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective22002" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective21911" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective21856" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective21831" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective21776" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective21745" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective21654" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective21626" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective21580" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective21549" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective21518" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective21418" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective21338" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective21250" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective19662" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective19613" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective19555" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective19494" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective19325" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective19285" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective19247" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective19201" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective19155" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective19106" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective19050" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective18979" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective18945" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective18911" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective18841" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective18807" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective18767" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective18727" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective18693" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective18662" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective18613" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective18555" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective18518" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective18475" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective18429" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective18377" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective18322" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective18273" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective18239" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective18193" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective18150" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective18104" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective18061" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective18021" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective17978" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective17950" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective17868" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective17840" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective17812" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective17784" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective17756" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective17728" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective17700" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective17636" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective17605" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective17574" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective17543" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective17512" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective17475" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective17420" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective17386" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective17322" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective17261" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective17212" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective17163" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective17120" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective17074" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective17046" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective16994" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective16951" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective16896" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective16856" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective16822" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective16794" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective16766" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective16738" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective16689" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective16640" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective16594" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective16548" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective16493" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective16438" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective16401" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective16370" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective16321" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective16242" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective16187" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective16156" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective16101" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective16061" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective16027" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective15972" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective15860" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective15826" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective15789" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective15737" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective15676" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective15627" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective15569" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective15532" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective15477" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective15440" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective15403" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective15360" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective15320" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective15283" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective15207" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective15158" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective15121" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective15084" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective15041" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective14998" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective14949" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective14906" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective14863" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective14823" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective14783" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective14743" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective14703" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective14642" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective14572" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective14461" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective14421" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective14365" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective14328" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective14291" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective14254" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective14217" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective14174" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective14137" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective14100" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective14057" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective14020" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective13983" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective13946" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective13909" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 840.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 840.5 : 1" + inkscape:persp3d-origin="0.5 : 840.33333 : 1" + id="perspective13862" /> + <inkscape:perspective + id="perspective13880" + inkscape:persp3d-origin="372.04724 : 1190.7874 : 1" + inkscape:vp_z="744.09448 : 1366.1811 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 1366.1811 : 1" + sodipodi:type="inkscape:persp3d" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.9899495" + inkscape:cx="712.66262" + inkscape:cy="380.32243" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + inkscape:window-width="3840" + inkscape:window-height="2096" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" + inkscape:pagecheckerboard="0" /> + <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" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(37.474617,-760.93329)"> + <rect + style="opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:5.19615;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none" + id="rect250" + width="1920" + height="1080" + x="-37.474617" + y="760.93329" + inkscape:label="HMI:Page:Home" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#282828;fill-opacity:1;stroke:none;stroke-width:8.16464;marker:none;enable-background:accumulate" + d="m 889.54887,843.77425 v 519.99995 h 75.74999 v 374.2501 h 22.87504 v -245.625 h 35.625 v 62.875 h 145.75 v -130 h -145.75 v 48.5 h -35.625 v -110 h 87.125 V 843.77425 Z" + id="rect2985" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccccccccccc" /> + <rect + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffac2c;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:8.16464;marker:none;enable-background:accumulate" + id="rect3761" + width="78.571426" + height="75.714287" + x="936.70953" + y="1596.6492" + ry="14.285714" /> + <g + id="g244" + inkscape:label="HMI:Switch@/REDLIGHT" + transform="matrix(4,0,0,4,432.42386,-2222.7999)"> + <circle + r="13.214286" + cy="63.92857" + cx="76.071426" + transform="translate(61.071429,724.14799)" + id="RED_OFF" + style="color:#000000;overflow:visible;visibility:visible;fill:#505050;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.041;marker:none;enable-background:accumulate" + inkscape:label="false" /> + <circle + r="13.214286" + cy="63.92857" + cx="76.071426" + transform="translate(61.07143,724.14799)" + id="RED_ON" + style="color:#000000;overflow:visible;visibility:visible;fill:#e20f10;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.041;marker:none;enable-background:accumulate" + inkscape:label="true" /> + </g> + <g + id="g248" + inkscape:label="HMI:Switch@/ORANGELIGHT" + transform="matrix(4,0,0,4,432.42386,-2222.7999)"> + <circle + r="13.214286" + cy="63.92857" + cx="76.071426" + transform="translate(61.071429,764.14799)" + id="ORANGE_OFF" + style="color:#000000;overflow:visible;visibility:visible;fill:#505050;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.041;marker:none;enable-background:accumulate" + inkscape:label="false" /> + <circle + r="13.214286" + cy="63.92857" + cx="76.071426" + transform="translate(61.07143,764.14799)" + id="ORANGE_ON" + style="color:#000000;overflow:visible;visibility:visible;fill:#f06414;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.041;marker:none;enable-background:accumulate" + inkscape:label="true" /> + </g> + <g + id="g240" + inkscape:label="HMI:Switch@/GREENLIGHT" + transform="matrix(4,0,0,4,432.42386,-2222.7999)"> + <circle + r="13.214286" + cy="63.92857" + cx="76.071426" + transform="translate(61.071429,804.14799)" + id="GREEN_OFF" + style="color:#000000;overflow:visible;visibility:visible;fill:#505050;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.041;marker:none;enable-background:accumulate" + inkscape:label="false" /> + <circle + r="13.214286" + cy="63.92857" + cx="76.071426" + transform="translate(61.07143,804.14799)" + id="GREEN_ON" + style="color:#000000;overflow:visible;visibility:visible;fill:#50a00e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.041;marker:none;enable-background:accumulate" + inkscape:label="true" /> + </g> + <g + id="g224" + inkscape:label="HMI:Button@/PEDESTRIANBUTTON" + transform="matrix(4,0,0,4,432.42386,-2382.7999)"> + <circle + r="5.3571429" + cy="252.5" + cx="136.78572" + transform="matrix(1.3666667,0,0,1.3666667,-51.047621,659.24323)" + id="PEDESTRIAN_OFF" + style="color:#000000;overflow:visible;visibility:visible;fill:#e20f10;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.041;marker:none;enable-background:accumulate" + inkscape:label="inactive" /> + <circle + r="5.3571429" + cy="252.5" + cx="136.78572" + transform="matrix(1.2333334,0,0,1.2333334,-32.809525,692.9099)" + id="PEDESTRIAN_ON" + style="color:#000000;overflow:visible;visibility:visible;fill:#e20f10;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.041;marker:none;enable-background:accumulate" + inkscape:label="active" /> + </g> + <g + id="g232" + inkscape:label="HMI:Switch@/PEDESTRIANREDLIGHT" + transform="matrix(4,0,0,4,432.42386,-2302.7999)"> + <path + inkscape:connector-curvature="0" + id="PEDESTRIAN_RED_OFF" + style="fill:#505050;fill-opacity:1;fill-rule:nonzero;stroke:none" + d="m 157.9184,937.65033 c 0.98406,-0.0329 1.66207,0.64458 1.66207,1.76564 0,1.1159 -0.57443,1.01655 -0.57443,1.38898 0,0.40492 0.23543,1.04997 1.08294,1.45489 0.9511,0.47555 1.49256,0.71568 1.72797,2.10466 0.20247,1.25196 0.33901,4.06805 0.33901,4.06805 0.0329,0.37197 -0.13654,1.32259 0,1.55848 0.27309,0.50851 -0.0329,1.18652 -0.37196,0.98405 -0.37197,-0.20246 -0.78159,-0.678 -0.67801,-1.04997 0.0989,-0.4101 0,-0.84751 -0.0329,-1.08764 -0.0707,-0.23541 -0.0707,-2.91449 -0.57914,-3.08399 -0.26837,-0.0659 -0.1695,2.26944 0.033,3.45596 0.10358,0.5457 0.10358,3.3566 0.10358,4.27474 0,0.88095 -0.20246,3.31942 -0.0659,3.72953 0.16951,0.37196 1.38898,0.97935 1.38898,1.42193 0,0.44259 -0.57443,0.339 -1.01702,0.27262 -0.40963,-0.0372 -1.89748,-0.64458 -2.00106,-1.76565 -0.10359,-1.11542 -0.13654,-5.08459 -0.57443,-7.2175 l -0.1695,2.26945 c 0,0 -0.0377,3.5925 -0.13654,4.27004 -0.10359,0.71097 -0.40493,1.83204 -0.78159,2.13808 -0.16951,0.13655 -1.69503,0.67801 -1.89749,0.50851 -0.40492,-0.339 -0.40492,-0.6121 0.0707,-0.98406 0.47083,-0.40539 0.71096,-0.61209 0.74392,-1.52552 0.0659,-0.88047 0,-2.60892 -0.0329,-3.28646 -0.0707,-0.71567 -0.13654,-3.69608 -0.10358,-4.10571 0.44259,-2.81091 -0.0989,-3.55955 -0.0989,-3.55955 l -0.40963,2.54254 c -0.033,1.08763 -0.0989,1.42664 -0.13655,2.00059 -0.0659,0.78206 -0.43788,1.18652 -0.71096,0.81455 -0.23543,-0.40444 -0.43788,-1.83109 -0.33901,-2.09994 0.10358,-0.30557 -0.0989,-0.95063 0.0707,-1.69455 0.13183,-0.71568 0.26838,-2.91921 0.30134,-3.18759 0.0706,-0.24013 0.10358,-0.88093 0.88046,-1.2901 0.7816,-0.37196 1.25714,-1.01748 1.35602,-1.55847 0.13655,-0.54147 -0.54147,-1.08341 -0.50851,-1.86453 0.0707,-0.9511 0.24014,-1.6291 1.4596,-1.66206" + inkscape:label="false" /> + <path + inkscape:connector-curvature="0" + id="PEDESTRIAN_RED_ON" + style="fill:#e20f10;fill-opacity:1;fill-rule:nonzero;stroke:none" + d="m 157.9184,937.65033 c 0.98406,-0.0329 1.66207,0.64458 1.66207,1.76564 0,1.1159 -0.57443,1.01655 -0.57443,1.38898 0,0.40492 0.23543,1.04997 1.08294,1.45489 0.9511,0.47555 1.49256,0.71568 1.72797,2.10466 0.20247,1.25196 0.33901,4.06805 0.33901,4.06805 0.0329,0.37197 -0.13654,1.32259 0,1.55848 0.27309,0.50851 -0.0329,1.18652 -0.37196,0.98405 -0.37197,-0.20246 -0.78159,-0.678 -0.67801,-1.04997 0.0989,-0.4101 0,-0.84751 -0.0329,-1.08764 -0.0707,-0.23541 -0.0707,-2.91449 -0.57914,-3.08399 -0.26837,-0.0659 -0.1695,2.26944 0.033,3.45596 0.10358,0.5457 0.10358,3.3566 0.10358,4.27474 0,0.88095 -0.20246,3.31942 -0.0659,3.72953 0.16951,0.37196 1.38898,0.97935 1.38898,1.42193 0,0.44259 -0.57443,0.339 -1.01702,0.27262 -0.40963,-0.0372 -1.89748,-0.64458 -2.00106,-1.76565 -0.10359,-1.11542 -0.13654,-5.08459 -0.57443,-7.2175 l -0.1695,2.26945 c 0,0 -0.0377,3.5925 -0.13654,4.27004 -0.10359,0.71097 -0.40493,1.83204 -0.78159,2.13808 -0.16951,0.13655 -1.69503,0.67801 -1.89749,0.50851 -0.40492,-0.339 -0.40492,-0.6121 0.0707,-0.98406 0.47083,-0.40539 0.71096,-0.61209 0.74392,-1.52552 0.0659,-0.88047 0,-2.60892 -0.0329,-3.28646 -0.0707,-0.71567 -0.13654,-3.69608 -0.10358,-4.10571 0.44259,-2.81091 -0.0989,-3.55955 -0.0989,-3.55955 l -0.40963,2.54254 c -0.033,1.08763 -0.0989,1.42664 -0.13655,2.00059 -0.0659,0.78206 -0.43788,1.18652 -0.71096,0.81455 -0.23543,-0.40444 -0.43788,-1.83109 -0.33901,-2.09994 0.10358,-0.30557 -0.0989,-0.95063 0.0707,-1.69455 0.13183,-0.71568 0.26838,-2.91921 0.30134,-3.18759 0.0706,-0.24013 0.10358,-0.88093 0.88046,-1.2901 0.7816,-0.37196 1.25714,-1.01748 1.35602,-1.55847 0.13655,-0.54147 -0.54147,-1.08341 -0.50851,-1.86453 0.0707,-0.9511 0.24014,-1.6291 1.4596,-1.66206" + inkscape:label="true" /> + </g> + <g + id="g228" + inkscape:label="HMI:Switch@/PEDESTRIANGREENLIGHT" + transform="matrix(4,0,0,4,432.42386,-2302.7999)"> + <path + inkscape:connector-curvature="0" + id="PEDESTRIAN_GREEN_OFF" + style="fill:#505050;fill-opacity:1;fill-rule:nonzero;stroke:none" + d="m 171.65012,940.43176 c -0.3444,-0.68878 -0.41136,-2.7886 1.13839,-2.7886 1.10014,0 1.44453,1.82718 1.51628,2.06634 0.067,0.27743 -0.41614,1.23885 0.067,1.68847 0.44962,0.44482 2.03285,1.75542 2.7886,2.78859 0.72226,0.89399 0.89446,4.68227 0.89446,5.0654 0,0.75575 -0.65052,0.82223 -0.86097,-0.0383 -0.33962,-1.37757 -1.06666,-3.20044 -1.58324,-3.61611 0.34439,1.06667 -0.27264,2.54897 -0.13873,3.4439 0.21047,1.31059 0.13873,2.85988 0.86577,3.82176 0.684,0.93273 2.33898,3.37694 2.71685,3.65437 0.41613,0.23868 0.79402,0.61656 0.48311,0.89446 -0.3444,0.23915 -1.65499,1.54975 -1.92763,1.47799 -0.27743,-0.067 -0.0718,-0.58401 0.13871,-0.96141 0,-0.31092 0.067,-0.58355 -0.99969,-1.68847 -1.06665,-1.10012 -2.44421,-3.44389 -2.72163,-4.02744 -0.27743,-0.55533 -0.72227,-0.62182 -1.1384,-0.31138 -0.37787,0.31138 -1.65019,3.16694 -1.8224,3.61656 -0.20568,0.44436 -0.75573,1.96063 -0.75573,2.47721 0,0.51707 0.13392,0.65579 -0.31092,0.89493 -0.4831,0.27743 -1.65497,0.72706 -2.34375,0.21047 -0.1722,-0.27742 0.27742,-0.44961 0.55007,-0.58833 0.2774,-0.13871 0.72225,-1.10013 0.86095,-2.20027 0.13872,-1.1054 0.44963,-2.86082 0.93273,-4.41057 0.44484,-1.54929 1.51627,-1.9989 1.58324,-2.482 0.067,-0.44484 0.6553,-2.06682 0.20567,-3.02776 -0.20567,-0.20567 -0.067,0.2052 -0.72226,0.86098 -0.41135,0.37786 -1.48278,1.41103 -2.23852,1.82238 -0.79402,0.41615 -0.89446,-0.3396 -0.96621,-0.47831 -0.20567,-0.3109 1.65498,-1.54977 1.9324,-1.9324 0.27265,-0.41137 1.06665,-2.13331 1.13362,-2.78909 0.067,-0.65482 1.17187,-2.47721 0.72226,-3.44342" + inkscape:label="false" /> + <path + inkscape:connector-curvature="0" + id="PEDESTRIAN_GREEN_ON" + style="fill:#50a00e;fill-opacity:1;fill-rule:nonzero;stroke:none" + d="m 171.65012,940.43176 c -0.3444,-0.68878 -0.41136,-2.7886 1.13839,-2.7886 1.10014,0 1.44453,1.82718 1.51628,2.06634 0.067,0.27743 -0.41614,1.23885 0.067,1.68847 0.44962,0.44482 2.03285,1.75542 2.7886,2.78859 0.72226,0.89399 0.89446,4.68227 0.89446,5.0654 0,0.75575 -0.65052,0.82223 -0.86097,-0.0383 -0.33962,-1.37757 -1.06666,-3.20044 -1.58324,-3.61611 0.34439,1.06667 -0.27264,2.54897 -0.13873,3.4439 0.21047,1.31059 0.13873,2.85988 0.86577,3.82176 0.684,0.93273 2.33898,3.37694 2.71685,3.65437 0.41613,0.23868 0.79402,0.61656 0.48311,0.89446 -0.3444,0.23915 -1.65499,1.54975 -1.92763,1.47799 -0.27743,-0.067 -0.0718,-0.58401 0.13871,-0.96141 0,-0.31092 0.067,-0.58355 -0.99969,-1.68847 -1.06665,-1.10012 -2.44421,-3.44389 -2.72163,-4.02744 -0.27743,-0.55533 -0.72227,-0.62182 -1.1384,-0.31138 -0.37787,0.31138 -1.65019,3.16694 -1.8224,3.61656 -0.20568,0.44436 -0.75573,1.96063 -0.75573,2.47721 0,0.51707 0.13392,0.65579 -0.31092,0.89493 -0.4831,0.27743 -1.65497,0.72706 -2.34375,0.21047 -0.1722,-0.27742 0.27742,-0.44961 0.55007,-0.58833 0.2774,-0.13871 0.72225,-1.10013 0.86095,-2.20027 0.13872,-1.1054 0.44963,-2.86082 0.93273,-4.41057 0.44484,-1.54929 1.51627,-1.9989 1.58324,-2.482 0.067,-0.44484 0.6553,-2.06682 0.20567,-3.02776 -0.20567,-0.20567 -0.067,0.2052 -0.72226,0.86098 -0.41135,0.37786 -1.48278,1.41103 -2.23852,1.82238 -0.79402,0.41615 -0.89446,-0.3396 -0.96621,-0.47831 -0.20567,-0.3109 1.65498,-1.54977 1.9324,-1.9324 0.27265,-0.41137 1.06665,-2.13331 1.13362,-2.78909 0.067,-0.65482 1.17187,-2.47721 0.72226,-3.44342" + inkscape:label="true" /> + </g> + <g + id="g220" + inkscape:label="HMI:ToggleButton@/SWITCHBUTTON" + transform="matrix(4,0,0,4,432.42386,-2222.7999)"> + <rect + style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stop-color:#000000" + id="rect1559" + width="72.710266" + height="59.289749" + x="7.6521072" + y="774.39429" /> + <g + transform="rotate(-90,37.09909,809.86228)" + id="SWITCH_OFF" + inkscape:label="inactive"> + <circle + r="16.785715" + cy="57.5" + cx="37.142857" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#e9ddaf;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker:none;enable-background:accumulate" + id="path4546" + transform="translate(0,752.36228)" /> + <ellipse + ry="3.75" + rx="16.964287" + cy="57.857143" + cx="38.214287" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#e9ddaf;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" + id="path4548" + transform="matrix(0.98958091,0,0,1,-0.76159828,752.36228)" /> + <path + sodipodi:type="star" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;enable-background:accumulate" + id="path4552" + sodipodi:sides="3" + sodipodi:cx="52.142857" + sodipodi:cy="89.285713" + sodipodi:r1="2.7027807" + sodipodi:r2="1.4117311" + sodipodi:arg1="-0.0025098425" + sodipodi:arg2="1.0446877" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 54.845629,89.27893 -1.993841,1.227603 -2.054443,1.123241 -0.06621,-2.340518 0.05447,-2.34082 2.060055,1.112914 z" + transform="matrix(0.65194108,0,0,0.65194108,15.383639,752.1041)" + inkscape:transform-center-x="-0.012953186" + inkscape:transform-center-y="-0.16341378" /> + </g> + <g + id="SWITCH_ON" + inkscape:label="active"> + <circle + r="16.785715" + cy="57.5" + cx="37.142857" + transform="translate(0,752.36228)" + id="path4576" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#e9ddaf;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker:none;enable-background:accumulate" /> + <ellipse + ry="3.75" + rx="16.964287" + cy="57.857143" + cx="38.214287" + transform="matrix(0.98958091,0,0,1,-0.76159828,752.36228)" + id="path4578" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#e9ddaf;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /> + <path + inkscape:transform-center-y="-0.16341378" + inkscape:transform-center-x="-0.012953186" + transform="matrix(0.65194108,0,0,0.65194108,15.383639,752.1041)" + d="m 54.845629,89.27893 -1.993841,1.227603 -2.054443,1.123241 -0.06621,-2.340518 0.05447,-2.34082 2.060055,1.112914 z" + inkscape:randomized="0" + inkscape:rounded="0" + inkscape:flatsided="false" + sodipodi:arg2="1.0446877" + sodipodi:arg1="-0.0025098425" + sodipodi:r2="1.4117311" + sodipodi:r1="2.7027807" + sodipodi:cy="89.285713" + sodipodi:cx="52.142857" + sodipodi:sides="3" + id="path4580" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;enable-background:accumulate" + sodipodi:type="star" /> + </g> + <path + style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 37.67857,786.29085 v 3.75" + id="path4582" + inkscape:connector-curvature="0" /> + <g + style="font-style:normal;font-weight:bold;font-size:6.32609px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none" + id="text4584"> + <path + d="m 33.828224,780.67935 c -0.362435,10e-6 -0.643526,0.13386 -0.843274,0.40156 -0.199751,0.26771 -0.299626,0.64456 -0.299624,1.13055 -2e-6,0.48393 0.09987,0.85974 0.299624,1.12745 0.199748,0.26771 0.480839,0.40156 0.843274,0.40156 0.364488,0 0.646609,-0.13385 0.846362,-0.40156 0.199746,-0.26771 0.299621,-0.64352 0.299624,-1.12745 -3e-6,-0.48599 -0.09988,-0.86284 -0.299624,-1.13055 -0.199753,-0.2677 -0.481874,-0.40155 -0.846362,-0.40156 m 0,-0.8618 c 0.741335,0 1.32205,0.21211 1.742147,0.63631 0.420087,0.42422 0.630133,1.01008 0.630138,1.7576 -5e-6,0.74545 -0.210051,1.33029 -0.630138,1.7545 -0.420097,0.42421 -1.000812,0.63631 -1.742147,0.63631 -0.739282,0 -1.319997,-0.2121 -1.742147,-0.63631 -0.420093,-0.42421 -0.630139,-1.00905 -0.630139,-1.7545 0,-0.74752 0.210046,-1.33338 0.630139,-1.7576 0.42215,-0.4242 1.002865,-0.63631 1.742147,-0.63631" + id="path4589" + inkscape:connector-curvature="0" /> + <path + d="m 37.096294,779.90095 h 3.209381 v 0.89887 h -2.020149 v 0.85872 h 1.899681 v 0.89887 h -1.899681 v 1.95529 h -1.189232 v -4.61175" + id="path4591" + inkscape:connector-curvature="0" /> + <path + d="m 41.420773,779.90095 h 3.209381 v 0.89887 h -2.020149 v 0.85872 h 1.899681 v 0.89887 h -1.899681 v 1.95529 h -1.189232 v -4.61175" + id="path4593" + inkscape:connector-curvature="0" /> + </g> + <path + style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 60.982143,810.04086 h -3.75" + id="path4582-4" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:bold;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none" + x="62.818459" + y="812.17749" + id="text4613"><tspan + sodipodi:role="line" + id="tspan4615" + x="62.818459" + y="812.17749" + style="font-size:6.17189px;line-height:1.25;font-family:sans-serif">ON</tspan></text> + </g> + </g> +</svg> diff -r a466d4468d7a -r c2b6354f036f tests/tools/Docker/Dockerfile --- a/tests/tools/Docker/Dockerfile Tue Aug 01 21:02:08 2023 +0200 +++ b/tests/tools/Docker/Dockerfile Tue Aug 01 21:04:00 2023 +0200 @@ -59,6 +59,22 @@ ) | install /dev/stdin /usr/local/bin/sikulix +### SVGHMI dependencies : Chromium browser + Inkscape ### +# +# On ubuntu chromium is distrinuted as a snap. +# Running snapd on docker is a mess. +# As a workaround, there is a PPA where chromium .deb packges build is still beeing maintained : +# +# https://launchpad.net/~savoury1/+archive/ubuntu/chromium +# ppa:savoury1, maintained by Rob Savoury at the time of writing +# +# As a side effect of docker limitations, chromium need --no-sandbox command line argument. +# +RUN apt-get install -qqy --no-install-recommends gnupg software-properties-common \ + && add-apt-repository -y ppa:savoury1/chromium \ + && add-apt-repository -y ppa:savoury1/ffmpeg4 \ + && apt-get install -qqy --no-install-recommends chromium-browser inkscape + # easy to remember 'do_tests' alias to invoke main makefile RUN env echo -e '#!/bin/bash\nmake -f /home/testing/src/beremiz/tests/Makefile $*' > /usr/local/bin/do_tests RUN chmod +x /usr/local/bin/do_tests