Merge svghmi
authorEdouard Tisserant
Wed, 12 Aug 2020 15:24:02 +0200
branchsvghmi
changeset 3024 0a9f6f29b7dd
parent 3023 407a0205405a (diff)
parent 3021 49799de67540 (current diff)
child 3025 48e7e336c052
Merge
svghmi/gen_index_xhtml.xslt
svghmi/svghmi.js
svghmi/widget_button.ysl2
svghmi/widget_tooglebutton.ysl2
svghmi/widgets_common.ysl2
--- a/svghmi/gen_index_xhtml.xslt	Mon Aug 10 15:25:57 2020 +0200
+++ b/svghmi/gen_index_xhtml.xslt	Wed Aug 12 15:24:02 2020 +0200
@@ -169,14 +169,30 @@
               </xsl:attribute>
               <xsl:variable name="path" select="."/>
               <xsl:variable name="item" select="$indexed_hmitree/*[@hmipath = $path]"/>
-              <xsl:if test="count($item) = 1">
-                <xsl:attribute name="index">
-                  <xsl:value-of select="$item/@index"/>
-                </xsl:attribute>
-                <xsl:attribute name="type">
-                  <xsl:value-of select="local-name($item)"/>
-                </xsl:attribute>
-              </xsl:if>
+              <xsl:choose>
+                <xsl:when test="count($item) = 1">
+                  <xsl:attribute name="index">
+                    <xsl:value-of select="$item/@index"/>
+                  </xsl:attribute>
+                  <xsl:attribute name="type">
+                    <xsl:value-of select="local-name($item)"/>
+                  </xsl:attribute>
+                </xsl:when>
+                <xsl:otherwise>
+                  <xsl:choose>
+                    <xsl:when test="regexp:test($path,'^\.[a-zA-Z0-9_]+')">
+                      <xsl:attribute name="type">
+                        <xsl:text>PAGE_LOCAL</xsl:text>
+                      </xsl:attribute>
+                    </xsl:when>
+                    <xsl:when test="regexp:test($path,'^[a-zA-Z0-9_]+')">
+                      <xsl:attribute name="type">
+                        <xsl:text>HMI_LOCAL</xsl:text>
+                      </xsl:attribute>
+                    </xsl:when>
+                  </xsl:choose>
+                </xsl:otherwise>
+              </xsl:choose>
             </path>
           </xsl:if>
         </xsl:for-each>
@@ -834,7 +850,7 @@
     <xsl:variable name="args">
       <xsl:for-each select="$widget/arg">
         <xsl:text>"</xsl:text>
-        <xsl:value-of select="@value"/>
+        <xsl:value-of select="func:escape_quotes(@value)"/>
         <xsl:text>"</xsl:text>
         <xsl:if test="position()!=last()">
           <xsl:text>,</xsl:text>
@@ -845,15 +861,35 @@
       <xsl:for-each select="$widget/path">
         <xsl:choose>
           <xsl:when test="not(@index)">
-            <xsl:message terminate="no">
-              <xsl:text>Widget </xsl:text>
-              <xsl:value-of select="$widget/@type"/>
-              <xsl:text> id="</xsl:text>
-              <xsl:value-of select="$eltid"/>
-              <xsl:text>" : No match for path "</xsl:text>
-              <xsl:value-of select="@value"/>
-              <xsl:text>" in HMI tree</xsl:text>
-            </xsl:message>
+            <xsl:choose>
+              <xsl:when test="not(@type)">
+                <xsl:message terminate="yes">
+                  <xsl:text>Widget </xsl:text>
+                  <xsl:value-of select="$widget/@type"/>
+                  <xsl:text> id="</xsl:text>
+                  <xsl:value-of select="$eltid"/>
+                  <xsl:text>" : No match for path "</xsl:text>
+                  <xsl:value-of select="@value"/>
+                  <xsl:text>" in HMI tree</xsl:text>
+                </xsl:message>
+              </xsl:when>
+              <xsl:when test="@type = 'PAGE_LOCAL'">
+                <xsl:text>"</xsl:text>
+                <xsl:value-of select="substring(@value, 1)"/>
+                <xsl:text>"</xsl:text>
+                <xsl:if test="position()!=last()">
+                  <xsl:text>,</xsl:text>
+                </xsl:if>
+              </xsl:when>
+              <xsl:when test="@type = 'HMI_LOCAL'">
+                <xsl:text>hmi_local_index("</xsl:text>
+                <xsl:value-of select="@value"/>
+                <xsl:text>")</xsl:text>
+                <xsl:if test="position()!=last()">
+                  <xsl:text>,</xsl:text>
+                </xsl:if>
+              </xsl:when>
+            </xsl:choose>
           </xsl:when>
           <xsl:otherwise>
             <xsl:value-of select="@index"/>
@@ -905,8 +941,8 @@
       </xsl:otherwise>
     </xsl:choose>
   </func:function>
-  <preamble:widget-base-class/>
-  <xsl:template match="preamble:widget-base-class">
+  <preamble:local-variable-indexes/>
+  <xsl:template match="preamble:local-variable-indexes">
     <xsl:text>
 </xsl:text>
     <xsl:text>/* </xsl:text>
@@ -915,6 +951,101 @@
 </xsl:text>
     <xsl:text>
 </xsl:text>
+    <xsl:text>let hmi_locals = {};
+</xsl:text>
+    <xsl:text>var last_remote_index = hmitree_types.length - 1;
+</xsl:text>
+    <xsl:text>var next_available_index = hmitree_types.length;
+</xsl:text>
+    <xsl:text>
+</xsl:text>
+    <xsl:text>const local_defaults = {
+</xsl:text>
+    <xsl:for-each select="$parsed_widgets/widget[@type = 'VarInit']">
+      <xsl:if test="count(path) != 1">
+        <xsl:message terminate="yes">
+          <xsl:text>VarInit </xsl:text>
+          <xsl:value-of select="@id"/>
+          <xsl:text> must have only one variable given.</xsl:text>
+        </xsl:message>
+      </xsl:if>
+      <xsl:if test="path/@type != 'PAGE_LOCAL' and path/@type != 'HMI_LOCAL'">
+        <xsl:message terminate="yes">
+          <xsl:text>VarInit </xsl:text>
+          <xsl:value-of select="@id"/>
+          <xsl:text> only applies to HMI variable.</xsl:text>
+        </xsl:message>
+      </xsl:if>
+      <xsl:value-of select="arg[0]"/>
+      <xsl:text>:</xsl:text>
+      <xsl:value-of select="path/@value"/>
+      <xsl:if test="position()!=last()">
+        <xsl:text>,</xsl:text>
+      </xsl:if>
+      <xsl:text>
+</xsl:text>
+    </xsl:for-each>
+    <xsl:text>};
+</xsl:text>
+    <xsl:text>var cache = hmitree_types.map(_ignored =&gt; undefined);
+</xsl:text>
+    <xsl:text>
+</xsl:text>
+    <xsl:text>function page_local_index(varname, pagename){
+</xsl:text>
+    <xsl:text>    let pagevars = hmi_locals[pagename];
+</xsl:text>
+    <xsl:text>    let new_index;
+</xsl:text>
+    <xsl:text>    if(pagevars == undefined){
+</xsl:text>
+    <xsl:text>        new_index = next_available_index++;
+</xsl:text>
+    <xsl:text>        hmi_locals[pagename] = {[varname]:new_index}
+</xsl:text>
+    <xsl:text>    } else {
+</xsl:text>
+    <xsl:text>        let result = pagevars[varname];
+</xsl:text>
+    <xsl:text>        if(result != undefined) {
+</xsl:text>
+    <xsl:text>            return result;
+</xsl:text>
+    <xsl:text>        }
+</xsl:text>
+    <xsl:text>
+</xsl:text>
+    <xsl:text>        new_index = next_available_index++;
+</xsl:text>
+    <xsl:text>        pagevars[varname] = new_index;
+</xsl:text>
+    <xsl:text>    }
+</xsl:text>
+    <xsl:text>    return new_index;
+</xsl:text>
+    <xsl:text>}
+</xsl:text>
+    <xsl:text>
+</xsl:text>
+    <xsl:text>function hmi_local_index(varname){
+</xsl:text>
+    <xsl:text>    return page_local_index(varname, "HMI_LOCAL");
+</xsl:text>
+    <xsl:text>}
+</xsl:text>
+    <xsl:text>
+</xsl:text>
+  </xsl:template>
+  <preamble:widget-base-class/>
+  <xsl:template match="preamble:widget-base-class">
+    <xsl:text>
+</xsl:text>
+    <xsl:text>/* </xsl:text>
+    <xsl:value-of select="local-name()"/>
+    <xsl:text> */
+</xsl:text>
+    <xsl:text>
+</xsl:text>
     <xsl:text>var pending_widget_animates = [];
 </xsl:text>
     <xsl:text>
@@ -961,7 +1092,7 @@
 </xsl:text>
     <xsl:text>                    index += this.offset;
 </xsl:text>
-    <xsl:text>                subscribers[index].delete(this);
+    <xsl:text>                subscribers(index).delete(this);
 </xsl:text>
     <xsl:text>            }
 </xsl:text>
@@ -973,25 +1104,23 @@
 </xsl:text>
     <xsl:text>
 </xsl:text>
-    <xsl:text>    sub(new_offset=0, relativeness){
+    <xsl:text>    sub(new_offset=0, relativeness, container_id){
 </xsl:text>
     <xsl:text>        this.offset = new_offset;
 </xsl:text>
     <xsl:text>        this.relativeness = relativeness;
 </xsl:text>
+    <xsl:text>        this.container_id = container_id ;
+</xsl:text>
     <xsl:text>        /* add this's subsribers */
 </xsl:text>
     <xsl:text>        if(!this.unsubscribable)
 </xsl:text>
     <xsl:text>            for(let i = 0; i &lt; this.indexes.length; i++) {
 </xsl:text>
-    <xsl:text>                let index = this.indexes[i];
-</xsl:text>
-    <xsl:text>                if(relativeness[i])
-</xsl:text>
-    <xsl:text>                    index += new_offset;
-</xsl:text>
-    <xsl:text>                subscribers[index].add(this);
+    <xsl:text>                let index = this.get_variable_index(i);
+</xsl:text>
+    <xsl:text>                subscribers(index).add(this);
 </xsl:text>
     <xsl:text>            }
 </xsl:text>
@@ -1007,7 +1136,7 @@
 </xsl:text>
     <xsl:text>            /* dispatch current cache in newly opened page widgets */
 </xsl:text>
-    <xsl:text>            let realindex = index+this.offset;
+    <xsl:text>            let realindex = this.get_variable_index(index);
 </xsl:text>
     <xsl:text>            let cached_val = cache[realindex];
 </xsl:text>
@@ -1021,17 +1150,31 @@
 </xsl:text>
     <xsl:text>
 </xsl:text>
-    <xsl:text>    get_idx(index) {
-</xsl:text>
-    <xsl:text>         let orig = this.indexes[index];
-</xsl:text>
-    <xsl:text>         return this.relativeness[index] ? orig + this.offset : orig;
+    <xsl:text>    get_variable_index(varnum) {
+</xsl:text>
+    <xsl:text>        let index = this.indexes[varnum];
+</xsl:text>
+    <xsl:text>        if(typeof(index) == "string"){
+</xsl:text>
+    <xsl:text>            index = page_local_index(index, this.container_id);
+</xsl:text>
+    <xsl:text>        } else {
+</xsl:text>
+    <xsl:text>            if(this.relativeness[varnum]){
+</xsl:text>
+    <xsl:text>                index += this.offset;
+</xsl:text>
+    <xsl:text>            }
+</xsl:text>
+    <xsl:text>        }
+</xsl:text>
+    <xsl:text>        return index;
 </xsl:text>
     <xsl:text>    }
 </xsl:text>
     <xsl:text>    change_hmi_value(index,opstr) {
 </xsl:text>
-    <xsl:text>        return change_hmi_value(this.get_idx(index), opstr);
+    <xsl:text>        return change_hmi_value(this.get_variable_index(index), opstr);
 </xsl:text>
     <xsl:text>    }
 </xsl:text>
@@ -1039,7 +1182,7 @@
 </xsl:text>
     <xsl:text>    apply_hmi_value(index, new_val) {
 </xsl:text>
-    <xsl:text>        return apply_hmi_value(this.get_idx(0), new_val);
+    <xsl:text>        return apply_hmi_value(this.get_variable_index(0), new_val);
 </xsl:text>
     <xsl:text>    }
 </xsl:text>
@@ -1053,11 +1196,7 @@
 </xsl:text>
     <xsl:text>            for(let i = 0; i &lt; this.indexes.length; i++) {
 </xsl:text>
-    <xsl:text>                let refindex = this.indexes[i];
-</xsl:text>
-    <xsl:text>                if(this.relativeness[i])
-</xsl:text>
-    <xsl:text>                    refindex += this.offset;
+    <xsl:text>                let refindex = this.get_variable_index(i);
 </xsl:text>
     <xsl:text>
 </xsl:text>
@@ -1159,8 +1298,8 @@
     <xsl:text>}
 </xsl:text>
   </xsl:template>
-  <xsl:variable name="excluded_types" select="str:split('Page Lang')"/>
-  <xsl:variable name="excluded_ids" select="$parsed_widgets/widget[not(@type = $excluded_types)]/@id"/>
+  <xsl:variable name="excluded_types" select="str:split('Page Lang VarInit')"/>
+  <xsl:variable name="included_ids" select="$parsed_widgets/widget[not(@type = $excluded_types)]/@id"/>
   <declarations:hmi-elements/>
   <xsl:template match="declarations:hmi-elements">
     <xsl:text>
@@ -1173,7 +1312,7 @@
 </xsl:text>
     <xsl:text>var hmi_widgets = {
 </xsl:text>
-    <xsl:apply-templates mode="hmi_widgets" select="$hmi_elements[@id = $excluded_ids]"/>
+    <xsl:apply-templates mode="hmi_widgets" select="$hmi_elements[@id = $included_ids]"/>
     <xsl:text>}
 </xsl:text>
     <xsl:text>
@@ -1256,11 +1395,9 @@
   </xsl:template>
   <func:function name="func:escape_quotes">
     <xsl:param name="txt"/>
-    <xsl:variable name="frst" select="substring-before($txt,'&quot;')"/>
-    <xsl:variable name="frstln" select="string-length($frst)"/>
     <xsl:choose>
-      <xsl:when test="$frstln &gt; 0 and string-length($txt) &gt; $frstln">
-        <func:result select="concat($frst,'\&quot;',func:escape_quotes(substring-after($txt,'&quot;')))"/>
+      <xsl:when test="contains($txt,'&quot;')">
+        <func:result select="concat(substring-before($txt,'&quot;'),'\&quot;',func:escape_quotes(substring-after($txt,'&quot;')))"/>
       </xsl:when>
       <xsl:otherwise>
         <func:result select="$txt"/>
@@ -1294,77 +1431,75 @@
 </xsl:text>
   </xsl:template>
   <xsl:template mode="widget_class" match="widget[@type='Button']">
-    <xsl:text>t{
-</xsl:text>
-    <xsl:text>5;
-</xsl:text>
-    <xsl:text>0;
-</xsl:text>
-    <xsl:text>d;
-</xsl:text>
-    <xsl:text>d;
-</xsl:text>
-    <xsl:text>
-</xsl:text>
-    <xsl:text> {
-</xsl:text>
-    <xsl:text> {
-</xsl:text>
-    <xsl:text>);
-</xsl:text>
-    <xsl:text>);
-</xsl:text>
-    <xsl:text> }
-</xsl:text>
-    <xsl:text>);
-</xsl:text>
-    <xsl:text> }
-</xsl:text>
-    <xsl:text>
-</xsl:text>
-    <xsl:text> {
-</xsl:text>
-    <xsl:text> {
-</xsl:text>
-    <xsl:text>);
-</xsl:text>
-    <xsl:text>);
-</xsl:text>
-    <xsl:text> }
-</xsl:text>
-    <xsl:text>);
-</xsl:text>
-    <xsl:text> }
-</xsl:text>
-    <xsl:text>
-</xsl:text>
-    <xsl:text> {
-</xsl:text>
-    <xsl:text>d;
-</xsl:text>
-    <xsl:text>d;
-</xsl:text>
-    <xsl:text>
-</xsl:text>
-    <xsl:text> {
-</xsl:text>
-    <xsl:text>);
-</xsl:text>
-    <xsl:text>);
-</xsl:text>
-    <xsl:text> }
-</xsl:text>
-    <xsl:text>
-</xsl:text>
-    <xsl:text>);
-</xsl:text>
-    <xsl:text>);
-</xsl:text>
-    <xsl:text> }
-</xsl:text>
-    <xsl:text> }
-</xsl:text>
-    <xsl:text>||
+    <xsl:text>class ButtonWidget extends Widget{
+</xsl:text>
+    <xsl:text>    frequency = 5;
+</xsl:text>
+    <xsl:text>    state = 0;
+</xsl:text>
+    <xsl:text>    active_style = undefined;
+</xsl:text>
+    <xsl:text>    inactive_style = undefined;
+</xsl:text>
+    <xsl:text>
+</xsl:text>
+    <xsl:text>     on_mouse_down(evt) {
+</xsl:text>
+    <xsl:text>         if (this.active_style &amp;&amp; this.inactive_style) {
+</xsl:text>
+    <xsl:text>             this.active_elt.setAttribute("style", this.active_style);
+</xsl:text>
+    <xsl:text>             this.inactive_elt.setAttribute("style", "display:none");
+</xsl:text>
+    <xsl:text>         }
+</xsl:text>
+    <xsl:text>         this.apply_hmi_value(0, 1);
+</xsl:text>
+    <xsl:text>     }
+</xsl:text>
+    <xsl:text>
+</xsl:text>
+    <xsl:text>     on_mouse_up(evt) {
+</xsl:text>
+    <xsl:text>         if (this.active_style &amp;&amp; this.inactive_style) {
+</xsl:text>
+    <xsl:text>             this.active_elt.setAttribute("style", "display:none");
+</xsl:text>
+    <xsl:text>             this.inactive_elt.setAttribute("style", this.inactive_style);
+</xsl:text>
+    <xsl:text>         }
+</xsl:text>
+    <xsl:text>         this.apply_hmi_value(0, 0);
+</xsl:text>
+    <xsl:text>     }
+</xsl:text>
+    <xsl:text>
+</xsl:text>
+    <xsl:text>     init() {
+</xsl:text>
+    <xsl:text>        this.active_style = this.active_elt ? this.active_elt.style.cssText : undefined;
+</xsl:text>
+    <xsl:text>        this.inactive_style = this.inactive_elt ? this.inactive_elt.style.cssText : undefined;
+</xsl:text>
+    <xsl:text>
+</xsl:text>
+    <xsl:text>        if (this.active_style &amp;&amp; this.inactive_style) {
+</xsl:text>
+    <xsl:text>            this.active_elt.setAttribute("style", "display:none");
+</xsl:text>
+    <xsl:text>            this.inactive_elt.setAttribute("style", this.inactive_style);
+</xsl:text>
+    <xsl:text>        }
+</xsl:text>
+    <xsl:text>
+</xsl:text>
+    <xsl:text>        this.element.setAttribute("onmousedown", "hmi_widgets["+this.element_id+"].on_mouse_down(evt)");
+</xsl:text>
+    <xsl:text>        this.element.setAttribute("onmouseup", "hmi_widgets["+this.element_id+"].on_mouse_up(evt)");
+</xsl:text>
+    <xsl:text>     }
+</xsl:text>
+    <xsl:text>}
 </xsl:text>
   </xsl:template>
   <xsl:template mode="widget_defs" match="widget[@type='Button']">
@@ -1816,7 +1951,22 @@
         <xsl:text>" is not a svg::text element</xsl:text>
       </xsl:message>
     </xsl:if>
-    <xsl:text>    fields: [],
+    <xsl:variable name="field_initializer">
+      <xsl:for-each select="path">
+        <xsl:choose>
+          <xsl:when test="@type='HMI_STRING'">
+            <xsl:text>""</xsl:text>
+          </xsl:when>
+          <xsl:otherwise>0</xsl:otherwise>
+        </xsl:choose>
+        <xsl:if test="position()!=last()">
+          <xsl:text>,</xsl:text>
+        </xsl:if>
+      </xsl:for-each>
+    </xsl:variable>
+    <xsl:text>    fields: [</xsl:text>
+    <xsl:value-of select="$field_initializer"/>
+    <xsl:text>],
 </xsl:text>
   </xsl:template>
   <preamble:display/>
@@ -4616,8 +4766,6 @@
 </xsl:text>
           <xsl:text>
 </xsl:text>
-          <xsl:text>var cache = hmitree_types.map(_ignored =&gt; undefined);
-</xsl:text>
           <xsl:text>var updates = {};
 </xsl:text>
           <xsl:text>var need_cache_apply = []; 
@@ -4628,7 +4776,7 @@
 </xsl:text>
           <xsl:text>function dispatch_value(index, value) {
 </xsl:text>
-          <xsl:text>    let widgets = subscribers[index];
+          <xsl:text>    let widgets = subscribers(index);
 </xsl:text>
           <xsl:text>
 </xsl:text>
@@ -4936,19 +5084,65 @@
 </xsl:text>
           <xsl:text>
 </xsl:text>
-          <xsl:text>// subscription state, as it should be in hmi server
-</xsl:text>
-          <xsl:text>// hmitree indexed array of integers
-</xsl:text>
-          <xsl:text>var subscriptions =  hmitree_types.map(_ignored =&gt; 0);
-</xsl:text>
-          <xsl:text>
-</xsl:text>
-          <xsl:text>// subscription state as needed by widget now
-</xsl:text>
-          <xsl:text>// hmitree indexed array of Sets of widgets objects
-</xsl:text>
-          <xsl:text>var subscribers = hmitree_types.map(_ignored =&gt; new Set());
+          <xsl:text>var subscriptions = [];
+</xsl:text>
+          <xsl:text>
+</xsl:text>
+          <xsl:text>function subscribers(index) {
+</xsl:text>
+          <xsl:text>    let entry = subscriptions[index];
+</xsl:text>
+          <xsl:text>    let res;
+</xsl:text>
+          <xsl:text>    if(entry == undefined){
+</xsl:text>
+          <xsl:text>        res = new Set();
+</xsl:text>
+          <xsl:text>        subscriptions[index] = [res,0];
+</xsl:text>
+          <xsl:text>    }else{
+</xsl:text>
+          <xsl:text>        [res, _ign] = entry;
+</xsl:text>
+          <xsl:text>    }
+</xsl:text>
+          <xsl:text>    return res
+</xsl:text>
+          <xsl:text>}
+</xsl:text>
+          <xsl:text>
+</xsl:text>
+          <xsl:text>function get_subscription_period(index) {
+</xsl:text>
+          <xsl:text>    let entry = subscriptions[index];
+</xsl:text>
+          <xsl:text>    if(entry == undefined)
+</xsl:text>
+          <xsl:text>        return 0;
+</xsl:text>
+          <xsl:text>    let [_ign, period] = entry;
+</xsl:text>
+          <xsl:text>    return period;
+</xsl:text>
+          <xsl:text>}
+</xsl:text>
+          <xsl:text>
+</xsl:text>
+          <xsl:text>function set_subscription_period(index, period) {
+</xsl:text>
+          <xsl:text>    let entry = subscriptions[index];
+</xsl:text>
+          <xsl:text>    if(entry == undefined){
+</xsl:text>
+          <xsl:text>        subscriptions[index] = [new Set(), period];
+</xsl:text>
+          <xsl:text>    } else {
+</xsl:text>
+          <xsl:text>        entry[1] = period;
+</xsl:text>
+          <xsl:text>    }
+</xsl:text>
+          <xsl:text>}
 </xsl:text>
           <xsl:text>
 </xsl:text>
@@ -4958,7 +5152,7 @@
 </xsl:text>
           <xsl:text>// PLC will periodically send variable at given frequency
 </xsl:text>
-          <xsl:text>subscribers[heartbeat_index].add({
+          <xsl:text>subscribers(heartbeat_index).add({
 </xsl:text>
           <xsl:text>    /* type: "Watchdog", */
 </xsl:text>
@@ -4976,19 +5170,21 @@
 </xsl:text>
           <xsl:text>
 </xsl:text>
+          <xsl:text>
+</xsl:text>
           <xsl:text>function update_subscriptions() {
 </xsl:text>
           <xsl:text>    let delta = [];
 </xsl:text>
-          <xsl:text>    for(let index = 0; index &lt; subscribers.length; index++){
-</xsl:text>
-          <xsl:text>        let widgets = subscribers[index];
+          <xsl:text>    for(let index in subscriptions){
+</xsl:text>
+          <xsl:text>        let widgets = subscribers(index);
 </xsl:text>
           <xsl:text>
 </xsl:text>
           <xsl:text>        // periods are in ms
 </xsl:text>
-          <xsl:text>        let previous_period = subscriptions[index];
+          <xsl:text>        let previous_period = get_subscription_period(index);
 </xsl:text>
           <xsl:text>
 </xsl:text>
@@ -5022,15 +5218,19 @@
 </xsl:text>
           <xsl:text>        if(previous_period != new_period) {
 </xsl:text>
-          <xsl:text>            subscriptions[index] = new_period;
-</xsl:text>
-          <xsl:text>            delta.push(
-</xsl:text>
-          <xsl:text>                new Uint8Array([2]), /* subscribe = 2 */
-</xsl:text>
-          <xsl:text>                new Uint32Array([index]),
-</xsl:text>
-          <xsl:text>                new Uint16Array([new_period]));
+          <xsl:text>            set_subscription_period(index, new_period);
+</xsl:text>
+          <xsl:text>            if(index &lt;= last_remote_index){
+</xsl:text>
+          <xsl:text>                delta.push(
+</xsl:text>
+          <xsl:text>                    new Uint8Array([2]), /* subscribe = 2 */
+</xsl:text>
+          <xsl:text>                    new Uint32Array([index]),
+</xsl:text>
+          <xsl:text>                    new Uint16Array([new_period]));
+</xsl:text>
+          <xsl:text>            }
 </xsl:text>
           <xsl:text>        }
 </xsl:text>
@@ -5044,6 +5244,20 @@
 </xsl:text>
           <xsl:text>function send_hmi_value(index, value) {
 </xsl:text>
+          <xsl:text>    if(index &gt; last_remote_index){
+</xsl:text>
+          <xsl:text>        console.log("updated local variable ",index,value);
+</xsl:text>
+          <xsl:text>        updates[index] = value;
+</xsl:text>
+          <xsl:text>        requestHMIAnimation();
+</xsl:text>
+          <xsl:text>        return;
+</xsl:text>
+          <xsl:text>    }
+</xsl:text>
+          <xsl:text>
+</xsl:text>
           <xsl:text>    let iectype = hmitree_types[index];
 </xsl:text>
           <xsl:text>    let tobinary = typedarray_types[iectype];
@@ -5238,7 +5452,13 @@
 </xsl:text>
           <xsl:text>    var new_offset = page_index == undefined ? 0 : page_index - new_desc.page_index;
 </xsl:text>
-          <xsl:text>    new_desc.widgets.map(([widget,relativeness])=&gt;widget.sub(new_offset,relativeness));
+          <xsl:text>
+</xsl:text>
+          <xsl:text>    container_id = page_name + (page_index != undefined ? page_index : "");
+</xsl:text>
+          <xsl:text>
+</xsl:text>
+          <xsl:text>    new_desc.widgets.map(([widget,relativeness])=&gt;widget.sub(new_offset,relativeness,container_id));
 </xsl:text>
           <xsl:text>
 </xsl:text>
--- a/svghmi/hmi_tree.ysl2	Mon Aug 10 15:25:57 2020 +0200
+++ b/svghmi/hmi_tree.ysl2	Wed Aug 12 15:24:02 2020 +0200
@@ -107,9 +107,21 @@
                 attrib "value" > «.»
                 const "path", ".";
                 const "item", "$indexed_hmitree/*[@hmipath = $path]";
-                if "count($item) = 1" {
-                    attrib "index" > «$item/@index»
-                    attrib "type" > «local-name($item)»
+                choose {
+                    when "count($item) = 1" {
+                        attrib "index" > «$item/@index»
+                        attrib "type" > «local-name($item)»
+                    }
+                    otherwise {
+                        choose {
+                            when "regexp:test($path,'^\.[a-zA-Z0-9_]+')" {
+                                attrib "type" > PAGE_LOCAL
+                            }
+                            when "regexp:test($path,'^[a-zA-Z0-9_]+')" {
+                                attrib "type" > HMI_LOCAL
+                            }
+                        }
+                    }
                 }
             }
         }
--- a/svghmi/svghmi.js	Mon Aug 10 15:25:57 2020 +0200
+++ b/svghmi/svghmi.js	Wed Aug 12 15:24:02 2020 +0200
@@ -1,12 +1,11 @@
 // svghmi.js
 
-var cache = hmitree_types.map(_ignored => undefined);
 var updates = {};
 var need_cache_apply = []; 
 
 
 function dispatch_value(index, value) {
-    let widgets = subscribers[index];
+    let widgets = subscribers(index);
 
     let oldval = cache[index];
     cache[index] = value;
@@ -160,18 +159,41 @@
     send_blob(new Uint8Array([1])); /* reset = 1 */
 };
 
-// subscription state, as it should be in hmi server
-// hmitree indexed array of integers
-var subscriptions =  hmitree_types.map(_ignored => 0);
-
-// subscription state as needed by widget now
-// hmitree indexed array of Sets of widgets objects
-var subscribers = hmitree_types.map(_ignored => new Set());
+var subscriptions = [];
+
+function subscribers(index) {
+    let entry = subscriptions[index];
+    let res;
+    if(entry == undefined){
+        res = new Set();
+        subscriptions[index] = [res,0];
+    }else{
+        [res, _ign] = entry;
+    }
+    return res
+}
+
+function get_subscription_period(index) {
+    let entry = subscriptions[index];
+    if(entry == undefined)
+        return 0;
+    let [_ign, period] = entry;
+    return period;
+}
+
+function set_subscription_period(index, period) {
+    let entry = subscriptions[index];
+    if(entry == undefined){
+        subscriptions[index] = [new Set(), period];
+    } else {
+        entry[1] = period;
+    }
+}
 
 // artificially subscribe the watchdog widget to "/heartbeat" hmi variable
 // Since dispatch directly calls change_hmi_value,
 // PLC will periodically send variable at given frequency
-subscribers[heartbeat_index].add({
+subscribers(heartbeat_index).add({
     /* type: "Watchdog", */
     frequency: 1,
     indexes: [heartbeat_index],
@@ -180,13 +202,14 @@
     }
 });
 
+
 function update_subscriptions() {
     let delta = [];
-    for(let index = 0; index < subscribers.length; index++){
-        let widgets = subscribers[index];
+    for(let index in subscriptions){
+        let widgets = subscribers(index);
 
         // periods are in ms
-        let previous_period = subscriptions[index];
+        let previous_period = get_subscription_period(index);
 
         // subscribing with a zero period is unsubscribing
         let new_period = 0;
@@ -203,17 +226,26 @@
         }
 
         if(previous_period != new_period) {
-            subscriptions[index] = new_period;
-            delta.push(
-                new Uint8Array([2]), /* subscribe = 2 */
-                new Uint32Array([index]),
-                new Uint16Array([new_period]));
+            set_subscription_period(index, new_period);
+            if(index <= last_remote_index){
+                delta.push(
+                    new Uint8Array([2]), /* subscribe = 2 */
+                    new Uint32Array([index]),
+                    new Uint16Array([new_period]));
+            }
         }
     }
     send_blob(delta);
 };
 
 function send_hmi_value(index, value) {
+    if(index > last_remote_index){
+        console.log("updated local variable ",index,value);
+        updates[index] = value;
+        requestHMIAnimation();
+        return;
+    }
+
     let iectype = hmitree_types[index];
     let tobinary = typedarray_types[iectype];
     send_blob([
@@ -311,7 +343,10 @@
         old_desc.widgets.map(([widget,relativeness])=>widget.unsub());
     }
     var new_offset = page_index == undefined ? 0 : page_index - new_desc.page_index;
-    new_desc.widgets.map(([widget,relativeness])=>widget.sub(new_offset,relativeness));
+
+    container_id = page_name + (page_index != undefined ? page_index : "");
+
+    new_desc.widgets.map(([widget,relativeness])=>widget.sub(new_offset,relativeness,container_id));
 
     update_subscriptions();
 
--- a/svghmi/widget_button.ysl2	Mon Aug 10 15:25:57 2020 +0200
+++ b/svghmi/widget_button.ysl2	Wed Aug 12 15:24:02 2020 +0200
@@ -1,6 +1,6 @@
 // widget_button.ysl2
 
-template "widget[@type='Button']", mode="widget_class"
+template "widget[@type='Button']", mode="widget_class"{
     ||
     class ButtonWidget extends Widget{
         frequency = 5;
@@ -38,6 +38,7 @@
          }
     }
     ||
+}
 
 
 template "widget[@type='Button']", mode="widget_defs" {
--- a/svghmi/widget_display.ysl2	Mon Aug 10 15:25:57 2020 +0200
+++ b/svghmi/widget_display.ysl2	Wed Aug 12 15:24:02 2020 +0200
@@ -18,7 +18,14 @@
     if "$hmi_element[not(self::svg:text)]"
         error > Display Widget id="«$hmi_element/@id»" is not a svg::text element
 
-    |     fields: [],
+    const "field_initializer" foreach "path" {
+        choose{
+            when "@type='HMI_STRING'" > ""
+            otherwise 0
+        }
+        if "position()!=last()" > ,
+    }
+    |     fields: [«$field_initializer»],
 }
 
 emit "preamble:display"
--- a/svghmi/widget_tooglebutton.ysl2	Mon Aug 10 15:25:57 2020 +0200
+++ b/svghmi/widget_tooglebutton.ysl2	Wed Aug 12 15:24:02 2020 +0200
@@ -1,7 +1,7 @@
 // widget_tooglebutton.ysl2
 
 
-template "widget[@type='ToggleButton']", mode="widget_class"
+template "widget[@type='ToggleButton']", mode="widget_class"{
     ||
     class ToggleButtonWidget extends Widget{
         frequency = 5;
@@ -33,6 +33,7 @@
         }
     }
     ||
+}
 
 template "widget[@type='ToggleButton']", mode="widget_defs" {
     param "hmi_element";
--- a/svghmi/widgets_common.ysl2	Mon Aug 10 15:25:57 2020 +0200
+++ b/svghmi/widgets_common.ysl2	Wed Aug 12 15:24:02 2020 +0200
@@ -24,11 +24,18 @@
 template "svg:*", mode="hmi_widgets" {
     const "widget", "func:widget(@id)";
     const "eltid","@id";
-    const "args" foreach "$widget/arg" > "«@value»"`if "position()!=last()" > ,`
+    const "args" foreach "$widget/arg" > "«func:escape_quotes(@value)»"`if "position()!=last()" > ,`
     const "indexes" foreach "$widget/path" {
         choose {
             when "not(@index)" {
-                warning > Widget «$widget/@type» id="«$eltid»" : No match for path "«@value»" in HMI tree
+                choose {
+                    when "not(@type)" 
+                        error > Widget «$widget/@type» id="«$eltid»" : No match for path "«@value»" in HMI tree
+                    when "@type = 'PAGE_LOCAL'" 
+                        > "«substring(@value, 1)»"`if "position()!=last()" > ,`
+                    when "@type = 'HMI_LOCAL'" 
+                        > hmi_local_index("«@value»")`if "position()!=last()" > ,`
+                }
             }
             otherwise {
                 > «@index»`if "position()!=last()" > ,`
@@ -62,8 +69,40 @@
     }
 }
 
+emit "preamble:local-variable-indexes" {
+    ||
+    let hmi_locals = {};
+    var last_remote_index = hmitree_types.length - 1;
+    var next_available_index = hmitree_types.length;
+
+    var cache = hmitree_types.map(_ignored => undefined);
+
+    function page_local_index(varname, pagename){
+        let pagevars = hmi_locals[pagename];
+        let new_index;
+        if(pagevars == undefined){
+            new_index = next_available_index++;
+            hmi_locals[pagename] = {[varname]:new_index}
+        } else {
+            let result = pagevars[varname];
+            if(result != undefined) {
+                return result;
+            }
+
+            new_index = next_available_index++;
+            pagevars[varname] = new_index;
+        }
+        return new_index;
+    }
+
+    function hmi_local_index(varname){
+        return page_local_index(varname, "HMI_LOCAL");
+    }
+    ||
+}
+
 emit "preamble:widget-base-class" {
-    ||    
+    ||
     var pending_widget_animates = [];
 
     class Widget {
@@ -87,22 +126,21 @@
                     let index = this.indexes[i];
                     if(this.relativeness[i])
                         index += this.offset;
-                    subscribers[index].delete(this);
+                    subscribers(index).delete(this);
                 }
             this.offset = 0;
             this.relativeness = undefined;
         }
 
-        sub(new_offset=0, relativeness){
+        sub(new_offset=0, relativeness, container_id){
             this.offset = new_offset;
             this.relativeness = relativeness;
+            this.container_id = container_id ;
             /* add this's subsribers */
             if(!this.unsubscribable)
                 for(let i = 0; i < this.indexes.length; i++) {
-                    let index = this.indexes[i];
-                    if(relativeness[i])
-                        index += new_offset;
-                    subscribers[index].add(this);
+                    let index = this.get_variable_index(i);
+                    subscribers(index).add(this);
                 }
             need_cache_apply.push(this); 
         }
@@ -110,32 +148,37 @@
         apply_cache() {
             if(!this.unsubscribable) for(let index of this.indexes){
                 /* dispatch current cache in newly opened page widgets */
-                let realindex = index+this.offset;
+                let realindex = this.get_variable_index(index);
                 let cached_val = cache[realindex];
                 if(cached_val != undefined)
                     this.new_hmi_value(realindex, cached_val, cached_val);
             }
         }
 
-        get_idx(index) {
-             let orig = this.indexes[index];
-             return this.relativeness[index] ? orig + this.offset : orig;
+        get_variable_index(varnum) {
+            let index = this.indexes[varnum];
+            if(typeof(index) == "string"){
+                index = page_local_index(index, this.container_id);
+            } else {
+                if(this.relativeness[varnum]){
+                    index += this.offset;
+                }
+            }
+            return index;
         }
         change_hmi_value(index,opstr) {
-            return change_hmi_value(this.get_idx(index), opstr);
+            return change_hmi_value(this.get_variable_index(index), opstr);
         }
 
         apply_hmi_value(index, new_val) {
-            return apply_hmi_value(this.get_idx(0), new_val);
+            return apply_hmi_value(this.get_variable_index(0), new_val);
         }
 
         new_hmi_value(index, value, oldval) {
             try {
                 // TODO avoid searching, store index at sub()
                 for(let i = 0; i < this.indexes.length; i++) {
-                    let refindex = this.indexes[i];
-                    if(this.relativeness[i])
-                        refindex += this.offset;
+                    let refindex = this.get_variable_index(i);
 
                     if(index == refindex) {
                         let d = this.dispatch;
@@ -186,12 +229,12 @@
 }
 ||
 
-const "excluded_types", "str:split('Page Lang')";
-const "excluded_ids","$parsed_widgets/widget[not(@type = $excluded_types)]/@id";
+const "excluded_types", "str:split('Page Lang VarInit')";
+const "included_ids","$parsed_widgets/widget[not(@type = $excluded_types)]/@id";
 
 emit "declarations:hmi-elements" {
     | var hmi_widgets = {
-    apply  "$hmi_elements[@id = $excluded_ids]", mode="hmi_widgets";
+    apply "$hmi_elements[@id = $included_ids]", mode="hmi_widgets";
     | }
 }
 
@@ -240,11 +283,10 @@
 def "func:escape_quotes" {
     param "txt";
     // have to use a python string to enter escaped quote
-    const "frst", !"substring-before($txt,'\"')"!;
-    const "frstln", "string-length($frst)";
+    // const "frstln", "string-length($frst)";
     choose {
-        when "$frstln > 0 and string-length($txt) > $frstln" {
-            result !"concat($frst,'\\\"',func:escape_quotes(substring-after($txt,'\"')))"!;
+        when !"contains($txt,'\"')"! {
+            result !"concat(substring-before($txt,'\"'),'\\\"',func:escape_quotes(substring-after($txt,'\"')))"!;
         }
         otherwise {
             result "$txt";
--- a/tests/svghmi/svghmi_0@svghmi/svghmi.svg	Mon Aug 10 15:25:57 2020 +0200
+++ b/tests/svghmi/svghmi_0@svghmi/svghmi.svg	Wed Aug 12 15:24:02 2020 +0200
@@ -16,7 +16,7 @@
    version="1.1"
    id="hmi0"
    sodipodi:docname="svghmi.svg"
-   inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
+   inkscape:version="0.92.3 (2405546, 2018-03-11)">
   <metadata
      id="metadata4542">
     <rdf:RDF>
@@ -34,6 +34,21 @@
     <marker
        inkscape:isstock="true"
        style="overflow:visible"
+       id="marker1536"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#c130f7;fill-opacity:1;fill-rule:evenodd;stroke:#c130f7;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path1534"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
        id="marker1656"
        refX="0"
        refY="0"
@@ -48,17 +63,17 @@
     </marker>
     <inkscape:perspective
        sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="1450 : 938 : 1"
+       inkscape:vp_x="1370 : 938 : 1"
        inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_z="2778 : 524 : 1"
-       inkscape:persp3d-origin="2090 : 818 : 1"
+       inkscape:vp_z="2698 : 524 : 1"
+       inkscape:persp3d-origin="2010 : 818 : 1"
        id="perspective1372" />
     <inkscape:perspective
        sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="1420 : 880 : 1"
+       inkscape:vp_x="1340 : 880 : 1"
        inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_z="2796 : 908 : 1"
-       inkscape:persp3d-origin="2060 : 760 : 1"
+       inkscape:vp_z="2716 : 908 : 1"
+       inkscape:persp3d-origin="1980 : 760 : 1"
        id="perspective1370" />
     <inkscape:perspective
        sodipodi:type="inkscape:persp3d"
@@ -167,17 +182,17 @@
      inkscape:pageopacity="0"
      inkscape:pageshadow="2"
      inkscape:document-units="px"
-     inkscape:current-layer="hmi0"
+     inkscape:current-layer="g5231"
      showgrid="false"
      units="px"
-     inkscape:zoom="0.7071068"
-     inkscape:cx="543.82641"
-     inkscape:cy="218.7845"
-     inkscape:window-width="2419"
-     inkscape:window-height="1266"
-     inkscape:window-x="1405"
-     inkscape:window-y="37"
-     inkscape:window-maximized="0"
+     inkscape:zoom="0.35355339"
+     inkscape:cx="228.48319"
+     inkscape:cy="161.32426"
+     inkscape:window-width="1800"
+     inkscape:window-height="836"
+     inkscape:window-x="0"
+     inkscape:window-y="27"
+     inkscape:window-maximized="1"
      showguides="true"
      inkscape:guide-bbox="true" />
   <rect
@@ -266,7 +281,7 @@
   <g
      id="g84"
      inkscape:label="HMI:Input@/TARGETPRESSURE"
-     transform="matrix(0.63690435,0,0,0.63690435,12.496106,18.355376)">
+     transform="matrix(0.35865594,0,0,0.35865594,22.072155,63.074421)">
     <text
        inkscape:label="value"
        id="text5151"
@@ -379,13 +394,13 @@
   <text
      inkscape:label="HMI:Display@/PUMP0/PRESSURE"
      id="text823"
-     y="157.35477"
-     x="494.20477"
-     style="font-style:normal;font-weight:normal;font-size:101.9046936px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.63690436px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     y="141.34827"
+     x="293.33374"
+     style="font-style:normal;font-weight:normal;font-size:57.38494873px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.35865593px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
      xml:space="preserve"><tspan
-       style="fill:#ffffff;fill-opacity:1;stroke-width:0.63690436px"
-       y="157.35477"
-       x="494.20477"
+       style="fill:#ffffff;fill-opacity:1;stroke-width:0.35865593px"
+       y="141.34827"
+       x="293.33374"
        id="tspan821"
        sodipodi:role="line">8888</tspan></text>
   <g
@@ -463,28 +478,28 @@
   </g>
   <text
      xml:space="preserve"
-     style="font-style:normal;font-weight:normal;font-size:25.4761734px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:0.63690436px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-     x="175.94542"
-     y="67.487991"
+     style="font-style:normal;font-weight:normal;font-size:14.34623718px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:0.35865593px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     x="114.11434"
+     y="90.742165"
      id="text827"
      inkscape:label="setpoint_label"><tspan
        sodipodi:role="line"
        id="tspan825"
-       x="175.94542"
-       y="67.487991"
-       style="stroke-width:0.63690436px">SetPoint</tspan></text>
+       x="114.11434"
+       y="90.742165"
+       style="stroke-width:0.35865593px">SetPoint</tspan></text>
   <text
      id="text831"
-     y="67.487991"
-     x="585.08185"
-     style="font-style:normal;font-weight:normal;font-size:25.4761734px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#008000;fill-opacity:1;stroke:none;stroke-width:0.63690436px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     y="90.742165"
+     x="344.50876"
+     style="font-style:normal;font-weight:normal;font-size:14.34623718px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#008000;fill-opacity:1;stroke:none;stroke-width:0.35865593px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
      xml:space="preserve"
      inkscape:label="actual_label"><tspan
-       y="67.487991"
-       x="585.08185"
+       y="90.742165"
+       x="344.50876"
        id="tspan829"
        sodipodi:role="line"
-       style="stroke-width:0.63690436px">Actual</tspan></text>
+       style="stroke-width:0.35865593px">Actual</tspan></text>
   <text
      xml:space="preserve"
      style="font-style:normal;font-weight:normal;font-size:22.87221527px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#ff6600;fill-opacity:1;stroke:none;stroke-width:0.57180536px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
@@ -763,10 +778,11 @@
   <g
      inkscape:label="HMI:Input@/TARGETPRESSURE"
      id="g991"
-     transform="translate(-60,900)">
+     transform="matrix(0.5,0,0,0.5,230.11026,885.7162)"
+     style="stroke-width:2">
     <text
        xml:space="preserve"
-       style="font-style:normal;font-weight:normal;font-size:160px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       style="font-style:normal;font-weight:normal;font-size:160px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
        x="136.32812"
        y="218.24219"
        id="text977"
@@ -775,7 +791,7 @@
          id="tspan975"
          x="136.32812"
          y="218.24219"
-         style="stroke-width:1px">8888</tspan></text>
+         style="stroke-width:2px">8888</tspan></text>
     <rect
        inkscape:label="edit"
        onclick=""
@@ -784,24 +800,25 @@
        height="128"
        width="407.7037"
        id="rect983"
-       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
     <g
        id="g1086"
        inkscape:label="=0"
-       transform="translate(-416.52022,170.47452)">
+       transform="translate(-416.52022,170.47452)"
+       style="stroke-width:2">
       <path
          inkscape:connector-curvature="0"
          id="path989"
          d="m 797.19546,145.18619 -80.62929,0.60214 -0.60215,-80.629288 80.6293,-0.60214 z"
          inkscape:transform-center-y="-14.956361"
-         style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+         style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
       <text
          id="text1048"
          y="111.05016"
          x="733.58197"
-         style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
          xml:space="preserve"><tspan
-           style="stroke-width:0.5px"
+           style="stroke-width:1px"
            y="111.05016"
            x="733.58197"
            id="tspan1046"
@@ -810,7 +827,8 @@
     <g
        id="g1091"
        inkscape:label="-10"
-       transform="translate(-416.52022,170.47452)">
+       transform="translate(-416.52022,170.47452)"
+       style="stroke-width:2">
       <path
          inkscape:transform-center-x="14.956371"
          inkscape:transform-center-y="-3.6154501e-05"
@@ -826,12 +844,12 @@
          sodipodi:cx="596.74072"
          sodipodi:sides="3"
          id="path981"
-         style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+         style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
          sodipodi:type="star"
          transform="matrix(0,-2.0000001,1.9999999,0,1034.195,1298.6541)" />
       <text
          xml:space="preserve"
-         style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
          x="633.09552"
          y="111.05016"
          id="text1059"><tspan
@@ -839,17 +857,18 @@
            id="tspan1057"
            x="633.09552"
            y="111.05016"
-           style="stroke-width:0.5px">-10</tspan></text>
+           style="stroke-width:1px">-10</tspan></text>
     </g>
     <g
        id="g1096"
        inkscape:label="-100"
-       transform="translate(-416.52022,170.47452)">
+       transform="translate(-416.52022,170.47452)"
+       style="stroke-width:2">
       <path
          inkscape:transform-center-x="14.956364"
          transform="rotate(-90,746.45698,-44.543641)"
          sodipodi:type="star"
-         style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+         style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
          id="path979"
          sodipodi:sides="3"
          sodipodi:cx="596.74072"
@@ -867,9 +886,9 @@
          id="text1063"
          y="111.05016"
          x="537.25018"
-         style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
          xml:space="preserve"><tspan
-           style="stroke-width:0.5px"
+           style="stroke-width:1px"
            y="111.05016"
            x="537.25018"
            id="tspan1061"
@@ -878,7 +897,8 @@
     <g
        id="g1076"
        inkscape:label="+100"
-       transform="translate(-416.52022,170.47452)">
+       transform="translate(-416.52022,170.47452)"
+       style="stroke-width:2">
       <path
          inkscape:transform-center-x="-14.956365"
          transform="matrix(0,-1,-1,0,1043.9134,701.91334)"
@@ -895,15 +915,15 @@
          sodipodi:cx="596.74072"
          sodipodi:sides="3"
          id="path985"
-         style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+         style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
          sodipodi:type="star" />
       <text
          id="text1067"
          y="111.05016"
          x="925.82605"
-         style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
          xml:space="preserve"><tspan
-           style="stroke-width:0.5px"
+           style="stroke-width:1px"
            y="111.05016"
            x="925.82605"
            id="tspan1065"
@@ -912,12 +932,13 @@
     <g
        id="g1081"
        inkscape:label="+10"
-       transform="translate(-416.52022,170.47452)">
+       transform="translate(-416.52022,170.47452)"
+       style="stroke-width:2">
       <path
          inkscape:transform-center-x="-14.956349"
          transform="matrix(0,-2.0000001,-1.9999999,0,1122.1514,1298.6541)"
          sodipodi:type="star"
-         style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+         style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
          id="path987"
          sodipodi:sides="3"
          sodipodi:cx="596.74072"
@@ -933,7 +954,7 @@
          inkscape:transform-center-y="-3.3040441e-05" />
       <text
          xml:space="preserve"
-         style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
          x="842.71497"
          y="111.05016"
          id="text1071"><tspan
@@ -941,7 +962,7 @@
            id="tspan1069"
            x="842.71497"
            y="111.05016"
-           style="stroke-width:0.5px">+10</tspan></text>
+           style="stroke-width:1px">+10</tspan></text>
     </g>
   </g>
   <text
@@ -2809,31 +2830,8 @@
   </g>
   <g
      id="g1289"
-     inkscape:label="HMI:JsonTable:/alarms@/ALARMCOUNT">
-    <rect
-       inkscape:label="cursor"
-       ry="14"
-       rx="12.247418"
-       y="68.515991"
-       x="1192.0886"
-       height="165.68298"
-       width="68.255615"
-       id="rect1264"
-       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#bc8f8f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
-    <path
-       inkscape:label="backward"
-       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#bc8f8f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-       d="m 1226.2165,18.9847 34.1278,34.74552 h -68.2556 z"
-       id="path1266"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cccc" />
-    <path
-       inkscape:label="forward"
-       sodipodi:nodetypes="cccc"
-       inkscape:connector-curvature="0"
-       id="path1268"
-       d="m 1226.2165,283.7301 34.1278,-34.7453 h -68.2556 z"
-       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#bc8f8f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+     inkscape:label="HMI:JsonTable:/alarms@/ALARMCOUNT"
+     transform="matrix(0.5,0,0,0.5,635.30409,71.500438)">
     <g
        id="g5231"
        inkscape:label="data">
@@ -3147,7 +3145,7 @@
          sodipodi:role="line">information</tspan></text>
   </g>
   <g
-     transform="matrix(0.31845218,0,0,0.31845218,701.53368,169.53582)"
+     transform="matrix(0.2527605,0,0,0.2527605,1089.2831,6.7725187)"
      inkscape:label="HMI:Input@/ALARMCOUNT"
      id="g5222">
     <text
@@ -3292,7 +3290,7 @@
   <g
      inkscape:label="HMI:Switch@/PUMP0/BOOLOUT"
      id="g1368"
-     transform="translate(1420,-520)">
+     transform="translate(1340,-520)">
     <g
        inkscape:label="true"
        inkscape:corner7="-0.30162293 : -0.45734167 : 0.25 : 1"
@@ -4224,4 +4222,1508 @@
        id="tspan829-7"
        sodipodi:role="line"
        style="stroke-width:0.63690436px">Multiple variables</tspan></text>
+  <text
+     inkscape:label="HMI:Display@paff"
+     id="text1457"
+     y="108.60184"
+     x="902.83728"
+     style="font-style:normal;font-weight:normal;font-size:45.74443054px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.28590268px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     xml:space="preserve"><tspan
+       style="fill:#ffffff;fill-opacity:1;stroke-width:0.28590268px"
+       y="108.60184"
+       x="902.83728"
+       id="tspan1455"
+       sodipodi:role="line">8888</tspan></text>
+  <g
+     style="stroke-width:2"
+     inkscape:label="HMI:Input@paff"
+     id="g1505"
+     transform="matrix(0.28590269,0,0,0.28590269,700.70444,46.1427)">
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:160px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="136.32812"
+       y="218.24219"
+       id="text1461"
+       inkscape:label="value"><tspan
+         sodipodi:role="line"
+         id="tspan1459"
+         x="136.32812"
+         y="218.24219"
+         style="stroke-width:2px">8888</tspan></text>
+    <rect
+       inkscape:label="edit"
+       onclick=""
+       y="95.40741"
+       x="139.85185"
+       height="128"
+       width="407.7037"
+       id="rect1463"
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+    <g
+       style="stroke-width:2"
+       id="g1471"
+       inkscape:label="+&quot;dhu&quot;"
+       transform="translate(-416.52022,170.47452)">
+      <path
+         inkscape:connector-curvature="0"
+         id="path1465"
+         d="m 797.19546,145.18619 -80.62929,0.60214 -0.60215,-80.629288 80.6293,-0.60214 z"
+         inkscape:transform-center-y="-14.956361"
+         style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+      <text
+         id="text1469"
+         y="111.05016"
+         x="733.58197"
+         style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="stroke-width:1px"
+           y="111.05016"
+           x="733.58197"
+           id="tspan1467"
+           sodipodi:role="line">dhu</tspan></text>
+    </g>
+    <g
+       style="stroke-width:2"
+       id="g1479"
+       inkscape:label="=&quot;plop&quot;"
+       transform="translate(-416.52022,170.47452)">
+      <path
+         inkscape:transform-center-x="14.956371"
+         inkscape:transform-center-y="-3.6154501e-05"
+         d="m 622.6459,-170.03172 -51.81035,0 25.90517,-44.86908 z"
+         inkscape:randomized="0"
+         inkscape:rounded="0"
+         inkscape:flatsided="true"
+         sodipodi:arg2="1.5707963"
+         sodipodi:arg1="0.52359878"
+         sodipodi:r2="14.956361"
+         sodipodi:r1="29.912722"
+         sodipodi:cy="-184.98808"
+         sodipodi:cx="596.74072"
+         sodipodi:sides="3"
+         id="path1473"
+         style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+         sodipodi:type="star"
+         transform="matrix(0,-2.0000001,1.9999999,0,1034.195,1298.6541)" />
+      <text
+         xml:space="preserve"
+         style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         x="633.09552"
+         y="111.05016"
+         id="text1477"><tspan
+           sodipodi:role="line"
+           id="tspan1475"
+           x="633.09552"
+           y="111.05016"
+           style="stroke-width:1px">plop</tspan></text>
+    </g>
+    <g
+       style="stroke-width:2"
+       id="g1487"
+       inkscape:label="=&quot;mhoo&quot;"
+       transform="translate(-416.52022,170.47452)">
+      <path
+         inkscape:transform-center-x="14.956364"
+         transform="rotate(-90,746.45698,-44.543641)"
+         sodipodi:type="star"
+         style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+         id="path1481"
+         sodipodi:sides="3"
+         sodipodi:cx="596.74072"
+         sodipodi:cy="-216.2599"
+         sodipodi:r1="59.825443"
+         sodipodi:r2="29.912722"
+         sodipodi:arg1="0.52359878"
+         sodipodi:arg2="1.5707963"
+         inkscape:flatsided="true"
+         inkscape:rounded="0"
+         inkscape:randomized="0"
+         d="m 648.55108,-186.34718 -103.62071,0 51.81035,-89.73817 z"
+         inkscape:transform-center-y="-5.9989963e-06" />
+      <text
+         id="text1485"
+         y="111.05016"
+         x="537.25018"
+         style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="stroke-width:1px"
+           y="111.05016"
+           x="537.25018"
+           id="tspan1483"
+           sodipodi:role="line">mhoo</tspan></text>
+    </g>
+    <g
+       style="stroke-width:2"
+       id="g1495"
+       inkscape:label="=&quot;yodl&quot;"
+       transform="translate(-416.52022,170.47452)">
+      <path
+         inkscape:transform-center-x="-14.956365"
+         transform="matrix(0,-1,-1,0,1043.9134,701.91334)"
+         inkscape:transform-center-y="-5.5023185e-06"
+         d="m 648.55108,135.08534 -103.62071,0 51.81035,-89.738161 z"
+         inkscape:randomized="0"
+         inkscape:rounded="0"
+         inkscape:flatsided="true"
+         sodipodi:arg2="1.5707963"
+         sodipodi:arg1="0.52359878"
+         sodipodi:r2="29.912722"
+         sodipodi:r1="59.825443"
+         sodipodi:cy="105.17262"
+         sodipodi:cx="596.74072"
+         sodipodi:sides="3"
+         id="path1489"
+         style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+         sodipodi:type="star" />
+      <text
+         id="text1493"
+         y="111.05016"
+         x="925.82605"
+         style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="stroke-width:1px"
+           y="111.05016"
+           x="925.82605"
+           id="tspan1491"
+           sodipodi:role="line">yodl</tspan></text>
+    </g>
+    <g
+       style="stroke-width:2"
+       id="g1503"
+       inkscape:label="=&quot;mhe&quot;"
+       transform="translate(-416.52022,170.47452)">
+      <path
+         inkscape:transform-center-x="-14.956349"
+         transform="matrix(0,-2.0000001,-1.9999999,0,1122.1514,1298.6541)"
+         sodipodi:type="star"
+         style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+         id="path1497"
+         sodipodi:sides="3"
+         sodipodi:cx="596.74072"
+         sodipodi:cy="136.44444"
+         sodipodi:r1="29.912722"
+         sodipodi:r2="14.956361"
+         sodipodi:arg1="0.52359878"
+         sodipodi:arg2="1.5707963"
+         inkscape:flatsided="true"
+         inkscape:rounded="0"
+         inkscape:randomized="0"
+         d="m 622.6459,151.4008 -51.81035,0 25.90517,-44.86908 z"
+         inkscape:transform-center-y="-3.3040441e-05" />
+      <text
+         xml:space="preserve"
+         style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         x="842.71497"
+         y="111.05016"
+         id="text1501"><tspan
+           sodipodi:role="line"
+           id="tspan1499"
+           x="842.71497"
+           y="111.05016"
+           style="stroke-width:1px">mhe</tspan></text>
+    </g>
+  </g>
+  <text
+     inkscape:label="actual_label"
+     xml:space="preserve"
+     style="font-style:normal;font-weight:normal;font-size:25.4761734px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#008000;fill-opacity:1;stroke:none;stroke-width:0.63690436px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     x="741.62634"
+     y="57.767578"
+     id="text1527"><tspan
+       style="stroke-width:0.63690436px"
+       sodipodi:role="line"
+       id="tspan1525"
+       x="741.62634"
+       y="57.767578">HMI_LOCAL variables</tspan></text>
+  <g
+     id="g1553"
+     transform="matrix(0.5,0,0,0.5,645.20358,-103.15494)">
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#bc8f8f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+       id="rect1264"
+       width="68.255615"
+       height="165.68298"
+       x="1141.0836"
+       y="420.78394"
+       rx="12.247418"
+       ry="14"
+       inkscape:label="cursor" />
+    <path
+       sodipodi:nodetypes="cccc"
+       inkscape:connector-curvature="0"
+       id="path1266"
+       d="m 1175.2115,371.25263 34.1278,34.74552 h -68.2556 z"
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#bc8f8f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+       inkscape:label="backward" />
+    <path
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#bc8f8f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+       d="m 1175.2115,635.99803 34.1278,-34.7453 h -68.2556 z"
+       id="path1268"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccc"
+       inkscape:label="forward" />
+  </g>
+  <text
+     xml:space="preserve"
+     style="font-style:normal;font-weight:normal;font-size:45.74443054px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.28590268px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     x="902.83728"
+     y="228.60184"
+     id="text1557"
+     inkscape:label="HMI:Display@.piff"><tspan
+       sodipodi:role="line"
+       id="tspan1555"
+       x="902.83728"
+       y="228.60184"
+       style="fill:#ffffff;fill-opacity:1;stroke-width:0.28590268px">8888</tspan></text>
+  <g
+     transform="matrix(0.28590269,0,0,0.28590269,700.70444,166.1427)"
+     id="g1605"
+     inkscape:label="HMI:Input@.piff"
+     style="stroke-width:2">
+    <text
+       inkscape:label="value"
+       id="text1561"
+       y="218.24219"
+       x="136.32812"
+       style="font-style:normal;font-weight:normal;font-size:160px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       xml:space="preserve"><tspan
+         style="stroke-width:2px"
+         y="218.24219"
+         x="136.32812"
+         id="tspan1559"
+         sodipodi:role="line">8888</tspan></text>
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+       id="rect1563"
+       width="407.7037"
+       height="128"
+       x="139.85185"
+       y="95.40741"
+       onclick=""
+       inkscape:label="edit" />
+    <g
+       transform="translate(-416.52022,170.47452)"
+       inkscape:label="+&quot;dhu&quot;"
+       id="g1571"
+       style="stroke-width:2">
+      <path
+         style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+         inkscape:transform-center-y="-14.956361"
+         d="m 797.19546,145.18619 -80.62929,0.60214 -0.60215,-80.629288 80.6293,-0.60214 z"
+         id="path1565"
+         inkscape:connector-curvature="0" />
+      <text
+         xml:space="preserve"
+         style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         x="733.58197"
+         y="111.05016"
+         id="text1569"><tspan
+           sodipodi:role="line"
+           id="tspan1567"
+           x="733.58197"
+           y="111.05016"
+           style="stroke-width:1px">dhu</tspan></text>
+    </g>
+    <g
+       transform="translate(-416.52022,170.47452)"
+       inkscape:label="=&quot;plop&quot;"
+       id="g1579"
+       style="stroke-width:2">
+      <path
+         transform="matrix(0,-2.0000001,1.9999999,0,1034.195,1298.6541)"
+         sodipodi:type="star"
+         style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+         id="path1573"
+         sodipodi:sides="3"
+         sodipodi:cx="596.74072"
+         sodipodi:cy="-184.98808"
+         sodipodi:r1="29.912722"
+         sodipodi:r2="14.956361"
+         sodipodi:arg1="0.52359878"
+         sodipodi:arg2="1.5707963"
+         inkscape:flatsided="true"
+         inkscape:rounded="0"
+         inkscape:randomized="0"
+         d="m 622.6459,-170.03172 -51.81035,0 25.90517,-44.86908 z"
+         inkscape:transform-center-y="-3.6154501e-05"
+         inkscape:transform-center-x="14.956371" />
+      <text
+         id="text1577"
+         y="111.05016"
+         x="633.09552"
+         style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="stroke-width:1px"
+           y="111.05016"
+           x="633.09552"
+           id="tspan1575"
+           sodipodi:role="line">plop</tspan></text>
+    </g>
+    <g
+       transform="translate(-416.52022,170.47452)"
+       inkscape:label="=&quot;mhoo&quot;"
+       id="g1587"
+       style="stroke-width:2">
+      <path
+         inkscape:transform-center-y="-5.9989963e-06"
+         d="m 648.55108,-186.34718 -103.62071,0 51.81035,-89.73817 z"
+         inkscape:randomized="0"
+         inkscape:rounded="0"
+         inkscape:flatsided="true"
+         sodipodi:arg2="1.5707963"
+         sodipodi:arg1="0.52359878"
+         sodipodi:r2="29.912722"
+         sodipodi:r1="59.825443"
+         sodipodi:cy="-216.2599"
+         sodipodi:cx="596.74072"
+         sodipodi:sides="3"
+         id="path1581"
+         style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+         sodipodi:type="star"
+         transform="rotate(-90,746.45698,-44.543641)"
+         inkscape:transform-center-x="14.956364" />
+      <text
+         xml:space="preserve"
+         style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         x="537.25018"
+         y="111.05016"
+         id="text1585"><tspan
+           sodipodi:role="line"
+           id="tspan1583"
+           x="537.25018"
+           y="111.05016"
+           style="stroke-width:1px">mhoo</tspan></text>
+    </g>
+    <g
+       transform="translate(-416.52022,170.47452)"
+       inkscape:label="=&quot;yodl&quot;"
+       id="g1595"
+       style="stroke-width:2">
+      <path
+         sodipodi:type="star"
+         style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+         id="path1589"
+         sodipodi:sides="3"
+         sodipodi:cx="596.74072"
+         sodipodi:cy="105.17262"
+         sodipodi:r1="59.825443"
+         sodipodi:r2="29.912722"
+         sodipodi:arg1="0.52359878"
+         sodipodi:arg2="1.5707963"
+         inkscape:flatsided="true"
+         inkscape:rounded="0"
+         inkscape:randomized="0"
+         d="m 648.55108,135.08534 -103.62071,0 51.81035,-89.738161 z"
+         inkscape:transform-center-y="-5.5023185e-06"
+         transform="matrix(0,-1,-1,0,1043.9134,701.91334)"
+         inkscape:transform-center-x="-14.956365" />
+      <text
+         xml:space="preserve"
+         style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         x="925.82605"
+         y="111.05016"
+         id="text1593"><tspan
+           sodipodi:role="line"
+           id="tspan1591"
+           x="925.82605"
+           y="111.05016"
+           style="stroke-width:1px">yodl</tspan></text>
+    </g>
+    <g
+       transform="translate(-416.52022,170.47452)"
+       inkscape:label="=&quot;mhe&quot;"
+       id="g1603"
+       style="stroke-width:2">
+      <path
+         inkscape:transform-center-y="-3.3040441e-05"
+         d="m 622.6459,151.4008 -51.81035,0 25.90517,-44.86908 z"
+         inkscape:randomized="0"
+         inkscape:rounded="0"
+         inkscape:flatsided="true"
+         sodipodi:arg2="1.5707963"
+         sodipodi:arg1="0.52359878"
+         sodipodi:r2="14.956361"
+         sodipodi:r1="29.912722"
+         sodipodi:cy="136.44444"
+         sodipodi:cx="596.74072"
+         sodipodi:sides="3"
+         id="path1597"
+         style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+         sodipodi:type="star"
+         transform="matrix(0,-2.0000001,-1.9999999,0,1122.1514,1298.6541)"
+         inkscape:transform-center-x="-14.956349" />
+      <text
+         id="text1601"
+         y="111.05016"
+         x="842.71497"
+         style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="stroke-width:1px"
+           y="111.05016"
+           x="842.71497"
+           id="tspan1599"
+           sodipodi:role="line">mhe</tspan></text>
+    </g>
+  </g>
+  <text
+     id="text1609"
+     y="177.76758"
+     x="741.62634"
+     style="font-style:normal;font-weight:normal;font-size:25.4761734px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#008000;fill-opacity:1;stroke:none;stroke-width:0.63690436px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     xml:space="preserve"
+     inkscape:label="actual_label"><tspan
+       y="177.76758"
+       x="741.62634"
+       sodipodi:role="line"
+       style="stroke-width:0.63690436px"
+       id="tspan1611">PAGE_LOCAL variables</tspan></text>
+  <g
+     inkscape:label="HMI:Meter@level"
+     transform="matrix(2.1611542,0,0,2.1611542,902.76714,468.92423)"
+     id="g709">
+    <path
+       inkscape:label="range"
+       sodipodi:open="true"
+       d="M 63.610123,2.2017068 A 64.411957,64.411957 0 0 1 128.02208,-62.210247"
+       sodipodi:end="4.712389"
+       sodipodi:start="3.1415927"
+       sodipodi:ry="64.411957"
+       sodipodi:rx="64.411957"
+       sodipodi:cy="2.2017097"
+       sodipodi:cx="128.02208"
+       sodipodi:type="arc"
+       id="path689"
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ff7f2a;stroke-width:26.45833397;stroke-miterlimit:4;stroke-dasharray:2.64583333, 2.64583333;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+    <path
+       inkscape:label="needle"
+       sodipodi:nodetypes="cc"
+       inkscape:connector-curvature="0"
+       id="path691"
+       d="M 130.96206,4.0725977 79.111776,-41.363223"
+       style="fill:none;fill-rule:evenodd;stroke:#c130f7;stroke-width:2.96323133;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0, 32.59554547;stroke-dashoffset:29.63231468;stroke-opacity:1;marker-end:url(#marker1536)" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#ff6600;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="49.132977"
+       y="4.9187088"
+       id="text695"
+       inkscape:label="min"><tspan
+         sodipodi:role="line"
+         id="tspan693"
+         x="49.132977"
+         y="4.9187088"
+         style="text-align:end;text-anchor:end;fill:#ff6600;stroke-width:0.26458332px">0</tspan></text>
+    <text
+       id="text699"
+       y="-78.144218"
+       x="127.48073"
+       style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ff6600;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       xml:space="preserve"
+       inkscape:label="max"><tspan
+         style="text-align:center;text-anchor:middle;fill:#ff6600;stroke-width:0.26458332px"
+         y="-78.144218"
+         x="127.48073"
+         id="tspan697"
+         sodipodi:role="line">10000</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ff6600;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="113.53007"
+       y="-6.1937833"
+       id="text703"
+       inkscape:label="value"><tspan
+         sodipodi:role="line"
+         x="113.53007"
+         y="-6.1937833"
+         style="text-align:center;text-anchor:middle;fill:#ff6600;stroke-width:0.26458332px"
+         id="tspan701">000</tspan></text>
+    <text
+       inkscape:label="unit"
+       id="text707"
+       y="1.1408259"
+       x="124.77896"
+       style="font-style:normal;font-weight:normal;font-size:7.5467205px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ff6600;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       xml:space="preserve"><tspan
+         id="tspan705"
+         style="text-align:center;text-anchor:middle;fill:#ff6600;stroke-width:0.26458332px"
+         y="1.1408259"
+         x="124.77896"
+         sodipodi:role="line">bar</tspan></text>
+  </g>
+  <g
+     id="g84-3"
+     inkscape:label="HMI:Input@level"
+     transform="matrix(0.35865594,0,0,0.35865594,758.57767,293.49106)">
+    <text
+       inkscape:label="value"
+       id="text5151-6"
+       y="218.24219"
+       x="136.32812"
+       style="font-style:normal;font-weight:normal;font-size:160px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       xml:space="preserve"><tspan
+         style="stroke-width:1px"
+         y="218.24219"
+         x="136.32812"
+         id="tspan5149-7"
+         sodipodi:role="line">8888</tspan></text>
+    <path
+       transform="scale(1,-1)"
+       sodipodi:type="star"
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:#ff6600;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+       id="path89-5"
+       sodipodi:sides="3"
+       sodipodi:cx="596.74072"
+       sodipodi:cy="-216.2599"
+       sodipodi:r1="59.825443"
+       sodipodi:r2="29.912722"
+       sodipodi:arg1="0.52359878"
+       sodipodi:arg2="1.5707963"
+       inkscape:flatsided="true"
+       inkscape:rounded="0"
+       inkscape:randomized="0"
+       d="m 648.55108,-186.34718 -103.62071,0 51.81035,-89.73817 z"
+       inkscape:transform-center-y="14.956363"
+       inkscape:label="-100" />
+    <path
+       inkscape:label="-10"
+       inkscape:transform-center-y="7.4781812"
+       d="m 622.6459,-170.03172 -51.81035,0 25.90517,-44.86908 z"
+       inkscape:randomized="0"
+       inkscape:rounded="0"
+       inkscape:flatsided="true"
+       sodipodi:arg2="1.5707963"
+       sodipodi:arg1="0.52359878"
+       sodipodi:r2="14.956361"
+       sodipodi:r1="29.912722"
+       sodipodi:cy="-184.98808"
+       sodipodi:cx="596.74072"
+       sodipodi:sides="3"
+       id="path88-3"
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:#ff6600;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+       sodipodi:type="star"
+       transform="scale(1,-1)" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+       id="rect85-5"
+       width="407.7037"
+       height="128"
+       x="139.85185"
+       y="95.40741"
+       onclick=""
+       inkscape:label="edit" />
+    <path
+       inkscape:label="+100"
+       inkscape:transform-center-y="-14.956361"
+       d="m 648.55108,135.08534 -103.62071,0 51.81035,-89.738161 z"
+       inkscape:randomized="0"
+       inkscape:rounded="0"
+       inkscape:flatsided="true"
+       sodipodi:arg2="1.5707963"
+       sodipodi:arg1="0.52359878"
+       sodipodi:r2="29.912722"
+       sodipodi:r1="59.825443"
+       sodipodi:cy="105.17262"
+       sodipodi:cx="596.74072"
+       sodipodi:sides="3"
+       id="path87-6"
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:#ff6600;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+       sodipodi:type="star" />
+    <path
+       sodipodi:type="star"
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:#ff6600;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+       id="path86-2"
+       sodipodi:sides="3"
+       sodipodi:cx="596.74072"
+       sodipodi:cy="136.44444"
+       sodipodi:r1="29.912722"
+       sodipodi:r2="14.956361"
+       sodipodi:arg1="0.52359878"
+       sodipodi:arg2="1.5707963"
+       inkscape:flatsided="true"
+       inkscape:rounded="0"
+       inkscape:randomized="0"
+       d="m 622.6459,151.4008 -51.81035,0 25.90517,-44.86908 z"
+       inkscape:transform-center-y="-7.4781804"
+       inkscape:label="+10" />
+    <path
+       sodipodi:type="star"
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:#ff6600;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+       id="path91-9"
+       sodipodi:sides="4"
+       sodipodi:cx="80.740723"
+       sodipodi:cy="165.17262"
+       sodipodi:r1="57.015106"
+       sodipodi:r2="29.912722"
+       sodipodi:arg1="0.77793027"
+       sodipodi:arg2="1.5633284"
+       inkscape:flatsided="true"
+       inkscape:rounded="-0.65084865"
+       inkscape:randomized="0"
+       d="M 121.35644,205.1862 C 158.18649,167.80191 3.342862,168.95829 40.72715,205.78834 78.111437,242.61839 76.95506,87.774762 40.125008,125.15905 3.2949549,162.54334 158.13858,161.38696 120.7543,124.55691 83.370008,87.726855 84.526385,242.57048 121.35644,205.1862 Z"
+       inkscape:transform-center-y="-14.956361"
+       inkscape:label="=0" />
+  </g>
+  <text
+     inkscape:label="HMI:Display@paff"
+     id="text1457-1"
+     y="215.65211"
+     x="2632.9148"
+     style="font-style:normal;font-weight:normal;font-size:45.74443054px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.28590268px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     xml:space="preserve"><tspan
+       style="fill:#ffffff;fill-opacity:1;stroke-width:0.28590268px"
+       y="215.65211"
+       x="2632.9148"
+       id="tspan1455-2"
+       sodipodi:role="line">8888</tspan></text>
+  <g
+     style="stroke-width:2"
+     inkscape:label="HMI:Input@paff"
+     id="g1505-7"
+     transform="matrix(0.28590269,0,0,0.28590269,2430.782,153.19299)">
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:160px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="136.32812"
+       y="218.24219"
+       id="text1461-0"
+       inkscape:label="value"><tspan
+         sodipodi:role="line"
+         id="tspan1459-9"
+         x="136.32812"
+         y="218.24219"
+         style="stroke-width:2px">8888</tspan></text>
+    <rect
+       inkscape:label="edit"
+       onclick=""
+       y="95.40741"
+       x="139.85185"
+       height="128"
+       width="407.7037"
+       id="rect1463-3"
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+    <g
+       style="stroke-width:2"
+       id="g1471-6"
+       inkscape:label="+&quot;dhu&quot;"
+       transform="translate(-416.52022,170.47452)">
+      <path
+         inkscape:connector-curvature="0"
+         id="path1465-0"
+         d="m 797.19546,145.18619 -80.62929,0.60214 -0.60215,-80.629288 80.6293,-0.60214 z"
+         inkscape:transform-center-y="-14.956361"
+         style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+      <text
+         id="text1469-6"
+         y="111.05016"
+         x="733.58197"
+         style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="stroke-width:1px"
+           y="111.05016"
+           x="733.58197"
+           id="tspan1467-2"
+           sodipodi:role="line">dhu</tspan></text>
+    </g>
+    <g
+       style="stroke-width:2"
+       id="g1479-6"
+       inkscape:label="=&quot;plop&quot;"
+       transform="translate(-416.52022,170.47452)">
+      <path
+         inkscape:transform-center-x="14.956371"
+         inkscape:transform-center-y="-3.6154501e-05"
+         d="m 622.6459,-170.03172 -51.81035,0 25.90517,-44.86908 z"
+         inkscape:randomized="0"
+         inkscape:rounded="0"
+         inkscape:flatsided="true"
+         sodipodi:arg2="1.5707963"
+         sodipodi:arg1="0.52359878"
+         sodipodi:r2="14.956361"
+         sodipodi:r1="29.912722"
+         sodipodi:cy="-184.98808"
+         sodipodi:cx="596.74072"
+         sodipodi:sides="3"
+         id="path1473-1"
+         style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+         sodipodi:type="star"
+         transform="matrix(0,-2.0000001,1.9999999,0,1034.195,1298.6541)" />
+      <text
+         xml:space="preserve"
+         style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         x="633.09552"
+         y="111.05016"
+         id="text1477-8"><tspan
+           sodipodi:role="line"
+           id="tspan1475-7"
+           x="633.09552"
+           y="111.05016"
+           style="stroke-width:1px">plop</tspan></text>
+    </g>
+    <g
+       style="stroke-width:2"
+       id="g1487-9"
+       inkscape:label="=&quot;mhoo&quot;"
+       transform="translate(-416.52022,170.47452)">
+      <path
+         inkscape:transform-center-x="14.956364"
+         transform="rotate(-90,746.45698,-44.543641)"
+         sodipodi:type="star"
+         style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+         id="path1481-2"
+         sodipodi:sides="3"
+         sodipodi:cx="596.74072"
+         sodipodi:cy="-216.2599"
+         sodipodi:r1="59.825443"
+         sodipodi:r2="29.912722"
+         sodipodi:arg1="0.52359878"
+         sodipodi:arg2="1.5707963"
+         inkscape:flatsided="true"
+         inkscape:rounded="0"
+         inkscape:randomized="0"
+         d="m 648.55108,-186.34718 -103.62071,0 51.81035,-89.73817 z"
+         inkscape:transform-center-y="-5.9989963e-06" />
+      <text
+         id="text1485-0"
+         y="111.05016"
+         x="537.25018"
+         style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="stroke-width:1px"
+           y="111.05016"
+           x="537.25018"
+           id="tspan1483-2"
+           sodipodi:role="line">mhoo</tspan></text>
+    </g>
+    <g
+       style="stroke-width:2"
+       id="g1495-3"
+       inkscape:label="=&quot;yodl&quot;"
+       transform="translate(-416.52022,170.47452)">
+      <path
+         inkscape:transform-center-x="-14.956365"
+         transform="matrix(0,-1,-1,0,1043.9134,701.91334)"
+         inkscape:transform-center-y="-5.5023185e-06"
+         d="m 648.55108,135.08534 -103.62071,0 51.81035,-89.738161 z"
+         inkscape:randomized="0"
+         inkscape:rounded="0"
+         inkscape:flatsided="true"
+         sodipodi:arg2="1.5707963"
+         sodipodi:arg1="0.52359878"
+         sodipodi:r2="29.912722"
+         sodipodi:r1="59.825443"
+         sodipodi:cy="105.17262"
+         sodipodi:cx="596.74072"
+         sodipodi:sides="3"
+         id="path1489-7"
+         style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+         sodipodi:type="star" />
+      <text
+         id="text1493-5"
+         y="111.05016"
+         x="925.82605"
+         style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="stroke-width:1px"
+           y="111.05016"
+           x="925.82605"
+           id="tspan1491-9"
+           sodipodi:role="line">yodl</tspan></text>
+    </g>
+    <g
+       style="stroke-width:2"
+       id="g1503-2"
+       inkscape:label="=&quot;mhe&quot;"
+       transform="translate(-416.52022,170.47452)">
+      <path
+         inkscape:transform-center-x="-14.956349"
+         transform="matrix(0,-2.0000001,-1.9999999,0,1122.1514,1298.6541)"
+         sodipodi:type="star"
+         style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+         id="path1497-2"
+         sodipodi:sides="3"
+         sodipodi:cx="596.74072"
+         sodipodi:cy="136.44444"
+         sodipodi:r1="29.912722"
+         sodipodi:r2="14.956361"
+         sodipodi:arg1="0.52359878"
+         sodipodi:arg2="1.5707963"
+         inkscape:flatsided="true"
+         inkscape:rounded="0"
+         inkscape:randomized="0"
+         d="m 622.6459,151.4008 -51.81035,0 25.90517,-44.86908 z"
+         inkscape:transform-center-y="-3.3040441e-05" />
+      <text
+         xml:space="preserve"
+         style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         x="842.71497"
+         y="111.05016"
+         id="text1501-8"><tspan
+           sodipodi:role="line"
+           id="tspan1499-9"
+           x="842.71497"
+           y="111.05016"
+           style="stroke-width:1px">mhe</tspan></text>
+    </g>
+  </g>
+  <text
+     inkscape:label="actual_label"
+     xml:space="preserve"
+     style="font-style:normal;font-weight:normal;font-size:25.4761734px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#008000;fill-opacity:1;stroke:none;stroke-width:0.63690436px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     x="2471.7039"
+     y="164.81787"
+     id="text1527-7"><tspan
+       style="stroke-width:0.63690436px"
+       sodipodi:role="line"
+       id="tspan1525-3"
+       x="2471.7039"
+       y="164.81787">HMI_LOCAL variables</tspan></text>
+  <text
+     xml:space="preserve"
+     style="font-style:normal;font-weight:normal;font-size:45.74443054px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.28590268px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     x="2632.9148"
+     y="335.65213"
+     id="text1557-6"
+     inkscape:label="HMI:Display@.piff"><tspan
+       sodipodi:role="line"
+       id="tspan1555-1"
+       x="2632.9148"
+       y="335.65213"
+       style="fill:#ffffff;fill-opacity:1;stroke-width:0.28590268px">8888</tspan></text>
+  <g
+     transform="matrix(0.28590269,0,0,0.28590269,2430.782,273.19298)"
+     id="g1605-2"
+     inkscape:label="HMI:Input@.piff"
+     style="stroke-width:2">
+    <text
+       inkscape:label="value"
+       id="text1561-9"
+       y="218.24219"
+       x="136.32812"
+       style="font-style:normal;font-weight:normal;font-size:160px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       xml:space="preserve"><tspan
+         style="stroke-width:2px"
+         y="218.24219"
+         x="136.32812"
+         id="tspan1559-3"
+         sodipodi:role="line">8888</tspan></text>
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+       id="rect1563-1"
+       width="407.7037"
+       height="128"
+       x="139.85185"
+       y="95.40741"
+       onclick=""
+       inkscape:label="edit" />
+    <g
+       transform="translate(-416.52022,170.47452)"
+       inkscape:label="+&quot;dhu&quot;"
+       id="g1571-9"
+       style="stroke-width:2">
+      <path
+         style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+         inkscape:transform-center-y="-14.956361"
+         d="m 797.19546,145.18619 -80.62929,0.60214 -0.60215,-80.629288 80.6293,-0.60214 z"
+         id="path1565-4"
+         inkscape:connector-curvature="0" />
+      <text
+         xml:space="preserve"
+         style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         x="733.58197"
+         y="111.05016"
+         id="text1569-7"><tspan
+           sodipodi:role="line"
+           id="tspan1567-8"
+           x="733.58197"
+           y="111.05016"
+           style="stroke-width:1px">dhu</tspan></text>
+    </g>
+    <g
+       transform="translate(-416.52022,170.47452)"
+       inkscape:label="=&quot;plop&quot;"
+       id="g1579-4"
+       style="stroke-width:2">
+      <path
+         transform="matrix(0,-2.0000001,1.9999999,0,1034.195,1298.6541)"
+         sodipodi:type="star"
+         style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+         id="path1573-5"
+         sodipodi:sides="3"
+         sodipodi:cx="596.74072"
+         sodipodi:cy="-184.98808"
+         sodipodi:r1="29.912722"
+         sodipodi:r2="14.956361"
+         sodipodi:arg1="0.52359878"
+         sodipodi:arg2="1.5707963"
+         inkscape:flatsided="true"
+         inkscape:rounded="0"
+         inkscape:randomized="0"
+         d="m 622.6459,-170.03172 -51.81035,0 25.90517,-44.86908 z"
+         inkscape:transform-center-y="-3.6154501e-05"
+         inkscape:transform-center-x="14.956371" />
+      <text
+         id="text1577-0"
+         y="111.05016"
+         x="633.09552"
+         style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="stroke-width:1px"
+           y="111.05016"
+           x="633.09552"
+           id="tspan1575-3"
+           sodipodi:role="line">plop</tspan></text>
+    </g>
+    <g
+       transform="translate(-416.52022,170.47452)"
+       inkscape:label="=&quot;mhoo&quot;"
+       id="g1587-6"
+       style="stroke-width:2">
+      <path
+         inkscape:transform-center-y="-5.9989963e-06"
+         d="m 648.55108,-186.34718 -103.62071,0 51.81035,-89.73817 z"
+         inkscape:randomized="0"
+         inkscape:rounded="0"
+         inkscape:flatsided="true"
+         sodipodi:arg2="1.5707963"
+         sodipodi:arg1="0.52359878"
+         sodipodi:r2="29.912722"
+         sodipodi:r1="59.825443"
+         sodipodi:cy="-216.2599"
+         sodipodi:cx="596.74072"
+         sodipodi:sides="3"
+         id="path1581-1"
+         style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+         sodipodi:type="star"
+         transform="rotate(-90,746.45698,-44.543641)"
+         inkscape:transform-center-x="14.956364" />
+      <text
+         xml:space="preserve"
+         style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         x="537.25018"
+         y="111.05016"
+         id="text1585-0"><tspan
+           sodipodi:role="line"
+           id="tspan1583-6"
+           x="537.25018"
+           y="111.05016"
+           style="stroke-width:1px">mhoo</tspan></text>
+    </g>
+    <g
+       transform="translate(-416.52022,170.47452)"
+       inkscape:label="=&quot;yodl&quot;"
+       id="g1595-3"
+       style="stroke-width:2">
+      <path
+         sodipodi:type="star"
+         style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+         id="path1589-2"
+         sodipodi:sides="3"
+         sodipodi:cx="596.74072"
+         sodipodi:cy="105.17262"
+         sodipodi:r1="59.825443"
+         sodipodi:r2="29.912722"
+         sodipodi:arg1="0.52359878"
+         sodipodi:arg2="1.5707963"
+         inkscape:flatsided="true"
+         inkscape:rounded="0"
+         inkscape:randomized="0"
+         d="m 648.55108,135.08534 -103.62071,0 51.81035,-89.738161 z"
+         inkscape:transform-center-y="-5.5023185e-06"
+         transform="matrix(0,-1,-1,0,1043.9134,701.91334)"
+         inkscape:transform-center-x="-14.956365" />
+      <text
+         xml:space="preserve"
+         style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         x="925.82605"
+         y="111.05016"
+         id="text1593-0"><tspan
+           sodipodi:role="line"
+           id="tspan1591-6"
+           x="925.82605"
+           y="111.05016"
+           style="stroke-width:1px">yodl</tspan></text>
+    </g>
+    <g
+       transform="translate(-416.52022,170.47452)"
+       inkscape:label="=&quot;mhe&quot;"
+       id="g1603-1"
+       style="stroke-width:2">
+      <path
+         inkscape:transform-center-y="-3.3040441e-05"
+         d="m 622.6459,151.4008 -51.81035,0 25.90517,-44.86908 z"
+         inkscape:randomized="0"
+         inkscape:rounded="0"
+         inkscape:flatsided="true"
+         sodipodi:arg2="1.5707963"
+         sodipodi:arg1="0.52359878"
+         sodipodi:r2="14.956361"
+         sodipodi:r1="29.912722"
+         sodipodi:cy="136.44444"
+         sodipodi:cx="596.74072"
+         sodipodi:sides="3"
+         id="path1597-5"
+         style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+         sodipodi:type="star"
+         transform="matrix(0,-2.0000001,-1.9999999,0,1122.1514,1298.6541)"
+         inkscape:transform-center-x="-14.956349" />
+      <text
+         id="text1601-5"
+         y="111.05016"
+         x="842.71497"
+         style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="stroke-width:1px"
+           y="111.05016"
+           x="842.71497"
+           id="tspan1599-4"
+           sodipodi:role="line">mhe</tspan></text>
+    </g>
+  </g>
+  <text
+     id="text1609-7"
+     y="284.81787"
+     x="2471.7039"
+     style="font-style:normal;font-weight:normal;font-size:25.4761734px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#008000;fill-opacity:1;stroke:none;stroke-width:0.63690436px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     xml:space="preserve"
+     inkscape:label="actual_label"><tspan
+       y="284.81787"
+       x="2471.7039"
+       sodipodi:role="line"
+       style="stroke-width:0.63690436px"
+       id="tspan1611-6">PAGE_LOCAL variables</tspan></text>
+  <text
+     inkscape:label="HMI:Display@paff"
+     id="text1457-5"
+     y="1208.4301"
+     x="276.83508"
+     style="font-style:normal;font-weight:normal;font-size:45.74443054px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.28590268px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     xml:space="preserve"><tspan
+       style="fill:#ffffff;fill-opacity:1;stroke-width:0.28590268px"
+       y="1208.4301"
+       x="276.83508"
+       id="tspan1455-6"
+       sodipodi:role="line">8888</tspan></text>
+  <g
+     style="stroke-width:2"
+     inkscape:label="HMI:Input@paff"
+     id="g1505-9"
+     transform="matrix(0.28590269,0,0,0.28590269,74.702238,1145.9709)">
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:160px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="136.32812"
+       y="218.24219"
+       id="text1461-3"
+       inkscape:label="value"><tspan
+         sodipodi:role="line"
+         id="tspan1459-7"
+         x="136.32812"
+         y="218.24219"
+         style="stroke-width:2px">8888</tspan></text>
+    <rect
+       inkscape:label="edit"
+       onclick=""
+       y="95.40741"
+       x="139.85185"
+       height="128"
+       width="407.7037"
+       id="rect1463-4"
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+    <g
+       style="stroke-width:2"
+       id="g1471-5"
+       inkscape:label="+&quot;dhu&quot;"
+       transform="translate(-416.52022,170.47452)">
+      <path
+         inkscape:connector-curvature="0"
+         id="path1465-2"
+         d="m 797.19546,145.18619 -80.62929,0.60214 -0.60215,-80.629288 80.6293,-0.60214 z"
+         inkscape:transform-center-y="-14.956361"
+         style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+      <text
+         id="text1469-5"
+         y="111.05016"
+         x="733.58197"
+         style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="stroke-width:1px"
+           y="111.05016"
+           x="733.58197"
+           id="tspan1467-4"
+           sodipodi:role="line">dhu</tspan></text>
+    </g>
+    <g
+       style="stroke-width:2"
+       id="g1479-7"
+       inkscape:label="=&quot;plop&quot;"
+       transform="translate(-416.52022,170.47452)">
+      <path
+         inkscape:transform-center-x="14.956371"
+         inkscape:transform-center-y="-3.6154501e-05"
+         d="m 622.6459,-170.03172 -51.81035,0 25.90517,-44.86908 z"
+         inkscape:randomized="0"
+         inkscape:rounded="0"
+         inkscape:flatsided="true"
+         sodipodi:arg2="1.5707963"
+         sodipodi:arg1="0.52359878"
+         sodipodi:r2="14.956361"
+         sodipodi:r1="29.912722"
+         sodipodi:cy="-184.98808"
+         sodipodi:cx="596.74072"
+         sodipodi:sides="3"
+         id="path1473-4"
+         style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+         sodipodi:type="star"
+         transform="matrix(0,-2.0000001,1.9999999,0,1034.195,1298.6541)" />
+      <text
+         xml:space="preserve"
+         style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         x="633.09552"
+         y="111.05016"
+         id="text1477-4"><tspan
+           sodipodi:role="line"
+           id="tspan1475-3"
+           x="633.09552"
+           y="111.05016"
+           style="stroke-width:1px">plop</tspan></text>
+    </g>
+    <g
+       style="stroke-width:2"
+       id="g1487-0"
+       inkscape:label="=&quot;mhoo&quot;"
+       transform="translate(-416.52022,170.47452)">
+      <path
+         inkscape:transform-center-x="14.956364"
+         transform="rotate(-90,746.45698,-44.543641)"
+         sodipodi:type="star"
+         style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+         id="path1481-7"
+         sodipodi:sides="3"
+         sodipodi:cx="596.74072"
+         sodipodi:cy="-216.2599"
+         sodipodi:r1="59.825443"
+         sodipodi:r2="29.912722"
+         sodipodi:arg1="0.52359878"
+         sodipodi:arg2="1.5707963"
+         inkscape:flatsided="true"
+         inkscape:rounded="0"
+         inkscape:randomized="0"
+         d="m 648.55108,-186.34718 -103.62071,0 51.81035,-89.73817 z"
+         inkscape:transform-center-y="-5.9989963e-06" />
+      <text
+         id="text1485-8"
+         y="111.05016"
+         x="537.25018"
+         style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="stroke-width:1px"
+           y="111.05016"
+           x="537.25018"
+           id="tspan1483-6"
+           sodipodi:role="line">mhoo</tspan></text>
+    </g>
+    <g
+       style="stroke-width:2"
+       id="g1495-8"
+       inkscape:label="=&quot;yodl&quot;"
+       transform="translate(-416.52022,170.47452)">
+      <path
+         inkscape:transform-center-x="-14.956365"
+         transform="matrix(0,-1,-1,0,1043.9134,701.91334)"
+         inkscape:transform-center-y="-5.5023185e-06"
+         d="m 648.55108,135.08534 -103.62071,0 51.81035,-89.738161 z"
+         inkscape:randomized="0"
+         inkscape:rounded="0"
+         inkscape:flatsided="true"
+         sodipodi:arg2="1.5707963"
+         sodipodi:arg1="0.52359878"
+         sodipodi:r2="29.912722"
+         sodipodi:r1="59.825443"
+         sodipodi:cy="105.17262"
+         sodipodi:cx="596.74072"
+         sodipodi:sides="3"
+         id="path1489-8"
+         style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+         sodipodi:type="star" />
+      <text
+         id="text1493-4"
+         y="111.05016"
+         x="925.82605"
+         style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="stroke-width:1px"
+           y="111.05016"
+           x="925.82605"
+           id="tspan1491-3"
+           sodipodi:role="line">yodl</tspan></text>
+    </g>
+    <g
+       style="stroke-width:2"
+       id="g1503-1"
+       inkscape:label="=&quot;mhe&quot;"
+       transform="translate(-416.52022,170.47452)">
+      <path
+         inkscape:transform-center-x="-14.956349"
+         transform="matrix(0,-2.0000001,-1.9999999,0,1122.1514,1298.6541)"
+         sodipodi:type="star"
+         style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+         id="path1497-4"
+         sodipodi:sides="3"
+         sodipodi:cx="596.74072"
+         sodipodi:cy="136.44444"
+         sodipodi:r1="29.912722"
+         sodipodi:r2="14.956361"
+         sodipodi:arg1="0.52359878"
+         sodipodi:arg2="1.5707963"
+         inkscape:flatsided="true"
+         inkscape:rounded="0"
+         inkscape:randomized="0"
+         d="m 622.6459,151.4008 -51.81035,0 25.90517,-44.86908 z"
+         inkscape:transform-center-y="-3.3040441e-05" />
+      <text
+         xml:space="preserve"
+         style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         x="842.71497"
+         y="111.05016"
+         id="text1501-9"><tspan
+           sodipodi:role="line"
+           id="tspan1499-2"
+           x="842.71497"
+           y="111.05016"
+           style="stroke-width:1px">mhe</tspan></text>
+    </g>
+  </g>
+  <text
+     inkscape:label="actual_label"
+     xml:space="preserve"
+     style="font-style:normal;font-weight:normal;font-size:25.4761734px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#008000;fill-opacity:1;stroke:none;stroke-width:0.63690436px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     x="115.62414"
+     y="1157.5958"
+     id="text1527-0"><tspan
+       style="stroke-width:0.63690436px"
+       sodipodi:role="line"
+       id="tspan1525-6"
+       x="115.62414"
+       y="1157.5958">HMI_LOCAL variables</tspan></text>
+  <text
+     xml:space="preserve"
+     style="font-style:normal;font-weight:normal;font-size:45.74443054px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.28590268px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     x="276.83508"
+     y="1328.4301"
+     id="text1557-8"
+     inkscape:label="HMI:Display@.piff"><tspan
+       sodipodi:role="line"
+       id="tspan1555-9"
+       x="276.83508"
+       y="1328.4301"
+       style="fill:#ffffff;fill-opacity:1;stroke-width:0.28590268px">8888</tspan></text>
+  <g
+     transform="matrix(0.28590269,0,0,0.28590269,74.702238,1265.9709)"
+     id="g1605-26"
+     inkscape:label="HMI:Input@.piff"
+     style="stroke-width:2">
+    <text
+       inkscape:label="value"
+       id="text1561-6"
+       y="218.24219"
+       x="136.32812"
+       style="font-style:normal;font-weight:normal;font-size:160px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       xml:space="preserve"><tspan
+         style="stroke-width:2px"
+         y="218.24219"
+         x="136.32812"
+         id="tspan1559-4"
+         sodipodi:role="line">8888</tspan></text>
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+       id="rect1563-9"
+       width="407.7037"
+       height="128"
+       x="139.85185"
+       y="95.40741"
+       onclick=""
+       inkscape:label="edit" />
+    <g
+       transform="translate(-416.52022,170.47452)"
+       inkscape:label="+&quot;dhu&quot;"
+       id="g1571-5"
+       style="stroke-width:2">
+      <path
+         style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+         inkscape:transform-center-y="-14.956361"
+         d="m 797.19546,145.18619 -80.62929,0.60214 -0.60215,-80.629288 80.6293,-0.60214 z"
+         id="path1565-0"
+         inkscape:connector-curvature="0" />
+      <text
+         xml:space="preserve"
+         style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         x="733.58197"
+         y="111.05016"
+         id="text1569-4"><tspan
+           sodipodi:role="line"
+           id="tspan1567-87"
+           x="733.58197"
+           y="111.05016"
+           style="stroke-width:1px">dhu</tspan></text>
+    </g>
+    <g
+       transform="translate(-416.52022,170.47452)"
+       inkscape:label="=&quot;plop&quot;"
+       id="g1579-1"
+       style="stroke-width:2">
+      <path
+         transform="matrix(0,-2.0000001,1.9999999,0,1034.195,1298.6541)"
+         sodipodi:type="star"
+         style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+         id="path1573-7"
+         sodipodi:sides="3"
+         sodipodi:cx="596.74072"
+         sodipodi:cy="-184.98808"
+         sodipodi:r1="29.912722"
+         sodipodi:r2="14.956361"
+         sodipodi:arg1="0.52359878"
+         sodipodi:arg2="1.5707963"
+         inkscape:flatsided="true"
+         inkscape:rounded="0"
+         inkscape:randomized="0"
+         d="m 622.6459,-170.03172 -51.81035,0 25.90517,-44.86908 z"
+         inkscape:transform-center-y="-3.6154501e-05"
+         inkscape:transform-center-x="14.956371" />
+      <text
+         id="text1577-2"
+         y="111.05016"
+         x="633.09552"
+         style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="stroke-width:1px"
+           y="111.05016"
+           x="633.09552"
+           id="tspan1575-7"
+           sodipodi:role="line">plop</tspan></text>
+    </g>
+    <g
+       transform="translate(-416.52022,170.47452)"
+       inkscape:label="=&quot;mhoo&quot;"
+       id="g1587-2"
+       style="stroke-width:2">
+      <path
+         inkscape:transform-center-y="-5.9989963e-06"
+         d="m 648.55108,-186.34718 -103.62071,0 51.81035,-89.73817 z"
+         inkscape:randomized="0"
+         inkscape:rounded="0"
+         inkscape:flatsided="true"
+         sodipodi:arg2="1.5707963"
+         sodipodi:arg1="0.52359878"
+         sodipodi:r2="29.912722"
+         sodipodi:r1="59.825443"
+         sodipodi:cy="-216.2599"
+         sodipodi:cx="596.74072"
+         sodipodi:sides="3"
+         id="path1581-2"
+         style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+         sodipodi:type="star"
+         transform="rotate(-90,746.45698,-44.543641)"
+         inkscape:transform-center-x="14.956364" />
+      <text
+         xml:space="preserve"
+         style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         x="537.25018"
+         y="111.05016"
+         id="text1585-6"><tspan
+           sodipodi:role="line"
+           id="tspan1583-1"
+           x="537.25018"
+           y="111.05016"
+           style="stroke-width:1px">mhoo</tspan></text>
+    </g>
+    <g
+       transform="translate(-416.52022,170.47452)"
+       inkscape:label="=&quot;yodl&quot;"
+       id="g1595-0"
+       style="stroke-width:2">
+      <path
+         sodipodi:type="star"
+         style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+         id="path1589-6"
+         sodipodi:sides="3"
+         sodipodi:cx="596.74072"
+         sodipodi:cy="105.17262"
+         sodipodi:r1="59.825443"
+         sodipodi:r2="29.912722"
+         sodipodi:arg1="0.52359878"
+         sodipodi:arg2="1.5707963"
+         inkscape:flatsided="true"
+         inkscape:rounded="0"
+         inkscape:randomized="0"
+         d="m 648.55108,135.08534 -103.62071,0 51.81035,-89.738161 z"
+         inkscape:transform-center-y="-5.5023185e-06"
+         transform="matrix(0,-1,-1,0,1043.9134,701.91334)"
+         inkscape:transform-center-x="-14.956365" />
+      <text
+         xml:space="preserve"
+         style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         x="925.82605"
+         y="111.05016"
+         id="text1593-1"><tspan
+           sodipodi:role="line"
+           id="tspan1591-5"
+           x="925.82605"
+           y="111.05016"
+           style="stroke-width:1px">yodl</tspan></text>
+    </g>
+    <g
+       transform="translate(-416.52022,170.47452)"
+       inkscape:label="=&quot;mhe&quot;"
+       id="g1603-9"
+       style="stroke-width:2">
+      <path
+         inkscape:transform-center-y="-3.3040441e-05"
+         d="m 622.6459,151.4008 -51.81035,0 25.90517,-44.86908 z"
+         inkscape:randomized="0"
+         inkscape:rounded="0"
+         inkscape:flatsided="true"
+         sodipodi:arg2="1.5707963"
+         sodipodi:arg1="0.52359878"
+         sodipodi:r2="14.956361"
+         sodipodi:r1="29.912722"
+         sodipodi:cy="136.44444"
+         sodipodi:cx="596.74072"
+         sodipodi:sides="3"
+         id="path1597-4"
+         style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+         sodipodi:type="star"
+         transform="matrix(0,-2.0000001,-1.9999999,0,1122.1514,1298.6541)"
+         inkscape:transform-center-x="-14.956349" />
+      <text
+         id="text1601-9"
+         y="111.05016"
+         x="842.71497"
+         style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="stroke-width:1px"
+           y="111.05016"
+           x="842.71497"
+           id="tspan1599-0"
+           sodipodi:role="line">mhe</tspan></text>
+    </g>
+  </g>
+  <text
+     id="text1609-9"
+     y="1277.5958"
+     x="115.62414"
+     style="font-style:normal;font-weight:normal;font-size:25.4761734px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#008000;fill-opacity:1;stroke:none;stroke-width:0.63690436px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     xml:space="preserve"
+     inkscape:label="actual_label"><tspan
+       y="1277.5958"
+       x="115.62414"
+       sodipodi:role="line"
+       style="stroke-width:0.63690436px"
+       id="tspan1611-1">PAGE_LOCAL variables</tspan></text>
+  <g
+     id="g2387"
+     inkscape:label="HMI:VariableInit:42@level" />
+  <g
+     inkscape:label="HMI:VariableInit:&quot;a string&quot;@paff"
+     id="g2389" />
 </svg>