diff --git a/NON-APPROVED/Cryo/ACCP/Coldbox/ColdCompressors/StaCtlCC.opi b/NON-APPROVED/Cryo/ACCP/Coldbox/ColdCompressors/StaCtlCC.opi index 0fd6ba102faea9d924ce52d1d314ca693017c1d0..bd7db0565d75f17d2417cd78a32a494e5adade3c 100644 --- a/NON-APPROVED/Cryo/ACCP/Coldbox/ColdCompressors/StaCtlCC.opi +++ b/NON-APPROVED/Cryo/ACCP/Coldbox/ColdCompressors/StaCtlCC.opi @@ -46,7 +46,7 @@ <border_width>0</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="10" style="0" pixels="false">Default</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="11" style="0" pixels="false">Default</opifont.name> </font> <foreground_color> <color red="192" green="192" blue="192" /> @@ -87,12 +87,12 @@ <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="8" style="0" pixels="false">Fine Print</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="9" style="0" pixels="false">Fine Print</opifont.name> </font> <foreground_color> <color red="0" green="0" blue="0" /> </foreground_color> - <height>13</height> + <height>11</height> <horizontal_alignment>1</horizontal_alignment> <name>Label_25</name> <rules /> @@ -108,7 +108,7 @@ <vertical_alignment>1</vertical_alignment> <visible>true</visible> <widget_type>Label</widget_type> - <width>9</width> + <width>7</width> <wrap_words>false</wrap_words> <wuid>-6323622a:160364c9d76:-7924</wuid> <x>709</x> @@ -126,7 +126,7 @@ <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="10" style="0" pixels="false">Default</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="11" style="0" pixels="false">Default</opifont.name> </font> <foreground_color> <color red="192" green="192" blue="192" /> @@ -167,7 +167,7 @@ <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="10" style="0" pixels="false">Default</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="11" style="0" pixels="false">Default</opifont.name> </font> <foreground_color> <color red="192" green="192" blue="192" /> @@ -208,7 +208,7 @@ <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="10" style="0" pixels="false">Default</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="11" style="0" pixels="false">Default</opifont.name> </font> <foreground_color> <color red="192" green="192" blue="192" /> @@ -261,7 +261,7 @@ </fg_gradient_color> <fill_level>0.0</fill_level> <font> - <opifont.name fontName="Sans" height="10" style="0" pixels="false">Default</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="11" style="0" pixels="false">Default</opifont.name> </font> <forecolor_alarm_sensitive>false</forecolor_alarm_sensitive> <foreground_color> @@ -308,7 +308,7 @@ $(pv_value)</tooltip> <enabled>true</enabled> <fc>false</fc> <font> - <opifont.name fontName="Sans" height="10" style="0" pixels="false">Default</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="11" style="0" pixels="false">Default</opifont.name> </font> <foreground_color> <color red="192" green="192" blue="192" /> @@ -329,7 +329,7 @@ $(pv_value)</tooltip> <show_scrollbar>false</show_scrollbar> <tooltip></tooltip> <transparent>true</transparent> - <visible>false</visible> + <visible>true</visible> <widget_type>Grouping Container</widget_type> <width>327</width> <wuid>2d631e1:16d4dc082aa:-7efb</wuid> @@ -356,7 +356,7 @@ $(pv_value)</tooltip> <flip_horizontal>false</flip_horizontal> <flip_vertical>false</flip_vertical> <font> - <opifont.name fontName="Sans" height="10" style="0" pixels="false">Default</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="11" style="0" pixels="false">Default</opifont.name> </font> <foreground_color> <color red="192" green="192" blue="192" /> @@ -405,12 +405,12 @@ $(pv_value)</tooltip> <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="8" style="0" pixels="false">Fine Print</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="9" style="0" pixels="false">Fine Print</opifont.name> </font> <foreground_color> <color red="0" green="0" blue="0" /> </foreground_color> - <height>13</height> + <height>11</height> <horizontal_alignment>1</horizontal_alignment> <name>Label</name> <rules /> @@ -426,7 +426,7 @@ $(pv_value)</tooltip> <vertical_alignment>1</vertical_alignment> <visible>true</visible> <widget_type>Label</widget_type> - <width>24</width> + <width>20</width> <wrap_words>false</wrap_words> <wuid>76fb053c:16021ac33de:-7cb8</wuid> <x>110</x> @@ -445,12 +445,12 @@ $(pv_value)</tooltip> <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="8" style="0" pixels="false">Fine Print</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="9" style="0" pixels="false">Fine Print</opifont.name> </font> <foreground_color> <color red="0" green="0" blue="0" /> </foreground_color> - <height>13</height> + <height>11</height> <horizontal_alignment>1</horizontal_alignment> <name>Label_1</name> <rules /> @@ -466,7 +466,7 @@ $(pv_value)</tooltip> <vertical_alignment>1</vertical_alignment> <visible>true</visible> <widget_type>Label</widget_type> - <width>24</width> + <width>20</width> <wrap_words>false</wrap_words> <wuid>76fb053c:16021ac33de:-7cb7</wuid> <x>220</x> @@ -485,12 +485,12 @@ $(pv_value)</tooltip> <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="8" style="0" pixels="false">Fine Print</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="9" style="0" pixels="false">Fine Print</opifont.name> </font> <foreground_color> <color red="0" green="0" blue="0" /> </foreground_color> - <height>13</height> + <height>11</height> <horizontal_alignment>1</horizontal_alignment> <name>Label_2</name> <rules /> @@ -506,7 +506,7 @@ $(pv_value)</tooltip> <vertical_alignment>1</vertical_alignment> <visible>true</visible> <widget_type>Label</widget_type> - <width>24</width> + <width>20</width> <wrap_words>false</wrap_words> <wuid>76fb053c:16021ac33de:-7cb6</wuid> <x>195</x> @@ -525,12 +525,12 @@ $(pv_value)</tooltip> <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="8" style="0" pixels="false">Fine Print</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="9" style="0" pixels="false">Fine Print</opifont.name> </font> <foreground_color> <color red="0" green="0" blue="0" /> </foreground_color> - <height>13</height> + <height>11</height> <horizontal_alignment>1</horizontal_alignment> <name>Label_3</name> <rules /> @@ -546,7 +546,7 @@ $(pv_value)</tooltip> <vertical_alignment>1</vertical_alignment> <visible>true</visible> <widget_type>Label</widget_type> - <width>24</width> + <width>20</width> <wrap_words>false</wrap_words> <wuid>76fb053c:16021ac33de:-7cb5</wuid> <x>170</x> @@ -565,12 +565,12 @@ $(pv_value)</tooltip> <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="8" style="0" pixels="false">Fine Print</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="9" style="0" pixels="false">Fine Print</opifont.name> </font> <foreground_color> <color red="0" green="0" blue="0" /> </foreground_color> - <height>13</height> + <height>11</height> <horizontal_alignment>1</horizontal_alignment> <name>Label_4</name> <rules /> @@ -586,7 +586,7 @@ $(pv_value)</tooltip> <vertical_alignment>1</vertical_alignment> <visible>true</visible> <widget_type>Label</widget_type> - <width>24</width> + <width>20</width> <wrap_words>false</wrap_words> <wuid>76fb053c:16021ac33de:-7cb4</wuid> <x>143</x> @@ -605,12 +605,12 @@ $(pv_value)</tooltip> <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="8" style="0" pixels="false">Fine Print</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="9" style="0" pixels="false">Fine Print</opifont.name> </font> <foreground_color> <color red="0" green="0" blue="0" /> </foreground_color> - <height>13</height> + <height>11</height> <horizontal_alignment>1</horizontal_alignment> <name>Label_6</name> <rules /> @@ -626,7 +626,7 @@ $(pv_value)</tooltip> <vertical_alignment>1</vertical_alignment> <visible>true</visible> <widget_type>Label</widget_type> - <width>31</width> + <width>26</width> <wrap_words>false</wrap_words> <wuid>76fb053c:16021ac33de:-7cb3</wuid> <x>295</x> @@ -645,12 +645,12 @@ $(pv_value)</tooltip> <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="8" style="0" pixels="false">Fine Print</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="9" style="0" pixels="false">Fine Print</opifont.name> </font> <foreground_color> <color red="0" green="0" blue="0" /> </foreground_color> - <height>13</height> + <height>11</height> <horizontal_alignment>1</horizontal_alignment> <name>Label_7</name> <rules /> @@ -666,7 +666,7 @@ $(pv_value)</tooltip> <vertical_alignment>1</vertical_alignment> <visible>true</visible> <widget_type>Label</widget_type> - <width>24</width> + <width>20</width> <wrap_words>false</wrap_words> <wuid>76fb053c:16021ac33de:-7cb2</wuid> <x>245</x> @@ -685,12 +685,12 @@ $(pv_value)</tooltip> <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="8" style="0" pixels="false">Fine Print</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="9" style="0" pixels="false">Fine Print</opifont.name> </font> <foreground_color> <color red="0" green="0" blue="0" /> </foreground_color> - <height>13</height> + <height>11</height> <horizontal_alignment>1</horizontal_alignment> <name>Label_8</name> <rules /> @@ -706,7 +706,7 @@ $(pv_value)</tooltip> <vertical_alignment>1</vertical_alignment> <visible>true</visible> <widget_type>Label</widget_type> - <width>31</width> + <width>26</width> <wrap_words>false</wrap_words> <wuid>76fb053c:16021ac33de:-7cb1</wuid> <x>268</x> @@ -725,12 +725,12 @@ $(pv_value)</tooltip> <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="8" style="0" pixels="false">Fine Print</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="9" style="0" pixels="false">Fine Print</opifont.name> </font> <foreground_color> <color red="0" green="0" blue="0" /> </foreground_color> - <height>13</height> + <height>11</height> <horizontal_alignment>1</horizontal_alignment> <name>Label_5</name> <rules /> @@ -746,7 +746,7 @@ $(pv_value)</tooltip> <vertical_alignment>1</vertical_alignment> <visible>true</visible> <widget_type>Label</widget_type> - <width>53</width> + <width>42</width> <wrap_words>false</wrap_words> <wuid>76fb053c:16021ac33de:-7cb0</wuid> <x>112</x> @@ -765,12 +765,12 @@ $(pv_value)</tooltip> <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="8" style="0" pixels="false">Fine Print</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="9" style="0" pixels="false">Fine Print</opifont.name> </font> <foreground_color> <color red="0" green="0" blue="0" /> </foreground_color> - <height>13</height> + <height>11</height> <horizontal_alignment>1</horizontal_alignment> <name>Label_9</name> <rules /> @@ -786,7 +786,7 @@ $(pv_value)</tooltip> <vertical_alignment>1</vertical_alignment> <visible>true</visible> <widget_type>Label</widget_type> - <width>9</width> + <width>7</width> <wrap_words>false</wrap_words> <wuid>76fb053c:16021ac33de:-7caf</wuid> <x>142</x> @@ -805,12 +805,12 @@ $(pv_value)</tooltip> <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="8" style="0" pixels="false">Fine Print</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="9" style="0" pixels="false">Fine Print</opifont.name> </font> <foreground_color> <color red="0" green="0" blue="0" /> </foreground_color> - <height>13</height> + <height>11</height> <horizontal_alignment>1</horizontal_alignment> <name>Label_10</name> <rules /> @@ -826,7 +826,7 @@ $(pv_value)</tooltip> <vertical_alignment>1</vertical_alignment> <visible>true</visible> <widget_type>Label</widget_type> - <width>22</width> + <width>19</width> <wrap_words>false</wrap_words> <wuid>76fb053c:16021ac33de:-7cae</wuid> <x>245</x> @@ -845,12 +845,12 @@ $(pv_value)</tooltip> <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="8" style="0" pixels="false">Fine Print</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="9" style="0" pixels="false">Fine Print</opifont.name> </font> <foreground_color> - <color name="Major" red="255" green="0" blue="0" /> + <color name="Major" red="250" green="12" blue="14" /> </foreground_color> - <height>13</height> + <height>11</height> <horizontal_alignment>1</horizontal_alignment> <name>Label_11</name> <rules /> @@ -866,7 +866,7 @@ $(pv_value)</tooltip> <vertical_alignment>1</vertical_alignment> <visible>true</visible> <widget_type>Label</widget_type> - <width>37</width> + <width>30</width> <wrap_words>false</wrap_words> <wuid>76fb053c:16021ac33de:-7cad</wuid> <x>236</x> @@ -885,12 +885,12 @@ $(pv_value)</tooltip> <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="8" style="0" pixels="false">Fine Print</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="9" style="0" pixels="false">Fine Print</opifont.name> </font> <foreground_color> <color red="0" green="0" blue="0" /> </foreground_color> - <height>13</height> + <height>11</height> <horizontal_alignment>1</horizontal_alignment> <name>Label_22</name> <rules /> @@ -906,7 +906,7 @@ $(pv_value)</tooltip> <vertical_alignment>1</vertical_alignment> <visible>true</visible> <widget_type>Label</widget_type> - <width>36</width> + <width>31</width> <wrap_words>false</wrap_words> <wuid>-6323622a:160364c9d76:-79fd</wuid> <x>149</x> @@ -925,12 +925,12 @@ $(pv_value)</tooltip> <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="8" style="0" pixels="false">Fine Print</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="9" style="0" pixels="false">Fine Print</opifont.name> </font> <foreground_color> <color red="0" green="0" blue="0" /> </foreground_color> - <height>13</height> + <height>11</height> <horizontal_alignment>1</horizontal_alignment> <name>Label_23</name> <rules /> @@ -946,7 +946,7 @@ $(pv_value)</tooltip> <vertical_alignment>1</vertical_alignment> <visible>true</visible> <widget_type>Label</widget_type> - <width>9</width> + <width>7</width> <wrap_words>false</wrap_words> <wuid>2d631e1:16d4dc082aa:-7d75</wuid> <x>0</x> @@ -965,12 +965,12 @@ $(pv_value)</tooltip> <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="8" style="0" pixels="false">Fine Print</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="9" style="0" pixels="false">Fine Print</opifont.name> </font> <foreground_color> - <color name="Major" red="255" green="0" blue="0" /> + <color name="Major" red="250" green="12" blue="14" /> </foreground_color> - <height>13</height> + <height>11</height> <horizontal_alignment>1</horizontal_alignment> <name>Label_24</name> <rules /> @@ -986,7 +986,7 @@ $(pv_value)</tooltip> <vertical_alignment>1</vertical_alignment> <visible>true</visible> <widget_type>Label</widget_type> - <width>9</width> + <width>7</width> <wrap_words>false</wrap_words> <wuid>2d631e1:16d4dc082aa:-7d74</wuid> <x>0</x> @@ -1014,7 +1014,7 @@ $(pv_value)</tooltip> <flip_horizontal>false</flip_horizontal> <flip_vertical>false</flip_vertical> <font> - <opifont.name fontName="Sans" height="10" style="0" pixels="false">Default</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="11" style="0" pixels="false">Default</opifont.name> </font> <foreground_color> <color red="192" green="192" blue="192" /> @@ -1043,7 +1043,7 @@ $(pv_value)</tooltip> <stretch_to_fit>false</stretch_to_fit> <tooltip></tooltip> <transparency>false</transparency> - <visible>true</visible> + <visible>false</visible> <widget_type>Image</widget_type> <width>338</width> <wuid>-2a0eece9:16d5ca0f998:-7cb2</wuid> @@ -1064,16 +1064,16 @@ $(pv_value)</tooltip> <color red="200" green="200" blue="200" /> </axis_0_grid_color> <axis_0_log_scale>false</axis_0_log_scale> - <axis_0_maximum>1.3</axis_0_maximum> + <axis_0_maximum>1.2</axis_0_maximum> <axis_0_minimum>0.2</axis_0_minimum> <axis_0_scale_font> - <opifont.name fontName="Sans" height="10" style="0" pixels="false">Default</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="11" style="0" pixels="false">Default</opifont.name> </axis_0_scale_font> <axis_0_scale_format></axis_0_scale_format> <axis_0_show_grid>true</axis_0_show_grid> <axis_0_time_format>0</axis_0_time_format> <axis_0_title_font> - <opifont.name fontName="Sans" height="10" style="1" pixels="false">Default Bold</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="11" style="1" pixels="false">Default Bold</opifont.name> </axis_0_title_font> <axis_0_visible>true</axis_0_visible> <axis_1_auto_scale>false</axis_1_auto_scale> @@ -1087,16 +1087,16 @@ $(pv_value)</tooltip> <color red="200" green="200" blue="200" /> </axis_1_grid_color> <axis_1_log_scale>false</axis_1_log_scale> - <axis_1_maximum>5.4</axis_1_maximum> - <axis_1_minimum>0.7</axis_1_minimum> + <axis_1_maximum>5.0</axis_1_maximum> + <axis_1_minimum>1.0</axis_1_minimum> <axis_1_scale_font> - <opifont.name fontName="Sans" height="10" style="0" pixels="false">Default</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="11" style="0" pixels="false">Default</opifont.name> </axis_1_scale_font> <axis_1_scale_format>0.0</axis_1_scale_format> <axis_1_show_grid>true</axis_1_show_grid> <axis_1_time_format>0</axis_1_time_format> <axis_1_title_font> - <opifont.name fontName="Sans" height="10" style="1" pixels="false">Default Bold</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="11" style="1" pixels="false">Default Bold</opifont.name> </axis_1_title_font> <axis_1_visible>true</axis_1_visible> <axis_count>2</axis_count> @@ -1134,7 +1134,7 @@ $(pv_value)</tooltip> <show_toolbar>false</show_toolbar> <title>C34700</title> <title_font> - <opifont.name fontName="Sans" height="10" style="1" pixels="false">Default Bold</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="11" style="1" pixels="false">Default Bold</opifont.name> </title_font> <tooltip>$(trace_0_y_pv) $(trace_0_y_pv_value)</tooltip> @@ -1194,7 +1194,7 @@ $(trace_0_y_pv_value)</tooltip> </fg_gradient_color> <fill_level>0.0</fill_level> <font> - <opifont.name fontName="Sans" height="10" style="0" pixels="false">Default</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="11" style="0" pixels="false">Default</opifont.name> </font> <forecolor_alarm_sensitive>false</forecolor_alarm_sensitive> <foreground_color> @@ -1241,7 +1241,7 @@ $(pv_value)</tooltip> <enabled>true</enabled> <fc>false</fc> <font> - <opifont.name fontName="Sans" height="10" style="0" pixels="false">Default</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="11" style="0" pixels="false">Default</opifont.name> </font> <foreground_color> <color red="192" green="192" blue="192" /> @@ -1262,7 +1262,7 @@ $(pv_value)</tooltip> <show_scrollbar>false</show_scrollbar> <tooltip></tooltip> <transparent>false</transparent> - <visible>false</visible> + <visible>true</visible> <widget_type>Grouping Container</widget_type> <width>327</width> <wuid>2d631e1:16d4dc082aa:-7d72</wuid> @@ -1289,7 +1289,7 @@ $(pv_value)</tooltip> <flip_horizontal>false</flip_horizontal> <flip_vertical>false</flip_vertical> <font> - <opifont.name fontName="Sans" height="10" style="0" pixels="false">Default</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="11" style="0" pixels="false">Default</opifont.name> </font> <foreground_color> <color red="192" green="192" blue="192" /> @@ -1338,12 +1338,12 @@ $(pv_value)</tooltip> <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="8" style="0" pixels="false">Fine Print</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="9" style="0" pixels="false">Fine Print</opifont.name> </font> <foreground_color> <color red="0" green="0" blue="0" /> </foreground_color> - <height>13</height> + <height>11</height> <horizontal_alignment>1</horizontal_alignment> <name>Label</name> <rules /> @@ -1359,7 +1359,7 @@ $(pv_value)</tooltip> <vertical_alignment>1</vertical_alignment> <visible>true</visible> <widget_type>Label</widget_type> - <width>24</width> + <width>20</width> <wrap_words>false</wrap_words> <wuid>76fb053c:16021ac33de:-77b5</wuid> <x>118</x> @@ -1378,12 +1378,12 @@ $(pv_value)</tooltip> <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="8" style="0" pixels="false">Fine Print</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="9" style="0" pixels="false">Fine Print</opifont.name> </font> <foreground_color> <color red="0" green="0" blue="0" /> </foreground_color> - <height>13</height> + <height>11</height> <horizontal_alignment>1</horizontal_alignment> <name>Label_1</name> <rules /> @@ -1399,7 +1399,7 @@ $(pv_value)</tooltip> <vertical_alignment>1</vertical_alignment> <visible>true</visible> <widget_type>Label</widget_type> - <width>24</width> + <width>20</width> <wrap_words>false</wrap_words> <wuid>76fb053c:16021ac33de:-77b4</wuid> <x>233</x> @@ -1418,12 +1418,12 @@ $(pv_value)</tooltip> <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="8" style="0" pixels="false">Fine Print</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="9" style="0" pixels="false">Fine Print</opifont.name> </font> <foreground_color> <color red="0" green="0" blue="0" /> </foreground_color> - <height>13</height> + <height>11</height> <horizontal_alignment>1</horizontal_alignment> <name>Label_2</name> <rules /> @@ -1439,7 +1439,7 @@ $(pv_value)</tooltip> <vertical_alignment>1</vertical_alignment> <visible>true</visible> <widget_type>Label</widget_type> - <width>24</width> + <width>20</width> <wrap_words>false</wrap_words> <wuid>76fb053c:16021ac33de:-77b3</wuid> <x>203</x> @@ -1458,12 +1458,12 @@ $(pv_value)</tooltip> <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="8" style="0" pixels="false">Fine Print</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="9" style="0" pixels="false">Fine Print</opifont.name> </font> <foreground_color> <color red="0" green="0" blue="0" /> </foreground_color> - <height>13</height> + <height>11</height> <horizontal_alignment>1</horizontal_alignment> <name>Label_3</name> <rules /> @@ -1479,7 +1479,7 @@ $(pv_value)</tooltip> <vertical_alignment>1</vertical_alignment> <visible>true</visible> <widget_type>Label</widget_type> - <width>24</width> + <width>20</width> <wrap_words>false</wrap_words> <wuid>76fb053c:16021ac33de:-77b2</wuid> <x>178</x> @@ -1498,12 +1498,12 @@ $(pv_value)</tooltip> <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="8" style="0" pixels="false">Fine Print</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="9" style="0" pixels="false">Fine Print</opifont.name> </font> <foreground_color> <color red="0" green="0" blue="0" /> </foreground_color> - <height>13</height> + <height>11</height> <horizontal_alignment>1</horizontal_alignment> <name>Label_4</name> <rules /> @@ -1519,7 +1519,7 @@ $(pv_value)</tooltip> <vertical_alignment>1</vertical_alignment> <visible>true</visible> <widget_type>Label</widget_type> - <width>24</width> + <width>20</width> <wrap_words>false</wrap_words> <wuid>76fb053c:16021ac33de:-77b1</wuid> <x>153</x> @@ -1538,12 +1538,12 @@ $(pv_value)</tooltip> <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="8" style="0" pixels="false">Fine Print</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="9" style="0" pixels="false">Fine Print</opifont.name> </font> <foreground_color> <color red="0" green="0" blue="0" /> </foreground_color> - <height>13</height> + <height>11</height> <horizontal_alignment>1</horizontal_alignment> <name>Label_6</name> <rules /> @@ -1559,7 +1559,7 @@ $(pv_value)</tooltip> <vertical_alignment>1</vertical_alignment> <visible>true</visible> <widget_type>Label</widget_type> - <width>31</width> + <width>26</width> <wrap_words>false</wrap_words> <wuid>76fb053c:16021ac33de:-77b0</wuid> <x>298</x> @@ -1578,12 +1578,12 @@ $(pv_value)</tooltip> <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="8" style="0" pixels="false">Fine Print</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="9" style="0" pixels="false">Fine Print</opifont.name> </font> <foreground_color> <color red="0" green="0" blue="0" /> </foreground_color> - <height>13</height> + <height>11</height> <horizontal_alignment>1</horizontal_alignment> <name>Label_7</name> <rules /> @@ -1599,7 +1599,7 @@ $(pv_value)</tooltip> <vertical_alignment>1</vertical_alignment> <visible>true</visible> <widget_type>Label</widget_type> - <width>24</width> + <width>20</width> <wrap_words>false</wrap_words> <wuid>76fb053c:16021ac33de:-77af</wuid> <x>256</x> @@ -1618,12 +1618,12 @@ $(pv_value)</tooltip> <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="8" style="0" pixels="false">Fine Print</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="9" style="0" pixels="false">Fine Print</opifont.name> </font> <foreground_color> <color red="0" green="0" blue="0" /> </foreground_color> - <height>13</height> + <height>11</height> <horizontal_alignment>1</horizontal_alignment> <name>Label_8</name> <rules /> @@ -1639,7 +1639,7 @@ $(pv_value)</tooltip> <vertical_alignment>1</vertical_alignment> <visible>true</visible> <widget_type>Label</widget_type> - <width>31</width> + <width>26</width> <wrap_words>false</wrap_words> <wuid>76fb053c:16021ac33de:-77ae</wuid> <x>273</x> @@ -1658,12 +1658,12 @@ $(pv_value)</tooltip> <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="8" style="0" pixels="false">Fine Print</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="9" style="0" pixels="false">Fine Print</opifont.name> </font> <foreground_color> <color red="0" green="0" blue="0" /> </foreground_color> - <height>13</height> + <height>11</height> <horizontal_alignment>1</horizontal_alignment> <name>Label_5</name> <rules /> @@ -1679,7 +1679,7 @@ $(pv_value)</tooltip> <vertical_alignment>1</vertical_alignment> <visible>true</visible> <widget_type>Label</widget_type> - <width>36</width> + <width>31</width> <wrap_words>false</wrap_words> <wuid>76fb053c:16021ac33de:-77ad</wuid> <x>218</x> @@ -1698,12 +1698,12 @@ $(pv_value)</tooltip> <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="8" style="0" pixels="false">Fine Print</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="9" style="0" pixels="false">Fine Print</opifont.name> </font> <foreground_color> <color red="0" green="0" blue="0" /> </foreground_color> - <height>13</height> + <height>11</height> <horizontal_alignment>1</horizontal_alignment> <name>Label_9</name> <rules /> @@ -1719,7 +1719,7 @@ $(pv_value)</tooltip> <vertical_alignment>1</vertical_alignment> <visible>true</visible> <widget_type>Label</widget_type> - <width>36</width> + <width>31</width> <wrap_words>false</wrap_words> <wuid>76fb053c:16021ac33de:-77ac</wuid> <x>236</x> @@ -1738,12 +1738,12 @@ $(pv_value)</tooltip> <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="8" style="0" pixels="false">Fine Print</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="9" style="0" pixels="false">Fine Print</opifont.name> </font> <foreground_color> <color red="0" green="0" blue="0" /> </foreground_color> - <height>13</height> + <height>11</height> <horizontal_alignment>1</horizontal_alignment> <name>Label_10</name> <rules /> @@ -1759,7 +1759,7 @@ $(pv_value)</tooltip> <vertical_alignment>1</vertical_alignment> <visible>true</visible> <widget_type>Label</widget_type> - <width>22</width> + <width>19</width> <wrap_words>false</wrap_words> <wuid>76fb053c:16021ac33de:-77ab</wuid> <x>234</x> @@ -1778,12 +1778,12 @@ $(pv_value)</tooltip> <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="8" style="0" pixels="false">Fine Print</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="9" style="0" pixels="false">Fine Print</opifont.name> </font> <foreground_color> - <color name="Major" red="255" green="0" blue="0" /> + <color name="Major" red="250" green="12" blue="14" /> </foreground_color> - <height>13</height> + <height>11</height> <horizontal_alignment>1</horizontal_alignment> <name>Label_11</name> <rules /> @@ -1799,7 +1799,7 @@ $(pv_value)</tooltip> <vertical_alignment>1</vertical_alignment> <visible>true</visible> <widget_type>Label</widget_type> - <width>37</width> + <width>30</width> <wrap_words>false</wrap_words> <wuid>76fb053c:16021ac33de:-77aa</wuid> <x>268</x> @@ -1818,12 +1818,12 @@ $(pv_value)</tooltip> <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="8" style="0" pixels="false">Fine Print</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="9" style="0" pixels="false">Fine Print</opifont.name> </font> <foreground_color> <color red="0" green="0" blue="0" /> </foreground_color> - <height>13</height> + <height>11</height> <horizontal_alignment>1</horizontal_alignment> <name>Label_24</name> <rules /> @@ -1839,7 +1839,7 @@ $(pv_value)</tooltip> <vertical_alignment>1</vertical_alignment> <visible>true</visible> <widget_type>Label</widget_type> - <width>9</width> + <width>7</width> <wrap_words>false</wrap_words> <wuid>-6323622a:160364c9d76:-7929</wuid> <x>214</x> @@ -1867,7 +1867,7 @@ $(pv_value)</tooltip> <flip_horizontal>false</flip_horizontal> <flip_vertical>false</flip_vertical> <font> - <opifont.name fontName="Sans" height="10" style="0" pixels="false">Default</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="11" style="0" pixels="false">Default</opifont.name> </font> <foreground_color> <color red="192" green="192" blue="192" /> @@ -1896,7 +1896,7 @@ $(pv_value)</tooltip> <stretch_to_fit>false</stretch_to_fit> <tooltip></tooltip> <transparency>false</transparency> - <visible>true</visible> + <visible>false</visible> <widget_type>Image</widget_type> <width>338</width> <wuid>-2a0eece9:16d5ca0f998:-77b8</wuid> @@ -1917,16 +1917,16 @@ $(pv_value)</tooltip> <color red="200" green="200" blue="200" /> </axis_0_grid_color> <axis_0_log_scale>false</axis_0_log_scale> - <axis_0_maximum>1.3</axis_0_maximum> + <axis_0_maximum>1.2</axis_0_maximum> <axis_0_minimum>0.2</axis_0_minimum> <axis_0_scale_font> - <opifont.name fontName="Sans" height="10" style="0" pixels="false">Default</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="11" style="0" pixels="false">Default</opifont.name> </axis_0_scale_font> <axis_0_scale_format></axis_0_scale_format> <axis_0_show_grid>true</axis_0_show_grid> <axis_0_time_format>0</axis_0_time_format> <axis_0_title_font> - <opifont.name fontName="Sans" height="10" style="1" pixels="false">Default Bold</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="11" style="1" pixels="false">Default Bold</opifont.name> </axis_0_title_font> <axis_0_visible>true</axis_0_visible> <axis_1_auto_scale>false</axis_1_auto_scale> @@ -1940,16 +1940,16 @@ $(pv_value)</tooltip> <color red="200" green="200" blue="200" /> </axis_1_grid_color> <axis_1_log_scale>false</axis_1_log_scale> - <axis_1_maximum>4.3</axis_1_maximum> - <axis_1_minimum>0.6</axis_1_minimum> + <axis_1_maximum>4.0</axis_1_maximum> + <axis_1_minimum>1.0</axis_1_minimum> <axis_1_scale_font> - <opifont.name fontName="Sans" height="10" style="0" pixels="false">Default</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="11" style="0" pixels="false">Default</opifont.name> </axis_1_scale_font> <axis_1_scale_format>0.0</axis_1_scale_format> <axis_1_show_grid>true</axis_1_show_grid> <axis_1_time_format>0</axis_1_time_format> <axis_1_title_font> - <opifont.name fontName="Sans" height="10" style="1" pixels="false">Default Bold</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="11" style="1" pixels="false">Default Bold</opifont.name> </axis_1_title_font> <axis_1_visible>true</axis_1_visible> <axis_count>2</axis_count> @@ -1987,7 +1987,7 @@ $(pv_value)</tooltip> <show_toolbar>false</show_toolbar> <title>C34800</title> <title_font> - <opifont.name fontName="Sans" height="10" style="1" pixels="false">Default Bold</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="11" style="1" pixels="false">Default Bold</opifont.name> </title_font> <tooltip>$(trace_0_y_pv) $(trace_0_y_pv_value)</tooltip> @@ -2047,7 +2047,7 @@ $(trace_0_y_pv_value)</tooltip> </fg_gradient_color> <fill_level>0.0</fill_level> <font> - <opifont.name fontName="Sans" height="10" style="0" pixels="false">Default</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="11" style="0" pixels="false">Default</opifont.name> </font> <forecolor_alarm_sensitive>false</forecolor_alarm_sensitive> <foreground_color> @@ -2094,7 +2094,7 @@ $(pv_value)</tooltip> <enabled>true</enabled> <fc>false</fc> <font> - <opifont.name fontName="Sans" height="10" style="0" pixels="false">Default</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="11" style="0" pixels="false">Default</opifont.name> </font> <foreground_color> <color red="192" green="192" blue="192" /> @@ -2115,7 +2115,7 @@ $(pv_value)</tooltip> <show_scrollbar>false</show_scrollbar> <tooltip></tooltip> <transparent>true</transparent> - <visible>false</visible> + <visible>true</visible> <widget_type>Grouping Container</widget_type> <width>329</width> <wuid>2d631e1:16d4dc082aa:-7df7</wuid> @@ -2142,7 +2142,7 @@ $(pv_value)</tooltip> <flip_horizontal>false</flip_horizontal> <flip_vertical>false</flip_vertical> <font> - <opifont.name fontName="Sans" height="10" style="0" pixels="false">Default</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="11" style="0" pixels="false">Default</opifont.name> </font> <foreground_color> <color red="192" green="192" blue="192" /> @@ -2191,12 +2191,12 @@ $(pv_value)</tooltip> <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="8" style="0" pixels="false">Fine Print</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="9" style="0" pixels="false">Fine Print</opifont.name> </font> <foreground_color> <color red="0" green="0" blue="0" /> </foreground_color> - <height>13</height> + <height>11</height> <horizontal_alignment>1</horizontal_alignment> <name>Label_5</name> <rules /> @@ -2212,7 +2212,7 @@ $(pv_value)</tooltip> <vertical_alignment>1</vertical_alignment> <visible>true</visible> <widget_type>Label</widget_type> - <width>36</width> + <width>31</width> <wrap_words>false</wrap_words> <wuid>76fb053c:16021ac33de:-753c</wuid> <x>208</x> @@ -2231,12 +2231,12 @@ $(pv_value)</tooltip> <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="8" style="0" pixels="false">Fine Print</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="9" style="0" pixels="false">Fine Print</opifont.name> </font> <foreground_color> <color red="0" green="0" blue="0" /> </foreground_color> - <height>13</height> + <height>11</height> <horizontal_alignment>1</horizontal_alignment> <name>Label_9</name> <rules /> @@ -2252,7 +2252,7 @@ $(pv_value)</tooltip> <vertical_alignment>1</vertical_alignment> <visible>true</visible> <widget_type>Label</widget_type> - <width>36</width> + <width>31</width> <wrap_words>false</wrap_words> <wuid>76fb053c:16021ac33de:-753b</wuid> <x>248</x> @@ -2271,12 +2271,12 @@ $(pv_value)</tooltip> <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="8" style="0" pixels="false">Fine Print</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="9" style="0" pixels="false">Fine Print</opifont.name> </font> <foreground_color> <color red="0" green="0" blue="0" /> </foreground_color> - <height>13</height> + <height>11</height> <horizontal_alignment>1</horizontal_alignment> <name>Label_10</name> <rules /> @@ -2292,7 +2292,7 @@ $(pv_value)</tooltip> <vertical_alignment>1</vertical_alignment> <visible>true</visible> <widget_type>Label</widget_type> - <width>22</width> + <width>19</width> <wrap_words>false</wrap_words> <wuid>76fb053c:16021ac33de:-753a</wuid> <x>238</x> @@ -2311,12 +2311,12 @@ $(pv_value)</tooltip> <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="8" style="0" pixels="false">Fine Print</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="9" style="0" pixels="false">Fine Print</opifont.name> </font> <foreground_color> - <color name="Major" red="255" green="0" blue="0" /> + <color name="Major" red="250" green="12" blue="14" /> </foreground_color> - <height>13</height> + <height>11</height> <horizontal_alignment>1</horizontal_alignment> <name>Label_11</name> <rules /> @@ -2332,7 +2332,7 @@ $(pv_value)</tooltip> <vertical_alignment>1</vertical_alignment> <visible>true</visible> <widget_type>Label</widget_type> - <width>37</width> + <width>30</width> <wrap_words>false</wrap_words> <wuid>76fb053c:16021ac33de:-7539</wuid> <x>264</x> @@ -2351,12 +2351,12 @@ $(pv_value)</tooltip> <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="8" style="0" pixels="false">Fine Print</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="9" style="0" pixels="false">Fine Print</opifont.name> </font> <foreground_color> <color red="0" green="0" blue="0" /> </foreground_color> - <height>13</height> + <height>11</height> <horizontal_alignment>1</horizontal_alignment> <name>Label</name> <rules /> @@ -2372,7 +2372,7 @@ $(pv_value)</tooltip> <vertical_alignment>1</vertical_alignment> <visible>true</visible> <widget_type>Label</widget_type> - <width>24</width> + <width>20</width> <wrap_words>false</wrap_words> <wuid>76fb053c:16021ac33de:-7538</wuid> <x>141</x> @@ -2391,12 +2391,12 @@ $(pv_value)</tooltip> <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="8" style="0" pixels="false">Fine Print</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="9" style="0" pixels="false">Fine Print</opifont.name> </font> <foreground_color> <color red="0" green="0" blue="0" /> </foreground_color> - <height>13</height> + <height>11</height> <horizontal_alignment>1</horizontal_alignment> <name>Label_1</name> <rules /> @@ -2412,7 +2412,7 @@ $(pv_value)</tooltip> <vertical_alignment>1</vertical_alignment> <visible>true</visible> <widget_type>Label</widget_type> - <width>24</width> + <width>20</width> <wrap_words>false</wrap_words> <wuid>76fb053c:16021ac33de:-7537</wuid> <x>248</x> @@ -2431,12 +2431,12 @@ $(pv_value)</tooltip> <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="8" style="0" pixels="false">Fine Print</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="9" style="0" pixels="false">Fine Print</opifont.name> </font> <foreground_color> <color red="0" green="0" blue="0" /> </foreground_color> - <height>13</height> + <height>11</height> <horizontal_alignment>1</horizontal_alignment> <name>Label_2</name> <rules /> @@ -2452,7 +2452,7 @@ $(pv_value)</tooltip> <vertical_alignment>1</vertical_alignment> <visible>true</visible> <widget_type>Label</widget_type> - <width>24</width> + <width>20</width> <wrap_words>false</wrap_words> <wuid>76fb053c:16021ac33de:-7536</wuid> <x>221</x> @@ -2471,12 +2471,12 @@ $(pv_value)</tooltip> <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="8" style="0" pixels="false">Fine Print</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="9" style="0" pixels="false">Fine Print</opifont.name> </font> <foreground_color> <color red="0" green="0" blue="0" /> </foreground_color> - <height>13</height> + <height>11</height> <horizontal_alignment>1</horizontal_alignment> <name>Label_3</name> <rules /> @@ -2492,7 +2492,7 @@ $(pv_value)</tooltip> <vertical_alignment>1</vertical_alignment> <visible>true</visible> <widget_type>Label</widget_type> - <width>24</width> + <width>20</width> <wrap_words>false</wrap_words> <wuid>76fb053c:16021ac33de:-7535</wuid> <x>200</x> @@ -2511,12 +2511,12 @@ $(pv_value)</tooltip> <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="8" style="0" pixels="false">Fine Print</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="9" style="0" pixels="false">Fine Print</opifont.name> </font> <foreground_color> <color red="0" green="0" blue="0" /> </foreground_color> - <height>13</height> + <height>11</height> <horizontal_alignment>1</horizontal_alignment> <name>Label_4</name> <rules /> @@ -2532,7 +2532,7 @@ $(pv_value)</tooltip> <vertical_alignment>1</vertical_alignment> <visible>true</visible> <widget_type>Label</widget_type> - <width>24</width> + <width>20</width> <wrap_words>false</wrap_words> <wuid>76fb053c:16021ac33de:-7534</wuid> <x>178</x> @@ -2551,12 +2551,12 @@ $(pv_value)</tooltip> <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="8" style="0" pixels="false">Fine Print</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="9" style="0" pixels="false">Fine Print</opifont.name> </font> <foreground_color> <color red="0" green="0" blue="0" /> </foreground_color> - <height>13</height> + <height>11</height> <horizontal_alignment>1</horizontal_alignment> <name>Label_6</name> <rules /> @@ -2572,7 +2572,7 @@ $(pv_value)</tooltip> <vertical_alignment>1</vertical_alignment> <visible>true</visible> <widget_type>Label</widget_type> - <width>31</width> + <width>26</width> <wrap_words>false</wrap_words> <wuid>76fb053c:16021ac33de:-7533</wuid> <x>303</x> @@ -2591,12 +2591,12 @@ $(pv_value)</tooltip> <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="8" style="0" pixels="false">Fine Print</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="9" style="0" pixels="false">Fine Print</opifont.name> </font> <foreground_color> <color red="0" green="0" blue="0" /> </foreground_color> - <height>13</height> + <height>11</height> <horizontal_alignment>1</horizontal_alignment> <name>Label_7</name> <rules /> @@ -2612,7 +2612,7 @@ $(pv_value)</tooltip> <vertical_alignment>1</vertical_alignment> <visible>true</visible> <widget_type>Label</widget_type> - <width>24</width> + <width>20</width> <wrap_words>false</wrap_words> <wuid>76fb053c:16021ac33de:-7532</wuid> <x>280</x> @@ -2631,12 +2631,12 @@ $(pv_value)</tooltip> <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="8" style="0" pixels="false">Fine Print</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="9" style="0" pixels="false">Fine Print</opifont.name> </font> <foreground_color> <color red="0" green="0" blue="0" /> </foreground_color> - <height>13</height> + <height>11</height> <horizontal_alignment>1</horizontal_alignment> <name>Label_8</name> <rules /> @@ -2652,7 +2652,7 @@ $(pv_value)</tooltip> <vertical_alignment>1</vertical_alignment> <visible>true</visible> <widget_type>Label</widget_type> - <width>31</width> + <width>26</width> <wrap_words>false</wrap_words> <wuid>76fb053c:16021ac33de:-7531</wuid> <x>298</x> @@ -2680,7 +2680,7 @@ $(pv_value)</tooltip> <flip_horizontal>false</flip_horizontal> <flip_vertical>false</flip_vertical> <font> - <opifont.name fontName="Sans" height="10" style="0" pixels="false">Default</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="11" style="0" pixels="false">Default</opifont.name> </font> <foreground_color> <color red="192" green="192" blue="192" /> @@ -2709,7 +2709,7 @@ $(pv_value)</tooltip> <stretch_to_fit>false</stretch_to_fit> <tooltip></tooltip> <transparency>false</transparency> - <visible>true</visible> + <visible>false</visible> <widget_type>Image</widget_type> <width>338</width> <wuid>-2a0eece9:16d5ca0f998:-76ee</wuid> @@ -2730,16 +2730,16 @@ $(pv_value)</tooltip> <color red="200" green="200" blue="200" /> </axis_0_grid_color> <axis_0_log_scale>false</axis_0_log_scale> - <axis_0_maximum>1.3</axis_0_maximum> + <axis_0_maximum>1.2</axis_0_maximum> <axis_0_minimum>0.2</axis_0_minimum> <axis_0_scale_font> - <opifont.name fontName="Sans" height="10" style="0" pixels="false">Default</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="11" style="0" pixels="false">Default</opifont.name> </axis_0_scale_font> <axis_0_scale_format></axis_0_scale_format> <axis_0_show_grid>true</axis_0_show_grid> <axis_0_time_format>0</axis_0_time_format> <axis_0_title_font> - <opifont.name fontName="Sans" height="10" style="1" pixels="false">Default Bold</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="11" style="1" pixels="false">Default Bold</opifont.name> </axis_0_title_font> <axis_0_visible>true</axis_0_visible> <axis_1_auto_scale>false</axis_1_auto_scale> @@ -2753,16 +2753,16 @@ $(pv_value)</tooltip> <color red="200" green="200" blue="200" /> </axis_1_grid_color> <axis_1_log_scale>false</axis_1_log_scale> - <axis_1_maximum>2.35</axis_1_maximum> + <axis_1_maximum>2.3</axis_1_maximum> <axis_1_minimum>0.8</axis_1_minimum> <axis_1_scale_font> - <opifont.name fontName="Sans" height="10" style="0" pixels="false">Default</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="11" style="0" pixels="false">Default</opifont.name> </axis_1_scale_font> <axis_1_scale_format>0.0</axis_1_scale_format> <axis_1_show_grid>true</axis_1_show_grid> <axis_1_time_format>0</axis_1_time_format> <axis_1_title_font> - <opifont.name fontName="Sans" height="10" style="1" pixels="false">Default Bold</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="11" style="1" pixels="false">Default Bold</opifont.name> </axis_1_title_font> <axis_1_visible>true</axis_1_visible> <axis_count>2</axis_count> @@ -2800,7 +2800,7 @@ $(pv_value)</tooltip> <show_toolbar>false</show_toolbar> <title>C34900</title> <title_font> - <opifont.name fontName="Sans" height="10" style="1" pixels="false">Default Bold</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="11" style="1" pixels="false">Default Bold</opifont.name> </title_font> <tooltip>$(trace_0_y_pv) $(trace_0_y_pv_value)</tooltip> @@ -2849,12 +2849,12 @@ $(trace_0_y_pv_value)</tooltip> <border_width>1</border_width> <enabled>true</enabled> <font> - <opifont.name fontName="Sans" height="10" style="0" pixels="false">Default</opifont.name> + <opifont.name fontName=".AppleSystemUIFont" height="11" style="0" pixels="false">Default</opifont.name> </font> <foreground_color> <color red="0" green="0" blue="0" /> </foreground_color> - <height>238</height> + <height>182</height> <horizontal_alignment>1</horizontal_alignment> <name>Label</name> <rules /> @@ -2883,7 +2883,7 @@ S2: 1.0 > 2.3 / 0.2 > 1.3 <vertical_alignment>1</vertical_alignment> <visible>false</visible> <widget_type>Label</widget_type> - <width>154</width> + <width>129</width> <wrap_words>false</wrap_words> <wuid>-2a0eece9:16d5ca0f998:-7a4a</wuid> <x>26</x> diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/CMS_OPI_MASTER.zip b/NON-APPROVED/Cryo/CMS_OPI_MASTER/CMS_OPI_MASTER.zip deleted file mode 100644 index dc23df773d8272c5656711ed35e9468a91767b2c..0000000000000000000000000000000000000000 Binary files a/NON-APPROVED/Cryo/CMS_OPI_MASTER/CMS_OPI_MASTER.zip and /dev/null differ diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/Diagnostics/Connection.bob b/NON-APPROVED/Cryo/CMS_OPI_MASTER/Diagnostics/Connection.bob old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/Diagnostics/Connection_v02.bob b/NON-APPROVED/Cryo/CMS_OPI_MASTER/Diagnostics/Connection_v02.bob old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/Diagnostics/DiagState.bob b/NON-APPROVED/Cryo/CMS_OPI_MASTER/Diagnostics/DiagState.bob old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/Diagnostics/maintenance.bob b/NON-APPROVED/Cryo/CMS_OPI_MASTER/Diagnostics/maintenance.bob old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/OPI/CMS_ColdBox.bob b/NON-APPROVED/Cryo/CMS_OPI_MASTER/OPI/CMS_ColdBox.bob old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/OPI/CMS_DistributionBox_MRPlug.bob b/NON-APPROVED/Cryo/CMS_OPI_MASTER/OPI/CMS_DistributionBox_MRPlug.bob old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/OPI/CMS_EquipmentCooling.bob b/NON-APPROVED/Cryo/CMS_OPI_MASTER/OPI/CMS_EquipmentCooling.bob old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/OPI/CMS_GasManagementPanel.bob b/NON-APPROVED/Cryo/CMS_OPI_MASTER/OPI/CMS_GasManagementPanel.bob old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/OPI/CMS_Home.bob b/NON-APPROVED/Cryo/CMS_OPI_MASTER/OPI/CMS_Home.bob old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/OPI/CMS_Maintenance.bob b/NON-APPROVED/Cryo/CMS_OPI_MASTER/OPI/CMS_Maintenance.bob old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/OPI/CMS_OverView.bob b/NON-APPROVED/Cryo/CMS_OPI_MASTER/OPI/CMS_OverView.bob old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/OPI/CMS_TMCP_Jumper_Spool.bob b/NON-APPROVED/Cryo/CMS_OPI_MASTER/OPI/CMS_TMCP_Jumper_Spool.bob old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/OPI/OPI.zip b/NON-APPROVED/Cryo/CMS_OPI_MASTER/OPI/OPI.zip deleted file mode 100644 index a3e7dbc7f8edfbc777d19fbcd6a48cbd4e2a71ef..0000000000000000000000000000000000000000 Binary files a/NON-APPROVED/Cryo/CMS_OPI_MASTER/OPI/OPI.zip and /dev/null differ diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/OPIBackGrounds/ColdBoxBackGround.png b/NON-APPROVED/Cryo/CMS_OPI_MASTER/OPIBackGrounds/ColdBoxBackGround.png old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/OPIBackGrounds/DistributionBoxBackGround.png b/NON-APPROVED/Cryo/CMS_OPI_MASTER/OPIBackGrounds/DistributionBoxBackGround.png old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/OPIBackGrounds/GasManagementPanelBackGround.png b/NON-APPROVED/Cryo/CMS_OPI_MASTER/OPIBackGrounds/GasManagementPanelBackGround.png old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/OPIBackGrounds/PumpCoolingBackGround.png b/NON-APPROVED/Cryo/CMS_OPI_MASTER/OPIBackGrounds/PumpCoolingBackGround.png old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/OPIBackGrounds/TMCPJumperSpoolBackGround.png b/NON-APPROVED/Cryo/CMS_OPI_MASTER/OPIBackGrounds/TMCPJumperSpoolBackGround.png old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/Symbols/CP_Pump_GREEN.png b/NON-APPROVED/Cryo/CMS_OPI_MASTER/Symbols/CP_Pump_GREEN.png old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/Symbols/CP_Pump_RED.png b/NON-APPROVED/Cryo/CMS_OPI_MASTER/Symbols/CP_Pump_RED.png old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/Symbols/CP_Pump_WHITE.png b/NON-APPROVED/Cryo/CMS_OPI_MASTER/Symbols/CP_Pump_WHITE.png old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/Symbols/CP_Pump_YELLOW.png b/NON-APPROVED/Cryo/CMS_OPI_MASTER/Symbols/CP_Pump_YELLOW.png old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/Symbols/DP_Pump_GREEN.png b/NON-APPROVED/Cryo/CMS_OPI_MASTER/Symbols/DP_Pump_GREEN.png old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/Symbols/DP_Pump_RED.png b/NON-APPROVED/Cryo/CMS_OPI_MASTER/Symbols/DP_Pump_RED.png old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/Symbols/DP_Pump_WHITE.png b/NON-APPROVED/Cryo/CMS_OPI_MASTER/Symbols/DP_Pump_WHITE.png old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/Symbols/DP_Pump_YELLOW.png b/NON-APPROVED/Cryo/CMS_OPI_MASTER/Symbols/DP_Pump_YELLOW.png old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/Symbols/Motor_blue.png b/NON-APPROVED/Cryo/CMS_OPI_MASTER/Symbols/Motor_blue.png old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/Symbols/Motor_green.png b/NON-APPROVED/Cryo/CMS_OPI_MASTER/Symbols/Motor_green.png old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/Symbols/Motor_red.png b/NON-APPROVED/Cryo/CMS_OPI_MASTER/Symbols/Motor_red.png old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/Symbols/Motor_white.png b/NON-APPROVED/Cryo/CMS_OPI_MASTER/Symbols/Motor_white.png old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/Symbols/Motor_yellow.png b/NON-APPROVED/Cryo/CMS_OPI_MASTER/Symbols/Motor_yellow.png old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/Symbols/collapse-arrows.png b/NON-APPROVED/Cryo/CMS_OPI_MASTER/Symbols/collapse-arrows.png old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/Symbols/expand-arrows.png b/NON-APPROVED/Cryo/CMS_OPI_MASTER/Symbols/expand-arrows.png old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/ToDo/CMS-DP_DiscretePump_BlockIcon_90deg.bob b/NON-APPROVED/Cryo/CMS_OPI_MASTER/ToDo/CMS-DP_DiscretePump_BlockIcon_90deg.bob old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/ToDo/CMS-DP_DiscretePump_Faceplate.bob b/NON-APPROVED/Cryo/CMS_OPI_MASTER/ToDo/CMS-DP_DiscretePump_Faceplate.bob old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/ToDo/CMS-EH_ElectricalHeater_BlockIcon.bob b/NON-APPROVED/Cryo/CMS_OPI_MASTER/ToDo/CMS-EH_ElectricalHeater_BlockIcon.bob old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/ToDo/CMS-EH_ElectricalHeater_Faceplate.bob b/NON-APPROVED/Cryo/CMS_OPI_MASTER/ToDo/CMS-EH_ElectricalHeater_Faceplate.bob old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/ToDo/CMS-FC_FlowController_BlockIcon.bob b/NON-APPROVED/Cryo/CMS_OPI_MASTER/ToDo/CMS-FC_FlowController_BlockIcon.bob old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/ToDo/CMS-FC_FlowController_Faceplate.bob b/NON-APPROVED/Cryo/CMS_OPI_MASTER/ToDo/CMS-FC_FlowController_Faceplate.bob old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/ToDo/CMS-FT_FlowTransmitter_BlockIcon.bob b/NON-APPROVED/Cryo/CMS_OPI_MASTER/ToDo/CMS-FT_FlowTransmitter_BlockIcon.bob old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/ToDo/CMS-FT_FlowTransmitter_Faceplate.bob b/NON-APPROVED/Cryo/CMS_OPI_MASTER/ToDo/CMS-FT_FlowTransmitter_Faceplate.bob old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/ToDo/CMS-TP_TurbinePump_BlockIcon_90deg.bob b/NON-APPROVED/Cryo/CMS_OPI_MASTER/ToDo/CMS-TP_TurbinePump_BlockIcon_90deg.bob old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/ToDo/CMS-TP_TurbinePump_Faceplate.bob b/NON-APPROVED/Cryo/CMS_OPI_MASTER/ToDo/CMS-TP_TurbinePump_Faceplate.bob old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/ToDo/CMS_Cold_Box_1.bob b/NON-APPROVED/Cryo/CMS_OPI_MASTER/ToDo/CMS_Cold_Box_1.bob old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/ToDo/CMS_Cold_Box_2.bob b/NON-APPROVED/Cryo/CMS_OPI_MASTER/ToDo/CMS_Cold_Box_2.bob old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/ToDo/CMS_Device_Test.bob b/NON-APPROVED/Cryo/CMS_OPI_MASTER/ToDo/CMS_Device_Test.bob old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/ToDo/CMS_Distribution_Box_MR_Plug.bob b/NON-APPROVED/Cryo/CMS_OPI_MASTER/ToDo/CMS_Distribution_Box_MR_Plug.bob old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/ToDo/CryolibraryTestPage.bob b/NON-APPROVED/Cryo/CMS_OPI_MASTER/ToDo/CryolibraryTestPage.bob old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/ToDo/Gas_Management_CMS_Room.bob b/NON-APPROVED/Cryo/CMS_OPI_MASTER/ToDo/Gas_Management_CMS_Room.bob old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/CMS_OPI_MASTER/_project.xml b/NON-APPROVED/Cryo/CMS_OPI_MASTER/_project.xml old mode 100644 new mode 100755 diff --git a/NON-APPROVED/Cryo/Cryo OPIs.bob b/NON-APPROVED/Cryo/Cryo OPIs.bob new file mode 100644 index 0000000000000000000000000000000000000000..98745b9d0cbd61d0dc7d71398647e81f66df950c --- /dev/null +++ b/NON-APPROVED/Cryo/Cryo OPIs.bob @@ -0,0 +1,134 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>Cryo OPIs quick start</name> + <width>1920</width> + <height>1080</height> + <widget type="action_button" version="3.0.0"> + <name>Action Button</name> + <actions> + <action type="open_display"> + <file>TICP/CrS-TICP_CRYO_ALAT/cryo-00-main.bob</file> + <target>tab</target> + <description>Open Display</description> + </action> + </actions> + <text>Open TICP</text> + <x>20</x> + <y>80</y> + <width>300</width> + <height>50</height> + <tooltip>$(actions)</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>Action Button_1</name> + <actions> + <action type="open_display"> + <file>TMCP/Common/Overview/overview.bob</file> + <target>tab</target> + <description>Open Display</description> + </action> + </actions> + <text>Open TMCP</text> + <x>20</x> + <y>140</y> + <width>300</width> + <height>50</height> + <tooltip>$(actions)</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>Action Button_2</name> + <actions> + <action type="open_display"> + <file>ACCP/Common/Overview/overviewCompressor.opi</file> + <target>tab</target> + <description>Open Display</description> + </action> + </actions> + <text>Open ACCP</text> + <x>20</x> + <y>20</y> + <width>300</width> + <height>50</height> + <tooltip>$(actions)</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>Action Button_3</name> + <actions> + <action type="open_display"> + <file>PHS/PureHeliumStorage_TankFarmOverview_ESS-0049858.bob</file> + <target>tab</target> + <description>Open Display</description> + </action> + </actions> + <text>Open PHS</text> + <x>20</x> + <y>200</y> + <width>300</width> + <height>50</height> + <tooltip>$(actions)</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>Action Button_4</name> + <actions> + <action type="open_display"> + <file>Emergency/pressureOverview.bob</file> + <target>tab</target> + <description>Open Display</description> + </action> + </actions> + <text>Open Emergency OPI</text> + <x>350</x> + <y>20</y> + <width>300</width> + <height>50</height> + <tooltip>$(actions)</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>Action Button_5</name> + <actions> + <action type="open_display"> + <file>He Inventory/inventory_new.bob</file> + <target>tab</target> + <description>Open Display</description> + </action> + </actions> + <text>Open Helium Inventory OPI</text> + <x>350</x> + <y>80</y> + <width>300</width> + <height>50</height> + <tooltip>$(actions)</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>Action Button_6</name> + <actions> + <action type="open_display"> + <file>Utilities/Cooling water G04/CoolingWater-Temp.bob</file> + <target>tab</target> + <description>Open Display</description> + </action> + </actions> + <text>Open CW, IA and N2 OPI</text> + <x>350</x> + <y>140</y> + <width>300</width> + <height>50</height> + <tooltip>$(actions)</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>Action Button_7</name> + <actions> + <action type="open_display"> + <file>Utilities/PowerMeters/OverView.bob</file> + <target>tab</target> + <description>Open Display</description> + </action> + </actions> + <text>Open Power meters OPI</text> + <x>350</x> + <y>200</y> + <width>300</width> + <height>50</height> + <tooltip>$(actions)</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/He Inventory/inventory_new.bob b/NON-APPROVED/Cryo/He Inventory/inventory_new.bob index 14c95e9431e46402f9410d653e1ef73553ad448f..ccfa39f3caca7415c918dc916fb9e54384592e02 100644 --- a/NON-APPROVED/Cryo/He Inventory/inventory_new.bob +++ b/NON-APPROVED/Cryo/He Inventory/inventory_new.bob @@ -70,7 +70,7 @@ <height>170</height> <widget type="textupdate" version="2.0.0"> <name>Text Update</name> - <pv_name>CrS-PHS:Cryo-HeMass-99000</pv_name> + <pv_name>CrS-PHS::HeMass-99000</pv_name> <x>179</x> <y>99</y> <width>140</width> @@ -93,7 +93,7 @@ </widget> <widget type="textupdate" version="2.0.0"> <name>Text Update_11</name> - <pv_name>CrS-PHS:Cryo-HeMass-99900</pv_name> + <pv_name>CrS-PHS::HeMass-99900</pv_name> <x>179</x> <y>9</y> <width>140</width> @@ -108,7 +108,7 @@ </widget> <widget type="textupdate" version="2.0.0"> <name>Text Update_12</name> - <pv_name>CrS-PHS:Cryo-HeMass-99901</pv_name> + <pv_name>CrS-PHS::HeMass-99901</pv_name> <x>179</x> <y>39</y> <width>140</width> @@ -124,7 +124,7 @@ <widget type="textupdate" version="2.0.0"> <name>Text Update_13</name> <pv_name>CrS-PHS:Cryo-D-1900:HeliumMass</pv_name> - <x>179</x> + <x>181</x> <y>69</y> <width>140</width> </widget> @@ -160,14 +160,14 @@ </widget> <widget type="textupdate" version="2.0.0"> <name>Text Update_14</name> - <pv_name>CrS-TICP:Cryo-HeMass-99900</pv_name> + <pv_name>CrS-TICP::HeMass-99900</pv_name> <x>179</x> <y>39</y> <width>140</width> </widget> <widget type="textupdate" version="2.0.0"> <name>Text Update_15</name> - <pv_name>CrS-TICP:Cryo-HeMass-99901</pv_name> + <pv_name>CrS-TICP::HeMass-99901</pv_name> <x>179</x> <y>69</y> <width>140</width> @@ -190,7 +190,7 @@ </widget> <widget type="textupdate" version="2.0.0"> <name>Text Update_16</name> - <pv_name>CrS-TICP:Cryo-HeMass-99000</pv_name> + <pv_name>CrS-TICP::HeMass-99000</pv_name> <x>179</x> <y>99</y> <width>140</width> @@ -226,7 +226,7 @@ </widget> <widget type="textupdate" version="2.0.0"> <name>Text Update_17</name> - <pv_name>CrS-ACCP:Cryo-HeMass-99900</pv_name> + <pv_name>CrS-ACCP::HeMass-99900</pv_name> <x>179</x> <y>39</y> <width>140</width> @@ -241,7 +241,7 @@ </widget> <widget type="textupdate" version="2.0.0"> <name>Text Update_18</name> - <pv_name>CrS-ACCP:Cryo-HeMass-99901</pv_name> + <pv_name>CrS-ACCP::HeMass-99901</pv_name> <x>179</x> <y>69</y> <width>140</width> @@ -256,7 +256,7 @@ </widget> <widget type="textupdate" version="2.0.0"> <name>Text Update_19</name> - <pv_name>CrS-ACCP:Cryo-HeMass-99902</pv_name> + <pv_name>CrS-ACCP::HeMass-99902</pv_name> <x>179</x> <y>99</y> <width>140</width> @@ -271,7 +271,7 @@ </widget> <widget type="textupdate" version="2.0.0"> <name>Text Update_20</name> - <pv_name>CrS-ACCP:Cryo-HeMass-99000</pv_name> + <pv_name>CrS-ACCP::HeMass-99000</pv_name> <x>179</x> <y>129</y> <width>140</width> @@ -285,7 +285,7 @@ <height>80</height> <widget type="textupdate" version="2.0.0"> <name>Text Update_8</name> - <pv_name>CrS-PHS:Cryo-HeMass-90000</pv_name> + <pv_name>CrS-PHS::HeMass-90000</pv_name> <x>139</x> <y>9</y> <width>180</width> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_CABTR_Temperature_OnlyText_Horizontal.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_CABTR_Temperature_OnlyText_Horizontal.bob new file mode 100644 index 0000000000000000000000000000000000000000..4900fa08fc4a984d1fe0bda1187e690183b0e6ca --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_CABTR_Temperature_OnlyText_Horizontal.bob @@ -0,0 +1,224 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>AnalogTransmitter_BlockIcon_CABTR_Temperature_OnlyText_Horizontal_Transparent</name> + <width>250</width> + <height>32</height> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>35</x> + <width>91</width> + <height>29</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="25.0"> + </font> + </font> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; +WidgetColorService = org.csstudio.display.builder.model.persist.WidgetColorService; + + +macros = widget.getEffectiveMacros(); +WIDDev = macros.getValue("WIDDev"); + +color = WidgetColorService.getColor("Background"); +if (WIDDev == "PT") +{ + color = WidgetColorService.getColor("GREEN-BACKGROUND"); +} +if (WIDDev == "TT") +{ + color = WidgetColorService.getColor("YELLOW-BACKGROUND"); +} +if (WIDDev == "FT") +{ + color = WidgetColorService.getColor("BLUE-BACKGROUND"); +} + + widget.setPropertyValue("background_color",color); +]]></text> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue.EGU</pv_name> + </script> + </scripts> + <tooltip>Device name</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_MeasValue</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue</pv_name> + <x>126</x> + <y>1</y> + <width>104</width> + <height>29</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="25.0"> + </font> + </font> + <precision>2</precision> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_width>1</border_width> + <border_color> + <color name="GRAY-BORDER" red="121" green="121" blue="121"> + </color> + </border_color> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>5</x> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "AnalogTransmitter_Faceplate_CABTR_Temperature.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <y>1</y> + <width>250</width> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_CABTR_Temperature_OnlyText_Vertical.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_CABTR_Temperature_OnlyText_Vertical.bob new file mode 100644 index 0000000000000000000000000000000000000000..7e7bdc29b0484f605210333c6de52cac22a53100 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_CABTR_Temperature_OnlyText_Vertical.bob @@ -0,0 +1,262 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>AnalogTransmitter_BlockIcon_CABTR_Temperature_OnlyText_Vertical_Compact</name> + <width>160</width> + <height>65</height> + <background_color> + <color red="255" green="255" blue="255" alpha="0"> + </color> + </background_color> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>20</x> + <width>128</width> + <height>29</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="25.0"> + </font> + </font> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; +WidgetColorService = org.csstudio.display.builder.model.persist.WidgetColorService; + + +macros = widget.getEffectiveMacros(); +WIDDev = macros.getValue("WIDDev"); + +color = WidgetColorService.getColor("Background"); +if (WIDDev == "PT") +{ + color = WidgetColorService.getColor("GREEN-BACKGROUND"); +} +if (WIDDev == "TT") +{ + color = WidgetColorService.getColor("YELLOW-BACKGROUND"); +} +if (WIDDev == "FT") +{ + color = WidgetColorService.getColor("BLUE-BACKGROUND"); +} + + widget.setPropertyValue("background_color",color); +]]></text> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue.EGU</pv_name> + </script> + </scripts> + <tooltip>Device name</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_MeasValue</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue</pv_name> + <x>21</x> + <y>31</y> + <width>127</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="25.0"> + </font> + </font> + <precision>2</precision> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_width>1</border_width> + <border_color> + <color name="GRAY-BORDER" red="121" green="121" blue="121"> + </color> + </border_color> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <y>4</y> + <width>30</width> + <height>28</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text>A</text> + <x>4</x> + <y>26</y> + <width>20</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="29.0"> + </font> + </font> + <foreground_color> + <color name="RED" red="252" green="13" blue="27"> + </color> + </foreground_color> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value> </value> + </exp> + <exp bool_exp="pv1 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_FreeRun</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + try + { + P_BlockIcon_LockID.setValue(crc); + } + + catch (e) { logger.info(" Locked ID cannot write pv"); } + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "AnalogTransmitter_Faceplate_CABTR_Temperature.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>159</width> + <height>65</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_CernoxTemperature_OnlyText_Horizontal.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_CernoxTemperature_OnlyText_Horizontal.bob new file mode 100644 index 0000000000000000000000000000000000000000..31f149294049b93c4dbb204302ddf4b5fe43544b --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_CernoxTemperature_OnlyText_Horizontal.bob @@ -0,0 +1,258 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>AnalogTransmitter_BlockIcon_CernoxTemperature_OnlyText_Horizontal</name> + <width>250</width> + <height>30</height> + <widget type="symbol" version="2.0.0"> + <name>WID_Locked</name> + <symbols> + <symbol>../../symbols/custom_v02/lock_locked@32.png</symbol> + </symbols> + <x>103</x> + <y>1</y> + <width>17</width> + <height>26</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:DevLocked</pv_name> + </rule> + </rules> + <tooltip>Device is locked</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>35</x> + <width>60</width> + <height>29</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="16.0"> + </font> + </font> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; +WidgetColorService = org.csstudio.display.builder.model.persist.WidgetColorService; + + +macros = widget.getEffectiveMacros(); +WIDDev = macros.getValue("WIDDev"); + +color = WidgetColorService.getColor("Background"); +if (WIDDev == "PT") +{ + color = WidgetColorService.getColor("GREEN-BACKGROUND"); +} +if (WIDDev == "TT") +{ + color = WidgetColorService.getColor("YELLOW-BACKGROUND"); +} +if (WIDDev == "FT") +{ + color = WidgetColorService.getColor("BLUE-BACKGROUND"); +} + + widget.setPropertyValue("background_color",color); +]]></text> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue.EGU</pv_name> + </script> + </scripts> + <tooltip>Device name</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_MeasValue</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue</pv_name> + <x>126</x> + <height>29</height> + <transparent>true</transparent> + <precision>2</precision> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <rules> + <rule name="BackGroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0==0"> + <value> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </value> + </exp> + <exp bool_exp="pv0==1"> + <value> + <color name="WHITE" red="255" green="255" blue="255"> + </color> + </value> + </exp> + <exp bool_exp="pv0==2"> + <value> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:TransmitterColor</pv_name> + </rule> + </rules> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>9</x> + <width>17</width> + <height>28</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "AnalogTransmitter_CernoxTemperature_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>250</width> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_CernoxTemperature_OnlyText_Horizontal_Transparent.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_CernoxTemperature_OnlyText_Horizontal_Transparent.bob new file mode 100644 index 0000000000000000000000000000000000000000..5b066a2ac008f2140ed2efe88c0fecebfc76537e --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_CernoxTemperature_OnlyText_Horizontal_Transparent.bob @@ -0,0 +1,224 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>AnalogTransmitter_BlockIcon_CABTR_Temperature_OnlyText_Horizontal</name> + <width>250</width> + <height>32</height> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>35</x> + <width>91</width> + <height>29</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="25.0"> + </font> + </font> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; +WidgetColorService = org.csstudio.display.builder.model.persist.WidgetColorService; + + +macros = widget.getEffectiveMacros(); +WIDDev = macros.getValue("WIDDev"); + +color = WidgetColorService.getColor("Background"); +if (WIDDev == "PT") +{ + color = WidgetColorService.getColor("GREEN-BACKGROUND"); +} +if (WIDDev == "TT") +{ + color = WidgetColorService.getColor("YELLOW-BACKGROUND"); +} +if (WIDDev == "FT") +{ + color = WidgetColorService.getColor("BLUE-BACKGROUND"); +} + + widget.setPropertyValue("background_color",color); +]]></text> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue.EGU</pv_name> + </script> + </scripts> + <tooltip>Device name</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_MeasValue</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue</pv_name> + <x>126</x> + <y>1</y> + <width>104</width> + <height>29</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="25.0"> + </font> + </font> + <precision>2</precision> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_width>1</border_width> + <border_color> + <color name="GRAY-BORDER" red="121" green="121" blue="121"> + </color> + </border_color> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>5</x> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "AnalogTransmitter_Faceplate_CABTR_Temperature.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <y>1</y> + <width>250</width> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_CernoxTemperature_OnlyText_Vertical.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_CernoxTemperature_OnlyText_Vertical.bob new file mode 100644 index 0000000000000000000000000000000000000000..27924d548cccb147974325bd5e5aaa118a7892ef --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_CernoxTemperature_OnlyText_Vertical.bob @@ -0,0 +1,354 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>AnalogTransmitter_BlockIcon_CernoxTemperature_OnlyText_Vertical</name> + <width>170</width> + <height>65</height> + <widget type="rectangle" version="2.0.0"> + <name>Rectangle</name> + <width>170</width> + <height>65</height> + <line_width>1</line_width> + <line_color> + <color name="BLACK-BORDER" red="121" green="121" blue="121"> + </color> + </line_color> + <background_color> + <color red="255" green="255" blue="255" alpha="120"> + </color> + </background_color> + <corner_width>10</corner_width> + <corner_height>10</corner_height> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Locked</name> + <symbols> + <symbol>../../symbols/custom_v02/lock_locked@32.png</symbol> + </symbols> + <x>148</x> + <y>20</y> + <width>17</width> + <height>26</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:DevLocked</pv_name> + </rule> + </rules> + <tooltip>Device is locked</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>20</x> + <y>2</y> + <width>128</width> + <height>29</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="28.0"> + </font> + </font> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; +WidgetColorService = org.csstudio.display.builder.model.persist.WidgetColorService; + + +macros = widget.getEffectiveMacros(); +WIDDev = macros.getValue("WIDDev"); + +color = WidgetColorService.getColor("Background"); +if (WIDDev == "PT") +{ + color = WidgetColorService.getColor("GREEN-BACKGROUND"); +} +if (WIDDev == "TT") +{ + color = WidgetColorService.getColor("YELLOW-BACKGROUND"); +} +if (WIDDev == "FT") +{ + color = WidgetColorService.getColor("BLUE-BACKGROUND"); +} + + widget.setPropertyValue("background_color",color); +]]></text> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue.EGU</pv_name> + </script> + </scripts> + <tooltip>Device name</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_MeasValue</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue</pv_name> + <x>21</x> + <y>30</y> + <width>127</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="24.0"> + </font> + </font> + <transparent>true</transparent> + <precision>2</precision> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <rules> + <rule name="BackGroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0==0"> + <value> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </value> + </exp> + <exp bool_exp="pv0==1"> + <value> + <color name="WHITE" red="255" green="255" blue="255"> + </color> + </value> + </exp> + <exp bool_exp="pv0==2"> + <value> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:TransmitterColor</pv_name> + </rule> + </rules> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_IOErrorIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/WARNING@32.png</symbol> + </symbols> + <x>148</x> + <y>5</y> + <width>18</width> + <height>26</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == true)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == false)"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Module_Error</pv_name> + </rule> + </rules> + <tooltip>Siemens IO card error!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_MaintenanceIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/Wrench_error @32.png</symbol> + </symbols> + <x>148</x> + <y>33</y> + <width>16</width> + <height>26</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false)&&(pv1==false)&&(pv2==false)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true)||(pv1==true)||(pv2==true)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:DigitalInp_IO_Error</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Module_Error</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:AnalogInp_IO_Error</pv_name> + </rule> + </rules> + <tooltip>Maintenace Needed!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>6</x> + <y>4</y> + <width>17</width> + <height>28</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "AnalogTransmitter_Faceplate_CernoxTemperature.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>150</width> + <height>65</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text>A</text> + <x>6</x> + <y>25</y> + <width>20</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="29.0"> + </font> + </font> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value> </value> + </exp> + <exp bool_exp="pv1 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_FreeRun</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_CernoxTemperature_OnlyText_Vertical_Compact.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_CernoxTemperature_OnlyText_Vertical_Compact.bob new file mode 100644 index 0000000000000000000000000000000000000000..c07c80546e95465fb701c23cd82f3f89f891b019 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_CernoxTemperature_OnlyText_Vertical_Compact.bob @@ -0,0 +1,258 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>AnalogTransmitter_BlockIcon_CernoxTemperature_OnlyText_Vertical_Compact</name> + <width>160</width> + <height>65</height> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>20</x> + <width>128</width> + <height>29</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="25.0"> + </font> + </font> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; +WidgetColorService = org.csstudio.display.builder.model.persist.WidgetColorService; + + +macros = widget.getEffectiveMacros(); +WIDDev = macros.getValue("WIDDev"); + +color = WidgetColorService.getColor("Background"); +if (WIDDev == "PT") +{ + color = WidgetColorService.getColor("GREEN-BACKGROUND"); +} +if (WIDDev == "TT") +{ + color = WidgetColorService.getColor("YELLOW-BACKGROUND"); +} +if (WIDDev == "FT") +{ + color = WidgetColorService.getColor("BLUE-BACKGROUND"); +} + + widget.setPropertyValue("background_color",color); +]]></text> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue.EGU</pv_name> + </script> + </scripts> + <tooltip>Device name</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_MeasValue</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue</pv_name> + <x>21</x> + <y>31</y> + <width>127</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="25.0"> + </font> + </font> + <precision>2</precision> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_width>1</border_width> + <border_color> + <color name="GRAY-BORDER" red="121" green="121" blue="121"> + </color> + </border_color> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <y>4</y> + <width>30</width> + <height>28</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text>A</text> + <x>4</x> + <y>26</y> + <width>20</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="29.0"> + </font> + </font> + <foreground_color> + <color name="RED" red="252" green="13" blue="27"> + </color> + </foreground_color> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value> </value> + </exp> + <exp bool_exp="pv1 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_FreeRun</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + try + { + P_BlockIcon_LockID.setValue(crc); + } + + catch (e) { logger.info(" Locked ID cannot write pv"); } + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "AnalogTransmitter_Faceplate_CernoxTemperature.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>159</width> + <height>65</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_CernoxTemperature_OnlyText_Vertical_Transparent.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_CernoxTemperature_OnlyText_Vertical_Transparent.bob new file mode 100644 index 0000000000000000000000000000000000000000..ddd2da5cfbda8581aad0bb756b49b6f70bb98b91 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_CernoxTemperature_OnlyText_Vertical_Transparent.bob @@ -0,0 +1,307 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>AnalogTransmitter_BlockIcon_CernoxTemperature_OnlyText_Vertical_Transparent</name> + <width>150</width> + <height>65</height> + <widget type="symbol" version="2.0.0"> + <name>WID_Locked</name> + <symbols> + <symbol>../../symbols/custom_v02/lock_locked@32.png</symbol> + </symbols> + <x>6</x> + <y>32</y> + <width>17</width> + <height>26</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:DevLocked</pv_name> + </rule> + </rules> + <tooltip>Device is locked</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>23</x> + <y>4</y> + <height>29</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="16.0"> + </font> + </font> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; +WidgetColorService = org.csstudio.display.builder.model.persist.WidgetColorService; + + +macros = widget.getEffectiveMacros(); +WIDDev = macros.getValue("WIDDev"); + +color = WidgetColorService.getColor("Background"); +if (WIDDev == "PT") +{ + color = WidgetColorService.getColor("GREEN-BACKGROUND"); +} +if (WIDDev == "TT") +{ + color = WidgetColorService.getColor("YELLOW-BACKGROUND"); +} +if (WIDDev == "FT") +{ + color = WidgetColorService.getColor("BLUE-BACKGROUND"); +} + + widget.setPropertyValue("background_color",color); +]]></text> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue.EGU</pv_name> + </script> + </scripts> + <tooltip>Device name</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_MeasValue</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue</pv_name> + <x>23</x> + <y>32</y> + <height>29</height> + <transparent>true</transparent> + <precision>2</precision> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <rules> + <rule name="BackGroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0==0"> + <value> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </value> + </exp> + <exp bool_exp="pv0==1"> + <value> + <color name="WHITE" red="255" green="255" blue="255"> + </color> + </value> + </exp> + <exp bool_exp="pv0==2"> + <value> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:TransmitterColor</pv_name> + </rule> + </rules> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_IOErrorIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/WARNING@32.png</symbol> + </symbols> + <x>126</x> + <y>5</y> + <width>18</width> + <height>26</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == true)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == false)"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Module_Error</pv_name> + </rule> + </rules> + <tooltip>Siemens IO card error!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_MaintenanceIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/Wrench_error @32.png</symbol> + </symbols> + <x>126</x> + <y>33</y> + <width>16</width> + <height>26</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false)&&(pv1==false)&&(pv2==false)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true)||(pv1==true)||(pv2==true)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:DigitalInp_IO_Error</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Module_Error</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:AnalogInp_IO_Error</pv_name> + </rule> + </rules> + <tooltip>Maintenace Needed!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>6</x> + <y>4</y> + <width>17</width> + <height>28</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "AnalogTransmitter_CernoxTemperature_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>150</width> + <height>65</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_Horizontal.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_Horizontal.bob new file mode 100644 index 0000000000000000000000000000000000000000..685259a1d43fdfc1e5a8b8635cb1369461a88012 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_Horizontal.bob @@ -0,0 +1,373 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>AnalogTransmitter_BlockIcon_Horizontal</name> + <width>140</width> + <height>212</height> + <widget type="rectangle" version="2.0.0"> + <name>WID_Rect</name> + <width>140</width> + <height>212</height> + <line_width>0</line_width> + <background_color> + <color red="0" green="0" blue="0" alpha="18"> + </color> + </background_color> + <corner_width>20</corner_width> + <corner_height>20</corner_height> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIcon</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:TransmitterColor</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/AnalogTransmitter/AnalogTransmitter_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom/AnalogTransmitter_OK.png</symbol> + <symbol>../../symbols/custom/AnalogTransmitter_WARNING.png</symbol> + </symbols> + <x>38</x> + <y>61</y> + <width>64</width> + <height>64</height> + <actions execute_as_one="true"> + </actions> + <tooltip>Open faceplate</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text></text> + <x>55</x> + <y>29</y> + <width>30</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="29.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value> </value> + </exp> + <exp bool_exp="pv1 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_FreeRun</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_DeviceLBL</name> + <text>${WIDDev}</text> + <x>38</x> + <y>61</y> + <width>64</width> + <height>64</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="32.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Device name</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Locked</name> + <symbols> + <symbol>../../symbols/custom_v02/lock_locked@32.png</symbol> + </symbols> + <x>10</x> + <y>178</y> + <width>23</width> + <height>23</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:DevLocked</pv_name> + </rule> + </rules> + <tooltip>Device is locked</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>107</x> + <y>37</y> + <width>24</width> + <height>24</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_IOErrorIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/WARNING@32.png</symbol> + </symbols> + <x>11</x> + <y>127</y> + <width>24</width> + <height>24</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == true)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == false)"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Module_Error</pv_name> + </rule> + </rules> + <tooltip>Siemens IO card error!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_MaintenanceIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/Wrench_error @32.png</symbol> + </symbols> + <x>108</x> + <y>126</y> + <width>22</width> + <height>24</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false)&&(pv1==false)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true)||(pv1==true)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:IO_Error</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Module_Error</pv_name> + </rule> + </rules> + <tooltip>Maintenace Needed!</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>11</x> + <y>3</y> + <width>120</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="18.0"> + </font> + </font> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; +WidgetColorService = org.csstudio.display.builder.model.persist.WidgetColorService; + + +macros = widget.getEffectiveMacros(); +WIDDev = macros.getValue("WIDDev"); + +color = WidgetColorService.getColor("Background"); +if (WIDDev == "PT") +{ + color = WidgetColorService.getColor("GREEN-BACKGROUND"); +} +if (WIDDev == "TT") +{ + color = WidgetColorService.getColor("YELLOW-BACKGROUND"); +} +if (WIDDev == "FT") +{ + color = WidgetColorService.getColor("BLUE-BACKGROUND"); +} + + widget.setPropertyValue("background_color",color); +]]></text> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue.EGU</pv_name> + </script> + </scripts> + <tooltip>Device name</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_MeasValue</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue</pv_name> + <x>40</x> + <y>156</y> + <width>90</width> + <transparent>true</transparent> + <precision>2</precision> + <show_units>false</show_units> + <horizontal_alignment>1</horizontal_alignment> + <wrap_words>false</wrap_words> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_EGU</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue.EGU</pv_name> + <x>67</x> + <y>177</y> + <width>63</width> + <transparent>true</transparent> + <show_units>false</show_units> + <horizontal_alignment>1</horizontal_alignment> + <wrap_words>false</wrap_words> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_LBL_MV</name> + <text>MV:</text> + <x>11</x> + <y>157</y> + <width>25</width> + <horizontal_alignment>2</horizontal_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "AnalogTransmitter_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>140</width> + <height>212</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_LM510_OnlyText_Vertical_Compact.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_LM510_OnlyText_Vertical_Compact.bob new file mode 100644 index 0000000000000000000000000000000000000000..ac9de12993a3a97f18d88060c1be3166084c3bc4 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_LM510_OnlyText_Vertical_Compact.bob @@ -0,0 +1,254 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>AnalogTransmitter_BlockIcon_LM510_OnlyText_Vertical_Compact</name> + <width>155</width> + <height>65</height> + <background_color> + <color red="255" green="255" blue="255" alpha="0"> + </color> + </background_color> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>30</x> + <width>120</width> + <height>29</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="25.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; +WidgetColorService = org.csstudio.display.builder.model.persist.WidgetColorService; + + +macros = widget.getEffectiveMacros(); +WIDDev = macros.getValue("WIDDev"); + +color = WidgetColorService.getColor("Background"); +if (WIDDev == "PT") +{ + color = WidgetColorService.getColor("GREEN-BACKGROUND"); +} +if (WIDDev == "TT") +{ + color = WidgetColorService.getColor("YELLOW-BACKGROUND"); +} +if (WIDDev == "FT") +{ + color = WidgetColorService.getColor("BLUE-BACKGROUND"); +} + + widget.setPropertyValue("background_color",color); +]]></text> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue.EGU</pv_name> + </script> + </scripts> + <tooltip>Device name</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_MeasValue</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue</pv_name> + <x>30</x> + <y>29</y> + <width>123</width> + <height>34</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="24.0"> + </font> + </font> + <precision>2</precision> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <rules> + <rule name="Disconnected" prop_id="background_color" out_exp="false"> + <exp bool_exp="pvInt0 > 0"> + <value> + <color name="Read_Background" red="230" green="235" blue="232"> + </color> + </value> + </exp> + <exp bool_exp="pvInt0 == 0"> + <value> + <color name="INVALID" red="149" green="110" blue="221"> + </color> + </value> + </exp> + <pv_name>${PLCName}:PLCHashCorrectR</pv_name> + </rule> + </rules> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_width>1</border_width> + <border_color> + <color name="GRAY-BORDER" red="121" green="121" blue="121"> + </color> + </border_color> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <y>4</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + try + { + P_BlockIcon_LockID.setValue(crc); + } + + catch (e) { logger.info(" Locked ID cannot write pv"); } + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "AnalogTransmitter_Faceplate_LM510.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>155</width> + <height>65</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_LakeShore_OnlyText_Horizontal_Compact.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_LakeShore_OnlyText_Horizontal_Compact.bob new file mode 100644 index 0000000000000000000000000000000000000000..4c79b67e8f9b066faf7e64ac1f3109f4711b7b6c --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_LakeShore_OnlyText_Horizontal_Compact.bob @@ -0,0 +1,233 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>AnalogTransmitter_BlockIcon_LakeShore_OnlyText_Horizontal_Compact</name> + <width>250</width> + <height>32</height> + <background_color> + <color red="255" green="255" blue="255" alpha="0"> + </color> + </background_color> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>26</x> + <y>2</y> + <width>120</width> + <height>29</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="25.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; +WidgetColorService = org.csstudio.display.builder.model.persist.WidgetColorService; + + +macros = widget.getEffectiveMacros(); +WIDDev = macros.getValue("WIDDev"); + +color = WidgetColorService.getColor("Background"); +if (WIDDev == "PT") +{ + color = WidgetColorService.getColor("GREEN-BACKGROUND"); +} +if (WIDDev == "TT") +{ + color = WidgetColorService.getColor("YELLOW-BACKGROUND"); +} +if (WIDDev == "FT") +{ + color = WidgetColorService.getColor("BLUE-BACKGROUND"); +} + + widget.setPropertyValue("background_color",color); +]]></text> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue.EGU</pv_name> + </script> + </scripts> + <tooltip>Device name</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_MeasValue</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue</pv_name> + <x>142</x> + <y>2</y> + <width>108</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="24.0"> + </font> + </font> + <precision>3</precision> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_width>1</border_width> + <border_color> + <color name="GRAY-BORDER" red="121" green="121" blue="121"> + </color> + </border_color> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <y>1</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "AnalogTransmitter_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>250</width> + <height>32</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_LakeShore_OnlyText_Vertical_Compact.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_LakeShore_OnlyText_Vertical_Compact.bob new file mode 100644 index 0000000000000000000000000000000000000000..5fad6800f996c2b2c27ba2b70e6fa5a83921f569 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_LakeShore_OnlyText_Vertical_Compact.bob @@ -0,0 +1,249 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>AnalogTransmitter_BlockIcon_LakeShore_OnlyText_Vertical_Compact</name> + <width>155</width> + <height>65</height> + <background_color> + <color red="255" green="255" blue="255" alpha="0"> + </color> + </background_color> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>30</x> + <width>120</width> + <height>29</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="25.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; +WidgetColorService = org.csstudio.display.builder.model.persist.WidgetColorService; + + +macros = widget.getEffectiveMacros(); +WIDDev = macros.getValue("WIDDev"); + +color = WidgetColorService.getColor("Background"); +if (WIDDev == "PT") +{ + color = WidgetColorService.getColor("GREEN-BACKGROUND"); +} +if (WIDDev == "TT") +{ + color = WidgetColorService.getColor("YELLOW-BACKGROUND"); +} +if (WIDDev == "FT") +{ + color = WidgetColorService.getColor("BLUE-BACKGROUND"); +} + + widget.setPropertyValue("background_color",color); +]]></text> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue.EGU</pv_name> + </script> + </scripts> + <tooltip>Device name</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_MeasValue</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue</pv_name> + <x>30</x> + <y>29</y> + <width>124</width> + <height>34</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="24.0"> + </font> + </font> + <precision>2</precision> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <rules> + <rule name="Disconnected" prop_id="background_color" out_exp="false"> + <exp bool_exp="pvInt0 >0"> + <value> + <color name="Read_Background" red="230" green="235" blue="232"> + </color> + </value> + </exp> + <exp bool_exp="pvInt0 == 0"> + <value> + <color name="INVALID" red="149" green="110" blue="221"> + </color> + </value> + </exp> + <pv_name>CrS-CMS:Cryo-PLC-01:PLCHashCorrectR</pv_name> + </rule> + </rules> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_width>1</border_width> + <border_color> + <color name="GRAY-BORDER" red="121" green="121" blue="121"> + </color> + </border_color> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <y>4</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "AnalogTransmitter_Faceplate_LakeShore.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>155</width> + <height>65</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_OnlyText_Horizontal.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_OnlyText_Horizontal.bob new file mode 100644 index 0000000000000000000000000000000000000000..f1476eca212e9ea7bc865ce8f62cf1f306e8a25e --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_OnlyText_Horizontal.bob @@ -0,0 +1,244 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>AnalogTransmitter_BlockIcon_OnlyText_Horizontal</name> + <width>270</width> + <height>30</height> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>31</x> + <width>95</width> + <height>29</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="25.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; +WidgetColorService = org.csstudio.display.builder.model.persist.WidgetColorService; + + +macros = widget.getEffectiveMacros(); +WIDDev = macros.getValue("WIDDev"); + +color = WidgetColorService.getColor("Background"); +if (WIDDev == "PT") +{ + color = WidgetColorService.getColor("GREEN-BACKGROUND"); +} +if (WIDDev == "TT") +{ + color = WidgetColorService.getColor("YELLOW-BACKGROUND"); +} +if (WIDDev == "FT") +{ + color = WidgetColorService.getColor("BLUE-BACKGROUND"); +} + + widget.setPropertyValue("background_color",color); +]]></text> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue.EGU</pv_name> + </script> + </scripts> + <tooltip>Device name</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_MeasValue</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue</pv_name> + <x>126</x> + <width>134</width> + <height>29</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="25.0"> + </font> + </font> + <transparent>true</transparent> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <rules> + <rule name="BackGroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0==0"> + <value> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </value> + </exp> + <exp bool_exp="pv0==1"> + <value> + <color name="WHITE" red="255" green="255" blue="255"> + </color> + </value> + </exp> + <exp bool_exp="pv0==2"> + <value> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:TransmitterColor</pv_name> + </rule> + </rules> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>1</x> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "AnalogTransmitter_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>270</width> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_OnlyText_Horizontal_Compact.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_OnlyText_Horizontal_Compact.bob new file mode 100644 index 0000000000000000000000000000000000000000..e3b7cdfbc4b1839dc1a70d170cc607557a4b3ae5 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_OnlyText_Horizontal_Compact.bob @@ -0,0 +1,238 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>AnalogTransmitter_BlockIcon_OnlyText_Horizontal_Compact</name> + <width>250</width> + <height>32</height> + <background_color> + <color red="255" green="255" blue="255" alpha="0"> + </color> + </background_color> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>26</x> + <y>2</y> + <width>120</width> + <height>29</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="25.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; +WidgetColorService = org.csstudio.display.builder.model.persist.WidgetColorService; + + +macros = widget.getEffectiveMacros(); +WIDDev = macros.getValue("WIDDev"); + +color = WidgetColorService.getColor("Background"); +if (WIDDev == "PT") +{ + color = WidgetColorService.getColor("GREEN-BACKGROUND"); +} +if (WIDDev == "TT") +{ + color = WidgetColorService.getColor("YELLOW-BACKGROUND"); +} +if (WIDDev == "FT") +{ + color = WidgetColorService.getColor("BLUE-BACKGROUND"); +} + + widget.setPropertyValue("background_color",color); +]]></text> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue.EGU</pv_name> + </script> + </scripts> + <tooltip>Device name</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_MeasValue</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue</pv_name> + <x>142</x> + <y>2</y> + <width>108</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="24.0"> + </font> + </font> + <precision>3</precision> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_width>1</border_width> + <border_color> + <color name="GRAY-BORDER" red="121" green="121" blue="121"> + </color> + </border_color> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <y>1</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + try + { + P_BlockIcon_LockID.setValue(crc); + } + + catch (e) { logger.info(" Locked ID cannot write pv"); } + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "AnalogTransmitter_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>250</width> + <height>32</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_OnlyText_Horizontal_TICP.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_OnlyText_Horizontal_TICP.bob new file mode 100644 index 0000000000000000000000000000000000000000..b40ac42e8d36e91b9b4f7c6c5fb2deda0709f58a --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_OnlyText_Horizontal_TICP.bob @@ -0,0 +1,202 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>AnalogTransmitter_BlockIcon_OnlyText_Horizontal_Compact</name> + <width>310</width> + <height>32</height> + <background_color> + <color red="255" green="255" blue="255" alpha="0"> + </color> + </background_color> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>1</x> + <y>1</y> + <width>120</width> + <height>29</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="25.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Device name</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_MeasValue</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Val</pv_name> + <x>123</x> + <y>2</y> + <width>108</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="24.0"> + </font> + </font> + <precision>3</precision> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_width>1</border_width> + <border_color> + <color name="GRAY-BORDER" red="121" green="121" blue="121"> + </color> + </border_color> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + try + { + P_BlockIcon_LockID.setValue(crc); + } + + catch (e) { logger.info(" Locked ID cannot write pv"); } + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "AnalogTransmitter_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <y>1</y> + <width>310</width> + <height>32</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_UnitLbl</name> + <text>${WIDUnit}</text> + <x>233</x> + <width>70</width> + <height>29</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="25.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <tooltip>Device name</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_OnlyText_Horizontal_Transparent.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_OnlyText_Horizontal_Transparent.bob new file mode 100644 index 0000000000000000000000000000000000000000..956dc26227f58b62cb03ad26778cc29c7b909df6 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_OnlyText_Horizontal_Transparent.bob @@ -0,0 +1,197 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>AnalogTransmitter_BlockIcon_OnlyText_Horizontal_Transparent</name> + <width>240</width> + <height>32</height> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>27</x> + <y>1</y> + <width>102</width> + <height>29</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="25.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <tooltip>Device name</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_MeasValue</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue</pv_name> + <x>130</x> + <y>1</y> + <width>110</width> + <height>29</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="25.0"> + </font> + </font> + <precision>2</precision> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_width>1</border_width> + <border_color> + <color name="GRAY-BORDER" red="121" green="121" blue="121"> + </color> + </border_color> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + try + { + P_BlockIcon_LockID.setValue(crc); + } + + catch (e) { logger.info(" Locked ID cannot write pv"); } + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "AnalogTransmitter_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <x>3</x> + <width>240</width> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_OnlyText_Vertical.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_OnlyText_Vertical.bob new file mode 100644 index 0000000000000000000000000000000000000000..f9a7265644cc2821ba43bda515e1da67364b738b --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_OnlyText_Vertical.bob @@ -0,0 +1,270 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>AnalogTransmitter_BlockIcon_OnlyText_Vertical</name> + <width>170</width> + <height>65</height> + <widget type="symbol" version="2.0.0"> + <name>WID_Locked</name> + <symbols> + <symbol>../../symbols/custom_v02/lock_locked@32.png</symbol> + </symbols> + <x>6</x> + <y>32</y> + <width>17</width> + <height>26</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:DevLocked</pv_name> + </rule> + </rules> + <tooltip>Device is locked</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>20</x> + <y>2</y> + <width>130</width> + <height>29</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="28.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; +WidgetColorService = org.csstudio.display.builder.model.persist.WidgetColorService; + + +macros = widget.getEffectiveMacros(); +WIDDev = macros.getValue("WIDDev"); + +color = WidgetColorService.getColor("Background"); +if (WIDDev == "PT") +{ + color = WidgetColorService.getColor("GREEN-BACKGROUND"); +} +if (WIDDev == "TT") +{ + color = WidgetColorService.getColor("YELLOW-BACKGROUND"); +} +if (WIDDev == "FT") +{ + color = WidgetColorService.getColor("BLUE-BACKGROUND"); +} + + widget.setPropertyValue("background_color",color); +]]></text> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue.EGU</pv_name> + </script> + </scripts> + <tooltip>Device name</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_MeasValue</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue</pv_name> + <x>21</x> + <y>27</y> + <width>127</width> + <height>34</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="24.0"> + </font> + </font> + <transparent>true</transparent> + <precision>2</precision> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <rules> + <rule name="BackGroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0==0"> + <value> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </value> + </exp> + <exp bool_exp="pv0==1"> + <value> + <color name="WHITE" red="255" green="255" blue="255"> + </color> + </value> + </exp> + <exp bool_exp="pv0==2"> + <value> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:TransmitterColor</pv_name> + </rule> + </rules> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <y>4</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "AnalogTransmitter_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>170</width> + <height>65</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_OnlyText_Vertical_Compact.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_OnlyText_Vertical_Compact.bob new file mode 100644 index 0000000000000000000000000000000000000000..95081e9b3450904a7a4937b629d7578d579d8a3e --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_OnlyText_Vertical_Compact.bob @@ -0,0 +1,254 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>AnalogTransmitter_BlockIcon_OnlyText_Vertical_Compact</name> + <width>155</width> + <height>65</height> + <background_color> + <color red="255" green="255" blue="255" alpha="0"> + </color> + </background_color> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>30</x> + <width>120</width> + <height>29</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="25.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; +WidgetColorService = org.csstudio.display.builder.model.persist.WidgetColorService; + + +macros = widget.getEffectiveMacros(); +WIDDev = macros.getValue("WIDDev"); + +color = WidgetColorService.getColor("Background"); +if (WIDDev == "PT") +{ + color = WidgetColorService.getColor("GREEN-BACKGROUND"); +} +if (WIDDev == "TT") +{ + color = WidgetColorService.getColor("YELLOW-BACKGROUND"); +} +if (WIDDev == "FT") +{ + color = WidgetColorService.getColor("BLUE-BACKGROUND"); +} + + widget.setPropertyValue("background_color",color); +]]></text> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue.EGU</pv_name> + </script> + </scripts> + <tooltip>Device name</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_MeasValue</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue</pv_name> + <x>30</x> + <y>29</y> + <width>123</width> + <height>34</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="24.0"> + </font> + </font> + <precision>2</precision> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <rules> + <rule name="Disconnected" prop_id="background_color" out_exp="false"> + <exp bool_exp="pvInt0 > 0"> + <value> + <color name="Read_Background" red="230" green="235" blue="232"> + </color> + </value> + </exp> + <exp bool_exp="pvInt0 == 0"> + <value> + <color name="INVALID" red="149" green="110" blue="221"> + </color> + </value> + </exp> + <pv_name>${PLCName}:PLCHashCorrectR</pv_name> + </rule> + </rules> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_width>1</border_width> + <border_color> + <color name="GRAY-BORDER" red="121" green="121" blue="121"> + </color> + </border_color> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <y>4</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + try + { + P_BlockIcon_LockID.setValue(crc); + } + + catch (e) { logger.info(" Locked ID cannot write pv"); } + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "AnalogTransmitter_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>155</width> + <height>65</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_OnlyText_Vertical_Transparent.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_OnlyText_Vertical_Transparent.bob new file mode 100644 index 0000000000000000000000000000000000000000..629a427e3bf800514e8f0868d02481ccc8213ebe --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_OnlyText_Vertical_Transparent.bob @@ -0,0 +1,310 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>AnalogTransmitter_BlockIcon_OnlyText_Vertical_Transparent</name> + <width>150</width> + <height>65</height> + <widget type="symbol" version="2.0.0"> + <name>WID_Locked</name> + <symbols> + <symbol>../../symbols/custom_v02/lock_locked@32.png</symbol> + </symbols> + <x>6</x> + <y>32</y> + <width>17</width> + <height>26</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:DevLocked</pv_name> + </rule> + </rules> + <tooltip>Device is locked</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>23</x> + <y>4</y> + <height>29</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="16.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; +WidgetColorService = org.csstudio.display.builder.model.persist.WidgetColorService; + + +macros = widget.getEffectiveMacros(); +WIDDev = macros.getValue("WIDDev"); + +color = WidgetColorService.getColor("Background"); +if (WIDDev == "PT") +{ + color = WidgetColorService.getColor("GREEN-BACKGROUND"); +} +if (WIDDev == "TT") +{ + color = WidgetColorService.getColor("YELLOW-BACKGROUND"); +} +if (WIDDev == "FT") +{ + color = WidgetColorService.getColor("BLUE-BACKGROUND"); +} + + widget.setPropertyValue("background_color",color); +]]></text> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue.EGU</pv_name> + </script> + </scripts> + <tooltip>Device name</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_MeasValue</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue</pv_name> + <x>23</x> + <y>32</y> + <height>29</height> + <transparent>true</transparent> + <precision>2</precision> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <rules> + <rule name="BackGroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0==0"> + <value> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </value> + </exp> + <exp bool_exp="pv0==1"> + <value> + <color name="WHITE" red="255" green="255" blue="255"> + </color> + </value> + </exp> + <exp bool_exp="pv0==2"> + <value> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:TransmitterColor</pv_name> + </rule> + </rules> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_IOErrorIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/WARNING@32.png</symbol> + </symbols> + <x>126</x> + <y>5</y> + <width>18</width> + <height>26</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == true)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == false)"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Module_Error</pv_name> + </rule> + </rules> + <tooltip>Siemens IO card error!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_MaintenanceIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/Wrench_error @32.png</symbol> + </symbols> + <x>126</x> + <y>33</y> + <width>16</width> + <height>26</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false)&&(pv1==false)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true)||(pv1==true)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:IO_Error</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Module_Error</pv_name> + </rule> + </rules> + <tooltip>Maintenace Needed!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>6</x> + <y>4</y> + <width>17</width> + <height>28</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "AnalogTransmitter_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>150</width> + <height>65</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_Pt100Temperature_OnlyText_Vertical.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_Pt100Temperature_OnlyText_Vertical.bob new file mode 100644 index 0000000000000000000000000000000000000000..b16cd7869093527dacb75bf671effe95437b6f36 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_Pt100Temperature_OnlyText_Vertical.bob @@ -0,0 +1,354 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>AnalogTransmitter_BlockIcon_Pt100Temperature_OnlyText_Vertical</name> + <width>170</width> + <height>65</height> + <widget type="rectangle" version="2.0.0"> + <name>Rectangle</name> + <width>170</width> + <height>65</height> + <line_width>1</line_width> + <line_color> + <color name="BLACK-BORDER" red="121" green="121" blue="121"> + </color> + </line_color> + <background_color> + <color red="255" green="255" blue="255" alpha="120"> + </color> + </background_color> + <corner_width>10</corner_width> + <corner_height>10</corner_height> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Locked</name> + <symbols> + <symbol>../../symbols/custom_v02/lock_locked@32.png</symbol> + </symbols> + <x>148</x> + <y>20</y> + <width>17</width> + <height>26</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:DevLocked</pv_name> + </rule> + </rules> + <tooltip>Device is locked</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>20</x> + <y>2</y> + <width>128</width> + <height>29</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="28.0"> + </font> + </font> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; +WidgetColorService = org.csstudio.display.builder.model.persist.WidgetColorService; + + +macros = widget.getEffectiveMacros(); +WIDDev = macros.getValue("WIDDev"); + +color = WidgetColorService.getColor("Background"); +if (WIDDev == "PT") +{ + color = WidgetColorService.getColor("GREEN-BACKGROUND"); +} +if (WIDDev == "TT") +{ + color = WidgetColorService.getColor("YELLOW-BACKGROUND"); +} +if (WIDDev == "FT") +{ + color = WidgetColorService.getColor("BLUE-BACKGROUND"); +} + + widget.setPropertyValue("background_color",color); +]]></text> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue.EGU</pv_name> + </script> + </scripts> + <tooltip>Device name</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_MeasValue</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue</pv_name> + <x>21</x> + <y>30</y> + <width>127</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="24.0"> + </font> + </font> + <transparent>true</transparent> + <precision>2</precision> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <rules> + <rule name="BackGroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0==0"> + <value> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </value> + </exp> + <exp bool_exp="pv0==1"> + <value> + <color name="WHITE" red="255" green="255" blue="255"> + </color> + </value> + </exp> + <exp bool_exp="pv0==2"> + <value> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:TransmitterColor</pv_name> + </rule> + </rules> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_IOErrorIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/WARNING@32.png</symbol> + </symbols> + <x>148</x> + <y>5</y> + <width>18</width> + <height>26</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == true)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == false)"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Module_Error</pv_name> + </rule> + </rules> + <tooltip>Siemens IO card error!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_MaintenanceIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/Wrench_error @32.png</symbol> + </symbols> + <x>148</x> + <y>33</y> + <width>16</width> + <height>26</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false)&&(pv1==false)&&(pv2==false)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true)||(pv1==true)||(pv2==true)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:DigitalInp_IO_Error</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Module_Error</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:AnalogInp_IO_Error</pv_name> + </rule> + </rules> + <tooltip>Maintenace Needed!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>6</x> + <y>4</y> + <width>17</width> + <height>28</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "AnalogTransmitter_Faceplate_Pt100_Temperature.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>150</width> + <height>65</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text>A</text> + <x>6</x> + <y>25</y> + <width>20</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="29.0"> + </font> + </font> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value> </value> + </exp> + <exp bool_exp="pv1 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_FreeRun</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_Pt100Temperature_OnlyText_Vertical_Compact.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_Pt100Temperature_OnlyText_Vertical_Compact.bob new file mode 100644 index 0000000000000000000000000000000000000000..fc22d7d1e6a5d7679946fd7401e0c64a5697ba47 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_Pt100Temperature_OnlyText_Vertical_Compact.bob @@ -0,0 +1,291 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>AnalogTransmitter_BlockIcon_Pt100Temperature_OnlyText_Vertical_Compact</name> + <width>170</width> + <height>65</height> + <widget type="symbol" version="2.0.0"> + <name>WID_Locked</name> + <symbols> + <symbol>../../symbols/custom_v02/lock_locked@32.png</symbol> + </symbols> + <x>148</x> + <y>20</y> + <width>17</width> + <height>26</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:DevLocked</pv_name> + </rule> + </rules> + <tooltip>Device is locked</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>20</x> + <y>2</y> + <width>128</width> + <height>29</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="28.0"> + </font> + </font> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; +WidgetColorService = org.csstudio.display.builder.model.persist.WidgetColorService; + + +macros = widget.getEffectiveMacros(); +WIDDev = macros.getValue("WIDDev"); + +color = WidgetColorService.getColor("Background"); +if (WIDDev == "PT") +{ + color = WidgetColorService.getColor("GREEN-BACKGROUND"); +} +if (WIDDev == "TT") +{ + color = WidgetColorService.getColor("YELLOW-BACKGROUND"); +} +if (WIDDev == "FT") +{ + color = WidgetColorService.getColor("BLUE-BACKGROUND"); +} + + widget.setPropertyValue("background_color",color); +]]></text> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue.EGU</pv_name> + </script> + </scripts> + <tooltip>Device name</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_MeasValue</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue</pv_name> + <x>21</x> + <y>30</y> + <width>127</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="24.0"> + </font> + </font> + <transparent>true</transparent> + <precision>2</precision> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <rules> + <rule name="BackGroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0==0"> + <value> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </value> + </exp> + <exp bool_exp="pv0==1"> + <value> + <color name="WHITE" red="255" green="255" blue="255"> + </color> + </value> + </exp> + <exp bool_exp="pv0==2"> + <value> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:TransmitterColor</pv_name> + </rule> + </rules> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <y>4</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text>A</text> + <x>6</x> + <y>25</y> + <width>20</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="29.0"> + </font> + </font> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value> </value> + </exp> + <exp bool_exp="pv1 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_FreeRun</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "AnalogTransmitter_Faceplate_Pt100_Temperature.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>170</width> + <height>65</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_Vacuum_OnlyText_Vertical.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_Vacuum_OnlyText_Vertical.bob new file mode 100644 index 0000000000000000000000000000000000000000..d0d5c2f318e8f3f1bc4f41a1bc810ad74f03015c --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_Vacuum_OnlyText_Vertical.bob @@ -0,0 +1,239 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>AnalogTransmitter_BlockIcon_Vacuum_OnlyText_Vertical</name> + <width>155</width> + <height>65</height> + <background_color> + <color red="0" green="0" blue="0" alpha="0"> + </color> + </background_color> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>22</x> + <y>2</y> + <width>133</width> + <height>29</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="25.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; +WidgetColorService = org.csstudio.display.builder.model.persist.WidgetColorService; + + +macros = widget.getEffectiveMacros(); +WIDDev = macros.getValue("WIDDev"); + +color = WidgetColorService.getColor("Background"); +if (WIDDev == "PT") +{ + color = WidgetColorService.getColor("GREEN-BACKGROUND"); +} +if (WIDDev == "TT") +{ + color = WidgetColorService.getColor("YELLOW-BACKGROUND"); +} +if (WIDDev == "FT") +{ + color = WidgetColorService.getColor("BLUE-BACKGROUND"); +} + + widget.setPropertyValue("background_color",color); +]]></text> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue.EGU</pv_name> + </script> + </scripts> + <tooltip>Device name</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_MeasValue</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue</pv_name> + <x>21</x> + <y>29</y> + <width>127</width> + <height>34</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="20.0"> + </font> + </font> + <format>3</format> + <precision>2</precision> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_width>1</border_width> + <border_color> + <color name="GRAY-BORDER" red="121" green="121" blue="121"> + </color> + </border_color> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <y>4</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + try + { + P_BlockIcon_LockID.setValue(crc); + } + + catch (e) { logger.info(" Locked ID cannot write pv"); } + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "AnalogTransmitter_Vacuum_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>154</width> + <height>65</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_Vertical_Left.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_Vertical_Left.bob new file mode 100644 index 0000000000000000000000000000000000000000..479c67668570092c178bb396c88658f4e6d012b8 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_Vertical_Left.bob @@ -0,0 +1,373 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>AnalogTransmitter_BlockIcon_Vertical_Left</name> + <width>265</width> + <height>130</height> + <widget type="rectangle" version="2.0.0"> + <name>WID_Rect</name> + <width>265</width> + <height>130</height> + <line_width>0</line_width> + <background_color> + <color red="0" green="0" blue="0" alpha="18"> + </color> + </background_color> + <corner_width>20</corner_width> + <corner_height>20</corner_height> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIcon_17</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:TransmitterColor</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/AnalogTransmitter/AnalogTransmitter_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom/AnalogTransmitter_OK.png</symbol> + <symbol>../../symbols/custom/AnalogTransmitter_WARNING.png</symbol> + </symbols> + <x>38</x> + <y>33</y> + <width>64</width> + <height>64</height> + <actions execute_as_one="true"> + </actions> + <tooltip>Open faceplate</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon_6</name> + <text></text> + <x>7</x> + <y>49</y> + <width>30</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="29.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value> </value> + </exp> + <exp bool_exp="pv1 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_FreeRun</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_DeviceLBL_1</name> + <text>${WIDDev}</text> + <x>38</x> + <y>33</y> + <width>64</width> + <height>64</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="32.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Device name</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Locked_2</name> + <symbols> + <symbol>../../symbols/custom_v02/lock_locked@32.png</symbol> + </symbols> + <x>135</x> + <y>63</y> + <width>23</width> + <height>23</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:DevLocked</pv_name> + </rule> + </rules> + <tooltip>Device is locked</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon_5</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>106</x> + <y>9</y> + <width>24</width> + <height>24</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_IOErrorIcon_2</name> + <symbols> + <symbol>../../symbols/custom_v02/WARNING@32.png</symbol> + </symbols> + <x>10</x> + <y>97</y> + <width>24</width> + <height>24</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == true)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == false)"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Module_Error</pv_name> + </rule> + </rules> + <tooltip>Siemens IO card error!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_MaintenanceIcon_6</name> + <symbols> + <symbol>../../symbols/custom_v02/Wrench_error @32.png</symbol> + </symbols> + <x>107</x> + <y>98</y> + <width>22</width> + <height>24</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false)&&(pv1==false)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true)||(pv1==true)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:IO_Error</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Module_Error</pv_name> + </rule> + </rules> + <tooltip>Maintenace Needed!</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL_5</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>138</x> + <y>5</y> + <width>115</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="18.0"> + </font> + </font> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; +WidgetColorService = org.csstudio.display.builder.model.persist.WidgetColorService; + + +macros = widget.getEffectiveMacros(); +WIDDev = macros.getValue("WIDDev"); + +color = WidgetColorService.getColor("Background"); +if (WIDDev == "PT") +{ + color = WidgetColorService.getColor("GREEN-BACKGROUND"); +} +if (WIDDev == "TT") +{ + color = WidgetColorService.getColor("YELLOW-BACKGROUND"); +} +if (WIDDev == "FT") +{ + color = WidgetColorService.getColor("BLUE-BACKGROUND"); +} + + widget.setPropertyValue("background_color",color); +]]></text> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue.EGU</pv_name> + </script> + </scripts> + <tooltip>Device name</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_MeasValue</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue</pv_name> + <x>162</x> + <y>42</y> + <width>93</width> + <transparent>true</transparent> + <precision>2</precision> + <show_units>false</show_units> + <horizontal_alignment>1</horizontal_alignment> + <wrap_words>false</wrap_words> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_EGU</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue.EGU</pv_name> + <x>192</x> + <y>65</y> + <width>63</width> + <transparent>true</transparent> + <show_units>false</show_units> + <horizontal_alignment>1</horizontal_alignment> + <wrap_words>false</wrap_words> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_LBL_MV</name> + <text>MV:</text> + <x>136</x> + <y>43</y> + <width>26</width> + <horizontal_alignment>2</horizontal_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "AnalogTransmitter_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>265</width> + <height>130</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_Vertical_Right.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_Vertical_Right.bob new file mode 100644 index 0000000000000000000000000000000000000000..47d44c727160c2f5b6d48eec997cb311f2f23051 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_Vertical_Right.bob @@ -0,0 +1,373 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>AnalogTransmitter_BlockIcon_Vertical_Right</name> + <width>265</width> + <height>130</height> + <widget type="rectangle" version="2.0.0"> + <name>WID_Rect</name> + <width>265</width> + <height>130</height> + <line_width>0</line_width> + <background_color> + <color red="0" green="0" blue="0" alpha="18"> + </color> + </background_color> + <corner_width>20</corner_width> + <corner_height>20</corner_height> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIcon</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:TransmitterColor</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/AnalogTransmitter/AnalogTransmitter_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom/AnalogTransmitter_OK.png</symbol> + <symbol>../../symbols/custom/AnalogTransmitter_WARNING.png</symbol> + </symbols> + <x>161</x> + <y>33</y> + <width>64</width> + <height>64</height> + <actions execute_as_one="true"> + </actions> + <tooltip>Open faceplate</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text></text> + <x>225</x> + <y>49</y> + <width>30</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="29.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value> </value> + </exp> + <exp bool_exp="pv1 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_FreeRun</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_DeviceLBL</name> + <text>${WIDDev}</text> + <x>161</x> + <y>33</y> + <width>64</width> + <height>64</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="32.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Device name</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Locked</name> + <symbols> + <symbol>../../symbols/custom_v02/lock_locked@32.png</symbol> + </symbols> + <x>13</x> + <y>63</y> + <width>23</width> + <height>23</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:DevLocked</pv_name> + </rule> + </rules> + <tooltip>Device is locked</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>229</x> + <y>9</y> + <width>24</width> + <height>24</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_IOErrorIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/WARNING@32.png</symbol> + </symbols> + <x>133</x> + <y>97</y> + <width>24</width> + <height>24</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == true)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == false)"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Module_Error</pv_name> + </rule> + </rules> + <tooltip>Siemens IO card error!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_MaintenanceIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/Wrench_error @32.png</symbol> + </symbols> + <x>230</x> + <y>98</y> + <width>22</width> + <height>24</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false)&&(pv1==false)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true)||(pv1==true)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:IO_Error</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Module_Error</pv_name> + </rule> + </rules> + <tooltip>Maintenace Needed!</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>16</x> + <y>5</y> + <width>115</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="18.0"> + </font> + </font> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; +WidgetColorService = org.csstudio.display.builder.model.persist.WidgetColorService; + + +macros = widget.getEffectiveMacros(); +WIDDev = macros.getValue("WIDDev"); + +color = WidgetColorService.getColor("Background"); +if (WIDDev == "PT") +{ + color = WidgetColorService.getColor("GREEN-BACKGROUND"); +} +if (WIDDev == "TT") +{ + color = WidgetColorService.getColor("YELLOW-BACKGROUND"); +} +if (WIDDev == "FT") +{ + color = WidgetColorService.getColor("BLUE-BACKGROUND"); +} + + widget.setPropertyValue("background_color",color); +]]></text> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue.EGU</pv_name> + </script> + </scripts> + <tooltip>Device name</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_MeasValue</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue</pv_name> + <x>42</x> + <y>42</y> + <width>90</width> + <transparent>true</transparent> + <precision>2</precision> + <show_units>false</show_units> + <horizontal_alignment>1</horizontal_alignment> + <wrap_words>false</wrap_words> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_EGU</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue.EGU</pv_name> + <x>69</x> + <y>65</y> + <width>63</width> + <transparent>true</transparent> + <show_units>false</show_units> + <horizontal_alignment>1</horizontal_alignment> + <wrap_words>false</wrap_words> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_LBL_MV</name> + <text>MV:</text> + <x>14</x> + <y>43</y> + <width>28</width> + <horizontal_alignment>2</horizontal_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "AnalogTransmitter_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>265</width> + <height>130</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_Faceplate.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_Faceplate.bob new file mode 100644 index 0000000000000000000000000000000000000000..0952977202f0fce4fc0fbb375fd41ecc174eb5d6 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_Faceplate.bob @@ -0,0 +1,1450 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>Analog_TRANSMITTER_Faceplate</name> + <width>834</width> + <height>697</height> + <grid_visible>false</grid_visible> + <widget type="tabs" version="2.0.0"> + <name>Tabs</name> + <tabs> + <tab> + <name> Status</name> + <children> + <widget type="group" version="2.0.0"> + <name>Device_Status_Group</name> + <width>810</width> + <height>600</height> + <style>3</style> + <transparent>true</transparent> + <widget type="group" version="2.0.0"> + <name>Status</name> + <x>10</x> + <y>10</y> + <width>290</width> + <height>270</height> + <style>3</style> + <background_color> + <color name="BACKGROUND" red="220" green="225" blue="221"> + </color> + </background_color> + <widget type="rectangle" version="2.0.0"> + <name>Rect_Meas_Title</name> + <width>290</width> + <height>59</height> + <line_width>0</line_width> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <corner_width>10</corner_width> + <corner_height>10</corner_height> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Rect_Meas_Back</name> + <y>30</y> + <width>290</width> + <height>240</height> + <line_width>2</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <corner_height>10</corner_height> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Meas_Title</name> + <class>HEADER2</class> + <text>Status</text> + <width>290</width> + <height>31</height> + <font use_class="true"> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="TEXT-LIGHT" red="230" green="230" blue="230"> + </color> + </foreground_color> + <background_color use_class="true"> + <color name="Background" red="220" green="225" blue="221"> + </color> + </background_color> + <transparent use_class="true">true</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Meas_Label</name> + <text>${WIDLabel}</text> + <x>5</x> + <y>186</y> + <width>280</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FeedbackForceVal</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_ForceValue</pv_name> + <x>176</x> + <y>228</y> + <width>90</width> + <height>25</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback force Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textentry" version="3.0.0"> + <name>INP_ForceValue</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_ForceValue</pv_name> + <x>76</x> + <y>228</y> + <width>90</width> + <height>25</height> + <precision>2</precision> + <show_units>false</show_units> + <rules> + <rule name="Enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ForceText</name> + <text>Force:</text> + <x>16</x> + <y>230</y> + <width>50</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="meter" version="3.0.0"> + <name>Meter_Meas_Val</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:MeasValue</pv_name> + <x>8</x> + <y>33</y> + <width>280</width> + <height>150</height> + <precision>2</precision> + <show_limits>false</show_limits> + <rules> + <rule name="HIHI" prop_id="level_hihi" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HIHI</pv_name> + </rule> + <rule name="HIGH" prop_id="level_high" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HI</pv_name> + </rule> + <rule name="LOW" prop_id="level_low" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LO</pv_name> + </rule> + <rule name="LOLO" prop_id="level_lolo" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LOLO</pv_name> + </rule> + <rule name="ScaleLOW" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + </rule> + <rule name="ScaleHIGH" prop_id="maximum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleHIGH</pv_name> + </rule> + <rule name="MajorTick" prop_id="major_tick_space" out_exp="true"> + <exp bool_exp="true"> + <expression>(pv1 - pv0) / 10</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleHIGH</pv_name> + </rule> + <rule name="MinorTick" prop_id="minor_tick_space" out_exp="true"> + <exp bool_exp="true"> + <expression>(pv1 - pv0) / 100</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleHIGH</pv_name> + </rule> + </rules> + <tooltip>Pressure and limits</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <limits_from_pv>false</limits_from_pv> + <needle_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </needle_color> + <knob_color> + <color name="Button_Background" red="236" green="236" blue="236"> + </color> + </knob_color> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>Limits</name> + <x>12</x> + <y>300</y> + <width>290</width> + <height>190</height> + <style>3</style> + <background_color> + <color name="BACKGROUND" red="220" green="225" blue="221"> + </color> + </background_color> + <widget type="rectangle" version="2.0.0"> + <name>Rect_Limits_Ttile</name> + <width>290</width> + <height>59</height> + <line_width>0</line_width> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <corner_width>10</corner_width> + <corner_height>10</corner_height> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Rect_Limits_Back</name> + <y>30</y> + <width>290</width> + <height>160</height> + <line_width>2</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <corner_height>10</corner_height> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Limits_title</name> + <class>HEADER2</class> + <text>Limits</text> + <width>290</width> + <height>31</height> + <font use_class="true"> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="TEXT-LIGHT" red="230" green="230" blue="230"> + </color> + </foreground_color> + <background_color use_class="true"> + <color name="Background" red="220" green="225" blue="221"> + </color> + </background_color> + <transparent use_class="true">true</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_HIHI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HIHI</pv_name> + <x>180</x> + <y>53</y> + <width>80</width> + <height>25</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value HIHI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_HIGH</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HI</pv_name> + <x>180</x> + <y>83</y> + <width>80</width> + <height>25</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value HIGH</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_LOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LO</pv_name> + <x>180</x> + <y>113</y> + <width>80</width> + <height>25</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value LOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_LOLO</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LOLO</pv_name> + <x>180</x> + <y>143</y> + <width>80</width> + <height>25</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value LOLO</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_HIHI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_HIHI</pv_name> + <x>80</x> + <y>53</y> + <width>90</width> + <height>25</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="MinimumRule" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + </rule> + </rules> + <tooltip>Alarm HIHI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <maximum>500.0</maximum> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_HIGH</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_HI</pv_name> + <x>80</x> + <y>83</y> + <width>90</width> + <height>25</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="MinimumRule" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + </rule> + </rules> + <tooltip>Warning HIGH</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <maximum>500.0</maximum> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_LOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_LO</pv_name> + <x>80</x> + <y>113</y> + <width>90</width> + <height>25</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="MinimumRule" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + </rule> + <rule name="MaximumRule" prop_id="maximum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleHIGH</pv_name> + </rule> + </rules> + <tooltip>Warning LOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_LOLO</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_LOLO</pv_name> + <x>80</x> + <y>143</y> + <width>90</width> + <height>25</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="MinimumRule" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + </rule> + <rule name="MaximumRule" prop_id="maximum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleHIGH</pv_name> + </rule> + </rules> + <tooltip>Alarm LOLO</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HIHI</name> + <text>HIHI:</text> + <x>20</x> + <y>55</y> + <width>50</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HIGH</name> + <text>HIGH:</text> + <x>20</x> + <y>85</y> + <width>50</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_LOW</name> + <text>LOW:</text> + <x>20</x> + <y>115</y> + <width>50</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_LOLO</name> + <text>LOLO:</text> + <x>20</x> + <y>145</y> + <width>50</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>OP Modes</name> + <x>320</x> + <y>10</y> + <width>230</width> + <height>170</height> + <style>3</style> + <background_color> + <color name="BACKGROUND" red="220" green="225" blue="221"> + </color> + </background_color> + <widget type="rectangle" version="2.0.0"> + <name>Rect_Mode_Title</name> + <width>230</width> + <height>59</height> + <line_width>0</line_width> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <corner_width>10</corner_width> + <corner_height>10</corner_height> + </widget> + <widget type="label" version="2.0.0"> + <name>Rect_LB_Title</name> + <class>HEADER2</class> + <text>OP Modes</text> + <width>230</width> + <height>31</height> + <font use_class="true"> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="TEXT-LIGHT" red="230" green="230" blue="230"> + </color> + </foreground_color> + <background_color use_class="true"> + <color name="Background" red="220" green="225" blue="221"> + </color> + </background_color> + <transparent use_class="true">true</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Rect_Mode_Back</name> + <y>30</y> + <width>230</width> + <height>140</height> + <line_width>2</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <corner_height>10</corner_height> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Mode_Auto</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_FreeRun</pv_name> + <x>63</x> + <y>61</y> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode Freerun</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Mode_Auto</name> + <text>Auto</text> + <x>93</x> + <y>60</y> + <width>79</width> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Mode_Forced</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <x>63</x> + <y>112</y> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode Forced</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Mode_Forced</name> + <text>Forced</text> + <x>93</x> + <y>111</y> + <width>79</width> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>Messages</name> + <x>320</x> + <y>200</y> + <width>230</width> + <height>132</height> + <style>3</style> + <background_color> + <color name="BACKGROUND" red="220" green="225" blue="221"> + </color> + </background_color> + <widget type="rectangle" version="2.0.0"> + <name>Rect_Msg_Title</name> + <width>230</width> + <height>59</height> + <line_width>0</line_width> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <corner_width>10</corner_width> + <corner_height>10</corner_height> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Msg_Title</name> + <class>HEADER2</class> + <text>Messages</text> + <width>230</width> + <height>31</height> + <font use_class="true"> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="TEXT-LIGHT" red="230" green="230" blue="230"> + </color> + </foreground_color> + <background_color use_class="true"> + <color name="Background" red="220" green="225" blue="221"> + </color> + </background_color> + <transparent use_class="true">true</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Rect_Msg_Back</name> + <y>30</y> + <width>230</width> + <height>102</height> + <line_width>2</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <corner_height>10</corner_height> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm</name> + <text>- Alarms latching disabled</text> + <x>20</x> + <y>80</y> + <width>190</width> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitForce</name> + <text>- Force mode inhibited</text> + <x>20</x> + <y>50</y> + <width>190</width> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Force</pv_name> + </rule> + </rules> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>Alarms</name> + <x>570</x> + <y>10</y> + <width>230</width> + <height>480</height> + <style>3</style> + <background_color> + <color name="BACKGROUND" red="220" green="225" blue="221"> + </color> + </background_color> + <widget type="rectangle" version="2.0.0"> + <name>Rect_ALM_Title</name> + <width>230</width> + <height>59</height> + <line_width>0</line_width> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <corner_width>10</corner_width> + <corner_height>10</corner_height> + <rules> + <rule name="BackColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0==0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 1"> + <value> + <color name="RED-GROUP-BORDER" red="167" green="134" blue="130"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Title</name> + <class>HEADER2</class> + <text>Alarms</text> + <width>230</width> + <height>31</height> + <font use_class="true"> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="TEXT-LIGHT" red="230" green="230" blue="230"> + </color> + </foreground_color> + <background_color use_class="true"> + <color name="Background" red="220" green="225" blue="221"> + </color> + </background_color> + <transparent use_class="true">true</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Rect_ALM_Back</name> + <y>30</y> + <width>230</width> + <height>450</height> + <line_width>2</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <corner_height>10</corner_height> + <rules> + <rule name="Linecolor" prop_id="line_color" out_exp="false"> + <exp bool_exp="pv0==0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <exp bool_exp="pv0==1"> + <value> + <color name="RED-GROUP-BORDER" red="167" green="134" blue="130"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + </rule> + <rule name="Backcolor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0==0"> + <value> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </value> + </exp> + <exp bool_exp="pv0==1"> + <value> + <color name="RED-GROUP-BACKGROUND" red="208" green="175" blue="172"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Overrange</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Overrange</pv_name> + <x>20</x> + <y>59</y> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Overrange</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_HIHI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:HIHI</pv_name> + <x>20</x> + <y>111</y> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>HIHI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_HI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:HI</pv_name> + <x>20</x> + <y>163</y> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="WARNING" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>HI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_LOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LO</pv_name> + <x>20</x> + <y>215</y> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="WARNING" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>LOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_LOWLOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LOLO</pv_name> + <x>20</x> + <y>267</y> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>LOWLOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Underrange</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Underrange</pv_name> + <x>20</x> + <y>319</y> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Underrange</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_IO_error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Module_Error</pv_name> + <x>20</x> + <y>371</y> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O Error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Module_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Module_Error</pv_name> + <x>20</x> + <y>426</y> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Siemens Module Error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Overrange</name> + <text>Overrange</text> + <x>60</x> + <y>59</y> + <width>160</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_HIHI</name> + <text>HIHI</text> + <x>60</x> + <y>111</y> + <width>160</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_HI</name> + <text>HI</text> + <x>60</x> + <y>163</y> + <width>160</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_LOW</name> + <text>LOW</text> + <x>60</x> + <y>215</y> + <width>160</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_LOLO</name> + <text>LOWLOW</text> + <x>60</x> + <y>267</y> + <width>160</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Underrange</name> + <text>Underrange</text> + <x>60</x> + <y>319</y> + <width>160</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_IO_Error</name> + <text>I/O Error</text> + <x>60</x> + <y>371</y> + <width>160</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Module_Error</name> + <text>Siemens Module Error</text> + <x>60</x> + <y>426</y> + <width>160</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_UNLOCK</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceUnlock</pv_name> + <value>1</value> + <description>Write ForceUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <value>0</value> + <description>Write EnaForceUnlock</description> + </action> + </actions> + <text>Forced Unlock</text> + <x>570</x> + <y>504</y> + <width>230</width> + <height>35</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 1)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 0)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force unlock device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_ACK</name> + <actions> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_AckAlarm</pv_name> + <value>1</value> + <description>Acknowledge alarms</description> + </action> + </actions> + <text>Acknowledge Alarm</text> + <x>570</x> + <y>554</y> + <width>230</width> + <height>35</height> + <background_color> + <color name="ORANGE" red="254" green="194" blue="81"> + </color> + </background_color> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1) || (pv2 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0) && (pv2 == 1)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + <tooltip>Acknowledge alarms</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_APPLY</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceVal</pv_name> + <text>Apply Forced Value</text> + <x>321</x> + <y>553</y> + <width>230</width> + <height>35</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Force</pv_name> + <text>Forced</text> + <x>321</x> + <y>504</y> + <width>230</width> + <height>35</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableForcedBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>FORCE operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_AUTO</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_FreeRun</pv_name> + <text>Auto</text> + <x>71</x> + <y>506</y> + <width>230</width> + <height>35</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableFreeRunBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Free run operation mode</tooltip> + </widget> + </widget> + </children> + </tab> + <tab> + <name> Trend</name> + <children> + <widget type="databrowser" version="2.0.0"> + <name>DataBrowser</name> + <file>AnalogTransmitter_Faceplate_Trend.plt</file> + <x>3</x> + <width>778</width> + <height>597</height> + </widget> + </children> + </tab> + </tabs> + <x>10</x> + <y>55</y> + <width>814</width> + <height>633</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="21.0"> + </font> + </font> + <tab_height>40</tab_height> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Header Bar</name> + <width>834</width> + <height>50</height> + <line_width>0</line_width> + <line_color> + <color red="0" green="0" blue="255" alpha="0"> + </color> + </line_color> + <background_color> + <color name="PRIMARY-HEADER-BACKGROUND" red="151" green="188" blue="202"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HeaderPVName</name> + <text>${SecSub}:${Dis}-${Dev}-${Index}</text> + <x>20</x> + <width>580</width> + <height>50</height> + <font> + <font name="Header 1" family="Source Sans Pro" style="BOLD_ITALIC" size="36.0"> + </font> + </font> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Locked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>0</value> + <description>Write CMD_DEVUNLOCK</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock(99)</pv_name> + <value>1</value> + <description>Run Lock script</description> + </action> + </actions> + <text>Lock</text> + <x>725</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + </rule> + </rules> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: generate unique Machine ID from the network adapters to use it for locking mechanism*/ + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); + +var Lock = pvs[0];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock*/ +var Cmd_DevLock = pvs[1];/*${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock*/ +var P_Faceplate_LockID = pvs[2];/*${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID*/ +var Inhibit_Lock = pvs[3];/*${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock*/ +var Faceplate_LockID = pvs[4];/*${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID*/ +var BlockIcon_LockID = pvs[5];/*${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID*/ +var EnaForceUnlock = pvs[6];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock*/ +var DevLocked = pvs[7];/*${SecSub}:${Dis}-${Dev}-${Index}:DevLocked*/ + + + + +var PV1 = PVUtil.getLong(Faceplate_LockID); /*Faceplate_LockID*/ +var PV2 = PVUtil.getLong(BlockIcon_LockID); /*BlockIcon_LockID*/ + +//OnShow +if (PVUtil.getLong(DevLocked) == 1) { /*DevLocked*/ + + if (PV1.toString() == PV2.toString()){ /*FaceplateLockID != BlockIconeLockID*/ + + logger.info(" Owner"); + EnaForceUnlock.setValue(0); /*Write EnaForceUnlock*/ + + } else + { + logger.info(" Faceplate FaceplateLockID "+ PV1); + logger.info(" Faceplate BlockIconeLockID "+ PV2); + + logger.info(" Guest"); + EnaForceUnlock.setValue(1); /*Write EnaForceUnlock*/ + } + + + +} +// OnClick +if (PVUtil.getLong(Lock) != 99) { /*loc://Lock, check if the script was triggered because of a button press or initilization*/ + if (PVUtil.getLong(Inhibit_Lock) == 0) { /*Inhibit_lock, check if locking is inhibited*/ + + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + UniqueText = UniqueText + intf.getName() + intf.getDisplayName(); + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + UniqueText = UniqueText + enumIpAddr.nextElement().toString(); + } + } + + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText); + logger.info(" Faceplate machine ID: "+crc); + P_Faceplate_LockID.setValue(crc); /*Write P_Faceplate_LockID*/ + Cmd_DevLock.setValue(1); /*Write Lock*/ + + } /*Lock inhibit*/ +} /*onshow*/ + +]]></text> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID</pv_name> + <pv_name trigger="false">loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + </script> + </scripts> + <tooltip>Lock this device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Unlocked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>1</value> + <description>Write CMD_DevUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <value>0</value> + <description>Write CMD_DevLock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + </actions> + <text>Unlock</text> + <x>725</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false) || (pv1 == true) || (pv2 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true) && (pv1 == false) && (pv2 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Unlock this device</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_Faceplate_CABTR_Temperature.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_Faceplate_CABTR_Temperature.bob new file mode 100644 index 0000000000000000000000000000000000000000..cdf4d469b9b59fc06e7b73e41ef2b73cacb9f540 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_Faceplate_CABTR_Temperature.bob @@ -0,0 +1,1535 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>AnalogTransmitter_Faceplate_CABTR_Temperature</name> + <width>965</width> + <height>790</height> + <widget type="tabs" version="2.0.0"> + <name>Tabs</name> + <tabs> + <tab> + <name>Status</name> + <children> + <widget type="group" version="2.0.0"> + <name>group.status</name> + <x>10</x> + <y>10</y> + <height>300</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.border</name> + <width>300</width> + <height>300</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>260</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Status</name> + <text>STATUS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Status_Title</name> + <text>${WIDLabel}</text> + <x>10</x> + <y>200</y> + <width>280</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ForceText</name> + <text>Force:</text> + <x>15</x> + <y>245</y> + <width>55</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textentry" version="3.0.0"> + <name>INP_ForceValue</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_ForceValue</pv_name> + <x>80</x> + <y>245</y> + <height>30</height> + <font> + <font name="NORMAL-SANS-BOLD" family="Source Sans Pro" style="BOLD" size="16.0"> + </font> + </font> + <precision>2</precision> + <show_units>false</show_units> + <rules> + <rule name="Enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FeedbackForceVal</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_ForceValue</pv_name> + <x>190</x> + <y>245</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Feedback force Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="meter" version="3.0.0"> + <name>Meter_Meas_Val</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:MeasValue</pv_name> + <x>7</x> + <y>36</y> + <width>290</width> + <height>165</height> + <precision>2</precision> + <show_limits>false</show_limits> + <rules> + <rule name="HIHI" prop_id="level_hihi" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HIHI</pv_name> + </rule> + <rule name="HIGH" prop_id="level_high" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HI</pv_name> + </rule> + <rule name="LOW" prop_id="level_low" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LO</pv_name> + </rule> + <rule name="LOLO" prop_id="level_lolo" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LOLO</pv_name> + </rule> + <rule name="MajorTick" prop_id="major_tick_space" out_exp="true"> + <exp bool_exp="true"> + <expression>(pv1 - pv0) / 10</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleHIGH</pv_name> + </rule> + <rule name="MinorTick" prop_id="minor_tick_space" out_exp="true"> + <exp bool_exp="true"> + <expression>(pv1 - pv0) / 100</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleHIGH</pv_name> + </rule> + </rules> + <tooltip>Temperature and limits</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <limits_from_pv>false</limits_from_pv> + <maximum>300.0</maximum> + <needle_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </needle_color> + <knob_color> + <color name="Button_Background" red="236" green="236" blue="236"> + </color> + </knob_color> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.op.modes</name> + <x>320</x> + <y>10</y> + <height>300</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.border</name> + <width>300</width> + <height>300</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>260</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OP_MODES</name> + <text>OP MODES</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_FreeRun</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_FreeRun</pv_name> + <x>78</x> + <y>63</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode Freerun</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_FREERUN</name> + <text>FREERUN</text> + <x>113</x> + <y>63</y> + <width>70</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Forced</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <x>78</x> + <y>98</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode Forced</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_FORCED_1</name> + <text>FORCED</text> + <x>113</x> + <y>98</y> + <width>70</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_MESSAGES_1</name> + <text>MESSAGES</text> + <x>5</x> + <y>160</y> + <width>290</width> + <font> + <font name="Fine Print" family="Source Sans Pro" style="REGULAR" size="14.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitForce</name> + <text>- Force mode inhibited</text> + <x>15</x> + <y>210</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <transparent>false</transparent> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Force</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm</name> + <text>- Alarms latching enabled</text> + <x>15</x> + <y>230</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <transparent>false</transparent> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm_1</name> + <text>- Alarms latching disabled</text> + <x>15</x> + <y>230</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <transparent>false</transparent> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.alarms</name> + <x>630</x> + <y>10</y> + <height>557</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.border</name> + <width>300</width> + <height>550</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>506</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALARMS</name> + <text>ALARMS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackgroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Group alarm</tooltip> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Overrange</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LinearizationFail</pv_name> + <x>55</x> + <y>50</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Overrange</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_LinearizationFail</name> + <text>Linearization Fail</text> + <x>90</x> + <y>50</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_HIHI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:HIHI</pv_name> + <x>55</x> + <y>85</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>HIHI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_HIHI</name> + <text>HIHI</text> + <x>90</x> + <y>85</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_HI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:HI</pv_name> + <x>55</x> + <y>120</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="WARNING" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>HI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_HI</name> + <text>HI</text> + <x>90</x> + <y>120</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_LOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LO</pv_name> + <x>55</x> + <y>155</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="WARNING" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>LOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_LOW</name> + <text>LOW</text> + <x>90</x> + <y>155</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_LOWLOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LOLO</pv_name> + <x>55</x> + <y>190</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>LOWLOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_LOLO</name> + <text>LOWLOW</text> + <x>90</x> + <y>190</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Underrange</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:MeasureFail</pv_name> + <x>55</x> + <y>225</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Underrange</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_MeasureFail</name> + <text>MeasureFail</text> + <x>90</x> + <y>225</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_IO_error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:PN_Module_Error</pv_name> + <x>55</x> + <y>260</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O Error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_PN_Error</name> + <text>PN Module Error</text> + <x>90</x> + <y>260</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.limits</name> + <x>10</x> + <y>320</y> + <height>246</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.limits.border</name> + <width>300</width> + <height>239</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.limits.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>196</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Limits</name> + <text>LIMITS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HIHI</name> + <text>HIHI:</text> + <x>15</x> + <y>50</y> + <width>55</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_HIHI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HIHI</pv_name> + <x>190</x> + <y>50</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value HIHI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_HIHI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_HIHI</pv_name> + <x>80</x> + <y>50</y> + <height>30</height> + <format>0</format> + <precision>2</precision> + <tooltip>Alarm HIHI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <maximum>500.0</maximum> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_HIGH</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_HI</pv_name> + <x>80</x> + <y>90</y> + <height>30</height> + <format>0</format> + <precision>2</precision> + <tooltip>Warning HIGH</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <maximum>500.0</maximum> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HIGH</name> + <text>HIGH:</text> + <x>15</x> + <y>90</y> + <width>55</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_HIGH</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HI</pv_name> + <x>190</x> + <y>90</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value HIGH</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_LOW</name> + <text>LOW:</text> + <x>15</x> + <y>140</y> + <width>55</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_LOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_LO</pv_name> + <x>80</x> + <y>140</y> + <height>30</height> + <format>0</format> + <precision>2</precision> + <tooltip>Warning LOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <maximum>500.0</maximum> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_LOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LO</pv_name> + <x>190</x> + <y>140</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value LOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_LOLO</name> + <text>LOLO:</text> + <x>15</x> + <y>180</y> + <width>55</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_LOLO</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_LOLO</pv_name> + <x>80</x> + <y>180</y> + <height>30</height> + <format>0</format> + <precision>2</precision> + <tooltip>Alarm LOLO</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <maximum>500.0</maximum> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_LOLO</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LOLO</pv_name> + <x>190</x> + <y>180</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value LOLO</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>buttons.bar</name> + <x>10</x> + <y>575</y> + <width>920</width> + <height>80</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_AUTO</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_FreeRun</pv_name> + <text>FREERUN</text> + <x>15</x> + <y>616</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableFreeRunBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Free run operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Force</pv_name> + <text>FORCE</text> + <x>220</x> + <y>616</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableForcedBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>FORCE operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_UNLOCK</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceUnlock</pv_name> + <value>1</value> + <description>Write ForceUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <value>0</value> + <description>Write EnaForceUnlock</description> + </action> + </actions> + <text>FORCE UNLOCK</text> + <x>725</x> + <y>580</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 1)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 0)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force unlock device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_APPLY</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceVal</pv_name> + <text>APPLY VALUE</text> + <x>220</x> + <y>580</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_ACK</name> + <actions> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_AckAlarm</pv_name> + <value>1</value> + <description>Acknowledge alarms</description> + </action> + </actions> + <text>Acknowledge Alarm</text> + <x>725</x> + <y>616</y> + <width>200</width> + <height>33</height> + <background_color> + <color name="ORANGE" red="254" green="194" blue="81"> + </color> + </background_color> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1) || (pv2 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0) && (pv2 == 1)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + <tooltip>Acknowledge alarms</tooltip> + </widget> + <widget type="group" version="2.0.0"> + <name>group.Cernox</name> + <x>318</x> + <y>322</y> + <height>249</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.border_1</name> + <width>300</width> + <height>238</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.background_1</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>195</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Cernox</name> + <text>CABTR Channel</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TT_Resistance</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Resistance</pv_name> + <x>118</x> + <y>56</y> + <width>156</width> + <height>25</height> + <precision>0</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback force Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Resistance</name> + <text>Calc. Resist.</text> + <x>26</x> + <y>42</y> + <width>83</width> + <height>56</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Curve</name> + <text>Calibration:</text> + <x>19</x> + <y>98</y> + <width>86</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TT_FB_Curve</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_CalibrationCurve</pv_name> + <x>118</x> + <y>99</y> + <width>155</width> + <height>25</height> + <precision>0</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback force Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Curve_1</name> + <text>Devicename:</text> + <x>13</x> + <y>140</y> + <width>91</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TT_FB_Curve_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_DeviceName</pv_name> + <x>118</x> + <y>142</y> + <width>155</width> + <height>25</height> + <precision>0</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback force Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Curve_3</name> + <text>Channel No.</text> + <x>17</x> + <y>184</y> + <width>86</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TT_FB_Curve_3</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_CHNumber</pv_name> + <x>118</x> + <y>185</y> + <width>155</width> + <height>25</height> + <precision>0</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback force Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + </widget> + </children> + </tab> + <tab> + <name>Trend</name> + <children> + <widget type="databrowser" version="2.0.0"> + <name>DataBrowser</name> + <file>AnalogTransmitter_Faceplate_Trend.plt</file> + <width>940</width> + <height>651</height> + </widget> + </children> + </tab> + </tabs> + <x>10</x> + <y>60</y> + <width>920</width> + <height>707</height> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Header Bar</name> + <width>963</width> + <height>50</height> + <line_width>0</line_width> + <line_color> + <color red="0" green="0" blue="255" alpha="0"> + </color> + </line_color> + <background_color> + <color name="PRIMARY-HEADER-BACKGROUND" red="151" green="188" blue="202"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HeaderPVName</name> + <text>${SecSub}:${Dis}-${Dev}-${Index}</text> + <x>20</x> + <width>715</width> + <height>50</height> + <font> + <font name="Header 1" family="Source Sans Pro" style="BOLD_ITALIC" size="36.0"> + </font> + </font> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Locked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>0</value> + <description>Write CMD_DEVUNLOCK</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock(99)</pv_name> + <value>1</value> + <description>Run Lock script</description> + </action> + </actions> + <text>LOCK</text> + <x>850</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + </rule> + </rules> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: generate unique Machine ID from the network adapters to use it for locking mechanism*/ + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); + +var Lock = pvs[0];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock*/ +var Cmd_DevLock = pvs[1];/*${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock*/ +var P_Faceplate_LockID = pvs[2];/*${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID*/ +var Inhibit_Lock = pvs[3];/*${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock*/ +var Faceplate_LockID = pvs[4];/*${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID*/ +var BlockIcon_LockID = pvs[5];/*${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID*/ +var EnaForceUnlock = pvs[6];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock*/ +var DevLocked = pvs[7];/*${SecSub}:${Dis}-${Dev}-${Index}:DevLocked*/ + + + + +var PV1 = PVUtil.getLong(Faceplate_LockID); /*Faceplate_LockID*/ +var PV2 = PVUtil.getLong(BlockIcon_LockID); /*BlockIcon_LockID*/ + +//OnShow +if (PVUtil.getLong(DevLocked) == 1) { /*DevLocked*/ + + if (PV1.toString() == PV2.toString()){ /*FaceplateLockID != BlockIconeLockID*/ + + logger.info(" Owner"); + EnaForceUnlock.setValue(0); /*Write EnaForceUnlock*/ + + } else + { + logger.info(" Faceplate FaceplateLockID "+ PV1); + logger.info(" Faceplate BlockIconeLockID "+ PV2); + + logger.info(" Guest"); + EnaForceUnlock.setValue(1); /*Write EnaForceUnlock*/ + } + + + +} +// OnClick +if (PVUtil.getLong(Lock) != 99) { /*loc://Lock, check if the script was triggered because of a button press or initilization*/ + if (PVUtil.getLong(Inhibit_Lock) == 0) { /*Inhibit_lock, check if locking is inhibited*/ + + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + UniqueText = UniqueText + intf.getName() + intf.getDisplayName(); + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + UniqueText = UniqueText + enumIpAddr.nextElement().toString(); + } + } + + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText); + logger.info(" Faceplate machine ID: "+crc); + P_Faceplate_LockID.setValue(crc); /*Write P_Faceplate_LockID*/ + Cmd_DevLock.setValue(1); /*Write Lock*/ + + } /*Lock inhibit*/ +} /*onshow*/ + +]]></text> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID</pv_name> + <pv_name trigger="false">loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + </script> + </scripts> + <tooltip>Lock this device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Unlocked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>1</value> + <description>Write CMD_DevUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <value>0</value> + <description>Write CMD_DevLock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + </actions> + <text>UNLOCK</text> + <x>755</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false) || (pv1 == true) || (pv2 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true) && (pv1 == false) && (pv2 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Unlock this device</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_Faceplate_CernoxTemperature.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_Faceplate_CernoxTemperature.bob new file mode 100644 index 0000000000000000000000000000000000000000..7dd33a8ecd9cb70b0408861c223c06c6ccefdffc --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_Faceplate_CernoxTemperature.bob @@ -0,0 +1,1736 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>Analog_TRANSMITTER_Cernox_Faceplate</name> + <width>965</width> + <height>790</height> + <widget type="tabs" version="2.0.0"> + <name>Tabs</name> + <tabs> + <tab> + <name>Status</name> + <children> + <widget type="group" version="2.0.0"> + <name>group.status</name> + <x>10</x> + <y>10</y> + <height>300</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.border</name> + <width>300</width> + <height>300</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>260</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Status</name> + <text>STATUS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Status_Title</name> + <text>${WIDLabel}</text> + <x>10</x> + <y>200</y> + <width>280</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ForceText</name> + <text>Force:</text> + <x>15</x> + <y>245</y> + <width>55</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textentry" version="3.0.0"> + <name>INP_ForceValue</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_ForceValue</pv_name> + <x>80</x> + <y>245</y> + <height>30</height> + <font> + <font name="NORMAL-SANS-BOLD" family="Source Sans Pro" style="BOLD" size="16.0"> + </font> + </font> + <precision>2</precision> + <show_units>false</show_units> + <rules> + <rule name="Enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FeedbackForceVal</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_ForceValue</pv_name> + <x>190</x> + <y>245</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Feedback force Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="meter" version="3.0.0"> + <name>Meter_Meas_Val</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:MeasValue</pv_name> + <x>6</x> + <y>36</y> + <width>290</width> + <height>165</height> + <precision>2</precision> + <show_limits>false</show_limits> + <rules> + <rule name="HIHI" prop_id="level_hihi" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HIHI</pv_name> + </rule> + <rule name="HIGH" prop_id="level_high" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HI</pv_name> + </rule> + <rule name="LOW" prop_id="level_low" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LO</pv_name> + </rule> + <rule name="LOLO" prop_id="level_lolo" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LOLO</pv_name> + </rule> + <rule name="ScaleLOW" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + </rule> + <rule name="ScaleHIGH" prop_id="maximum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleHIGH</pv_name> + </rule> + <rule name="MajorTick" prop_id="major_tick_space" out_exp="true"> + <exp bool_exp="true"> + <expression>(pv1 - pv0) / 10</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleHIGH</pv_name> + </rule> + <rule name="MinorTick" prop_id="minor_tick_space" out_exp="true"> + <exp bool_exp="true"> + <expression>(pv1 - pv0) / 100</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleHIGH</pv_name> + </rule> + </rules> + <tooltip>Pressure and limits</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <limits_from_pv>false</limits_from_pv> + <needle_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </needle_color> + <knob_color> + <color name="Button_Background" red="236" green="236" blue="236"> + </color> + </knob_color> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.op.modes</name> + <x>320</x> + <y>10</y> + <height>300</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.border</name> + <width>300</width> + <height>300</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>260</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OP_MODES</name> + <text>OP MODES</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_FreeRun</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_FreeRun</pv_name> + <x>78</x> + <y>63</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode Freerun</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_FREERUN</name> + <text>FREERUN</text> + <x>113</x> + <y>63</y> + <width>70</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Forced</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <x>78</x> + <y>98</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode Forced</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_FORCED_1</name> + <text>FORCED</text> + <x>113</x> + <y>98</y> + <width>70</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_MESSAGES_1</name> + <text>MESSAGES</text> + <x>5</x> + <y>160</y> + <width>290</width> + <font> + <font name="Fine Print" family="Source Sans Pro" style="REGULAR" size="14.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitForce</name> + <text>- Force mode inhibited</text> + <x>15</x> + <y>210</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <transparent>false</transparent> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Force</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm</name> + <text>- Alarms latching enabled</text> + <x>15</x> + <y>230</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <transparent>false</transparent> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm_1</name> + <text>- Alarms latching disabled</text> + <x>15</x> + <y>230</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <transparent>false</transparent> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.alarms</name> + <x>630</x> + <y>10</y> + <height>557</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.border</name> + <width>300</width> + <height>550</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>506</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALARMS</name> + <text>ALARMS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackgroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Group alarm</tooltip> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Overrange</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Overrange</pv_name> + <x>55</x> + <y>50</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Overrange</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Overrange</name> + <text>Overrange</text> + <x>90</x> + <y>50</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_HIHI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:HIHI</pv_name> + <x>55</x> + <y>85</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>HIHI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_HIHI</name> + <text>HIHI</text> + <x>90</x> + <y>85</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_HI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:HI</pv_name> + <x>55</x> + <y>120</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="WARNING" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>HI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_HI</name> + <text>HI</text> + <x>90</x> + <y>120</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_LOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LO</pv_name> + <x>55</x> + <y>155</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="WARNING" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>LOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_LOW</name> + <text>LOW</text> + <x>90</x> + <y>155</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_LOWLOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LOLO</pv_name> + <x>55</x> + <y>190</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>LOWLOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_LOLO</name> + <text>LOWLOW</text> + <x>90</x> + <y>190</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Underrange</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Underrange</pv_name> + <x>55</x> + <y>225</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Underrange</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Underrange</name> + <text>Underrange</text> + <x>90</x> + <y>225</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_IO_error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DigitalInp_IO_Error</pv_name> + <x>55</x> + <y>260</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O Error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_IO_Error</name> + <text>Digital Input Error</text> + <x>90</x> + <y>260</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Module_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Module_Error</pv_name> + <x>55</x> + <y>328</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Siemens Module Error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Module_Error</name> + <text>Siemens Module Error</text> + <x>90</x> + <y>328</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_IO_error_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:AnalogInp_IO_Error</pv_name> + <x>55</x> + <y>294</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O Error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_IO_Error_1</name> + <text>Analog Input Error</text> + <x>90</x> + <y>294</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.limits</name> + <x>10</x> + <y>320</y> + <height>246</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.limits.border</name> + <width>300</width> + <height>239</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.limits.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>196</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Limits</name> + <text>LIMITS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HIHI</name> + <text>HIHI:</text> + <x>15</x> + <y>50</y> + <width>55</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_HIHI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HIHI</pv_name> + <x>190</x> + <y>50</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value HIHI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_HIHI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_HIHI</pv_name> + <x>80</x> + <y>50</y> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="MinimumRule" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + </rule> + <rule name="MaximumRule" prop_id="maximum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleHIGH</pv_name> + </rule> + </rules> + <tooltip>Alarm HIHI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_HIGH</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_HI</pv_name> + <x>80</x> + <y>90</y> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="MinimumRule" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + </rule> + <rule name="MaximumRule" prop_id="maximum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleHIGH</pv_name> + </rule> + </rules> + <tooltip>Warning HIGH</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HIGH</name> + <text>HIGH:</text> + <x>15</x> + <y>90</y> + <width>55</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_HIGH</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HI</pv_name> + <x>190</x> + <y>90</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value HIGH</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_LOW</name> + <text>LOW:</text> + <x>15</x> + <y>140</y> + <width>55</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_LOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_LO</pv_name> + <x>80</x> + <y>140</y> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="MinimumRule" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + </rule> + <rule name="MaximumRule" prop_id="maximum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleHIGH</pv_name> + </rule> + </rules> + <tooltip>Warning LOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_LOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LO</pv_name> + <x>190</x> + <y>140</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value LOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_LOLO</name> + <text>LOLO:</text> + <x>15</x> + <y>180</y> + <width>55</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_LOLO</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_LOLO</pv_name> + <x>80</x> + <y>180</y> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="MinimumRule" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + </rule> + <rule name="MaximumRule" prop_id="maximum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleHIGH</pv_name> + </rule> + </rules> + <tooltip>Alarm LOLO</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_LOLO</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LOLO</pv_name> + <x>190</x> + <y>180</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value LOLO</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>buttons.bar</name> + <x>10</x> + <y>575</y> + <width>920</width> + <height>80</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_AUTO</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_FreeRun</pv_name> + <text>FREERUN</text> + <x>15</x> + <y>616</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableFreeRunBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Free run operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Force</pv_name> + <text>FORCE</text> + <x>220</x> + <y>616</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableForcedBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>FORCE operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_UNLOCK</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceUnlock</pv_name> + <value>1</value> + <description>Write ForceUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <value>0</value> + <description>Write EnaForceUnlock</description> + </action> + </actions> + <text>FORCE UNLOCK</text> + <x>725</x> + <y>580</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 1)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 0)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force unlock device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_APPLY</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceVal</pv_name> + <text>APPLY VALUE</text> + <x>220</x> + <y>580</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_ACK</name> + <actions> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_AckAlarm</pv_name> + <value>1</value> + <description>Acknowledge alarms</description> + </action> + </actions> + <text>Acknowledge Alarm</text> + <x>725</x> + <y>616</y> + <width>200</width> + <height>33</height> + <background_color> + <color name="ORANGE" red="254" green="194" blue="81"> + </color> + </background_color> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1) || (pv2 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0) && (pv2 == 1)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + <tooltip>Acknowledge alarms</tooltip> + </widget> + <widget type="group" version="2.0.0"> + <name>group.Cernox</name> + <x>318</x> + <y>322</y> + <height>249</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.border_1</name> + <width>300</width> + <height>238</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.background_1</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>195</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Cernox</name> + <text>Cernox</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="text-symbol" version="2.0.0"> + <name>Text Symbol</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Range</pv_name> + <symbols> + <symbol>N/A</symbol> + <symbol>Range1: </symbol> + <symbol>Range2:</symbol> + <symbol>Range3: </symbol> + <symbol>Range4: out of range</symbol> + </symbols> + <x>109</x> + <y>35</y> + <width>158</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="16.0"> + </font> + </font> + <horizontal_alignment>0</horizontal_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_range</name> + <text>Range:</text> + <x>25</x> + <y>34</y> + <width>70</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TT_Resistance</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Resistance</pv_name> + <x>110</x> + <y>67</y> + <width>156</width> + <height>25</height> + <precision>0</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback force Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Resistance</name> + <text>Calc. Resist.</text> + <x>17</x> + <y>51</y> + <width>83</width> + <height>56</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Current</name> + <text>Current:</text> + <x>13</x> + <y>94</y> + <width>83</width> + <height>37</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TT_Current</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Current</pv_name> + <x>109</x> + <y>100</y> + <width>156</width> + <height>25</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback force Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Curve</name> + <text>Serial nr.</text> + <x>29</x> + <y>130</y> + <width>67</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TT_FB_Curve</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_SerialNumber</pv_name> + <x>110</x> + <y>133</y> + <width>155</width> + <height>25</height> + <precision>0</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback force Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Curve_1</name> + <text>Device</text> + <x>37</x> + <y>166</y> + <width>55</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TT_FB_Curve_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_DeviceName</pv_name> + <x>108</x> + <y>166</y> + <width>155</width> + <height>25</height> + <precision>0</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback force Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Curve_2</name> + <text>Plug nr.</text> + <x>40</x> + <y>199</y> + <width>55</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TT_FB_Curve_2</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_PlugNumber</pv_name> + <x>109</x> + <y>200</y> + <width>155</width> + <height>25</height> + <precision>0</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback force Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + </widget> + </children> + </tab> + <tab> + <name>Trend</name> + <children> + <widget type="databrowser" version="2.0.0"> + <name>DataBrowser</name> + <file>AnalogTransmitter_Faceplate_Trend.plt</file> + <width>940</width> + <height>651</height> + </widget> + </children> + </tab> + </tabs> + <x>10</x> + <y>60</y> + <width>920</width> + <height>707</height> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Header Bar</name> + <width>963</width> + <height>50</height> + <line_width>0</line_width> + <line_color> + <color red="0" green="0" blue="255" alpha="0"> + </color> + </line_color> + <background_color> + <color name="PRIMARY-HEADER-BACKGROUND" red="151" green="188" blue="202"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HeaderPVName</name> + <text>${SecSub}:${Dis}-${Dev}-${Index}</text> + <x>20</x> + <width>715</width> + <height>50</height> + <font> + <font name="Header 1" family="Source Sans Pro" style="BOLD_ITALIC" size="36.0"> + </font> + </font> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Locked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>0</value> + <description>Write CMD_DEVUNLOCK</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock(99)</pv_name> + <value>1</value> + <description>Run Lock script</description> + </action> + </actions> + <text>LOCK</text> + <x>850</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + </rule> + </rules> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: generate unique Machine ID from the network adapters to use it for locking mechanism*/ + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); + +var Lock = pvs[0];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock*/ +var Cmd_DevLock = pvs[1];/*${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock*/ +var P_Faceplate_LockID = pvs[2];/*${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID*/ +var Inhibit_Lock = pvs[3];/*${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock*/ +var Faceplate_LockID = pvs[4];/*${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID*/ +var BlockIcon_LockID = pvs[5];/*${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID*/ +var EnaForceUnlock = pvs[6];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock*/ +var DevLocked = pvs[7];/*${SecSub}:${Dis}-${Dev}-${Index}:DevLocked*/ + + + + +var PV1 = PVUtil.getLong(Faceplate_LockID); /*Faceplate_LockID*/ +var PV2 = PVUtil.getLong(BlockIcon_LockID); /*BlockIcon_LockID*/ + +//OnShow +if (PVUtil.getLong(DevLocked) == 1) { /*DevLocked*/ + + if (PV1.toString() == PV2.toString()){ /*FaceplateLockID != BlockIconeLockID*/ + + logger.info(" Owner"); + EnaForceUnlock.setValue(0); /*Write EnaForceUnlock*/ + + } else + { + logger.info(" Faceplate FaceplateLockID "+ PV1); + logger.info(" Faceplate BlockIconeLockID "+ PV2); + + logger.info(" Guest"); + EnaForceUnlock.setValue(1); /*Write EnaForceUnlock*/ + } + + + +} +// OnClick +if (PVUtil.getLong(Lock) != 99) { /*loc://Lock, check if the script was triggered because of a button press or initilization*/ + if (PVUtil.getLong(Inhibit_Lock) == 0) { /*Inhibit_lock, check if locking is inhibited*/ + + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + UniqueText = UniqueText + intf.getName() + intf.getDisplayName(); + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + UniqueText = UniqueText + enumIpAddr.nextElement().toString(); + } + } + + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText); + logger.info(" Faceplate machine ID: "+crc); + P_Faceplate_LockID.setValue(crc); /*Write P_Faceplate_LockID*/ + Cmd_DevLock.setValue(1); /*Write Lock*/ + + } /*Lock inhibit*/ +} /*onshow*/ + +]]></text> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID</pv_name> + <pv_name trigger="false">loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + </script> + </scripts> + <tooltip>Lock this device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Unlocked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>1</value> + <description>Write CMD_DevUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <value>0</value> + <description>Write CMD_DevLock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + </actions> + <text>UNLOCK</text> + <x>755</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false) || (pv1 == true) || (pv2 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true) && (pv1 == false) && (pv2 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Unlock this device</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_Faceplate_LM510.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_Faceplate_LM510.bob new file mode 100644 index 0000000000000000000000000000000000000000..255314aa6f237efd390703dcd46c05b5b1bdac47 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_Faceplate_LM510.bob @@ -0,0 +1,1465 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>Analog_TRANSMITTER_Faceplate_LM510</name> + <width>834</width> + <height>697</height> + <grid_visible>false</grid_visible> + <widget type="tabs" version="2.0.0"> + <name>Tabs</name> + <macros> + <DEVICE>TS2-010CRM:Cryo-LC-001</DEVICE> + </macros> + <tabs> + <tab> + <name> Status</name> + <children> + <widget type="group" version="2.0.0"> + <name>Device_Status_Group</name> + <width>810</width> + <height>600</height> + <style>3</style> + <transparent>true</transparent> + <widget type="group" version="2.0.0"> + <name>Status</name> + <x>10</x> + <y>10</y> + <width>290</width> + <height>270</height> + <style>3</style> + <background_color> + <color name="BACKGROUND" red="220" green="225" blue="221"> + </color> + </background_color> + <widget type="rectangle" version="2.0.0"> + <name>Rect_Meas_Title</name> + <width>290</width> + <height>59</height> + <line_width>0</line_width> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <corner_width>10</corner_width> + <corner_height>10</corner_height> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Rect_Meas_Back</name> + <y>30</y> + <width>290</width> + <height>240</height> + <line_width>2</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <corner_height>10</corner_height> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Meas_Title</name> + <class>HEADER2</class> + <text>Status</text> + <width>290</width> + <height>31</height> + <font use_class="true"> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="TEXT-LIGHT" red="230" green="230" blue="230"> + </color> + </foreground_color> + <background_color use_class="true"> + <color name="Background" red="220" green="225" blue="221"> + </color> + </background_color> + <transparent use_class="true">true</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Meas_Label</name> + <text>${WIDLabel}</text> + <x>5</x> + <y>186</y> + <width>280</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FeedbackForceVal</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_ForceValue</pv_name> + <x>176</x> + <y>228</y> + <width>90</width> + <height>25</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback force Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textentry" version="3.0.0"> + <name>INP_ForceValue</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_ForceValue</pv_name> + <x>76</x> + <y>228</y> + <width>90</width> + <height>25</height> + <precision>2</precision> + <show_units>false</show_units> + <rules> + <rule name="Enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ForceText</name> + <text>Force:</text> + <x>16</x> + <y>230</y> + <width>50</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="meter" version="3.0.0"> + <name>Meter_Meas_Val</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:MeasValue</pv_name> + <x>5</x> + <y>33</y> + <width>280</width> + <height>165</height> + <precision>2</precision> + <show_limits>false</show_limits> + <rules> + <rule name="HIHI" prop_id="level_hihi" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HIHI</pv_name> + </rule> + <rule name="HIGH" prop_id="level_high" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HI</pv_name> + </rule> + <rule name="LOW" prop_id="level_low" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LO</pv_name> + </rule> + <rule name="LOLO" prop_id="level_lolo" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LOLO</pv_name> + </rule> + <rule name="ScaleLOW" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + </rule> + <rule name="ScaleHIGH" prop_id="maximum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleHIGH</pv_name> + </rule> + <rule name="MajorTick" prop_id="major_tick_space" out_exp="true"> + <exp bool_exp="true"> + <expression>(pv1 - pv0) / 10</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleHIGH</pv_name> + </rule> + <rule name="MinorTick" prop_id="minor_tick_space" out_exp="true"> + <exp bool_exp="true"> + <expression>(pv1 - pv0) / 100</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleHIGH</pv_name> + </rule> + </rules> + <tooltip>Pressure and limits</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <limits_from_pv>false</limits_from_pv> + <needle_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </needle_color> + <knob_color> + <color name="Button_Background" red="236" green="236" blue="236"> + </color> + </knob_color> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>Limits</name> + <x>12</x> + <y>300</y> + <width>290</width> + <height>190</height> + <style>3</style> + <background_color> + <color name="BACKGROUND" red="220" green="225" blue="221"> + </color> + </background_color> + <widget type="rectangle" version="2.0.0"> + <name>Rect_Limits_Ttile</name> + <width>290</width> + <height>59</height> + <line_width>0</line_width> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <corner_width>10</corner_width> + <corner_height>10</corner_height> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Rect_Limits_Back</name> + <y>30</y> + <width>290</width> + <height>160</height> + <line_width>2</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <corner_height>10</corner_height> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Limits_title</name> + <class>HEADER2</class> + <text>Limits</text> + <width>290</width> + <height>31</height> + <font use_class="true"> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="TEXT-LIGHT" red="230" green="230" blue="230"> + </color> + </foreground_color> + <background_color use_class="true"> + <color name="Background" red="220" green="225" blue="221"> + </color> + </background_color> + <transparent use_class="true">true</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_HIHI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HIHI</pv_name> + <x>180</x> + <y>53</y> + <width>80</width> + <height>25</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value HIHI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_HIGH</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HI</pv_name> + <x>180</x> + <y>83</y> + <width>80</width> + <height>25</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value HIGH</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_LOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LO</pv_name> + <x>180</x> + <y>113</y> + <width>80</width> + <height>25</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value LOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_LOLO</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LOLO</pv_name> + <x>180</x> + <y>143</y> + <width>80</width> + <height>25</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value LOLO</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_HIHI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_HIHI</pv_name> + <x>80</x> + <y>53</y> + <width>90</width> + <height>25</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="MinimumRule" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + </rule> + </rules> + <tooltip>Alarm HIHI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <maximum>500.0</maximum> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_HIGH</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_HI</pv_name> + <x>80</x> + <y>83</y> + <width>90</width> + <height>25</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="MinimumRule" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + </rule> + </rules> + <tooltip>Warning HIGH</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <maximum>500.0</maximum> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_LOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_LO</pv_name> + <x>80</x> + <y>113</y> + <width>90</width> + <height>25</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="MinimumRule" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + </rule> + <rule name="MaximumRule" prop_id="maximum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleHIGH</pv_name> + </rule> + </rules> + <tooltip>Warning LOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_LOLO</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_LOLO</pv_name> + <x>80</x> + <y>143</y> + <width>90</width> + <height>25</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="MinimumRule" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + </rule> + <rule name="MaximumRule" prop_id="maximum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleHIGH</pv_name> + </rule> + </rules> + <tooltip>Alarm LOLO</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HIHI</name> + <text>HIHI:</text> + <x>20</x> + <y>55</y> + <width>50</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HIGH</name> + <text>HIGH:</text> + <x>20</x> + <y>85</y> + <width>50</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_LOW</name> + <text>LOW:</text> + <x>20</x> + <y>115</y> + <width>50</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_LOLO</name> + <text>LOLO:</text> + <x>20</x> + <y>145</y> + <width>50</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>OP Modes</name> + <x>320</x> + <y>10</y> + <width>230</width> + <height>170</height> + <style>3</style> + <background_color> + <color name="BACKGROUND" red="220" green="225" blue="221"> + </color> + </background_color> + <widget type="rectangle" version="2.0.0"> + <name>Rect_Mode_Title</name> + <width>230</width> + <height>59</height> + <line_width>0</line_width> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <corner_width>10</corner_width> + <corner_height>10</corner_height> + </widget> + <widget type="label" version="2.0.0"> + <name>Rect_LB_Title</name> + <class>HEADER2</class> + <text>OP Modes</text> + <width>230</width> + <height>31</height> + <font use_class="true"> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="TEXT-LIGHT" red="230" green="230" blue="230"> + </color> + </foreground_color> + <background_color use_class="true"> + <color name="Background" red="220" green="225" blue="221"> + </color> + </background_color> + <transparent use_class="true">true</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Rect_Mode_Back</name> + <y>30</y> + <width>230</width> + <height>140</height> + <line_width>2</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <corner_height>10</corner_height> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Mode_Auto</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_FreeRun</pv_name> + <x>63</x> + <y>61</y> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode Freerun</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Mode_Auto</name> + <text>Auto</text> + <x>93</x> + <y>60</y> + <width>79</width> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Mode_Forced</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <x>63</x> + <y>112</y> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode Forced</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Mode_Forced</name> + <text>Forced</text> + <x>93</x> + <y>111</y> + <width>79</width> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>Messages</name> + <x>320</x> + <y>200</y> + <width>230</width> + <height>132</height> + <style>3</style> + <background_color> + <color name="BACKGROUND" red="220" green="225" blue="221"> + </color> + </background_color> + <widget type="rectangle" version="2.0.0"> + <name>Rect_Msg_Title</name> + <width>230</width> + <height>59</height> + <line_width>0</line_width> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <corner_width>10</corner_width> + <corner_height>10</corner_height> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Msg_Title</name> + <class>HEADER2</class> + <text>Messages</text> + <width>230</width> + <height>31</height> + <font use_class="true"> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="TEXT-LIGHT" red="230" green="230" blue="230"> + </color> + </foreground_color> + <background_color use_class="true"> + <color name="Background" red="220" green="225" blue="221"> + </color> + </background_color> + <transparent use_class="true">true</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Rect_Msg_Back</name> + <y>30</y> + <width>230</width> + <height>102</height> + <line_width>2</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <corner_height>10</corner_height> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm</name> + <text>- Alarms latching disabled</text> + <x>20</x> + <y>80</y> + <width>190</width> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitForce</name> + <text>- Force mode inhibited</text> + <x>20</x> + <y>50</y> + <width>190</width> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Force</pv_name> + </rule> + </rules> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>Alarms</name> + <x>570</x> + <y>10</y> + <width>230</width> + <height>480</height> + <style>3</style> + <background_color> + <color name="BACKGROUND" red="220" green="225" blue="221"> + </color> + </background_color> + <widget type="rectangle" version="2.0.0"> + <name>Rect_ALM_Title</name> + <width>230</width> + <height>59</height> + <line_width>0</line_width> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <corner_width>10</corner_width> + <corner_height>10</corner_height> + <rules> + <rule name="BackColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0==0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 1"> + <value> + <color name="RED-GROUP-BORDER" red="167" green="134" blue="130"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Title</name> + <class>HEADER2</class> + <text>Alarms</text> + <width>230</width> + <height>31</height> + <font use_class="true"> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="TEXT-LIGHT" red="230" green="230" blue="230"> + </color> + </foreground_color> + <background_color use_class="true"> + <color name="Background" red="220" green="225" blue="221"> + </color> + </background_color> + <transparent use_class="true">true</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Rect_ALM_Back</name> + <y>30</y> + <width>230</width> + <height>450</height> + <line_width>2</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <corner_height>10</corner_height> + <rules> + <rule name="Linecolor" prop_id="line_color" out_exp="false"> + <exp bool_exp="pv0==0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <exp bool_exp="pv0==1"> + <value> + <color name="RED-GROUP-BORDER" red="167" green="134" blue="130"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + </rule> + <rule name="Backcolor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0==0"> + <value> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </value> + </exp> + <exp bool_exp="pv0==1"> + <value> + <color name="RED-GROUP-BACKGROUND" red="208" green="175" blue="172"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Overrange</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Overrange</pv_name> + <x>20</x> + <y>59</y> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Overrange</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_HIHI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:HIHI</pv_name> + <x>20</x> + <y>111</y> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>HIHI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_HI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:HI</pv_name> + <x>20</x> + <y>163</y> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="WARNING" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>HI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_LOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LO</pv_name> + <x>20</x> + <y>215</y> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="WARNING" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>LOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_LOWLOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LOLO</pv_name> + <x>20</x> + <y>267</y> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>LOWLOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Underrange</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Underrange</pv_name> + <x>20</x> + <y>319</y> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Underrange</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_IO_error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Module_Error</pv_name> + <x>20</x> + <y>371</y> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O Error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Module_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Module_Error</pv_name> + <x>20</x> + <y>426</y> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Siemens Module Error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Overrange</name> + <text>Overrange</text> + <x>60</x> + <y>59</y> + <width>160</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_HIHI</name> + <text>HIHI</text> + <x>60</x> + <y>111</y> + <width>160</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_HI</name> + <text>HI</text> + <x>60</x> + <y>163</y> + <width>160</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_LOW</name> + <text>LOW</text> + <x>60</x> + <y>215</y> + <width>160</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_LOLO</name> + <text>LOWLOW</text> + <x>60</x> + <y>267</y> + <width>160</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Underrange</name> + <text>Underrange</text> + <x>60</x> + <y>319</y> + <width>160</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_IO_Error</name> + <text>I/O Error</text> + <x>60</x> + <y>371</y> + <width>160</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Module_Error</name> + <text>Siemens Module Error</text> + <x>60</x> + <y>426</y> + <width>160</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_UNLOCK</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceUnlock</pv_name> + <value>1</value> + <description>Write ForceUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <value>0</value> + <description>Write EnaForceUnlock</description> + </action> + </actions> + <text>Forced Unlock</text> + <x>570</x> + <y>504</y> + <width>230</width> + <height>35</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 1)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 0)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force unlock device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_ACK</name> + <actions> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_AckAlarm</pv_name> + <value>1</value> + <description>Acknowledge alarms</description> + </action> + </actions> + <text>Acknowledge Alarm</text> + <x>570</x> + <y>554</y> + <width>230</width> + <height>35</height> + <background_color> + <color name="ORANGE" red="254" green="194" blue="81"> + </color> + </background_color> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1) || (pv2 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0) && (pv2 == 1)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + <tooltip>Acknowledge alarms</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_APPLY</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceVal</pv_name> + <text>Apply Forced Value</text> + <x>321</x> + <y>553</y> + <width>230</width> + <height>35</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Force</pv_name> + <text>Forced</text> + <x>321</x> + <y>504</y> + <width>230</width> + <height>35</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableForcedBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>FORCE operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_AUTO</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_FreeRun</pv_name> + <text>Auto</text> + <x>71</x> + <y>506</y> + <width>230</width> + <height>35</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableFreeRunBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Free run operation mode</tooltip> + </widget> + </widget> + </children> + </tab> + <tab> + <name> Trend</name> + <children> + <widget type="databrowser" version="2.0.0"> + <name>DataBrowser</name> + <file>AnalogTransmitter_Faceplate_Trend.plt</file> + <x>3</x> + <width>778</width> + <height>597</height> + </widget> + </children> + </tab> + <tab> + <name>Settings</name> + <children> + <widget type="embedded" version="2.0.0"> + <name>Embedded Display</name> + <file>../../../TS2/ts2-cryomodule/lm510/lm510.bob</file> + <width>795</width> + <height>600</height> + </widget> + </children> + </tab> + </tabs> + <x>10</x> + <y>55</y> + <width>814</width> + <height>633</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="21.0"> + </font> + </font> + <active_tab>2</active_tab> + <tab_height>40</tab_height> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Header Bar</name> + <width>834</width> + <height>50</height> + <line_width>0</line_width> + <line_color> + <color red="0" green="0" blue="255" alpha="0"> + </color> + </line_color> + <background_color> + <color name="PRIMARY-HEADER-BACKGROUND" red="151" green="188" blue="202"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HeaderPVName</name> + <text>${SecSub}:${Dis}-${Dev}-${Index}</text> + <x>20</x> + <width>580</width> + <height>50</height> + <font> + <font name="Header 1" family="Source Sans Pro" style="BOLD_ITALIC" size="36.0"> + </font> + </font> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Locked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>0</value> + <description>Write CMD_DEVUNLOCK</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock(99)</pv_name> + <value>1</value> + <description>Run Lock script</description> + </action> + </actions> + <text>Lock</text> + <x>725</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + </rule> + </rules> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: generate unique Machine ID from the network adapters to use it for locking mechanism*/ + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); + +var Lock = pvs[0];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock*/ +var Cmd_DevLock = pvs[1];/*${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock*/ +var P_Faceplate_LockID = pvs[2];/*${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID*/ +var Inhibit_Lock = pvs[3];/*${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock*/ +var Faceplate_LockID = pvs[4];/*${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID*/ +var BlockIcon_LockID = pvs[5];/*${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID*/ +var EnaForceUnlock = pvs[6];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock*/ +var DevLocked = pvs[7];/*${SecSub}:${Dis}-${Dev}-${Index}:DevLocked*/ + + + + +var PV1 = PVUtil.getLong(Faceplate_LockID); /*Faceplate_LockID*/ +var PV2 = PVUtil.getLong(BlockIcon_LockID); /*BlockIcon_LockID*/ + +//OnShow +if (PVUtil.getLong(DevLocked) == 1) { /*DevLocked*/ + + if (PV1.toString() == PV2.toString()){ /*FaceplateLockID != BlockIconeLockID*/ + + logger.info(" Owner"); + EnaForceUnlock.setValue(0); /*Write EnaForceUnlock*/ + + } else + { + logger.info(" Faceplate FaceplateLockID "+ PV1); + logger.info(" Faceplate BlockIconeLockID "+ PV2); + + logger.info(" Guest"); + EnaForceUnlock.setValue(1); /*Write EnaForceUnlock*/ + } + + + +} +// OnClick +if (PVUtil.getLong(Lock) != 99) { /*loc://Lock, check if the script was triggered because of a button press or initilization*/ + if (PVUtil.getLong(Inhibit_Lock) == 0) { /*Inhibit_lock, check if locking is inhibited*/ + + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + UniqueText = UniqueText + intf.getName() + intf.getDisplayName(); + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + UniqueText = UniqueText + enumIpAddr.nextElement().toString(); + } + } + + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText); + logger.info(" Faceplate machine ID: "+crc); + P_Faceplate_LockID.setValue(crc); /*Write P_Faceplate_LockID*/ + Cmd_DevLock.setValue(1); /*Write Lock*/ + + } /*Lock inhibit*/ +} /*onshow*/ + +]]></text> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID</pv_name> + <pv_name trigger="false">loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + </script> + </scripts> + <tooltip>Lock this device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Unlocked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>1</value> + <description>Write CMD_DevUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <value>0</value> + <description>Write CMD_DevLock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + </actions> + <text>Unlock</text> + <x>725</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false) || (pv1 == true) || (pv2 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true) && (pv1 == false) && (pv2 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Unlock this device</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_Faceplate_LakeShore.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_Faceplate_LakeShore.bob new file mode 100644 index 0000000000000000000000000000000000000000..d8febedaa2e0e345767dd3928e80000b3462ed11 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_Faceplate_LakeShore.bob @@ -0,0 +1,1426 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>Analog_TRANSMITTER_LakeShore_Faceplate</name> + <width>834</width> + <height>697</height> + <grid_visible>false</grid_visible> + <widget type="tabs" version="2.0.0"> + <name>Tabs</name> + <tabs> + <tab> + <name> Status</name> + <children> + <widget type="group" version="2.0.0"> + <name>Device_Status_Group</name> + <width>810</width> + <height>600</height> + <style>3</style> + <transparent>true</transparent> + <widget type="group" version="2.0.0"> + <name>Status</name> + <x>10</x> + <y>10</y> + <width>290</width> + <height>270</height> + <style>3</style> + <background_color> + <color name="BACKGROUND" red="220" green="225" blue="221"> + </color> + </background_color> + <widget type="rectangle" version="2.0.0"> + <name>Rect_Meas_Title</name> + <width>290</width> + <height>59</height> + <line_width>0</line_width> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <corner_width>10</corner_width> + <corner_height>10</corner_height> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Rect_Meas_Back</name> + <y>30</y> + <width>290</width> + <height>240</height> + <line_width>2</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <corner_height>10</corner_height> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Meas_Title</name> + <class>HEADER2</class> + <text>Status</text> + <width>290</width> + <height>31</height> + <font use_class="true"> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="TEXT-LIGHT" red="230" green="230" blue="230"> + </color> + </foreground_color> + <background_color use_class="true"> + <color name="Background" red="220" green="225" blue="221"> + </color> + </background_color> + <transparent use_class="true">true</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Meas_Label</name> + <text>${WIDLabel}</text> + <x>5</x> + <y>186</y> + <width>280</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="meter" version="2.0.0"> + <name>Meter_Meas_Val</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:MeasValue</pv_name> + <y>31</y> + <width>290</width> + <height>165</height> + <precision>2</precision> + <level_hihi>0.0</level_hihi> + <level_high>0.0</level_high> + <level_low>0.0</level_low> + <level_lolo>0.0</level_lolo> + <rules> + <rule name="HIHI" prop_id="level_hihi" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HIHI</pv_name> + </rule> + <rule name="HIGH" prop_id="level_high" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HI</pv_name> + </rule> + <rule name="LOW" prop_id="level_low" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LO</pv_name> + </rule> + <rule name="LOLO" prop_id="level_lolo" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LOLO</pv_name> + </rule> + <rule name="ScaleLOW" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:MinTemp</pv_name> + </rule> + <rule name="ScaleHIGH" prop_id="maximum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:MaxTemp</pv_name> + </rule> + <rule name="MajorTick" prop_id="major_tick_space" out_exp="true"> + <exp bool_exp="true"> + <expression>(pv1 - pv0) / 10</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:MinTemp</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:MaxTemp</pv_name> + </rule> + <rule name="MinorTick" prop_id="minor_tick_space" out_exp="true"> + <exp bool_exp="true"> + <expression>(pv1 - pv0) / 100</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:MinTemp</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:MaxTemp</pv_name> + </rule> + </rules> + <tooltip>Pressure and limits</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <auto_scale>false</auto_scale> + <limits_from_pv>false</limits_from_pv> + <lcd_font>4</lcd_font> + <knob_color> + <color name="Button_Background" red="236" green="236" blue="236"> + </color> + </knob_color> + <medium_tick_visible>false</medium_tick_visible> + <needle_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </needle_color> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FeedbackForceVal</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_ForceValue</pv_name> + <x>176</x> + <y>230</y> + <width>90</width> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback force Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textentry" version="3.0.0"> + <name>INP_ForceValue</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_ForceValue</pv_name> + <x>76</x> + <y>230</y> + <width>90</width> + <precision>2</precision> + <show_units>false</show_units> + <rules> + <rule name="Enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ForceText</name> + <text>Force:</text> + <x>16</x> + <y>230</y> + <width>50</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>Limits</name> + <x>12</x> + <y>300</y> + <width>290</width> + <height>190</height> + <style>3</style> + <background_color> + <color name="BACKGROUND" red="220" green="225" blue="221"> + </color> + </background_color> + <widget type="rectangle" version="2.0.0"> + <name>Rect_Limits_Ttile</name> + <width>290</width> + <height>59</height> + <line_width>0</line_width> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <corner_width>10</corner_width> + <corner_height>10</corner_height> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Rect_Limits_Back</name> + <y>30</y> + <width>290</width> + <height>160</height> + <line_width>2</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <corner_height>10</corner_height> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Limits_title</name> + <class>HEADER2</class> + <text>Limits</text> + <width>290</width> + <height>31</height> + <font use_class="true"> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="TEXT-LIGHT" red="230" green="230" blue="230"> + </color> + </foreground_color> + <background_color use_class="true"> + <color name="Background" red="220" green="225" blue="221"> + </color> + </background_color> + <transparent use_class="true">true</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_HIHI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HIHI</pv_name> + <x>180</x> + <y>55</y> + <width>80</width> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value HIHI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_HIGH</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HI</pv_name> + <x>180</x> + <y>85</y> + <width>80</width> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value HIGH</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_LOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LO</pv_name> + <x>180</x> + <y>115</y> + <width>80</width> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value LOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_LOLO</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LOLO</pv_name> + <x>180</x> + <y>145</y> + <width>80</width> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value LOLO</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_HIHI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_HIHI</pv_name> + <x>80</x> + <y>55</y> + <width>90</width> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="MinimumRule" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:MinTemp</pv_name> + </rule> + <rule name="MaximumRule" prop_id="maximum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:MaxTemp</pv_name> + </rule> + </rules> + <tooltip>Alarm HIHI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_HIGH</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_HI</pv_name> + <x>80</x> + <y>85</y> + <width>90</width> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="MinimumRule" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:MinTemp</pv_name> + </rule> + <rule name="MaximumRule" prop_id="maximum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:MaxTemp</pv_name> + </rule> + </rules> + <tooltip>Warning HIGH</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_LOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_LO</pv_name> + <x>80</x> + <y>115</y> + <width>90</width> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="MinimumRule" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:MinTemp</pv_name> + </rule> + <rule name="MaximumRule" prop_id="maximum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:MaxTemp</pv_name> + </rule> + </rules> + <tooltip>Warning LOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_LOLO</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_LOLO</pv_name> + <x>80</x> + <y>145</y> + <width>90</width> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="MinimumRule" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:MinTemp</pv_name> + </rule> + <rule name="MaximumRule" prop_id="maximum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:MaxTemp</pv_name> + </rule> + </rules> + <tooltip>Alarm LOLO</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HIHI</name> + <text>HIHI:</text> + <x>20</x> + <y>55</y> + <width>50</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HIGH</name> + <text>HIGH:</text> + <x>20</x> + <y>85</y> + <width>50</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_LOW</name> + <text>LOW:</text> + <x>20</x> + <y>115</y> + <width>50</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_LOLO</name> + <text>LOLO:</text> + <x>20</x> + <y>145</y> + <width>50</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>OP Modes</name> + <x>320</x> + <y>10</y> + <width>230</width> + <height>170</height> + <style>3</style> + <background_color> + <color name="BACKGROUND" red="220" green="225" blue="221"> + </color> + </background_color> + <widget type="rectangle" version="2.0.0"> + <name>Rect_Mode_Title</name> + <width>230</width> + <height>59</height> + <line_width>0</line_width> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <corner_width>10</corner_width> + <corner_height>10</corner_height> + </widget> + <widget type="label" version="2.0.0"> + <name>Rect_LB_Title</name> + <class>HEADER2</class> + <text>OP Modes</text> + <width>230</width> + <height>31</height> + <font use_class="true"> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="TEXT-LIGHT" red="230" green="230" blue="230"> + </color> + </foreground_color> + <background_color use_class="true"> + <color name="Background" red="220" green="225" blue="221"> + </color> + </background_color> + <transparent use_class="true">true</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Rect_Mode_Back</name> + <y>30</y> + <width>230</width> + <height>140</height> + <line_width>2</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <corner_height>10</corner_height> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Mode_Auto</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_FreeRun</pv_name> + <x>63</x> + <y>61</y> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode Freerun</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Mode_Auto</name> + <text>Auto</text> + <x>93</x> + <y>60</y> + <width>79</width> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Mode_Forced</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <x>63</x> + <y>112</y> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode Forced</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Mode_Forced</name> + <text>Forced</text> + <x>93</x> + <y>111</y> + <width>79</width> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>Messages</name> + <x>320</x> + <y>200</y> + <width>230</width> + <height>132</height> + <style>3</style> + <background_color> + <color name="BACKGROUND" red="220" green="225" blue="221"> + </color> + </background_color> + <widget type="rectangle" version="2.0.0"> + <name>Rect_Msg_Title</name> + <width>230</width> + <height>59</height> + <line_width>0</line_width> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <corner_width>10</corner_width> + <corner_height>10</corner_height> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Msg_Title</name> + <class>HEADER2</class> + <text>Messages</text> + <width>230</width> + <height>31</height> + <font use_class="true"> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="TEXT-LIGHT" red="230" green="230" blue="230"> + </color> + </foreground_color> + <background_color use_class="true"> + <color name="Background" red="220" green="225" blue="221"> + </color> + </background_color> + <transparent use_class="true">true</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Rect_Msg_Back</name> + <y>30</y> + <width>230</width> + <height>102</height> + <line_width>2</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <corner_height>10</corner_height> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm</name> + <text>- Alarms latching disabled</text> + <x>20</x> + <y>80</y> + <width>190</width> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitForce</name> + <text>- Force mode inhibited</text> + <x>20</x> + <y>50</y> + <width>190</width> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Force</pv_name> + </rule> + </rules> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>Alarms</name> + <x>570</x> + <y>10</y> + <width>230</width> + <height>480</height> + <style>3</style> + <background_color> + <color name="BACKGROUND" red="220" green="225" blue="221"> + </color> + </background_color> + <widget type="rectangle" version="2.0.0"> + <name>Rect_ALM_Title</name> + <width>230</width> + <height>59</height> + <line_width>0</line_width> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <corner_width>10</corner_width> + <corner_height>10</corner_height> + <rules> + <rule name="BackColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0==0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 1"> + <value> + <color name="RED-GROUP-BORDER" red="167" green="134" blue="130"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Title</name> + <class>HEADER2</class> + <text>Alarms</text> + <width>230</width> + <height>31</height> + <font use_class="true"> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="TEXT-LIGHT" red="230" green="230" blue="230"> + </color> + </foreground_color> + <background_color use_class="true"> + <color name="Background" red="220" green="225" blue="221"> + </color> + </background_color> + <transparent use_class="true">true</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Rect_ALM_Back</name> + <y>30</y> + <width>230</width> + <height>450</height> + <line_width>2</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <corner_height>10</corner_height> + <rules> + <rule name="Linecolor" prop_id="line_color" out_exp="false"> + <exp bool_exp="pv0==0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <exp bool_exp="pv0==1"> + <value> + <color name="RED-GROUP-BORDER" red="167" green="134" blue="130"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + </rule> + <rule name="Backcolor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0==0"> + <value> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </value> + </exp> + <exp bool_exp="pv0==1"> + <value> + <color name="RED-GROUP-BACKGROUND" red="208" green="175" blue="172"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Overrange</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Overrange</pv_name> + <x>20</x> + <y>59</y> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Overrange</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_HIHI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:HIHI</pv_name> + <x>20</x> + <y>111</y> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>HIHI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_HI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:HI</pv_name> + <x>20</x> + <y>163</y> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="WARNING" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>HI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_LOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LO</pv_name> + <x>20</x> + <y>215</y> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="WARNING" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>LOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_LOWLOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LOLO</pv_name> + <x>20</x> + <y>267</y> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>LOWLOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Underrange</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Underrange</pv_name> + <x>20</x> + <y>319</y> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Underrange</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_IO_error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:PN_Module_Error</pv_name> + <x>20</x> + <y>371</y> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O Error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Overrange</name> + <text>Overrange</text> + <x>60</x> + <y>59</y> + <width>160</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_HIHI</name> + <text>HIHI</text> + <x>60</x> + <y>111</y> + <width>160</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_HI</name> + <text>HI</text> + <x>60</x> + <y>163</y> + <width>160</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_LOW</name> + <text>LOW</text> + <x>60</x> + <y>215</y> + <width>160</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_LOLO</name> + <text>LOWLOW</text> + <x>60</x> + <y>267</y> + <width>160</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Underrange</name> + <text>Underrange</text> + <x>60</x> + <y>319</y> + <width>160</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_LakeShore</name> + <text>LakeShore PN Module Error</text> + <x>60</x> + <y>360</y> + <width>160</width> + <height>61</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_UNLOCK</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceUnlock</pv_name> + <value>1</value> + <description>Write ForceUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <value>0</value> + <description>Write EnaForceUnlock</description> + </action> + </actions> + <text>Forced Unlock</text> + <x>570</x> + <y>504</y> + <width>230</width> + <height>35</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 1)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 0)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force unlock device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_ACK</name> + <actions> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_AckAlarm</pv_name> + <value>1</value> + <description>Acknowledge alarms</description> + </action> + </actions> + <text>Acknowledge Alarm</text> + <x>570</x> + <y>554</y> + <width>230</width> + <height>35</height> + <background_color> + <color name="ORANGE" red="254" green="194" blue="81"> + </color> + </background_color> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1) || (pv2 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0) && (pv2 == 1)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + <tooltip>Acknowledge alarms</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_APPLY</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceVal</pv_name> + <text>Apply Forced Value</text> + <x>321</x> + <y>553</y> + <width>230</width> + <height>35</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + <show_confirm_dialog>true</show_confirm_dialog> + <confirm_message>Are your sure you want to apply the Forced value?</confirm_message> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Force</pv_name> + <text>Forced</text> + <x>321</x> + <y>504</y> + <width>230</width> + <height>35</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableForcedBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>FORCE operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_AUTO</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_FreeRun</pv_name> + <text>Auto</text> + <x>71</x> + <y>506</y> + <width>230</width> + <height>35</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableFreeRunBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Free run operation mode</tooltip> + </widget> + </widget> + </children> + </tab> + <tab> + <name> Trend</name> + <children> + <widget type="databrowser" version="2.0.0"> + <name>DataBrowser</name> + <file>AnalogTransmitter_Faceplate_LakeShore_Trend.plt</file> + <x>3</x> + <width>778</width> + <height>597</height> + </widget> + </children> + </tab> + </tabs> + <x>10</x> + <y>55</y> + <width>814</width> + <height>633</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="21.0"> + </font> + </font> + <tab_height>40</tab_height> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Header Bar</name> + <width>834</width> + <height>50</height> + <line_width>0</line_width> + <line_color> + <color red="0" green="0" blue="255" alpha="0"> + </color> + </line_color> + <background_color> + <color name="PRIMARY-HEADER-BACKGROUND" red="151" green="188" blue="202"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HeaderPVName</name> + <text>${SecSub}:${Dis}-${Dev}-${Index}</text> + <x>20</x> + <width>580</width> + <height>50</height> + <font> + <font name="Header 1" family="Source Sans Pro" style="BOLD_ITALIC" size="36.0"> + </font> + </font> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Locked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>0</value> + <description>Write CMD_DEVUNLOCK</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock(99)</pv_name> + <value>1</value> + <description>Run Lock script</description> + </action> + </actions> + <text>Lock</text> + <x>725</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + </rule> + </rules> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: generate unique Machine ID from the network adapters to use it for locking mechanism*/ + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); + +var Lock = pvs[0];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock*/ +var Cmd_DevLock = pvs[1];/*${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock*/ +var P_Faceplate_LockID = pvs[2];/*${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID*/ +var Inhibit_Lock = pvs[3];/*${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock*/ +var Faceplate_LockID = pvs[4];/*${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID*/ +var BlockIcon_LockID = pvs[5];/*${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID*/ +var EnaForceUnlock = pvs[6];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock*/ +var DevLocked = pvs[7];/*${SecSub}:${Dis}-${Dev}-${Index}:DevLocked*/ + + + + +var PV1 = PVUtil.getLong(Faceplate_LockID); /*Faceplate_LockID*/ +var PV2 = PVUtil.getLong(BlockIcon_LockID); /*BlockIcon_LockID*/ + +//OnShow +if (PVUtil.getLong(DevLocked) == 1) { /*DevLocked*/ + + if (PV1.toString() == PV2.toString()){ /*FaceplateLockID != BlockIconeLockID*/ + + logger.info(" Owner"); + EnaForceUnlock.setValue(0); /*Write EnaForceUnlock*/ + + } else + { + logger.info(" Faceplate FaceplateLockID "+ PV1); + logger.info(" Faceplate BlockIconeLockID "+ PV2); + + logger.info(" Guest"); + EnaForceUnlock.setValue(1); /*Write EnaForceUnlock*/ + } + + + +} +// OnClick +if (PVUtil.getLong(Lock) != 99) { /*loc://Lock, check if the script was triggered because of a button press or initilization*/ + if (PVUtil.getLong(Inhibit_Lock) == 0) { /*Inhibit_lock, check if locking is inhibited*/ + + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + UniqueText = UniqueText + intf.getName() + intf.getDisplayName(); + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + UniqueText = UniqueText + enumIpAddr.nextElement().toString(); + } + } + + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText); + logger.info(" Faceplate machine ID: "+crc); + P_Faceplate_LockID.setValue(crc); /*Write P_Faceplate_LockID*/ + Cmd_DevLock.setValue(1); /*Write Lock*/ + + } /*Lock inhibit*/ +} /*onshow*/ + +]]></text> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID</pv_name> + <pv_name trigger="false">loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + </script> + </scripts> + <tooltip>Lock this device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Unlocked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>1</value> + <description>Write CMD_DevUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <value>0</value> + <description>Write CMD_DevLock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + </actions> + <text>Unlock</text> + <x>620</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false) || (pv1 == true) || (pv2 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true) && (pv1 == false) && (pv2 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Unlock this device</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_Faceplate_LakeShore_Trend.plt b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_Faceplate_LakeShore_Trend.plt new file mode 100644 index 0000000000000000000000000000000000000000..e431b30ee6154b3e5c7e99bbf77442f3081855a1 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_Faceplate_LakeShore_Trend.plt @@ -0,0 +1,127 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<databrowser> + <title></title> + <save_changes>true</save_changes> + <show_legend>false</show_legend> + <show_toolbar>true</show_toolbar> + <grid>false</grid> + <scroll>true</scroll> + <update_period>3.0</update_period> + <scroll_step>5</scroll_step> + <start>-10 minutes 0.0 seconds</start> + <end>now</end> + <archive_rescale>NONE</archive_rescale> + <foreground> + <red>229</red> + <green>229</green> + <blue>229</blue> + </foreground> + <background> + <red>77</red> + <green>77</green> + <blue>77</blue> + </background> + <title_font>Cantarell|16|1</title_font> + <label_font>Cantarell|11|1</label_font> + <scale_font>Cantarell|10|0</scale_font> + <legend_font>Cantarell|10|0</legend_font> + <axes> + <axis> + <visible>true</visible> + <name>Value Axis</name> + <use_axis_name>true</use_axis_name> + <use_trace_names>true</use_trace_names> + <right>false</right> + <color> + <red>255</red> + <green>165</green> + <blue>0</blue> + </color> + <min>8.36645</min> + <max>8.64255</max> + <grid>true</grid> + <autoscale>true</autoscale> + <log_scale>false</log_scale> + </axis> + <axis> + <visible>true</visible> + <name>Value 1</name> + <use_axis_name>false</use_axis_name> + <use_trace_names>true</use_trace_names> + <right>false</right> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <min>7.243775</min> + <max>7.3279250000000005</max> + <grid>false</grid> + <autoscale>true</autoscale> + <log_scale>false</log_scale> + </axis> + <axis> + <visible>true</visible> + <name>Value 2</name> + <use_axis_name>false</use_axis_name> + <use_trace_names>true</use_trace_names> + <right>false</right> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <min>810.94</min> + <max>832.0600000000001</max> + <grid>false</grid> + <autoscale>true</autoscale> + <log_scale>false</log_scale> + </axis> + <axis> + <visible>true</visible> + <name>Value 3</name> + <use_axis_name>false</use_axis_name> + <use_trace_names>true</use_trace_names> + <right>false</right> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <min>0.9</min> + <max>3.1</max> + <grid>false</grid> + <autoscale>true</autoscale> + <log_scale>false</log_scale> + </axis> + </axes> + <annotations> + </annotations> + <pvlist> + <pv> + <display_name>${SecSub}:${Dis}-${Dev}-${Index}:MeasValue</display_name> + <visible>true</visible> + <name>${SecSub}:${Dis}-${Dev}-${Index}:MeasValue</name> + <axis>0</axis> + <color> + <red>255</red> + <green>0</green> + <blue>0</blue> + </color> + <trace_type>AREA</trace_type> + <linewidth>3</linewidth> + <line_style>SOLID</line_style> + <point_type>NONE</point_type> + <point_size>2</point_size> + <waveform_index>0</waveform_index> + <period>0.0</period> + <ring_size>5000</ring_size> + <request>RAW</request> + <archive> + <name>ESS Archiver</name> + <url>pbraw://archiver-01.tn.esss.lu.se:17668/retrieval</url> + <key>1</key> + </archive> + </pv> + </pvlist> +</databrowser> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_Faceplate_Pt100_Temperature.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_Faceplate_Pt100_Temperature.bob new file mode 100644 index 0000000000000000000000000000000000000000..5c4f7bf0f810d044ce51370b1c89eea1704e447b --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_Faceplate_Pt100_Temperature.bob @@ -0,0 +1,1705 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>Analog_TRANSMITTER_Pt100_Faceplate</name> + <width>965</width> + <height>780</height> + <widget type="tabs" version="2.0.0"> + <name>Tabs</name> + <tabs> + <tab> + <name>Status</name> + <children> + <widget type="group" version="2.0.0"> + <name>group.status</name> + <x>10</x> + <y>10</y> + <height>300</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.border</name> + <width>300</width> + <height>300</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>260</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Status</name> + <text>STATUS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Status_Title</name> + <text>${WIDLabel}</text> + <x>10</x> + <y>200</y> + <width>280</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ForceText</name> + <text>Force:</text> + <x>15</x> + <y>245</y> + <width>55</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textentry" version="3.0.0"> + <name>INP_ForceValue</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_ForceValue</pv_name> + <x>80</x> + <y>245</y> + <height>30</height> + <font> + <font name="NORMAL-SANS-BOLD" family="Source Sans Pro" style="BOLD" size="16.0"> + </font> + </font> + <precision>2</precision> + <show_units>false</show_units> + <rules> + <rule name="Enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FeedbackForceVal</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_ForceValue</pv_name> + <x>190</x> + <y>245</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Feedback force Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="gauge" version="2.0.0"> + <name>Gauge</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:MeasValue</pv_name> + <skin>4</skin> + <x>14</x> + <y>44</y> + <width>270</width> + <height>172</height> + <precision>1</precision> + <rules> + <rule name="HIHI" prop_id="level_hihi" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HIHI</pv_name> + </rule> + <rule name="HI" prop_id="level_high" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HI</pv_name> + </rule> + <rule name="LO" prop_id="level_low" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LO</pv_name> + </rule> + <rule name="LOLO" prop_id="level_lolo" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LOLO</pv_name> + </rule> + </rules> + <border_alarm_sensitive>false</border_alarm_sensitive> + <auto_scale>false</auto_scale> + <maximum>350.0</maximum> + <limits_from_pv>false</limits_from_pv> + <major_tick_space>100.0</major_tick_space> + <minor_tick_space>15.0</minor_tick_space> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.op.modes</name> + <x>320</x> + <y>10</y> + <height>300</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.border</name> + <width>300</width> + <height>300</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>260</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OP_MODES</name> + <text>OP MODES</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_FreeRun</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_FreeRun</pv_name> + <x>78</x> + <y>63</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode Freerun</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_FREERUN</name> + <text>FREERUN</text> + <x>113</x> + <y>63</y> + <width>70</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Forced</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <x>78</x> + <y>98</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode Forced</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_FORCED_1</name> + <text>FORCED</text> + <x>113</x> + <y>98</y> + <width>70</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_MESSAGES_1</name> + <text>MESSAGES</text> + <x>5</x> + <y>160</y> + <width>290</width> + <font> + <font name="Fine Print" family="Source Sans Pro" style="REGULAR" size="14.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitForce</name> + <text>- Force mode inhibited</text> + <x>15</x> + <y>210</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <transparent>false</transparent> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Force</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm</name> + <text>- Alarms latching enabled</text> + <x>15</x> + <y>230</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <transparent>false</transparent> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm_1</name> + <text>- Alarms latching disabled</text> + <x>15</x> + <y>230</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <transparent>false</transparent> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.alarms</name> + <x>630</x> + <y>10</y> + <height>557</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.border</name> + <width>300</width> + <height>550</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>506</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALARMS</name> + <text>ALARMS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackgroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Group alarm</tooltip> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Overrange</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Overrange</pv_name> + <x>55</x> + <y>50</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Overrange</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Overrange</name> + <text>Overrange</text> + <x>90</x> + <y>50</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_HIHI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:HIHI</pv_name> + <x>55</x> + <y>85</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>HIHI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_HIHI</name> + <text>HIHI</text> + <x>90</x> + <y>85</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_HI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:HI</pv_name> + <x>55</x> + <y>120</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="WARNING" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>HI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_HI</name> + <text>HI</text> + <x>90</x> + <y>120</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_LOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LO</pv_name> + <x>55</x> + <y>155</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="WARNING" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>LOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_LOW</name> + <text>LOW</text> + <x>90</x> + <y>155</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_LOWLOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LOLO</pv_name> + <x>55</x> + <y>190</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>LOWLOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_LOLO</name> + <text>LOWLOW</text> + <x>90</x> + <y>190</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Underrange</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Underrange</pv_name> + <x>55</x> + <y>225</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Underrange</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Underrange</name> + <text>Underrange</text> + <x>90</x> + <y>225</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_IO_error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DigitalInp_IO_Error</pv_name> + <x>55</x> + <y>260</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O Error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_IO_Error</name> + <text>Digital Input Error</text> + <x>90</x> + <y>260</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Module_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Module_Error</pv_name> + <x>55</x> + <y>328</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Siemens Module Error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Module_Error</name> + <text>Siemens Module Error</text> + <x>90</x> + <y>328</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_IO_error_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:AnalogInp_IO_Error</pv_name> + <x>55</x> + <y>294</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O Error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_IO_Error_1</name> + <text>Analog Input Error</text> + <x>90</x> + <y>294</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.limits</name> + <x>10</x> + <y>320</y> + <height>246</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.limits.border</name> + <width>300</width> + <height>239</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.limits.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>196</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Limits</name> + <text>LIMITS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HIHI</name> + <text>HIHI:</text> + <x>15</x> + <y>50</y> + <width>55</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_HIHI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HIHI</pv_name> + <x>190</x> + <y>50</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value HIHI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_HIHI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_HIHI</pv_name> + <x>80</x> + <y>50</y> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="MinimumRule" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + </rule> + <rule name="MaximumRule" prop_id="maximum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleHIGH</pv_name> + </rule> + </rules> + <tooltip>Alarm HIHI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_HIGH</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_HI</pv_name> + <x>80</x> + <y>90</y> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="MinimumRule" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + </rule> + <rule name="MaximumRule" prop_id="maximum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleHIGH</pv_name> + </rule> + </rules> + <tooltip>Warning HIGH</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HIGH</name> + <text>HIGH:</text> + <x>15</x> + <y>90</y> + <width>55</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_HIGH</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HI</pv_name> + <x>190</x> + <y>90</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value HIGH</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_LOW</name> + <text>LOW:</text> + <x>15</x> + <y>140</y> + <width>55</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_LOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_LO</pv_name> + <x>80</x> + <y>140</y> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="MinimumRule" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + </rule> + <rule name="MaximumRule" prop_id="maximum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleHIGH</pv_name> + </rule> + </rules> + <tooltip>Warning LOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_LOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LO</pv_name> + <x>190</x> + <y>140</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value LOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_LOLO</name> + <text>LOLO:</text> + <x>15</x> + <y>180</y> + <width>55</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_LOLO</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_LOLO</pv_name> + <x>80</x> + <y>180</y> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="MinimumRule" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + </rule> + <rule name="MaximumRule" prop_id="maximum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleHIGH</pv_name> + </rule> + </rules> + <tooltip>Alarm LOLO</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_LOLO</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LOLO</pv_name> + <x>190</x> + <y>180</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value LOLO</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>buttons.bar</name> + <x>10</x> + <y>575</y> + <width>920</width> + <height>80</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_AUTO</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_FreeRun</pv_name> + <text>FREERUN</text> + <x>15</x> + <y>616</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableFreeRunBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Free run operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Force</pv_name> + <text>FORCE</text> + <x>220</x> + <y>616</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableForcedBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>FORCE operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_UNLOCK</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceUnlock</pv_name> + <value>1</value> + <description>Write ForceUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <value>0</value> + <description>Write EnaForceUnlock</description> + </action> + </actions> + <text>FORCE UNLOCK</text> + <x>725</x> + <y>580</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 1)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 0)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force unlock device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_APPLY</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceVal</pv_name> + <text>APPLY VALUE</text> + <x>220</x> + <y>580</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_ACK</name> + <actions> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_AckAlarm</pv_name> + <value>1</value> + <description>Acknowledge alarms</description> + </action> + </actions> + <text>Acknowledge Alarm</text> + <x>725</x> + <y>616</y> + <width>200</width> + <height>33</height> + <background_color> + <color name="ORANGE" red="254" green="194" blue="81"> + </color> + </background_color> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1) || (pv2 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0) && (pv2 == 1)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + <tooltip>Acknowledge alarms</tooltip> + </widget> + <widget type="group" version="2.0.0"> + <name>group.Cernox</name> + <x>318</x> + <y>322</y> + <height>249</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.border_1</name> + <width>300</width> + <height>238</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.background_1</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>195</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Pt100</name> + <text>Pt100</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="text-symbol" version="2.0.0"> + <name>Text Symbol</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Range</pv_name> + <symbols> + <symbol>PR Conditioner</symbol> + <symbol>Range1</symbol> + <symbol>Range2</symbol> + <symbol>Range3</symbol> + <symbol>Range4:29.28K-120K</symbol> + </symbols> + <x>109</x> + <y>35</y> + <width>158</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="16.0"> + </font> + </font> + <horizontal_alignment>0</horizontal_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_range</name> + <text>Range:</text> + <x>25</x> + <y>34</y> + <width>70</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TT_Resistance</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Resistance</pv_name> + <x>110</x> + <y>67</y> + <width>156</width> + <height>25</height> + <precision>0</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback force Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Resistance</name> + <text>Calc. Resist.</text> + <x>17</x> + <y>51</y> + <width>83</width> + <height>56</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Current</name> + <text>Current:</text> + <x>13</x> + <y>94</y> + <width>83</width> + <height>37</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TT_Current</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Current</pv_name> + <x>109</x> + <y>100</y> + <width>156</width> + <height>25</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback force Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Curve</name> + <text>Serial nr.</text> + <x>29</x> + <y>130</y> + <width>67</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TT_FB_Curve</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_SerialNumber</pv_name> + <x>110</x> + <y>133</y> + <width>155</width> + <height>25</height> + <precision>0</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback force Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Curve_1</name> + <text>Device</text> + <x>37</x> + <y>166</y> + <width>55</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TT_FB_Curve_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_DeviceName</pv_name> + <x>108</x> + <y>166</y> + <width>155</width> + <height>25</height> + <precision>0</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback force Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Curve_2</name> + <text>Plug nr.</text> + <x>40</x> + <y>199</y> + <width>55</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TT_FB_Curve_2</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_PlugNumber</pv_name> + <x>109</x> + <y>200</y> + <width>155</width> + <height>25</height> + <precision>0</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback force Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + </widget> + </children> + </tab> + <tab> + <name>Trend</name> + <children> + <widget type="databrowser" version="2.0.0"> + <name>DataBrowser</name> + <file>AnalogTransmitter_Faceplate_Trend.plt</file> + <width>940</width> + <height>651</height> + </widget> + </children> + </tab> + </tabs> + <x>10</x> + <y>60</y> + <width>943</width> + <height>707</height> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Header Bar</name> + <width>963</width> + <height>50</height> + <line_width>0</line_width> + <line_color> + <color red="0" green="0" blue="255" alpha="0"> + </color> + </line_color> + <background_color> + <color name="PRIMARY-HEADER-BACKGROUND" red="151" green="188" blue="202"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HeaderPVName</name> + <text>${SecSub}:${Dis}-${Dev}-${Index}</text> + <x>20</x> + <width>715</width> + <height>50</height> + <font> + <font name="Header 1" family="Source Sans Pro" style="BOLD_ITALIC" size="36.0"> + </font> + </font> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Locked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>0</value> + <description>Write CMD_DEVUNLOCK</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock(99)</pv_name> + <value>1</value> + <description>Run Lock script</description> + </action> + </actions> + <text>LOCK</text> + <x>850</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + </rule> + </rules> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: generate unique Machine ID from the network adapters to use it for locking mechanism*/ + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); + +var Lock = pvs[0];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock*/ +var Cmd_DevLock = pvs[1];/*${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock*/ +var P_Faceplate_LockID = pvs[2];/*${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID*/ +var Inhibit_Lock = pvs[3];/*${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock*/ +var Faceplate_LockID = pvs[4];/*${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID*/ +var BlockIcon_LockID = pvs[5];/*${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID*/ +var EnaForceUnlock = pvs[6];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock*/ +var DevLocked = pvs[7];/*${SecSub}:${Dis}-${Dev}-${Index}:DevLocked*/ + + + + +var PV1 = PVUtil.getLong(Faceplate_LockID); /*Faceplate_LockID*/ +var PV2 = PVUtil.getLong(BlockIcon_LockID); /*BlockIcon_LockID*/ + +//OnShow +if (PVUtil.getLong(DevLocked) == 1) { /*DevLocked*/ + + if (PV1.toString() == PV2.toString()){ /*FaceplateLockID != BlockIconeLockID*/ + + logger.info(" Owner"); + EnaForceUnlock.setValue(0); /*Write EnaForceUnlock*/ + + } else + { + logger.info(" Faceplate FaceplateLockID "+ PV1); + logger.info(" Faceplate BlockIconeLockID "+ PV2); + + logger.info(" Guest"); + EnaForceUnlock.setValue(1); /*Write EnaForceUnlock*/ + } + + + +} +// OnClick +if (PVUtil.getLong(Lock) != 99) { /*loc://Lock, check if the script was triggered because of a button press or initilization*/ + if (PVUtil.getLong(Inhibit_Lock) == 0) { /*Inhibit_lock, check if locking is inhibited*/ + + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + UniqueText = UniqueText + intf.getName() + intf.getDisplayName(); + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + UniqueText = UniqueText + enumIpAddr.nextElement().toString(); + } + } + + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText); + logger.info(" Faceplate machine ID: "+crc); + P_Faceplate_LockID.setValue(crc); /*Write P_Faceplate_LockID*/ + Cmd_DevLock.setValue(1); /*Write Lock*/ + + } /*Lock inhibit*/ +} /*onshow*/ + +]]></text> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID</pv_name> + <pv_name trigger="false">loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + </script> + </scripts> + <tooltip>Lock this device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Unlocked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>1</value> + <description>Write CMD_DevUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <value>0</value> + <description>Write CMD_DevLock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + </actions> + <text>UNLOCK</text> + <x>755</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false) || (pv1 == true) || (pv2 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true) && (pv1 == false) && (pv2 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Unlock this device</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_Faceplate_Trend.plt b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_Faceplate_Trend.plt new file mode 100644 index 0000000000000000000000000000000000000000..7e83f0bf83ada85871844da8229ae0b9c4450674 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_Faceplate_Trend.plt @@ -0,0 +1,202 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<databrowser> + <title></title> + <save_changes>true</save_changes> + <show_legend>false</show_legend> + <show_toolbar>true</show_toolbar> + <grid>false</grid> + <scroll>true</scroll> + <update_period>3.0</update_period> + <scroll_step>5</scroll_step> + <start>-10 minutes 0.0 seconds</start> + <end>now</end> + <archive_rescale>NONE</archive_rescale> + <foreground> + <red>229</red> + <green>229</green> + <blue>229</blue> + </foreground> + <background> + <red>77</red> + <green>77</green> + <blue>77</blue> + </background> + <title_font>Cantarell|16|1</title_font> + <label_font>Cantarell|11|1</label_font> + <scale_font>Cantarell|10|0</scale_font> + <legend_font>Cantarell|10|0</legend_font> + <axes> + <axis> + <visible>true</visible> + <name>Value Axis</name> + <use_axis_name>true</use_axis_name> + <use_trace_names>true</use_trace_names> + <right>false</right> + <color> + <red>255</red> + <green>165</green> + <blue>0</blue> + </color> + <min>8.36645</min> + <max>8.64255</max> + <grid>true</grid> + <autoscale>true</autoscale> + <log_scale>false</log_scale> + </axis> + <axis> + <visible>true</visible> + <name>Value 1</name> + <use_axis_name>false</use_axis_name> + <use_trace_names>true</use_trace_names> + <right>false</right> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <min>7.243775</min> + <max>7.3279250000000005</max> + <grid>false</grid> + <autoscale>true</autoscale> + <log_scale>false</log_scale> + </axis> + <axis> + <visible>true</visible> + <name>Value 2</name> + <use_axis_name>false</use_axis_name> + <use_trace_names>true</use_trace_names> + <right>false</right> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <min>810.94</min> + <max>832.0600000000001</max> + <grid>false</grid> + <autoscale>true</autoscale> + <log_scale>false</log_scale> + </axis> + <axis> + <visible>true</visible> + <name>Value 3</name> + <use_axis_name>false</use_axis_name> + <use_trace_names>true</use_trace_names> + <right>false</right> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <min>0.9</min> + <max>3.1</max> + <grid>false</grid> + <autoscale>true</autoscale> + <log_scale>false</log_scale> + </axis> + </axes> + <annotations> + </annotations> + <pvlist> + <pv> + <display_name>${SecSub}:${Dis}-${Dev}-${Index}:MeasValue</display_name> + <visible>true</visible> + <name>${SecSub}:${Dis}-${Dev}-${Index}:MeasValue</name> + <axis>0</axis> + <color> + <red>255</red> + <green>0</green> + <blue>0</blue> + </color> + <trace_type>AREA</trace_type> + <linewidth>3</linewidth> + <line_style>SOLID</line_style> + <point_type>NONE</point_type> + <point_size>2</point_size> + <waveform_index>0</waveform_index> + <period>0.0</period> + <ring_size>5000</ring_size> + <request>RAW</request> + <archive> + <name>ESS Archiver</name> + <url>pbraw://archiver-01.tn.esss.lu.se:17668/retrieval</url> + <key>1</key> + </archive> + </pv> + <pv> + <display_name>${SecSub}:${Dis}-${Dev}-${Index}:Current</display_name> + <visible>true</visible> + <name>${SecSub}:${Dis}-${Dev}-${Index}:Current</name> + <axis>1</axis> + <color> + <red>0</red> + <green>255</green> + <blue>0</blue> + </color> + <trace_type>AREA</trace_type> + <linewidth>2</linewidth> + <line_style>SOLID</line_style> + <point_type>NONE</point_type> + <point_size>2</point_size> + <waveform_index>0</waveform_index> + <period>0.0</period> + <ring_size>5000</ring_size> + <request>RAW</request> + <archive> + <name>ESS Archiver</name> + <url>pbraw://archiver-01.tn.esss.lu.se:17668/retrieval</url> + <key>1</key> + </archive> + </pv> + <pv> + <display_name>${SecSub}:${Dis}-${Dev}-${Index}:Resistance</display_name> + <visible>true</visible> + <name>${SecSub}:${Dis}-${Dev}-${Index}:Resistance</name> + <axis>2</axis> + <color> + <red>0</red> + <green>0</green> + <blue>255</blue> + </color> + <trace_type>AREA</trace_type> + <linewidth>2</linewidth> + <line_style>SOLID</line_style> + <point_type>NONE</point_type> + <point_size>2</point_size> + <waveform_index>0</waveform_index> + <period>0.0</period> + <ring_size>5000</ring_size> + <request>RAW</request> + <archive> + <name>ESS Archiver</name> + <url>pbraw://archiver-01.tn.esss.lu.se:17668/retrieval</url> + <key>1</key> + </archive> + </pv> + <pv> + <display_name>${SecSub}:${Dis}-${Dev}-${Index}:Range</display_name> + <visible>true</visible> + <name>${SecSub}:${Dis}-${Dev}-${Index}:Range</name> + <axis>3</axis> + <color> + <red>255</red> + <green>127</green> + <blue>0</blue> + </color> + <trace_type>AREA</trace_type> + <linewidth>2</linewidth> + <line_style>SOLID</line_style> + <point_type>NONE</point_type> + <point_size>2</point_size> + <waveform_index>0</waveform_index> + <period>0.0</period> + <ring_size>5000</ring_size> + <request>RAW</request> + <archive> + <name>ESS Archiver</name> + <url>pbraw://archiver-01.tn.esss.lu.se:17668/retrieval</url> + <key>1</key> + </archive> + </pv> + </pvlist> +</databrowser> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_Faceplate_Trend_CernoxTemperature.plt b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_Faceplate_Trend_CernoxTemperature.plt new file mode 100644 index 0000000000000000000000000000000000000000..be8c163401b43becc3093f589ee4c79added3593 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_Faceplate_Trend_CernoxTemperature.plt @@ -0,0 +1,75 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<databrowser> + <title></title> + <save_changes>true</save_changes> + <show_legend>false</show_legend> + <show_toolbar>true</show_toolbar> + <grid>false</grid> + <scroll>true</scroll> + <update_period>3.0</update_period> + <scroll_step>5</scroll_step> + <start>-10 minutes 0.0 seconds</start> + <end>now</end> + <archive_rescale>NONE</archive_rescale> + <foreground> + <red>229</red> + <green>229</green> + <blue>229</blue> + </foreground> + <background> + <red>77</red> + <green>77</green> + <blue>77</blue> + </background> + <title_font>Cantarell|16|1</title_font> + <label_font>Cantarell|11|1</label_font> + <scale_font>Cantarell|10|0</scale_font> + <legend_font>Cantarell|10|0</legend_font> + <axes> + <axis> + <visible>true</visible> + <name>Value Axis</name> + <use_axis_name>true</use_axis_name> + <use_trace_names>true</use_trace_names> + <right>false</right> + <color> + <red>255</red> + <green>165</green> + <blue>0</blue> + </color> + <min>0.0</min> + <max>25.0</max> + <grid>true</grid> + <autoscale>true</autoscale> + <log_scale>false</log_scale> + </axis> + </axes> + <annotations> + </annotations> + <pvlist> + <pv> + <display_name>${SecSub}:${Dis}-${Dev}-${Index}:MeasValue</display_name> + <visible>true</visible> + <name>${SecSub}:${Dis}-${Dev}-${Index}:MeasValue</name> + <axis>0</axis> + <color> + <red>255</red> + <green>0</green> + <blue>0</blue> + </color> + <trace_type>AREA</trace_type> + <linewidth>3</linewidth> + <point_type>NONE</point_type> + <point_size>2</point_size> + <waveform_index>0</waveform_index> + <period>0.0</period> + <ring_size>5000</ring_size> + <request>RAW</request> + <archive> + <name>ESS Archiver</name> + <url>pbraw://archiver-01.tn.esss.lu.se:17668/retrieval</url> + <key>1</key> + </archive> + </pv> + </pvlist> +</databrowser> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_Vacuum_Faceplate.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_Vacuum_Faceplate.bob new file mode 100644 index 0000000000000000000000000000000000000000..60ca87c54a34b34abdacf4c656a34f4333583d35 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_Vacuum_Faceplate.bob @@ -0,0 +1,1463 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>Analog_TRANSMITTER_Vacuum_Faceplate</name> + <width>834</width> + <height>697</height> + <grid_visible>false</grid_visible> + <widget type="tabs" version="2.0.0"> + <name>Tabs</name> + <tabs> + <tab> + <name> Status</name> + <children> + <widget type="group" version="2.0.0"> + <name>Device_Status_Group</name> + <width>810</width> + <height>600</height> + <style>3</style> + <transparent>true</transparent> + <widget type="group" version="2.0.0"> + <name>Status</name> + <x>10</x> + <y>10</y> + <width>290</width> + <height>270</height> + <style>3</style> + <background_color> + <color name="BACKGROUND" red="220" green="225" blue="221"> + </color> + </background_color> + <widget type="rectangle" version="2.0.0"> + <name>Rect_Meas_Title</name> + <width>290</width> + <height>59</height> + <line_width>0</line_width> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <corner_width>10</corner_width> + <corner_height>10</corner_height> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Rect_Meas_Back</name> + <y>30</y> + <width>290</width> + <height>240</height> + <line_width>2</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <corner_height>10</corner_height> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Meas_Title</name> + <class>HEADER2</class> + <text>Status</text> + <width>290</width> + <height>31</height> + <font use_class="true"> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="TEXT-LIGHT" red="230" green="230" blue="230"> + </color> + </foreground_color> + <background_color use_class="true"> + <color name="Background" red="220" green="225" blue="221"> + </color> + </background_color> + <transparent use_class="true">true</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Meas_Label</name> + <text>${WIDLabel}</text> + <x>5</x> + <y>186</y> + <width>280</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="meter" version="2.0.0"> + <name>Meter_Meas_Val</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:MeasValue</pv_name> + <y>31</y> + <width>290</width> + <height>165</height> + <precision>9</precision> + <level_hihi>0.0</level_hihi> + <level_high>0.0</level_high> + <level_low>0.0</level_low> + <level_lolo>0.0</level_lolo> + <show_hihi>false</show_hihi> + <show_high>false</show_high> + <show_low>false</show_low> + <show_lolo>false</show_lolo> + <rules> + <rule name="HIHI" prop_id="level_hihi" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HIHI</pv_name> + </rule> + <rule name="HIGH" prop_id="level_high" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HI</pv_name> + </rule> + <rule name="LOW" prop_id="level_low" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LO</pv_name> + </rule> + <rule name="LOLO" prop_id="level_lolo" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LOLO</pv_name> + </rule> + <rule name="ScaleLOW" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + </rule> + <rule name="ScaleHIGH" prop_id="maximum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleHIGH</pv_name> + </rule> + <rule name="MajorTick" prop_id="major_tick_space" out_exp="true"> + <exp bool_exp="true"> + <expression>(pv1 - pv0) / 10</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleHIGH</pv_name> + </rule> + <rule name="MinorTick" prop_id="minor_tick_space" out_exp="true"> + <exp bool_exp="true"> + <expression>(pv1 - pv0) / 100</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleHIGH</pv_name> + </rule> + </rules> + <tooltip>Pressure and limits</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <limits_from_pv>false</limits_from_pv> + <lcd_font>4</lcd_font> + <knob_color> + <color name="Button_Background" red="236" green="236" blue="236"> + </color> + </knob_color> + <medium_tick_visible>false</medium_tick_visible> + <needle_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </needle_color> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FeedbackForceVal</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_ForceValue</pv_name> + <x>176</x> + <y>230</y> + <width>90</width> + <format>3</format> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback force Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textentry" version="3.0.0"> + <name>INP_ForceValue</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_ForceValue</pv_name> + <x>76</x> + <y>230</y> + <width>90</width> + <format>3</format> + <precision>2</precision> + <show_units>false</show_units> + <rules> + <rule name="Enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ForceText</name> + <text>Force:</text> + <x>16</x> + <y>230</y> + <width>50</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>Limits</name> + <x>12</x> + <y>300</y> + <width>290</width> + <height>190</height> + <style>3</style> + <background_color> + <color name="BACKGROUND" red="220" green="225" blue="221"> + </color> + </background_color> + <widget type="rectangle" version="2.0.0"> + <name>Rect_Limits_Ttile</name> + <width>290</width> + <height>59</height> + <line_width>0</line_width> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <corner_width>10</corner_width> + <corner_height>10</corner_height> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Rect_Limits_Back</name> + <y>30</y> + <width>290</width> + <height>160</height> + <line_width>2</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <corner_height>10</corner_height> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Limits_title</name> + <class>HEADER2</class> + <text>Limits</text> + <width>290</width> + <height>31</height> + <font use_class="true"> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="TEXT-LIGHT" red="230" green="230" blue="230"> + </color> + </foreground_color> + <background_color use_class="true"> + <color name="Background" red="220" green="225" blue="221"> + </color> + </background_color> + <transparent use_class="true">true</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_HIHI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HIHI</pv_name> + <x>180</x> + <y>55</y> + <width>80</width> + <format>3</format> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value HIHI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_HIGH</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HI</pv_name> + <x>180</x> + <y>85</y> + <width>80</width> + <format>3</format> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value HIGH</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_LOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LO</pv_name> + <x>180</x> + <y>115</y> + <width>80</width> + <format>3</format> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value LOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_LOLO</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LOLO</pv_name> + <x>180</x> + <y>145</y> + <width>80</width> + <format>3</format> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value LOLO</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_HIHI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_HIHI</pv_name> + <x>80</x> + <y>55</y> + <width>90</width> + <format>3</format> + <precision>2</precision> + <rules> + <rule name="MinimumRule" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + </rule> + <rule name="MaximumRule" prop_id="maximum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleHIGH</pv_name> + </rule> + </rules> + <tooltip>Alarm HIHI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_HIGH</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_HI</pv_name> + <x>80</x> + <y>85</y> + <width>90</width> + <format>3</format> + <precision>2</precision> + <rules> + <rule name="MinimumRule" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + </rule> + <rule name="MaximumRule" prop_id="maximum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleHIGH</pv_name> + </rule> + </rules> + <tooltip>Warning HIGH</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_LOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_LO</pv_name> + <x>80</x> + <y>115</y> + <width>90</width> + <format>3</format> + <precision>2</precision> + <rules> + <rule name="MinimumRule" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + </rule> + <rule name="MaximumRule" prop_id="maximum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleHIGH</pv_name> + </rule> + </rules> + <tooltip>Warning LOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_LOLO</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_LOLO</pv_name> + <x>80</x> + <y>145</y> + <width>90</width> + <format>3</format> + <precision>2</precision> + <rules> + <rule name="MinimumRule" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + </rule> + <rule name="MaximumRule" prop_id="maximum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleHIGH</pv_name> + </rule> + </rules> + <tooltip>Alarm LOLO</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HIHI</name> + <text>HIHI:</text> + <x>20</x> + <y>55</y> + <width>50</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HIGH</name> + <text>HIGH:</text> + <x>20</x> + <y>85</y> + <width>50</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_LOW</name> + <text>LOW:</text> + <x>20</x> + <y>115</y> + <width>50</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_LOLO</name> + <text>LOLO:</text> + <x>20</x> + <y>145</y> + <width>50</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>OP Modes</name> + <x>320</x> + <y>10</y> + <width>230</width> + <height>170</height> + <style>3</style> + <background_color> + <color name="BACKGROUND" red="220" green="225" blue="221"> + </color> + </background_color> + <widget type="rectangle" version="2.0.0"> + <name>Rect_Mode_Title</name> + <width>230</width> + <height>59</height> + <line_width>0</line_width> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <corner_width>10</corner_width> + <corner_height>10</corner_height> + </widget> + <widget type="label" version="2.0.0"> + <name>Rect_LB_Title</name> + <class>HEADER2</class> + <text>OP Modes</text> + <width>230</width> + <height>31</height> + <font use_class="true"> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="TEXT-LIGHT" red="230" green="230" blue="230"> + </color> + </foreground_color> + <background_color use_class="true"> + <color name="Background" red="220" green="225" blue="221"> + </color> + </background_color> + <transparent use_class="true">true</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Rect_Mode_Back</name> + <y>30</y> + <width>230</width> + <height>140</height> + <line_width>2</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <corner_height>10</corner_height> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Mode_Auto</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_FreeRun</pv_name> + <x>63</x> + <y>61</y> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode Freerun</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Mode_Auto</name> + <text>Auto</text> + <x>93</x> + <y>60</y> + <width>79</width> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Mode_Forced</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <x>63</x> + <y>112</y> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode Forced</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Mode_Forced</name> + <text>Forced</text> + <x>93</x> + <y>111</y> + <width>79</width> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>Messages</name> + <x>320</x> + <y>200</y> + <width>230</width> + <height>132</height> + <style>3</style> + <background_color> + <color name="BACKGROUND" red="220" green="225" blue="221"> + </color> + </background_color> + <widget type="rectangle" version="2.0.0"> + <name>Rect_Msg_Title</name> + <width>230</width> + <height>59</height> + <line_width>0</line_width> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <corner_width>10</corner_width> + <corner_height>10</corner_height> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Msg_Title</name> + <class>HEADER2</class> + <text>Messages</text> + <width>230</width> + <height>31</height> + <font use_class="true"> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="TEXT-LIGHT" red="230" green="230" blue="230"> + </color> + </foreground_color> + <background_color use_class="true"> + <color name="Background" red="220" green="225" blue="221"> + </color> + </background_color> + <transparent use_class="true">true</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Rect_Msg_Back</name> + <y>30</y> + <width>230</width> + <height>102</height> + <line_width>2</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <corner_height>10</corner_height> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm</name> + <text>- Alarms latching disabled</text> + <x>20</x> + <y>80</y> + <width>190</width> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitForce</name> + <text>- Force mode inhibited</text> + <x>20</x> + <y>50</y> + <width>190</width> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Force</pv_name> + </rule> + </rules> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>Alarms</name> + <x>570</x> + <y>10</y> + <width>230</width> + <height>480</height> + <style>3</style> + <background_color> + <color name="BACKGROUND" red="220" green="225" blue="221"> + </color> + </background_color> + <widget type="rectangle" version="2.0.0"> + <name>Rect_ALM_Title</name> + <width>230</width> + <height>59</height> + <line_width>0</line_width> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <corner_width>10</corner_width> + <corner_height>10</corner_height> + <rules> + <rule name="BackColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0==0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 1"> + <value> + <color name="RED-GROUP-BORDER" red="167" green="134" blue="130"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Title</name> + <class>HEADER2</class> + <text>Alarms</text> + <width>230</width> + <height>31</height> + <font use_class="true"> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="TEXT-LIGHT" red="230" green="230" blue="230"> + </color> + </foreground_color> + <background_color use_class="true"> + <color name="Background" red="220" green="225" blue="221"> + </color> + </background_color> + <transparent use_class="true">true</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Rect_ALM_Back</name> + <y>30</y> + <width>230</width> + <height>450</height> + <line_width>2</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <corner_height>10</corner_height> + <rules> + <rule name="Linecolor" prop_id="line_color" out_exp="false"> + <exp bool_exp="pv0==0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <exp bool_exp="pv0==1"> + <value> + <color name="RED-GROUP-BORDER" red="167" green="134" blue="130"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + </rule> + <rule name="Backcolor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0==0"> + <value> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </value> + </exp> + <exp bool_exp="pv0==1"> + <value> + <color name="RED-GROUP-BACKGROUND" red="208" green="175" blue="172"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Overrange</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Overrange</pv_name> + <x>20</x> + <y>59</y> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Overrange</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_HIHI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:HIHI</pv_name> + <x>20</x> + <y>111</y> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>HIHI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_HI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:HI</pv_name> + <x>20</x> + <y>163</y> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="WARNING" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>HI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_LOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LO</pv_name> + <x>20</x> + <y>215</y> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="WARNING" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>LOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_LOWLOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LOLO</pv_name> + <x>20</x> + <y>267</y> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>LOWLOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Underrange</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Underrange</pv_name> + <x>20</x> + <y>319</y> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Underrange</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_IO_error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:IO_Error</pv_name> + <x>20</x> + <y>371</y> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O Error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Module_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Module_Error</pv_name> + <x>20</x> + <y>426</y> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Siemens Module Error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Overrange</name> + <text>Overrange</text> + <x>60</x> + <y>59</y> + <width>160</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_HIHI</name> + <text>HIHI</text> + <x>60</x> + <y>111</y> + <width>160</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_HI</name> + <text>HI</text> + <x>60</x> + <y>163</y> + <width>160</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_LOW</name> + <text>LOW</text> + <x>60</x> + <y>215</y> + <width>160</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_LOLO</name> + <text>LOWLOW</text> + <x>60</x> + <y>267</y> + <width>160</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Underrange</name> + <text>Underrange</text> + <x>60</x> + <y>319</y> + <width>160</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_IO_Error</name> + <text>I/O Error</text> + <x>60</x> + <y>371</y> + <width>160</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Module_Error</name> + <text>Siemens Module Error</text> + <x>60</x> + <y>426</y> + <width>160</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_UNLOCK</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceUnlock</pv_name> + <value>1</value> + <description>Write ForceUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <value>0</value> + <description>Write EnaForceUnlock</description> + </action> + </actions> + <text>Forced Unlock</text> + <x>570</x> + <y>504</y> + <width>230</width> + <height>35</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 1)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 0)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force unlock device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_ACK</name> + <actions> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_AckAlarm</pv_name> + <value>1</value> + <description>Acknowledge alarms</description> + </action> + </actions> + <text>Acknowledge Alarm</text> + <x>570</x> + <y>554</y> + <width>230</width> + <height>35</height> + <background_color> + <color name="ORANGE" red="254" green="194" blue="81"> + </color> + </background_color> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1) || (pv2 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0) && (pv2 == 1)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + <tooltip>Acknowledge alarms</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_APPLY</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceVal</pv_name> + <text>Apply Forced Value</text> + <x>321</x> + <y>553</y> + <width>230</width> + <height>35</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Force</pv_name> + <text>Forced</text> + <x>321</x> + <y>504</y> + <width>230</width> + <height>35</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableForcedBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>FORCE operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_AUTO</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_FreeRun</pv_name> + <text>Auto</text> + <x>71</x> + <y>506</y> + <width>230</width> + <height>35</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableFreeRunBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Free run operation mode</tooltip> + </widget> + </widget> + </children> + </tab> + <tab> + <name> Trend</name> + <children> + <widget type="databrowser" version="2.0.0"> + <name>DataBrowser</name> + <file>AnalogTransmitter_Faceplate_Trend.plt</file> + <width>812</width> + <height>604</height> + </widget> + </children> + </tab> + </tabs> + <x>10</x> + <y>55</y> + <width>814</width> + <height>633</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="21.0"> + </font> + </font> + <tab_height>40</tab_height> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Header Bar</name> + <width>834</width> + <height>50</height> + <line_width>0</line_width> + <line_color> + <color red="0" green="0" blue="255" alpha="0"> + </color> + </line_color> + <background_color> + <color name="PRIMARY-HEADER-BACKGROUND" red="151" green="188" blue="202"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HeaderPVName</name> + <text>${SecSub}:${Dis}-${Dev}-${Index}</text> + <x>20</x> + <width>580</width> + <height>50</height> + <font> + <font name="Header 1" family="Source Sans Pro" style="BOLD_ITALIC" size="36.0"> + </font> + </font> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Locked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>0</value> + <description>Write CMD_DEVUNLOCK</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock(99)</pv_name> + <value>1</value> + <description>Run Lock script</description> + </action> + </actions> + <text>Lock</text> + <x>725</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + </rule> + </rules> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: generate unique Machine ID from the network adapters to use it for locking mechanism*/ + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); + +var Lock = pvs[0];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock*/ +var Cmd_DevLock = pvs[1];/*${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock*/ +var P_Faceplate_LockID = pvs[2];/*${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID*/ +var Inhibit_Lock = pvs[3];/*${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock*/ +var Faceplate_LockID = pvs[4];/*${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID*/ +var BlockIcon_LockID = pvs[5];/*${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID*/ +var EnaForceUnlock = pvs[6];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock*/ +var DevLocked = pvs[7];/*${SecSub}:${Dis}-${Dev}-${Index}:DevLocked*/ + + + + +var PV1 = PVUtil.getLong(Faceplate_LockID); /*Faceplate_LockID*/ +var PV2 = PVUtil.getLong(BlockIcon_LockID); /*BlockIcon_LockID*/ + +//OnShow +if (PVUtil.getLong(DevLocked) == 1) { /*DevLocked*/ + + if (PV1.toString() == PV2.toString()){ /*FaceplateLockID != BlockIconeLockID*/ + + logger.info(" Owner"); + EnaForceUnlock.setValue(0); /*Write EnaForceUnlock*/ + + } else + { + logger.info(" Faceplate FaceplateLockID "+ PV1); + logger.info(" Faceplate BlockIconeLockID "+ PV2); + + logger.info(" Guest"); + EnaForceUnlock.setValue(1); /*Write EnaForceUnlock*/ + } + + + +} +// OnClick +if (PVUtil.getLong(Lock) != 99) { /*loc://Lock, check if the script was triggered because of a button press or initilization*/ + if (PVUtil.getLong(Inhibit_Lock) == 0) { /*Inhibit_lock, check if locking is inhibited*/ + + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + UniqueText = UniqueText + intf.getName() + intf.getDisplayName(); + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + UniqueText = UniqueText + enumIpAddr.nextElement().toString(); + } + } + + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText); + logger.info(" Faceplate machine ID: "+crc); + P_Faceplate_LockID.setValue(crc); /*Write P_Faceplate_LockID*/ + Cmd_DevLock.setValue(1); /*Write Lock*/ + + } /*Lock inhibit*/ +} /*onshow*/ + +]]></text> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID</pv_name> + <pv_name trigger="false">loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + </script> + </scripts> + <tooltip>Lock this device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Unlocked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>1</value> + <description>Write CMD_DevUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <value>0</value> + <description>Write CMD_DevLock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + </actions> + <text>Unlock</text> + <x>620</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false) || (pv1 == true) || (pv2 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true) && (pv1 == false) && (pv2 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Unlock this device</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure_phoebustest/AnalogTransmitter_BlockIcon_OnlyText_Vertical_Compact.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure_phoebustest/AnalogTransmitter_BlockIcon_OnlyText_Vertical_Compact.bob new file mode 100644 index 0000000000000000000000000000000000000000..0936dbe0c1bf9ccaf8180724c28d25526a5af7ce --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure_phoebustest/AnalogTransmitter_BlockIcon_OnlyText_Vertical_Compact.bob @@ -0,0 +1,249 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>AnalogTransmitter_BlockIcon_OnlyText_Vertical_Compact</name> + <width>155</width> + <height>65</height> + <background_color> + <color red="255" green="255" blue="255" alpha="0"> + </color> + </background_color> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>30</x> + <width>120</width> + <height>29</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="25.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; +WidgetColorService = org.csstudio.display.builder.model.persist.WidgetColorService; + + +macros = widget.getEffectiveMacros(); +WIDDev = macros.getValue("WIDDev"); + +color = WidgetColorService.getColor("Background"); +if (WIDDev == "PT") +{ + color = WidgetColorService.getColor("GREEN-BACKGROUND"); +} +if (WIDDev == "TT") +{ + color = WidgetColorService.getColor("YELLOW-BACKGROUND"); +} +if (WIDDev == "FT") +{ + color = WidgetColorService.getColor("BLUE-BACKGROUND"); +} + + widget.setPropertyValue("background_color",color); +]]></text> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue.EGU</pv_name> + </script> + </scripts> + <tooltip>Device name</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_MeasValue</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MeasValue</pv_name> + <x>30</x> + <y>29</y> + <width>123</width> + <height>34</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="24.0"> + </font> + </font> + <precision>2</precision> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <rules> + <rule name="Disconnected" prop_id="background_color" out_exp="false"> + <exp bool_exp="pvInt0 > 0"> + <value> + <color name="Read_Background" red="230" green="235" blue="232"> + </color> + </value> + </exp> + <exp bool_exp="pvInt0 == 0"> + <value> + <color name="INVALID" red="149" green="110" blue="221"> + </color> + </value> + </exp> + <pv_name>${PLCName}:PLCHashCorrectR</pv_name> + </rule> + </rules> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_width>1</border_width> + <border_color> + <color name="GRAY-BORDER" red="121" green="121" blue="121"> + </color> + </border_color> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <y>4</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "AnalogTransmitter_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>155</width> + <height>65</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure_phoebustest/AnalogTransmitter_Faceplate.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure_phoebustest/AnalogTransmitter_Faceplate.bob new file mode 100644 index 0000000000000000000000000000000000000000..cefd5a3433646d839a7230395dc24beaeb40241d --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure_phoebustest/AnalogTransmitter_Faceplate.bob @@ -0,0 +1,1386 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>Analog_TRANSMITTER_Faceplate</name> + <width>834</width> + <height>697</height> + <grid_visible>false</grid_visible> + <widget type="tabs" version="2.0.0"> + <name>Tabs</name> + <tabs> + <tab> + <name> Status</name> + <children> + <widget type="group" version="2.0.0"> + <name>Device_Status_Group</name> + <width>810</width> + <height>600</height> + <style>3</style> + <transparent>true</transparent> + <widget type="group" version="2.0.0"> + <name>Status</name> + <x>10</x> + <y>10</y> + <width>290</width> + <height>270</height> + <style>3</style> + <background_color> + <color name="BACKGROUND" red="220" green="225" blue="221"> + </color> + </background_color> + <widget type="rectangle" version="2.0.0"> + <name>Rect_Meas_Title</name> + <width>290</width> + <height>59</height> + <line_width>0</line_width> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <corner_width>10</corner_width> + <corner_height>10</corner_height> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Rect_Meas_Back</name> + <y>30</y> + <width>290</width> + <height>240</height> + <line_width>2</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <corner_height>10</corner_height> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Meas_Title</name> + <class>HEADER2</class> + <text>Status</text> + <width>290</width> + <height>31</height> + <font> + <font name="Header 2" family="Liberation Sans" style="BOLD" size="18.0"> + </font> + </font> + <foreground_color> + <color name="TEXT-LIGHT" red="230" green="230" blue="230"> + </color> + </foreground_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Meas_Label</name> + <text>${WIDLabel}</text> + <x>5</x> + <y>186</y> + <width>280</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FeedbackForceVal</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_ForceValue</pv_name> + <x>176</x> + <y>228</y> + <width>90</width> + <height>25</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback force Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textentry" version="3.0.0"> + <name>INP_ForceValue</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_ForceValue</pv_name> + <x>76</x> + <y>228</y> + <width>90</width> + <height>25</height> + <precision>2</precision> + <show_units>false</show_units> + <rules> + <rule name="Enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ForceText</name> + <text>Force:</text> + <x>16</x> + <y>230</y> + <width>50</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="meter" version="3.0.0"> + <name>Gauge</name> + <x>8</x> + <y>37</y> + <width>270</width> + <height>162</height> + <rules> + <rule name="HIHI" prop_id="level_hihi" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HIHI</pv_name> + </rule> + <rule name="HI" prop_id="level_high" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HI</pv_name> + </rule> + <rule name="LO" prop_id="level_low" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LO</pv_name> + </rule> + <rule name="LOLO" prop_id="level_lolo" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LOLO</pv_name> + </rule> + </rules> + <tooltip>Placeholder for 'Gauge' (gauge)</tooltip> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>Limits</name> + <x>12</x> + <y>300</y> + <width>290</width> + <height>190</height> + <style>3</style> + <background_color> + <color name="BACKGROUND" red="220" green="225" blue="221"> + </color> + </background_color> + <widget type="rectangle" version="2.0.0"> + <name>Rect_Limits_Ttile</name> + <width>290</width> + <height>59</height> + <line_width>0</line_width> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <corner_width>10</corner_width> + <corner_height>10</corner_height> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Rect_Limits_Back</name> + <y>30</y> + <width>290</width> + <height>160</height> + <line_width>2</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <corner_height>10</corner_height> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Limits_title</name> + <class>HEADER2</class> + <text>Limits</text> + <width>290</width> + <height>31</height> + <font> + <font name="Header 2" family="Liberation Sans" style="BOLD" size="18.0"> + </font> + </font> + <foreground_color> + <color name="TEXT-LIGHT" red="230" green="230" blue="230"> + </color> + </foreground_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_HIHI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HIHI</pv_name> + <x>180</x> + <y>53</y> + <width>80</width> + <height>25</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value HIHI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_HIGH</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HI</pv_name> + <x>180</x> + <y>83</y> + <width>80</width> + <height>25</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value HIGH</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_LOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LO</pv_name> + <x>180</x> + <y>113</y> + <width>80</width> + <height>25</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value LOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_LOLO</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LOLO</pv_name> + <x>180</x> + <y>143</y> + <width>80</width> + <height>25</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value LOLO</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_HIHI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_HIHI</pv_name> + <x>80</x> + <y>53</y> + <width>90</width> + <height>25</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="MinimumRule" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + </rule> + </rules> + <tooltip>Alarm HIHI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <maximum>500.0</maximum> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_HIGH</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_HI</pv_name> + <x>80</x> + <y>83</y> + <width>90</width> + <height>25</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="MinimumRule" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + </rule> + </rules> + <tooltip>Warning HIGH</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <maximum>500.0</maximum> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_LOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_LO</pv_name> + <x>80</x> + <y>113</y> + <width>90</width> + <height>25</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="MinimumRule" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + </rule> + <rule name="MaximumRule" prop_id="maximum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleHIGH</pv_name> + </rule> + </rules> + <tooltip>Warning LOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_LOLO</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_LOLO</pv_name> + <x>80</x> + <y>143</y> + <width>90</width> + <height>25</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="MinimumRule" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + </rule> + <rule name="MaximumRule" prop_id="maximum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleHIGH</pv_name> + </rule> + </rules> + <tooltip>Alarm LOLO</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HIHI</name> + <text>HIHI:</text> + <x>20</x> + <y>55</y> + <width>50</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HIGH</name> + <text>HIGH:</text> + <x>20</x> + <y>85</y> + <width>50</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_LOW</name> + <text>LOW:</text> + <x>20</x> + <y>115</y> + <width>50</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_LOLO</name> + <text>LOLO:</text> + <x>20</x> + <y>145</y> + <width>50</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>OP Modes</name> + <x>320</x> + <y>10</y> + <width>230</width> + <height>170</height> + <style>3</style> + <background_color> + <color name="BACKGROUND" red="220" green="225" blue="221"> + </color> + </background_color> + <widget type="rectangle" version="2.0.0"> + <name>Rect_Mode_Title</name> + <width>230</width> + <height>59</height> + <line_width>0</line_width> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <corner_width>10</corner_width> + <corner_height>10</corner_height> + </widget> + <widget type="label" version="2.0.0"> + <name>Rect_LB_Title</name> + <class>HEADER2</class> + <text>OP Modes</text> + <width>230</width> + <height>31</height> + <font> + <font name="Header 2" family="Liberation Sans" style="BOLD" size="18.0"> + </font> + </font> + <foreground_color> + <color name="TEXT-LIGHT" red="230" green="230" blue="230"> + </color> + </foreground_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Rect_Mode_Back</name> + <y>30</y> + <width>230</width> + <height>140</height> + <line_width>2</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <corner_height>10</corner_height> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Mode_Auto</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_FreeRun</pv_name> + <x>63</x> + <y>61</y> + <off_color> + <color name="Grid" red="128" green="128" blue="128"> + </color> + </off_color> + <tooltip>Operation mode Freerun</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Mode_Auto</name> + <text>Auto</text> + <x>93</x> + <y>60</y> + <width>79</width> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Mode_Forced</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <x>63</x> + <y>112</y> + <off_color> + <color name="Grid" red="128" green="128" blue="128"> + </color> + </off_color> + <tooltip>Operation mode Forced</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Mode_Forced</name> + <text>Forced</text> + <x>93</x> + <y>111</y> + <width>79</width> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>Messages</name> + <x>320</x> + <y>200</y> + <width>230</width> + <height>132</height> + <style>3</style> + <background_color> + <color name="BACKGROUND" red="220" green="225" blue="221"> + </color> + </background_color> + <widget type="rectangle" version="2.0.0"> + <name>Rect_Msg_Title</name> + <width>230</width> + <height>59</height> + <line_width>0</line_width> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <corner_width>10</corner_width> + <corner_height>10</corner_height> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Msg_Title</name> + <class>HEADER2</class> + <text>Messages</text> + <width>230</width> + <height>31</height> + <font> + <font name="Header 2" family="Liberation Sans" style="BOLD" size="18.0"> + </font> + </font> + <foreground_color> + <color name="TEXT-LIGHT" red="230" green="230" blue="230"> + </color> + </foreground_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Rect_Msg_Back</name> + <y>30</y> + <width>230</width> + <height>102</height> + <line_width>2</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <corner_height>10</corner_height> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm</name> + <text>- Alarms latching disabled</text> + <x>20</x> + <y>80</y> + <width>190</width> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitForce</name> + <text>- Force mode inhibited</text> + <x>20</x> + <y>50</y> + <width>190</width> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Force</pv_name> + </rule> + </rules> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>Alarms</name> + <x>570</x> + <y>10</y> + <width>230</width> + <height>480</height> + <style>3</style> + <background_color> + <color name="BACKGROUND" red="220" green="225" blue="221"> + </color> + </background_color> + <widget type="rectangle" version="2.0.0"> + <name>Rect_ALM_Title</name> + <width>230</width> + <height>59</height> + <line_width>0</line_width> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <corner_width>10</corner_width> + <corner_height>10</corner_height> + <rules> + <rule name="BackColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0==0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 1"> + <value> + <color name="RED-GROUP-BORDER" red="167" green="134" blue="130"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Title</name> + <class>HEADER2</class> + <text>Alarms</text> + <width>230</width> + <height>31</height> + <font> + <font name="Header 2" family="Liberation Sans" style="BOLD" size="18.0"> + </font> + </font> + <foreground_color> + <color name="TEXT-LIGHT" red="230" green="230" blue="230"> + </color> + </foreground_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Rect_ALM_Back</name> + <y>30</y> + <width>230</width> + <height>450</height> + <line_width>2</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <corner_height>10</corner_height> + <rules> + <rule name="Linecolor" prop_id="line_color" out_exp="false"> + <exp bool_exp="pv0==0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <exp bool_exp="pv0==1"> + <value> + <color name="RED-GROUP-BORDER" red="167" green="134" blue="130"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + </rule> + <rule name="Backcolor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0==0"> + <value> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </value> + </exp> + <exp bool_exp="pv0==1"> + <value> + <color name="RED-GROUP-BACKGROUND" red="208" green="175" blue="172"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Overrange</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Overrange</pv_name> + <x>20</x> + <y>59</y> + <off_color> + <color name="Grid" red="128" green="128" blue="128"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="255" green="0" blue="0"> + </color> + </on_color> + <tooltip>Overrange</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_HIHI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:HIHI</pv_name> + <x>20</x> + <y>111</y> + <off_color> + <color name="Grid" red="128" green="128" blue="128"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="255" green="0" blue="0"> + </color> + </on_color> + <tooltip>HIHI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_HI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:HI</pv_name> + <x>20</x> + <y>163</y> + <off_color> + <color name="Grid" red="128" green="128" blue="128"> + </color> + </off_color> + <on_color> + <color name="WARNING" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>HI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_LOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LO</pv_name> + <x>20</x> + <y>215</y> + <off_color> + <color name="Grid" red="128" green="128" blue="128"> + </color> + </off_color> + <on_color> + <color name="WARNING" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>LOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_LOWLOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LOLO</pv_name> + <x>20</x> + <y>267</y> + <off_color> + <color name="Grid" red="128" green="128" blue="128"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="255" green="0" blue="0"> + </color> + </on_color> + <tooltip>LOWLOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Underrange</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Underrange</pv_name> + <x>20</x> + <y>319</y> + <off_color> + <color name="Grid" red="128" green="128" blue="128"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="255" green="0" blue="0"> + </color> + </on_color> + <tooltip>Underrange</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_IO_error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Module_Error</pv_name> + <x>20</x> + <y>371</y> + <off_color> + <color name="Grid" red="128" green="128" blue="128"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="255" green="0" blue="0"> + </color> + </on_color> + <tooltip>I/O Error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Module_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Module_Error</pv_name> + <x>20</x> + <y>426</y> + <off_color> + <color name="Grid" red="128" green="128" blue="128"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="255" green="0" blue="0"> + </color> + </on_color> + <tooltip>Siemens Module Error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Overrange</name> + <text>Overrange</text> + <x>60</x> + <y>59</y> + <width>160</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_HIHI</name> + <text>HIHI</text> + <x>60</x> + <y>111</y> + <width>160</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_HI</name> + <text>HI</text> + <x>60</x> + <y>163</y> + <width>160</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_LOW</name> + <text>LOW</text> + <x>60</x> + <y>215</y> + <width>160</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_LOLO</name> + <text>LOWLOW</text> + <x>60</x> + <y>267</y> + <width>160</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Underrange</name> + <text>Underrange</text> + <x>60</x> + <y>319</y> + <width>160</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_IO_Error</name> + <text>I/O Error</text> + <x>60</x> + <y>371</y> + <width>160</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Module_Error</name> + <text>Siemens Module Error</text> + <x>60</x> + <y>426</y> + <width>160</width> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_UNLOCK</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceUnlock</pv_name> + <value>1</value> + <description>Write ForceUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <value>0</value> + <description>Write EnaForceUnlock</description> + </action> + </actions> + <text>Forced Unlock</text> + <x>570</x> + <y>504</y> + <width>230</width> + <height>35</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 1)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 0)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force unlock device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_ACK</name> + <actions> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_AckAlarm</pv_name> + <value>1</value> + <description>Acknowledge alarms</description> + </action> + </actions> + <text>Acknowledge Alarm</text> + <x>570</x> + <y>554</y> + <width>230</width> + <height>35</height> + <background_color> + <color name="ORANGE" red="254" green="194" blue="81"> + </color> + </background_color> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1) || (pv2 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0) && (pv2 == 1)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + <tooltip>Acknowledge alarms</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_APPLY</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceVal</pv_name> + <text>Apply Forced Value</text> + <x>321</x> + <y>553</y> + <width>230</width> + <height>35</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Force</pv_name> + <text>Forced</text> + <x>321</x> + <y>504</y> + <width>230</width> + <height>35</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableForcedBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>FORCE operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_AUTO</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_FreeRun</pv_name> + <text>Auto</text> + <x>71</x> + <y>506</y> + <width>230</width> + <height>35</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableFreeRunBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Free run operation mode</tooltip> + </widget> + </widget> + </children> + </tab> + <tab> + <name> Trend</name> + <children> + <widget type="databrowser" version="2.0.0"> + <name>DataBrowser</name> + <file>AnalogTransmitter_Faceplate_Trend.plt</file> + <x>3</x> + <width>778</width> + <height>597</height> + </widget> + </children> + </tab> + </tabs> + <x>10</x> + <y>55</y> + <width>814</width> + <height>633</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="21.0"> + </font> + </font> + <tab_height>40</tab_height> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Header Bar</name> + <width>834</width> + <height>50</height> + <line_width>0</line_width> + <line_color> + <color red="0" green="0" blue="255" alpha="0"> + </color> + </line_color> + <background_color> + <color name="PRIMARY-HEADER-BACKGROUND" red="151" green="188" blue="202"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HeaderPVName</name> + <text>${SecSub}:${Dis}-${Dev}-${Index}</text> + <x>20</x> + <width>580</width> + <height>50</height> + <font> + <font name="Header 1" family="Liberation Sans" style="BOLD" size="22.0"> + </font> + </font> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Locked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>0</value> + <description>Write CMD_DEVUNLOCK</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock(99)</pv_name> + <value>1</value> + <description>Run Lock script</description> + </action> + </actions> + <text>Lock</text> + <x>725</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + </rule> + </rules> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: generate unique Machine ID from the network adapters to use it for locking mechanism*/ + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); + +var Lock = pvs[0];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock*/ +var Cmd_DevLock = pvs[1];/*${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock*/ +var P_Faceplate_LockID = pvs[2];/*${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID*/ +var Inhibit_Lock = pvs[3];/*${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock*/ +var Faceplate_LockID = pvs[4];/*${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID*/ +var BlockIcon_LockID = pvs[5];/*${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID*/ +var EnaForceUnlock = pvs[6];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock*/ +var DevLocked = pvs[7];/*${SecSub}:${Dis}-${Dev}-${Index}:DevLocked*/ + + + + +var PV1 = PVUtil.getLong(Faceplate_LockID); /*Faceplate_LockID*/ +var PV2 = PVUtil.getLong(BlockIcon_LockID); /*BlockIcon_LockID*/ + +//OnShow +if (PVUtil.getLong(DevLocked) == 1) { /*DevLocked*/ + + if (PV1.toString() == PV2.toString()){ /*FaceplateLockID != BlockIconeLockID*/ + + logger.info(" Owner"); + EnaForceUnlock.setValue(0); /*Write EnaForceUnlock*/ + + } else + { + logger.info(" Faceplate FaceplateLockID "+ PV1); + logger.info(" Faceplate BlockIconeLockID "+ PV2); + + logger.info(" Guest"); + EnaForceUnlock.setValue(1); /*Write EnaForceUnlock*/ + } + + + +} +// OnClick +if (PVUtil.getLong(Lock) != 99) { /*loc://Lock, check if the script was triggered because of a button press or initilization*/ + if (PVUtil.getLong(Inhibit_Lock) == 0) { /*Inhibit_lock, check if locking is inhibited*/ + + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + UniqueText = UniqueText + intf.getName() + intf.getDisplayName(); + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + UniqueText = UniqueText + enumIpAddr.nextElement().toString(); + } + } + + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText); + logger.info(" Faceplate machine ID: "+crc); + P_Faceplate_LockID.setValue(crc); /*Write P_Faceplate_LockID*/ + Cmd_DevLock.setValue(1); /*Write Lock*/ + + } /*Lock inhibit*/ +} /*onshow*/ + +]]></text> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID</pv_name> + <pv_name trigger="false">loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + </script> + </scripts> + <tooltip>Lock this device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Unlocked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>1</value> + <description>Write CMD_DevUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <value>0</value> + <description>Write CMD_DevLock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + </actions> + <text>Unlock</text> + <x>725</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false) || (pv1 == true) || (pv2 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true) && (pv1 == false) && (pv2 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Unlock this device</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure_phoebustest/AnalogTransmitter_Faceplate_CABTR_Temperature.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure_phoebustest/AnalogTransmitter_Faceplate_CABTR_Temperature.bob new file mode 100644 index 0000000000000000000000000000000000000000..4f0979d03bd16c04d2b35664718a613be144d548 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure_phoebustest/AnalogTransmitter_Faceplate_CABTR_Temperature.bob @@ -0,0 +1,1507 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>AnalogTransmitter_Faceplate_CABTR_Temperature</name> + <width>965</width> + <height>790</height> + <widget type="tabs" version="2.0.0"> + <name>Tabs</name> + <tabs> + <tab> + <name>Status</name> + <children> + <widget type="group" version="2.0.0"> + <name>group.status</name> + <x>10</x> + <y>10</y> + <height>300</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.border</name> + <width>300</width> + <height>300</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>260</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Status</name> + <text>STATUS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Liberation Sans" style="BOLD" size="18.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Status_Title</name> + <text>${WIDLabel}</text> + <x>10</x> + <y>200</y> + <width>280</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ForceText</name> + <text>Force:</text> + <x>15</x> + <y>245</y> + <width>55</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textentry" version="3.0.0"> + <name>INP_ForceValue</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_ForceValue</pv_name> + <x>80</x> + <y>245</y> + <height>30</height> + <font> + <font name="NORMAL-SANS-BOLD" family="Source Sans Pro" style="BOLD" size="16.0"> + </font> + </font> + <precision>2</precision> + <show_units>false</show_units> + <rules> + <rule name="Enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FeedbackForceVal</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_ForceValue</pv_name> + <x>190</x> + <y>245</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Feedback force Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="meter" version="3.0.0"> + <name>Gauge</name> + <x>14</x> + <y>44</y> + <width>270</width> + <height>162</height> + <rules> + <rule name="HIHI" prop_id="level_hihi" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HIHI</pv_name> + </rule> + <rule name="HI" prop_id="level_high" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HI</pv_name> + </rule> + <rule name="LO" prop_id="level_low" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LO</pv_name> + </rule> + <rule name="LOLO" prop_id="level_lolo" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LOLO</pv_name> + </rule> + </rules> + <tooltip>Placeholder for 'Gauge' (gauge)</tooltip> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.op.modes</name> + <x>320</x> + <y>10</y> + <height>300</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.border</name> + <width>300</width> + <height>300</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>260</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OP_MODES</name> + <text>OP MODES</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Liberation Sans" style="BOLD" size="18.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_FreeRun</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_FreeRun</pv_name> + <x>78</x> + <y>63</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="128" green="128" blue="128"> + </color> + </off_color> + <tooltip>Operation mode Freerun</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_FREERUN</name> + <text>FREERUN</text> + <x>113</x> + <y>63</y> + <width>70</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Forced</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <x>78</x> + <y>98</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="128" green="128" blue="128"> + </color> + </off_color> + <tooltip>Operation mode Forced</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_FORCED_1</name> + <text>FORCED</text> + <x>113</x> + <y>98</y> + <width>70</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_MESSAGES_1</name> + <text>MESSAGES</text> + <x>5</x> + <y>160</y> + <width>290</width> + <font> + <font name="Fine Print" family="Liberation Sans" style="REGULAR" size="12.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitForce</name> + <text>- Force mode inhibited</text> + <x>15</x> + <y>210</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <transparent>false</transparent> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Force</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm</name> + <text>- Alarms latching enabled</text> + <x>15</x> + <y>230</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <transparent>false</transparent> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm_1</name> + <text>- Alarms latching disabled</text> + <x>15</x> + <y>230</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <transparent>false</transparent> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.alarms</name> + <x>630</x> + <y>10</y> + <height>557</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.border</name> + <width>300</width> + <height>550</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>506</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALARMS</name> + <text>ALARMS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Liberation Sans" style="BOLD" size="18.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackgroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value> + <color name="MAJOR" red="255" green="0" blue="0"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Group alarm</tooltip> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Overrange</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LinearizationFail</pv_name> + <x>55</x> + <y>50</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="128" green="128" blue="128"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="255" green="0" blue="0"> + </color> + </on_color> + <tooltip>Overrange</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_LinearizationFail</name> + <text>Linearization Fail</text> + <x>90</x> + <y>50</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_HIHI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:HIHI</pv_name> + <x>55</x> + <y>85</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="128" green="128" blue="128"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="255" green="0" blue="0"> + </color> + </on_color> + <tooltip>HIHI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_HIHI</name> + <text>HIHI</text> + <x>90</x> + <y>85</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_HI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:HI</pv_name> + <x>55</x> + <y>120</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="128" green="128" blue="128"> + </color> + </off_color> + <on_color> + <color name="WARNING" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>HI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_HI</name> + <text>HI</text> + <x>90</x> + <y>120</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_LOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LO</pv_name> + <x>55</x> + <y>155</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="128" green="128" blue="128"> + </color> + </off_color> + <on_color> + <color name="WARNING" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>LOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_LOW</name> + <text>LOW</text> + <x>90</x> + <y>155</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_LOWLOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LOLO</pv_name> + <x>55</x> + <y>190</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="128" green="128" blue="128"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="255" green="0" blue="0"> + </color> + </on_color> + <tooltip>LOWLOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_LOLO</name> + <text>LOWLOW</text> + <x>90</x> + <y>190</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Underrange</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:MeasureFail</pv_name> + <x>55</x> + <y>225</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="128" green="128" blue="128"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="255" green="0" blue="0"> + </color> + </on_color> + <tooltip>Underrange</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_MeasureFail</name> + <text>MeasureFail</text> + <x>90</x> + <y>225</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_IO_error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:PN_Module_Error</pv_name> + <x>55</x> + <y>260</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="128" green="128" blue="128"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="255" green="0" blue="0"> + </color> + </on_color> + <tooltip>I/O Error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_PN_Error</name> + <text>PN Module Error</text> + <x>90</x> + <y>260</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.limits</name> + <x>10</x> + <y>320</y> + <height>246</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.limits.border</name> + <width>300</width> + <height>239</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.limits.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>196</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Limits</name> + <text>LIMITS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Liberation Sans" style="BOLD" size="18.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HIHI</name> + <text>HIHI:</text> + <x>15</x> + <y>50</y> + <width>55</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_HIHI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HIHI</pv_name> + <x>190</x> + <y>50</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value HIHI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_HIHI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_HIHI</pv_name> + <x>80</x> + <y>50</y> + <height>30</height> + <format>0</format> + <precision>2</precision> + <tooltip>Alarm HIHI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <maximum>500.0</maximum> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_HIGH</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_HI</pv_name> + <x>80</x> + <y>90</y> + <height>30</height> + <format>0</format> + <precision>2</precision> + <tooltip>Warning HIGH</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <maximum>500.0</maximum> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HIGH</name> + <text>HIGH:</text> + <x>15</x> + <y>90</y> + <width>55</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_HIGH</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HI</pv_name> + <x>190</x> + <y>90</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value HIGH</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_LOW</name> + <text>LOW:</text> + <x>15</x> + <y>140</y> + <width>55</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_LOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_LO</pv_name> + <x>80</x> + <y>140</y> + <height>30</height> + <format>0</format> + <precision>2</precision> + <tooltip>Warning LOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <maximum>500.0</maximum> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_LOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LO</pv_name> + <x>190</x> + <y>140</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value LOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_LOLO</name> + <text>LOLO:</text> + <x>15</x> + <y>180</y> + <width>55</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_LOLO</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_LOLO</pv_name> + <x>80</x> + <y>180</y> + <height>30</height> + <format>0</format> + <precision>2</precision> + <tooltip>Alarm LOLO</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <maximum>500.0</maximum> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_LOLO</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LOLO</pv_name> + <x>190</x> + <y>180</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value LOLO</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>buttons.bar</name> + <x>10</x> + <y>575</y> + <width>920</width> + <height>80</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_AUTO</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_FreeRun</pv_name> + <text>FREERUN</text> + <x>15</x> + <y>616</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableFreeRunBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Free run operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Force</pv_name> + <text>FORCE</text> + <x>220</x> + <y>616</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableForcedBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>FORCE operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_UNLOCK</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceUnlock</pv_name> + <value>1</value> + <description>Write ForceUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <value>0</value> + <description>Write EnaForceUnlock</description> + </action> + </actions> + <text>FORCE UNLOCK</text> + <x>725</x> + <y>580</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 1)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 0)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force unlock device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_APPLY</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceVal</pv_name> + <text>APPLY VALUE</text> + <x>220</x> + <y>580</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_ACK</name> + <actions> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_AckAlarm</pv_name> + <value>1</value> + <description>Acknowledge alarms</description> + </action> + </actions> + <text>Acknowledge Alarm</text> + <x>725</x> + <y>616</y> + <width>200</width> + <height>33</height> + <background_color> + <color name="ORANGE" red="254" green="194" blue="81"> + </color> + </background_color> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1) || (pv2 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0) && (pv2 == 1)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + <tooltip>Acknowledge alarms</tooltip> + </widget> + <widget type="group" version="2.0.0"> + <name>group.Cernox</name> + <x>318</x> + <y>322</y> + <height>249</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.border_1</name> + <width>300</width> + <height>238</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.background_1</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>195</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Cernox</name> + <text>CABTR Channel</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Liberation Sans" style="BOLD" size="18.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TT_Resistance</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Resistance</pv_name> + <x>118</x> + <y>56</y> + <width>156</width> + <height>25</height> + <precision>0</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback force Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Resistance</name> + <text>Calc. Resist.</text> + <x>26</x> + <y>42</y> + <width>83</width> + <height>56</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Curve</name> + <text>Calibration:</text> + <x>19</x> + <y>98</y> + <width>86</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TT_FB_Curve</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_CalibrationCurve</pv_name> + <x>118</x> + <y>99</y> + <width>155</width> + <height>25</height> + <precision>0</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback force Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Curve_1</name> + <text>Devicename:</text> + <x>13</x> + <y>140</y> + <width>91</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TT_FB_Curve_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_DeviceName</pv_name> + <x>118</x> + <y>142</y> + <width>155</width> + <height>25</height> + <precision>0</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback force Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Curve_3</name> + <text>Channel No.</text> + <x>17</x> + <y>184</y> + <width>86</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TT_FB_Curve_3</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_CHNumber</pv_name> + <x>118</x> + <y>185</y> + <width>155</width> + <height>25</height> + <precision>0</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback force Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + </widget> + </children> + </tab> + <tab> + <name>Trend</name> + <children> + <widget type="databrowser" version="2.0.0"> + <name>DataBrowser</name> + <file>AnalogTransmitter_Faceplate_Trend.plt</file> + <width>940</width> + <height>651</height> + </widget> + </children> + </tab> + </tabs> + <x>10</x> + <y>60</y> + <width>920</width> + <height>707</height> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Header Bar</name> + <width>963</width> + <height>50</height> + <line_width>0</line_width> + <line_color> + <color red="0" green="0" blue="255" alpha="0"> + </color> + </line_color> + <background_color> + <color name="PRIMARY-HEADER-BACKGROUND" red="151" green="188" blue="202"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HeaderPVName</name> + <text>${SecSub}:${Dis}-${Dev}-${Index}</text> + <x>20</x> + <width>715</width> + <height>50</height> + <font> + <font name="Header 1" family="Liberation Sans" style="BOLD" size="22.0"> + </font> + </font> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Locked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>0</value> + <description>Write CMD_DEVUNLOCK</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock(99)</pv_name> + <value>1</value> + <description>Run Lock script</description> + </action> + </actions> + <text>LOCK</text> + <x>850</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + </rule> + </rules> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: generate unique Machine ID from the network adapters to use it for locking mechanism*/ + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); + +var Lock = pvs[0];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock*/ +var Cmd_DevLock = pvs[1];/*${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock*/ +var P_Faceplate_LockID = pvs[2];/*${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID*/ +var Inhibit_Lock = pvs[3];/*${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock*/ +var Faceplate_LockID = pvs[4];/*${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID*/ +var BlockIcon_LockID = pvs[5];/*${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID*/ +var EnaForceUnlock = pvs[6];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock*/ +var DevLocked = pvs[7];/*${SecSub}:${Dis}-${Dev}-${Index}:DevLocked*/ + + + + +var PV1 = PVUtil.getLong(Faceplate_LockID); /*Faceplate_LockID*/ +var PV2 = PVUtil.getLong(BlockIcon_LockID); /*BlockIcon_LockID*/ + +//OnShow +if (PVUtil.getLong(DevLocked) == 1) { /*DevLocked*/ + + if (PV1.toString() == PV2.toString()){ /*FaceplateLockID != BlockIconeLockID*/ + + logger.info(" Owner"); + EnaForceUnlock.setValue(0); /*Write EnaForceUnlock*/ + + } else + { + logger.info(" Faceplate FaceplateLockID "+ PV1); + logger.info(" Faceplate BlockIconeLockID "+ PV2); + + logger.info(" Guest"); + EnaForceUnlock.setValue(1); /*Write EnaForceUnlock*/ + } + + + +} +// OnClick +if (PVUtil.getLong(Lock) != 99) { /*loc://Lock, check if the script was triggered because of a button press or initilization*/ + if (PVUtil.getLong(Inhibit_Lock) == 0) { /*Inhibit_lock, check if locking is inhibited*/ + + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + UniqueText = UniqueText + intf.getName() + intf.getDisplayName(); + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + UniqueText = UniqueText + enumIpAddr.nextElement().toString(); + } + } + + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText); + logger.info(" Faceplate machine ID: "+crc); + P_Faceplate_LockID.setValue(crc); /*Write P_Faceplate_LockID*/ + Cmd_DevLock.setValue(1); /*Write Lock*/ + + } /*Lock inhibit*/ +} /*onshow*/ + +]]></text> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID</pv_name> + <pv_name trigger="false">loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + </script> + </scripts> + <tooltip>Lock this device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Unlocked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>1</value> + <description>Write CMD_DevUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <value>0</value> + <description>Write CMD_DevLock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + </actions> + <text>UNLOCK</text> + <x>755</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false) || (pv1 == true) || (pv2 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true) && (pv1 == false) && (pv2 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Unlock this device</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure_phoebustest/AnalogTransmitter_Faceplate_CernoxTemperature.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure_phoebustest/AnalogTransmitter_Faceplate_CernoxTemperature.bob new file mode 100644 index 0000000000000000000000000000000000000000..bac6079503e0ae77b140b29db17aa6769bff510e --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure_phoebustest/AnalogTransmitter_Faceplate_CernoxTemperature.bob @@ -0,0 +1,1697 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>Analog_TRANSMITTER_Cernox_Faceplate</name> + <width>965</width> + <height>790</height> + <widget type="tabs" version="2.0.0"> + <name>Tabs</name> + <tabs> + <tab> + <name>Status</name> + <children> + <widget type="group" version="2.0.0"> + <name>group.status</name> + <x>10</x> + <y>10</y> + <height>300</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.border</name> + <width>300</width> + <height>300</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>260</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Status</name> + <text>STATUS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Liberation Sans" style="BOLD" size="18.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Status_Title</name> + <text>${WIDLabel}</text> + <x>10</x> + <y>200</y> + <width>280</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ForceText</name> + <text>Force:</text> + <x>15</x> + <y>245</y> + <width>55</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textentry" version="3.0.0"> + <name>INP_ForceValue</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_ForceValue</pv_name> + <x>80</x> + <y>245</y> + <height>30</height> + <font> + <font name="NORMAL-SANS-BOLD" family="Source Sans Pro" style="BOLD" size="16.0"> + </font> + </font> + <precision>2</precision> + <show_units>false</show_units> + <rules> + <rule name="Enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FeedbackForceVal</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_ForceValue</pv_name> + <x>190</x> + <y>245</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Feedback force Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="meter" version="3.0.0"> + <name>Gauge</name> + <x>14</x> + <y>44</y> + <width>270</width> + <height>162</height> + <rules> + <rule name="HIHI" prop_id="level_hihi" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HIHI</pv_name> + </rule> + <rule name="HI" prop_id="level_high" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HI</pv_name> + </rule> + <rule name="LO" prop_id="level_low" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LO</pv_name> + </rule> + <rule name="LOLO" prop_id="level_lolo" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LOLO</pv_name> + </rule> + </rules> + <tooltip>Placeholder for 'Gauge' (gauge)</tooltip> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.op.modes</name> + <x>320</x> + <y>10</y> + <height>300</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.border</name> + <width>300</width> + <height>300</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>260</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OP_MODES</name> + <text>OP MODES</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Liberation Sans" style="BOLD" size="18.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_FreeRun</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_FreeRun</pv_name> + <x>78</x> + <y>63</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="128" green="128" blue="128"> + </color> + </off_color> + <tooltip>Operation mode Freerun</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_FREERUN</name> + <text>FREERUN</text> + <x>113</x> + <y>63</y> + <width>70</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Forced</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <x>78</x> + <y>98</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="128" green="128" blue="128"> + </color> + </off_color> + <tooltip>Operation mode Forced</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_FORCED_1</name> + <text>FORCED</text> + <x>113</x> + <y>98</y> + <width>70</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_MESSAGES_1</name> + <text>MESSAGES</text> + <x>5</x> + <y>160</y> + <width>290</width> + <font> + <font name="Fine Print" family="Liberation Sans" style="REGULAR" size="12.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitForce</name> + <text>- Force mode inhibited</text> + <x>15</x> + <y>210</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <transparent>false</transparent> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Force</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm</name> + <text>- Alarms latching enabled</text> + <x>15</x> + <y>230</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <transparent>false</transparent> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm_1</name> + <text>- Alarms latching disabled</text> + <x>15</x> + <y>230</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <transparent>false</transparent> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.alarms</name> + <x>630</x> + <y>10</y> + <height>557</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.border</name> + <width>300</width> + <height>550</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>506</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALARMS</name> + <text>ALARMS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Liberation Sans" style="BOLD" size="18.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackgroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value> + <color name="MAJOR" red="255" green="0" blue="0"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Group alarm</tooltip> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Overrange</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Overrange</pv_name> + <x>55</x> + <y>50</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="128" green="128" blue="128"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="255" green="0" blue="0"> + </color> + </on_color> + <tooltip>Overrange</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Overrange</name> + <text>Overrange</text> + <x>90</x> + <y>50</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_HIHI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:HIHI</pv_name> + <x>55</x> + <y>85</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="128" green="128" blue="128"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="255" green="0" blue="0"> + </color> + </on_color> + <tooltip>HIHI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_HIHI</name> + <text>HIHI</text> + <x>90</x> + <y>85</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_HI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:HI</pv_name> + <x>55</x> + <y>120</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="128" green="128" blue="128"> + </color> + </off_color> + <on_color> + <color name="WARNING" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>HI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_HI</name> + <text>HI</text> + <x>90</x> + <y>120</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_LOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LO</pv_name> + <x>55</x> + <y>155</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="128" green="128" blue="128"> + </color> + </off_color> + <on_color> + <color name="WARNING" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>LOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_LOW</name> + <text>LOW</text> + <x>90</x> + <y>155</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_LOWLOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LOLO</pv_name> + <x>55</x> + <y>190</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="128" green="128" blue="128"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="255" green="0" blue="0"> + </color> + </on_color> + <tooltip>LOWLOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_LOLO</name> + <text>LOWLOW</text> + <x>90</x> + <y>190</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Underrange</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Underrange</pv_name> + <x>55</x> + <y>225</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="128" green="128" blue="128"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="255" green="0" blue="0"> + </color> + </on_color> + <tooltip>Underrange</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Underrange</name> + <text>Underrange</text> + <x>90</x> + <y>225</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_IO_error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DigitalInp_IO_Error</pv_name> + <x>55</x> + <y>260</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="128" green="128" blue="128"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="255" green="0" blue="0"> + </color> + </on_color> + <tooltip>I/O Error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_IO_Error</name> + <text>Digital Input Error</text> + <x>90</x> + <y>260</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Module_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Module_Error</pv_name> + <x>55</x> + <y>328</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="128" green="128" blue="128"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="255" green="0" blue="0"> + </color> + </on_color> + <tooltip>Siemens Module Error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Module_Error</name> + <text>Siemens Module Error</text> + <x>90</x> + <y>328</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_IO_error_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:AnalogInp_IO_Error</pv_name> + <x>55</x> + <y>294</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="128" green="128" blue="128"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="255" green="0" blue="0"> + </color> + </on_color> + <tooltip>I/O Error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_IO_Error_1</name> + <text>Analog Input Error</text> + <x>90</x> + <y>294</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.limits</name> + <x>10</x> + <y>320</y> + <height>246</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.limits.border</name> + <width>300</width> + <height>239</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.limits.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>196</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Limits</name> + <text>LIMITS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Liberation Sans" style="BOLD" size="18.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HIHI</name> + <text>HIHI:</text> + <x>15</x> + <y>50</y> + <width>55</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_HIHI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HIHI</pv_name> + <x>190</x> + <y>50</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value HIHI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_HIHI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_HIHI</pv_name> + <x>80</x> + <y>50</y> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="MinimumRule" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + </rule> + <rule name="MaximumRule" prop_id="maximum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleHIGH</pv_name> + </rule> + </rules> + <tooltip>Alarm HIHI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_HIGH</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_HI</pv_name> + <x>80</x> + <y>90</y> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="MinimumRule" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + </rule> + <rule name="MaximumRule" prop_id="maximum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleHIGH</pv_name> + </rule> + </rules> + <tooltip>Warning HIGH</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HIGH</name> + <text>HIGH:</text> + <x>15</x> + <y>90</y> + <width>55</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_HIGH</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HI</pv_name> + <x>190</x> + <y>90</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value HIGH</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_LOW</name> + <text>LOW:</text> + <x>15</x> + <y>140</y> + <width>55</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_LOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_LO</pv_name> + <x>80</x> + <y>140</y> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="MinimumRule" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + </rule> + <rule name="MaximumRule" prop_id="maximum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleHIGH</pv_name> + </rule> + </rules> + <tooltip>Warning LOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_LOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LO</pv_name> + <x>190</x> + <y>140</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value LOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_LOLO</name> + <text>LOLO:</text> + <x>15</x> + <y>180</y> + <width>55</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_LOLO</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_LOLO</pv_name> + <x>80</x> + <y>180</y> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="MinimumRule" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + </rule> + <rule name="MaximumRule" prop_id="maximum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleHIGH</pv_name> + </rule> + </rules> + <tooltip>Alarm LOLO</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_LOLO</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LOLO</pv_name> + <x>190</x> + <y>180</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value LOLO</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>buttons.bar</name> + <x>10</x> + <y>575</y> + <width>920</width> + <height>80</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_AUTO</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_FreeRun</pv_name> + <text>FREERUN</text> + <x>15</x> + <y>616</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableFreeRunBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Free run operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Force</pv_name> + <text>FORCE</text> + <x>220</x> + <y>616</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableForcedBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>FORCE operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_UNLOCK</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceUnlock</pv_name> + <value>1</value> + <description>Write ForceUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <value>0</value> + <description>Write EnaForceUnlock</description> + </action> + </actions> + <text>FORCE UNLOCK</text> + <x>725</x> + <y>580</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 1)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 0)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force unlock device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_APPLY</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceVal</pv_name> + <text>APPLY VALUE</text> + <x>220</x> + <y>580</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_ACK</name> + <actions> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_AckAlarm</pv_name> + <value>1</value> + <description>Acknowledge alarms</description> + </action> + </actions> + <text>Acknowledge Alarm</text> + <x>725</x> + <y>616</y> + <width>200</width> + <height>33</height> + <background_color> + <color name="ORANGE" red="254" green="194" blue="81"> + </color> + </background_color> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1) || (pv2 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0) && (pv2 == 1)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + <tooltip>Acknowledge alarms</tooltip> + </widget> + <widget type="group" version="2.0.0"> + <name>group.Cernox</name> + <x>318</x> + <y>322</y> + <height>249</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.border_1</name> + <width>300</width> + <height>238</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.background_1</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>195</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Cernox</name> + <text>Cernox</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Liberation Sans" style="BOLD" size="18.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="text-symbol" version="2.0.0"> + <name>Text Symbol</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Range</pv_name> + <symbols> + <symbol>N/A</symbol> + <symbol>Range1: </symbol> + <symbol>Range2:</symbol> + <symbol>Range3: </symbol> + <symbol>Range4: out of range</symbol> + </symbols> + <x>109</x> + <y>35</y> + <width>158</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="16.0"> + </font> + </font> + <horizontal_alignment>0</horizontal_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_range</name> + <text>Range:</text> + <x>25</x> + <y>34</y> + <width>70</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TT_Resistance</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Resistance</pv_name> + <x>110</x> + <y>67</y> + <width>156</width> + <height>25</height> + <precision>0</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback force Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Resistance</name> + <text>Calc. Resist.</text> + <x>17</x> + <y>51</y> + <width>83</width> + <height>56</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Current</name> + <text>Current:</text> + <x>13</x> + <y>94</y> + <width>83</width> + <height>37</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TT_Current</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Current</pv_name> + <x>109</x> + <y>100</y> + <width>156</width> + <height>25</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback force Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Curve</name> + <text>Serial nr.</text> + <x>29</x> + <y>130</y> + <width>67</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TT_FB_Curve</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_SerialNumber</pv_name> + <x>110</x> + <y>133</y> + <width>155</width> + <height>25</height> + <precision>0</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback force Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Curve_1</name> + <text>Device</text> + <x>37</x> + <y>166</y> + <width>55</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TT_FB_Curve_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_DeviceName</pv_name> + <x>108</x> + <y>166</y> + <width>155</width> + <height>25</height> + <precision>0</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback force Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Curve_2</name> + <text>Plug nr.</text> + <x>40</x> + <y>199</y> + <width>55</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TT_FB_Curve_2</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_PlugNumber</pv_name> + <x>109</x> + <y>200</y> + <width>155</width> + <height>25</height> + <precision>0</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback force Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + </widget> + </children> + </tab> + <tab> + <name>Trend</name> + <children> + <widget type="databrowser" version="2.0.0"> + <name>DataBrowser</name> + <file>AnalogTransmitter_Faceplate_Trend.plt</file> + <width>940</width> + <height>651</height> + </widget> + </children> + </tab> + </tabs> + <x>10</x> + <y>60</y> + <width>920</width> + <height>707</height> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Header Bar</name> + <width>963</width> + <height>50</height> + <line_width>0</line_width> + <line_color> + <color red="0" green="0" blue="255" alpha="0"> + </color> + </line_color> + <background_color> + <color name="PRIMARY-HEADER-BACKGROUND" red="151" green="188" blue="202"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HeaderPVName</name> + <text>${SecSub}:${Dis}-${Dev}-${Index}</text> + <x>20</x> + <width>715</width> + <height>50</height> + <font> + <font name="Header 1" family="Liberation Sans" style="BOLD" size="22.0"> + </font> + </font> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Locked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>0</value> + <description>Write CMD_DEVUNLOCK</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock(99)</pv_name> + <value>1</value> + <description>Run Lock script</description> + </action> + </actions> + <text>LOCK</text> + <x>850</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + </rule> + </rules> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: generate unique Machine ID from the network adapters to use it for locking mechanism*/ + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); + +var Lock = pvs[0];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock*/ +var Cmd_DevLock = pvs[1];/*${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock*/ +var P_Faceplate_LockID = pvs[2];/*${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID*/ +var Inhibit_Lock = pvs[3];/*${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock*/ +var Faceplate_LockID = pvs[4];/*${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID*/ +var BlockIcon_LockID = pvs[5];/*${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID*/ +var EnaForceUnlock = pvs[6];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock*/ +var DevLocked = pvs[7];/*${SecSub}:${Dis}-${Dev}-${Index}:DevLocked*/ + + + + +var PV1 = PVUtil.getLong(Faceplate_LockID); /*Faceplate_LockID*/ +var PV2 = PVUtil.getLong(BlockIcon_LockID); /*BlockIcon_LockID*/ + +//OnShow +if (PVUtil.getLong(DevLocked) == 1) { /*DevLocked*/ + + if (PV1.toString() == PV2.toString()){ /*FaceplateLockID != BlockIconeLockID*/ + + logger.info(" Owner"); + EnaForceUnlock.setValue(0); /*Write EnaForceUnlock*/ + + } else + { + logger.info(" Faceplate FaceplateLockID "+ PV1); + logger.info(" Faceplate BlockIconeLockID "+ PV2); + + logger.info(" Guest"); + EnaForceUnlock.setValue(1); /*Write EnaForceUnlock*/ + } + + + +} +// OnClick +if (PVUtil.getLong(Lock) != 99) { /*loc://Lock, check if the script was triggered because of a button press or initilization*/ + if (PVUtil.getLong(Inhibit_Lock) == 0) { /*Inhibit_lock, check if locking is inhibited*/ + + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + UniqueText = UniqueText + intf.getName() + intf.getDisplayName(); + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + UniqueText = UniqueText + enumIpAddr.nextElement().toString(); + } + } + + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText); + logger.info(" Faceplate machine ID: "+crc); + P_Faceplate_LockID.setValue(crc); /*Write P_Faceplate_LockID*/ + Cmd_DevLock.setValue(1); /*Write Lock*/ + + } /*Lock inhibit*/ +} /*onshow*/ + +]]></text> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID</pv_name> + <pv_name trigger="false">loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + </script> + </scripts> + <tooltip>Lock this device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Unlocked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>1</value> + <description>Write CMD_DevUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <value>0</value> + <description>Write CMD_DevLock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + </actions> + <text>UNLOCK</text> + <x>755</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false) || (pv1 == true) || (pv2 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true) && (pv1 == false) && (pv2 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Unlock this device</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure_phoebustest/AnalogTransmitter_Faceplate_Pt100_Temperature.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure_phoebustest/AnalogTransmitter_Faceplate_Pt100_Temperature.bob new file mode 100644 index 0000000000000000000000000000000000000000..3b86f2f6117999a46f6c158e7cdfbea9417ae038 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure_phoebustest/AnalogTransmitter_Faceplate_Pt100_Temperature.bob @@ -0,0 +1,1697 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>Analog_TRANSMITTER_Pt100_Faceplate</name> + <width>965</width> + <height>780</height> + <widget type="tabs" version="2.0.0"> + <name>Tabs</name> + <tabs> + <tab> + <name>Status</name> + <children> + <widget type="group" version="2.0.0"> + <name>group.status</name> + <x>10</x> + <y>10</y> + <height>300</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.border</name> + <width>300</width> + <height>300</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>260</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Status</name> + <text>STATUS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Liberation Sans" style="BOLD" size="18.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Status_Title</name> + <text>${WIDLabel}</text> + <x>10</x> + <y>200</y> + <width>280</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ForceText</name> + <text>Force:</text> + <x>15</x> + <y>245</y> + <width>55</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textentry" version="3.0.0"> + <name>INP_ForceValue</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_ForceValue</pv_name> + <x>80</x> + <y>245</y> + <height>30</height> + <font> + <font name="NORMAL-SANS-BOLD" family="Source Sans Pro" style="BOLD" size="16.0"> + </font> + </font> + <precision>2</precision> + <show_units>false</show_units> + <rules> + <rule name="Enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FeedbackForceVal</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_ForceValue</pv_name> + <x>190</x> + <y>245</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Feedback force Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="meter" version="3.0.0"> + <name>Gauge</name> + <x>14</x> + <y>44</y> + <width>270</width> + <height>162</height> + <rules> + <rule name="HIHI" prop_id="level_hihi" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HIHI</pv_name> + </rule> + <rule name="HI" prop_id="level_high" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HI</pv_name> + </rule> + <rule name="LO" prop_id="level_low" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LO</pv_name> + </rule> + <rule name="LOLO" prop_id="level_lolo" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LOLO</pv_name> + </rule> + </rules> + <tooltip>Placeholder for 'Gauge' (gauge)</tooltip> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.op.modes</name> + <x>320</x> + <y>10</y> + <height>300</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.border</name> + <width>300</width> + <height>300</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>260</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OP_MODES</name> + <text>OP MODES</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Liberation Sans" style="BOLD" size="18.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_FreeRun</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_FreeRun</pv_name> + <x>78</x> + <y>63</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="128" green="128" blue="128"> + </color> + </off_color> + <tooltip>Operation mode Freerun</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_FREERUN</name> + <text>FREERUN</text> + <x>113</x> + <y>63</y> + <width>70</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Forced</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <x>78</x> + <y>98</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="128" green="128" blue="128"> + </color> + </off_color> + <tooltip>Operation mode Forced</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_FORCED_1</name> + <text>FORCED</text> + <x>113</x> + <y>98</y> + <width>70</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_MESSAGES_1</name> + <text>MESSAGES</text> + <x>5</x> + <y>160</y> + <width>290</width> + <font> + <font name="Fine Print" family="Liberation Sans" style="REGULAR" size="12.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitForce</name> + <text>- Force mode inhibited</text> + <x>15</x> + <y>210</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <transparent>false</transparent> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Force</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm</name> + <text>- Alarms latching enabled</text> + <x>15</x> + <y>230</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <transparent>false</transparent> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm_1</name> + <text>- Alarms latching disabled</text> + <x>15</x> + <y>230</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <transparent>false</transparent> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.alarms</name> + <x>630</x> + <y>10</y> + <height>557</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.border</name> + <width>300</width> + <height>550</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>506</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALARMS</name> + <text>ALARMS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Liberation Sans" style="BOLD" size="18.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackgroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value> + <color name="MAJOR" red="255" green="0" blue="0"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Group alarm</tooltip> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Overrange</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Overrange</pv_name> + <x>55</x> + <y>50</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="128" green="128" blue="128"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="255" green="0" blue="0"> + </color> + </on_color> + <tooltip>Overrange</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Overrange</name> + <text>Overrange</text> + <x>90</x> + <y>50</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_HIHI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:HIHI</pv_name> + <x>55</x> + <y>85</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="128" green="128" blue="128"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="255" green="0" blue="0"> + </color> + </on_color> + <tooltip>HIHI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_HIHI</name> + <text>HIHI</text> + <x>90</x> + <y>85</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_HI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:HI</pv_name> + <x>55</x> + <y>120</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="128" green="128" blue="128"> + </color> + </off_color> + <on_color> + <color name="WARNING" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>HI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_HI</name> + <text>HI</text> + <x>90</x> + <y>120</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_LOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LO</pv_name> + <x>55</x> + <y>155</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="128" green="128" blue="128"> + </color> + </off_color> + <on_color> + <color name="WARNING" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>LOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_LOW</name> + <text>LOW</text> + <x>90</x> + <y>155</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_LOWLOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LOLO</pv_name> + <x>55</x> + <y>190</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="128" green="128" blue="128"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="255" green="0" blue="0"> + </color> + </on_color> + <tooltip>LOWLOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_LOLO</name> + <text>LOWLOW</text> + <x>90</x> + <y>190</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Underrange</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Underrange</pv_name> + <x>55</x> + <y>225</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="128" green="128" blue="128"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="255" green="0" blue="0"> + </color> + </on_color> + <tooltip>Underrange</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Underrange</name> + <text>Underrange</text> + <x>90</x> + <y>225</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_IO_error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DigitalInp_IO_Error</pv_name> + <x>55</x> + <y>260</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="128" green="128" blue="128"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="255" green="0" blue="0"> + </color> + </on_color> + <tooltip>I/O Error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_IO_Error</name> + <text>Digital Input Error</text> + <x>90</x> + <y>260</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Module_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Module_Error</pv_name> + <x>55</x> + <y>328</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="128" green="128" blue="128"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="255" green="0" blue="0"> + </color> + </on_color> + <tooltip>Siemens Module Error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Module_Error</name> + <text>Siemens Module Error</text> + <x>90</x> + <y>328</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_IO_error_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:AnalogInp_IO_Error</pv_name> + <x>55</x> + <y>294</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="128" green="128" blue="128"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="255" green="0" blue="0"> + </color> + </on_color> + <tooltip>I/O Error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_IO_Error_1</name> + <text>Analog Input Error</text> + <x>90</x> + <y>294</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.limits</name> + <x>10</x> + <y>320</y> + <height>246</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.limits.border</name> + <width>300</width> + <height>239</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.limits.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>196</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Limits</name> + <text>LIMITS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Liberation Sans" style="BOLD" size="18.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HIHI</name> + <text>HIHI:</text> + <x>15</x> + <y>50</y> + <width>55</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_HIHI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HIHI</pv_name> + <x>190</x> + <y>50</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value HIHI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_HIHI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_HIHI</pv_name> + <x>80</x> + <y>50</y> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="MinimumRule" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + </rule> + <rule name="MaximumRule" prop_id="maximum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleHIGH</pv_name> + </rule> + </rules> + <tooltip>Alarm HIHI</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_HIGH</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_HI</pv_name> + <x>80</x> + <y>90</y> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="MinimumRule" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + </rule> + <rule name="MaximumRule" prop_id="maximum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleHIGH</pv_name> + </rule> + </rules> + <tooltip>Warning HIGH</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HIGH</name> + <text>HIGH:</text> + <x>15</x> + <y>90</y> + <width>55</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_HIGH</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_HI</pv_name> + <x>190</x> + <y>90</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value HIGH</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_LOW</name> + <text>LOW:</text> + <x>15</x> + <y>140</y> + <width>55</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_LOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_LO</pv_name> + <x>80</x> + <y>140</y> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="MinimumRule" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + </rule> + <rule name="MaximumRule" prop_id="maximum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleHIGH</pv_name> + </rule> + </rules> + <tooltip>Warning LOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_LOW</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LO</pv_name> + <x>190</x> + <y>140</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value LOW</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_LOLO</name> + <text>LOLO:</text> + <x>15</x> + <y>180</y> + <width>55</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_LOLO</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Limit_LOLO</pv_name> + <x>80</x> + <y>180</y> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="MinimumRule" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleLOW</pv_name> + </rule> + <rule name="MaximumRule" prop_id="maximum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ScaleHIGH</pv_name> + </rule> + </rules> + <tooltip>Alarm LOLO</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_LOLO</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Limit_LOLO</pv_name> + <x>190</x> + <y>180</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback value LOLO</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>buttons.bar</name> + <x>10</x> + <y>575</y> + <width>920</width> + <height>80</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_AUTO</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_FreeRun</pv_name> + <text>FREERUN</text> + <x>15</x> + <y>616</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableFreeRunBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Free run operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Force</pv_name> + <text>FORCE</text> + <x>220</x> + <y>616</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableForcedBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>FORCE operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_UNLOCK</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceUnlock</pv_name> + <value>1</value> + <description>Write ForceUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <value>0</value> + <description>Write EnaForceUnlock</description> + </action> + </actions> + <text>FORCE UNLOCK</text> + <x>725</x> + <y>580</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 1)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 0)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force unlock device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_APPLY</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceVal</pv_name> + <text>APPLY VALUE</text> + <x>220</x> + <y>580</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_ACK</name> + <actions> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_AckAlarm</pv_name> + <value>1</value> + <description>Acknowledge alarms</description> + </action> + </actions> + <text>Acknowledge Alarm</text> + <x>725</x> + <y>616</y> + <width>200</width> + <height>33</height> + <background_color> + <color name="ORANGE" red="254" green="194" blue="81"> + </color> + </background_color> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1) || (pv2 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0) && (pv2 == 1)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + <tooltip>Acknowledge alarms</tooltip> + </widget> + <widget type="group" version="2.0.0"> + <name>group.Cernox</name> + <x>318</x> + <y>322</y> + <height>249</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.border_1</name> + <width>300</width> + <height>238</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.background_1</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>195</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Pt100</name> + <text>Pt100</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Liberation Sans" style="BOLD" size="18.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="text-symbol" version="2.0.0"> + <name>Text Symbol</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Range</pv_name> + <symbols> + <symbol>PR Conditioner</symbol> + <symbol>Range1</symbol> + <symbol>Range2</symbol> + <symbol>Range3</symbol> + <symbol>Range4:29.28K-120K</symbol> + </symbols> + <x>109</x> + <y>35</y> + <width>158</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="16.0"> + </font> + </font> + <horizontal_alignment>0</horizontal_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_range</name> + <text>Range:</text> + <x>25</x> + <y>34</y> + <width>70</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TT_Resistance</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Resistance</pv_name> + <x>110</x> + <y>67</y> + <width>156</width> + <height>25</height> + <precision>0</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback force Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Resistance</name> + <text>Calc. Resist.</text> + <x>17</x> + <y>51</y> + <width>83</width> + <height>56</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Current</name> + <text>Current:</text> + <x>13</x> + <y>94</y> + <width>83</width> + <height>37</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TT_Current</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Current</pv_name> + <x>109</x> + <y>100</y> + <width>156</width> + <height>25</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback force Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Curve</name> + <text>Serial nr.</text> + <x>29</x> + <y>130</y> + <width>67</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TT_FB_Curve</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_SerialNumber</pv_name> + <x>110</x> + <y>133</y> + <width>155</width> + <height>25</height> + <precision>0</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback force Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Curve_1</name> + <text>Device</text> + <x>37</x> + <y>166</y> + <width>55</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TT_FB_Curve_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_DeviceName</pv_name> + <x>108</x> + <y>166</y> + <width>155</width> + <height>25</height> + <precision>0</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback force Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Curve_2</name> + <text>Plug nr.</text> + <x>40</x> + <y>199</y> + <width>55</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TT_FB_Curve_2</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_PlugNumber</pv_name> + <x>109</x> + <y>200</y> + <width>155</width> + <height>25</height> + <precision>0</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback force Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + </widget> + </children> + </tab> + <tab> + <name>Trend</name> + <children> + <widget type="databrowser" version="2.0.0"> + <name>DataBrowser</name> + <file>AnalogTransmitter_Faceplate_Trend.plt</file> + <width>940</width> + <height>651</height> + </widget> + </children> + </tab> + </tabs> + <x>10</x> + <y>60</y> + <width>943</width> + <height>707</height> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Header Bar</name> + <width>963</width> + <height>50</height> + <line_width>0</line_width> + <line_color> + <color red="0" green="0" blue="255" alpha="0"> + </color> + </line_color> + <background_color> + <color name="PRIMARY-HEADER-BACKGROUND" red="151" green="188" blue="202"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HeaderPVName</name> + <text>${SecSub}:${Dis}-${Dev}-${Index}</text> + <x>20</x> + <width>715</width> + <height>50</height> + <font> + <font name="Header 1" family="Liberation Sans" style="BOLD" size="22.0"> + </font> + </font> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Locked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>0</value> + <description>Write CMD_DEVUNLOCK</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock(99)</pv_name> + <value>1</value> + <description>Run Lock script</description> + </action> + </actions> + <text>LOCK</text> + <x>850</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + </rule> + </rules> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: generate unique Machine ID from the network adapters to use it for locking mechanism*/ + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); + +var Lock = pvs[0];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock*/ +var Cmd_DevLock = pvs[1];/*${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock*/ +var P_Faceplate_LockID = pvs[2];/*${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID*/ +var Inhibit_Lock = pvs[3];/*${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock*/ +var Faceplate_LockID = pvs[4];/*${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID*/ +var BlockIcon_LockID = pvs[5];/*${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID*/ +var EnaForceUnlock = pvs[6];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock*/ +var DevLocked = pvs[7];/*${SecSub}:${Dis}-${Dev}-${Index}:DevLocked*/ + + + + +var PV1 = PVUtil.getLong(Faceplate_LockID); /*Faceplate_LockID*/ +var PV2 = PVUtil.getLong(BlockIcon_LockID); /*BlockIcon_LockID*/ + +//OnShow +if (PVUtil.getLong(DevLocked) == 1) { /*DevLocked*/ + + if (PV1.toString() == PV2.toString()){ /*FaceplateLockID != BlockIconeLockID*/ + + logger.info(" Owner"); + EnaForceUnlock.setValue(0); /*Write EnaForceUnlock*/ + + } else + { + logger.info(" Faceplate FaceplateLockID "+ PV1); + logger.info(" Faceplate BlockIconeLockID "+ PV2); + + logger.info(" Guest"); + EnaForceUnlock.setValue(1); /*Write EnaForceUnlock*/ + } + + + +} +// OnClick +if (PVUtil.getLong(Lock) != 99) { /*loc://Lock, check if the script was triggered because of a button press or initilization*/ + if (PVUtil.getLong(Inhibit_Lock) == 0) { /*Inhibit_lock, check if locking is inhibited*/ + + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + UniqueText = UniqueText + intf.getName() + intf.getDisplayName(); + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + UniqueText = UniqueText + enumIpAddr.nextElement().toString(); + } + } + + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText); + logger.info(" Faceplate machine ID: "+crc); + P_Faceplate_LockID.setValue(crc); /*Write P_Faceplate_LockID*/ + Cmd_DevLock.setValue(1); /*Write Lock*/ + + } /*Lock inhibit*/ +} /*onshow*/ + +]]></text> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID</pv_name> + <pv_name trigger="false">loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + </script> + </scripts> + <tooltip>Lock this device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Unlocked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>1</value> + <description>Write CMD_DevUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <value>0</value> + <description>Write CMD_DevLock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + </actions> + <text>UNLOCK</text> + <x>755</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false) || (pv1 == true) || (pv2 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true) && (pv1 == false) && (pv2 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Unlock this device</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Controllers/CV_FlowController_BlockIcon_Vertical_Right.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Controllers/CV_FlowController_BlockIcon_Vertical_Right.bob new file mode 100644 index 0000000000000000000000000000000000000000..02ad4d79d58f10f3427904edcca6c6dc48aca946 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Controllers/CV_FlowController_BlockIcon_Vertical_Right.bob @@ -0,0 +1,289 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>CV_FlowController_BlockIcon_Vertical_Right</name> + <width>215</width> + <height>100</height> + <widget type="textupdate" version="2.0.0"> + <name>WID_Value_FlowSetpoint</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:FlowSP</pv_name> + <x>7</x> + <y>66</y> + <width>115</width> + <height>34</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="25.0"> + </font> + </font> + <transparent>true</transparent> + <precision>2</precision> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </border_color> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_Value_ActualFlow</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ActualFlow</pv_name> + <x>7</x> + <y>39</y> + <width>115</width> + <height>34</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="25.0"> + </font> + </font> + <transparent>true</transparent> + <precision>2</precision> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Actual position</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </border_color> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIcon</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValveColor</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_OFF@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_OK@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_ERROR@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_NEUTRAL@64.png</symbol> + </symbols> + <x>127</x> + <y>32</y> + <width>64</width> + <height>64</height> + <rotation>90.0</rotation> + <actions execute_as_one="true"> + </actions> + <tooltip>Open faceplate</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text>A</text> + <x>188</x> + <y>48</y> + <width>25</width> + <height>25</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="20.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value> </value> + </exp> + <exp bool_exp="pv1 == true"> + <value>M</value> + </exp> + <exp bool_exp="pv2 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <y>9</y> + <width>122</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="25.0"> + </font> + </font> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Device name</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>159</x> + <y>3</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Interlock</name> + <symbols> + <symbol>../../symbols/custom_v02/interlock_overridden_disabled_cms@32.png</symbol> + </symbols> + <x>116</x> + <y>3</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Interlock event occured!</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + try + { + P_BlockIcon_LockID.setValue(crc); + } + + catch (e) { logger.info(" Locked ID cannot write pv"); } + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "CV_FlowController_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>215</width> + <height>101</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Controllers/CV_FlowController_Faceplate.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Controllers/CV_FlowController_Faceplate.bob new file mode 100644 index 0000000000000000000000000000000000000000..be59d4598eb17f72ff209b5401d1f0ff722d2484 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Controllers/CV_FlowController_Faceplate.bob @@ -0,0 +1,1521 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>CV FlowController Faceplate</name> + <width>965</width> + <height>790</height> + <widget type="tabs" version="2.0.0"> + <name>Tabs</name> + <tabs> + <tab> + <name>Status</name> + <children> + <widget type="group" version="2.0.0"> + <name>group.status</name> + <x>10</x> + <y>10</y> + <height>300</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.border</name> + <width>300</width> + <height>300</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>260</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STATUS</name> + <text>STATUS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>MET_ValvePos</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ActualFlow</pv_name> + <x>16</x> + <y>71</y> + <width>270</width> + <height>56</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="25.0"> + </font> + </font> + <background_color> + <color red="255" green="254" blue="253"> + </color> + </background_color> + <transparent>true</transparent> + <precision>2</precision> + <tooltip>Valve position in percent</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_FC_Flow</name> + <text>Actual Flow</text> + <x>14</x> + <y>44</y> + <width>129</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_FC_Flow_1</name> + <text>Flow Setpoint</text> + <x>14</x> + <y>126</y> + <width>129</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>MET_ValvePos_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FlowSP</pv_name> + <x>16</x> + <y>153</y> + <width>270</width> + <height>56</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="25.0"> + </font> + </font> + <background_color> + <color red="255" green="254" blue="253"> + </color> + </background_color> + <transparent>true</transparent> + <precision>2</precision> + <tooltip>Valve position in percent</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_FC_Flow_2</name> + <text>Flow Manipulated Value</text> + <x>15</x> + <y>204</y> + <width>163</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>MET_ValvePos_2</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FlowMV</pv_name> + <x>17</x> + <y>231</y> + <width>270</width> + <height>56</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="25.0"> + </font> + </font> + <background_color> + <color red="255" green="254" blue="253"> + </color> + </background_color> + <transparent>true</transparent> + <precision>2</precision> + <tooltip>Valve position in percent</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.op.modes</name> + <x>320</x> + <y>10</y> + <height>300</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.border</name> + <width>300</width> + <height>300</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>260</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OP_MODES</name> + <text>OP MODES</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Auto</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Auto</pv_name> + <x>75</x> + <y>50</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode Auto</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_AUTO</name> + <text>AUTO</text> + <x>110</x> + <y>50</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Manual</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Manual</pv_name> + <x>75</x> + <y>85</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode Manual</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_MANUAL</name> + <text>MANUAL</text> + <x>110</x> + <y>85</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Forced</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <x>75</x> + <y>120</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode Forced</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_FORCED</name> + <text>FORCED</text> + <x>106</x> + <y>120</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_MESSAGES</name> + <text>MESSAGES</text> + <x>5</x> + <y>160</y> + <width>290</width> + <height>25</height> + <font> + <font family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitMan</name> + <text>- Manual mode inhibited</text> + <x>15</x> + <y>190</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Manual</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitForce</name> + <text>- Force mode inhibited</text> + <x>15</x> + <y>210</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Force</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm_DIS</name> + <text>- Alarms latching disabled</text> + <x>15</x> + <y>230</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm_ENA</name> + <text>- Alarms latching enabled</text> + <x>15</x> + <y>230</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.alarms</name> + <x>630</x> + <y>10</y> + <height>300</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.border</name> + <width>300</width> + <height>300</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>260</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_IO_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:IO_Error</pv_name> + <x>50</x> + <y>86</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_IO_Error</name> + <text>I/O Error</text> + <x>85</x> + <y>86</y> + <width>88</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Input_Module_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Input_Module_Error</pv_name> + <x>50</x> + <y>120</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Input_Module_Error</name> + <text>Input Module Error</text> + <x>85</x> + <y>120</y> + <width>183</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ILOCK_START</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:MoveInterlock</pv_name> + <x>50</x> + <y>245</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>Start interlock</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ILOCK_START</name> + <text>Move Interlock</text> + <x>85</x> + <y>245</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALARMS</name> + <text>ALARMS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackgroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Group alarm</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_INTERLOCKS</name> + <text>INTERLOCKS</text> + <x>5</x> + <y>195</y> + <width>290</width> + <height>25</height> + <font> + <font family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackgroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Group interlock</tooltip> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Discrepancy</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Position_Discrep</pv_name> + <x>50</x> + <y>50</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Discrepancy</name> + <text>Position discrepancy</text> + <x>85</x> + <y>50</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Output_Module_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Output_Module_Error</pv_name> + <x>49</x> + <y>153</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Output_Module_Error</name> + <text>Output Module Error</text> + <x>84</x> + <y>153</y> + <width>183</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>buttons.bar</name> + <x>10</x> + <y>590</y> + <width>920</width> + <height>80</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_AUTO</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Auto</pv_name> + <text>AUTO</text> + <x>15</x> + <y>631</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableAutoBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>AUTO operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_MANUAL</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Manual</pv_name> + <text>MANUAL</text> + <x>220</x> + <y>631</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableManualBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>MANUAL operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Force</pv_name> + <text>FORCE</text> + <x>425</x> + <y>631</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableForcedBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>FORCE operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_APPLY</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceValInp</pv_name> + <text>APPLY IN</text> + <x>425</x> + <y>595</y> + <width>99</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_APPLY_1</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceValOut</pv_name> + <text>APPLY OUT</text> + <x>526</x> + <y>595</y> + <width>99</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_ACK</name> + <actions> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_AckAlarm</pv_name> + <value>1</value> + <description>Acknowledge alarms</description> + </action> + </actions> + <text>Acknowledge Alarm</text> + <x>725</x> + <y>631</y> + <width>200</width> + <height>33</height> + <background_color> + <color name="ORANGE" red="254" green="194" blue="81"> + </color> + </background_color> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1) || (pv2 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0) && (pv2 == 1)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + <tooltip>Acknowledge alarms</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_UNLOCK</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceUnlock</pv_name> + <value>1</value> + <description>Write ForceUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <value>0</value> + <description>Write EnaForceUnlock</description> + </action> + </actions> + <text>FORCE UNLOCK</text> + <x>725</x> + <y>595</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 1)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 0)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force unlock device</tooltip> + </widget> + <widget type="group" version="2.0.0"> + <name>group.modify</name> + <x>10</x> + <y>320</y> + <height>263</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.modify.border</name> + <width>300</width> + <height>255</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.modify.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>100</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <rules> + <rule name="Color" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 1"> + <value> + <color name="RED-BACKGROUND" red="225" green="192" blue="188"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + </rule> + </rules> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_HeaterMV</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Manipulated</pv_name> + <x>215</x> + <y>90</y> + <width>70</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Output] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_ForceHeaterMV</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Manipulated</pv_name> + <x>120</x> + <y>90</y> + <width>85</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Force heater output</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_FrcMV</name> + <text>Force Output:</text> + <x>15</x> + <y>90</y> + <width>96</width> + <height>26</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY VALUE] to apply</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_HeaterPow</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_ForcePosition</pv_name> + <x>215</x> + <y>50</y> + <width>70</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Input] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_ForceHeaterPow</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_ForcePosition</pv_name> + <x>120</x> + <y>50</y> + <width>85</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Force heater power</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_FrcActPos</name> + <text>Force Input:</text> + <x>15</x> + <y>50</y> + <width>96</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Modify</name> + <text>MODIFY/FORCE</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Text" prop_id="text" out_exp="false"> + <exp bool_exp="(pv0 == 1)"> + <value>MODIFY/FORCE</value> + </exp> + <exp bool_exp="(pv1 == 1)"> + <value>MODIFY</value> + </exp> + <exp bool_exp="(pv2 == 1)"> + <value>FORCE</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Auto</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Manual</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + </rule> + </rules> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.modify.background_1</name> + <x>5</x> + <y>143</y> + <width>290</width> + <height>104</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_StepValue</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Step</pv_name> + <x>194</x> + <y>206</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback step value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_StepValue</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Step</pv_name> + <x>95</x> + <y>206</y> + <width>92</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0==0"> + <value>true</value> + </exp> + <exp bool_exp="pv0==1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Step value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <limits_from_pv>false</limits_from_pv> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_StepValue</name> + <text>Step Value:</text> + <x>6</x> + <y>203</y> + <width>101</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_Setpoint</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Setpoint</pv_name> + <x>194</x> + <y>153</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback modified setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_ForcePumpSP</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Setpoint</pv_name> + <x>76</x> + <y>153</y> + <width>111</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="IncrementRule" prop_id="increment" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Step</pv_name> + </rule> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0==0"> + <value>true</value> + </exp> + <exp bool_exp="pv0==1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Modify Setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <limits_from_pv>false</limits_from_pv> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_FrcSetpoint</name> + <text>Setpoint:</text> + <x>7</x> + <y>153</y> + <width>71</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="polyline" version="2.0.0"> + <name>Polyline</name> + <x>133</x> + <y>184</y> + <width>41</width> + <line_color> + <color name="WHITE" red="255" green="255" blue="255"> + </color> + </line_color> + <points> + <point x="0.0" y="20.0"> + </point> + <point x="0.0" y="10.0"> + </point> + <point x="40.32786885245899" y="10.0"> + </point> + <point x="40.32786885245899" y="0.0"> + </point> + </points> + </widget> + </widget> + </children> + </tab> + <tab> + <name>Trend</name> + <children> + <widget type="databrowser" version="2.0.0"> + <name>DataBrowser</name> + <file>CV_FlowController_Tend.plt</file> + <width>908</width> + <height>680</height> + </widget> + </children> + </tab> + </tabs> + <x>10</x> + <y>60</y> + <width>943</width> + <height>720</height> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Header Bar</name> + <width>963</width> + <height>50</height> + <line_width>0</line_width> + <line_color> + <color red="0" green="0" blue="255" alpha="0"> + </color> + </line_color> + <background_color> + <color name="PRIMARY-HEADER-BACKGROUND" red="151" green="188" blue="202"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HeaderPVName</name> + <text>${SecSub}:${Dis}-${Dev}-${Index}</text> + <x>20</x> + <width>715</width> + <height>50</height> + <font> + <font name="Header 1" family="Source Sans Pro" style="BOLD_ITALIC" size="36.0"> + </font> + </font> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Unlocked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>1</value> + <description>Write CMD_DevUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <value>0</value> + <description>Write CMD_DevLock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + </actions> + <text>UNLOCK</text> + <x>755</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false) || (pv1 == true) || (pv2 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true) && (pv1 == false) && (pv2 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Unlock this device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Locked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>0</value> + <description>Write CMD_DEVUNLOCK</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock(99)</pv_name> + <value>1</value> + <description>Run Lock script</description> + </action> + </actions> + <text>LOCK</text> + <x>850</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + </rule> + </rules> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: generate unique Machine ID from the network adapters to use it for locking mechanism*/ + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); + +var Lock = pvs[0];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock*/ +var Cmd_DevLock = pvs[1];/*${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock*/ +var P_Faceplate_LockID = pvs[2];/*${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID*/ +var Inhibit_Lock = pvs[3];/*${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock*/ +var Faceplate_LockID = pvs[4];/*${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID*/ +var BlockIcon_LockID = pvs[5];/*${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID*/ +var EnaForceUnlock = pvs[6];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock*/ +var DevLocked = pvs[7];/*${SecSub}:${Dis}-${Dev}-${Index}:DevLocked*/ + + + +var PV1 = PVUtil.getLong(Faceplate_LockID); /*Faceplate_LockID*/ +var PV2 = PVUtil.getLong(BlockIcon_LockID); /*BlockIcon_LockID*/ + +//OnShow +if (PVUtil.getLong(DevLocked) == 1) { /*DevLocked*/ + + if (PV1.toString() == PV2.toString()){ /*FaceplateLockID != BlockIconeLockID*/ + + logger.info(" Owner"); + EnaForceUnlock.setValue(0); /*Write EnaForceUnlock*/ + + } else + { + logger.info(" Faceplate FaceplateLockID "+ PV1); + logger.info(" Faceplate BlockIconeLockID "+ PV2); + + logger.info(" Guest"); + EnaForceUnlock.setValue(1); /*Write EnaForceUnlock*/ + } + + + +} +// OnClick +if (PVUtil.getLong(Lock) != 99) { /*loc://Lock, check if the script was triggered because of a button press or initilization*/ + if (PVUtil.getLong(Inhibit_Lock) == 0) { /*Inhibit_lock, check if locking is inhibited*/ + + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + UniqueText = UniqueText + intf.getName() + intf.getDisplayName(); + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + UniqueText = UniqueText + enumIpAddr.nextElement().toString(); + } + } + + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText); + if (crc >=2147483647){ crc = crc - 2147483647;} + + logger.info(" Faceplate machine ID: "+crc); + P_Faceplate_LockID.setValue(crc); /*Write P_Faceplate_LockID*/ + Cmd_DevLock.setValue(1); /*Write Lock*/ + + } /*Lock inhibit*/ +} /*onshow*/ + +]]></text> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID</pv_name> + <pv_name trigger="false">loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + </script> + </scripts> + <tooltip>Lock this device</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Controllers/CV_FlowController_Tend.plt b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Controllers/CV_FlowController_Tend.plt new file mode 100644 index 0000000000000000000000000000000000000000..b0c926de6cfd7a7a47141d7712575a5c14dc0694 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Controllers/CV_FlowController_Tend.plt @@ -0,0 +1,160 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<databrowser> + <title></title> + <save_changes>true</save_changes> + <show_legend>false</show_legend> + <show_toolbar>true</show_toolbar> + <grid>false</grid> + <scroll>true</scroll> + <update_period>3.0</update_period> + <scroll_step>5</scroll_step> + <start>-10 minutes 0.0 seconds</start> + <end>now</end> + <archive_rescale>NONE</archive_rescale> + <foreground> + <red>229</red> + <green>229</green> + <blue>229</blue> + </foreground> + <background> + <red>77</red> + <green>77</green> + <blue>77</blue> + </background> + <title_font>Cantarell|16|1</title_font> + <label_font>Cantarell|11|1</label_font> + <scale_font>Cantarell|10|0</scale_font> + <legend_font>Cantarell|10|0</legend_font> + <axes> + <axis> + <visible>true</visible> + <name>Value Axis</name> + <use_axis_name>true</use_axis_name> + <use_trace_names>true</use_trace_names> + <right>false</right> + <color> + <red>255</red> + <green>165</green> + <blue>0</blue> + </color> + <min>0.0</min> + <max>25.0</max> + <grid>true</grid> + <autoscale>true</autoscale> + <log_scale>false</log_scale> + </axis> + <axis> + <visible>true</visible> + <name>Value 1</name> + <use_axis_name>false</use_axis_name> + <use_trace_names>true</use_trace_names> + <right>false</right> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <min>0.0</min> + <max>10.0</max> + <grid>false</grid> + <autoscale>true</autoscale> + <log_scale>false</log_scale> + </axis> + <axis> + <visible>true</visible> + <name>Value 2</name> + <use_axis_name>false</use_axis_name> + <use_trace_names>true</use_trace_names> + <right>false</right> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <min>0.0</min> + <max>10.0</max> + <grid>false</grid> + <autoscale>true</autoscale> + <log_scale>false</log_scale> + </axis> + </axes> + <annotations> + </annotations> + <pvlist> + <pv> + <display_name>${SecSub}:${Dis}-${Dev}-${Index}:ActualFlow</display_name> + <visible>true</visible> + <name>${SecSub}:${Dis}-${Dev}-${Index}:ActualFlow</name> + <axis>0</axis> + <color> + <red>255</red> + <green>0</green> + <blue>0</blue> + </color> + <trace_type>AREA</trace_type> + <linewidth>3</linewidth> + <line_style>SOLID</line_style> + <point_type>NONE</point_type> + <point_size>2</point_size> + <waveform_index>0</waveform_index> + <period>0.0</period> + <ring_size>5000</ring_size> + <request>RAW</request> + <archive> + <name>ESS Archiver</name> + <url>pbraw://archiver-01.tn.esss.lu.se:17668/retrieval</url> + <key>1</key> + </archive> + </pv> + <pv> + <display_name>${SecSub}:${Dis}-${Dev}-${Index}:FlowSP</display_name> + <visible>true</visible> + <name>${SecSub}:${Dis}-${Dev}-${Index}:FlowSP</name> + <axis>1</axis> + <color> + <red>0</red> + <green>255</green> + <blue>0</blue> + </color> + <trace_type>AREA</trace_type> + <linewidth>2</linewidth> + <line_style>SOLID</line_style> + <point_type>NONE</point_type> + <point_size>2</point_size> + <waveform_index>0</waveform_index> + <period>0.0</period> + <ring_size>5000</ring_size> + <request>RAW</request> + <archive> + <name>ESS Archiver</name> + <url>pbraw://archiver-01.tn.esss.lu.se:17668/retrieval</url> + <key>1</key> + </archive> + </pv> + <pv> + <display_name>${SecSub}:${Dis}-${Dev}-${Index}:FlowMV</display_name> + <visible>true</visible> + <name>${SecSub}:${Dis}-${Dev}-${Index}:FlowMV</name> + <axis>2</axis> + <color> + <red>0</red> + <green>0</green> + <blue>255</blue> + </color> + <trace_type>AREA</trace_type> + <linewidth>2</linewidth> + <line_style>SOLID</line_style> + <point_type>NONE</point_type> + <point_size>2</point_size> + <waveform_index>0</waveform_index> + <period>0.0</period> + <ring_size>5000</ring_size> + <request>RAW</request> + <archive> + <name>ESS Archiver</name> + <url>pbraw://archiver-01.tn.esss.lu.se:17668/retrieval</url> + <key>1</key> + </archive> + </pv> + </pvlist> +</databrowser> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/DigitalMeasure/FS_BlockIcon_Horizontal_Compact.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/DigitalMeasure/FS_BlockIcon_Horizontal_Compact.bob new file mode 100644 index 0000000000000000000000000000000000000000..ed3a6d8751d7996ffb7b04968e0afa3d435b1ba6 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/DigitalMeasure/FS_BlockIcon_Horizontal_Compact.bob @@ -0,0 +1,185 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>FS_BlockIcon_Horizontal_Compact</name> + <width>140</width> + <height>110</height> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIcon</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValveColor</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/valve_hand/valve_hand_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom_v02/valve_hand/valve_hand_NEUTRAL@64.png</symbol> + <symbol>../../symbols/custom_v02/valve_hand/valve_hand_OK@64.png</symbol> + </symbols> + <x>38</x> + <y>41</y> + <width>64</width> + <height>64</height> + <actions execute_as_one="true"> + </actions> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>7</x> + <y>4</y> + <width>127</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="28.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Device name</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>103</x> + <y>35</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "FS_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>140</width> + <height>107</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/DigitalMeasure/FS_BlockIcon_Vertical_Left.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/DigitalMeasure/FS_BlockIcon_Vertical_Left.bob new file mode 100644 index 0000000000000000000000000000000000000000..e4a03d9b4fe626d114d30e0e25082a68bbfdd373 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/DigitalMeasure/FS_BlockIcon_Vertical_Left.bob @@ -0,0 +1,83 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>FS_BlockIcon_Vertical_Left</name> + <width>170</width> + <height>85</height> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>52</x> + <y>30</y> + <width>98</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="20.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Device name</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIcon</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:SwitchFlowON</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/valve_hand/valve_hand_OFF@64.png</symbol> + <symbol>../../symbols/custom_v02/valve_hand/valve_hand_OK@64.png</symbol> + </symbols> + <y>16</y> + <width>64</width> + <height>64</height> + <rotation>-90.0</rotation> + <actions execute_as_one="true"> + </actions> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="open_display"> + <file>FS_Faceplate.bob</file> + <macros> + <Dev>$(WIDDev)</Dev> + <Dis>$(WIDDis)</Dis> + <Index>$(WIDIndex)</Index> + <SecSub>$(WIDSecSub)</SecSub> + </macros> + <target>window</target> + <description>Open Display</description> + </action> + </actions> + <text></text> + <width>169</width> + <height>85</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/DigitalMeasure/FS_Faceplate.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/DigitalMeasure/FS_Faceplate.bob new file mode 100644 index 0000000000000000000000000000000000000000..0ed26faf726122aecd734400950786234ca1bdba --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/DigitalMeasure/FS_Faceplate.bob @@ -0,0 +1,727 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>FS_Faceplate</name> + <width>650</width> + <height>530</height> + <widget type="tabs" version="2.0.0"> + <name>Tabs</name> + <tabs> + <tab> + <name>Status</name> + <children> + <widget type="group" version="2.0.0"> + <name>group.status</name> + <x>10</x> + <y>10</y> + <height>341</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.status.border</name> + <width>300</width> + <height>331</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.status.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>289</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Status</name> + <text>STATUS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Status_Position</name> + <text>Valve Position</text> + <x>15</x> + <y>50</y> + <width>270</width> + <height>25</height> + <font> + <font name="Default Bold" family="Source Sans Pro" style="BOLD" size="16.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <transparent>false</transparent> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Opened</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:SwitchFlowON</pv_name> + <x>100</x> + <y>85</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Valve position</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Opened</name> + <text>OPENED</text> + <x>135</x> + <y>85</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Closed</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:SwitchNoFlow</pv_name> + <x>100</x> + <y>120</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Valve position</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Closed</name> + <text>CLOSED</text> + <x>135</x> + <y>120</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Operation_Mode</name> + <text>Operation Mode</text> + <x>18</x> + <y>161</y> + <width>270</width> + <height>25</height> + <font> + <font name="Default Bold" family="Source Sans Pro" style="BOLD" size="16.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <transparent>false</transparent> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Forced</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <x>98</x> + <y>201</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_FORCED</name> + <text>FORCED</text> + <x>133</x> + <y>201</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm_ENA</name> + <text>- Alarms latching enabled</text> + <x>18</x> + <y>293</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitForce</name> + <text>- Force mode inhibited</text> + <x>18</x> + <y>276</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Force</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_MESSAGES</name> + <text>MESSAGES</text> + <x>8</x> + <y>241</y> + <width>290</width> + <font> + <font family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm_DIS</name> + <text>- Alarms latching disabled</text> + <x>18</x> + <y>293</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.alarms</name> + <x>318</x> + <y>11</y> + <height>341</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.border</name> + <width>300</width> + <height>330</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>288</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALARMS</name> + <text>ALARMS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackgroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Group alarm</tooltip> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_IO_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:IO_Error</pv_name> + <x>28</x> + <y>51</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_IO_Error</name> + <text>I/O Error</text> + <x>63</x> + <y>51</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>buttons.bar</name> + <x>8</x> + <y>361</y> + <width>610</width> + <height>46</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Force</pv_name> + <text>FORCE</text> + <x>14</x> + <y>367</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableForcedBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>FORCE operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_ACK</name> + <actions> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_AckAlarm</pv_name> + <value>1</value> + <description>Acknowledge alarms</description> + </action> + </actions> + <text>Acknowledge Alarm</text> + <x>422</x> + <y>367</y> + <width>190</width> + <height>33</height> + <background_color> + <color name="ORANGE" red="254" green="194" blue="81"> + </color> + </background_color> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1) || (pv2 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0) && (pv2 == 1)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + <tooltip>Acknowledge alarms</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_UNLOCK</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceUnlock</pv_name> + <value>1</value> + <description>Write ForceUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <value>0</value> + <description>Write EnaForceUnlock</description> + </action> + </actions> + <text>FORCE UNLOCK</text> + <x>218</x> + <y>367</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 1)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 0)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force unlock device</tooltip> + </widget> + </children> + </tab> + <tab> + <name>Trend</name> + <children> + <widget type="databrowser" version="2.0.0"> + <name>DataBrowser</name> + <file>FS_Faceplate_Trend.plt</file> + <width>628</width> + <height>421</height> + </widget> + </children> + </tab> + </tabs> + <x>10</x> + <y>60</y> + <width>630</width> + <height>460</height> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Header Bar</name> + <width>640</width> + <height>50</height> + <line_width>0</line_width> + <line_color> + <color red="0" green="0" blue="255" alpha="0"> + </color> + </line_color> + <background_color> + <color name="PRIMARY-HEADER-BACKGROUND" red="151" green="188" blue="202"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HeaderPVName</name> + <text>${SecSub}:${Dis}-${Dev}-${Index}</text> + <x>20</x> + <width>620</width> + <height>50</height> + <font> + <font name="Header 1" family="Source Sans Pro" style="BOLD_ITALIC" size="36.0"> + </font> + </font> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Unlocked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>1</value> + <description>Write CMD_DevUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <value>0</value> + <description>Write CMD_DevLock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + </actions> + <text>UNLOCK</text> + <x>452</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false) || (pv1 == true) || (pv2 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true) && (pv1 == false) && (pv2 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Unlock this device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Locked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>0</value> + <description>Write CMD_DEVUNLOCK</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock(99)</pv_name> + <value>1</value> + <description>Run Lock script</description> + </action> + </actions> + <text>LOCK</text> + <x>547</x> + <y>10</y> + <width>85</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + </rule> + </rules> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: generate unique Machine ID from the network adapters to use it for locking mechanism*/ + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); + +var Lock = pvs[0];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock*/ +var Cmd_DevLock = pvs[1];/*${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock*/ +var P_Faceplate_LockID = pvs[2];/*${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID*/ +var Inhibit_Lock = pvs[3];/*${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock*/ +var Faceplate_LockID = pvs[4];/*${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID*/ +var BlockIcon_LockID = pvs[5];/*${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID*/ +var EnaForceUnlock = pvs[6];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock*/ +var DevLocked = pvs[7];/*${SecSub}:${Dis}-${Dev}-${Index}:DevLocked*/ + + + +var PV1 = PVUtil.getLong(Faceplate_LockID); /*Faceplate_LockID*/ +var PV2 = PVUtil.getLong(BlockIcon_LockID); /*BlockIcon_LockID*/ + +//OnShow +if (PVUtil.getLong(DevLocked) == 1) { /*DevLocked*/ + + if (PV1.toString() == PV2.toString()){ /*FaceplateLockID != BlockIconeLockID*/ + + logger.info(" Owner"); + EnaForceUnlock.setValue(0); /*Write EnaForceUnlock*/ + + } else + { + logger.info(" Faceplate FaceplateLockID "+ PV1); + logger.info(" Faceplate BlockIconeLockID "+ PV2); + + logger.info(" Guest"); + EnaForceUnlock.setValue(1); /*Write EnaForceUnlock*/ + } + + + +} +// OnClick +if (PVUtil.getLong(Lock) != 99) { /*loc://Lock, check if the script was triggered because of a button press or initilization*/ + if (PVUtil.getLong(Inhibit_Lock) == 0) { /*Inhibit_lock, check if locking is inhibited*/ + + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + UniqueText = UniqueText + intf.getName() + intf.getDisplayName(); + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + UniqueText = UniqueText + enumIpAddr.nextElement().toString(); + } + } + + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText); + if (crc >=2147483647){ crc = crc - 2147483647;} + + logger.info(" Faceplate machine ID: "+crc); + P_Faceplate_LockID.setValue(crc); /*Write P_Faceplate_LockID*/ + Cmd_DevLock.setValue(1); /*Write Lock*/ + + } /*Lock inhibit*/ +} /*onshow*/ + +]]></text> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID</pv_name> + <pv_name trigger="false">loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + </script> + </scripts> + <tooltip>Lock this device</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/DigitalMeasure/FS_Faceplate_Trend.plt b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/DigitalMeasure/FS_Faceplate_Trend.plt new file mode 100644 index 0000000000000000000000000000000000000000..466208450aa0fd3176f5fc9b3088246ad01e7983 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/DigitalMeasure/FS_Faceplate_Trend.plt @@ -0,0 +1,113 @@ +<?xml version="1.0" encoding="UTF-8"?> +<databrowser> + <title></title> + <show_toolbar>true</show_toolbar> + <update_period>3.0</update_period> + <scroll_step>5</scroll_step> + <scroll>true</scroll> + <start>-10 minutes</start> + <end>now</end> + <archive_rescale>NONE</archive_rescale> + <foreground> + <red>229</red> + <green>229</green> + <blue>229</blue> + </foreground> + <background> + <red>77</red> + <green>77</green> + <blue>77</blue> + </background> + <title_font>System|16.0|1</title_font> + <label_font>System|11.0|1</label_font> + <scale_font>System|10.0|0</scale_font> + <legend_font>System|10.0|0</legend_font> + <axes> + <axis> + <visible>true</visible> + <name>Value Axis</name> + <use_axis_name>true</use_axis_name> + <use_trace_names>true</use_trace_names> + <right>false</right> + <color> + <red>255</red> + <green>165</green> + <blue>0</blue> + </color> + <min>0.0</min> + <max>25.0</max> + <grid>true</grid> + <autoscale>true</autoscale> + <log_scale>false</log_scale> + </axis> + <axis> + <visible>true</visible> + <name>Value 1</name> + <use_axis_name>false</use_axis_name> + <use_trace_names>true</use_trace_names> + <right>false</right> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <min>0.0</min> + <max>10.0</max> + <grid>false</grid> + <autoscale>true</autoscale> + <log_scale>false</log_scale> + </axis> + </axes> + <annotations> + </annotations> + <pvlist> + <pv> + <display_name>${SecSub}:${Dis}-${Dev}-${Index}:SwitchFlowON</display_name> + <visible>true</visible> + <name>${SecSub}:${Dis}-${Dev}-${Index}:SwitchFlowON</name> + <axis>0</axis> + <color> + <red>255</red> + <green>0</green> + <blue>0</blue> + </color> + <trace_type>AREA</trace_type> + <linewidth>2</linewidth> + <line_style>SOLID</line_style> + <point_type>NONE</point_type> + <point_size>2</point_size> + <waveform_index>0</waveform_index> + <period>0.0</period> + <ring_size>5000</ring_size> + <request>RAW</request> + <archive> + <name>pbraw://archiver-01.tn.esss.lu.se:17668/retrieval</name> + <url>pbraw://archiver-01.tn.esss.lu.se:17668/retrieval</url> + </archive> + </pv> + <pv> + <display_name>${SecSub}:${Dis}-${Dev}-${Index}:SwitchNoFlow</display_name> + <visible>true</visible> + <name>${SecSub}:${Dis}-${Dev}-${Index}:SwitchNoFlow</name> + <axis>1</axis> + <color> + <red>0</red> + <green>255</green> + <blue>0</blue> + </color> + <trace_type>AREA</trace_type> + <linewidth>2</linewidth> + <line_style>SOLID</line_style> + <point_type>NONE</point_type> + <point_size>2</point_size> + <waveform_index>0</waveform_index> + <period>0.0</period> + <ring_size>5000</ring_size> + <request>RAW</request> + <archive> + <name>pbraw://archiver-01.tn.esss.lu.se:17668/retrieval</name> + <url>pbraw://archiver-01.tn.esss.lu.se:17668/retrieval</url> + </archive> + </pv> + </pvlist> +</databrowser> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/DigitalMeasure/HW_INTLCK_BlockIcon_Compact.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/DigitalMeasure/HW_INTLCK_BlockIcon_Compact.bob new file mode 100644 index 0000000000000000000000000000000000000000..89c9341974f16f43534d1ac62ab64ea97a908bd4 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/DigitalMeasure/HW_INTLCK_BlockIcon_Compact.bob @@ -0,0 +1,81 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>HW_INTLCK_BlockIcon_Compact</name> + <width>50</width> + <height>32</height> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text>A</text> + <x>20</x> + <width>30</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="20.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>A</value> + </exp> + <exp bool_exp="pv1 == true"> + <value>M</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="led" version="2.0.0"> + <name>LED</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Closed</pv_name> + <y>10</y> + <off_color> + <color name="ERROR" red="252" green="13" blue="27"> + </color> + </off_color> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "HW_INTLCK_Faceplate.bob", "STANDALONE", map); + +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>50</width> + <height>32</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/DigitalMeasure/HW_INTLCK_Faceplate.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/DigitalMeasure/HW_INTLCK_Faceplate.bob new file mode 100644 index 0000000000000000000000000000000000000000..c54e5bdd20debc0ab260a13a5686a3656a332851 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/DigitalMeasure/HW_INTLCK_Faceplate.bob @@ -0,0 +1,474 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>HW_INTLCK_Faceplate</name> + <width>460</width> + <height>560</height> + <widget type="tabs" version="2.0.0"> + <name>Tabs</name> + <tabs> + <tab> + <name>Status</name> + <children> + <widget type="group" version="2.0.0"> + <name>group.status</name> + <x>10</x> + <y>10</y> + <width>218</width> + <height>340</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.status.border</name> + <width>218</width> + <height>330</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.status.background</name> + <x>5</x> + <y>35</y> + <width>213</width> + <height>289</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Status</name> + <text>STATUS</text> + <width>218</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Status_Position</name> + <text>Position</text> + <x>15</x> + <y>50</y> + <width>203</width> + <height>25</height> + <font> + <font name="Default Bold" family="Source Sans Pro" style="BOLD" size="16.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <transparent>false</transparent> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Opened</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Opened</pv_name> + <x>48</x> + <y>87</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Valve position</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Opened</name> + <text>OPENED</text> + <x>83</x> + <y>87</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Closed</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Closed</pv_name> + <x>48</x> + <y>122</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Valve position</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Closed</name> + <text>CLOSED</text> + <x>84</x> + <y>123</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Status_Solenoid</name> + <text>Relay</text> + <x>15</x> + <y>165</y> + <width>203</width> + <height>25</height> + <font> + <font name="Default Bold" family="Source Sans Pro" style="BOLD" size="16.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <transparent>false</transparent> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Solenoid</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Closed</pv_name> + <x>48</x> + <y>202</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Valve solenoid state</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Solenoid</name> + <text>OUTPUT</text> + <x>84</x> + <y>203</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.op.modes</name> + <x>228</x> + <y>10</y> + <width>190</width> + <height>340</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.border</name> + <width>195</width> + <height>330</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.background</name> + <x>5</x> + <y>35</y> + <width>185</width> + <height>289</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OP_MODES</name> + <text>OP MODES</text> + <width>190</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Auto</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Auto</pv_name> + <x>40</x> + <y>57</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_AUTO</name> + <text>AUTO</text> + <x>73</x> + <y>57</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Manual</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Manual</pv_name> + <x>40</x> + <y>92</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_MANUAL</name> + <text>MANUAL</text> + <x>75</x> + <y>92</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_MESSAGES</name> + <text>MESSAGES</text> + <x>5</x> + <y>160</y> + <width>185</width> + <font> + <font family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>buttons.bar</name> + <x>8</x> + <y>361</y> + <width>415</width> + <height>80</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_AUTO</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Auto</pv_name> + <text>AUTO</text> + <x>12</x> + <y>402</y> + <width>200</width> + <height>33</height> + <tooltip>AUTO operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_MANUAL</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Manual</pv_name> + <text>MANUAL</text> + <x>217</x> + <y>403</y> + <width>200</width> + <height>33</height> + <tooltip>MANUAL operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_MAN_ON</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ManuOpen</pv_name> + <text>OPEN</text> + <x>217</x> + <y>367</y> + <width>99</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Manual</pv_name> + </rule> + </rules> + <tooltip>Manual OPEN</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_MAN_OFF</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ManuClose</pv_name> + <text>CLOSE</text> + <x>318</x> + <y>367</y> + <width>99</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) "> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) "> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Manual</pv_name> + </rule> + </rules> + <tooltip>Manual CLOSE</tooltip> + </widget> + </children> + </tab> + <tab> + <name>Trend</name> + <children> + <widget type="databrowser" version="2.0.0"> + <name>DataBrowser</name> + <file>HW_INTLCK_Faceplate_Trend.plt</file> + <width>438</width> + <height>441</height> + </widget> + </children> + </tab> + </tabs> + <x>10</x> + <y>60</y> + <width>440</width> + <height>490</height> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Header Bar</name> + <width>460</width> + <height>50</height> + <line_width>0</line_width> + <line_color> + <color red="0" green="0" blue="255" alpha="0"> + </color> + </line_color> + <background_color> + <color name="PRIMARY-HEADER-BACKGROUND" red="151" green="188" blue="202"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HeaderPVName</name> + <text>${SecSub}:${Dis}-${Dev}-${Index}</text> + <x>20</x> + <width>440</width> + <height>50</height> + <font> + <font name="Header 1" family="Source Sans Pro" style="BOLD_ITALIC" size="36.0"> + </font> + </font> + <vertical_alignment>1</vertical_alignment> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/DigitalMeasure/HW_INTLCK_Faceplate_Trend.plt b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/DigitalMeasure/HW_INTLCK_Faceplate_Trend.plt new file mode 100644 index 0000000000000000000000000000000000000000..994bc9851bd13079362ab24feea1f82269b9cfd7 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/DigitalMeasure/HW_INTLCK_Faceplate_Trend.plt @@ -0,0 +1,110 @@ +<?xml version="1.0" encoding="UTF-8"?> +<databrowser> + <title></title> + <show_toolbar>true</show_toolbar> + <update_period>3.0</update_period> + <scroll_step>5</scroll_step> + <scroll>true</scroll> + <start>-10 minutes</start> + <end>now</end> + <archive_rescale>NONE</archive_rescale> + <foreground> + <red>229</red> + <green>229</green> + <blue>229</blue> + </foreground> + <background> + <red>77</red> + <green>77</green> + <blue>77</blue> + </background> + <title_font>System|16|1</title_font> + <label_font>System|11|1</label_font> + <scale_font>System|10|0</scale_font> + <legend_font>System|10|0</legend_font> + <axes> + <axis> + <visible>true</visible> + <name>Value Axis</name> + <use_axis_name>true</use_axis_name> + <use_trace_names>true</use_trace_names> + <right>false</right> + <color> + <red>255</red> + <green>165</green> + <blue>0</blue> + </color> + <min>0.0</min> + <max>25.0</max> + <grid>true</grid> + <autoscale>false</autoscale> + <log_scale>false</log_scale> + </axis> + <axis> + <visible>true</visible> + <name>Value 1</name> + <use_axis_name>false</use_axis_name> + <use_trace_names>true</use_trace_names> + <right>false</right> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <min>0.0</min> + <max>10.0</max> + <grid>false</grid> + <autoscale>false</autoscale> + <log_scale>false</log_scale> + </axis> + </axes> + <annotations> + </annotations> + <pvlist> + <pv> + <display_name>Closed</display_name> + <visible>true</visible> + <name>${SecSub}:${Dis}-${Dev}-${Index}:Closed</name> + <axis>0</axis> + <color> + <red>0</red> + <green>255</green> + <blue>0</blue> + </color> + <trace_type>AREA</trace_type> + <linewidth>2</linewidth> + <line_style>SOLID</line_style> + <point_type>NONE</point_type> + <point_size>2</point_size> + <waveform_index>0</waveform_index> + <period>0.0</period> + <ring_size>5000</ring_size> + <request>OPTIMIZED</request> + <archive> + <name>pbraw://archiver-01.tn.esss.lu.se:17668/retrieval</name> + <url>pbraw://archiver-01.tn.esss.lu.se:17668/retrieval</url> + <key>1</key> + </archive> + </pv> + <pv> + <display_name>Opened</display_name> + <visible>true</visible> + <name>${SecSub}:${Dis}-${Dev}-${Index}:Opened</name> + <axis>1</axis> + <color> + <red>255</red> + <green>0</green> + <blue>0</blue> + </color> + <trace_type>AREA</trace_type> + <linewidth>2</linewidth> + <line_style>SOLID</line_style> + <point_type>NONE</point_type> + <point_size>2</point_size> + <waveform_index>0</waveform_index> + <period>0.0</period> + <ring_size>5000</ring_size> + <request>OPTIMIZED</request> + </pv> + </pvlist> +</databrowser> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/GasAnalyser/AS_GasAnalyser_BlockIcon_Vertical_Left.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/GasAnalyser/AS_GasAnalyser_BlockIcon_Vertical_Left.bob new file mode 100644 index 0000000000000000000000000000000000000000..e338fce9cced9365f0c46d584944ba685389aec1 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/GasAnalyser/AS_GasAnalyser_BlockIcon_Vertical_Left.bob @@ -0,0 +1,314 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>AS_GasAnalyser_BlockIcon_Vertical_Left</name> + <width>300</width> + <height>130</height> + <widget type="rectangle" version="2.0.0"> + <name>WID_Rect</name> + <width>300</width> + <height>130</height> + <line_width>1</line_width> + <line_color> + <color name="BLACK-BORDER" red="121" green="121" blue="121"> + </color> + </line_color> + <background_color> + <color red="255" green="255" blue="255" alpha="120"> + </color> + </background_color> + <corner_width>20</corner_width> + <corner_height>20</corner_height> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIcon</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:AnalyserColor</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/GasAnalyser/gas-analyser-2-NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom_v02/GasAnalyser/gas-analyser-2-NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom_v02/GasAnalyser/gas-analyser-2-ERROR@64.png</symbol> + <symbol>../../symbols/custom_v02/GasAnalyser/gas-analyser-2-NEUTRAL@64.png</symbol> + <symbol>../../symbols/custom_v02/GasAnalyser/gas-analyser-2-OK@64.png</symbol> + </symbols> + <x>46</x> + <y>34</y> + <width>64</width> + <height>64</height> + <actions execute_as_one="true"> + </actions> + <tooltip>Open faceplate</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text>A</text> + <x>111</x> + <y>46</y> + <width>30</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="29.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>A</value> + </exp> + <exp bool_exp="pv1 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>138</x> + <y>5</y> + <width>149</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="28.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Device name</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Locked</name> + <symbols> + <symbol>../../symbols/custom_v02/lock_locked@32.png</symbol> + </symbols> + <x>11</x> + <y>54</y> + <width>22</width> + <height>22</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:DevLocked</pv_name> + </rule> + </rules> + <tooltip>Device is locked</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Interlock</name> + <symbols> + <symbol>../../symbols/custom_v02/interlock_overridden_disabled_cms@32.png</symbol> + </symbols> + <x>11</x> + <y>10</y> + <width>24</width> + <height>24</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Interlock event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_IOErrorIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/WARNING@32.png</symbol> + </symbols> + <x>11</x> + <y>93</y> + <width>24</width> + <height>24</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == true)||(pv1==true)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == false)&&(pv1==false)"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Input_Module_Error</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Output_Module_Error</pv_name> + </rule> + </rules> + <tooltip>Siemens IO card error!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_MaintenanceIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/Wrench_error @32.png</symbol> + </symbols> + <x>115</x> + <y>95</y> + <width>21</width> + <height>21</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false)&&(pv1==false)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true)||(pv1==true)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Input_Module_Error</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Output_Module_Error</pv_name> + </rule> + </rules> + <tooltip>Maintenace Needed!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>114</x> + <y>10</y> + <width>24</width> + <height>24</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + +/* OPEN FACEPLATE*/ +var map = new Object(); +map["Dev"] = WIDDev; +map["Dis"] = WIDDis; +map["Index"] = WIDIndex; +map["SecSub"] = WIDSecSub; +org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "AS_GasAnalyser_Faceplate.bob", "STANDALONE", map); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>300</width> + <height>130</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/GasAnalyser/AS_GasAnalyser_Faceplate.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/GasAnalyser/AS_GasAnalyser_Faceplate.bob new file mode 100644 index 0000000000000000000000000000000000000000..950a675e2468508784340cd34f3f783a14ddd196 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/GasAnalyser/AS_GasAnalyser_Faceplate.bob @@ -0,0 +1,1180 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>PV_VALVE_Faceplate</name> + <width>1000</width> + <height>580</height> + <widget type="tabs" version="2.0.0"> + <name>Tabs</name> + <tabs> + <tab> + <name>Status</name> + <children> + <widget type="group" version="2.0.0"> + <name>group.status</name> + <x>10</x> + <y>10</y> + <height>340</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.status.border</name> + <width>300</width> + <height>330</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.status.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>289</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Status</name> + <text>STATUS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Status_Position</name> + <text>Analyser Status</text> + <x>15</x> + <y>50</y> + <width>270</width> + <height>25</height> + <font> + <font name="Default Bold" family="Source Sans Pro" style="BOLD" size="16.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <transparent>false</transparent> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Opened</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Analyser_Status</pv_name> + <x>100</x> + <y>85</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Valve position</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STARTED</name> + <text>STARTED</text> + <x>135</x> + <y>85</y> + <width>67</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Closed</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Analyser_Status</pv_name> + <x>100</x> + <y>120</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="LED-GREEN-ON" red="70" green="255" blue="70"> + </color> + </off_color> + <on_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </on_color> + <tooltip>Valve position</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Stopped</name> + <text>STOPPED</text> + <x>135</x> + <y>120</y> + <width>71</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Status_Solenoid</name> + <text>Control</text> + <x>15</x> + <y>165</y> + <width>270</width> + <height>25</height> + <font> + <font name="Default Bold" family="Source Sans Pro" style="BOLD" size="16.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <transparent>false</transparent> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Solenoid</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Analyser_Control</pv_name> + <x>100</x> + <y>200</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Valve solenoid state</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Output</name> + <text>OUTPUT</text> + <x>135</x> + <y>200</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.op.modes</name> + <x>320</x> + <y>10</y> + <height>340</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.border</name> + <width>300</width> + <height>330</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.background</name> + <x>5</x> + <y>35</y> + <width>289</width> + <height>289</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OP_MODES</name> + <text>OP MODES</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Auto</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Auto</pv_name> + <x>100</x> + <y>59</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_AUTO</name> + <text>AUTO</text> + <x>135</x> + <y>59</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Forced</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <x>100</x> + <y>111</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_FORCED</name> + <text>FORCED</text> + <x>135</x> + <y>111</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_MESSAGES</name> + <text>MESSAGES</text> + <x>5</x> + <y>160</y> + <width>290</width> + <font> + <font family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitForce</name> + <text>- Force mode inhibited</text> + <x>15</x> + <y>225</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Force</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm_ENA</name> + <text>- Alarms latching enabled</text> + <x>15</x> + <y>245</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm_DIS</name> + <text>- Alarms latching disabled</text> + <x>15</x> + <y>246</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.alarms</name> + <x>630</x> + <y>10</y> + <height>341</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.border</name> + <width>300</width> + <height>330</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>288</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALARMS</name> + <text>ALARMS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackgroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Group alarm</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_INTERLOCKS</name> + <text>INTERLOCKS</text> + <x>5</x> + <y>218</y> + <width>290</width> + <height>25</height> + <font> + <font family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackgroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Group interlock</tooltip> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_OpeningTimeOut</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:TurnOn_TimeOut</pv_name> + <x>25</x> + <y>50</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Opening timeout</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_StartingTimeOut</name> + <text>Starting Timeout</text> + <x>60</x> + <y>50</y> + <width>155</width> + <height>26</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TEXT_OpeningTime</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:StartingTime</pv_name> + <x>190</x> + <y>50</y> + <width>85</width> + <height>25</height> + <font> + <font name="TINY-SANS-PLAIN" family="Source Sans Pro" style="REGULAR" size="12.0"> + </font> + </font> + <foreground_color> + <color name="BLACK-BORDER" red="121" green="121" blue="121"> + </color> + </foreground_color> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Opening Time in ms</tooltip> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_ClosingTimeOut</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:TurnOff_TimeOut</pv_name> + <x>25</x> + <y>92</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Closing timeout</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_StoppingTimeOut</name> + <text>Stopping Timeout</text> + <x>60</x> + <y>92</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TEXT_ClosingTime</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:StoppingTime</pv_name> + <x>190</x> + <y>92</y> + <width>85</width> + <height>25</height> + <font> + <font name="TINY-SANS-PLAIN" family="Source Sans Pro" style="REGULAR" size="12.0"> + </font> + </font> + <foreground_color> + <color name="BLACK-BORDER" red="121" green="121" blue="121"> + </color> + </foreground_color> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Opening Time in ms</tooltip> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Module_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Input_Module_Error</pv_name> + <x>25</x> + <y>143</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Module error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Module_Error</name> + <text>Siemens Input Module Error</text> + <x>59</x> + <y>143</y> + <width>188</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ILOCK_START</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:StartInterlock</pv_name> + <x>25</x> + <y>253</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>Start interlock</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ILOCK_START</name> + <text>Start Interlock</text> + <x>60</x> + <y>251</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ILOCK_STOP</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:StopInterlock</pv_name> + <x>25</x> + <y>287</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>Stop interlock</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ILOCK_STOP</name> + <text>Stop Interlock</text> + <x>60</x> + <y>287</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Module_Error_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Output_Module_Error</pv_name> + <x>25</x> + <y>184</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Module error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Module_Error_1</name> + <text>Siemens Output Module Error</text> + <x>59</x> + <y>184</y> + <width>189</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>buttons.bar</name> + <x>8</x> + <y>361</y> + <width>920</width> + <height>80</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_AUTO</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Auto</pv_name> + <text>AUTO</text> + <x>12</x> + <y>402</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableAutoBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>AUTO operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Force</pv_name> + <text>FORCE</text> + <x>422</x> + <y>403</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableForcedBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>FORCE operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_ON</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceOpen</pv_name> + <text>START</text> + <x>422</x> + <y>367</y> + <width>99</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1) "> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0) "> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Analyser_Status</pv_name> + </rule> + </rules> + <tooltip>Force OPEN</tooltip> + <enabled>false</enabled> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_OFF</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceClose</pv_name> + <text>STOP</text> + <x>523</x> + <y>367</y> + <width>99</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 0) "> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 1) "> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Analyser_Status</pv_name> + </rule> + </rules> + <tooltip>Force CLOSE</tooltip> + <enabled>false</enabled> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_ACK</name> + <actions> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_AckAlarm</pv_name> + <value>1</value> + <description>Acknowledge alarms</description> + </action> + </actions> + <text>Acknowledge Alarm</text> + <x>722</x> + <y>403</y> + <width>200</width> + <height>33</height> + <background_color> + <color name="ORANGE" red="254" green="194" blue="81"> + </color> + </background_color> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1) || (pv2 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0) && (pv2 == 1)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + <tooltip>Acknowledge alarms</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_UNLOCK</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceUnlock</pv_name> + <value>1</value> + <description>Write ForceUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <value>0</value> + <description>Write EnaForceUnlock</description> + </action> + </actions> + <text>FORCE UNLOCK</text> + <x>722</x> + <y>367</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 1)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 0)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force unlock device</tooltip> + </widget> + </children> + </tab> + <tab> + <name>Trend</name> + <children> + <widget type="databrowser" version="2.0.0"> + <name>DataBrowser</name> + <file>PV_VALVE_Faceplate_Trend.plt</file> + <width>940</width> + <height>441</height> + </widget> + </children> + </tab> + </tabs> + <x>10</x> + <y>60</y> + <width>943</width> + <height>490</height> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Header Bar</name> + <width>963</width> + <height>50</height> + <line_width>0</line_width> + <line_color> + <color red="0" green="0" blue="255" alpha="0"> + </color> + </line_color> + <background_color> + <color name="PRIMARY-HEADER-BACKGROUND" red="151" green="188" blue="202"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HeaderPVName</name> + <text>${SecSub}:${Dis}-${Dev}-${Index}</text> + <x>20</x> + <width>715</width> + <height>50</height> + <font> + <font name="Header 1" family="Source Sans Pro" style="BOLD_ITALIC" size="36.0"> + </font> + </font> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Locked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>0</value> + <description>Write CMD_DEVUNLOCK</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock(99)</pv_name> + <value>1</value> + <description>Run Lock script</description> + </action> + </actions> + <text>LOCK</text> + <x>850</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + </rule> + </rules> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: generate unique Machine ID from the network adapters to use it for locking mechanism*/ + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); + +var Lock = pvs[0];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock*/ +var Cmd_DevLock = pvs[1];/*${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock*/ +var P_Faceplate_LockID = pvs[2];/*${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID*/ +var Inhibit_Lock = pvs[3];/*${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock*/ +var Faceplate_LockID = pvs[4];/*${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID*/ +var BlockIcon_LockID = pvs[5];/*${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID*/ +var EnaForceUnlock = pvs[6];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock*/ +var DevLocked = pvs[7];/*${SecSub}:${Dis}-${Dev}-${Index}:DevLocked*/ + + + +var PV1 = PVUtil.getLong(Faceplate_LockID); /*Faceplate_LockID*/ +var PV2 = PVUtil.getLong(BlockIcon_LockID); /*BlockIcon_LockID*/ + +//OnShow +if (PVUtil.getLong(DevLocked) == 1) { /*DevLocked*/ + + if (PV1.toString() == PV2.toString()){ /*FaceplateLockID != BlockIconeLockID*/ + + logger.info(" Owner"); + EnaForceUnlock.setValue(0); /*Write EnaForceUnlock*/ + + } else + { + logger.info(" Faceplate FaceplateLockID "+ PV1); + logger.info(" Faceplate BlockIconeLockID "+ PV2); + + logger.info(" Guest"); + EnaForceUnlock.setValue(1); /*Write EnaForceUnlock*/ + } + + + +} +// OnClick +if (PVUtil.getLong(Lock) != 99) { /*loc://Lock, check if the script was triggered because of a button press or initilization*/ + if (PVUtil.getLong(Inhibit_Lock) == 0) { /*Inhibit_lock, check if locking is inhibited*/ + + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + UniqueText = UniqueText + intf.getName() + intf.getDisplayName(); + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + UniqueText = UniqueText + enumIpAddr.nextElement().toString(); + } + } + + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText); + if (crc >=2147483647){ crc = crc - 2147483647;} + + logger.info(" Faceplate machine ID: "+crc); + P_Faceplate_LockID.setValue(crc); /*Write P_Faceplate_LockID*/ + Cmd_DevLock.setValue(1); /*Write Lock*/ + + } /*Lock inhibit*/ +} /*onshow*/ + +]]></text> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID</pv_name> + <pv_name trigger="false">loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + </script> + </scripts> + <tooltip>Lock this device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Unlocked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>1</value> + <description>Write CMD_DevUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <value>0</value> + <description>Write CMD_DevLock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + </actions> + <text>UNLOCK</text> + <x>755</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false) || (pv1 == true) || (pv2 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true) && (pv1 == false) && (pv2 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Unlock this device</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Heaters/EH_HeaterSupply_Analog_BlockIcon_OnlyText_Horizontal.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Heaters/EH_HeaterSupply_Analog_BlockIcon_OnlyText_Horizontal.bob new file mode 100644 index 0000000000000000000000000000000000000000..17dcaf60a438672feb72e231ba497c10a394570d --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Heaters/EH_HeaterSupply_Analog_BlockIcon_OnlyText_Horizontal.bob @@ -0,0 +1,252 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>EH_HeaterSupply_Analog_BlockIcon_OnlyText_Horizontal</name> + <width>340</width> + <height>36</height> + <widget type="textupdate" version="2.0.0"> + <name>WID_MeasValue_1</name> + <pv_name>${WIDSecSub}:${WIDDis}-PSU-${WIDIndex}:PwrR</pv_name> + <x>234</x> + <y>1</y> + <width>105</width> + <height>33</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="28.0"> + </font> + </font> + <precision>1</precision> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_width>1</border_width> + <border_color> + <color name="GRAY-BORDER" red="121" green="121" blue="121"> + </color> + </border_color> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text></text> + <x>9</x> + <y>34</y> + <width>18</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="13.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value> </value> + </exp> + <exp bool_exp="pv1 == true"> + <value>M</value> + </exp> + <exp bool_exp="pv2 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>23</x> + <width>108</width> + <height>35</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="28.0"> + </font> + </font> + <background_color> + <color name="ORANGE" red="254" green="194" blue="81"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Device name</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_MeasValue</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:HeaterSP</pv_name> + <x>126</x> + <y>1</y> + <width>105</width> + <height>33</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="28.0"> + </font> + </font> + <precision>1</precision> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_width>1</border_width> + <border_color> + <color name="GRAY-BORDER" red="121" green="121" blue="121"> + </color> + </border_color> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <y>4</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); +WIDIndexPID = macros.getValue("WIDIndexPID"); +WIDSecSubPID = macros.getValue("WIDSecSubPID"); + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + try + { + P_BlockIcon_LockID.setValue(crc); + } + + catch (e) { logger.info(" Locked ID cannot write pv"); } + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + map["IndexPID"] = WIDIndexPID; + map["SecSubPID"] = WIDSecSubPID; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "EH_HeaterSupply_Analog_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <x>2</x> + <y>4</y> + <width>228</width> + <height>32</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Heaters/EH_HeaterSupply_Analog_BlockIcon_OnlyText_Vertical.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Heaters/EH_HeaterSupply_Analog_BlockIcon_OnlyText_Vertical.bob new file mode 100644 index 0000000000000000000000000000000000000000..498e803bef416564987769830337db084c22010d --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Heaters/EH_HeaterSupply_Analog_BlockIcon_OnlyText_Vertical.bob @@ -0,0 +1,252 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>EH_HeaterSupply_Analog_BlockIcon_OnlyText_Vertical</name> + <width>140</width> + <height>92</height> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text></text> + <x>9</x> + <y>34</y> + <width>18</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="13.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value> </value> + </exp> + <exp bool_exp="pv1 == true"> + <value>M</value> + </exp> + <exp bool_exp="pv2 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>23</x> + <y>4</y> + <width>117</width> + <height>29</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="20.0"> + </font> + </font> + <background_color> + <color name="ORANGE" red="254" green="194" blue="81"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Device name</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_MeasValue</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:HeaterSP</pv_name> + <x>23</x> + <y>32</y> + <height>29</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="20.0"> + </font> + </font> + <precision>2</precision> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_width>1</border_width> + <border_color> + <color name="GRAY-BORDER" red="121" green="121" blue="121"> + </color> + </border_color> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>2</x> + <y>4</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_MeasValue</name> + <pv_name>${WIDSecSub}:${WIDDis}-PSU-${WIDIndex}:PwrR</pv_name> + <x>23</x> + <y>58</y> + <height>29</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="20.0"> + </font> + </font> + <precision>2</precision> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_width>1</border_width> + <border_color> + <color name="GRAY-BORDER" red="121" green="121" blue="121"> + </color> + </border_color> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); +WIDIndexPID = macros.getValue("WIDIndexPID"); +WIDSecSubPID = macros.getValue("WIDSecSubPID"); + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + try + { + P_BlockIcon_LockID.setValue(crc); + } + + catch (e) { logger.info(" Locked ID cannot write pv"); } + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + map["IndexPID"] = WIDIndexPID; + map["SecSubPID"] = WIDSecSubPID; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "EH_HeaterSupply_Analog_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <x>2</x> + <y>4</y> + <width>128</width> + <height>92</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Heaters/EH_HeaterSupply_Analog_BlockIcon_OnlyText_Vertical_Compact.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Heaters/EH_HeaterSupply_Analog_BlockIcon_OnlyText_Vertical_Compact.bob new file mode 100644 index 0000000000000000000000000000000000000000..6771f101bea3d115f11d9065ed0de9b935d88b65 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Heaters/EH_HeaterSupply_Analog_BlockIcon_OnlyText_Vertical_Compact.bob @@ -0,0 +1,278 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>EH_HeaterSupply_Analog_BlockIcon_OnlyText_Vertical_Compact</name> + <width>140</width> + <height>92</height> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text></text> + <x>9</x> + <y>34</y> + <width>18</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="13.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value> </value> + </exp> + <exp bool_exp="pv1 == true"> + <value>M</value> + </exp> + <exp bool_exp="pv2 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>23</x> + <y>4</y> + <width>117</width> + <height>29</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="20.0"> + </font> + </font> + <background_color> + <color name="ORANGE" red="254" green="194" blue="81"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Device name</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_SP</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:HeaterSP</pv_name> + <x>23</x> + <y>32</y> + <height>29</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="20.0"> + </font> + </font> + <precision>2</precision> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <rules> + <rule name="Disconnected" prop_id="background_color" out_exp="false"> + <exp bool_exp="pvInt0 > 0"> + <value> + <color name="Read_Background" red="230" green="235" blue="232"> + </color> + </value> + </exp> + <exp bool_exp="pvInt0 == 0"> + <value> + <color name="INVALID" red="149" green="110" blue="221"> + </color> + </value> + </exp> + <pv_name>CrS-CMS:Cryo-PLC-01:PLCHashCorrectR</pv_name> + </rule> + </rules> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_width>1</border_width> + <border_color> + <color name="GRAY-BORDER" red="121" green="121" blue="121"> + </color> + </border_color> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>2</x> + <y>4</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_MeasValue</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:HeaterMV</pv_name> + <x>23</x> + <y>58</y> + <height>29</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="20.0"> + </font> + </font> + <precision>2</precision> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <rules> + <rule name="Disconnected" prop_id="background_color" out_exp="false"> + <exp bool_exp="pvInt0 > 0"> + <value> + <color name="Read_Background" red="230" green="235" blue="232"> + </color> + </value> + </exp> + <exp bool_exp="pvInt0 == 0"> + <value> + <color name="INVALID" red="149" green="110" blue="221"> + </color> + </value> + </exp> + <pv_name>CrS-CMS:Cryo-PLC-01:PLCHashCorrectR</pv_name> + </rule> + </rules> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_width>1</border_width> + <border_color> + <color name="GRAY-BORDER" red="121" green="121" blue="121"> + </color> + </border_color> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "EH_HeaterSupply_Analog_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <x>2</x> + <y>4</y> + <width>128</width> + <height>92</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Heaters/EH_HeaterSupply_Analog_Faceplate.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Heaters/EH_HeaterSupply_Analog_Faceplate.bob new file mode 100644 index 0000000000000000000000000000000000000000..802b8db764ec86775f5a92dac5a217dba44c242f --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Heaters/EH_HeaterSupply_Analog_Faceplate.bob @@ -0,0 +1,2115 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>EH Heater Power Supply Analog Faceplate</name> + <width>965</width> + <height>790</height> + <widget type="tabs" version="2.0.0"> + <name>Tabs</name> + <tabs> + <tab> + <name>Status</name> + <children> + <widget type="group" version="2.0.0"> + <name>group.status</name> + <x>10</x> + <y>10</y> + <height>300</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.border</name> + <width>300</width> + <height>300</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>260</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STATUS</name> + <text>STATUS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>MET_ValvePos</name> + <pv_name>${SecSub}:${Dis}-PSU-${Index}:PwrR</pv_name> + <x>42</x> + <y>74</y> + <width>126</width> + <height>50</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="23.0"> + </font> + </font> + <background_color> + <color red="255" green="254" blue="253"> + </color> + </background_color> + <transparent>true</transparent> + <precision>2</precision> + <tooltip>Valve position in percent</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Heater_Power</name> + <text>Heater Power</text> + <x>20</x> + <y>45</y> + <width>129</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>MET_ValvePos_2</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:HeaterSP</pv_name> + <x>42</x> + <y>151</y> + <width>126</width> + <height>50</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="23.0"> + </font> + </font> + <background_color> + <color red="255" green="254" blue="253"> + </color> + </background_color> + <transparent>true</transparent> + <precision>2</precision> + <tooltip>Valve position in percent</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Heater_SP</name> + <text>Heater Setpoint</text> + <x>20</x> + <y>122</y> + <width>129</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>MET_ValvePos_3</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:HeaterMV</pv_name> + <x>42</x> + <y>227</y> + <width>126</width> + <height>50</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="23.0"> + </font> + </font> + <background_color> + <color red="255" green="254" blue="253"> + </color> + </background_color> + <transparent>true</transparent> + <precision>2</precision> + <tooltip>Valve position in percent</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Heater_MV</name> + <text>Heater Manipulated Value</text> + <x>20</x> + <y>198</y> + <width>238</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.op.modes</name> + <x>320</x> + <y>10</y> + <height>300</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.border</name> + <width>300</width> + <height>300</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>260</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OP_MODES</name> + <text>OP MODES</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Auto</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Auto</pv_name> + <x>75</x> + <y>50</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode Auto</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_AUTO</name> + <text>AUTO</text> + <x>110</x> + <y>50</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Manual</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Manual</pv_name> + <x>75</x> + <y>85</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode Manual</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_MANUAL</name> + <text>MANUAL</text> + <x>110</x> + <y>85</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Forced</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <x>75</x> + <y>120</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode Forced</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_FORCED</name> + <text>FORCED</text> + <x>106</x> + <y>120</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_MESSAGES</name> + <text>MESSAGES</text> + <x>5</x> + <y>160</y> + <width>290</width> + <height>25</height> + <font> + <font family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitMan</name> + <text>- Manual mode inhibited</text> + <x>15</x> + <y>190</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Manual</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitForce</name> + <text>- Force mode inhibited</text> + <x>15</x> + <y>210</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Force</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm_DIS</name> + <text>- Alarms latching disabled</text> + <x>15</x> + <y>230</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm_ENA</name> + <text>- Alarms latching enabled</text> + <x>15</x> + <y>230</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_RampingON</name> + <text>- Ramping enabled</text> + <x>15</x> + <y>250</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ramping</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_RampingON_1</name> + <text>- Ramping disabled</text> + <x>15</x> + <y>250</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ramping</pv_name> + </rule> + </rules> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.alarms</name> + <x>630</x> + <y>10</y> + <height>300</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.border</name> + <width>300</width> + <height>300</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>260</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_IO_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:IO_Error</pv_name> + <x>50</x> + <y>86</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_IO_Error</name> + <text>I/O Error</text> + <x>85</x> + <y>86</y> + <width>88</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Input_Module_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Input_Module_Error</pv_name> + <x>50</x> + <y>120</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Input_Module_Error</name> + <text>Input Module Error</text> + <x>85</x> + <y>120</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ILOCK_START</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:HeatInterlock</pv_name> + <x>50</x> + <y>245</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>Start interlock</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ILOCK_START</name> + <text>Heater Interlock</text> + <x>85</x> + <y>245</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALARMS</name> + <text>ALARMS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackgroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Group alarm</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_INTERLOCKS</name> + <text>INTERLOCKS</text> + <x>5</x> + <y>195</y> + <width>290</width> + <height>25</height> + <font> + <font family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackgroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Group interlock</tooltip> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Discrepancy</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Power_Discrep</pv_name> + <x>50</x> + <y>50</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Discrepancy</name> + <text>Power discrepancy</text> + <x>85</x> + <y>50</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Output_Module_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Output_Module_Error</pv_name> + <x>50</x> + <y>155</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Output_Module_Error</name> + <text>Output Module Error</text> + <x>85</x> + <y>153</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.ramping</name> + <x>320</x> + <y>320</y> + <height>263</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.ramping.border</name> + <width>300</width> + <height>255</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.ramping.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>213</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Ramping</name> + <text>RAMPING STATUS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_RampTime_1</name> + <text>Actual State:</text> + <x>10</x> + <y>44</y> + <width>135</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>IND_Direction</name> + <text>DISABLED</text> + <x>155</x> + <y>44</y> + <width>135</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="Read_Background" red="230" green="235" blue="232"> + </color> + </background_color> + <transparent>false</transparent> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv1 == 0"> + <value>IDLE</value> + </exp> + <exp bool_exp="pv0==1"> + <value>Heating</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:HeatingON</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ramping</pv_name> + </rule> + </rules> + <tooltip>Ramping status</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Ract</name> + <text>Actual Speed:</text> + <x>10</x> + <y>84</y> + <width>135</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_ActRampUPSpeed</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ActRampSpeed</pv_name> + <x>154</x> + <y>84</y> + <width>136</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Actual Ramping Speed</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_RAMPON</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_RampON</pv_name> + <text>Ramping ON</text> + <x>16</x> + <y>205</y> + <width>130</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ramping</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>turn ramping ON</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_RAMPOFF</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_RampOFF</pv_name> + <text>Ramping OFF</text> + <x>157</x> + <y>204</y> + <width>130</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ramping</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>turn ramping OFF</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_RampingNoAllowed</name> + <text>- Ramping Parameters are Zero!</text> + <x>17</x> + <y>178</y> + <width>268</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:RampSettingOK</pv_name> + </rule> + </rules> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_MaxRampUPSpeed</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:MaxRampUPSpd</pv_name> + <x>153</x> + <y>118</y> + <width>137</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Maximum allowed Opening Ramp speed</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Rmax</name> + <text>Allowed Opening:</text> + <x>8</x> + <y>118</y> + <width>140</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_MaxRampDNSpeed</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:MaxRampDNSpd</pv_name> + <x>153</x> + <y>147</y> + <width>137</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Maximum allowed Opening Ramp speed</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Rmax_1</name> + <text>Allowed Closing:</text> + <x>8</x> + <y>147</y> + <width>140</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.settings</name> + <x>630</x> + <y>320</y> + <height>265</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.settings.border</name> + <width>300</width> + <height>256</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Settings</name> + <text>SETTINGS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.settings.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>214</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_RampTime</name> + <text>Time:</text> + <x>8</x> + <y>70</y> + <width>75</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_RampingTime</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_RampUPTIME</pv_name> + <x>68</x> + <y>70</y> + <width>115</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <tooltip>Tamping UP time</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <maximum>3600.0</maximum> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_RampingTime</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_RampUPTIME</pv_name> + <x>193</x> + <y>70</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>$(pv_name)$(pv_value)</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_RampRange</name> + <text>Range:</text> + <x>8</x> + <y>110</y> + <width>75</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_RampingRange</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_RampUPRANGE</pv_name> + <x>68</x> + <y>110</y> + <width>115</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <tooltip>Ramping UP range</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_RampingRange</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_RampUPRANGE</pv_name> + <x>193</x> + <y>110</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>$(pv_name)$(pv_value)</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_RampTime_2</name> + <text>Time:</text> + <x>8</x> + <y>174</y> + <width>75</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_RampingTime_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_RampDNTIME</pv_name> + <x>68</x> + <y>174</y> + <width>115</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + </rule> + </rules> + <tooltip>Ramping DOWN Time</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <maximum>3600.0</maximum> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_RampingTime_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_RampDNTIME</pv_name> + <x>193</x> + <y>174</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>$(pv_name)$(pv_value)</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_RampRange_1</name> + <text>Range:</text> + <x>8</x> + <y>214</y> + <width>75</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_RampingRange_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_RampDNRANGE</pv_name> + <x>68</x> + <y>214</y> + <width>115</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + </rule> + </rules> + <tooltip>Ramping DOWN Range</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_RampingRange_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_RampDNRANGE</pv_name> + <x>193</x> + <y>214</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>$(pv_name)$(pv_value)</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_RdySwitchOn_1</name> + <text>Ramp OPEN parameters</text> + <x>8</x> + <y>39</y> + <width>250</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_RdySwitchOn_2</name> + <text>Ramp CLOSE parameters</text> + <x>7</x> + <y>144</y> + <width>250</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>buttons.bar</name> + <x>10</x> + <y>590</y> + <width>920</width> + <height>80</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_AUTO</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Auto</pv_name> + <text>AUTO</text> + <x>15</x> + <y>631</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableAutoBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>AUTO operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_MANUAL</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Manual</pv_name> + <text>MANUAL</text> + <x>220</x> + <y>631</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableManualBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>MANUAL operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Force</pv_name> + <text>FORCE</text> + <x>425</x> + <y>631</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableForcedBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>FORCE operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_APPLY</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceValInp</pv_name> + <text>APPLY IN</text> + <x>425</x> + <y>595</y> + <width>99</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_APPLY_1</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceValOut</pv_name> + <text>APPLY OUT</text> + <x>526</x> + <y>595</y> + <width>99</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_ACK</name> + <actions> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_AckAlarm</pv_name> + <value>1</value> + <description>Acknowledge alarms</description> + </action> + </actions> + <text>Acknowledge Alarm</text> + <x>725</x> + <y>631</y> + <width>200</width> + <height>33</height> + <background_color> + <color name="ORANGE" red="254" green="194" blue="81"> + </color> + </background_color> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1) || (pv2 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0) && (pv2 == 1)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + <tooltip>Acknowledge alarms</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_UNLOCK</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceUnlock</pv_name> + <value>1</value> + <description>Write ForceUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <value>0</value> + <description>Write EnaForceUnlock</description> + </action> + </actions> + <text>FORCE UNLOCK</text> + <x>725</x> + <y>595</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 1)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 0)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force unlock device</tooltip> + </widget> + <widget type="group" version="2.0.0"> + <name>group.modify</name> + <x>10</x> + <y>320</y> + <height>263</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.modify.border</name> + <width>300</width> + <height>255</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.modify.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>100</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <rules> + <rule name="Color" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 1"> + <value> + <color name="RED-BACKGROUND" red="225" green="192" blue="188"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + </rule> + </rules> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_HeaterMV</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Manipulated</pv_name> + <x>215</x> + <y>73</y> + <width>70</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Output] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_ForceHeaterMV</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Manipulated</pv_name> + <x>120</x> + <y>73</y> + <width>85</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Force heater output</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_FrcMV</name> + <text>Force Output:</text> + <x>15</x> + <y>73</y> + <width>96</width> + <height>26</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY VALUE] to apply</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Modify</name> + <text>MODIFY/FORCE</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Text" prop_id="text" out_exp="false"> + <exp bool_exp="(pv0 == 1)"> + <value>MODIFY/FORCE</value> + </exp> + <exp bool_exp="(pv1 == 1)"> + <value>MODIFY</value> + </exp> + <exp bool_exp="(pv2 == 1)"> + <value>FORCE</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Auto</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Manual</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + </rule> + </rules> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.modify.background_1</name> + <x>5</x> + <y>143</y> + <width>290</width> + <height>104</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_StepValue</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Step</pv_name> + <x>194</x> + <y>206</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback step value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_StepValue</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Step</pv_name> + <x>95</x> + <y>206</y> + <width>92</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0==0"> + <value>true</value> + </exp> + <exp bool_exp="pv0==1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Step value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <limits_from_pv>false</limits_from_pv> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_StepValue</name> + <text>Step Value:</text> + <x>6</x> + <y>203</y> + <width>101</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_Setpoint</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Setpoint</pv_name> + <x>194</x> + <y>153</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback modified setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_ForcePumpSP</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Setpoint</pv_name> + <x>76</x> + <y>153</y> + <width>111</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="IncrementRule" prop_id="increment" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Step</pv_name> + </rule> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0==0"> + <value>true</value> + </exp> + <exp bool_exp="pv0==1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Modify Setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <limits_from_pv>false</limits_from_pv> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_FrcSetpoint</name> + <text>Setpoint:</text> + <x>7</x> + <y>153</y> + <width>71</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="polyline" version="2.0.0"> + <name>Polyline</name> + <x>133</x> + <y>184</y> + <width>41</width> + <line_color> + <color name="WHITE" red="255" green="255" blue="255"> + </color> + </line_color> + <points> + <point x="0.0" y="20.0"> + </point> + <point x="0.0" y="10.0"> + </point> + <point x="40.32786885245899" y="10.0"> + </point> + <point x="40.32786885245899" y="0.0"> + </point> + </points> + </widget> + </widget> + <widget type="action_button" version="3.0.0"> + <name>PIDScreen_Button_1</name> + <actions> + <action type="open_display"> + <file>../PIDControls/PID_Control_Faceplate_embedded.bob</file> + <macros> + <ControlledDevice>${SecSub}:${Dis}-PSU-${Index}:PwrR</ControlledDevice> + </macros> + <target>window</target> + <description>Open Display</description> + </action> + </actions> + <text>PID</text> + <x>15</x> + <y>595</y> + <width>200</width> + <height>33</height> + <tooltip></tooltip> + <confirm_message></confirm_message> + </widget> + </children> + </tab> + <tab> + <name>Trend</name> + <children> + <widget type="databrowser" version="2.0.0"> + <name>Data Browser</name> + <file>EH_HeaterSupply_Tend.plt</file> + <width>940</width> + <height>691</height> + </widget> + </children> + </tab> + </tabs> + <x>10</x> + <y>60</y> + <width>943</width> + <height>720</height> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Header Bar</name> + <width>963</width> + <height>50</height> + <line_width>0</line_width> + <line_color> + <color red="0" green="0" blue="255" alpha="0"> + </color> + </line_color> + <background_color> + <color name="PRIMARY-HEADER-BACKGROUND" red="151" green="188" blue="202"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HeaderPVName</name> + <text>${SecSub}:${Dis}-${Dev}-${Index}</text> + <x>20</x> + <width>715</width> + <height>50</height> + <font> + <font name="Header 1" family="Source Sans Pro" style="BOLD_ITALIC" size="36.0"> + </font> + </font> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Unlocked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>1</value> + <description>Write CMD_DevUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <value>0</value> + <description>Write CMD_DevLock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + </actions> + <text>UNLOCK</text> + <x>755</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false) || (pv1 == true) || (pv2 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true) && (pv1 == false) && (pv2 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Unlock this device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Locked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>0</value> + <description>Write CMD_DEVUNLOCK</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock(99)</pv_name> + <value>1</value> + <description>Run Lock script</description> + </action> + </actions> + <text>LOCK</text> + <x>850</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + </rule> + </rules> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: generate unique Machine ID from the network adapters to use it for locking mechanism*/ + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); + +var Lock = pvs[0];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock*/ +var Cmd_DevLock = pvs[1];/*${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock*/ +var P_Faceplate_LockID = pvs[2];/*${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID*/ +var Inhibit_Lock = pvs[3];/*${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock*/ +var Faceplate_LockID = pvs[4];/*${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID*/ +var BlockIcon_LockID = pvs[5];/*${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID*/ +var EnaForceUnlock = pvs[6];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock*/ +var DevLocked = pvs[7];/*${SecSub}:${Dis}-${Dev}-${Index}:DevLocked*/ + + + +var PV1 = PVUtil.getLong(Faceplate_LockID); /*Faceplate_LockID*/ +var PV2 = PVUtil.getLong(BlockIcon_LockID); /*BlockIcon_LockID*/ + +//OnShow +if (PVUtil.getLong(DevLocked) == 1) { /*DevLocked*/ + + if (PV1.toString() == PV2.toString()){ /*FaceplateLockID != BlockIconeLockID*/ + + logger.info(" Owner"); + EnaForceUnlock.setValue(0); /*Write EnaForceUnlock*/ + + } else + { + logger.info(" Faceplate FaceplateLockID "+ PV1); + logger.info(" Faceplate BlockIconeLockID "+ PV2); + + logger.info(" Guest"); + EnaForceUnlock.setValue(1); /*Write EnaForceUnlock*/ + } + + + +} +// OnClick +if (PVUtil.getLong(Lock) != 99) { /*loc://Lock, check if the script was triggered because of a button press or initilization*/ + if (PVUtil.getLong(Inhibit_Lock) == 0) { /*Inhibit_lock, check if locking is inhibited*/ + + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + UniqueText = UniqueText + intf.getName() + intf.getDisplayName(); + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + UniqueText = UniqueText + enumIpAddr.nextElement().toString(); + } + } + + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText); + if (crc >=2147483647){ crc = crc - 2147483647;} + + logger.info(" Faceplate machine ID: "+crc); + P_Faceplate_LockID.setValue(crc); /*Write P_Faceplate_LockID*/ + Cmd_DevLock.setValue(1); /*Write Lock*/ + + } /*Lock inhibit*/ +} /*onshow*/ + +]]></text> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID</pv_name> + <pv_name trigger="false">loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + </script> + </scripts> + <tooltip>Lock this device</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Heaters/EH_HeaterSupply_BlockIcon_OnlyText_Vertical.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Heaters/EH_HeaterSupply_BlockIcon_OnlyText_Vertical.bob new file mode 100644 index 0000000000000000000000000000000000000000..ae65e3bc0e7c888b4f54bf8e1eec6aacdf7af6e4 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Heaters/EH_HeaterSupply_BlockIcon_OnlyText_Vertical.bob @@ -0,0 +1,232 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>EH_HeaterSupply_BlockIcon_OnlyText_Vertical</name> + <width>130</width> + <height>92</height> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text></text> + <x>9</x> + <y>34</y> + <width>18</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="13.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value> </value> + </exp> + <exp bool_exp="pv1 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_FreeRun</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>23</x> + <y>4</y> + <width>103</width> + <height>29</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="20.0"> + </font> + </font> + <background_color> + <color name="ORANGE" red="254" green="194" blue="81"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Device name</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_MeasValue</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:HeaterSP</pv_name> + <x>23</x> + <y>32</y> + <height>29</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="20.0"> + </font> + </font> + <transparent>true</transparent> + <precision>2</precision> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>2</x> + <y>4</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_MeasValue</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:HeaterMV</pv_name> + <x>23</x> + <y>58</y> + <height>29</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="20.0"> + </font> + </font> + <transparent>true</transparent> + <precision>2</precision> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "EH_HeaterSupply_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <x>2</x> + <y>4</y> + <width>128</width> + <height>92</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Heaters/EH_HeaterSupply_Faceplate.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Heaters/EH_HeaterSupply_Faceplate.bob new file mode 100644 index 0000000000000000000000000000000000000000..ca16c91fc76999825d6c81d9fdb26bff0347e683 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Heaters/EH_HeaterSupply_Faceplate.bob @@ -0,0 +1,2128 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>EH Heater Power Supply Faceplate</name> + <width>965</width> + <height>790</height> + <widget type="tabs" version="2.0.0"> + <name>Tabs</name> + <tabs> + <tab> + <name>Status</name> + <children> + <widget type="group" version="2.0.0"> + <name>group.status</name> + <x>10</x> + <y>10</y> + <height>300</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.border</name> + <width>300</width> + <height>300</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>260</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STATUS</name> + <text>STATUS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="linear-meter" version="2.0.0"> + <name>MET_ValvePos</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ValvePosition</pv_name> + <x>15</x> + <y>45</y> + <width>270</width> + <precision>2</precision> + <level_hihi>0.0</level_hihi> + <level_high>0.0</level_high> + <level_low>0.0</level_low> + <level_lolo>0.0</level_lolo> + <show_hihi>false</show_hihi> + <show_high>false</show_high> + <show_low>false</show_low> + <show_lolo>false</show_lolo> + <title>Actual position (%)</title> + <tooltip>Valve position in percent</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <auto_scale>false</auto_scale> + <limits_from_pv>false</limits_from_pv> + <unit_from_pv>false</unit_from_pv> + <minor_tick_space>0.0</minor_tick_space> + <lcd_visible>false</lcd_visible> + <bar_color> + <color name="PRIMARY" red="0" green="148" blue="202"> + </color> + </bar_color> + </widget> + <widget type="linear-meter" version="2.0.0"> + <name>MET_ValveMV</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ValveMV</pv_name> + <x>15</x> + <y>205</y> + <width>270</width> + <height>78</height> + <precision>2</precision> + <level_hihi>0.0</level_hihi> + <level_high>0.0</level_high> + <level_low>0.0</level_low> + <level_lolo>0.0</level_lolo> + <show_hihi>false</show_hihi> + <show_high>false</show_high> + <show_low>false</show_low> + <show_lolo>false</show_lolo> + <title>Manipulated value (%)</title> + <tooltip>Valve manipulated value in percent</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <auto_scale>false</auto_scale> + <limits_from_pv>false</limits_from_pv> + <unit_from_pv>false</unit_from_pv> + <minor_tick_space>0.0</minor_tick_space> + <lcd_visible>false</lcd_visible> + <bar_color> + <color name="PRIMARY-LIGHT" red="151" green="188" blue="202"> + </color> + </bar_color> + </widget> + <widget type="linear-meter" version="2.0.0"> + <name>MET_ValveSetpoint</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ValveSP</pv_name> + <x>15</x> + <y>125</y> + <width>270</width> + <precision>2</precision> + <level_hihi>0.0</level_hihi> + <level_high>0.0</level_high> + <level_low>0.0</level_low> + <level_lolo>0.0</level_lolo> + <show_hihi>false</show_hihi> + <show_high>false</show_high> + <show_low>false</show_low> + <show_lolo>false</show_lolo> + <title>Setpoint (%)</title> + <tooltip>Valve setpoint in percent</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <auto_scale>false</auto_scale> + <limits_from_pv>false</limits_from_pv> + <unit_from_pv>false</unit_from_pv> + <minor_tick_space>0.0</minor_tick_space> + <lcd_visible>false</lcd_visible> + <bar_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </bar_color> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.op.modes</name> + <x>320</x> + <y>10</y> + <height>300</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.border</name> + <width>300</width> + <height>300</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>260</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OP_MODES</name> + <text>OP MODES</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Auto</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Auto</pv_name> + <x>75</x> + <y>50</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode Auto</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_AUTO</name> + <text>AUTO</text> + <x>110</x> + <y>50</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Manual</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Manual</pv_name> + <x>75</x> + <y>85</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode Manual</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_MANUAL</name> + <text>MANUAL</text> + <x>110</x> + <y>85</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Forced</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <x>75</x> + <y>120</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode Forced</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_FORCED</name> + <text>FORCED</text> + <x>106</x> + <y>120</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_MESSAGES</name> + <text>MESSAGES</text> + <x>5</x> + <y>160</y> + <width>290</width> + <height>25</height> + <font> + <font family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitMan</name> + <text>- Manual mode inhibited</text> + <x>15</x> + <y>190</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Manual</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitForce</name> + <text>- Force mode inhibited</text> + <x>15</x> + <y>210</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Force</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm_DIS</name> + <text>- Alarms latching disabled</text> + <x>15</x> + <y>230</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm_ENA</name> + <text>- Alarms latching enabled</text> + <x>15</x> + <y>230</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_RampingON</name> + <text>- Ramping enabled</text> + <x>15</x> + <y>250</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ramping</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_RampingON_1</name> + <text>- Ramping disabled</text> + <x>15</x> + <y>250</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ramping</pv_name> + </rule> + </rules> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.alarms</name> + <x>630</x> + <y>10</y> + <height>300</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.border</name> + <width>300</width> + <height>300</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>260</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_IO_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:IO_Error</pv_name> + <x>50</x> + <y>86</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_IO_Error</name> + <text>I/O Error</text> + <x>85</x> + <y>86</y> + <width>88</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Input_Module_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Input_Module_Error</pv_name> + <x>50</x> + <y>120</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Input_Module_Error</name> + <text>Input Module Error</text> + <x>85</x> + <y>120</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ILOCK_START</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:MoveInterlock</pv_name> + <x>50</x> + <y>245</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>Start interlock</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ILOCK_START</name> + <text>Move Interlock</text> + <x>85</x> + <y>245</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALARMS</name> + <text>ALARMS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackgroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Group alarm</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_INTERLOCKS</name> + <text>INTERLOCKS</text> + <x>5</x> + <y>195</y> + <width>290</width> + <height>25</height> + <font> + <font family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackgroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Group interlock</tooltip> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Discrepancy</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Position_Discrep</pv_name> + <x>50</x> + <y>50</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Discrepancy</name> + <text>Position discrepancy</text> + <x>85</x> + <y>50</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Output_Module_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Output_Module_Error</pv_name> + <x>50</x> + <y>155</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Output_Module_Error</name> + <text>Output Module Error</text> + <x>85</x> + <y>153</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.ramping</name> + <x>320</x> + <y>320</y> + <height>263</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.ramping.border</name> + <width>300</width> + <height>255</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.ramping.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>213</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Ramping</name> + <text>RAMPING STATUS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_RampTime_1</name> + <text>Actual Direction:</text> + <x>10</x> + <y>44</y> + <width>135</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>IND_Direction</name> + <text>DISABLED</text> + <x>155</x> + <y>44</y> + <width>135</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="Read_Background" red="230" green="235" blue="232"> + </color> + </background_color> + <transparent>false</transparent> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv2 == 0"> + <value>DISABLED</value> + </exp> + <exp bool_exp="pv0==1"> + <value>Opening</value> + </exp> + <exp bool_exp="pv1==1"> + <value>Closing</value> + </exp> + <exp bool_exp="(pv0 == 0)&&(pv1==0)"> + <value>NOT MOVING</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Opening</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Closing</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ramping</pv_name> + </rule> + </rules> + <tooltip>Ramping status</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Ract</name> + <text>Actual Speed:</text> + <x>10</x> + <y>84</y> + <width>135</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_ActRampUPSpeed</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ActRampSpeed</pv_name> + <x>154</x> + <y>84</y> + <width>136</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Actual Ramping Speed</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_RAMPON</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_RampON</pv_name> + <text>Ramping ON</text> + <x>16</x> + <y>205</y> + <width>130</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ramping</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>turn ramping ON</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_RAMPOFF</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_RampOFF</pv_name> + <text>Ramping OFF</text> + <x>157</x> + <y>204</y> + <width>130</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ramping</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>turn ramping OFF</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_RampingNoAllowed</name> + <text>- Ramping Parameters are Zero!</text> + <x>17</x> + <y>178</y> + <width>268</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:RampSettingOK</pv_name> + </rule> + </rules> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_MaxRampUPSpeed</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:MaxRampUPSpd</pv_name> + <x>153</x> + <y>118</y> + <width>137</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Maximum allowed Opening Ramp speed</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Rmax</name> + <text>Allowed Opening:</text> + <x>8</x> + <y>118</y> + <width>140</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_MaxRampDNSpeed</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:MaxRampDNSpd</pv_name> + <x>153</x> + <y>147</y> + <width>137</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Maximum allowed Opening Ramp speed</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Rmax_1</name> + <text>Allowed Closing:</text> + <x>8</x> + <y>147</y> + <width>140</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.settings</name> + <x>630</x> + <y>320</y> + <height>265</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.settings.border</name> + <width>300</width> + <height>256</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Settings</name> + <text>SETTINGS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.settings.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>214</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_RampTime</name> + <text>Time:</text> + <x>8</x> + <y>70</y> + <width>75</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_RampingTime</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_RampUPTIME</pv_name> + <x>68</x> + <y>70</y> + <width>115</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <tooltip>Tamping UP time</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <maximum>3600.0</maximum> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_RampingTime</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_RampUPTIME</pv_name> + <x>193</x> + <y>70</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>$(pv_name)$(pv_value)</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_RampRange</name> + <text>Range:</text> + <x>8</x> + <y>110</y> + <width>75</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_RampingRange</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_RampUPRANGE</pv_name> + <x>68</x> + <y>110</y> + <width>115</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <tooltip>Ramping UP range</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_RampingRange</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_RampUPRANGE</pv_name> + <x>193</x> + <y>110</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>$(pv_name)$(pv_value)</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_RampTime_2</name> + <text>Time:</text> + <x>8</x> + <y>174</y> + <width>75</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_RampingTime_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_RampDNTIME</pv_name> + <x>68</x> + <y>174</y> + <width>115</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + </rule> + </rules> + <tooltip>Ramping DOWN Time</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <maximum>3600.0</maximum> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_RampingTime_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_RampDNTIME</pv_name> + <x>193</x> + <y>174</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>$(pv_name)$(pv_value)</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_RampRange_1</name> + <text>Range:</text> + <x>8</x> + <y>214</y> + <width>75</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_RampingRange_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_RampDNRANGE</pv_name> + <x>68</x> + <y>214</y> + <width>115</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + </rule> + </rules> + <tooltip>Ramping DOWN Range</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_RampingRange_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_RampDNRANGE</pv_name> + <x>193</x> + <y>214</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>$(pv_name)$(pv_value)</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_RdySwitchOn_1</name> + <text>Ramp OPEN parameters</text> + <x>8</x> + <y>39</y> + <width>250</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_RdySwitchOn_2</name> + <text>Ramp CLOSE parameters</text> + <x>7</x> + <y>144</y> + <width>250</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>buttons.bar</name> + <x>10</x> + <y>590</y> + <width>920</width> + <height>80</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_AUTO</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Auto</pv_name> + <text>AUTO</text> + <x>15</x> + <y>631</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableAutoBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>AUTO operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_MANUAL</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Manual</pv_name> + <text>MANUAL</text> + <x>220</x> + <y>631</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableManualBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>MANUAL operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Force</pv_name> + <text>FORCE</text> + <x>425</x> + <y>631</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableForcedBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>FORCE operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_APPLY</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceValInp</pv_name> + <text>APPLY IN</text> + <x>425</x> + <y>595</y> + <width>99</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_APPLY_1</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceValOut</pv_name> + <text>APPLY OUT</text> + <x>526</x> + <y>595</y> + <width>99</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_ACK</name> + <actions> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_AckAlarm</pv_name> + <value>1</value> + <description>Acknowledge alarms</description> + </action> + </actions> + <text>Acknowledge Alarm</text> + <x>725</x> + <y>631</y> + <width>200</width> + <height>33</height> + <background_color> + <color name="ORANGE" red="254" green="194" blue="81"> + </color> + </background_color> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1) || (pv2 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0) && (pv2 == 1)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + <tooltip>Acknowledge alarms</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_UNLOCK</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceUnlock</pv_name> + <value>1</value> + <description>Write ForceUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <value>0</value> + <description>Write EnaForceUnlock</description> + </action> + </actions> + <text>FORCE UNLOCK</text> + <x>725</x> + <y>595</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 1)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 0)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force unlock device</tooltip> + </widget> + <widget type="group" version="2.0.0"> + <name>group.modify</name> + <x>10</x> + <y>320</y> + <height>263</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.modify.border</name> + <width>300</width> + <height>255</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.modify.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>100</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <rules> + <rule name="Color" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 1"> + <value> + <color name="RED-BACKGROUND" red="225" green="192" blue="188"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + </rule> + </rules> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_HeaterMV</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Manipulated</pv_name> + <x>215</x> + <y>90</y> + <width>70</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Output] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_ForceHeaterMV</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Manipulated</pv_name> + <x>120</x> + <y>90</y> + <width>85</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Force heater output</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_FrcMV</name> + <text>Force Output:</text> + <x>15</x> + <y>90</y> + <width>96</width> + <height>26</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY VALUE] to apply</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_HeaterPow</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_ForcePosition</pv_name> + <x>215</x> + <y>50</y> + <width>70</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Input] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_ForceHeaterPow</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_ForcePosition</pv_name> + <x>120</x> + <y>50</y> + <width>85</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Force heater power</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_FrcActPos</name> + <text>Force Input:</text> + <x>15</x> + <y>50</y> + <width>96</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Modify</name> + <text>MODIFY/FORCE</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Text" prop_id="text" out_exp="false"> + <exp bool_exp="(pv0 == 1)"> + <value>MODIFY/FORCE</value> + </exp> + <exp bool_exp="(pv1 == 1)"> + <value>MODIFY</value> + </exp> + <exp bool_exp="(pv2 == 1)"> + <value>FORCE</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Auto</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Manual</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + </rule> + </rules> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.modify.background_1</name> + <x>5</x> + <y>143</y> + <width>290</width> + <height>104</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_StepValue</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Step</pv_name> + <x>194</x> + <y>206</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback step value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_StepValue</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Step</pv_name> + <x>95</x> + <y>206</y> + <width>92</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0==0"> + <value>true</value> + </exp> + <exp bool_exp="pv0==1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Step value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <limits_from_pv>false</limits_from_pv> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_StepValue</name> + <text>Step Value:</text> + <x>6</x> + <y>203</y> + <width>101</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_Setpoint</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Setpoint</pv_name> + <x>194</x> + <y>153</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback modified setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_ForcePumpSP</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Setpoint</pv_name> + <x>76</x> + <y>153</y> + <width>111</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="IncrementRule" prop_id="increment" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Step</pv_name> + </rule> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0==0"> + <value>true</value> + </exp> + <exp bool_exp="pv0==1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Modify Setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <limits_from_pv>false</limits_from_pv> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_FrcSetpoint</name> + <text>Setpoint:</text> + <x>7</x> + <y>153</y> + <width>71</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="polyline" version="2.0.0"> + <name>Polyline</name> + <x>133</x> + <y>184</y> + <width>41</width> + <line_color> + <color name="WHITE" red="255" green="255" blue="255"> + </color> + </line_color> + <points> + <point x="0.0" y="20.0"> + </point> + <point x="0.0" y="10.0"> + </point> + <point x="40.32786885245899" y="10.0"> + </point> + <point x="40.32786885245899" y="0.0"> + </point> + </points> + </widget> + </widget> + </children> + </tab> + <tab> + <name>Trend</name> + <children> + <widget type="databrowser" version="2.0.0"> + <name>DataBrowser</name> + <width>940</width> + <height>721</height> + </widget> + </children> + </tab> + </tabs> + <x>10</x> + <y>60</y> + <width>943</width> + <height>720</height> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Header Bar</name> + <width>963</width> + <height>50</height> + <line_width>0</line_width> + <line_color> + <color red="0" green="0" blue="255" alpha="0"> + </color> + </line_color> + <background_color> + <color name="PRIMARY-HEADER-BACKGROUND" red="151" green="188" blue="202"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HeaderPVName</name> + <text>${SecSub}:${Dis}-${Dev}-${Index}</text> + <x>20</x> + <width>715</width> + <height>50</height> + <font> + <font name="Header 1" family="Source Sans Pro" style="BOLD_ITALIC" size="36.0"> + </font> + </font> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Unlocked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>1</value> + <description>Write CMD_DevUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <value>0</value> + <description>Write CMD_DevLock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + </actions> + <text>UNLOCK</text> + <x>755</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false) || (pv1 == true) || (pv2 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true) && (pv1 == false) && (pv2 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Unlock this device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Locked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>0</value> + <description>Write CMD_DEVUNLOCK</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock(99)</pv_name> + <value>1</value> + <description>Run Lock script</description> + </action> + </actions> + <text>LOCK</text> + <x>850</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + </rule> + </rules> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: generate unique Machine ID from the network adapters to use it for locking mechanism*/ + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); + +var Lock = pvs[0];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock*/ +var Cmd_DevLock = pvs[1];/*${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock*/ +var P_Faceplate_LockID = pvs[2];/*${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID*/ +var Inhibit_Lock = pvs[3];/*${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock*/ +var Faceplate_LockID = pvs[4];/*${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID*/ +var BlockIcon_LockID = pvs[5];/*${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID*/ +var EnaForceUnlock = pvs[6];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock*/ +var DevLocked = pvs[7];/*${SecSub}:${Dis}-${Dev}-${Index}:DevLocked*/ + + + +var PV1 = PVUtil.getLong(Faceplate_LockID); /*Faceplate_LockID*/ +var PV2 = PVUtil.getLong(BlockIcon_LockID); /*BlockIcon_LockID*/ + +//OnShow +if (PVUtil.getLong(DevLocked) == 1) { /*DevLocked*/ + + if (PV1.toString() == PV2.toString()){ /*FaceplateLockID != BlockIconeLockID*/ + + logger.info(" Owner"); + EnaForceUnlock.setValue(0); /*Write EnaForceUnlock*/ + + } else + { + logger.info(" Faceplate FaceplateLockID "+ PV1); + logger.info(" Faceplate BlockIconeLockID "+ PV2); + + logger.info(" Guest"); + EnaForceUnlock.setValue(1); /*Write EnaForceUnlock*/ + } + + + +} +// OnClick +if (PVUtil.getLong(Lock) != 99) { /*loc://Lock, check if the script was triggered because of a button press or initilization*/ + if (PVUtil.getLong(Inhibit_Lock) == 0) { /*Inhibit_lock, check if locking is inhibited*/ + + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + UniqueText = UniqueText + intf.getName() + intf.getDisplayName(); + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + UniqueText = UniqueText + enumIpAddr.nextElement().toString(); + } + } + + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText); + if (crc >=2147483647){ crc = crc - 2147483647;} + + logger.info(" Faceplate machine ID: "+crc); + P_Faceplate_LockID.setValue(crc); /*Write P_Faceplate_LockID*/ + Cmd_DevLock.setValue(1); /*Write Lock*/ + + } /*Lock inhibit*/ +} /*onshow*/ + +]]></text> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID</pv_name> + <pv_name trigger="false">loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + </script> + </scripts> + <tooltip>Lock this device</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Heaters/EH_HeaterSupply_ONOFF_BlockIcon_OnlyText_Vertical.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Heaters/EH_HeaterSupply_ONOFF_BlockIcon_OnlyText_Vertical.bob new file mode 100644 index 0000000000000000000000000000000000000000..af9fecc6dd203c7486f5967b3d70946e1d9298b8 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Heaters/EH_HeaterSupply_ONOFF_BlockIcon_OnlyText_Vertical.bob @@ -0,0 +1,214 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>EH_HeaterSupply_ONOFF_BlockIcon_OnlyText_Vertical</name> + <width>130</width> + <height>70</height> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>23</x> + <y>4</y> + <width>91</width> + <height>29</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="20.0"> + </font> + </font> + <background_color> + <color name="ORANGE" red="254" green="194" blue="81"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Device name</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>2</x> + <y>4</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>Label</name> + <text>Heater ON</text> + <x>2</x> + <y>34</y> + <width>127</width> + <height>34</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="20.0"> + </font> + </font> + <background_color> + <color name="OK" red="61" green="216" blue="61"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="LabelText" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>Heater ON</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>Heater OFF</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:HeatingON</pv_name> + </rule> + <rule name="LabelBackground" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value> + <color name="OK" red="61" green="216" blue="61"> + </color> + </value> + </exp> + <exp bool_exp="pv0==false"> + <value> + <color name="GRAY" red="169" green="169" blue="169"> + </color> + </value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:HeatingON</pv_name> + </rule> + </rules> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "EH_HeaterSupply_ONOFF_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>128</width> + <height>70</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Heaters/EH_HeaterSupply_ONOFF_Faceplate.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Heaters/EH_HeaterSupply_ONOFF_Faceplate.bob new file mode 100644 index 0000000000000000000000000000000000000000..f9147225f420fe8fc820433bafae405251ffdc8b --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Heaters/EH_HeaterSupply_ONOFF_Faceplate.bob @@ -0,0 +1,1209 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>EH ONOFF Heater Faceplate</name> + <width>965</width> + <height>580</height> + <widget type="tabs" version="2.0.0"> + <name>Tabs</name> + <tabs> + <tab> + <name>Status</name> + <children> + <widget type="group" version="2.0.0"> + <name>group.status</name> + <x>10</x> + <y>10</y> + <height>340</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.status.border</name> + <width>300</width> + <height>330</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.status.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>289</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Status</name> + <text>STATUS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Status_Position</name> + <text>Heater State</text> + <x>15</x> + <y>50</y> + <width>270</width> + <height>25</height> + <font> + <font name="Default Bold" family="Source Sans Pro" style="BOLD" size="16.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <transparent>false</transparent> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Opened</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:HeatingON</pv_name> + <x>100</x> + <y>85</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Valve position</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Opened</name> + <text>HEATING</text> + <x>135</x> + <y>85</y> + <width>83</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Closed</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:HeatingON</pv_name> + <x>100</x> + <y>120</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Valve position</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Closed</name> + <text>IDLE</text> + <x>135</x> + <y>120</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Status_Solenoid</name> + <text>Heater Control</text> + <x>15</x> + <y>165</y> + <width>270</width> + <height>25</height> + <font> + <font name="Default Bold" family="Source Sans Pro" style="BOLD" size="16.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <transparent>false</transparent> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Solenoid</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:HeatingON</pv_name> + <x>100</x> + <y>200</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Valve solenoid state</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Solenoid</name> + <text>OUTPUT</text> + <x>135</x> + <y>200</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.op.modes</name> + <x>320</x> + <y>10</y> + <height>340</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.border</name> + <width>300</width> + <height>330</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.background</name> + <x>5</x> + <y>35</y> + <width>289</width> + <height>289</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OP_MODES</name> + <text>OP MODES</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Auto</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Auto</pv_name> + <x>100</x> + <y>50</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_AUTO</name> + <text>AUTO</text> + <x>135</x> + <y>50</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Manual</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Manual</pv_name> + <x>100</x> + <y>85</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_MANUAL</name> + <text>MANUAL</text> + <x>135</x> + <y>85</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Forced</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <x>100</x> + <y>120</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_FORCED</name> + <text>FORCED</text> + <x>135</x> + <y>120</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_MESSAGES</name> + <text>MESSAGES</text> + <x>5</x> + <y>160</y> + <width>290</width> + <font> + <font family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitMan</name> + <text>- Manual mode inhibited</text> + <x>15</x> + <y>205</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Manual</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitForce</name> + <text>- Force mode inhibited</text> + <x>15</x> + <y>225</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Force</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm_ENA</name> + <text>- Alarms latching enabled</text> + <x>15</x> + <y>245</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm_DIS</name> + <text>- Alarms latching disabled</text> + <x>15</x> + <y>246</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.alarms</name> + <x>630</x> + <y>10</y> + <height>341</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.border</name> + <width>300</width> + <height>330</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>288</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALARMS</name> + <text>ALARMS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackgroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Group alarm</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_INTERLOCKS</name> + <text>INTERLOCKS</text> + <x>5</x> + <y>218</y> + <width>290</width> + <height>25</height> + <font> + <font family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackgroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Group interlock</tooltip> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_IO_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:IO_Error</pv_name> + <x>25</x> + <y>49</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_IO_Error</name> + <text>I/O Error</text> + <x>60</x> + <y>49</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Module_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Input_Module_Error</pv_name> + <x>25</x> + <y>80</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Module error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Module_Error</name> + <text>Siemens Input Module Error</text> + <x>59</x> + <y>80</y> + <width>188</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ILOCK_START</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:HeatInterlock</pv_name> + <x>25</x> + <y>267</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>Start interlock</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ILOCK_START</name> + <text>Heater Interlock</text> + <x>60</x> + <y>265</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Module_Error_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Output_Module_Error</pv_name> + <x>25</x> + <y>113</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Module error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Module_Error_1</name> + <text>Siemens Output Module Error</text> + <x>59</x> + <y>113</y> + <width>189</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>buttons.bar</name> + <x>8</x> + <y>361</y> + <width>920</width> + <height>80</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_AUTO</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Auto</pv_name> + <text>AUTO</text> + <x>12</x> + <y>402</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableAutoBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>AUTO operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_MANUAL</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Manual</pv_name> + <text>MANUAL</text> + <x>217</x> + <y>403</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableManualBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>MANUAL operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_MAN_ON</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_HeatingON</pv_name> + <text>OPEN</text> + <x>217</x> + <y>367</y> + <width>99</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)|| (pv2 == 1)|| (pv3 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0) && (pv2 == 0) && (pv3==0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Manual</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:HeatingON</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:HeatInterlock</pv_name> + </rule> + </rules> + <tooltip>Manual OPEN</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_MAN_OFF</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_HeatingOFF</pv_name> + <text>CLOSE</text> + <x>318</x> + <y>367</y> + <width>99</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 0) || (pv2 == 1) || (pv3 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 1) && (pv2 == 0) && (pv3 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Manual</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:HeatingON</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:HeatInterlock</pv_name> + </rule> + </rules> + <tooltip>Manual CLOSE</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Force</pv_name> + <text>FORCE</text> + <x>422</x> + <y>403</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableForcedBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>FORCE operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_ON</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_HeatingON</pv_name> + <text>OPEN</text> + <x>422</x> + <y>367</y> + <width>99</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1) || (pv3 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv2 == 0) && (pv3 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:HeatingON</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:HeatingON</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force OPEN</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_OFF</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_HeatingOFF</pv_name> + <text>CLOSE</text> + <x>523</x> + <y>367</y> + <width>99</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv2 == 0) || (pv3 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 1) && (pv3 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:HeatingON</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:HeatingON</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force CLOSE</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_ACK</name> + <actions> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_AckAlarm</pv_name> + <value>1</value> + <description>Acknowledge alarms</description> + </action> + </actions> + <text>Acknowledge Alarm</text> + <x>722</x> + <y>403</y> + <width>200</width> + <height>33</height> + <background_color> + <color name="ORANGE" red="254" green="194" blue="81"> + </color> + </background_color> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1) || (pv2 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0) && (pv2 == 1)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + <tooltip>Acknowledge alarms</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_UNLOCK</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceUnlock</pv_name> + <value>1</value> + <description>Write ForceUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <value>0</value> + <description>Write EnaForceUnlock</description> + </action> + </actions> + <text>FORCE UNLOCK</text> + <x>722</x> + <y>367</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 1)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 0)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force unlock device</tooltip> + </widget> + </children> + </tab> + <tab> + <name>Trend</name> + <children> + </children> + </tab> + </tabs> + <x>10</x> + <y>60</y> + <width>943</width> + <height>490</height> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Header Bar</name> + <width>963</width> + <height>50</height> + <line_width>0</line_width> + <line_color> + <color red="0" green="0" blue="255" alpha="0"> + </color> + </line_color> + <background_color> + <color name="PRIMARY-HEADER-BACKGROUND" red="151" green="188" blue="202"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HeaderPVName</name> + <text>${SecSub}:${Dis}-${Dev}-${Index}</text> + <x>20</x> + <width>715</width> + <height>50</height> + <font> + <font name="Header 1" family="Source Sans Pro" style="BOLD_ITALIC" size="36.0"> + </font> + </font> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Locked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>0</value> + <description>Write CMD_DEVUNLOCK</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock(99)</pv_name> + <value>1</value> + <description>Run Lock script</description> + </action> + </actions> + <text>LOCK</text> + <x>850</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + </rule> + </rules> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: generate unique Machine ID from the network adapters to use it for locking mechanism*/ + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); + +var Lock = pvs[0];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock*/ +var Cmd_DevLock = pvs[1];/*${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock*/ +var P_Faceplate_LockID = pvs[2];/*${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID*/ +var Inhibit_Lock = pvs[3];/*${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock*/ +var Faceplate_LockID = pvs[4];/*${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID*/ +var BlockIcon_LockID = pvs[5];/*${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID*/ +var EnaForceUnlock = pvs[6];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock*/ +var DevLocked = pvs[7];/*${SecSub}:${Dis}-${Dev}-${Index}:DevLocked*/ + + + +var PV1 = PVUtil.getLong(Faceplate_LockID); /*Faceplate_LockID*/ +var PV2 = PVUtil.getLong(BlockIcon_LockID); /*BlockIcon_LockID*/ + +//OnShow +if (PVUtil.getLong(DevLocked) == 1) { /*DevLocked*/ + + if (PV1.toString() == PV2.toString()){ /*FaceplateLockID != BlockIconeLockID*/ + + logger.info(" Owner"); + EnaForceUnlock.setValue(0); /*Write EnaForceUnlock*/ + + } else + { + logger.info(" Faceplate FaceplateLockID "+ PV1); + logger.info(" Faceplate BlockIconeLockID "+ PV2); + + logger.info(" Guest"); + EnaForceUnlock.setValue(1); /*Write EnaForceUnlock*/ + } + + + +} +// OnClick +if (PVUtil.getLong(Lock) != 99) { /*loc://Lock, check if the script was triggered because of a button press or initilization*/ + if (PVUtil.getLong(Inhibit_Lock) == 0) { /*Inhibit_lock, check if locking is inhibited*/ + + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + UniqueText = UniqueText + intf.getName() + intf.getDisplayName(); + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + UniqueText = UniqueText + enumIpAddr.nextElement().toString(); + } + } + + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText); + if (crc >=2147483647){ crc = crc - 2147483647;} + + logger.info(" Faceplate machine ID: "+crc); + P_Faceplate_LockID.setValue(crc); /*Write P_Faceplate_LockID*/ + Cmd_DevLock.setValue(1); /*Write Lock*/ + + } /*Lock inhibit*/ +} /*onshow*/ + +]]></text> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID</pv_name> + <pv_name trigger="false">loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + </script> + </scripts> + <tooltip>Lock this device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Unlocked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>1</value> + <description>Write CMD_DevUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <value>0</value> + <description>Write CMD_DevLock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + </actions> + <text>UNLOCK</text> + <x>755</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false) || (pv1 == true) || (pv2 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true) && (pv1 == false) && (pv2 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Unlock this device</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Heaters/EH_HeaterSupply_Tend.plt b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Heaters/EH_HeaterSupply_Tend.plt new file mode 100644 index 0000000000000000000000000000000000000000..f523d7d32beeba8b0179c59ade933287003d880c --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Heaters/EH_HeaterSupply_Tend.plt @@ -0,0 +1,202 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<databrowser> + <title></title> + <save_changes>true</save_changes> + <show_legend>false</show_legend> + <show_toolbar>true</show_toolbar> + <grid>false</grid> + <scroll>true</scroll> + <update_period>3.0</update_period> + <scroll_step>5</scroll_step> + <start>-10 minutes 0.0 seconds</start> + <end>now</end> + <archive_rescale>NONE</archive_rescale> + <foreground> + <red>229</red> + <green>229</green> + <blue>229</blue> + </foreground> + <background> + <red>77</red> + <green>77</green> + <blue>77</blue> + </background> + <title_font>Cantarell|16|1</title_font> + <label_font>Cantarell|11|1</label_font> + <scale_font>Cantarell|10|0</scale_font> + <legend_font>Cantarell|10|0</legend_font> + <axes> + <axis> + <visible>true</visible> + <name>Value Axis</name> + <use_axis_name>true</use_axis_name> + <use_trace_names>true</use_trace_names> + <right>false</right> + <color> + <red>255</red> + <green>165</green> + <blue>0</blue> + </color> + <min>0.0</min> + <max>25.0</max> + <grid>true</grid> + <autoscale>true</autoscale> + <log_scale>false</log_scale> + </axis> + <axis> + <visible>true</visible> + <name>Value 1</name> + <use_axis_name>false</use_axis_name> + <use_trace_names>true</use_trace_names> + <right>false</right> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <min>0.0</min> + <max>10.0</max> + <grid>false</grid> + <autoscale>true</autoscale> + <log_scale>false</log_scale> + </axis> + <axis> + <visible>true</visible> + <name>Value 2</name> + <use_axis_name>false</use_axis_name> + <use_trace_names>true</use_trace_names> + <right>false</right> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <min>0.0</min> + <max>10.0</max> + <grid>false</grid> + <autoscale>true</autoscale> + <log_scale>false</log_scale> + </axis> + <axis> + <visible>true</visible> + <name>Value 3</name> + <use_axis_name>false</use_axis_name> + <use_trace_names>true</use_trace_names> + <right>false</right> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <min>8.9</min> + <max>30.900000000000002</max> + <grid>false</grid> + <autoscale>true</autoscale> + <log_scale>false</log_scale> + </axis> + </axes> + <annotations> + </annotations> + <pvlist> + <pv> + <display_name>${SecSub}:${Dis}-PSU-${Index}:PwrR</display_name> + <visible>true</visible> + <name>${SecSub}:${Dis}-PSU-${Index}:PwrR</name> + <axis>0</axis> + <color> + <red>255</red> + <green>0</green> + <blue>0</blue> + </color> + <trace_type>AREA</trace_type> + <linewidth>3</linewidth> + <line_style>SOLID</line_style> + <point_type>NONE</point_type> + <point_size>2</point_size> + <waveform_index>0</waveform_index> + <period>0.0</period> + <ring_size>5000</ring_size> + <request>RAW</request> + <archive> + <name>ESS Archiver</name> + <url>pbraw://archiver-01.tn.esss.lu.se:17668/retrieval</url> + <key>1</key> + </archive> + </pv> + <pv> + <display_name>${SecSub}:${Dis}-PSU-${Index}:VolR</display_name> + <visible>true</visible> + <name>${SecSub}:${Dis}-PSU-${Index}:VolR</name> + <axis>1</axis> + <color> + <red>0</red> + <green>255</green> + <blue>0</blue> + </color> + <trace_type>AREA</trace_type> + <linewidth>2</linewidth> + <line_style>SOLID</line_style> + <point_type>NONE</point_type> + <point_size>2</point_size> + <waveform_index>0</waveform_index> + <period>0.0</period> + <ring_size>5000</ring_size> + <request>RAW</request> + <archive> + <name>ESS Archiver</name> + <url>pbraw://archiver-01.tn.esss.lu.se:17668/retrieval</url> + <key>1</key> + </archive> + </pv> + <pv> + <display_name>${SecSub}:${Dis}-PSU-${Index}:CurR</display_name> + <visible>true</visible> + <name>${SecSub}:${Dis}-PSU-${Index}:CurR</name> + <axis>2</axis> + <color> + <red>0</red> + <green>0</green> + <blue>255</blue> + </color> + <trace_type>AREA</trace_type> + <linewidth>2</linewidth> + <line_style>SOLID</line_style> + <point_type>NONE</point_type> + <point_size>2</point_size> + <waveform_index>0</waveform_index> + <period>0.0</period> + <ring_size>5000</ring_size> + <request>RAW</request> + <archive> + <name>ESS Archiver</name> + <url>pbraw://archiver-01.tn.esss.lu.se:17668/retrieval</url> + <key>1</key> + </archive> + </pv> + <pv> + <display_name>${SecSub}:${Dis}-${Dev}-${Index}:HeaterSP</display_name> + <visible>true</visible> + <name>${SecSub}:${Dis}-${Dev}-${Index}:HeaterSP</name> + <axis>3</axis> + <color> + <red>255</red> + <green>127</green> + <blue>0</blue> + </color> + <trace_type>AREA</trace_type> + <linewidth>2</linewidth> + <line_style>SOLID</line_style> + <point_type>NONE</point_type> + <point_size>2</point_size> + <waveform_index>0</waveform_index> + <period>0.0</period> + <ring_size>5000</ring_size> + <request>RAW</request> + <archive> + <name>ESS Archiver</name> + <url>pbraw://archiver-01.tn.esss.lu.se:17668/retrieval</url> + <key>1</key> + </archive> + </pv> + </pvlist> +</databrowser> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/PIDControls/PID_Control_BlockIcon.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/PIDControls/PID_Control_BlockIcon.bob new file mode 100644 index 0000000000000000000000000000000000000000..aa1b744ef862566060a95400aecbd8a1bb59fad4 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/PIDControls/PID_Control_BlockIcon.bob @@ -0,0 +1,284 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>PID_Control PID Block Icon</name> + <width>230</width> + <height>90</height> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIcon</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:PID_Color</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/PID/icon-pidcontroller-1.png</symbol> + </symbols> + <x>22</x> + <y>15</y> + <width>68</width> + <height>71</height> + <actions execute_as_one="true"> + </actions> + <tooltip>Open faceplate</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Interlock</name> + <symbols> + <symbol>../../symbols/custom_v02/interlock_overridden_disabled_cms@32.png</symbol> + </symbols> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Interlock event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>71</x> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text>A</text> + <y>31</y> + <width>30</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="29.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>A</value> + </exp> + <exp bool_exp="pv1 == true"> + <value>M</value> + </exp> + <exp bool_exp="pv2 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_Value_MV</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:LMN</pv_name> + <x>94</x> + <y>32</y> + <width>96</width> + <font> + <font family="Source Sans Pro" style="REGULAR" size="20.0"> + </font> + </font> + <background_color> + <color red="230" green="235" blue="232" alpha="0"> + </color> + </background_color> + <precision>1</precision> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Actual position</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </border_color> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_Value_SP</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MAN_SP</pv_name> + <x>94</x> + <y>52</y> + <width>97</width> + <font> + <font family="Source Sans Pro" style="REGULAR" size="20.0"> + </font> + </font> + <background_color> + <color red="230" green="235" blue="232" alpha="0"> + </color> + </background_color> + <precision>1</precision> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </border_color> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>103</x> + <width>120</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="24.0"> + </font> + </font> + <background_color> + <color red="0" green="0" blue="0" alpha="0"> + </color> + </background_color> + <transparent>false</transparent> + <tooltip>Device name</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "PID_Control_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>230</width> + <height>90</height> + <background_color> + <color red="236" green="236" blue="236" alpha="0"> + </color> + </background_color> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/PIDControls/PID_Control_BlockIcon_AutoConf.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/PIDControls/PID_Control_BlockIcon_AutoConf.bob new file mode 100644 index 0000000000000000000000000000000000000000..066afbe94d66ee32178ce35cf4ff037d008bada7 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/PIDControls/PID_Control_BlockIcon_AutoConf.bob @@ -0,0 +1,289 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>PID_Control PID Block Icon</name> + <width use_class="true">1200</width> + <height use_class="true">900</height> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIcon</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:PID_Color</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/PID/icon-pidcontroller-1.png</symbol> + </symbols> + <x>22</x> + <y>15</y> + <width>68</width> + <height>71</height> + <actions execute_as_one="true"> + </actions> + <tooltip>Open faceplate</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Interlock</name> + <symbols> + <symbol>../../symbols/custom_v02/interlock_overridden_disabled_cms@32.png</symbol> + </symbols> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Interlock event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>71</x> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text>A</text> + <y>31</y> + <width>30</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="29.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>A</value> + </exp> + <exp bool_exp="pv1 == true"> + <value>M</value> + </exp> + <exp bool_exp="pv2 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_Value_MV</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:LMN</pv_name> + <x>94</x> + <y>32</y> + <width>96</width> + <font> + <font family="Source Sans Pro" style="REGULAR" size="20.0"> + </font> + </font> + <background_color> + <color red="230" green="235" blue="232" alpha="0"> + </color> + </background_color> + <precision>1</precision> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Actual position</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </border_color> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_Value_SP</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MAN_SP</pv_name> + <x>94</x> + <y>52</y> + <width>97</width> + <font> + <font family="Source Sans Pro" style="REGULAR" size="20.0"> + </font> + </font> + <background_color> + <color red="230" green="235" blue="232" alpha="0"> + </color> + </background_color> + <precision>1</precision> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </border_color> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>103</x> + <width>120</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="24.0"> + </font> + </font> + <background_color> + <color red="0" green="0" blue="0" alpha="0"> + </color> + </background_color> + <transparent>false</transparent> + <tooltip>Device name</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${AmConfig}:P_Controlled_Devie_Name</pv_name> + <value>${ControlledDevice}</value> + <description>Write PV</description> + </action> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "PID_Control_Faceplate_AutoConf.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>230</width> + <height>90</height> + <background_color> + <color red="236" green="236" blue="236" alpha="0"> + </color> + </background_color> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/PIDControls/PID_Control_Faceplate.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/PIDControls/PID_Control_Faceplate.bob new file mode 100644 index 0000000000000000000000000000000000000000..f0e6213c2a6388d36ad5d33c6de557e2eeac8688 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/PIDControls/PID_Control_Faceplate.bob @@ -0,0 +1,2715 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>PID Control Faceplate</name> + <width>1000</width> + <height>840</height> + <widget type="tabs" version="2.0.0"> + <name>Tabs</name> + <tabs> + <tab> + <name>Status</name> + <children> + <widget type="group" version="2.0.0"> + <name>group.status</name> + <x>10</x> + <y>10</y> + <height>300</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.border</name> + <width>300</width> + <height>300</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>260</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STATUS</name> + <text>STATUS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>MET_MeasValue</name> + <pv_name>${ProcessValue}</pv_name> + <x>20</x> + <y>71</y> + <width>208</width> + <height>56</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="25.0"> + </font> + </font> + <background_color> + <color red="255" green="254" blue="253"> + </color> + </background_color> + <transparent>true</transparent> + <precision>2</precision> + <tooltip>Mesurement value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>MET_ProcessSetpoint</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:MAN_SP</pv_name> + <x>21</x> + <y>141</y> + <width>270</width> + <height>46</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="25.0"> + </font> + </font> + <background_color> + <color red="255" green="254" blue="253"> + </color> + </background_color> + <transparent>true</transparent> + <precision>2</precision> + <show_units>false</show_units> + <tooltip>Process setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_Gain_1</name> + <text>Measure Value:</text> + <x>18</x> + <y>44</y> + <width>129</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_Gain_2</name> + <text>Setpoint:</text> + <x>19</x> + <y>113</y> + <width>129</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>MET_ValvePos_2</name> + <text>${ProcessValueEGU}</text> + <x>130</x> + <y>140</y> + <width>120</width> + <height>56</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="25.0"> + </font> + </font> + <background_color> + <color red="255" green="254" blue="253"> + </color> + </background_color> + <tooltip>Valve position in percent</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>MET_MeasValue_1</name> + <text>${MeasureValue}</text> + <x>153</x> + <y>49</y> + <width>144</width> + <height>30</height> + <background_color> + <color red="255" green="254" blue="253"> + </color> + </background_color> + <tooltip>Mesurement value</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_Gain_3</name> + <text>Manipulated Value:</text> + <x>18</x> + <y>191</y> + <width>129</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>MET_ProcessSetpoint_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LMN</pv_name> + <x>18</x> + <y>217</y> + <width>270</width> + <height>46</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="25.0"> + </font> + </font> + <background_color> + <color red="255" green="254" blue="253"> + </color> + </background_color> + <transparent>true</transparent> + <precision>2</precision> + <show_units>false</show_units> + <tooltip>Process setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.op.modes</name> + <x>320</x> + <y>10</y> + <height>300</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.border</name> + <width>300</width> + <height>300</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>260</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OP_MODES</name> + <text>OP MODES</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Auto</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Auto</pv_name> + <x>75</x> + <y>50</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode Auto</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_AUTO</name> + <text>AUTO</text> + <x>110</x> + <y>50</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Manual</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Manual</pv_name> + <x>75</x> + <y>85</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode Manual</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_MANUAL</name> + <text>MANUAL</text> + <x>110</x> + <y>85</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Forced</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <x>75</x> + <y>120</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode Forced</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_FORCED</name> + <text>FORCED</text> + <x>106</x> + <y>120</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_MESSAGES</name> + <text>MESSAGES</text> + <x>5</x> + <y>160</y> + <width>290</width> + <height>25</height> + <font> + <font family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitMan</name> + <text>- Manual mode inhibited</text> + <x>15</x> + <y>190</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Manual</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitForce</name> + <text>- Force mode inhibited</text> + <x>15</x> + <y>210</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Force</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm_DIS</name> + <text>- Alarms latching disabled</text> + <x>15</x> + <y>230</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm_ENA</name> + <text>- Alarms latching enabled</text> + <x>15</x> + <y>230</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitForce_1</name> + <text>- Sandby value ACTIVE!!!</text> + <x>15</x> + <y>252</y> + <width>270</width> + <foreground_color> + <color name="MACHINE-PROTECTION-BORDER" red="120" green="59" blue="85"> + </color> + </foreground_color> + <background_color> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </background_color> + <transparent>false</transparent> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_SS_State</pv_name> + </rule> + </rules> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.alarms</name> + <x>630</x> + <y>10</y> + <height>300</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.border</name> + <width>300</width> + <height>300</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>260</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_IO_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:IO_Error</pv_name> + <x>50</x> + <y>109</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_IO_Error</name> + <text>I/O Error</text> + <x>85</x> + <y>109</y> + <width>88</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Input_Module_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Input_Module_Error</pv_name> + <x>50</x> + <y>139</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Input_Module_Error</name> + <text>Input Module Error</text> + <x>85</x> + <y>139</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ILOCK_START</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupInterlock</pv_name> + <x>50</x> + <y>250</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>Start interlock</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ILOCK_START</name> + <text>Move Interlock</text> + <x>85</x> + <y>250</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALARMS</name> + <text>ALARMS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackgroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Group alarm</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_INTERLOCKS</name> + <text>INTERLOCKS</text> + <x>5</x> + <y>207</y> + <width>290</width> + <height>25</height> + <font> + <font family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackgroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Group interlock</tooltip> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Output_Module_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Output_Module_Error</pv_name> + <x>50</x> + <y>172</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Output_Module_Error</name> + <text>Output Module Error</text> + <x>85</x> + <y>171</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_LMN_HLIM</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LMN_HLIM</pv_name> + <x>51</x> + <y>49</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_LMN_LLIM</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LMN_LLIM</pv_name> + <x>51</x> + <y>79</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_LMN_HLIM</name> + <text>LMN High Limit</text> + <x>86</x> + <y>49</y> + <width>88</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_LMN_LLIM</name> + <text>LMN Low Limit</text> + <x>86</x> + <y>79</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.ramping</name> + <x>320</x> + <y>320</y> + <height>263</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.ramping.border</name> + <width>300</width> + <height>255</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.ramping.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>213</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Ramping</name> + <text>PID STATUS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_P_Action</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LMN_P</pv_name> + <x>173</x> + <y>51</y> + <width>110</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Actual calculated P-Action</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_P_Action_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LMN_I</pv_name> + <x>173</x> + <y>91</y> + <width>110</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Actual calculated I-Action</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_P_Action</name> + <text>Manipulated P-Action:</text> + <x>18</x> + <y>51</y> + <width>150</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_I_Action</name> + <text>Manipulated I-Action:</text> + <x>18</x> + <y>91</y> + <width>150</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_D_Action</name> + <text>Manipulated D-Action:</text> + <x>18</x> + <y>131</y> + <width>150</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_D_Action</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LMN_D</pv_name> + <x>173</x> + <y>131</y> + <width>110</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Actual calculated D-Action</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_DIF</name> + <text>Actual PID error:</text> + <x>8</x> + <y>171</y> + <width>160</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_PID_DIF</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:PID_DIF</pv_name> + <x>173</x> + <y>171</y> + <width>110</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Actual calculated PID error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_PID_Cycle</name> + <text>Actual PID cycle:</text> + <x>7</x> + <y>211</y> + <width>160</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_PID_Cycle</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:PID_Cycle</pv_name> + <x>172</x> + <y>211</y> + <width>110</width> + <height>30</height> + <vertical_alignment>1</vertical_alignment> + <tooltip>Actual PID cycle time</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.settings</name> + <x>630</x> + <y>320</y> + <height>265</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.settings.border</name> + <width>300</width> + <height>256</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Settings</name> + <text>SETTINGS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.settings.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>214</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_Gain</name> + <text>PID Gain:</text> + <x>29</x> + <y>52</y> + <width>129</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_Gain</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Gain</pv_name> + <x>158</x> + <y>52</y> + <width>128</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Input] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_Integration</name> + <text>PID Integration time:</text> + <x>18</x> + <y>91</y> + <width>140</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_Integration</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_TI</pv_name> + <x>157</x> + <y>91</y> + <width>128</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Input] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_Integration_1</name> + <text>PID Derivative time:</text> + <x>18</x> + <y>131</y> + <width>140</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_Derivative</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_TD</pv_name> + <x>157</x> + <y>131</y> + <width>128</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Input] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_DeadBand</name> + <text>PID Deadband:</text> + <x>18</x> + <y>171</y> + <width>140</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_DeadBand</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_DEADB</pv_name> + <x>157</x> + <y>171</y> + <width>128</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Input] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_LMN_HLIM_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_LMN_HLIM</pv_name> + <x>200</x> + <y>211</y> + <width>85</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>PID output MAX Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_HLIM_1</name> + <text>LMN Limits:</text> + <x>17</x> + <y>209</y> + <width>87</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_LMN_LLIM_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_LMN_LLIM</pv_name> + <x>103</x> + <y>211</y> + <width>82</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>PID output MIN Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>buttons.bar</name> + <x>10</x> + <y>590</y> + <width>920</width> + <height>80</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_AUTO</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Auto</pv_name> + <text>AUTO</text> + <x>15</x> + <y>631</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableAutoBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>AUTO operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_MANUAL</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Manual</pv_name> + <text>MANUAL</text> + <x>220</x> + <y>631</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableManualBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>MANUAL operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Force</pv_name> + <text>FORCE</text> + <x>425</x> + <y>631</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableForcedBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>FORCE operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_APPLY</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceValInp</pv_name> + <text>APPLY IN</text> + <x>425</x> + <y>595</y> + <width>99</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_APPLY_1</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceValOut</pv_name> + <text>APPLY OUT</text> + <x>526</x> + <y>595</y> + <width>99</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_ACK</name> + <actions> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_AckAlarm</pv_name> + <value>1</value> + <description>Acknowledge alarms</description> + </action> + </actions> + <text>Acknowledge Alarm</text> + <x>725</x> + <y>631</y> + <width>200</width> + <height>33</height> + <background_color> + <color name="ORANGE" red="254" green="194" blue="81"> + </color> + </background_color> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1) || (pv2 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0) && (pv2 == 1)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + <tooltip>Acknowledge alarms</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_UNLOCK</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceUnlock</pv_name> + <value>1</value> + <description>Write ForceUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <value>0</value> + <description>Write EnaForceUnlock</description> + </action> + </actions> + <text>FORCE UNLOCK</text> + <x>725</x> + <y>595</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 1)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 0)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force unlock device</tooltip> + </widget> + <widget type="group" version="2.0.0"> + <name>group.modify</name> + <x>10</x> + <y>320</y> + <height>263</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.modify.border</name> + <width>300</width> + <height>255</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.modify.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>100</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <rules> + <rule name="Color" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 1"> + <value> + <color name="RED-BACKGROUND" red="225" green="192" blue="188"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + </rule> + </rules> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_HeaterMV</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Manipulated</pv_name> + <x>215</x> + <y>90</y> + <width>70</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Output] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_ForceHeaterMV</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Manipulated</pv_name> + <x>120</x> + <y>90</y> + <width>85</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Force heater output</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_FrcMV</name> + <text>Force Output:</text> + <x>15</x> + <y>90</y> + <width>96</width> + <height>26</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY VALUE] to apply</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_HeaterPow</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_ForcePosition</pv_name> + <x>215</x> + <y>50</y> + <width>70</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Input] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_ForceHeaterPow</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_ForcePosition</pv_name> + <x>120</x> + <y>50</y> + <width>85</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Force heater power</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_FrcActPos</name> + <text>Force Input:</text> + <x>15</x> + <y>50</y> + <width>96</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Modify</name> + <text>MODIFY/FORCE</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Text" prop_id="text" out_exp="false"> + <exp bool_exp="(pv0 == 1)"> + <value>MODIFY/FORCE</value> + </exp> + <exp bool_exp="(pv1 == 1)"> + <value>MODIFY</value> + </exp> + <exp bool_exp="(pv2 == 1)"> + <value>FORCE</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Auto</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Manual</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + </rule> + </rules> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.modify.background_1</name> + <x>5</x> + <y>143</y> + <width>290</width> + <height>104</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_StepValue</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Step</pv_name> + <x>194</x> + <y>206</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback step value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_StepValue</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Step</pv_name> + <x>95</x> + <y>206</y> + <width>92</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0==0"> + <value>true</value> + </exp> + <exp bool_exp="pv0==1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Step value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <limits_from_pv>false</limits_from_pv> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_StepValue</name> + <text>Step Value:</text> + <x>6</x> + <y>203</y> + <width>101</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_Setpoint</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Setpoint</pv_name> + <x>194</x> + <y>153</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback modified setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_ForcePumpSP</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Setpoint</pv_name> + <x>76</x> + <y>153</y> + <width>111</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="IncrementRule" prop_id="increment" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Step</pv_name> + </rule> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0==0"> + <value>true</value> + </exp> + <exp bool_exp="pv0==1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Modify Setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <maximum>1.0E7</maximum> + <limits_from_pv>false</limits_from_pv> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_FrcSetpoint</name> + <text>Setpoint:</text> + <x>7</x> + <y>153</y> + <width>71</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="polyline" version="2.0.0"> + <name>Polyline</name> + <x>133</x> + <y>184</y> + <width>41</width> + <line_color> + <color name="WHITE" red="255" green="255" blue="255"> + </color> + </line_color> + <points> + <point x="0.0" y="20.0"> + </point> + <point x="0.0" y="10.0"> + </point> + <point x="40.32786885245899" y="10.0"> + </point> + <point x="40.32786885245899" y="0.0"> + </point> + </points> + </widget> + </widget> + </children> + </tab> + <tab> + <name>Trend</name> + <children> + <widget type="databrowser" version="2.0.0"> + <name>DataBrowser</name> + <width>940</width> + <height>721</height> + </widget> + </children> + </tab> + <tab> + <name>Settings</name> + <children> + <widget type="group" version="2.0.0"> + <name>group.settings_2</name> + <x>13</x> + <y>16</y> + <width>415</width> + <height>655</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.settings.border_3</name> + <width>415</width> + <height>645</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Settings_3</name> + <text>SETTINGS</text> + <width>415</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.settings.background_3</name> + <x>6</x> + <y>35</y> + <width>401</width> + <height>603</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_Gain_4</name> + <text>PID Gain:</text> + <x>32</x> + <y>135</y> + <width>129</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_Gain_4</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Gain</pv_name> + <x>295</x> + <y>138</y> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Input] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_Integration_7</name> + <text>PID Integration time:</text> + <x>21</x> + <y>174</y> + <width>140</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_Integration_4</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_TI</pv_name> + <x>294</x> + <y>177</y> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Input] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_Integration_8</name> + <text>PID Derivative time:</text> + <x>21</x> + <y>214</y> + <width>140</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_Derivative_4</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_TD</pv_name> + <x>294</x> + <y>217</y> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Input] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_DeadBand_3</name> + <text>PID Deadband:</text> + <x>21</x> + <y>254</y> + <width>140</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_DeadBand_3</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_DEADB</pv_name> + <x>294</x> + <y>257</y> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Input] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_P_PID_Gain</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Gain</pv_name> + <x>174</x> + <y>138</y> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnablePIDConf</pv_name> + </rule> + </rules> + <tooltip>Force heater power</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_P_PID_TI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_TI</pv_name> + <x>174</x> + <y>178</y> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnablePIDConf</pv_name> + </rule> + </rules> + <tooltip>Force heater power</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_P_PID_TD</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_TD</pv_name> + <x>174</x> + <y>218</y> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnablePIDConf</pv_name> + </rule> + </rules> + <tooltip>Force heater power</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_P_PID_DeadBand</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_DEADB</pv_name> + <x>174</x> + <y>258</y> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnablePIDConf</pv_name> + </rule> + </rules> + <tooltip>Force heater power</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_HLIM</name> + <text>LMN High Limit:</text> + <x>21</x> + <y>308</y> + <width>140</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_P_LMN_HLIM</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_LMN_HLIM</pv_name> + <x>174</x> + <y>312</y> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnablePIDConf</pv_name> + </rule> + </rules> + <tooltip>Force heater power</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <limits_from_pv>false</limits_from_pv> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_LMN_HLIM</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_LMN_HLIM</pv_name> + <x>294</x> + <y>311</y> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Input] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_LLIM</name> + <text>LMN Low Limit:</text> + <x>20</x> + <y>348</y> + <width>140</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_P_LMN_LLIM</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_LMN_LLIM</pv_name> + <x>173</x> + <y>352</y> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnablePIDConf</pv_name> + </rule> + </rules> + <tooltip>Force heater power</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <limits_from_pv>false</limits_from_pv> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_LMN_LLIM</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_LMN_LLIM</pv_name> + <x>293</x> + <y>351</y> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Input] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_P_Action_ON</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_P_ON</pv_name> + <text>ON</text> + <x>171</x> + <y>407</y> + <width>102</width> + <height>33</height> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnablePIDConf</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_P_ActionState</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_P_Action_ON_1</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_P_OFF</pv_name> + <text>OFF</text> + <x>290</x> + <y>408</y> + <width>102</width> + <height>33</height> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) ||(pv1 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 1)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnablePIDConf</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_P_ActionState</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_P_Action</name> + <text>Turn P-Action:</text> + <x>18</x> + <y>408</y> + <width>140</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_I_Action</name> + <text>Turn I-Action:</text> + <x>18</x> + <y>449</y> + <width>140</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_I_Action_ON</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_I_ON</pv_name> + <text>ON</text> + <x>171</x> + <y>448</y> + <width>102</width> + <height>33</height> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) ||(pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnablePIDConf</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_I_ActionState</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_I_Action_ON</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_I_OFF</pv_name> + <text>OFF</text> + <x>290</x> + <y>449</y> + <width>102</width> + <height>33</height> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) ||(pv1 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 1)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnablePIDConf</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_I_ActionState</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_D_Action</name> + <text>Turn D-Action:</text> + <x>18</x> + <y>489</y> + <width>140</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_D_Action_ON</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_D_ON</pv_name> + <text>ON</text> + <x>171</x> + <y>488</y> + <width>102</width> + <height>33</height> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) ||(pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnablePIDConf</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_D_ActionState</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_D_Action_ON</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_D_OFF</pv_name> + <text>OFF</text> + <x>290</x> + <y>489</y> + <width>102</width> + <height>33</height> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) ||(pv1 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 1)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnablePIDConf</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_D_ActionState</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_Config</name> + <text>PID Configuration:</text> + <x>20</x> + <y>67</y> + <width>140</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_P_Action_ON_6</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_EnablePID_Conf</pv_name> + <text>ON</text> + <x>173</x> + <y>66</y> + <width>102</width> + <height>33</height> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_P_Action_ON_7</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DisablePID_Conf</pv_name> + <text>OFF</text> + <x>292</x> + <y>67</y> + <width>102</width> + <height>33</height> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="led" version="2.0.0"> + <name>LED</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_P_ActionState</pv_name> + <x>25</x> + <y>409</y> + <width>30</width> + <height>30</height> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_I_ActionState</pv_name> + <x>25</x> + <y>447</y> + <width>30</width> + <height>30</height> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_2</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_D_ActionState</pv_name> + <x>25</x> + <y>487</y> + <width>30</width> + <height>30</height> + </widget> + </widget> + </children> + </tab> + </tabs> + <x>10</x> + <y>60</y> + <width>943</width> + <height>720</height> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Header Bar</name> + <width>963</width> + <height>50</height> + <line_width>0</line_width> + <line_color> + <color red="0" green="0" blue="255" alpha="0"> + </color> + </line_color> + <background_color> + <color name="PRIMARY-HEADER-BACKGROUND" red="151" green="188" blue="202"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HeaderPVName</name> + <text>${SecSub}:${Dis}-${Dev}-${Index}</text> + <x>20</x> + <width>715</width> + <height>50</height> + <font> + <font name="Header 1" family="Source Sans Pro" style="BOLD_ITALIC" size="36.0"> + </font> + </font> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Unlocked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>1</value> + <description>Write CMD_DevUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <value>0</value> + <description>Write CMD_DevLock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + </actions> + <text>UNLOCK</text> + <x>755</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false) || (pv1 == true) || (pv2 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true) && (pv1 == false) && (pv2 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Unlock this device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Locked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>0</value> + <description>Write CMD_DEVUNLOCK</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock(99)</pv_name> + <value>1</value> + <description>Run Lock script</description> + </action> + </actions> + <text>LOCK</text> + <x>850</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + </rule> + </rules> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: generate unique Machine ID from the network adapters to use it for locking mechanism*/ + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); + +var Lock = pvs[0];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock*/ +var Cmd_DevLock = pvs[1];/*${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock*/ +var P_Faceplate_LockID = pvs[2];/*${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID*/ +var Inhibit_Lock = pvs[3];/*${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock*/ +var Faceplate_LockID = pvs[4];/*${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID*/ +var BlockIcon_LockID = pvs[5];/*${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID*/ +var EnaForceUnlock = pvs[6];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock*/ +var DevLocked = pvs[7];/*${SecSub}:${Dis}-${Dev}-${Index}:DevLocked*/ + + + +var PV1 = PVUtil.getLong(Faceplate_LockID); /*Faceplate_LockID*/ +var PV2 = PVUtil.getLong(BlockIcon_LockID); /*BlockIcon_LockID*/ + +//OnShow +if (PVUtil.getLong(DevLocked) == 1) { /*DevLocked*/ + + if (PV1.toString() == PV2.toString()){ /*FaceplateLockID != BlockIconeLockID*/ + + logger.info(" Owner"); + EnaForceUnlock.setValue(0); /*Write EnaForceUnlock*/ + + } else + { + logger.info(" Faceplate FaceplateLockID "+ PV1); + logger.info(" Faceplate BlockIconeLockID "+ PV2); + + logger.info(" Guest"); + EnaForceUnlock.setValue(1); /*Write EnaForceUnlock*/ + } + + + +} +// OnClick +if (PVUtil.getLong(Lock) != 99) { /*loc://Lock, check if the script was triggered because of a button press or initilization*/ + if (PVUtil.getLong(Inhibit_Lock) == 0) { /*Inhibit_lock, check if locking is inhibited*/ + + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + UniqueText = UniqueText + intf.getName() + intf.getDisplayName(); + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + UniqueText = UniqueText + enumIpAddr.nextElement().toString(); + } + } + + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText); + if (crc >=2147483647){ crc = crc - 2147483647;} + + logger.info(" Faceplate machine ID: "+crc); + P_Faceplate_LockID.setValue(crc); /*Write P_Faceplate_LockID*/ + Cmd_DevLock.setValue(1); /*Write Lock*/ + + } /*Lock inhibit*/ +} /*onshow*/ + +]]></text> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID</pv_name> + <pv_name trigger="false">loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + </script> + </scripts> + <tooltip>Lock this device</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/PIDControls/PID_Control_Faceplate_AutoConf.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/PIDControls/PID_Control_Faceplate_AutoConf.bob new file mode 100644 index 0000000000000000000000000000000000000000..5022a49e5d31732dcde82b4760228ac21b613007 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/PIDControls/PID_Control_Faceplate_AutoConf.bob @@ -0,0 +1,3263 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>PID Control Faceplate</name> + <width>1200</width> + <height>900</height> + <widget type="tabs" version="2.0.0"> + <name>Tabs</name> + <tabs> + <tab> + <name>Status</name> + <children> + <widget type="group" version="2.0.0"> + <name>group.status</name> + <x>10</x> + <y>10</y> + <height>300</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.border</name> + <width>300</width> + <height>300</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>260</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STATUS</name> + <text>STATUS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>MET_ValvePos</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Measured_Value_Msg</pv_name> + <x>20</x> + <y>71</y> + <width>258</width> + <height>56</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="25.0"> + </font> + </font> + <background_color> + <color red="255" green="254" blue="253"> + </color> + </background_color> + <transparent>true</transparent> + <precision>2</precision> + <tooltip>Process Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>MET_ValveSetpoint</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:MAN_SP</pv_name> + <x>21</x> + <y>141</y> + <width>270</width> + <height>46</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="25.0"> + </font> + </font> + <background_color> + <color red="255" green="254" blue="253"> + </color> + </background_color> + <transparent>true</transparent> + <precision>2</precision> + <show_units>false</show_units> + <tooltip>Setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_Gain_1</name> + <text>Process Value:</text> + <x>18</x> + <y>44</y> + <width>129</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_Gain_2</name> + <text>Setpoint:</text> + <x>19</x> + <y>113</y> + <width>129</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.op.modes</name> + <x>320</x> + <y>10</y> + <height>300</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.border</name> + <width>300</width> + <height>300</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>260</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OP_MODES</name> + <text>OP MODES</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Auto</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Auto</pv_name> + <x>75</x> + <y>50</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode Auto</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_AUTO</name> + <text>AUTO</text> + <x>110</x> + <y>50</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Manual</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Manual</pv_name> + <x>75</x> + <y>85</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode Manual</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_MANUAL</name> + <text>MANUAL</text> + <x>110</x> + <y>85</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Forced</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <x>75</x> + <y>120</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode Forced</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_FORCED</name> + <text>FORCED</text> + <x>106</x> + <y>120</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_MESSAGES</name> + <text>MESSAGES</text> + <x>5</x> + <y>160</y> + <width>290</width> + <height>25</height> + <font> + <font family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitMan</name> + <text>- Manual mode inhibited</text> + <x>15</x> + <y>190</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Manual</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitForce</name> + <text>- Force mode inhibited</text> + <x>15</x> + <y>210</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Force</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm_DIS</name> + <text>- Alarms latching disabled</text> + <x>15</x> + <y>230</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm_ENA</name> + <text>- Alarms latching enabled</text> + <x>15</x> + <y>230</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitForce_1</name> + <text>- Sandby value ACTIVE!!!</text> + <x>15</x> + <y>252</y> + <width>270</width> + <foreground_color> + <color name="MACHINE-PROTECTION-BORDER" red="120" green="59" blue="85"> + </color> + </foreground_color> + <background_color> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </background_color> + <transparent>false</transparent> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_SS_State</pv_name> + </rule> + </rules> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.alarms</name> + <x>630</x> + <y>10</y> + <height>300</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.border</name> + <width>300</width> + <height>300</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>260</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_IO_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:IO_Error</pv_name> + <x>50</x> + <y>109</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_IO_Error</name> + <text>I/O Error</text> + <x>85</x> + <y>109</y> + <width>88</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Input_Module_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Input_Module_Error</pv_name> + <x>50</x> + <y>139</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Input_Module_Error</name> + <text>Input Module Error</text> + <x>85</x> + <y>139</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ILOCK_START</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupInterlock</pv_name> + <x>50</x> + <y>250</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>Start interlock</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ILOCK_START</name> + <text>Move Interlock</text> + <x>85</x> + <y>250</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALARMS</name> + <text>ALARMS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackgroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Group alarm</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_INTERLOCKS</name> + <text>INTERLOCKS</text> + <x>5</x> + <y>207</y> + <width>290</width> + <height>25</height> + <font> + <font family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackgroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Group interlock</tooltip> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Output_Module_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Output_Module_Error</pv_name> + <x>50</x> + <y>172</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Output_Module_Error</name> + <text>Output Module Error</text> + <x>85</x> + <y>171</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_LMN_HLIM</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LMN_HLIM</pv_name> + <x>51</x> + <y>49</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_LMN_LLIM</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LMN_LLIM</pv_name> + <x>51</x> + <y>79</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_LMN_HLIM</name> + <text>LMN High Limit</text> + <x>86</x> + <y>49</y> + <width>88</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_LMN_LLIM</name> + <text>LMN Low Limit</text> + <x>86</x> + <y>79</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.ramping</name> + <x>320</x> + <y>320</y> + <height>263</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.ramping.border</name> + <width>300</width> + <height>255</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.ramping.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>213</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Ramping</name> + <text>PID STATUS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_P_Action</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LMN_P</pv_name> + <x>173</x> + <y>51</y> + <width>110</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Actual calculated P-Action</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_P_Action_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LMN_I</pv_name> + <x>173</x> + <y>91</y> + <width>110</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Actual calculated I-Action</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_P_Action</name> + <text>Manipulated P-Action:</text> + <x>18</x> + <y>51</y> + <width>150</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_I_Action</name> + <text>Manipulated I-Action:</text> + <x>18</x> + <y>91</y> + <width>150</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_D_Action</name> + <text>Manipulated D-Action:</text> + <x>18</x> + <y>131</y> + <width>150</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_D_Action</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LMN_D</pv_name> + <x>173</x> + <y>131</y> + <width>110</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Actual calculated D-Action</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_DIF</name> + <text>Actual PID error:</text> + <x>8</x> + <y>171</y> + <width>160</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_PID_DIF</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:PID_DIF</pv_name> + <x>173</x> + <y>171</y> + <width>110</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Actual calculated PID error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_PID_Cycle</name> + <text>Actual PID cycle:</text> + <x>7</x> + <y>211</y> + <width>160</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_PID_Cycle</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:PID_Cycle</pv_name> + <x>172</x> + <y>211</y> + <width>110</width> + <height>30</height> + <vertical_alignment>1</vertical_alignment> + <tooltip>Actual PID cycle time</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.settings</name> + <x>630</x> + <y>320</y> + <height>265</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.settings.border</name> + <width>300</width> + <height>256</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Settings</name> + <text>SETTINGS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.settings.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>214</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_Gain</name> + <text>PID Gain:</text> + <x>29</x> + <y>52</y> + <width>129</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_Gain</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Gain</pv_name> + <x>158</x> + <y>52</y> + <width>128</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Input] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_Integration</name> + <text>PID Integration time:</text> + <x>18</x> + <y>91</y> + <width>140</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_Integration</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_TI</pv_name> + <x>157</x> + <y>91</y> + <width>128</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Input] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_Integration_1</name> + <text>PID Derivative time:</text> + <x>18</x> + <y>131</y> + <width>140</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_Derivative</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_TD</pv_name> + <x>157</x> + <y>131</y> + <width>128</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Input] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_DeadBand</name> + <text>PID Deadband:</text> + <x>18</x> + <y>171</y> + <width>140</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_DeadBand</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_DEADB</pv_name> + <x>157</x> + <y>171</y> + <width>128</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Input] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_LMN_HLIM_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_LMN_HLIM</pv_name> + <x>200</x> + <y>211</y> + <width>85</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>PID output MAX Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_HLIM_1</name> + <text>LMN Limits:</text> + <x>17</x> + <y>209</y> + <width>87</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_LMN_LLIM_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_LMN_LLIM</pv_name> + <x>103</x> + <y>211</y> + <width>82</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>PID output MIN Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>buttons.bar</name> + <x>10</x> + <y>590</y> + <width>920</width> + <height>80</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_AUTO</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Auto</pv_name> + <text>AUTO</text> + <x>15</x> + <y>631</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableAutoBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>AUTO operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_MANUAL</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Manual</pv_name> + <text>MANUAL</text> + <x>220</x> + <y>631</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableManualBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>MANUAL operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Force</pv_name> + <text>FORCE</text> + <x>425</x> + <y>631</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableForcedBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>FORCE operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_APPLY</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceValInp</pv_name> + <text>APPLY IN</text> + <x>425</x> + <y>595</y> + <width>99</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_APPLY_1</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceValOut</pv_name> + <text>APPLY OUT</text> + <x>526</x> + <y>595</y> + <width>99</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_ACK</name> + <actions> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_AckAlarm</pv_name> + <value>1</value> + <description>Acknowledge alarms</description> + </action> + </actions> + <text>Acknowledge Alarm</text> + <x>725</x> + <y>631</y> + <width>200</width> + <height>33</height> + <background_color> + <color name="ORANGE" red="254" green="194" blue="81"> + </color> + </background_color> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1) || (pv2 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0) && (pv2 == 1)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + <tooltip>Acknowledge alarms</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_UNLOCK</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceUnlock</pv_name> + <value>1</value> + <description>Write ForceUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <value>0</value> + <description>Write EnaForceUnlock</description> + </action> + </actions> + <text>FORCE UNLOCK</text> + <x>725</x> + <y>595</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 1)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 0)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force unlock device</tooltip> + </widget> + <widget type="group" version="2.0.0"> + <name>group.modify</name> + <x>10</x> + <y>320</y> + <height>263</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.modify.border</name> + <width>300</width> + <height>255</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.modify.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>100</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <rules> + <rule name="Color" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 1"> + <value> + <color name="RED-BACKGROUND" red="225" green="192" blue="188"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + </rule> + </rules> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_HeaterMV</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Manipulated</pv_name> + <x>215</x> + <y>90</y> + <width>70</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Output] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_ForceHeaterMV</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Manipulated</pv_name> + <x>120</x> + <y>90</y> + <width>85</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Force heater output</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_FrcMV</name> + <text>Force Output:</text> + <x>15</x> + <y>90</y> + <width>96</width> + <height>26</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY VALUE] to apply</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_HeaterPow</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_ForcePosition</pv_name> + <x>215</x> + <y>50</y> + <width>70</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Input] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_ForceHeaterPow</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_ForcePosition</pv_name> + <x>120</x> + <y>50</y> + <width>85</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Force heater power</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_FrcActPos</name> + <text>Force Input:</text> + <x>15</x> + <y>50</y> + <width>96</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Modify</name> + <text>MODIFY/FORCE</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Text" prop_id="text" out_exp="false"> + <exp bool_exp="(pv0 == 1)"> + <value>MODIFY/FORCE</value> + </exp> + <exp bool_exp="(pv1 == 1)"> + <value>MODIFY</value> + </exp> + <exp bool_exp="(pv2 == 1)"> + <value>FORCE</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Auto</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Manual</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + </rule> + </rules> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.modify.background_1</name> + <x>5</x> + <y>143</y> + <width>290</width> + <height>104</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_StepValue</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Step</pv_name> + <x>194</x> + <y>206</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback step value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_StepValue</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Step</pv_name> + <x>95</x> + <y>206</y> + <width>92</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0==0"> + <value>true</value> + </exp> + <exp bool_exp="pv0==1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Step value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <limits_from_pv>false</limits_from_pv> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_StepValue</name> + <text>Step Value:</text> + <x>6</x> + <y>203</y> + <width>101</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_Setpoint</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Setpoint</pv_name> + <x>194</x> + <y>153</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback modified setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_ForcePumpSP</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Setpoint</pv_name> + <x>76</x> + <y>153</y> + <width>111</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="IncrementRule" prop_id="increment" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Step</pv_name> + </rule> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0==0"> + <value>true</value> + </exp> + <exp bool_exp="pv0==1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Modify Setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <maximum>1.0E7</maximum> + <limits_from_pv>false</limits_from_pv> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_FrcSetpoint</name> + <text>Setpoint:</text> + <x>7</x> + <y>153</y> + <width>71</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="polyline" version="2.0.0"> + <name>Polyline</name> + <x>133</x> + <y>184</y> + <width>41</width> + <line_color> + <color name="WHITE" red="255" green="255" blue="255"> + </color> + </line_color> + <points> + <point x="0.0" y="20.0"> + </point> + <point x="0.0" y="10.0"> + </point> + <point x="40.32786885245899" y="10.0"> + </point> + <point x="40.32786885245899" y="0.0"> + </point> + </points> + </widget> + </widget> + </children> + </tab> + <tab> + <name>Trend</name> + <children> + <widget type="databrowser" version="2.0.0"> + <name>DataBrowser</name> + <width>940</width> + <height>721</height> + </widget> + </children> + </tab> + <tab> + <name>Settings</name> + <children> + <widget type="group" version="2.0.0"> + <name>group.settings</name> + <x>10</x> + <y>15</y> + <width>440</width> + <height>650</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.settings.border_3</name> + <width>440</width> + <height>650</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Settings_3</name> + <text>SETTINGS</text> + <width>415</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.settings.background_3</name> + <x>10</x> + <y>35</y> + <width>420</width> + <height>605</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_Gain_4</name> + <text>PID Gain:</text> + <x>32</x> + <y>135</y> + <width>129</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_Gain_4</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Gain</pv_name> + <x>295</x> + <y>138</y> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Input] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_Integration_7</name> + <text>PID Integration time:</text> + <x>21</x> + <y>174</y> + <width>140</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_Integration_4</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_TI</pv_name> + <x>294</x> + <y>177</y> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Input] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_Integration_8</name> + <text>PID Derivative time:</text> + <x>21</x> + <y>214</y> + <width>140</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_Derivative_4</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_TD</pv_name> + <x>294</x> + <y>217</y> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Input] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_DeadBand_3</name> + <text>PID Deadband:</text> + <x>21</x> + <y>254</y> + <width>140</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_DeadBand_3</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_DEADB</pv_name> + <x>294</x> + <y>257</y> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Input] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_P_PID_Gain</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Gain</pv_name> + <x>174</x> + <y>138</y> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnablePIDConf</pv_name> + </rule> + </rules> + <tooltip>Force heater power</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_P_PID_TI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_TI</pv_name> + <x>174</x> + <y>178</y> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnablePIDConf</pv_name> + </rule> + </rules> + <tooltip>Force heater power</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_P_PID_TD</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_TD</pv_name> + <x>174</x> + <y>218</y> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnablePIDConf</pv_name> + </rule> + </rules> + <tooltip>Force heater power</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_P_PID_DeadBand</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_DEADB</pv_name> + <x>174</x> + <y>258</y> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnablePIDConf</pv_name> + </rule> + </rules> + <tooltip>Force heater power</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_HLIM</name> + <text>LMN High Limit:</text> + <x>21</x> + <y>308</y> + <width>140</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_P_LMN_HLIM</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_LMN_HLIM</pv_name> + <x>174</x> + <y>312</y> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnablePIDConf</pv_name> + </rule> + </rules> + <tooltip>Force heater power</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <limits_from_pv>false</limits_from_pv> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_LMN_HLIM</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_LMN_HLIM</pv_name> + <x>294</x> + <y>311</y> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Input] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_LLIM</name> + <text>LMN Low Limit:</text> + <x>20</x> + <y>348</y> + <width>140</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_P_LMN_LLIM</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_LMN_LLIM</pv_name> + <x>173</x> + <y>352</y> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnablePIDConf</pv_name> + </rule> + </rules> + <tooltip>Force heater power</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <limits_from_pv>false</limits_from_pv> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_LMN_LLIM</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_LMN_LLIM</pv_name> + <x>293</x> + <y>351</y> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Input] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_P_Action_ON</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_P_ON</pv_name> + <text>ON</text> + <x>171</x> + <y>407</y> + <width>102</width> + <height>33</height> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnablePIDConf</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_P_ActionState</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_P_Action_ON_1</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_P_OFF</pv_name> + <text>OFF</text> + <x>290</x> + <y>408</y> + <width>102</width> + <height>33</height> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) ||(pv1 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 1)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnablePIDConf</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_P_ActionState</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_P_Action</name> + <text>Turn P-Action:</text> + <x>18</x> + <y>408</y> + <width>140</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_I_Action</name> + <text>Turn I-Action:</text> + <x>18</x> + <y>449</y> + <width>140</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_I_Action_ON</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_I_ON</pv_name> + <text>ON</text> + <x>171</x> + <y>448</y> + <width>102</width> + <height>33</height> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) ||(pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnablePIDConf</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_I_ActionState</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_I_Action_ON</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_I_OFF</pv_name> + <text>OFF</text> + <x>290</x> + <y>449</y> + <width>102</width> + <height>33</height> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) ||(pv1 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 1)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnablePIDConf</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_I_ActionState</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_D_Action</name> + <text>Turn D-Action:</text> + <x>18</x> + <y>489</y> + <width>140</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_D_Action_ON</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_D_ON</pv_name> + <text>ON</text> + <x>171</x> + <y>488</y> + <width>102</width> + <height>33</height> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) ||(pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnablePIDConf</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_D_ActionState</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_D_Action_ON</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_D_OFF</pv_name> + <text>OFF</text> + <x>290</x> + <y>489</y> + <width>102</width> + <height>33</height> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) ||(pv1 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 1)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnablePIDConf</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_D_ActionState</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_Config</name> + <text>PID Configuration:</text> + <x>20</x> + <y>67</y> + <width>140</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_P_Action_ON_6</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_EnablePID_Conf</pv_name> + <text>ON</text> + <x>173</x> + <y>66</y> + <width>102</width> + <height>33</height> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_P_Action_ON_7</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DisablePID_Conf</pv_name> + <text>OFF</text> + <x>292</x> + <y>67</y> + <width>102</width> + <height>33</height> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="led" version="2.0.0"> + <name>LED</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_P_ActionState</pv_name> + <x>25</x> + <y>409</y> + <width>30</width> + <height>30</height> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_I_ActionState</pv_name> + <x>25</x> + <y>447</y> + <width>30</width> + <height>30</height> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_2</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_D_ActionState</pv_name> + <x>25</x> + <y>487</y> + <width>30</width> + <height>30</height> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.automodeconfig</name> + <x>460</x> + <y>15</y> + <width>470</width> + <height>650</height> + <style>3</style> + <transparent>true</transparent> + <widget type="rectangle" version="2.0.0"> + <name>group.settings.border_5</name> + <width>470</width> + <height>650</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Settings_5</name> + <text>SETTINGS</text> + <width>470</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.settings.background_5</name> + <x>10</x> + <y>35</y> + <width>450</width> + <height>605</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>IND_ControlledDevice</name> + <pv_name>${AmConfig}:Controlled_Device_Msg</pv_name> + <x>180</x> + <y>120</y> + <width>250</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${AmConfig}:Cmd_Enable_AutoConf</pv_name> + </rule> + </rules> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="combo" version="2.0.0"> + <name>CB_OpMode</name> + <pv_name>${AmConfig}:P_OpMode_Name</pv_name> + <x>180</x> + <y>170</y> + <width>250</width> + <rules> + <rule name="enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${AmConfig}:Cmd_Enable_AutoConf</pv_name> + </rule> + </rules> + <border_alarm_sensitive>false</border_alarm_sensitive> + <items> + <item>Undefined</item> + <item>System Stopped</item> + <item>System Purging</item> + <item>System Starting</item> + <item>Stand By System Ready to Start</item> + <item>Cooling Down 300K to 4K</item> + <item>Stand By 4K</item> + <item>Cooling Down 4K to 2K</item> + <item>Stand By 2K</item> + <item>Nominal 2K + RF</item> + <item>Warming Up 2K to 4K</item> + <item>Warming Up 4K to 300K</item> + <item>Warming Up 4K to 80K</item> + <item>Stand By 80K</item> + <item>Cooling Down 80K to 4K</item> + <item>Warming Up 80K to 300K</item> + <item>Single CM Warming Up 4K to 300K</item> + <item>Single CM Cooling Down 300K to 4K</item> + </items> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_SSON</name> + <text>SS ON</text> + <x>20</x> + <y>240</y> + <width>140</width> + <height>30</height> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${AmConfig}:Cmd_Enable_AutoConf</pv_name> + </rule> + </rules> + </widget> + <widget type="slide_button" version="2.0.0"> + <name>SW_SSON</name> + <pv_name>${AmConfig}:P_SS_ON</pv_name> + <label></label> + <x>180</x> + <y>240</y> + <rules> + <rule name="enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${AmConfig}:Cmd_Enable_AutoConf</pv_name> + </rule> + </rules> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="combo" version="2.0.0"> + <name>CB_MeasDevices</name> + <pv_name>${AmConfig}:P_Measuring_Dev_Name</pv_name> + <x>180</x> + <y>270</y> + <width>250</width> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>IND_SSSP</name> + <pv_name>${AmConfig}:SS_Setpoint</pv_name> + <x>180</x> + <y>340</y> + <width>120</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${AmConfig}:Cmd_Enable_AutoConf</pv_name> + </rule> + </rules> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textentry" version="3.0.0"> + <name>INP_SSSP</name> + <pv_name>${AmConfig}:P_SS_Setpoint</pv_name> + <x>310</x> + <y>340</y> + <width>120</width> + <height>30</height> + <rules> + <rule name="enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${AmConfig}:Cmd_Enable_AutoConf</pv_name> + </rule> + </rules> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>IND_INTSP</name> + <pv_name>${AmConfig}:INT_Setpoint</pv_name> + <x>180</x> + <y>390</y> + <width>120</width> + <height>30</height> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${AmConfig}:Cmd_Enable_AutoConf</pv_name> + </rule> + </rules> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textentry" version="3.0.0"> + <name>INP_INTSP</name> + <pv_name>${AmConfig}:P_INT_Setpoint</pv_name> + <x>310</x> + <y>390</y> + <width>120</width> + <height>30</height> + <rules> + <rule name="enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${AmConfig}:Cmd_Enable_AutoConf</pv_name> + </rule> + </rules> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>IND_HLIM</name> + <pv_name>${AmConfig}:HighLimit</pv_name> + <x>180</x> + <y>440</y> + <width>120</width> + <height>30</height> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${AmConfig}:Cmd_Enable_AutoConf</pv_name> + </rule> + </rules> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textentry" version="3.0.0"> + <name>INP_HLIM</name> + <pv_name>${AmConfig}:P_HighLimit</pv_name> + <x>310</x> + <y>440</y> + <width>120</width> + <height>30</height> + <rules> + <rule name="enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${AmConfig}:Cmd_Enable_AutoConf</pv_name> + </rule> + </rules> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>IND_LLIM</name> + <pv_name>${AmConfig}:LowLimit</pv_name> + <x>180</x> + <y>490</y> + <width>120</width> + <height>30</height> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${AmConfig}:Cmd_Enable_AutoConf</pv_name> + </rule> + </rules> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textentry" version="3.0.0"> + <name>INP_LLIM</name> + <pv_name>${AmConfig}:P_LowLimit</pv_name> + <x>310</x> + <y>490</y> + <width>120</width> + <height>30</height> + <rules> + <rule name="enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${AmConfig}:Cmd_Enable_AutoConf</pv_name> + </rule> + </rules> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Config</name> + <text>Configuration:</text> + <x>20</x> + <y>65</y> + <width>140</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ContoledDevice</name> + <text>Controled Decice:</text> + <x>20</x> + <y>120</y> + <width>140</width> + <height>30</height> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>loc://AutoConfLocEN</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OP_mode</name> + <text>OP mode:</text> + <x>20</x> + <y>170</y> + <width>140</width> + <height>30</height> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>loc://AutoConfLocEN</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_MeasuringDevice</name> + <text>Measuring Device:</text> + <x>20</x> + <y>270</y> + <width>140</width> + <height>30</height> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>loc://AutoConfLocEN</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_SSSP</name> + <text>SS Setpoint</text> + <x>20</x> + <y>340</y> + <width>140</width> + <height>30</height> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>loc://AutoConfLocEN</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_INTSP</name> + <text>INT Setpoint</text> + <x>20</x> + <y>390</y> + <width>140</width> + <height>30</height> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>loc://AutoConfLocEN</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HLIM</name> + <text>High Limit</text> + <x>20</x> + <y>440</y> + <width>140</width> + <height>30</height> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>loc://AutoConfLocEN</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_LLIM</name> + <text>Low Limit</text> + <x>20</x> + <y>490</y> + <width>140</width> + <height>30</height> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>loc://AutoConfLocEN</pv_name> + </rule> + </rules> + </widget> + <widget type="action_button" version="3.0.0"> + <name>SetData</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${AmConfig}:Cmd_Set_Data</pv_name> + <value>1</value> + <description>Set Data</description> + </action> + <action type="write_pv"> + <pv_name>${AmConfig}:Cmd_Get_Data</pv_name> + <value>1</value> + <description>Get Data</description> + </action> + </actions> + <text>Set Data</text> + <x>320</x> + <y>550</y> + <rules> + <rule name="Enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${AmConfig}:Cmd_Enable_AutoConf</pv_name> + </rule> + </rules> + <tooltip>$(actions)</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>GetData</name> + <actions> + <action type="write_pv"> + <pv_name>${AmConfig}:Cmd_Get_Data</pv_name> + <value>1</value> + <description>Get Data</description> + </action> + </actions> + <x>190</x> + <y>550</y> + <rules> + <rule name="Enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${AmConfig}:Cmd_Enable_AutoConf</pv_name> + </rule> + </rules> + <tooltip>$(actions)</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ErrorText</name> + <text>!! Wrong Parameter !!</text> + <x>18</x> + <y>36</y> + <width>430</width> + <height>40</height> + <visible>false</visible> + <font> + <font family="PakTypeNaqsh" style="BOLD" size="18.0"> + </font> + </font> + <foreground_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </foreground_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="visible" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${AmConfig}:Config_Fault</pv_name> + </rule> + </rules> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_P_Action_ON_8</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${AmConfig}:Cmd_Enable_AutoConf</pv_name> + <text>ON</text> + <x>180</x> + <y>64</y> + <width>102</width> + <height>33</height> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_P_Action_ON_9</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${AmConfig}:Cmd_Disable_AutoConf</pv_name> + <text>OFF</text> + <x>307</x> + <y>64</y> + <width>102</width> + <height>33</height> + <tooltip>Apply force value</tooltip> + </widget> + </widget> + </children> + </tab> + </tabs> + <x>10</x> + <y>60</y> + <width>943</width> + <height>720</height> + <active_tab>2</active_tab> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Header Bar</name> + <width>963</width> + <height>50</height> + <line_width>0</line_width> + <line_color> + <color red="0" green="0" blue="255" alpha="0"> + </color> + </line_color> + <background_color> + <color name="PRIMARY-HEADER-BACKGROUND" red="151" green="188" blue="202"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HeaderPVName</name> + <text>${SecSub}:${Dis}-${Dev}-${Index}</text> + <x>20</x> + <width>715</width> + <height>50</height> + <font> + <font name="Header 1" family="Source Sans Pro" style="BOLD_ITALIC" size="36.0"> + </font> + </font> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Unlocked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>1</value> + <description>Write CMD_DevUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <value>0</value> + <description>Write CMD_DevLock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + </actions> + <text>UNLOCK</text> + <x>755</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false) || (pv1 == true) || (pv2 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true) && (pv1 == false) && (pv2 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Unlock this device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Locked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>0</value> + <description>Write CMD_DEVUNLOCK</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${DisDev}-${Index}:Lock(99)</pv_name> + <value>1</value> + <description>Run Lock script</description> + </action> + </actions> + <text>LOCK</text> + <x>850</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + </rule> + </rules> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: generate unique Machine ID from the network adapters to use it for locking mechanism*/ + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); + +var Lock = pvs[0];/*loc://${SecSub}:${DisDev}-${Index}:Lock*/ +var Cmd_DevLock = pvs[1];/*${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock*/ +var P_Faceplate_LockID = pvs[2];/*${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID*/ +var Inhibit_Lock = pvs[3];/*${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock*/ +var Faceplate_LockID = pvs[4];/*${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID*/ +var BlockIcon_LockID = pvs[5];/*${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID*/ +var EnaForceUnlock = pvs[6];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock*/ +var DevLocked = pvs[7];/*${SecSub}:${Dis}-${Dev}-${Index}:DevLocked*/ + + + +var PV1 = PVUtil.getLong(Faceplate_LockID); /*Faceplate_LockID*/ +var PV2 = PVUtil.getLong(BlockIcon_LockID); /*BlockIcon_LockID*/ + +//OnShow +if (PVUtil.getLong(DevLocked) == 1) { /*DevLocked*/ + + if (PV1.toString() == PV2.toString()){ /*FaceplateLockID != BlockIconeLockID*/ + + logger.info(" Owner"); + EnaForceUnlock.setValue(0); /*Write EnaForceUnlock*/ + + } else + { + logger.info(" Faceplate FaceplateLockID "+ PV1); + logger.info(" Faceplate BlockIconeLockID "+ PV2); + + logger.info(" Guest"); + EnaForceUnlock.setValue(1); /*Write EnaForceUnlock*/ + } + + + +} +// OnClick +if (PVUtil.getLong(Lock) != 99) { /*loc://Lock, check if the script was triggered because of a button press or initilization*/ + if (PVUtil.getLong(Inhibit_Lock) == 0) { /*Inhibit_lock, check if locking is inhibited*/ + + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + UniqueText = UniqueText + intf.getName() + intf.getDisplayName(); + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + UniqueText = UniqueText + enumIpAddr.nextElement().toString(); + } + } + + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText); + if (crc >=2147483647){ crc = crc - 2147483647;} + + logger.info(" Faceplate machine ID: "+crc); + P_Faceplate_LockID.setValue(crc); /*Write P_Faceplate_LockID*/ + Cmd_DevLock.setValue(1); /*Write Lock*/ + + } /*Lock inhibit*/ +} /*onshow*/ + +]]></text> + <pv_name>loc://${SecSub}:${DisDev}-${Index}:Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID</pv_name> + <pv_name trigger="false">loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + </script> + </scripts> + <tooltip>Lock this device</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/PIDControls/PID_Control_Faceplate_embedded.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/PIDControls/PID_Control_Faceplate_embedded.bob new file mode 100644 index 0000000000000000000000000000000000000000..d3b23f09c79577f254ceb0706b931a22bf362359 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/PIDControls/PID_Control_Faceplate_embedded.bob @@ -0,0 +1,3331 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>PID Control Faceplate embedded</name> + <width>1200</width> + <height>900</height> + <widget type="tabs" version="2.0.0"> + <name>Tabs</name> + <tabs> + <tab> + <name>Status</name> + <children> + <widget type="group" version="2.0.0"> + <name>group.status</name> + <x>10</x> + <y>10</y> + <height>300</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.border</name> + <width>300</width> + <height>300</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>260</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STATUS</name> + <text>STATUS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>MET_MeasValue</name> + <pv_name>${ProcessValue}:MeasValue</pv_name> + <x>13</x> + <y>64</y> + <width>265</width> + <height>43</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="25.0"> + </font> + </font> + <background_color> + <color red="255" green="254" blue="253"> + </color> + </background_color> + <transparent>true</transparent> + <precision>2</precision> + <tooltip>Mesurement value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>MET_ProcessSetpoint</name> + <pv_name>${SecSubPID}:${Dis}-PID-${IndexPID}:MAN_SP</pv_name> + <x>14</x> + <y>134</y> + <width>270</width> + <height>46</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="25.0"> + </font> + </font> + <background_color> + <color red="255" green="254" blue="253"> + </color> + </background_color> + <transparent>true</transparent> + <precision>2</precision> + <show_units>false</show_units> + <tooltip>Process setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_Gain_1</name> + <text>Measure Value:</text> + <x>11</x> + <y>37</y> + <width>129</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_Gain_2</name> + <text>Setpoint:</text> + <x>12</x> + <y>106</y> + <width>129</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>MET_ValvePos_2</name> + <text>${ProcessValueEGU}</text> + <x>123</x> + <y>133</y> + <width>120</width> + <height>56</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="25.0"> + </font> + </font> + <background_color> + <color red="255" green="254" blue="253"> + </color> + </background_color> + <tooltip>Valve position in percent</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>MET_MeasValueName</name> + <text>${MeasureValue}</text> + <x>146</x> + <y>42</y> + <width>144</width> + <height>30</height> + <background_color> + <color red="255" green="254" blue="253"> + </color> + </background_color> + <tooltip>Mesurement value</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_Gain_3</name> + <text>Manipulated Value:</text> + <x>11</x> + <y>184</y> + <width>129</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>MET_ManipulatedValue</name> + <pv_name>${SecSubPID}:${Dis}-PID-${IndexPID}:LMN</pv_name> + <x>11</x> + <y>210</y> + <width>270</width> + <height>46</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="25.0"> + </font> + </font> + <background_color> + <color red="255" green="254" blue="253"> + </color> + </background_color> + <transparent>true</transparent> + <precision>2</precision> + <show_units>false</show_units> + <tooltip>Process setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.op.modes</name> + <x>320</x> + <y>10</y> + <height>300</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.border</name> + <width>300</width> + <height>300</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>260</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OP_MODES</name> + <text>OP MODES</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Auto</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:OpMode_Auto</pv_name> + <x>75</x> + <y>50</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode Auto</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_AUTO</name> + <text>AUTO</text> + <x>110</x> + <y>50</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Manual</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:OpMode_Manual</pv_name> + <x>75</x> + <y>85</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode Manual</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_MANUAL</name> + <text>MANUAL</text> + <x>110</x> + <y>85</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Forced</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:OpMode_Forced</pv_name> + <x>75</x> + <y>120</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode Forced</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_FORCED</name> + <text>FORCED</text> + <x>106</x> + <y>120</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_MESSAGES</name> + <text>MESSAGES</text> + <x>5</x> + <y>160</y> + <width>290</width> + <height>25</height> + <font> + <font family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitMan</name> + <text>- Manual mode inhibited</text> + <x>15</x> + <y>190</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:Inhibit_Manual</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitForce</name> + <text>- Force mode inhibited</text> + <x>15</x> + <y>210</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:Inhibit_Force</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm_DIS</name> + <text>- Alarms latching disabled</text> + <x>15</x> + <y>230</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>false</value> + </exp> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm_ENA</name> + <text>- Alarms latching enabled</text> + <x>15</x> + <y>230</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitForce_1</name> + <text>- Sandby value ACTIVE!!!</text> + <x>15</x> + <y>252</y> + <width>270</width> + <foreground_color> + <color name="MACHINE-PROTECTION-BORDER" red="120" green="59" blue="85"> + </color> + </foreground_color> + <background_color> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </background_color> + <transparent>false</transparent> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:FB_SS_State</pv_name> + </rule> + </rules> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.alarms</name> + <x>630</x> + <y>10</y> + <height>300</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.border</name> + <width>300</width> + <height>300</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>260</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_IO_Error</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:IO_Error</pv_name> + <x>50</x> + <y>109</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_IO_Error</name> + <text>I/O Error</text> + <x>85</x> + <y>109</y> + <width>88</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Input_Module_Error</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:Input_Module_Error</pv_name> + <x>50</x> + <y>139</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Input_Module_Error</name> + <text>Input Module Error</text> + <x>85</x> + <y>139</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ILOCK_START</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:GroupInterlock</pv_name> + <x>50</x> + <y>250</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>Start interlock</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ILOCK_START</name> + <text>Move Interlock</text> + <x>85</x> + <y>250</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALARMS</name> + <text>ALARMS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackgroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Group alarm</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_INTERLOCKS</name> + <text>INTERLOCKS</text> + <x>5</x> + <y>207</y> + <width>290</width> + <height>25</height> + <font> + <font family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackgroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Group interlock</tooltip> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Output_Module_Error</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:Output_Module_Error</pv_name> + <x>50</x> + <y>172</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Output_Module_Error</name> + <text>Output Module Error</text> + <x>85</x> + <y>171</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_LMN_HLIM</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:LMN_HLIM</pv_name> + <x>51</x> + <y>49</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_LMN_LLIM</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:LMN_LLIM</pv_name> + <x>51</x> + <y>79</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_LMN_HLIM</name> + <text>LMN High Limit</text> + <x>86</x> + <y>49</y> + <width>88</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_LMN_LLIM</name> + <text>LMN Low Limit</text> + <x>86</x> + <y>79</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.ramping</name> + <x>320</x> + <y>320</y> + <height>263</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.ramping.border</name> + <width>300</width> + <height>255</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.ramping.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>213</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Ramping</name> + <text>PID STATUS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_P_Action</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:LMN_P</pv_name> + <x>173</x> + <y>51</y> + <width>110</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Actual calculated P-Action</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_P_Action_1</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:LMN_I</pv_name> + <x>173</x> + <y>91</y> + <width>110</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Actual calculated I-Action</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_P_Action</name> + <text>Manipulated P-Action:</text> + <x>18</x> + <y>51</y> + <width>150</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_I_Action</name> + <text>Manipulated I-Action:</text> + <x>18</x> + <y>91</y> + <width>150</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_D_Action</name> + <text>Manipulated D-Action:</text> + <x>18</x> + <y>131</y> + <width>150</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_D_Action</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:LMN_D</pv_name> + <x>173</x> + <y>131</y> + <width>110</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Actual calculated D-Action</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_DIF</name> + <text>Actual PID error:</text> + <x>8</x> + <y>171</y> + <width>160</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_PID_DIF</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:PID_DIF</pv_name> + <x>173</x> + <y>171</y> + <width>110</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Actual calculated PID error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_PID_Cycle</name> + <text>Actual PID cycle:</text> + <x>7</x> + <y>211</y> + <width>160</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_PID_Cycle</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:PID_Cycle</pv_name> + <x>172</x> + <y>211</y> + <width>110</width> + <height>30</height> + <vertical_alignment>1</vertical_alignment> + <tooltip>Actual PID cycle time</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.settings</name> + <x>630</x> + <y>320</y> + <height>265</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.settings.border</name> + <width>300</width> + <height>256</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Settings</name> + <text>SETTINGS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.settings.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>214</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_Gain</name> + <text>PID Gain:</text> + <x>29</x> + <y>52</y> + <width>129</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_Gain</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:FB_Gain</pv_name> + <x>158</x> + <y>52</y> + <width>128</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Input] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_Integration</name> + <text>PID Integration time:</text> + <x>18</x> + <y>91</y> + <width>140</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_Integration</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:FB_TI</pv_name> + <x>157</x> + <y>91</y> + <width>128</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Input] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_Integration_1</name> + <text>PID Derivative time:</text> + <x>18</x> + <y>131</y> + <width>140</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_Derivative</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:FB_TD</pv_name> + <x>157</x> + <y>131</y> + <width>128</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Input] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_DeadBand</name> + <text>PID Deadband:</text> + <x>18</x> + <y>171</y> + <width>140</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_DeadBand</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:FB_DEADB</pv_name> + <x>157</x> + <y>171</y> + <width>128</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Input] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_LMN_HLIM_1</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:FB_LMN_HLIM</pv_name> + <x>200</x> + <y>211</y> + <width>85</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>PID output MAX Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_HLIM_1</name> + <text>LMN Limits:</text> + <x>17</x> + <y>209</y> + <width>87</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_LMN_LLIM_1</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:FB_LMN_LLIM</pv_name> + <x>103</x> + <y>211</y> + <width>82</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>PID output MIN Value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>buttons.bar</name> + <x>10</x> + <y>590</y> + <width>920</width> + <height>80</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_AUTO</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:Cmd_Auto</pv_name> + <text>AUTO</text> + <x>15</x> + <y>631</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:EnableAutoBtn</pv_name> + <pv_name>loc://${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>AUTO operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_MANUAL</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:Cmd_Manual</pv_name> + <text>MANUAL</text> + <x>220</x> + <y>631</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:EnableManualBtn</pv_name> + <pv_name>loc://${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>MANUAL operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:Cmd_Force</pv_name> + <text>FORCE</text> + <x>425</x> + <y>631</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:EnableForcedBtn</pv_name> + <pv_name>loc://${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>FORCE operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_APPLY</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:Cmd_ForceValInp</pv_name> + <text>APPLY IN</text> + <x>425</x> + <y>595</y> + <width>99</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:OpMode_Forced</pv_name> + <pv_name>loc://${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_APPLY_1</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:Cmd_ForceValOut</pv_name> + <text>APPLY OUT</text> + <x>526</x> + <y>595</y> + <width>99</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:OpMode_Forced</pv_name> + <pv_name>loc://${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_ACK</name> + <actions> + <action type="write_pv"> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:Cmd_AckAlarm</pv_name> + <value>1</value> + <description>Acknowledge alarms</description> + </action> + </actions> + <text>Acknowledge Alarm</text> + <x>725</x> + <y>631</y> + <width>200</width> + <height>33</height> + <background_color> + <color name="ORANGE" red="254" green="194" blue="81"> + </color> + </background_color> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1) || (pv2 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0) && (pv2 == 1)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:GroupAlarm</pv_name> + <pv_name>loc://${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:EnaForceUnlock</pv_name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:LatchAlarm</pv_name> + </rule> + </rules> + <tooltip>Acknowledge alarms</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_UNLOCK</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:Cmd_ForceUnlock</pv_name> + <value>1</value> + <description>Write ForceUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + <action type="write_pv"> + <pv_name>loc://${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:EnaForceUnlock</pv_name> + <value>0</value> + <description>Write EnaForceUnlock</description> + </action> + </actions> + <text>FORCE UNLOCK</text> + <x>725</x> + <y>595</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 1)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 0)"> + <value>false</value> + </exp> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:Inhibit_Lock</pv_name> + <pv_name>loc://${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force unlock device</tooltip> + </widget> + <widget type="group" version="2.0.0"> + <name>group.modify</name> + <x>10</x> + <y>320</y> + <height>263</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.modify.border</name> + <width>300</width> + <height>255</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.modify.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>100</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <rules> + <rule name="Color" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 1"> + <value> + <color name="RED-BACKGROUND" red="225" green="192" blue="188"> + </color> + </value> + </exp> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:OpMode_Forced</pv_name> + </rule> + </rules> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_HeaterMV</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:FB_Manipulated</pv_name> + <x>215</x> + <y>90</y> + <width>70</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Output] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_ForceHeaterMV</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:P_Manipulated</pv_name> + <x>120</x> + <y>90</y> + <width>85</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Force heater output</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_FrcMV</name> + <text>Force Output:</text> + <x>15</x> + <y>90</y> + <width>96</width> + <height>26</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY VALUE] to apply</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_HeaterPow</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:FB_ForcePosition</pv_name> + <x>215</x> + <y>50</y> + <width>70</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Input] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_ForceHeaterPow</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:P_ForcePosition</pv_name> + <x>120</x> + <y>50</y> + <width>85</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Force heater power</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_FrcActPos</name> + <text>Force Input:</text> + <x>15</x> + <y>50</y> + <width>96</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Modify</name> + <text>MODIFY/FORCE</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Text" prop_id="text" out_exp="false"> + <exp bool_exp="(pv0 == 1)"> + <value>MODIFY/FORCE</value> + </exp> + <exp bool_exp="(pv1 == 1)"> + <value>MODIFY</value> + </exp> + <exp bool_exp="(pv2 == 1)"> + <value>FORCE</value> + </exp> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:OpMode_Manual</pv_name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:OpMode_Forced</pv_name> + </rule> + </rules> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.modify.background_1</name> + <x>5</x> + <y>143</y> + <width>290</width> + <height>104</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_StepValue</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:FB_Step</pv_name> + <x>194</x> + <y>206</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback step value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_StepValue</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:P_Step</pv_name> + <x>95</x> + <y>206</y> + <width>92</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0==0"> + <value>true</value> + </exp> + <exp bool_exp="pv0==1"> + <value>false</value> + </exp> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Step value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <limits_from_pv>false</limits_from_pv> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_StepValue</name> + <text>Step Value:</text> + <x>6</x> + <y>203</y> + <width>101</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_Setpoint</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:FB_Setpoint</pv_name> + <x>194</x> + <y>153</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback modified setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_ForcePumpSP</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:P_Setpoint</pv_name> + <x>76</x> + <y>153</y> + <width>111</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="IncrementRule" prop_id="increment" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:FB_Step</pv_name> + </rule> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0==0"> + <value>true</value> + </exp> + <exp bool_exp="pv0==1"> + <value>false</value> + </exp> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Modify Setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <maximum>1.0E7</maximum> + <limits_from_pv>false</limits_from_pv> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_FrcSetpoint</name> + <text>Setpoint:</text> + <x>7</x> + <y>153</y> + <width>71</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="polyline" version="2.0.0"> + <name>Polyline</name> + <x>133</x> + <y>184</y> + <width>41</width> + <line_color> + <color name="WHITE" red="255" green="255" blue="255"> + </color> + </line_color> + <points> + <point x="0.0" y="20.0"> + </point> + <point x="0.0" y="10.0"> + </point> + <point x="40.32786885245899" y="10.0"> + </point> + <point x="40.32786885245899" y="0.0"> + </point> + </points> + </widget> + </widget> + </children> + </tab> + <tab> + <name>Trend</name> + <children> + <widget type="databrowser" version="2.0.0"> + <name>DataBrowser</name> + <file>PID_Trend.plt</file> + <width>940</width> + <height>721</height> + </widget> + </children> + </tab> + <tab> + <name>Settings</name> + <children> + <widget type="group" version="2.0.0"> + <name>group.settings</name> + <x>10</x> + <y>15</y> + <width>440</width> + <height>650</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.settings.border_3</name> + <width>440</width> + <height>650</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Settings_3</name> + <text>SETTINGS</text> + <width>415</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.settings.background_3</name> + <x>10</x> + <y>35</y> + <width>420</width> + <height>605</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_Gain_4</name> + <text>PID Gain:</text> + <x>32</x> + <y>135</y> + <width>129</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_Gain_4</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:FB_Gain</pv_name> + <x>295</x> + <y>138</y> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Input] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_Integration_7</name> + <text>PID Integration time:</text> + <x>21</x> + <y>174</y> + <width>140</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_Integration_4</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:FB_TI</pv_name> + <x>294</x> + <y>177</y> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Input] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_Integration_8</name> + <text>PID Derivative time:</text> + <x>21</x> + <y>214</y> + <width>140</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_Derivative_4</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:FB_TD</pv_name> + <x>294</x> + <y>217</y> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Input] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_DeadBand_3</name> + <text>PID Deadband:</text> + <x>21</x> + <y>254</y> + <width>140</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_DeadBand_3</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:FB_DEADB</pv_name> + <x>294</x> + <y>257</y> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Input] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_P_PID_Gain</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:P_Gain</pv_name> + <x>174</x> + <y>138</y> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:EnablePIDConf</pv_name> + </rule> + </rules> + <tooltip>Force heater power</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_P_PID_TI</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:P_TI</pv_name> + <x>174</x> + <y>178</y> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:EnablePIDConf</pv_name> + </rule> + </rules> + <tooltip>Force heater power</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_P_PID_TD</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:P_TD</pv_name> + <x>174</x> + <y>218</y> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:EnablePIDConf</pv_name> + </rule> + </rules> + <tooltip>Force heater power</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_P_PID_DeadBand</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:P_DEADB</pv_name> + <x>174</x> + <y>258</y> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:EnablePIDConf</pv_name> + </rule> + </rules> + <tooltip>Force heater power</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_HLIM</name> + <text>LMN High Limit:</text> + <x>21</x> + <y>308</y> + <width>140</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_P_LMN_HLIM</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:P_LMN_HLIM</pv_name> + <x>174</x> + <y>312</y> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:EnablePIDConf</pv_name> + </rule> + </rules> + <tooltip>Force heater power</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <limits_from_pv>false</limits_from_pv> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_LMN_HLIM</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:FB_LMN_HLIM</pv_name> + <x>294</x> + <y>311</y> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Input] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_LLIM</name> + <text>LMN Low Limit:</text> + <x>20</x> + <y>348</y> + <width>140</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_P_LMN_LLIM</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:P_LMN_LLIM</pv_name> + <x>173</x> + <y>352</y> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:EnablePIDConf</pv_name> + </rule> + </rules> + <tooltip>Force heater power</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <limits_from_pv>false</limits_from_pv> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_LMN_LLIM</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:FB_LMN_LLIM</pv_name> + <x>293</x> + <y>351</y> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Input] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_P_Action_ON</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:Cmd_P_ON</pv_name> + <text>ON</text> + <x>171</x> + <y>407</y> + <width>102</width> + <height>33</height> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:EnablePIDConf</pv_name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:FB_P_ActionState</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_P_Action_ON_1</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:Cmd_P_OFF</pv_name> + <text>OFF</text> + <x>290</x> + <y>408</y> + <width>102</width> + <height>33</height> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) ||(pv1 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 1)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:EnablePIDConf</pv_name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:FB_P_ActionState</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_P_Action</name> + <text>Turn P-Action:</text> + <x>18</x> + <y>408</y> + <width>140</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_I_Action</name> + <text>Turn I-Action:</text> + <x>18</x> + <y>449</y> + <width>140</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_I_Action_ON</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:Cmd_I_ON</pv_name> + <text>ON</text> + <x>171</x> + <y>448</y> + <width>102</width> + <height>33</height> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) ||(pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:EnablePIDConf</pv_name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:FB_I_ActionState</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_I_Action_ON</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:Cmd_I_OFF</pv_name> + <text>OFF</text> + <x>290</x> + <y>449</y> + <width>102</width> + <height>33</height> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) ||(pv1 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 1)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:EnablePIDConf</pv_name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:FB_I_ActionState</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_D_Action</name> + <text>Turn D-Action:</text> + <x>18</x> + <y>489</y> + <width>140</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_D_Action_ON</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:Cmd_D_ON</pv_name> + <text>ON</text> + <x>171</x> + <y>488</y> + <width>102</width> + <height>33</height> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) ||(pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:EnablePIDConf</pv_name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:FB_D_ActionState</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_D_Action_ON</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:Cmd_D_OFF</pv_name> + <text>OFF</text> + <x>290</x> + <y>489</y> + <width>102</width> + <height>33</height> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) ||(pv1 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 1)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:EnablePIDConf</pv_name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:FB_D_ActionState</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_Config</name> + <text>PID Configuration:</text> + <x>20</x> + <y>67</y> + <width>140</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_P_Action_ON_6</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:Cmd_EnablePID_Conf</pv_name> + <text>ON</text> + <x>173</x> + <y>66</y> + <width>102</width> + <height>33</height> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_P_Action_ON_7</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:Cmd_DisablePID_Conf</pv_name> + <text>OFF</text> + <x>292</x> + <y>67</y> + <width>102</width> + <height>33</height> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="led" version="2.0.0"> + <name>LED</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:FB_P_ActionState</pv_name> + <x>25</x> + <y>409</y> + <width>30</width> + <height>30</height> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_1</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:FB_I_ActionState</pv_name> + <x>25</x> + <y>447</y> + <width>30</width> + <height>30</height> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_2</name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:FB_D_ActionState</pv_name> + <x>25</x> + <y>487</y> + <width>30</width> + <height>30</height> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.automodeconfig</name> + <x>460</x> + <y>15</y> + <width>470</width> + <height>650</height> + <style>3</style> + <transparent>true</transparent> + <widget type="rectangle" version="2.0.0"> + <name>group.settings.border_5</name> + <width>470</width> + <height>650</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Settings_5</name> + <text>AM SETTINGS</text> + <width>470</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.settings.background_5</name> + <x>10</x> + <y>35</y> + <width>450</width> + <height>605</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>IND_ControlledDevice</name> + <pv_name>${AmConfig}:Controlled_Device_Msg</pv_name> + <x>180</x> + <y>120</y> + <width>250</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${AmConfig}:Cmd_Enable_AutoConf</pv_name> + </rule> + </rules> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="combo" version="2.0.0"> + <name>CB_OpMode</name> + <pv_name>${AmConfig}:P_OpMode_Name</pv_name> + <x>180</x> + <y>170</y> + <width>250</width> + <rules> + <rule name="enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${AmConfig}:Cmd_Enable_AutoConf</pv_name> + </rule> + </rules> + <border_alarm_sensitive>false</border_alarm_sensitive> + <items> + <item>Undefined</item> + <item>System Stopped</item> + <item>System Purging</item> + <item>System Starting</item> + <item>Stand By System Ready to Start</item> + <item>Cooling Down 300K to 4K</item> + <item>Stand By 4K</item> + <item>Cooling Down 4K to 2K</item> + <item>Stand By 2K</item> + <item>Nominal 2K + RF</item> + <item>Warming Up 2K to 4K</item> + <item>Warming Up 4K to 300K</item> + <item>Warming Up 4K to 80K</item> + <item>Stand By 80K</item> + <item>Cooling Down 80K to 4K</item> + <item>Warming Up 80K to 300K</item> + <item>Single CM Warming Up 4K to 300K</item> + <item>Single CM Cooling Down 300K to 4K</item> + </items> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_SSON</name> + <text>SS ON</text> + <x>20</x> + <y>240</y> + <width>140</width> + <height>30</height> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${AmConfig}:Cmd_Enable_AutoConf</pv_name> + </rule> + </rules> + </widget> + <widget type="slide_button" version="2.0.0"> + <name>SW_SSON</name> + <pv_name>${AmConfig}:P_SS_ON</pv_name> + <label></label> + <x>180</x> + <y>240</y> + <rules> + <rule name="enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${AmConfig}:Cmd_Enable_AutoConf</pv_name> + </rule> + </rules> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="combo" version="2.0.0"> + <name>CB_MeasDevices</name> + <pv_name>${AmConfig}:P_Measuring_Dev_Name</pv_name> + <x>180</x> + <y>270</y> + <width>250</width> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>IND_SSSP</name> + <pv_name>${AmConfig}:SS_Setpoint</pv_name> + <x>180</x> + <y>340</y> + <width>120</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${AmConfig}:Cmd_Enable_AutoConf</pv_name> + </rule> + </rules> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textentry" version="3.0.0"> + <name>INP_SSSP</name> + <pv_name>${AmConfig}:P_SS_Setpoint</pv_name> + <x>310</x> + <y>340</y> + <width>120</width> + <height>30</height> + <rules> + <rule name="enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${AmConfig}:Cmd_Enable_AutoConf</pv_name> + </rule> + </rules> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>IND_INTSP</name> + <pv_name>${AmConfig}:INT_Setpoint</pv_name> + <x>180</x> + <y>390</y> + <width>120</width> + <height>30</height> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${AmConfig}:Cmd_Enable_AutoConf</pv_name> + </rule> + </rules> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textentry" version="3.0.0"> + <name>INP_INTSP</name> + <pv_name>${AmConfig}:P_INT_Setpoint</pv_name> + <x>310</x> + <y>390</y> + <width>120</width> + <height>30</height> + <rules> + <rule name="enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${AmConfig}:Cmd_Enable_AutoConf</pv_name> + </rule> + </rules> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>IND_HLIM</name> + <pv_name>${AmConfig}:HighLimit</pv_name> + <x>180</x> + <y>440</y> + <width>120</width> + <height>30</height> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${AmConfig}:Cmd_Enable_AutoConf</pv_name> + </rule> + </rules> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textentry" version="3.0.0"> + <name>INP_HLIM</name> + <pv_name>${AmConfig}:P_HighLimit</pv_name> + <x>310</x> + <y>440</y> + <width>120</width> + <height>30</height> + <rules> + <rule name="enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${AmConfig}:Cmd_Enable_AutoConf</pv_name> + </rule> + </rules> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>IND_LLIM</name> + <pv_name>${AmConfig}:LowLimit</pv_name> + <x>180</x> + <y>490</y> + <width>120</width> + <height>30</height> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${AmConfig}:Cmd_Enable_AutoConf</pv_name> + </rule> + </rules> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textentry" version="3.0.0"> + <name>INP_LLIM</name> + <pv_name>${AmConfig}:P_LowLimit</pv_name> + <x>310</x> + <y>490</y> + <width>120</width> + <height>30</height> + <rules> + <rule name="enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${AmConfig}:Cmd_Enable_AutoConf</pv_name> + </rule> + </rules> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Config</name> + <text>Configuration:</text> + <x>20</x> + <y>65</y> + <width>140</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ContoledDevice</name> + <text>Controled Decice:</text> + <x>20</x> + <y>120</y> + <width>140</width> + <height>30</height> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>loc://AutoConfLocEN</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OP_mode</name> + <text>OP mode:</text> + <x>20</x> + <y>170</y> + <width>140</width> + <height>30</height> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>loc://AutoConfLocEN</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_MeasuringDevice</name> + <text>Measuring Device:</text> + <x>20</x> + <y>270</y> + <width>140</width> + <height>30</height> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>loc://AutoConfLocEN</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_SSSP</name> + <text>SS Setpoint</text> + <x>20</x> + <y>340</y> + <width>140</width> + <height>30</height> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>loc://AutoConfLocEN</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_INTSP</name> + <text>INT Setpoint</text> + <x>20</x> + <y>390</y> + <width>140</width> + <height>30</height> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>loc://AutoConfLocEN</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HLIM</name> + <text>High Limit</text> + <x>20</x> + <y>440</y> + <width>140</width> + <height>30</height> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>loc://AutoConfLocEN</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_LLIM</name> + <text>Low Limit</text> + <x>20</x> + <y>490</y> + <width>140</width> + <height>30</height> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>loc://AutoConfLocEN</pv_name> + </rule> + </rules> + </widget> + <widget type="action_button" version="3.0.0"> + <name>SetData</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${AmConfig}:Cmd_Set_Data</pv_name> + <value>1</value> + <description>Set Data</description> + </action> + <action type="write_pv"> + <pv_name>${AmConfig}:Cmd_Get_Data</pv_name> + <value>1</value> + <description>Get Data</description> + </action> + </actions> + <text>Set Data</text> + <x>320</x> + <y>550</y> + <rules> + <rule name="Enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${AmConfig}:Cmd_Enable_AutoConf</pv_name> + </rule> + </rules> + <tooltip>$(actions)</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>GetData</name> + <actions> + <action type="write_pv"> + <pv_name>${AmConfig}:Cmd_Get_Data</pv_name> + <value>1</value> + <description>Get Data</description> + </action> + </actions> + <x>190</x> + <y>550</y> + <rules> + <rule name="Enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${AmConfig}:Cmd_Enable_AutoConf</pv_name> + </rule> + </rules> + <tooltip>$(actions)</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ErrorText</name> + <text>!! Wrong Parameter !!</text> + <x>18</x> + <y>36</y> + <width>430</width> + <height>40</height> + <visible>false</visible> + <font> + <font family="PakTypeNaqsh" style="BOLD" size="18.0"> + </font> + </font> + <foreground_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </foreground_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="visible" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${AmConfig}:Config_Fault</pv_name> + </rule> + </rules> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_P_Action_ON_8</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${AmConfig}:Cmd_Enable_AutoConf</pv_name> + <text>ON</text> + <x>180</x> + <y>64</y> + <width>102</width> + <height>33</height> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_P_Action_ON_9</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${AmConfig}:Cmd_Disable_AutoConf</pv_name> + <text>OFF</text> + <x>307</x> + <y>64</y> + <width>102</width> + <height>33</height> + <tooltip>Apply force value</tooltip> + </widget> + </widget> + </children> + </tab> + </tabs> + <x>10</x> + <y>60</y> + <width>943</width> + <height>720</height> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Header Bar</name> + <width>963</width> + <height>50</height> + <line_width>0</line_width> + <line_color> + <color red="0" green="0" blue="255" alpha="0"> + </color> + </line_color> + <background_color> + <color name="PRIMARY-HEADER-BACKGROUND" red="151" green="188" blue="202"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HeaderPVName</name> + <text>${SecSubPID}:${Dis}-PID-${IndexPID}</text> + <x>20</x> + <width>715</width> + <height>50</height> + <font> + <font name="Header 1" family="Source Sans Pro" style="BOLD_ITALIC" size="36.0"> + </font> + </font> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Unlocked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:Cmd_DevUnlock</pv_name> + <value>1</value> + <description>Write CMD_DevUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:Cmd_DevLock</pv_name> + <value>0</value> + <description>Write CMD_DevLock</description> + </action> + <action type="write_pv"> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + </actions> + <text>UNLOCK</text> + <x>755</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false) || (pv1 == true) || (pv2 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true) && (pv1 == false) && (pv2 == 0)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:DevLocked</pv_name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:Inhibit_Lock</pv_name> + <pv_name>loc://${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Unlock this device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Locked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:Cmd_DevUnlock</pv_name> + <value>0</value> + <description>Write CMD_DEVUNLOCK</description> + </action> + <action type="write_pv"> + <pv_name>loc://${WIDSecSubPID}:${DisDev}-${WIDIndexPID}:Lock(99)</pv_name> + <value>1</value> + <description>Run Lock script</description> + </action> + </actions> + <text>LOCK</text> + <x>850</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>false</value> + </exp> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:DevLocked</pv_name> + <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:Inhibit_Lock</pv_name> + </rule> + </rules> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: generate unique Machine ID from the network adapters to use it for locking mechanism*/ + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); + +var Lock = pvs[0];/*loc://${WIDSecSubPID}:${DisDev}-${WIDIndexPID}:Lock*/ +var Cmd_DevLock = pvs[1];/*${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:Cmd_DevLock*/ +var P_Faceplate_LockID = pvs[2];/*${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:P_Faceplate_LockID*/ +var Inhibit_Lock = pvs[3];/*${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:Inhibit_Lock*/ +var Faceplate_LockID = pvs[4];/*${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:Faceplate_LockID*/ +var BlockIcon_LockID = pvs[5];/*${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:BlockIcon_LockID*/ +var EnaForceUnlock = pvs[6];/*loc://${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:EnaForceUnlock*/ +var DevLocked = pvs[7];/*${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:DevLocked*/ + + + +var PV1 = PVUtil.getLong(Faceplate_LockID); /*Faceplate_LockID*/ +var PV2 = PVUtil.getLong(BlockIcon_LockID); /*BlockIcon_LockID*/ + +//OnShow +if (PVUtil.getLong(DevLocked) == 1) { /*DevLocked*/ + + if (PV1.toString() == PV2.toString()){ /*FaceplateLockID != BlockIconeLockID*/ + + logger.info(" Owner"); + EnaForceUnlock.setValue(0); /*Write EnaForceUnlock*/ + + } else + { + logger.info(" Faceplate FaceplateLockID "+ PV1); + logger.info(" Faceplate BlockIconeLockID "+ PV2); + + logger.info(" Guest"); + EnaForceUnlock.setValue(1); /*Write EnaForceUnlock*/ + } + + + +} +// OnClick +if (PVUtil.getLong(Lock) != 99) { /*loc://Lock, check if the script was triggered because of a button press or initilization*/ + if (PVUtil.getLong(Inhibit_Lock) == 0) { /*Inhibit_lock, check if locking is inhibited*/ + + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + UniqueText = UniqueText + intf.getName() + intf.getDisplayName(); + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + UniqueText = UniqueText + enumIpAddr.nextElement().toString(); + } + } + + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText); + if (crc >=2147483647){ crc = crc - 2147483647;} + + logger.info(" Faceplate machine ID: "+crc); + P_Faceplate_LockID.setValue(crc); /*Write P_Faceplate_LockID*/ + Cmd_DevLock.setValue(1); /*Write Lock*/ + + } /*Lock inhibit*/ +} /*onshow*/ + +]]></text> + <pv_name>loc://${WIDSecSubPID}:${DisDev}-${WIDIndexPID}:Lock</pv_name> + <pv_name trigger="false">${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:Cmd_DevLock</pv_name> + <pv_name trigger="false">${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:P_Faceplate_LockID</pv_name> + <pv_name trigger="false">${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:Inhibit_Lock</pv_name> + <pv_name trigger="false">${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:Faceplate_LockID</pv_name> + <pv_name trigger="false">${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:BlockIcon_LockID</pv_name> + <pv_name trigger="false">loc://${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:EnaForceUnlock</pv_name> + <pv_name trigger="false">${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:DevLocked</pv_name> + </script> + </scripts> + <tooltip>Lock this device</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/PIDControls/PID_Trend.plt b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/PIDControls/PID_Trend.plt new file mode 100644 index 0000000000000000000000000000000000000000..7ef1d4e091addc4464864db478e74654ea6608a9 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/PIDControls/PID_Trend.plt @@ -0,0 +1,157 @@ +<?xml version="1.0" encoding="UTF-8"?> +<databrowser> + <title></title> + <show_toolbar>true</show_toolbar> + <update_period>3.0</update_period> + <scroll_step>5</scroll_step> + <scroll>true</scroll> + <start>-10 minutes</start> + <end>now</end> + <archive_rescale>NONE</archive_rescale> + <foreground> + <red>229</red> + <green>229</green> + <blue>229</blue> + </foreground> + <background> + <red>77</red> + <green>77</green> + <blue>77</blue> + </background> + <title_font>System|16|1</title_font> + <label_font>System|11|1</label_font> + <scale_font>System|10|0</scale_font> + <legend_font>System|10|0</legend_font> + <axes> + <axis> + <visible>true</visible> + <name>Value Axis</name> + <use_axis_name>true</use_axis_name> + <use_trace_names>true</use_trace_names> + <right>false</right> + <color> + <red>255</red> + <green>165</green> + <blue>0</blue> + </color> + <min>0.0</min> + <max>25.0</max> + <grid>true</grid> + <autoscale>true</autoscale> + <log_scale>false</log_scale> + </axis> + <axis> + <visible>true</visible> + <name>Value 1</name> + <use_axis_name>false</use_axis_name> + <use_trace_names>true</use_trace_names> + <right>false</right> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <min>0.0</min> + <max>10.0</max> + <grid>false</grid> + <autoscale>true</autoscale> + <log_scale>false</log_scale> + </axis> + <axis> + <visible>true</visible> + <name>Value 2</name> + <use_axis_name>false</use_axis_name> + <use_trace_names>true</use_trace_names> + <right>false</right> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <min>0.0</min> + <max>10.0</max> + <grid>false</grid> + <autoscale>true</autoscale> + <log_scale>false</log_scale> + </axis> + </axes> + <annotations> + </annotations> + <pvlist> + <pv> + <display_name>${MeasureValue}</display_name> + <visible>true</visible> + <name>${ProcessValue}:MeasValue</name> + <axis>0</axis> + <color> + <red>255</red> + <green>0</green> + <blue>0</blue> + </color> + <trace_type>AREA</trace_type> + <linewidth>3</linewidth> + <line_style>SOLID</line_style> + <point_type>NONE</point_type> + <point_size>2</point_size> + <waveform_index>0</waveform_index> + <period>0.0</period> + <ring_size>5000</ring_size> + <request>RAW</request> + <archive> + <name>pbraw://archiver-01.tn.esss.lu.se:17668/retrieval</name> + <url>pbraw://archiver-01.tn.esss.lu.se:17668/retrieval</url> + <key>1</key> + </archive> + </pv> + <pv> + <display_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:MAN_SP</display_name> + <visible>true</visible> + <name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:MAN_SP</name> + <axis>1</axis> + <color> + <red>0</red> + <green>255</green> + <blue>0</blue> + </color> + <trace_type>AREA</trace_type> + <linewidth>2</linewidth> + <line_style>SOLID</line_style> + <point_type>NONE</point_type> + <point_size>2</point_size> + <waveform_index>0</waveform_index> + <period>0.0</period> + <ring_size>5000</ring_size> + <request>RAW</request> + <archive> + <name>pbraw://archiver-01.tn.esss.lu.se:17668/retrieval</name> + <url>pbraw://archiver-01.tn.esss.lu.se:17668/retrieval</url> + <key>1</key> + </archive> + </pv> + <pv> + <display_name>${SecSubPID}:${Dis}-PID-${IndexPID}:Output</display_name> + <visible>true</visible> + <name>${SecSubPID}:${Dis}-PID-${IndexPID}:LMN</name> + <axis>2</axis> + <color> + <red>0</red> + <green>0</green> + <blue>255</blue> + </color> + <trace_type>AREA</trace_type> + <linewidth>2</linewidth> + <line_style>SOLID</line_style> + <point_type>NONE</point_type> + <point_size>2</point_size> + <waveform_index>0</waveform_index> + <period>0.0</period> + <ring_size>5000</ring_size> + <request>RAW</request> + <archive> + <name>pbraw://archiver-01.tn.esss.lu.se:17668/retrieval</name> + <url>pbraw://archiver-01.tn.esss.lu.se:17668/retrieval</url> + <key>1</key> + </archive> + </pv> + </pvlist> +</databrowser> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/CP_ControlPump_Faceplate.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/CP_ControlPump_Faceplate.bob new file mode 100644 index 0000000000000000000000000000000000000000..e25deb5a0b20e4f0d585a1a7f51975b08fa71cf3 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/CP_ControlPump_Faceplate.bob @@ -0,0 +1,3210 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>CP_ControlPUMP_Faceplate</name> + <width>960</width> + <height>1135</height> + <widget type="tabs" version="2.0.0"> + <name>Tabs</name> + <tabs> + <tab> + <name>Status</name> + <children> + <widget type="group" version="2.0.0"> + <name>group.status</name> + <x>9</x> + <y>10</y> + <width>306</width> + <height>557</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.border</name> + <x>3</x> + <y>2</y> + <width>301</width> + <height>545</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.background</name> + <x>8</x> + <y>35</y> + <width>290</width> + <height>353</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STATUS</name> + <text>STATUS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.background_1</name> + <x>8</x> + <y>394</y> + <width>290</width> + <height>79</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="linear-meter" version="2.0.0"> + <name>MET_PumpSpeed</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:PumpActSpeed</pv_name> + <x>15</x> + <y>45</y> + <width>270</width> + <precision>2</precision> + <level_hihi>0.0</level_hihi> + <level_high>0.0</level_high> + <level_low>0.0</level_low> + <level_lolo>0.0</level_lolo> + <show_hihi>false</show_hihi> + <show_high>false</show_high> + <show_low>false</show_low> + <show_lolo>false</show_lolo> + <title>Pump Actual Speed (1/min)</title> + <tooltip>Pump speed in percent</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <auto_scale>false</auto_scale> + <maximum>2815.0</maximum> + <limits_from_pv>false</limits_from_pv> + <unit_from_pv>false</unit_from_pv> + <major_tick_space>400.0</major_tick_space> + <minor_tick_space>100.0</minor_tick_space> + <lcd_visible>false</lcd_visible> + <bar_color> + <color name="PRIMARY" red="0" green="148" blue="202"> + </color> + </bar_color> + </widget> + <widget type="linear-meter" version="2.0.0"> + <name>MET_PumpSetpoint</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:PumpSP</pv_name> + <x>15</x> + <y>125</y> + <width>270</width> + <precision>2</precision> + <level_hihi>0.0</level_hihi> + <level_high>0.0</level_high> + <level_low>0.0</level_low> + <level_lolo>0.0</level_lolo> + <show_hihi>false</show_hihi> + <show_high>false</show_high> + <show_low>false</show_low> + <show_lolo>false</show_lolo> + <title>Setpoint (1/min)</title> + <actions> + </actions> + <rules> + <rule name="Title" prop_id="title" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value>Setpoint (1/min)</value> + </exp> + <exp bool_exp="pv0 == 0"> + <value>Setpoint (1/min) - Not Retained on Mode Change</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:KeepSP</pv_name> + </rule> + </rules> + <tooltip>Pump setpoint in percent</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <auto_scale>false</auto_scale> + <maximum>2815.0</maximum> + <limits_from_pv>false</limits_from_pv> + <unit_from_pv>false</unit_from_pv> + <major_tick_space>400.0</major_tick_space> + <minor_tick_space>100.0</minor_tick_space> + <lcd_visible>false</lcd_visible> + <bar_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </bar_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OutFreq</name> + <text>Output Frequency:</text> + <x>28</x> + <y>221</y> + <width>130</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_Frequency</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:PumpOUTFreq</pv_name> + <x>167</x> + <y>221</y> + <height>25</height> + <precision>2</precision> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OutVoltage</name> + <text>Output Voltage:</text> + <x>28</x> + <y>252</y> + <width>130</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_OutVoltage</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:PumpOUTVoltage</pv_name> + <x>167</x> + <y>252</y> + <height>25</height> + <precision>2</precision> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OutCurrent</name> + <text>Output Current:</text> + <x>28</x> + <y>283</y> + <width>130</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_OutCurrent</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:PumpOUTCurrent</pv_name> + <x>167</x> + <y>283</y> + <height>25</height> + <precision>2</precision> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OutPower</name> + <text>Output Power:</text> + <x>28</x> + <y>315</y> + <width>130</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_OutPower</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:PumpOUTPower</pv_name> + <x>167</x> + <y>315</y> + <height>25</height> + <precision>2</precision> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PUTemp</name> + <text>Power Unit Temp:</text> + <x>28</x> + <y>347</y> + <width>130</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_PUTemp</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:PumpPUTemp</pv_name> + <x>167</x> + <y>347</y> + <height>25</height> + <precision>2</precision> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Vibration</name> + <text>Vibration:</text> + <x>28</x> + <y>411</y> + <width>130</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_Vibration</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Vibration</pv_name> + <x>167</x> + <y>411</y> + <height>25</height> + <precision>2</precision> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.background_2</name> + <x>8</x> + <y>479</y> + <width>290</width> + <height>62</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OperatingHours:</name> + <text>Operating Hours:</text> + <x>28</x> + <y>494</y> + <width>130</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_PumpOperHrs</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OperHours</pv_name> + <x>167</x> + <y>496</y> + <height>25</height> + <precision>2</precision> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Vibration_6</name> + <text>Range:</text> + <x>18</x> + <y>441</y> + <width>50</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_Vibration_6</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:VB_ScaleLOW</pv_name> + <x>70</x> + <y>443</y> + <width>79</width> + <height>25</height> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_Vibration_7</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:VB_ScaleHIGH</pv_name> + <x>167</x> + <y>443</y> + <height>25</height> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Vibration_7</name> + <text>to</text> + <x>151</x> + <y>441</y> + <width>50</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.op.modes</name> + <x>10</x> + <y>570</y> + <width>302</width> + <height>370</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.border</name> + <width>300</width> + <height>360</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>320</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OP_MODES</name> + <text>OP MODES</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Auto</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Auto</pv_name> + <x>100</x> + <y>50</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_AUTO</name> + <text>AUTO</text> + <x>135</x> + <y>50</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Manual</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Manual</pv_name> + <x>100</x> + <y>85</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_MANUAL</name> + <text>MANUAL</text> + <x>135</x> + <y>85</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Forced</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <x>100</x> + <y>120</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_FORCED</name> + <text>FORCED</text> + <x>131</x> + <y>120</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_MESSAGES</name> + <text>MESSAGES</text> + <x>5</x> + <y>160</y> + <width>290</width> + <font> + <font name="Fine Print" family="Source Sans Pro" style="REGULAR" size="14.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitMan</name> + <text>- Manual mode inhibited</text> + <x>15</x> + <y>190</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Manual</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitForce</name> + <text>- Force mode inhibited</text> + <x>15</x> + <y>210</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Force</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm_DIS</name> + <text>- Alarms latching disabled</text> + <x>15</x> + <y>230</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm_ENA</name> + <text>- Alarms latching enabled</text> + <x>15</x> + <y>230</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_RampingON</name> + <text>- Ramping enabled</text> + <x>15</x> + <y>250</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ramping</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_RampingON_1</name> + <text>- Ramping disabled</text> + <x>15</x> + <y>250</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ramping</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitMan_1</name> + <text>- Keep SP from Auto mode</text> + <x>15</x> + <y>270</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:KeepSP</pv_name> + </rule> + </rules> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.modify</name> + <x>629</x> + <y>789</y> + <height>151</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.modify.border</name> + <width>300</width> + <height>141</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Modify</name> + <text>MODIFY/FORCE</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.modify.background_1</name> + <x>5</x> + <y>31</y> + <width>290</width> + <height>104</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_StepValue</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Step</pv_name> + <x>194</x> + <y>94</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback step value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_StepValue</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Step</pv_name> + <x>95</x> + <y>94</y> + <width>92</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <tooltip>Step value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <limits_from_pv>false</limits_from_pv> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_StepValue</name> + <text>Step Value:</text> + <x>6</x> + <y>91</y> + <width>101</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_Setpoint</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Setpoint</pv_name> + <x>194</x> + <y>41</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback modified setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_ForcePumpSP</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Setpoint</pv_name> + <x>76</x> + <y>41</y> + <width>111</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="IncrementRule" prop_id="increment" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Step</pv_name> + </rule> + </rules> + <tooltip>Modify Setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <maximum>2815.0</maximum> + <limits_from_pv>false</limits_from_pv> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_FrcSetpoint</name> + <text>Setpoint:</text> + <x>7</x> + <y>41</y> + <width>106</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="polyline" version="2.0.0"> + <name>Polyline</name> + <x>133</x> + <y>72</y> + <width>41</width> + <line_color> + <color name="WHITE" red="255" green="255" blue="255"> + </color> + </line_color> + <points> + <point x="0.0" y="20.0"> + </point> + <point x="0.0" y="10.0"> + </point> + <point x="40.32786885245899" y="10.0"> + </point> + <point x="40.32786885245899" y="0.0"> + </point> + </points> + </widget> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>buttons.bar</name> + <x>10</x> + <y>940</y> + <width>920</width> + <height>80</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_AUTO</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Auto</pv_name> + <text>AUTO</text> + <x>13</x> + <y>981</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableAutoBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>AUTO operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_MANUAL</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Manual</pv_name> + <text>MANUAL</text> + <x>218</x> + <y>981</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableManualBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>MANUAL operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Force</pv_name> + <text>FORCE</text> + <x>423</x> + <y>981</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableForcedBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>FORCE operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_ACK</name> + <actions> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_AckAlarm</pv_name> + <value>1</value> + <description>Acknowledge alarms</description> + </action> + </actions> + <text>Acknowledge Alarm</text> + <x>745</x> + <y>981</y> + <width>180</width> + <height>33</height> + <background_color> + <color name="ORANGE" red="254" green="194" blue="81"> + </color> + </background_color> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1) || (pv2 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0) && (pv2 == 1)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + <tooltip>Acknowledge alarms</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_UNLOCK</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceUnlock</pv_name> + <value>1</value> + <description>Write ForceUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <value>0</value> + <description>Write EnaForceUnlock</description> + </action> + </actions> + <text>FORCE UNLOCK</text> + <x>745</x> + <y>945</y> + <width>180</width> + <height>33</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 1)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 0)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force unlock device</tooltip> + </widget> + <widget type="group" version="2.0.0"> + <name>group.alarms</name> + <x>630</x> + <y>10</y> + <width>302</width> + <height>384</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.border</name> + <width>300</width> + <height>380</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>338</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_DriveWarning</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Warning</pv_name> + <x>70</x> + <y>85</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>Warning bit from the Sinamics Drive</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_DriveWarning</name> + <text>Sinamics Drive Warning</text> + <x>105</x> + <y>85</y> + <width>177</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_IO_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:SPDiscrepancy</pv_name> + <x>70</x> + <y>120</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Internal Sinamics SP Discrepancy</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ILOCK_START</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:StartInterlock</pv_name> + <x>70</x> + <y>327</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>Start interlock</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ILOCK_START</name> + <text>Start Interlock</text> + <x>106</x> + <y>327</y> + <width>153</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALARMS</name> + <text>ALARMS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackgroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Group alarm</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_INTERLOCKS</name> + <text>INTERLOCKS</text> + <x>5</x> + <y>270</y> + <width>290</width> + <height>35</height> + <font> + <font family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackgroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Group interlock</tooltip> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_DriveAlarm</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Alarm</pv_name> + <x>70</x> + <y>50</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Alarm bit from the Sinamics drive</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_DriveAlarm</name> + <text>Sinamics Drive Alarm</text> + <x>105</x> + <y>48</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_SPDiscrepancy</name> + <text>SP Discrepancy</text> + <x>105</x> + <y>120</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_TorqueLimit</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:TorqueLimit</pv_name> + <x>70</x> + <y>155</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Sinamics torque limit</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_TorqueLimit</name> + <text>Torque limit</text> + <x>105</x> + <y>155</y> + <width>83</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_ModuleDiagError</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ModuleDiagError</pv_name> + <x>70</x> + <y>225</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Profinet Problem</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_ModuleDiagError</name> + <text>ProfiNet error</text> + <x>105</x> + <y>225</y> + <width>177</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <tooltip>Drive temperature is over the limit!</tooltip> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_DriveOverLoad</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DriveOverLoad</pv_name> + <x>70</x> + <y>190</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Sinamics drive Overload</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_DriveOverLoad</name> + <text>Drive Overload</text> + <x>105</x> + <y>188</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <tooltip>Motor temperature is over the limit!</tooltip> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.Pump_Status</name> + <x>320</x> + <y>10</y> + <width>301</width> + <height>325</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.Pump_Status.border</name> + <width>300</width> + <height>321</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.Pump_Status.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>279</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_STS_Stopped</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Running</pv_name> + <x>51</x> + <y>121</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="ON" red="22" green="222" blue="33"> + </color> + </on_color> + <tooltip>Pump running</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_Running</name> + <text>Running</text> + <x>90</x> + <y>121</y> + <width>110</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_STS_SetpointAttained</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:RemoteControlReq</pv_name> + <x>52</x> + <y>227</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="ON" red="22" green="222" blue="33"> + </color> + </on_color> + <tooltip>Remote control Required</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PUMP_STATUS</name> + <text>PUMP STATUS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Group alarm</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_RemoteRequired</name> + <text>Remote Control Required</text> + <x>90</x> + <y>227</y> + <width>173</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_STS_Running</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ready</pv_name> + <x>51</x> + <y>85</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="ON" red="22" green="222" blue="33"> + </color> + </on_color> + <tooltip>Drive Ready for speed control</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_Ready</name> + <text>Ready</text> + <x>90</x> + <y>85</y> + <width>83</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_STS_DriveOn</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:RdyForSwitchON</pv_name> + <x>51</x> + <y>50</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="ON" red="22" green="222" blue="33"> + </color> + </on_color> + <tooltip>Drive Ready to switch on</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_RdySwitchOn</name> + <text>Ready to switch ON</text> + <x>90</x> + <y>50</y> + <width>153</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_STS_SetpointEnabled</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibited</pv_name> + <x>52</x> + <y>192</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="ON" red="22" green="222" blue="33"> + </color> + </on_color> + <tooltip>Drive Inhibited</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_Inhibited</name> + <text>Inhibited</text> + <x>90</x> + <y>192</y> + <width>130</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_STS_Inhibited</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:CoastStop</pv_name> + <x>52</x> + <y>156</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="ON" red="22" green="222" blue="33"> + </color> + </on_color> + <tooltip>Pump Stopped</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_CoastStop</name> + <text>Stopped</text> + <x>90</x> + <y>156</y> + <width>130</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_STS_SetpointAttained_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:MaxSpeedReached</pv_name> + <x>53</x> + <y>263</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="ON" red="22" green="222" blue="33"> + </color> + </on_color> + <tooltip>Speed reached</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_MaxSpeedReached</name> + <text>Speed Reached</text> + <x>90</x> + <y>263</y> + <width>173</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.Command_Status</name> + <x>320</x> + <y>341</y> + <width>302</width> + <height>226</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.Command_Status.border</name> + <width>300</width> + <height>216</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.Command_Status.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>175</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Vibration</name> + <text>VIBRATION STATUS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Group alarm</tooltip> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_VB_HIHI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:VB_HIHI</pv_name> + <x>51</x> + <y>50</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Vibration Alarm </tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_VB_HIHI</name> + <text>HIGH ALARM</text> + <x>87</x> + <y>50</y> + <width>181</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_VB_HI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:VB_HI</pv_name> + <x>51</x> + <y>84</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>Vibration warning</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_VB_HI</name> + <text>HIGH WARNING</text> + <x>86</x> + <y>84</y> + <width>112</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_VB_IO_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:VB_IO_Error</pv_name> + <x>51</x> + <y>119</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Vibration analog input error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_VB_IO_Error</name> + <text>I/O Error</text> + <x>86</x> + <y>119</y> + <width>177</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_VB_Module_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:VB_Module_Error</pv_name> + <x>51</x> + <y>153</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Siemens module for vibration input error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_VB_Module_Error</name> + <text>Module Error</text> + <x>86</x> + <y>151</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.Command_Status_1</name> + <x>318</x> + <y>571</y> + <width>302</width> + <height>369</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.Command_Status.border_1</name> + <width>300</width> + <height>360</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_MOTOR_START_STOP</name> + <text>MANUAL PUMP CONTROL</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Group alarm</tooltip> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.Command_Status.background_1</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>320</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_START</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_PumpStart</pv_name> + <text>START</text> + <x>87</x> + <y>157</y> + <width>130</width> + <height>33</height> + <background_color> + <color name="GREEN" red="61" green="216" blue="61"> + </color> + </background_color> + <rules> + <rule name="EnabledRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0==0"> + <value>true</value> + </exp> + <exp bool_exp="pv0==1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Auto</pv_name> + </rule> + </rules> + <tooltip>Start pump</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_STOP2</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Stop</pv_name> + <text>STOP</text> + <x>87</x> + <y>233</y> + <width>130</width> + <height>33</height> + <background_color> + <color name="RED-BACKGROUND" red="225" green="192" blue="188"> + </color> + </background_color> + <rules> + <rule name="EnabledRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0==0"> + <value>true</value> + </exp> + <exp bool_exp="pv0==1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Auto</pv_name> + </rule> + </rules> + <tooltip>Stop pump</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_STOP2_1</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_RampedStop</pv_name> + <text>STOP RAMPED</text> + <x>87</x> + <y>292</y> + <width>130</width> + <height>33</height> + <background_color> + <color name="RED-BACKGROUND" red="225" green="192" blue="188"> + </color> + </background_color> + <rules> + <rule name="Enable rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1==1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1==0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ramping</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Auto</pv_name> + </rule> + </rules> + <tooltip>Stop pump ramped</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>Picture</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MotorColor</pv_name> + <symbols> + <symbol>../../symbols/custom/Motor_red.png</symbol> + <symbol>../../symbols/custom/Motor_blue.png</symbol> + <symbol>../../symbols/custom/Motor_green.png</symbol> + <symbol>../../symbols/custom/Motor_white.png</symbol> + <symbol>../../symbols/custom/Motor_yellow.png</symbol> + </symbols> + <x>83</x> + <y>40</y> + <width>130</width> + <height>120</height> + <tooltip></tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>IND_StartState</name> + <text>N/A</text> + <x>92</x> + <y>190</y> + <width>120</width> + <height>25</height> + <font> + <font family="Source Code Pro" style="REGULAR" size="16.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="Read_Background" red="230" green="235" blue="232"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>NOT MOVING</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>POWERING PU</value> + </exp> + <exp bool_exp="pv0 == 2"> + <value>PU POWERED</value> + </exp> + <exp bool_exp="pv0 == 3"> + <value>STARTING</value> + </exp> + <exp bool_exp="pv0 == 4"> + <value>STARTED</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:StartState</pv_name> + </rule> + </rules> + <tooltip>Startup state</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>IND_StopState</name> + <text>N/A</text> + <x>92</x> + <y>266</y> + <width>120</width> + <height>25</height> + <font> + <font family="Source Code Pro" style="REGULAR" size="16.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="Read_Background" red="230" green="235" blue="232"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value> </value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>PREPARE STOP</value> + </exp> + <exp bool_exp="pv0 == 2"> + <value>RAMPING DOWN</value> + </exp> + <exp bool_exp="pv0 == 3"> + <value>MOTOR STOP</value> + </exp> + <exp bool_exp="pv0 == 4"> + <value>PU STOP</value> + </exp> + <exp bool_exp="pv0 == 5"> + <value>STOPPED</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:StopState</pv_name> + </rule> + </rules> + <tooltip>Startup state</tooltip> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.Command_Status_2</name> + <x>629</x> + <y>571</y> + <height>217</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.Command_Status.border_2</name> + <width>300</width> + <height>212</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.Command_Status.background_2</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>170</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Vibration_8</name> + <text>RAMPING STATUS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Group alarm</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_RampTime_1</name> + <text>Actual Direction:</text> + <x>8</x> + <y>43</y> + <width>135</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>IND_Direction</name> + <text>UP</text> + <x>153</x> + <y>43</y> + <width>135</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="Read_Background" red="230" green="235" blue="232"> + </color> + </background_color> + <transparent>false</transparent> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv2 == 0"> + <value>DISABLED</value> + </exp> + <exp bool_exp="pv0==1"> + <value>ACCEL</value> + </exp> + <exp bool_exp="pv1==1"> + <value>DECEl</value> + </exp> + <exp bool_exp="(pv0 == 0)&&(pv1==0)"> + <value>NOT MOVING</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Accelerating</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Decelerating</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ramping</pv_name> + </rule> + </rules> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_ActRampUPSpeed</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ActRampSpeed</pv_name> + <x>153</x> + <y>82</y> + <width>135</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Actual Ramp Speed</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Ract</name> + <text>Actual Ramp Speed:</text> + <x>9</x> + <y>82</y> + <width>135</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_RAMPON</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_RampON</pv_name> + <text>Ramping ON</text> + <x>14</x> + <y>156</y> + <width>130</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ramping</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>turn ramping ON</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_RAMPOFF</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_RampOFF</pv_name> + <text>Ramping OFF</text> + <x>155</x> + <y>155</y> + <width>130</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ramping</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>turn ramping OFF</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_RampingNoAllowed</name> + <text>- Ramping Parameters are Zero!</text> + <x>15</x> + <y>129</y> + <width>268</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:RampSettingOK</pv_name> + </rule> + </rules> + </widget> + </widget> + </children> + </tab> + <tab> + <name>Trend</name> + <children> + <widget type="databrowser" version="2.0.0"> + <name>DataBrowser</name> + <file>CP_ControlPump_Faceplate_Trend.plt</file> + <x>1</x> + <y>3</y> + <width>927</width> + <height>721</height> + </widget> + </children> + </tab> + <tab> + <name>Settings</name> + <children> + <widget type="group" version="2.0.0"> + <name>group.ramping</name> + <x>8</x> + <y>11</y> + <width>303</width> + <height>264</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.ramping.border</name> + <width>300</width> + <height>260</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.ramping.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>220</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Ramping</name> + <text>RAMPING SETTINGS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_RampTime</name> + <text>Time:</text> + <x>10</x> + <y>70</y> + <width>75</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_RampingTime</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_RampUPTIME</pv_name> + <x>70</x> + <y>70</y> + <width>115</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:RemoteControlReq</pv_name> + </rule> + </rules> + <tooltip>Tamping UP time</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <maximum>3600.0</maximum> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_RampingTime</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_RampUPTIME</pv_name> + <x>195</x> + <y>70</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>$(pv_name)$(pv_value)</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_RampRange</name> + <text>Range:</text> + <x>10</x> + <y>110</y> + <width>75</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_RampingRange</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_RampUPRANGE</pv_name> + <x>70</x> + <y>110</y> + <width>115</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:RemoteControlReq</pv_name> + </rule> + </rules> + <tooltip>Ramping UP range</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <maximum>2815.0</maximum> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_RampingRange</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_RampUPRANGE</pv_name> + <x>195</x> + <y>110</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>$(pv_name)$(pv_value)</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_RampTime_2</name> + <text>Time:</text> + <x>10</x> + <y>178</y> + <width>75</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_RampingTime_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_RampDNTIME</pv_name> + <x>70</x> + <y>178</y> + <width>115</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:RemoteControlReq</pv_name> + </rule> + </rules> + <tooltip>Ramping DOWN Time</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <maximum>3600.0</maximum> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_RampingTime_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_RampDNTIME</pv_name> + <x>195</x> + <y>178</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>$(pv_name)$(pv_value)</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_RampRange_1</name> + <text>Range:</text> + <x>10</x> + <y>218</y> + <width>75</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_RampingRange_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_RampDNRANGE</pv_name> + <x>70</x> + <y>218</y> + <width>115</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:RemoteControlReq</pv_name> + </rule> + </rules> + <tooltip>Ramping DOWN Range</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <maximum>2815.0</maximum> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_RampingRange_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_RampDNRANGE</pv_name> + <x>195</x> + <y>218</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>$(pv_name)$(pv_value)</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_RdySwitchOn_1</name> + <text>Motor ramping UP parameters</text> + <x>10</x> + <y>39</y> + <width>250</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_RdySwitchOn_2</name> + <text>Motor ramping DOWN parameters</text> + <x>10</x> + <y>147</y> + <width>250</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.settings</name> + <x>318</x> + <y>11</y> + <width>304</width> + <height>265</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.settings.border</name> + <width>300</width> + <height>260</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.settings.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>220</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Settings</name> + <text>VIBRATION SETTINGS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_VB_HIGH</name> + <text>Vibr. HIHI:</text> + <x>11</x> + <y>53</y> + <width>70</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_VB_HIGH</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:VB_P_Limit_HIHI</pv_name> + <x>91</x> + <y>52</y> + <width>95</width> + <height>25</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="MinimumRule" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:VB_ScaleLOW</pv_name> + </rule> + <rule name="MaximumRule" prop_id="maximum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:VB_ScaleHIGH</pv_name> + </rule> + </rules> + <tooltip>Alarm HIGH</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <limits_from_pv>false</limits_from_pv> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_VB_HIGH</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:VB_FB_Limit_HIHI</pv_name> + <x>196</x> + <y>52</y> + <width>90</width> + <height>25</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>$(pv_name)$(pv_value)</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_VB_HIGH_1</name> + <text>Vibr. HI:</text> + <x>11</x> + <y>90</y> + <width>70</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_VB_HIGH_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:VB_P_Limit_HI</pv_name> + <x>91</x> + <y>89</y> + <width>95</width> + <height>25</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="MinimumRule" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:VB_ScaleLOW</pv_name> + </rule> + <rule name="MaximumRule" prop_id="maximum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:VB_ScaleHIGH</pv_name> + </rule> + </rules> + <tooltip>Warning HIGH</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <limits_from_pv>false</limits_from_pv> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_VB_HIGH_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:VB_FB_Limit_HI</pv_name> + <x>196</x> + <y>89</y> + <width>90</width> + <height>25</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>$(pv_name)$(pv_value)</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + </widget> + </children> + </tab> + </tabs> + <x>10</x> + <y>51</y> + <width>943</width> + <height>1073</height> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Header Bar</name> + <width>958</width> + <height>50</height> + <line_width>0</line_width> + <line_color> + <color red="0" green="0" blue="255" alpha="0"> + </color> + </line_color> + <background_color> + <color name="PRIMARY-HEADER-BACKGROUND" red="151" green="188" blue="202"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HeaderPVName</name> + <text>${SecSub}:${Dis}-${Dev}-${Index}</text> + <x>20</x> + <width>715</width> + <height>50</height> + <font> + <font name="Header 1" family="Source Sans Pro" style="BOLD_ITALIC" size="36.0"> + </font> + </font> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Unlocked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>1</value> + <description>Write CMD_DevUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <value>0</value> + <description>Write CMD_DevLock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + </actions> + <text>UNLOCK</text> + <x>702</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false) || (pv1 == true) || (pv2 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true) && (pv1 == false) && (pv2 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Unlock this device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>Action Button</name> + <x>730</x> + <y>50</y> + <width>1</width> + <height>1</height> + <tooltip>$(actions)</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>Picture_Simple</name> + <symbols> + <symbol>../../symbols/custom/collapse-arrows.png</symbol> + </symbols> + <x>896</x> + <y>9</y> + <width>51</width> + <height>35</height> + <tooltip></tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>Action Button_Expand</name> + <actions execute_as_one="true"> + <action type="open_display"> + <file>CP_ControlPump_Faceplate_Simple.bob</file> + <target>standalone</target> + <description>Open Display</description> + </action> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[ScriptUtil = org.csstudio.display.builder.runtime.script.ScriptUtil; +ScriptUtil.closeDisplay(widget); +]]></text> + </script> + <description>Execute Script</description> + </action> + </actions> + <text></text> + <x>901</x> + <y>7</y> + <width>44</width> + <height>42</height> + <transparent>true</transparent> + <tooltip>Open Compact View</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Locked_1</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>0</value> + <description>Write CMD_DEVUNLOCK</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock(99)</pv_name> + <value>1</value> + <description>Run Lock script</description> + </action> + </actions> + <text>LOCK</text> + <x>804</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + </rule> + </rules> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: generate unique Machine ID from the network adapters to use it for locking mechanism*/ + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); + +var Lock = pvs[0];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock*/ +var Cmd_DevLock = pvs[1];/*${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock*/ +var P_Faceplate_LockID = pvs[2];/*${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID*/ +var Inhibit_Lock = pvs[3];/*${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock*/ +var Faceplate_LockID = pvs[4];/*${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID*/ +var BlockIcon_LockID = pvs[5];/*${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID*/ +var EnaForceUnlock = pvs[6];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock*/ +var DevLocked = pvs[7];/*${SecSub}:${Dis}-${Dev}-${Index}:DevLocked*/ + + + + +var PV1 = PVUtil.getLong(Faceplate_LockID); /*Faceplate_LockID*/ +var PV2 = PVUtil.getLong(BlockIcon_LockID); /*BlockIcon_LockID*/ + +//OnShow +if (PVUtil.getLong(DevLocked) == 1) { /*DevLocked*/ + + if (PV1.toString() == PV2.toString()){ /*FaceplateLockID != BlockIconeLockID*/ + + logger.info(" Owner"); + EnaForceUnlock.setValue(0); /*Write EnaForceUnlock*/ + + } else + { + logger.info(" Faceplate FaceplateLockID "+ PV1); + logger.info(" Faceplate BlockIconeLockID "+ PV2); + + logger.info(" Guest"); + EnaForceUnlock.setValue(1); /*Write EnaForceUnlock*/ + } + + + +} +// OnClick +if (PVUtil.getLong(Lock) != 99) { /*loc://Lock, check if the script was triggered because of a button press or initilization*/ + if (PVUtil.getLong(Inhibit_Lock) == 0) { /*Inhibit_lock, check if locking is inhibited*/ + + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + UniqueText = UniqueText + intf.getName() + intf.getDisplayName(); + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + UniqueText = UniqueText + enumIpAddr.nextElement().toString(); + } + } + + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText); + if (crc >=2147483647){ crc = crc - 2147483647;} + + logger.info(" Faceplate machine ID: "+crc); + P_Faceplate_LockID.setValue(crc); /*Write P_Faceplate_LockID*/ + Cmd_DevLock.setValue(1); /*Write Lock*/ + + } /*Lock inhibit*/ +} /*onshow*/ + +]]></text> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID</pv_name> + <pv_name trigger="false">loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + </script> + </scripts> + <tooltip>Lock this device</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/CP_ControlPump_Faceplate_Simple.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/CP_ControlPump_Faceplate_Simple.bob new file mode 100644 index 0000000000000000000000000000000000000000..f38a4a7c7a1fd71f185c359fc28d154feb383ace --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/CP_ControlPump_Faceplate_Simple.bob @@ -0,0 +1,1779 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>CP_ControlPUMP_Faceplate_Simple</name> + <width>885</width> + <height>460</height> + <widget type="rectangle" version="2.0.0"> + <name>Header Bar</name> + <width>877</width> + <height>43</height> + <line_width>0</line_width> + <line_color> + <color red="0" green="0" blue="255" alpha="0"> + </color> + </line_color> + <background_color> + <color name="PRIMARY-HEADER-BACKGROUND" red="151" green="188" blue="202"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HeaderPVName</name> + <text>${SecSub}:${Dis}-${Dev}-${Index}</text> + <x>12</x> + <y>3</y> + <width>570</width> + <height>36</height> + <font> + <font family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Unlocked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>1</value> + <description>Write CMD_DevUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <value>0</value> + <description>Write CMD_DevLock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + </actions> + <text>UNLOCK</text> + <x>631</x> + <y>6</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false) || (pv1 == true) || (pv2 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true) && (pv1 == false) && (pv2 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Unlock this device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Locked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>0</value> + <description>Write CMD_DEVUNLOCK</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock(99)</pv_name> + <value>1</value> + <description>Run Lock script</description> + </action> + </actions> + <text>LOCK</text> + <x>727</x> + <y>6</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + </rule> + </rules> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: generate unique Machine ID from the network adapters to use it for locking mechanism*/ + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); + +var Lock = pvs[0];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock*/ +var Cmd_DevLock = pvs[1];/*${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock*/ +var P_Faceplate_LockID = pvs[2];/*${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID*/ +var Inhibit_Lock = pvs[3];/*${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock*/ +var Faceplate_LockID = pvs[4];/*${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID*/ +var BlockIcon_LockID = pvs[5];/*${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID*/ +var EnaForceUnlock = pvs[6];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock*/ +var DevLocked = pvs[7];/*${SecSub}:${Dis}-${Dev}-${Index}:DevLocked*/ + + + + +var PV1 = PVUtil.getLong(Faceplate_LockID); /*Faceplate_LockID*/ +var PV2 = PVUtil.getLong(BlockIcon_LockID); /*BlockIcon_LockID*/ + +//OnShow +if (PVUtil.getLong(DevLocked) == 1) { /*DevLocked*/ + + if (PV1.toString() == PV2.toString()){ /*FaceplateLockID != BlockIconeLockID*/ + + logger.info(" Owner"); + EnaForceUnlock.setValue(0); /*Write EnaForceUnlock*/ + + } else + { + logger.info(" Faceplate FaceplateLockID "+ PV1); + logger.info(" Faceplate BlockIconeLockID "+ PV2); + + logger.info(" Guest"); + EnaForceUnlock.setValue(1); /*Write EnaForceUnlock*/ + } + + + +} +// OnClick +if (PVUtil.getLong(Lock) != 99) { /*loc://Lock, check if the script was triggered because of a button press or initilization*/ + if (PVUtil.getLong(Inhibit_Lock) == 0) { /*Inhibit_lock, check if locking is inhibited*/ + + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + UniqueText = UniqueText + intf.getName() + intf.getDisplayName(); + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + UniqueText = UniqueText + enumIpAddr.nextElement().toString(); + } + } + + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText); + if (crc >=2147483647){ crc = crc - 2147483647;} + + logger.info(" Faceplate machine ID: "+crc); + P_Faceplate_LockID.setValue(crc); /*Write P_Faceplate_LockID*/ + Cmd_DevLock.setValue(1); /*Write Lock*/ + + } /*Lock inhibit*/ +} /*onshow*/ + +]]></text> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID</pv_name> + <pv_name trigger="false">loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + </script> + </scripts> + <tooltip>Lock this device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>Action Button</name> + <x>721</x> + <y>44</y> + <width>1</width> + <height>1</height> + <tooltip>$(actions)</tooltip> + </widget> + <widget type="group" version="2.0.0"> + <name>group.status</name> + <x>1</x> + <y>44</y> + <width>288</width> + <height>332</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.border</name> + <x>3</x> + <y>2</y> + <width>280</width> + <height>324</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STATUS</name> + <text>STATUS</text> + <width>280</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.background_1</name> + <x>8</x> + <y>276</y> + <width>270</width> + <height>42</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.background</name> + <x>8</x> + <y>35</y> + <width>270</width> + <height>230</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OutFreq</name> + <text>Output Frequency:</text> + <x>17</x> + <y>106</y> + <width>130</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_Frequency</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:PumpOUTFreq</pv_name> + <x>156</x> + <y>106</y> + <height>25</height> + <precision>2</precision> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OutVoltage</name> + <text>Output Voltage:</text> + <x>17</x> + <y>137</y> + <width>130</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_OutVoltage</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:PumpOUTVoltage</pv_name> + <x>156</x> + <y>137</y> + <height>25</height> + <precision>2</precision> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OutCurrent</name> + <text>Output Current:</text> + <x>17</x> + <y>168</y> + <width>130</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_OutCurrent</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:PumpOUTCurrent</pv_name> + <x>156</x> + <y>168</y> + <height>25</height> + <precision>2</precision> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OutPower</name> + <text>Output Power:</text> + <x>17</x> + <y>200</y> + <width>130</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_OutPower</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:PumpOUTPower</pv_name> + <x>156</x> + <y>200</y> + <height>25</height> + <precision>2</precision> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PUTemp</name> + <text>Power Unit Temp:</text> + <x>17</x> + <y>232</y> + <width>130</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_PUTemp</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:PumpPUTemp</pv_name> + <x>156</x> + <y>232</y> + <height>25</height> + <precision>2</precision> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Vibration</name> + <text>Vibration:</text> + <x>17</x> + <y>284</y> + <width>130</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_Vibration</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Vibration</pv_name> + <x>155</x> + <y>284</y> + <width>101</width> + <height>25</height> + <precision>2</precision> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>MET_PumpSpeed</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:PumpActSpeed</pv_name> + <x>156</x> + <y>44</y> + <height>25</height> + <precision>2</precision> + <tooltip>Pump speed in percent</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>MET_PumpSetpoint</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:PumpSP</pv_name> + <x>156</x> + <y>75</y> + <height>25</height> + <precision>2</precision> + <actions> + </actions> + <tooltip>Pump setpoint in percent</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OutFreq_1</name> + <text>Setpoint:</text> + <x>16</x> + <y>74</y> + <width>130</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OutFreq_2</name> + <text>Actual Speed:</text> + <x>15</x> + <y>44</y> + <width>130</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.Pump_Status</name> + <x>596</x> + <y>46</y> + <width>285</width> + <height>325</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.Pump_Status.border</name> + <width>280</width> + <height>324</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.Pump_Status.background</name> + <x>5</x> + <y>35</y> + <width>270</width> + <height>282</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_STS_Stopped</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Running</pv_name> + <x>19</x> + <y>105</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="ON" red="22" green="222" blue="33"> + </color> + </on_color> + <tooltip>Pump Rotation</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_Running</name> + <text>Running</text> + <x>49</x> + <y>105</y> + <width>120</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_STS_SetpointAttained</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:RemoteControlReq</pv_name> + <x>20</x> + <y>195</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="ON" red="22" green="222" blue="33"> + </color> + </on_color> + <tooltip>Setpoint Attained</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PUMP_STATUS</name> + <text>PUMP STATUS</text> + <width>280</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Group alarm</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_RemoteRequired</name> + <text>Remote Req.</text> + <x>49</x> + <y>195</y> + <width>120</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_STS_Running</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ready</pv_name> + <x>19</x> + <y>74</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="ON" red="22" green="222" blue="33"> + </color> + </on_color> + <tooltip>Pump Running</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_Ready</name> + <text>Ready</text> + <x>49</x> + <y>74</y> + <width>120</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_STS_DriveOn</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:RdyForSwitchON</pv_name> + <x>19</x> + <y>44</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="ON" red="22" green="222" blue="33"> + </color> + </on_color> + <tooltip>Automatic Trip Switch ON</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_RdySwitchOn</name> + <text>Rdy to ON</text> + <x>49</x> + <y>44</y> + <width>120</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_STS_SetpointEnabled</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibited</pv_name> + <x>20</x> + <y>165</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="ON" red="22" green="222" blue="33"> + </color> + </on_color> + <tooltip>Setpoint Enabled</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_Inhibited</name> + <text>Inhibited</text> + <x>49</x> + <y>165</y> + <width>120</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_STS_Inhibited</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:CoastStop</pv_name> + <x>20</x> + <y>135</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="ON" red="22" green="222" blue="33"> + </color> + </on_color> + <tooltip>Setpoint Enabled</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_CoastStop</name> + <text>Stoped</text> + <x>49</x> + <y>135</y> + <width>120</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_STS_SetpointAttained_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:MaxSpeedReached</pv_name> + <x>21</x> + <y>226</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="ON" red="22" green="222" blue="33"> + </color> + </on_color> + <tooltip>Setpoint Attained</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_MaxSpeedReached</name> + <text>Speed reached</text> + <x>49</x> + <y>226</y> + <width>120</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALARMS</name> + <text>ALARMS</text> + <x>5</x> + <y>259</y> + <width>270</width> + <height>28</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackgroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Group alarm</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_INTERLOCKS</name> + <text>INTERLOCK</text> + <x>5</x> + <y>288</y> + <width>270</width> + <height>24</height> + <font> + <font family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackgroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Group interlock</tooltip> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Auto</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Auto</pv_name> + <x>165</x> + <y>44</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_AUTO</name> + <text>AUTO</text> + <x>200</x> + <y>44</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Manual</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Manual</pv_name> + <x>165</x> + <y>75</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_MANUAL</name> + <text>MANUAL</text> + <x>200</x> + <y>75</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Forced</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <x>165</x> + <y>105</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_FORCED</name> + <text>FORCED</text> + <x>196</x> + <y>105</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>IND_StartState</name> + <text>N/A</text> + <x>151</x> + <y>192</y> + <width>120</width> + <height>25</height> + <font> + <font family="Source Code Pro" style="REGULAR" size="16.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="Read_Background" red="230" green="235" blue="232"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>NOT MOVING</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>POWERING PU</value> + </exp> + <exp bool_exp="pv0 == 2"> + <value>PU POWERED</value> + </exp> + <exp bool_exp="pv0 == 3"> + <value>STARTING</value> + </exp> + <exp bool_exp="pv0 == 4"> + <value>STARTED</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:StartState</pv_name> + </rule> + </rules> + <tooltip>Startup state</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>IND_StopState</name> + <text>N/A</text> + <x>151</x> + <y>224</y> + <width>120</width> + <height>25</height> + <font> + <font family="Source Code Pro" style="REGULAR" size="16.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="Read_Background" red="230" green="235" blue="232"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value> </value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>PREPARE STOP</value> + </exp> + <exp bool_exp="pv0 == 2"> + <value>RAMPING DOWN</value> + </exp> + <exp bool_exp="pv0 == 3"> + <value>MOTOR STOP</value> + </exp> + <exp bool_exp="pv0 == 4"> + <value>PU STOP</value> + </exp> + <exp bool_exp="pv0 == 5"> + <value>STOPPED</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:StopState</pv_name> + </rule> + </rules> + <tooltip>Startup state</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>Picture</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MotorColor</pv_name> + <symbols> + <symbol>../../symbols/custom/Motor_red.png</symbol> + <symbol>../../symbols/custom/Motor_blue.png</symbol> + <symbol>../../symbols/custom/Motor_green.png</symbol> + <symbol>../../symbols/custom/Motor_white.png</symbol> + <symbol>../../symbols/custom/Motor_yellow.png</symbol> + </symbols> + <x>154</x> + <y>130</y> + <width>99</width> + <height>69</height> + <tooltip></tooltip> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.Command_Status_2</name> + <x>291</x> + <y>46</y> + <height>217</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.Command_Status.border_2</name> + <width>300</width> + <height>188</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.Command_Status.background_2</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>144</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Vibration_8</name> + <text>RAMING STATUS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Group alarm</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_RampTime_1</name> + <text>Actual Direction:</text> + <x>8</x> + <y>43</y> + <width>135</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>IND_Direction</name> + <text>UP</text> + <x>153</x> + <y>43</y> + <width>135</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="Read_Background" red="230" green="235" blue="232"> + </color> + </background_color> + <transparent>false</transparent> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv2 == 0"> + <value>DISABLED</value> + </exp> + <exp bool_exp="pv0==1"> + <value>ACCEL</value> + </exp> + <exp bool_exp="pv1==1"> + <value>DECEl</value> + </exp> + <exp bool_exp="(pv0 == 0)&&(pv1==0)"> + <value>NOT MOVING</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Accelerating</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Decelerating</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ramping</pv_name> + </rule> + </rules> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_ActRampUPSpeed</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ActRampSpeed</pv_name> + <x>153</x> + <y>82</y> + <width>135</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Actual Ramp Speed</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Ract</name> + <text>Actual Ramp Speed:</text> + <x>9</x> + <y>82</y> + <width>135</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_RAMPON</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_RampON</pv_name> + <text>Ramping ON</text> + <x>14</x> + <y>137</y> + <width>130</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ramping</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>FORCE operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_RAMPOFF</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_RampOFF</pv_name> + <text>Ramping OFF</text> + <x>155</x> + <y>136</y> + <width>130</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ramping</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>FORCE operation mode</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_RampingNoAllowed</name> + <text>- Ramping Parameters are Zero!</text> + <x>15</x> + <y>113</y> + <width>268</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:RampSettingOK</pv_name> + </rule> + </rules> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.modify</name> + <x>291</x> + <y>239</y> + <height>139</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.modify.border</name> + <width>300</width> + <height>131</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Modify</name> + <text>MODIFY/FORCE</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.modify.background_1</name> + <x>5</x> + <y>31</y> + <width>290</width> + <height>93</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_StepValue</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Step</pv_name> + <x>194</x> + <y>88</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback step value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_StepValue</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Step</pv_name> + <x>95</x> + <y>88</y> + <width>92</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <tooltip>Step value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <limits_from_pv>false</limits_from_pv> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_StepValue</name> + <text>Step Value:</text> + <x>6</x> + <y>85</y> + <width>101</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_Setpoint</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Setpoint</pv_name> + <x>194</x> + <y>41</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback modified setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_ForcePumpSP</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Setpoint</pv_name> + <x>76</x> + <y>41</y> + <width>111</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="IncrementRule" prop_id="increment" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Step</pv_name> + </rule> + </rules> + <tooltip>Modify Setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <maximum>2815.0</maximum> + <limits_from_pv>false</limits_from_pv> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_FrcSetpoint</name> + <text>Setpoint:</text> + <x>7</x> + <y>41</y> + <width>106</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="polyline" version="2.0.0"> + <name>Polyline</name> + <x>133</x> + <y>69</y> + <width>41</width> + <height>17</height> + <line_color> + <color name="WHITE" red="255" green="255" blue="255"> + </color> + </line_color> + <points> + <point x="0.0" y="17.0"> + </point> + <point x="0.0" y="8.5"> + </point> + <point x="40.32786885245899" y="8.5"> + </point> + <point x="40.32786885245899" y="0.0"> + </point> + </points> + </widget> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>buttons.bar</name> + <x>5</x> + <y>374</y> + <width>872</width> + <height>80</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_AUTO</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Auto</pv_name> + <text>AUTO</text> + <x>8</x> + <y>414</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableAutoBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>AUTO operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_MANUAL</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Manual</pv_name> + <text>MANUAL</text> + <x>213</x> + <y>414</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableManualBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>MANUAL operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Force</pv_name> + <text>FORCE</text> + <x>418</x> + <y>414</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableForcedBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>FORCE operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_ACK</name> + <actions> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_AckAlarm</pv_name> + <value>1</value> + <description>Acknowledge alarms</description> + </action> + </actions> + <text>Acknowledge Alarm</text> + <x>692</x> + <y>417</y> + <width>180</width> + <height>33</height> + <background_color> + <color name="ORANGE" red="254" green="194" blue="81"> + </color> + </background_color> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1) || (pv2 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0) && (pv2 == 1)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + <tooltip>Acknowledge alarms</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_UNLOCK</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceUnlock</pv_name> + <value>1</value> + <description>Write ForceUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <value>0</value> + <description>Write EnaForceUnlock</description> + </action> + </actions> + <text>FORCE UNLOCK</text> + <x>692</x> + <y>381</y> + <width>180</width> + <height>33</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 1)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 0)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force unlock device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_START</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_PumpStart</pv_name> + <text>START</text> + <x>213</x> + <y>378</y> + <width>130</width> + <height>33</height> + <background_color> + <color name="GREEN" red="61" green="216" blue="61"> + </color> + </background_color> + <rules> + <rule name="EnabledRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0==0"> + <value>true</value> + </exp> + <exp bool_exp="pv0==1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Auto</pv_name> + </rule> + </rules> + <tooltip>Start pump</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_STOP2</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Stop</pv_name> + <text>STOP</text> + <x>350</x> + <y>378</y> + <width>130</width> + <height>33</height> + <background_color> + <color name="RED-BACKGROUND" red="225" green="192" blue="188"> + </color> + </background_color> + <rules> + <rule name="EnabledRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0==0"> + <value>true</value> + </exp> + <exp bool_exp="pv0==1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Auto</pv_name> + </rule> + </rules> + <tooltip>Stop pump</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_STOP2_1</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_RampedStop</pv_name> + <text>STOP RAMPED</text> + <x>488</x> + <y>378</y> + <width>130</width> + <height>33</height> + <background_color> + <color name="RED-BACKGROUND" red="225" green="192" blue="188"> + </color> + </background_color> + <rules> + <rule name="Enable rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1==1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1==0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ramping</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Auto</pv_name> + </rule> + </rules> + <tooltip>Stop pump ramped</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>Picture_Expand</name> + <symbols> + <symbol>../../symbols/custom/expand-arrows.png</symbol> + </symbols> + <x>831</x> + <y>5</y> + <width>51</width> + <height>35</height> + <tooltip></tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>Action Button_Expand</name> + <actions execute_as_one="true"> + <action type="open_display"> + <file>CP_ControlPump_Faceplate.bob</file> + <target>standalone</target> + <description>Open Display</description> + </action> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[ScriptUtil = org.csstudio.display.builder.runtime.script.ScriptUtil; +ScriptUtil.closeDisplay(widget); +]]></text> + </script> + <description>Execute Script</description> + </action> + </actions> + <text></text> + <x>825</x> + <y>6</y> + <width>44</width> + <height>42</height> + <transparent>true</transparent> + <tooltip>Open Extended View</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/CP_ControlPump_Faceplate_Trend.plt b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/CP_ControlPump_Faceplate_Trend.plt new file mode 100644 index 0000000000000000000000000000000000000000..d0bb7e56c9bd87a4b605e9cd2ade1e6dc14dfd68 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/CP_ControlPump_Faceplate_Trend.plt @@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<databrowser> + <title></title> + <save_changes>true</save_changes> + <show_legend>false</show_legend> + <show_toolbar>true</show_toolbar> + <grid>false</grid> + <scroll>true</scroll> + <update_period>3.0</update_period> + <scroll_step>5</scroll_step> + <start>-10 minutes 0.0 seconds</start> + <end>now</end> + <archive_rescale>NONE</archive_rescale> + <foreground> + <red>229</red> + <green>229</green> + <blue>229</blue> + </foreground> + <background> + <red>77</red> + <green>77</green> + <blue>77</blue> + </background> + <title_font>Cantarell|16|1</title_font> + <label_font>Cantarell|11|1</label_font> + <scale_font>Cantarell|10|0</scale_font> + <legend_font>Cantarell|10|0</legend_font> + <axes> + <axis> + <visible>true</visible> + <name>Value Axis</name> + <use_axis_name>true</use_axis_name> + <use_trace_names>true</use_trace_names> + <right>false</right> + <color> + <red>255</red> + <green>165</green> + <blue>0</blue> + </color> + <min>0.0</min> + <max>25.0</max> + <grid>true</grid> + <autoscale>true</autoscale> + <log_scale>false</log_scale> + </axis> + </axes> + <annotations> + </annotations> + <pvlist> + </pvlist> +</databrowser> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/DP_DiscretePump_Faceplate.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/DP_DiscretePump_Faceplate.bob new file mode 100644 index 0000000000000000000000000000000000000000..6f2ba48943b319567c0e112910808bb6273e916d --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/DP_DiscretePump_Faceplate.bob @@ -0,0 +1,1285 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>CMS-DP Discrete Pump Faceplate</name> + <width>965</width> + <height>550</height> + <widget type="tabs" version="2.0.0"> + <name>Tabs</name> + <tabs> + <tab> + <name>Status</name> + <children> + <widget type="group" version="2.0.0"> + <name>group.status</name> + <x>10</x> + <y>10</y> + <height>300</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.status.border</name> + <width>300</width> + <height>300</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.status.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>260</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Status</name> + <text>STATUS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Running</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Running</pv_name> + <x>100</x> + <y>54</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Valve position</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Running</name> + <text>RUNNING</text> + <x>135</x> + <y>54</y> + <width>70</width> + <height>21</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Stopped</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Stopped</pv_name> + <x>100</x> + <y>89</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Valve position</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Stopped</name> + <text>STOPPED</text> + <x>135</x> + <y>89</y> + <width>70</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIcon</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:PumpColor</pv_name> + <symbols> + <symbol>../../../CMS_OPI_MASTER/Symbols/DP_Pump_RED.png</symbol> + <symbol>../../../CMS_OPI_MASTER/Symbols/DP_Pump_GREEN.png</symbol> + <symbol>../../../CMS_OPI_MASTER/Symbols/DP_Pump_WHITE.png</symbol> + <symbol>../../../CMS_OPI_MASTER/Symbols/DP_Pump_YELLOW.png</symbol> + </symbols> + <x>100</x> + <y>148</y> + <width>101</width> + <height>108</height> + <actions execute_as_one="true"> + </actions> + <tooltip>Open faceplate</tooltip> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.op.modes</name> + <x>320</x> + <y>10</y> + <height>300</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.border</name> + <width>300</width> + <height>300</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>260</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OP_MODES</name> + <text>OP MODES</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Auto</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Auto</pv_name> + <x>100</x> + <y>50</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_AUTO</name> + <text>AUTO</text> + <x>135</x> + <y>50</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Manual</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Manual</pv_name> + <x>100</x> + <y>85</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_MANUAL</name> + <text>MANUAL</text> + <x>135</x> + <y>85</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Forced</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <x>100</x> + <y>120</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_FORCED</name> + <text>FORCED</text> + <x>135</x> + <y>120</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_MESSAGES</name> + <text>MESSAGES</text> + <x>5</x> + <y>160</y> + <width>290</width> + <height>25</height> + <font> + <font name="Header 3" family="Source Sans Pro" style="BOLD_ITALIC" size="18.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitMan</name> + <text>- Manual mode inhibited</text> + <x>15</x> + <y>190</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Manual</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitForce</name> + <text>- Force mode inhibited</text> + <x>15</x> + <y>210</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Force</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm_ENA</name> + <text>- Alarms latching enabled</text> + <x>15</x> + <y>230</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm_DIS</name> + <text>- Alarms latching disabled</text> + <x>15</x> + <y>230</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.alarms</name> + <x>630</x> + <y>10</y> + <height>315</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.border</name> + <width>300</width> + <height>315</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>275</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALARMS</name> + <text>ALARMS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackgroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Group alarm</tooltip> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_StartingTimeOut</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Starting_TimeOut</pv_name> + <x>25</x> + <y>50</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Starting timeout</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_StartingTimeOut</name> + <text>Starting Timeout</text> + <x>60</x> + <y>50</y> + <width>155</width> + <height>26</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TEXT_StartingTime</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:StartingTime</pv_name> + <x>190</x> + <y>50</y> + <width>85</width> + <height>25</height> + <font> + <font name="TINY-SANS-PLAIN" family="Source Sans Pro" style="REGULAR" size="12.0"> + </font> + </font> + <foreground_color> + <color name="BLACK-BORDER" red="121" green="121" blue="121"> + </color> + </foreground_color> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Starting Time in ms</tooltip> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_StoppingTimeOut</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Stopping_TimeOut</pv_name> + <x>25</x> + <y>85</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Stopping timeout</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_StoppingTimeOut</name> + <text>Stopping Timeout</text> + <x>60</x> + <y>85</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TEXT_StoppingTime</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:StoppingTime</pv_name> + <x>190</x> + <y>85</y> + <width>85</width> + <height>25</height> + <font> + <font name="TINY-SANS-PLAIN" family="Source Sans Pro" style="REGULAR" size="12.0"> + </font> + </font> + <foreground_color> + <color name="BLACK-BORDER" red="121" green="121" blue="121"> + </color> + </foreground_color> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Starting Time in ms</tooltip> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_IO_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:IO_Error</pv_name> + <x>25</x> + <y>120</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_IO_Error</name> + <text>I/O Error</text> + <x>60</x> + <y>120</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Input_Module_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Input_Module_Error</pv_name> + <x>25</x> + <y>155</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Module error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Module_Error</name> + <text>Input Module Error</text> + <x>60</x> + <y>155</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ILOCK_START</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:StartInterlock</pv_name> + <x>25</x> + <y>270</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>Start interlock</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ILOCK_START</name> + <text>Start Interlock</text> + <x>60</x> + <y>270</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Output_Module_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Output_Module_Error</pv_name> + <x>25</x> + <y>190</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Module error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Module_Error_1</name> + <text>Output Module Error</text> + <x>60</x> + <y>190</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_INTERLOCKS</name> + <text>INTERLOCKS</text> + <x>5</x> + <y>230</y> + <width>290</width> + <height>25</height> + <font> + <font name="Header 3" family="Source Sans Pro" style="BOLD_ITALIC" size="18.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackgroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="(pv0 == 1)"> + <value> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </value> + </exp> + <exp bool_exp="(pv0 == 0)"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:StartInterlock</pv_name> + </rule> + <rule name="ForegroundColor" prop_id="foreground_color" out_exp="false"> + <exp bool_exp="(pv0 == 1)"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <exp bool_exp="(pv0 == 0)"> + <value> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:StartInterlock</pv_name> + </rule> + </rules> + </widget> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>buttons.bar</name> + <x>10</x> + <y>338</y> + <width>920</width> + <height>80</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_AUTO</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Auto</pv_name> + <text>AUTO</text> + <x>15</x> + <y>379</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableAutoBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>AUTO operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_MANUAL</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Manual</pv_name> + <text>MANUAL</text> + <x>220</x> + <y>379</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableManualBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>MANUAL operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_MAN_ON</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ManuStart</pv_name> + <text>START</text> + <x>220</x> + <y>343</y> + <width>99</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)|| (pv3 == 1)|| (pv4 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0) && (pv2 == 0) && (pv3==0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Manual</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Running</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:StartInterlock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Manual START</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_MAN_OFF</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ManuStop</pv_name> + <text>STOP</text> + <x>321</x> + <y>343</y> + <width>99</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1) "> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0) "> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Manual</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Manual STOP</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Force</pv_name> + <text>FORCE</text> + <x>425</x> + <y>379</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableForcedBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>FORCE operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_ON</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceStart</pv_name> + <text>START</text> + <x>425</x> + <y>343</y> + <width>99</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1) || (pv2 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0) && (pv2 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Running</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force START</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_OFF</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceStop</pv_name> + <text>STOP</text> + <x>526</x> + <y>343</y> + <width>99</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1) "> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0) "> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force STOP</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_ACK</name> + <actions> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_AckAlarm</pv_name> + <value>1</value> + <description>Acknowledge alarms</description> + </action> + </actions> + <text>Acknowledge Alarm</text> + <x>725</x> + <y>380</y> + <width>200</width> + <height>33</height> + <background_color> + <color name="ORANGE" red="254" green="194" blue="81"> + </color> + </background_color> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1) || (pv2 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0) && (pv2 == 1)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + <tooltip>Acknowledge alarms</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_UNLOCK</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceUnlock</pv_name> + <value>1</value> + <description>Write ForceUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <value>0</value> + <description>Write EnaForceUnlock</description> + </action> + </actions> + <text>FORCE UNLOCK</text> + <x>725</x> + <y>344</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 1)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 0)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force unlock device</tooltip> + </widget> + </children> + </tab> + <tab> + <name>Trend</name> + <children> + <widget type="databrowser" version="2.0.0"> + <name>DataBrowser</name> + <width>940</width> + <height>431</height> + </widget> + </children> + </tab> + </tabs> + <x>10</x> + <y>60</y> + <width>943</width> + <height>470</height> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Header Bar</name> + <width>963</width> + <height>50</height> + <line_width>0</line_width> + <line_color> + <color red="0" green="0" blue="255" alpha="0"> + </color> + </line_color> + <background_color> + <color name="PRIMARY-HEADER-BACKGROUND" red="151" green="188" blue="202"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HeaderPVName</name> + <text>${SecSub}:${Dis}-${Dev}-${Index}</text> + <x>20</x> + <width>715</width> + <height>50</height> + <font> + <font name="Header 1" family="Source Sans Pro" style="BOLD_ITALIC" size="36.0"> + </font> + </font> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Locked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>0</value> + <description>Write CMD_DEVUNLOCK</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock(99)</pv_name> + <value>1</value> + <description>Run Lock script</description> + </action> + </actions> + <text>LOCK</text> + <x>850</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + </rule> + </rules> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: generate unique Machine ID from the network adapters to use it for locking mechanism*/ + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); + +var Lock = pvs[0];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock*/ +var Cmd_DevLock = pvs[1];/*${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock*/ +var P_Faceplate_LockID = pvs[2];/*${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID*/ +var Inhibit_Lock = pvs[3];/*${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock*/ +var Faceplate_LockID = pvs[4];/*${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID*/ +var BlockIcon_LockID = pvs[5];/*${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID*/ +var EnaForceUnlock = pvs[6];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock*/ +var DevLocked = pvs[7];/*${SecSub}:${Dis}-${Dev}-${Index}:DevLocked*/ + + + +logger.info("Faceplate script BEGIN"); + +var PV1 = PVUtil.getLong(Faceplate_LockID); /*Faceplate_LockID*/ +var PV2 = PVUtil.getLong(BlockIcon_LockID); /*BlockIcon_LockID*/ + +//OnShow +logger.info(" OnShow"); +if (PVUtil.getLong(DevLocked) == 1) { /*DevLocked*/ + + if (PV1.toString() == PV2.toString()){ /*FaceplateLockID != BlockIconeLockID*/ + + logger.info(" Owner"); + EnaForceUnlock.setValue(0); /*Write EnaForceUnlock*/ + + } else + { + logger.info(" Faceplate FaceplateLockID "+ PV1); + logger.info(" Faceplate BlockIconeLockID "+ PV2); + + logger.info(" Guest"); + EnaForceUnlock.setValue(1); /*Write EnaForceUnlock*/ + } + + + +} +// OnClick +if (PVUtil.getLong(Lock) != 99) { /*loc://Lock, check if the script was triggered because of a button press or initilization*/ + logger.info(" OnClick"); + if (PVUtil.getLong(Inhibit_Lock) == 0) { /*Inhibit_lock, check if locking is inhibited*/ + + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + UniqueText = UniqueText + intf.getName() + intf.getDisplayName(); + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + UniqueText = UniqueText + enumIpAddr.nextElement().toString(); + } + } + + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText); + if (crc >=2147483647){ crc = crc - 2147483647;} + + logger.info(" Faceplate machine ID: "+crc); + P_Faceplate_LockID.setValue(crc); /*Write P_Faceplate_LockID*/ + Cmd_DevLock.setValue(1); /*Write Lock*/ + + } /*Lock inhibit*/ +} /*onshow*/ + +logger.info("Faceplate script END"); +]]></text> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID</pv_name> + <pv_name trigger="false">loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + </script> + </scripts> + <tooltip>Lock this device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Unlocked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>1</value> + <description>Write CMD_DevUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <value>0</value> + <description>Write CMD_DevLock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + </actions> + <text>UNLOCK</text> + <x>755</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false) || (pv1 == true) || (pv2 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true) && (pv1 == false) && (pv2 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Unlock this device</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/DP_OnOffPump_BlockIcon_Horizontal.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/DP_OnOffPump_BlockIcon_Horizontal.bob new file mode 100644 index 0000000000000000000000000000000000000000..57597a8c224c87b3e72f261255d8a9106c98e4a4 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/DP_OnOffPump_BlockIcon_Horizontal.bob @@ -0,0 +1,338 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>DP ON OFF PUMP Vertical v02</name> + <width>248</width> + <height>136</height> + <widget type="rectangle" version="2.0.0"> + <name>Rectangle</name> + <width>248</width> + <height>136</height> + <line_width>0</line_width> + <background_color> + <color red="0" green="0" blue="0" alpha="18"> + </color> + </background_color> + <corner_width>20</corner_width> + <corner_height>20</corner_height> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text>A</text> + <x>8</x> + <y>49</y> + <width>30</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="29.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>A</value> + </exp> + <exp bool_exp="pv1 == true"> + <value>M</value> + </exp> + <exp bool_exp="pv2 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>107</x> + <y>13</y> + <width>24</width> + <height>24</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Interlock</name> + <symbols> + <symbol>../../symbols/custom_v02/interlock_overridden_disabled_cms@32.png</symbol> + </symbols> + <x>11</x> + <y>13</y> + <width>24</width> + <height>24</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Interlock event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIcon</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:PumpColor</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/vpdp/vpdp_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom/DP_ONOFF_Pump_GREEN.png</symbol> + <symbol>../../symbols/custom/DP_ONOFF_Pump_WHITE.png</symbol> + <symbol>../../symbols/custom/DP_ONOFF_Pump_YELLOW.png</symbol> + </symbols> + <x>38</x> + <y>37</y> + <width>64</width> + <height>64</height> + <actions execute_as_one="true"> + </actions> + <tooltip>Open faceplate</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "DP_DiscretePump_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <x>450</x> + <width>248</width> + <height>136</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>141</x> + <y>1</y> + <width>98</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="18.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackGround Rule" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0==1"> + <value> + <color name="BLUE" red="79" green="228" blue="250"> + </color> + </value> + </exp> + <exp bool_exp="pv1==1"> + <value> + <color name="MAGENTA-BACKGROUND" red="218" green="195" blue="209"> + </color> + </value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + </rule> + </rules> + <tooltip>Device name</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_IOErrorIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/WARNING@32.png</symbol> + </symbols> + <x>11</x> + <y>103</y> + <width>24</width> + <height>24</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == true)||(pv1==true)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == false)&&(pv1==false)"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Input_Module_Error</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Output_Module_Error</pv_name> + </rule> + </rules> + <tooltip>Siemens IO card error!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_MaintenanceIcon_6</name> + <symbols> + <symbol>../../symbols/custom_v02/Wrench_error @32.png</symbol> + </symbols> + <x>108</x> + <y>104</y> + <width>22</width> + <height>22</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false)&&(pv1==false)&&(pv2==false)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true)||(pv1==true)||(pv2==true)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:IO_Error</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Input_Module_Error</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Output_Module_Error</pv_name> + </rule> + </rules> + <tooltip>Maintenace Needed!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Locked_2</name> + <symbols> + <symbol>../../symbols/custom_v02/lock_locked@32.png</symbol> + </symbols> + <x>108</x> + <y>56</y> + <width>23</width> + <height>23</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:DevLocked</pv_name> + </rule> + </rules> + <tooltip>Device is locked</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/DP_OnOffPump_BlockIcon_Horizontal_Left.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/DP_OnOffPump_BlockIcon_Horizontal_Left.bob new file mode 100644 index 0000000000000000000000000000000000000000..51f557c5381b993f76db1aacea996cfd1261ca42 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/DP_OnOffPump_BlockIcon_Horizontal_Left.bob @@ -0,0 +1,337 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>DP_OnOffPump_BlockIcon_Horizontal_Left</name> + <width>245</width> + <height>130</height> + <widget type="rectangle" version="2.0.0"> + <name>WID_Rect</name> + <width>245</width> + <height>130</height> + <line_width>0</line_width> + <background_color> + <color red="0" green="0" blue="0" alpha="18"> + </color> + </background_color> + <corner_width>20</corner_width> + <corner_height>20</corner_height> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text>A</text> + <x>103</x> + <y>42</y> + <width>30</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="29.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>A</value> + </exp> + <exp bool_exp="pv1 == true"> + <value>M</value> + </exp> + <exp bool_exp="pv2 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>106</x> + <y>10</y> + <width>24</width> + <height>24</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Interlock</name> + <symbols> + <symbol>../../symbols/custom_v02/interlock_overridden_disabled_cms@32.png</symbol> + </symbols> + <x>10</x> + <y>10</y> + <width>24</width> + <height>24</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Interlock event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIcon</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:PumpColor</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/vpdp/vpdp_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom_v02/vpdp/vpdp_OK@64.png</symbol> + <symbol>../../symbols/custom_v02/vpdp/vpdp_valve_solenoid_CLOSED_w@64.png</symbol> + <symbol>../../symbols/custom_v02/vpdp/vpdp_WARNING@64.png</symbol> + </symbols> + <x>37</x> + <y>32</y> + <width>64</width> + <height>64</height> + <actions execute_as_one="true"> + </actions> + <tooltip>Open faceplate</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>140</x> + <y>1</y> + <width>98</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="18.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackGround Rule" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0==1"> + <value> + <color name="BLUE" red="79" green="228" blue="250"> + </color> + </value> + </exp> + <exp bool_exp="pv1==1"> + <value> + <color name="MAGENTA-BACKGROUND" red="218" green="195" blue="209"> + </color> + </value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + </rule> + </rules> + <tooltip>Device name</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_IOErrorIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/WARNING@32.png</symbol> + </symbols> + <x>10</x> + <y>93</y> + <width>24</width> + <height>24</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == true)||(pv1==true)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == false)&&(pv1==false)"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Input_Module_Error</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Output_Module_Error</pv_name> + </rule> + </rules> + <tooltip>Siemens IO card error!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_MaintenanceIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/Wrench_error @32.png</symbol> + </symbols> + <x>107</x> + <y>95</y> + <width>22</width> + <height>22</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false)&&(pv1==false)&&(pv2==false)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true)||(pv1==true)||(pv2==true)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:IO_Error</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Input_Module_Error</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Output_Module_Error</pv_name> + </rule> + </rules> + <tooltip>Maintenace Needed!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Locked</name> + <symbols> + <symbol>../../symbols/custom_v02/lock_locked@32.png</symbol> + </symbols> + <x>10</x> + <y>50</y> + <width>23</width> + <height>23</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:DevLocked</pv_name> + </rule> + </rules> + <tooltip>Device is locked</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "DP_DiscretePump_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>245</width> + <height>130</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/DP_OnOffPump_BlockIcon_Horizontal_Right.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/DP_OnOffPump_BlockIcon_Horizontal_Right.bob new file mode 100644 index 0000000000000000000000000000000000000000..cf2b1a1549654d43dd379ab7da210bfc70d536ec --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/DP_OnOffPump_BlockIcon_Horizontal_Right.bob @@ -0,0 +1,337 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>DP_OnOffPump_BlockIcon_Horizontal_Right</name> + <width>245</width> + <height>130</height> + <widget type="rectangle" version="2.0.0"> + <name>WID_Rect</name> + <width>245</width> + <height>130</height> + <line_width>0</line_width> + <background_color> + <color red="0" green="0" blue="0" alpha="18"> + </color> + </background_color> + <corner_width>20</corner_width> + <corner_height>20</corner_height> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text>A</text> + <x>205</x> + <y>42</y> + <width>30</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="29.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>A</value> + </exp> + <exp bool_exp="pv1 == true"> + <value>M</value> + </exp> + <exp bool_exp="pv2 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>208</x> + <y>10</y> + <width>24</width> + <height>24</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Interlock</name> + <symbols> + <symbol>../../symbols/custom_v02/interlock_overridden_disabled_cms@32.png</symbol> + </symbols> + <x>112</x> + <y>10</y> + <width>24</width> + <height>24</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Interlock event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIcon</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:PumpColor</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/vpdp/vpdp_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom_v02/vpdp/vpdp_OK@64.png</symbol> + <symbol>../../symbols/custom_v02/vpdp/vpdp_valve_solenoid_CLOSED_w@64.png</symbol> + <symbol>../../symbols/custom_v02/vpdp/vpdp_WARNING@64.png</symbol> + </symbols> + <x>139</x> + <y>32</y> + <width>64</width> + <height>64</height> + <actions execute_as_one="true"> + </actions> + <tooltip>Open faceplate</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>10</x> + <y>1</y> + <width>98</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="18.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackGround Rule" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0==1"> + <value> + <color name="BLUE" red="79" green="228" blue="250"> + </color> + </value> + </exp> + <exp bool_exp="pv1==1"> + <value> + <color name="MAGENTA-BACKGROUND" red="218" green="195" blue="209"> + </color> + </value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + </rule> + </rules> + <tooltip>Device name</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_IOErrorIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/WARNING@32.png</symbol> + </symbols> + <x>112</x> + <y>93</y> + <width>24</width> + <height>24</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == true)||(pv1==true)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == false)&&(pv1==false)"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Input_Module_Error</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Output_Module_Error</pv_name> + </rule> + </rules> + <tooltip>Siemens IO card error!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_MaintenanceIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/Wrench_error @32.png</symbol> + </symbols> + <x>209</x> + <y>95</y> + <width>22</width> + <height>22</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false)&&(pv1==false)&&(pv2==false)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true)||(pv1==true)||(pv2==true)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:IO_Error</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Input_Module_Error</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Output_Module_Error</pv_name> + </rule> + </rules> + <tooltip>Maintenace Needed!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Locked</name> + <symbols> + <symbol>../../symbols/custom_v02/lock_locked@32.png</symbol> + </symbols> + <x>112</x> + <y>49</y> + <width>23</width> + <height>23</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:DevLocked</pv_name> + </rule> + </rules> + <tooltip>Device is locked</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "DP_DiscretePump_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>245</width> + <height>130</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/DP_OnOffPump_BlockIcon_Vertical.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/DP_OnOffPump_BlockIcon_Vertical.bob new file mode 100644 index 0000000000000000000000000000000000000000..1c7896f7173ac44bdd7cfae9688f0c1e0d8148c0 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/DP_OnOffPump_BlockIcon_Vertical.bob @@ -0,0 +1,261 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>DP_OnOffPump_BlockIcon_Vertical</name> + <width>132</width> + <height>140</height> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text>A</text> + <x>51</x> + <y>29</y> + <width>30</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="29.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>A</value> + </exp> + <exp bool_exp="pv1 == true"> + <value>M</value> + </exp> + <exp bool_exp="pv2 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>99</x> + <y>37</y> + <width>24</width> + <height>24</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Interlock</name> + <symbols> + <symbol>../../symbols/custom_v02/interlock_overridden_disabled_cms@32.png</symbol> + </symbols> + <x>11</x> + <y>37</y> + <width>24</width> + <height>24</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Interlock event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIcon</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:PumpColor</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/vpdp/vpdp_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom_v02/vpdp/vpdp_OK@64.png</symbol> + <symbol>../../symbols/custom_v02/vpdp/vpdp_valve_solenoid_CLOSED_w@64.png</symbol> + <symbol>../../symbols/custom_v02/vpdp/vpdp_WARNING@64.png</symbol> + </symbols> + <x>34</x> + <y>61</y> + <width>64</width> + <height>64</height> + <rotation>-90.0</rotation> + <actions execute_as_one="true"> + </actions> + <tooltip>Open faceplate</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>11</x> + <y>3</y> + <width>110</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="18.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackGround Rule" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0==1"> + <value> + <color name="BLUE" red="79" green="228" blue="250"> + </color> + </value> + </exp> + <exp bool_exp="pv1==1"> + <value> + <color name="MAGENTA-BACKGROUND" red="218" green="195" blue="209"> + </color> + </value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + </rule> + </rules> + <tooltip>Device name</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "DP_DiscretePump_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>132</width> + <height>165</height> + <background_color> + <color red="236" green="236" blue="236" alpha="0"> + </color> + </background_color> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/DP_OnOffPump_BlockIcon_Vertical_Compact.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/DP_OnOffPump_BlockIcon_Vertical_Compact.bob new file mode 100644 index 0000000000000000000000000000000000000000..d9255a9db9baf9214a009bfcfb75abd4d7f60ee9 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/DP_OnOffPump_BlockIcon_Vertical_Compact.bob @@ -0,0 +1,260 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>DP_OnOffPump_BlockIcon_Vertical_Compact</name> + <width>132</width> + <height>140</height> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text>A</text> + <x>51</x> + <y>29</y> + <width>30</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="29.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value> </value> + </exp> + <exp bool_exp="pv1 == true"> + <value>M</value> + </exp> + <exp bool_exp="pv2 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>99</x> + <y>37</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Interlock</name> + <symbols> + <symbol>../../symbols/custom_v02/interlock_overridden_disabled_cms@32.png</symbol> + </symbols> + <x>11</x> + <y>37</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Interlock event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIcon</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:PumpColor</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/vpdp/vpdp_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom_v02/vpdp/vpdp_OK@64.png</symbol> + <symbol>../../symbols/custom_v02/vpdp/vpdp_valve_solenoid_CLOSED_w@64.png</symbol> + <symbol>../../symbols/custom_v02/vpdp/vpdp_WARNING@64.png</symbol> + </symbols> + <x>34</x> + <y>61</y> + <width>64</width> + <height>64</height> + <rotation>-90.0</rotation> + <actions execute_as_one="true"> + </actions> + <tooltip>Open faceplate</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <y>3</y> + <width>132</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="23.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackGround Rule" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0==1"> + <value> + <color name="BLUE" red="79" green="228" blue="250"> + </color> + </value> + </exp> + <exp bool_exp="pv1==1"> + <value> + <color name="MAGENTA-BACKGROUND" red="218" green="195" blue="209"> + </color> + </value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + </rule> + </rules> + <tooltip>Device name</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "DP_DiscretePump_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>132</width> + <height>140</height> + <background_color> + <color red="236" green="236" blue="236" alpha="0"> + </color> + </background_color> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/P_ControlPump_BlockIcon_Horizontal.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/P_ControlPump_BlockIcon_Horizontal.bob new file mode 100644 index 0000000000000000000000000000000000000000..360cc9246296a35cd91bc7b0d2208909796e6e59 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/P_ControlPump_BlockIcon_Horizontal.bob @@ -0,0 +1,430 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>P_ControlPump_BlockIcon_Horizontal</name> + <width>140</width> + <height>212</height> + <widget type="rectangle" version="2.0.0"> + <name>WID_Rect</name> + <width>140</width> + <height>212</height> + <line_width>0</line_width> + <background_color> + <color red="0" green="0" blue="0" alpha="18"> + </color> + </background_color> + <corner_width>20</corner_width> + <corner_height>20</corner_height> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIcon</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MotorColor</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/vpt/vpt_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom_v02/vpt/vpt_BLUE@64.png</symbol> + <symbol>../../symbols/custom_v02/vpt/vpt_OK@64.png</symbol> + <symbol>../../symbols/custom_v02/vpt/vpt_OFF@64.png</symbol> + <symbol>../../symbols/custom_v02/vpt/vpt_WARNING@64.png</symbol> + </symbols> + <x>38</x> + <y>61</y> + <width>64</width> + <height>64</height> + <rotation>-90.0</rotation> + <actions execute_as_one="true"> + </actions> + <tooltip>Open faceplate</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text>A</text> + <x>55</x> + <y>29</y> + <width>30</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="29.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>A</value> + </exp> + <exp bool_exp="pv1 == true"> + <value>M</value> + </exp> + <exp bool_exp="pv2 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>107</x> + <y>37</y> + <width>24</width> + <height>24</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_MaintenanceIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/Wrench_error @32.png</symbol> + </symbols> + <x>108</x> + <y>126</y> + <width>22</width> + <height>24</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false)&&(pv1==false)&&(pv2==false)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true)||(pv1==true)||(pv2==true)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:VB_IO_Error</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ModuleDiagError</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:VB_Module_Error</pv_name> + </rule> + </rules> + <tooltip>Maintenace Needed!</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>11</x> + <y>3</y> + <width>120</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="18.0"> + </font> + </font> + <background_color> + <color red="0" green="0" blue="0" alpha="0"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackGround Rule" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0==1"> + <value> + <color name="BLUE" red="79" green="228" blue="250"> + </color> + </value> + </exp> + <exp bool_exp="pv1==1"> + <value> + <color name="MAGENTA-BACKGROUND" red="218" green="195" blue="209"> + </color> + </value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + </rule> + </rules> + <tooltip>Device name</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Interlock</name> + <symbols> + <symbol>../../symbols/custom_v02/interlock_overridden_disabled_cms@32.png</symbol> + </symbols> + <x>11</x> + <y>37</y> + <width>24</width> + <height>24</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Interlock event occured!</tooltip> + </widget> + <widget type="picture" version="2.0.0"> + <name>WID_Opening</name> + <file>../../symbols/custom_v02/opening_neutral@32.png</file> + <x>58</x> + <y>127</y> + <width>23</width> + <height>23</height> + <rules> + <rule name="Visibility" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) "> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Accelerating</pv_name> + </rule> + </rules> + <tooltip>Pump is ramping</tooltip> + </widget> + <widget type="picture" version="2.0.0"> + <name>WID_Closing</name> + <file>../../symbols/custom_v02/closing_neutral@32.png</file> + <x>58</x> + <y>127</y> + <width>23</width> + <height>23</height> + <rules> + <rule name="Visibility" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) "> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Decelerating</pv_name> + </rule> + </rules> + <tooltip>Pump is ramping</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_IOErrorIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/WARNING@32.png</symbol> + </symbols> + <x>11</x> + <y>127</y> + <width>24</width> + <height>24</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ModuleDiagError</pv_name> + </rule> + </rules> + <tooltip>Siemens IO card error!</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_LBL_MV</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:PumpActSpeed</pv_name> + <x>35</x> + <y>156</y> + <width>95</width> + <transparent>true</transparent> + <precision>1</precision> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Actual Speed</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_color> + <color name="BLACK" red="0" green="0" blue="0"> + </color> + </border_color> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_LBL_SP</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:PumpSP</pv_name> + <x>67</x> + <y>183</y> + <width>63</width> + <transparent>true</transparent> + <precision>1</precision> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Actual Setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_color> + <color name="BLACK" red="0" green="0" blue="0"> + </color> + </border_color> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Locked</name> + <symbols> + <symbol>../../symbols/custom_v02/lock_locked@32.png</symbol> + </symbols> + <x>10</x> + <y>178</y> + <width>23</width> + <height>23</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:DevLocked</pv_name> + </rule> + </rules> + <tooltip>Device is locked</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_LBL_MV</name> + <text>MV:</text> + <x>11</x> + <y>157</y> + <width>24</width> + <horizontal_alignment>2</horizontal_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_LBL_SP</name> + <text>SP:</text> + <x>34</x> + <y>183</y> + <width>24</width> + <horizontal_alignment>2</horizontal_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "P_ControlPump_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>140</width> + <height>212</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/P_ControlPump_BlockIcon_Vertical_Left.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/P_ControlPump_BlockIcon_Vertical_Left.bob new file mode 100644 index 0000000000000000000000000000000000000000..ff2c5f1a4ec8c4075e7010908638053fc19888a2 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/P_ControlPump_BlockIcon_Vertical_Left.bob @@ -0,0 +1,342 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>P_ControlPump_BlockIcon_Vertical_Left</name> + <width>230</width> + <height>100</height> + <background_color> + <color red="255" green="255" blue="255" alpha="0"> + </color> + </background_color> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIcon</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MotorColor</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/vpt/vpt_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom_v02/vpt/vpt_BLUE@64.png</symbol> + <symbol>../../symbols/custom_v02/vpt/vpt_OK@64.png</symbol> + <symbol>../../symbols/custom_v02/vpt/vpt_OFF@64.png</symbol> + <symbol>../../symbols/custom_v02/vpt/vpt_WARNING@64.png</symbol> + </symbols> + <x>37</x> + <y>32</y> + <width>64</width> + <height>64</height> + <actions execute_as_one="true"> + </actions> + <tooltip>Open faceplate</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text>A</text> + <x>5</x> + <y>67</y> + <width>30</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="29.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>A</value> + </exp> + <exp bool_exp="pv1 == true"> + <value>M</value> + </exp> + <exp bool_exp="pv2 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>34</x> + <y>8</y> + <width>24</width> + <height>24</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>76</x> + <y>5</y> + <width>115</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="18.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <rules> + <rule name="BackGround Rule" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0==1"> + <value> + <color name="BLUE" red="79" green="228" blue="250"> + </color> + </value> + </exp> + <exp bool_exp="pv1==1"> + <value> + <color name="MAGENTA-BACKGROUND" red="218" green="195" blue="209"> + </color> + </value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + </rule> + </rules> + <tooltip>Device name</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Interlock</name> + <symbols> + <symbol>../../symbols/custom_v02/interlock_overridden_disabled_cms@32.png</symbol> + </symbols> + <x>9</x> + <y>8</y> + <width>24</width> + <height>24</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Interlock event occured!</tooltip> + </widget> + <widget type="picture" version="2.0.0"> + <name>WID_Opening</name> + <file>../../symbols/custom_v02/opening_neutral@32.png</file> + <x>8</x> + <y>44</y> + <width>23</width> + <height>23</height> + <rules> + <rule name="Visibility" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) "> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Accelerating</pv_name> + </rule> + </rules> + <tooltip>Pump is ramping</tooltip> + </widget> + <widget type="picture" version="2.0.0"> + <name>WID_Closing</name> + <file>../../symbols/custom_v02/closing_neutral@32.png</file> + <x>8</x> + <y>44</y> + <width>23</width> + <height>23</height> + <rules> + <rule name="Visibility" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) "> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Decelerating</pv_name> + </rule> + </rules> + <tooltip>Pump is ramping</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_LBL_MV</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:PumpActSpeed</pv_name> + <x>101</x> + <y>36</y> + <width>118</width> + <height>28</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="24.0"> + </font> + </font> + <precision>1</precision> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Actual Speed</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_width>1</border_width> + <border_color> + <color name="GRAY-BORDER" red="121" green="121" blue="121"> + </color> + </border_color> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_LBL_SP</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:PumpSP</pv_name> + <x>101</x> + <y>65</y> + <width>118</width> + <height>29</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="24.0"> + </font> + </font> + <precision>1</precision> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Actual Setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_width>1</border_width> + <border_color> + <color name="GRAY-BORDER" red="121" green="121" blue="121"> + </color> + </border_color> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "P_ControlPump_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>230</width> + <height>100</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/P_ControlPump_BlockIcon_Vertical_Left_Compact.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/P_ControlPump_BlockIcon_Vertical_Left_Compact.bob new file mode 100644 index 0000000000000000000000000000000000000000..18092c751ea70559f0f9636ecec9682a98facf50 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/P_ControlPump_BlockIcon_Vertical_Left_Compact.bob @@ -0,0 +1,376 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>P_ControlPump_BlockIcon_Vertical_Left_Compact</name> + <width>230</width> + <height>100</height> + <background_color> + <color red="255" green="255" blue="255" alpha="0"> + </color> + </background_color> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIcon</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MotorColor</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/vpt/vpt_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom_v02/vpt/vpt_BLUE@64.png</symbol> + <symbol>../../symbols/custom_v02/vpt/vpt_OK@64.png</symbol> + <symbol>../../symbols/custom_v02/vpt/vpt_OFF@64.png</symbol> + <symbol>../../symbols/custom_v02/vpt/vpt_WARNING@64.png</symbol> + </symbols> + <x>37</x> + <y>32</y> + <width>64</width> + <height>64</height> + <actions execute_as_one="true"> + </actions> + <tooltip>Open faceplate</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text>A</text> + <x>5</x> + <y>67</y> + <width>30</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="29.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value> </value> + </exp> + <exp bool_exp="pv1 == true"> + <value>M</value> + </exp> + <exp bool_exp="pv2 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>34</x> + <y>8</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>76</x> + <y>5</y> + <width>115</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="23.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <rules> + <rule name="BackGround Rule" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0==1"> + <value> + <color name="BLUE" red="79" green="228" blue="250"> + </color> + </value> + </exp> + <exp bool_exp="pv1==1"> + <value> + <color name="MAGENTA-BACKGROUND" red="218" green="195" blue="209"> + </color> + </value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + </rule> + </rules> + <tooltip>Device name</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Interlock</name> + <symbols> + <symbol>../../symbols/custom_v02/interlock_overridden_disabled_cms@32.png</symbol> + </symbols> + <x>4</x> + <y>8</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Interlock event occured!</tooltip> + </widget> + <widget type="picture" version="2.0.0"> + <name>WID_Opening</name> + <file>../../symbols/custom_v02/opening_neutral@32.png</file> + <x>8</x> + <y>44</y> + <width>23</width> + <height>23</height> + <rules> + <rule name="Visibility" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) "> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Accelerating</pv_name> + </rule> + </rules> + <tooltip>Pump is ramping</tooltip> + </widget> + <widget type="picture" version="2.0.0"> + <name>WID_Closing</name> + <file>../../symbols/custom_v02/closing_neutral@32.png</file> + <x>8</x> + <y>44</y> + <width>23</width> + <height>23</height> + <rules> + <rule name="Visibility" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) "> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Decelerating</pv_name> + </rule> + </rules> + <tooltip>Pump is ramping</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_LBL_MV</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:PumpActSpeed</pv_name> + <x>101</x> + <y>36</y> + <width>118</width> + <height>28</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="24.0"> + </font> + </font> + <precision>1</precision> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <rules> + <rule name="Disconnected" prop_id="background_color" out_exp="false"> + <exp bool_exp="pvInt0 > 0"> + <value> + <color name="Read_Background" red="230" green="235" blue="232"> + </color> + </value> + </exp> + <exp bool_exp="pvInt0 == 0"> + <value> + <color name="INVALID" red="149" green="110" blue="221"> + </color> + </value> + </exp> + <pv_name>CrS-CMS:Cryo-PLC-01:PLCHashCorrectR</pv_name> + </rule> + </rules> + <tooltip>Actual Speed</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_width>1</border_width> + <border_color> + <color name="GRAY-BORDER" red="121" green="121" blue="121"> + </color> + </border_color> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_LBL_SP</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:PumpSP</pv_name> + <x>101</x> + <y>65</y> + <width>118</width> + <height>29</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="24.0"> + </font> + </font> + <precision>1</precision> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <rules> + <rule name="Disconnected" prop_id="background_color" out_exp="false"> + <exp bool_exp="pvInt0 > 0"> + <value> + <color name="Read_Background" red="230" green="235" blue="232"> + </color> + </value> + </exp> + <exp bool_exp="pvInt0 == 0"> + <value> + <color name="INVALID" red="149" green="110" blue="221"> + </color> + </value> + </exp> + <pv_name>CrS-CMS:Cryo-PLC-01:PLCHashCorrectR</pv_name> + </rule> + </rules> + <tooltip>Actual Setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_width>1</border_width> + <border_color> + <color name="GRAY-BORDER" red="121" green="121" blue="121"> + </color> + </border_color> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "P_ControlPump_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>230</width> + <height>100</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/P_ControlPump_BlockIcon_Vertical_Right.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/P_ControlPump_BlockIcon_Vertical_Right.bob new file mode 100644 index 0000000000000000000000000000000000000000..a10bf74830bb969dafcc473e402e0f8ea44ff668 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/P_ControlPump_BlockIcon_Vertical_Right.bob @@ -0,0 +1,424 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>P_ControlPump_BlockIcon_Vertical_Right</name> + <width>265</width> + <height>130</height> + <widget type="rectangle" version="2.0.0"> + <name>WID_Rect</name> + <width>265</width> + <height>130</height> + <line_width>0</line_width> + <background_color> + <color red="0" green="0" blue="0" alpha="18"> + </color> + </background_color> + <corner_width>20</corner_width> + <corner_height>20</corner_height> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIcon</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MotorColor</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/vpt/vpt_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom_v02/vpt/vpt_BLUE@64.png</symbol> + <symbol>../../symbols/custom_v02/vpt/vpt_OK@64.png</symbol> + <symbol>../../symbols/custom_v02/vpt/vpt_OFF@64.png</symbol> + <symbol>../../symbols/custom_v02/vpt/vpt_WARNING@64.png</symbol> + </symbols> + <x>167</x> + <y>33</y> + <width>64</width> + <height>64</height> + <actions execute_as_one="true"> + </actions> + <tooltip>Open faceplate</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text>A</text> + <x>231</x> + <y>46</y> + <width>30</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="29.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>A</value> + </exp> + <exp bool_exp="pv1 == true"> + <value>M</value> + </exp> + <exp bool_exp="pv2 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>235</x> + <y>9</y> + <width>24</width> + <height>24</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_MaintenanceIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/Wrench_error @32.png</symbol> + </symbols> + <x>236</x> + <y>98</y> + <width>22</width> + <height>22</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false)&&(pv1==false)&&(pv2==false)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true)||(pv1==true)||(pv2==true)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:VB_IO_Error</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ModuleDiagError</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:VB_Module_Error</pv_name> + </rule> + </rules> + <tooltip>Maintenace Needed!</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>13</x> + <y>5</y> + <width>115</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="18.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <rules> + <rule name="BackGround Rule" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0==1"> + <value> + <color name="BLUE" red="79" green="228" blue="250"> + </color> + </value> + </exp> + <exp bool_exp="pv1==1"> + <value> + <color name="MAGENTA-BACKGROUND" red="218" green="195" blue="209"> + </color> + </value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + </rule> + </rules> + <tooltip>Device name</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Interlock</name> + <symbols> + <symbol>../../symbols/custom_v02/interlock_overridden_disabled_cms@32.png</symbol> + </symbols> + <x>139</x> + <y>9</y> + <width>24</width> + <height>24</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Interlock event occured!</tooltip> + </widget> + <widget type="picture" version="2.0.0"> + <name>WID_Opening</name> + <file>../../symbols/custom_v02/opening_neutral@32.png</file> + <x>138</x> + <y>54</y> + <width>23</width> + <height>23</height> + <rules> + <rule name="Visibility" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) "> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Accelerating</pv_name> + </rule> + </rules> + <tooltip>Pump is ramping</tooltip> + </widget> + <widget type="picture" version="2.0.0"> + <name>WID_Closing</name> + <file>../../symbols/custom_v02/closing_neutral@32.png</file> + <x>138</x> + <y>54</y> + <width>23</width> + <height>23</height> + <rules> + <rule name="Visibility" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) "> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Decelerating</pv_name> + </rule> + </rules> + <tooltip>Pump is ramping</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_IOErrorIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/WARNING@32.png</symbol> + </symbols> + <x>139</x> + <y>97</y> + <width>24</width> + <height>24</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ModuleDiagError</pv_name> + </rule> + </rules> + <tooltip>Siemens IO card error!</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_LBL_MV</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:PumpActSpeed</pv_name> + <x>33</x> + <y>42</y> + <width>97</width> + <transparent>true</transparent> + <precision>1</precision> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Actual Speed</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_color> + <color name="BLACK" red="0" green="0" blue="0"> + </color> + </border_color> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_LBL_SP</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:PumpSP</pv_name> + <x>67</x> + <y>68</y> + <width>63</width> + <transparent>true</transparent> + <precision>1</precision> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Actual Setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_color> + <color name="BLACK" red="0" green="0" blue="0"> + </color> + </border_color> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Locked</name> + <symbols> + <symbol>../../symbols/custom_v02/lock_locked@32.png</symbol> + </symbols> + <x>10</x> + <y>63</y> + <width>23</width> + <height>23</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:DevLocked</pv_name> + </rule> + </rules> + <tooltip>Device is locked</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_LBL_MV</name> + <text>MV:</text> + <x>11</x> + <y>43</y> + <width>25</width> + <horizontal_alignment>2</horizontal_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_LBL_SP</name> + <text>Set:</text> + <x>34</x> + <y>68</y> + <width>29</width> + <horizontal_alignment>2</horizontal_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "P_ControlPump_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>265</width> + <height>130</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/P_ControlPump_Faceplate.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/P_ControlPump_Faceplate.bob new file mode 100644 index 0000000000000000000000000000000000000000..473ff7e4b5c40bbe0b14d9600b6f125e990e4561 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/P_ControlPump_Faceplate.bob @@ -0,0 +1,3210 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>CP_ControlPUMP_Faceplate</name> + <width>960</width> + <height>1135</height> + <widget type="tabs" version="2.0.0"> + <name>Tabs</name> + <tabs> + <tab> + <name>Status</name> + <children> + <widget type="group" version="2.0.0"> + <name>group.status</name> + <x>9</x> + <y>10</y> + <width>306</width> + <height>557</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.border</name> + <x>3</x> + <y>2</y> + <width>301</width> + <height>545</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.background</name> + <x>8</x> + <y>35</y> + <width>290</width> + <height>353</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STATUS</name> + <text>STATUS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.background_1</name> + <x>8</x> + <y>394</y> + <width>290</width> + <height>79</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="linear-meter" version="2.0.0"> + <name>MET_PumpSpeed</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:PumpActSpeed</pv_name> + <x>15</x> + <y>45</y> + <width>270</width> + <precision>2</precision> + <level_hihi>0.0</level_hihi> + <level_high>0.0</level_high> + <level_low>0.0</level_low> + <level_lolo>0.0</level_lolo> + <show_hihi>false</show_hihi> + <show_high>false</show_high> + <show_low>false</show_low> + <show_lolo>false</show_lolo> + <title>Pump Actual Speed (1/min)</title> + <tooltip>Pump speed in percent</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <auto_scale>false</auto_scale> + <maximum>2815.0</maximum> + <limits_from_pv>false</limits_from_pv> + <unit_from_pv>false</unit_from_pv> + <major_tick_space>400.0</major_tick_space> + <minor_tick_space>100.0</minor_tick_space> + <lcd_visible>false</lcd_visible> + <bar_color> + <color name="PRIMARY" red="0" green="148" blue="202"> + </color> + </bar_color> + </widget> + <widget type="linear-meter" version="2.0.0"> + <name>MET_PumpSetpoint</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:PumpSP</pv_name> + <x>15</x> + <y>125</y> + <width>270</width> + <precision>2</precision> + <level_hihi>0.0</level_hihi> + <level_high>0.0</level_high> + <level_low>0.0</level_low> + <level_lolo>0.0</level_lolo> + <show_hihi>false</show_hihi> + <show_high>false</show_high> + <show_low>false</show_low> + <show_lolo>false</show_lolo> + <title>Setpoint (1/min)</title> + <actions> + </actions> + <rules> + <rule name="Title" prop_id="title" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value>Setpoint (1/min)</value> + </exp> + <exp bool_exp="pv0 == 0"> + <value>Setpoint (1/min) - Not Retained on Mode Change</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:KeepSP</pv_name> + </rule> + </rules> + <tooltip>Pump setpoint in percent</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <auto_scale>false</auto_scale> + <maximum>2815.0</maximum> + <limits_from_pv>false</limits_from_pv> + <unit_from_pv>false</unit_from_pv> + <major_tick_space>400.0</major_tick_space> + <minor_tick_space>100.0</minor_tick_space> + <lcd_visible>false</lcd_visible> + <bar_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </bar_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OutFreq</name> + <text>Output Frequency:</text> + <x>28</x> + <y>221</y> + <width>130</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_Frequency</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:PumpOUTFreq</pv_name> + <x>167</x> + <y>221</y> + <height>25</height> + <precision>2</precision> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OutVoltage</name> + <text>Output Voltage:</text> + <x>28</x> + <y>252</y> + <width>130</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_OutVoltage</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:PumpOUTVoltage</pv_name> + <x>167</x> + <y>252</y> + <height>25</height> + <precision>2</precision> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OutCurrent</name> + <text>Output Current:</text> + <x>28</x> + <y>283</y> + <width>130</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_OutCurrent</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:PumpOUTCurrent</pv_name> + <x>167</x> + <y>283</y> + <height>25</height> + <precision>2</precision> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OutPower</name> + <text>Output Power:</text> + <x>28</x> + <y>315</y> + <width>130</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_OutPower</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:PumpOUTPower</pv_name> + <x>167</x> + <y>315</y> + <height>25</height> + <precision>2</precision> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PUTemp</name> + <text>Power Unit Temp:</text> + <x>28</x> + <y>347</y> + <width>130</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_PUTemp</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:PumpPUTemp</pv_name> + <x>167</x> + <y>347</y> + <height>25</height> + <precision>2</precision> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Vibration</name> + <text>Vibration:</text> + <x>28</x> + <y>411</y> + <width>130</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_Vibration</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Vibration</pv_name> + <x>167</x> + <y>411</y> + <height>25</height> + <precision>2</precision> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.background_2</name> + <x>8</x> + <y>479</y> + <width>290</width> + <height>62</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OperatingHours:</name> + <text>Operating Hours:</text> + <x>28</x> + <y>494</y> + <width>130</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_PumpOperHrs</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OperHours</pv_name> + <x>167</x> + <y>496</y> + <height>25</height> + <precision>2</precision> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Vibration_6</name> + <text>Range:</text> + <x>18</x> + <y>441</y> + <width>50</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_Vibration_6</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:VB_ScaleLOW</pv_name> + <x>70</x> + <y>443</y> + <width>79</width> + <height>25</height> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_Vibration_7</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:VB_ScaleHIGH</pv_name> + <x>167</x> + <y>443</y> + <height>25</height> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Vibration_7</name> + <text>to</text> + <x>151</x> + <y>441</y> + <width>50</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.op.modes</name> + <x>10</x> + <y>570</y> + <width>302</width> + <height>370</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.border</name> + <width>300</width> + <height>360</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>320</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OP_MODES</name> + <text>OP MODES</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Auto</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Auto</pv_name> + <x>100</x> + <y>50</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_AUTO</name> + <text>AUTO</text> + <x>135</x> + <y>50</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Manual</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Manual</pv_name> + <x>100</x> + <y>85</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_MANUAL</name> + <text>MANUAL</text> + <x>135</x> + <y>85</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Forced</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <x>100</x> + <y>120</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_FORCED</name> + <text>FORCED</text> + <x>131</x> + <y>120</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_MESSAGES</name> + <text>MESSAGES</text> + <x>5</x> + <y>160</y> + <width>290</width> + <font> + <font name="Fine Print" family="Source Sans Pro" style="REGULAR" size="14.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitMan</name> + <text>- Manual mode inhibited</text> + <x>15</x> + <y>190</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Manual</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitForce</name> + <text>- Force mode inhibited</text> + <x>15</x> + <y>210</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Force</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm_DIS</name> + <text>- Alarms latching disabled</text> + <x>15</x> + <y>230</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm_ENA</name> + <text>- Alarms latching enabled</text> + <x>15</x> + <y>230</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_RampingON</name> + <text>- Ramping enabled</text> + <x>15</x> + <y>250</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ramping</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_RampingON_1</name> + <text>- Ramping disabled</text> + <x>15</x> + <y>250</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ramping</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitMan_1</name> + <text>- Keep SP from Auto mode</text> + <x>15</x> + <y>270</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:KeepSP</pv_name> + </rule> + </rules> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.modify</name> + <x>629</x> + <y>789</y> + <height>151</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.modify.border</name> + <width>300</width> + <height>141</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Modify</name> + <text>MODIFY/FORCE</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.modify.background_1</name> + <x>5</x> + <y>31</y> + <width>290</width> + <height>104</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_StepValue</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Step</pv_name> + <x>194</x> + <y>94</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback step value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_StepValue</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Step</pv_name> + <x>95</x> + <y>94</y> + <width>92</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <tooltip>Step value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <limits_from_pv>false</limits_from_pv> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_StepValue</name> + <text>Step Value:</text> + <x>6</x> + <y>91</y> + <width>101</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_Setpoint</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Setpoint</pv_name> + <x>194</x> + <y>41</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback modified setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_ForcePumpSP</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Setpoint</pv_name> + <x>76</x> + <y>41</y> + <width>111</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="IncrementRule" prop_id="increment" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Step</pv_name> + </rule> + </rules> + <tooltip>Modify Setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <maximum>2815.0</maximum> + <limits_from_pv>false</limits_from_pv> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_FrcSetpoint</name> + <text>Setpoint:</text> + <x>7</x> + <y>41</y> + <width>106</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="polyline" version="2.0.0"> + <name>Polyline</name> + <x>133</x> + <y>72</y> + <width>41</width> + <line_color> + <color name="WHITE" red="255" green="255" blue="255"> + </color> + </line_color> + <points> + <point x="0.0" y="20.0"> + </point> + <point x="0.0" y="10.0"> + </point> + <point x="40.32786885245899" y="10.0"> + </point> + <point x="40.32786885245899" y="0.0"> + </point> + </points> + </widget> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>buttons.bar</name> + <x>10</x> + <y>940</y> + <width>920</width> + <height>80</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_AUTO</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Auto</pv_name> + <text>AUTO</text> + <x>13</x> + <y>981</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableAutoBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>AUTO operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_MANUAL</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Manual</pv_name> + <text>MANUAL</text> + <x>218</x> + <y>981</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableManualBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>MANUAL operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Force</pv_name> + <text>FORCE</text> + <x>423</x> + <y>981</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableForcedBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>FORCE operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_ACK</name> + <actions> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_AckAlarm</pv_name> + <value>1</value> + <description>Acknowledge alarms</description> + </action> + </actions> + <text>Acknowledge Alarm</text> + <x>745</x> + <y>981</y> + <width>180</width> + <height>33</height> + <background_color> + <color name="ORANGE" red="254" green="194" blue="81"> + </color> + </background_color> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1) || (pv2 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0) && (pv2 == 1)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + <tooltip>Acknowledge alarms</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_UNLOCK</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceUnlock</pv_name> + <value>1</value> + <description>Write ForceUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <value>0</value> + <description>Write EnaForceUnlock</description> + </action> + </actions> + <text>FORCE UNLOCK</text> + <x>745</x> + <y>945</y> + <width>180</width> + <height>33</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 1)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 0)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force unlock device</tooltip> + </widget> + <widget type="group" version="2.0.0"> + <name>group.alarms</name> + <x>630</x> + <y>10</y> + <width>302</width> + <height>384</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.border</name> + <width>300</width> + <height>380</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>338</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_DriveWarning</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Warning</pv_name> + <x>70</x> + <y>85</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>Warning bit from the Sinamics Drive</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_DriveWarning</name> + <text>Sinamics Drive Warning</text> + <x>105</x> + <y>85</y> + <width>177</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_IO_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:SPDiscrepancy</pv_name> + <x>70</x> + <y>120</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Internal Sinamics SP Discrepancy</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ILOCK_START</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:StartInterlock</pv_name> + <x>70</x> + <y>327</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>Start interlock</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ILOCK_START</name> + <text>Start Interlock</text> + <x>106</x> + <y>327</y> + <width>153</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALARMS</name> + <text>ALARMS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackgroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Group alarm</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_INTERLOCKS</name> + <text>INTERLOCKS</text> + <x>5</x> + <y>270</y> + <width>290</width> + <height>35</height> + <font> + <font family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackgroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Group interlock</tooltip> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_DriveAlarm</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Alarm</pv_name> + <x>70</x> + <y>50</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Alarm bit from the Sinamics drive</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_DriveAlarm</name> + <text>Sinamics Drive Alarm</text> + <x>105</x> + <y>48</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_SPDiscrepancy</name> + <text>SP Discrepancy</text> + <x>105</x> + <y>120</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_TorqueLimit</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:TorqueLimit</pv_name> + <x>70</x> + <y>155</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Sinamics torque limit</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_TorqueLimit</name> + <text>Torque limit</text> + <x>105</x> + <y>155</y> + <width>83</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_ModuleDiagError</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ModuleDiagError</pv_name> + <x>70</x> + <y>225</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Profinet Problem</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_ModuleDiagError</name> + <text>ProfiNet error</text> + <x>105</x> + <y>225</y> + <width>177</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <tooltip>Drive temperature is over the limit!</tooltip> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_DriveOverLoad</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DriveOverLoad</pv_name> + <x>70</x> + <y>190</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Sinamics drive Overload</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_DriveOverLoad</name> + <text>Drive Overload</text> + <x>105</x> + <y>188</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <tooltip>Motor temperature is over the limit!</tooltip> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.Pump_Status</name> + <x>320</x> + <y>10</y> + <width>301</width> + <height>325</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.Pump_Status.border</name> + <width>300</width> + <height>321</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.Pump_Status.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>279</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_STS_Stopped</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Running</pv_name> + <x>51</x> + <y>121</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="ON" red="70" green="255" blue="70"> + </color> + </on_color> + <tooltip>Pump running</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_Running</name> + <text>Running</text> + <x>90</x> + <y>121</y> + <width>110</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_STS_SetpointAttained</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:RemoteControlReq</pv_name> + <x>52</x> + <y>227</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="ON" red="70" green="255" blue="70"> + </color> + </on_color> + <tooltip>Remote control Required</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PUMP_STATUS</name> + <text>PUMP STATUS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Group alarm</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_RemoteRequired</name> + <text>Remote Control Required</text> + <x>90</x> + <y>227</y> + <width>173</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_STS_Running</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ready</pv_name> + <x>51</x> + <y>85</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="ON" red="70" green="255" blue="70"> + </color> + </on_color> + <tooltip>Drive Ready for speed control</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_Ready</name> + <text>Ready</text> + <x>90</x> + <y>85</y> + <width>83</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_STS_DriveOn</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:RdyForSwitchON</pv_name> + <x>51</x> + <y>50</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="ON" red="70" green="255" blue="70"> + </color> + </on_color> + <tooltip>Drive Ready to switch on</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_RdySwitchOn</name> + <text>Ready to switch ON</text> + <x>90</x> + <y>50</y> + <width>153</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_STS_SetpointEnabled</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibited</pv_name> + <x>52</x> + <y>192</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="ON" red="70" green="255" blue="70"> + </color> + </on_color> + <tooltip>Drive Inhibited</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_Inhibited</name> + <text>Inhibited</text> + <x>90</x> + <y>192</y> + <width>130</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_STS_Inhibited</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:CoastStop</pv_name> + <x>52</x> + <y>156</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="ON" red="70" green="255" blue="70"> + </color> + </on_color> + <tooltip>Pump Stopped</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_CoastStop</name> + <text>Stopped</text> + <x>90</x> + <y>156</y> + <width>130</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_STS_SetpointAttained_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:MaxSpeedReached</pv_name> + <x>53</x> + <y>263</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="ON" red="70" green="255" blue="70"> + </color> + </on_color> + <tooltip>Speed reached</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_MaxSpeedReached</name> + <text>Speed Reached</text> + <x>90</x> + <y>263</y> + <width>173</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.Command_Status</name> + <x>320</x> + <y>341</y> + <width>302</width> + <height>226</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.Command_Status.border</name> + <width>300</width> + <height>216</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.Command_Status.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>175</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Vibration</name> + <text>VIBRATION STATUS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Group alarm</tooltip> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_VB_HIHI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:VB_HIHI</pv_name> + <x>51</x> + <y>50</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Vibration Alarm </tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_VB_HIHI</name> + <text>HIGH ALARM</text> + <x>87</x> + <y>50</y> + <width>181</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_VB_HI</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:VB_HI</pv_name> + <x>51</x> + <y>84</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>Vibration warning</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_VB_HI</name> + <text>HIGH WARNING</text> + <x>86</x> + <y>84</y> + <width>112</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_VB_IO_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:VB_IO_Error</pv_name> + <x>51</x> + <y>119</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Vibration analog input error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_VB_IO_Error</name> + <text>I/O Error</text> + <x>86</x> + <y>119</y> + <width>177</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_VB_Module_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:VB_Module_Error</pv_name> + <x>51</x> + <y>153</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Siemens module for vibration input error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_VB_Module_Error</name> + <text>Module Error</text> + <x>86</x> + <y>151</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.Command_Status_1</name> + <x>318</x> + <y>571</y> + <width>302</width> + <height>369</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.Command_Status.border_1</name> + <width>300</width> + <height>360</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_MOTOR_START_STOP</name> + <text>MANUAL PUMP CONTROL</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Group alarm</tooltip> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.Command_Status.background_1</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>320</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_START</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_PumpStart</pv_name> + <text>START</text> + <x>87</x> + <y>157</y> + <width>130</width> + <height>33</height> + <background_color> + <color name="GREEN" red="61" green="216" blue="61"> + </color> + </background_color> + <rules> + <rule name="EnabledRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0==0"> + <value>true</value> + </exp> + <exp bool_exp="pv0==1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Auto</pv_name> + </rule> + </rules> + <tooltip>Start pump</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_STOP2</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Stop</pv_name> + <text>STOP</text> + <x>87</x> + <y>233</y> + <width>130</width> + <height>33</height> + <background_color> + <color name="RED-BACKGROUND" red="225" green="192" blue="188"> + </color> + </background_color> + <rules> + <rule name="EnabledRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0==0"> + <value>true</value> + </exp> + <exp bool_exp="pv0==1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Auto</pv_name> + </rule> + </rules> + <tooltip>Stop pump</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_STOP2_1</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_RampedStop</pv_name> + <text>STOP RAMPED</text> + <x>87</x> + <y>292</y> + <width>130</width> + <height>33</height> + <background_color> + <color name="RED-BACKGROUND" red="225" green="192" blue="188"> + </color> + </background_color> + <rules> + <rule name="Enable rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1==1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1==0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ramping</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Auto</pv_name> + </rule> + </rules> + <tooltip>Stop pump ramped</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>Picture</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MotorColor</pv_name> + <symbols> + <symbol>../../../CMS_OPI_MASTER/Symbols/Motor_red.png</symbol> + <symbol>../../../CMS_OPI_MASTER/Symbols/Motor_blue.png</symbol> + <symbol>../../../CMS_OPI_MASTER/Symbols/Motor_green.png</symbol> + <symbol>../../../CMS_OPI_MASTER/Symbols/Motor_white.png</symbol> + <symbol>../../../CMS_OPI_MASTER/Symbols/Motor_yellow.png</symbol> + </symbols> + <x>83</x> + <y>40</y> + <width>130</width> + <height>120</height> + <tooltip></tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>IND_StartState</name> + <text>N/A</text> + <x>92</x> + <y>190</y> + <width>120</width> + <height>25</height> + <font> + <font family="Source Code Pro" style="REGULAR" size="16.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="Read_Background" red="230" green="235" blue="232"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>NOT MOVING</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>POWERING PU</value> + </exp> + <exp bool_exp="pv0 == 2"> + <value>PU POWERED</value> + </exp> + <exp bool_exp="pv0 == 3"> + <value>STARTING</value> + </exp> + <exp bool_exp="pv0 == 4"> + <value>STARTED</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:StartState</pv_name> + </rule> + </rules> + <tooltip>Startup state</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>IND_StopState</name> + <text>N/A</text> + <x>92</x> + <y>266</y> + <width>120</width> + <height>25</height> + <font> + <font family="Source Code Pro" style="REGULAR" size="16.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="Read_Background" red="230" green="235" blue="232"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value> </value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>PREPARE STOP</value> + </exp> + <exp bool_exp="pv0 == 2"> + <value>RAMPING DOWN</value> + </exp> + <exp bool_exp="pv0 == 3"> + <value>MOTOR STOP</value> + </exp> + <exp bool_exp="pv0 == 4"> + <value>PU STOP</value> + </exp> + <exp bool_exp="pv0 == 5"> + <value>STOPPED</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:StopState</pv_name> + </rule> + </rules> + <tooltip>Startup state</tooltip> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.Command_Status_2</name> + <x>629</x> + <y>571</y> + <height>217</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.Command_Status.border_2</name> + <width>300</width> + <height>212</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.Command_Status.background_2</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>170</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Vibration_8</name> + <text>RAMPING STATUS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Group alarm</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_RampTime_1</name> + <text>Actual Direction:</text> + <x>8</x> + <y>43</y> + <width>135</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>IND_Direction</name> + <text>UP</text> + <x>153</x> + <y>43</y> + <width>135</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="Read_Background" red="230" green="235" blue="232"> + </color> + </background_color> + <transparent>false</transparent> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv2 == 0"> + <value>DISABLED</value> + </exp> + <exp bool_exp="pv0==1"> + <value>ACCEL</value> + </exp> + <exp bool_exp="pv1==1"> + <value>DECEl</value> + </exp> + <exp bool_exp="(pv0 == 0)&&(pv1==0)"> + <value>NOT MOVING</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Accelerating</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Decelerating</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ramping</pv_name> + </rule> + </rules> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_ActRampUPSpeed</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ActRampSpeed</pv_name> + <x>153</x> + <y>82</y> + <width>135</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Actual Ramp Speed</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Ract</name> + <text>Actual Ramp Speed:</text> + <x>9</x> + <y>82</y> + <width>135</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_RAMPON</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_RampON</pv_name> + <text>Ramping ON</text> + <x>14</x> + <y>156</y> + <width>130</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ramping</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>turn ramping ON</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_RAMPOFF</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_RampOFF</pv_name> + <text>Ramping OFF</text> + <x>155</x> + <y>155</y> + <width>130</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ramping</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>turn ramping OFF</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_RampingNoAllowed</name> + <text>- Ramping Parameters are Zero!</text> + <x>15</x> + <y>129</y> + <width>268</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:RampSettingOK</pv_name> + </rule> + </rules> + </widget> + </widget> + </children> + </tab> + <tab> + <name>Trend</name> + <children> + <widget type="databrowser" version="2.0.0"> + <name>DataBrowser</name> + <file>CP_ControlPump_Faceplate_Trend.plt</file> + <x>1</x> + <y>3</y> + <width>927</width> + <height>721</height> + </widget> + </children> + </tab> + <tab> + <name>Settings</name> + <children> + <widget type="group" version="2.0.0"> + <name>group.ramping</name> + <x>8</x> + <y>11</y> + <width>303</width> + <height>264</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.ramping.border</name> + <width>300</width> + <height>260</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.ramping.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>220</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Ramping</name> + <text>RAMPING SETTINGS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_RampTime</name> + <text>Time:</text> + <x>10</x> + <y>70</y> + <width>75</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_RampingTime</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_RampUPTIME</pv_name> + <x>70</x> + <y>70</y> + <width>115</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:RemoteControlReq</pv_name> + </rule> + </rules> + <tooltip>Tamping UP time</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <maximum>3600.0</maximum> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_RampingTime</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_RampUPTIME</pv_name> + <x>195</x> + <y>70</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>$(pv_name)$(pv_value)</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_RampRange</name> + <text>Range:</text> + <x>10</x> + <y>110</y> + <width>75</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_RampingRange</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_RampUPRANGE</pv_name> + <x>70</x> + <y>110</y> + <width>115</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:RemoteControlReq</pv_name> + </rule> + </rules> + <tooltip>Ramping UP range</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <maximum>2815.0</maximum> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_RampingRange</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_RampUPRANGE</pv_name> + <x>195</x> + <y>110</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>$(pv_name)$(pv_value)</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_RampTime_2</name> + <text>Time:</text> + <x>10</x> + <y>178</y> + <width>75</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_RampingTime_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_RampDNTIME</pv_name> + <x>70</x> + <y>178</y> + <width>115</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:RemoteControlReq</pv_name> + </rule> + </rules> + <tooltip>Ramping DOWN Time</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <maximum>3600.0</maximum> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_RampingTime_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_RampDNTIME</pv_name> + <x>195</x> + <y>178</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>$(pv_name)$(pv_value)</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_RampRange_1</name> + <text>Range:</text> + <x>10</x> + <y>218</y> + <width>75</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_RampingRange_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_RampDNRANGE</pv_name> + <x>70</x> + <y>218</y> + <width>115</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:RemoteControlReq</pv_name> + </rule> + </rules> + <tooltip>Ramping DOWN Range</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <maximum>2815.0</maximum> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_RampingRange_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_RampDNRANGE</pv_name> + <x>195</x> + <y>218</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>$(pv_name)$(pv_value)</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_RdySwitchOn_1</name> + <text>Motor ramping UP parameters</text> + <x>10</x> + <y>39</y> + <width>250</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_RdySwitchOn_2</name> + <text>Motor ramping DOWN parameters</text> + <x>10</x> + <y>147</y> + <width>250</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.settings</name> + <x>318</x> + <y>11</y> + <width>304</width> + <height>265</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.settings.border</name> + <width>300</width> + <height>260</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.settings.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>220</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Settings</name> + <text>VIBRATION SETTINGS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_VB_HIGH</name> + <text>Vibr. HIHI:</text> + <x>11</x> + <y>53</y> + <width>70</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_VB_HIGH</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:VB_P_Limit_HIHI</pv_name> + <x>91</x> + <y>52</y> + <width>95</width> + <height>25</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="MinimumRule" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:VB_ScaleLOW</pv_name> + </rule> + <rule name="MaximumRule" prop_id="maximum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:VB_ScaleHIGH</pv_name> + </rule> + </rules> + <tooltip>Alarm HIGH</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <limits_from_pv>false</limits_from_pv> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_VB_HIGH</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:VB_FB_Limit_HIHI</pv_name> + <x>196</x> + <y>52</y> + <width>90</width> + <height>25</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>$(pv_name)$(pv_value)</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_VB_HIGH_1</name> + <text>Vibr. HI:</text> + <x>11</x> + <y>90</y> + <width>70</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_VB_HIGH_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:VB_P_Limit_HI</pv_name> + <x>91</x> + <y>89</y> + <width>95</width> + <height>25</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="MinimumRule" prop_id="minimum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:VB_ScaleLOW</pv_name> + </rule> + <rule name="MaximumRule" prop_id="maximum" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:VB_ScaleHIGH</pv_name> + </rule> + </rules> + <tooltip>Warning HIGH</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <limits_from_pv>false</limits_from_pv> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_VB_HIGH_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:VB_FB_Limit_HI</pv_name> + <x>196</x> + <y>89</y> + <width>90</width> + <height>25</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>$(pv_name)$(pv_value)</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + </widget> + </children> + </tab> + </tabs> + <x>10</x> + <y>51</y> + <width>943</width> + <height>1073</height> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Header Bar</name> + <width>958</width> + <height>50</height> + <line_width>0</line_width> + <line_color> + <color red="0" green="0" blue="255" alpha="0"> + </color> + </line_color> + <background_color> + <color name="PRIMARY-HEADER-BACKGROUND" red="151" green="188" blue="202"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HeaderPVName</name> + <text>${SecSub}:${Dis}-${Dev}-${Index}</text> + <x>20</x> + <width>715</width> + <height>50</height> + <font> + <font name="Header 1" family="Source Sans Pro" style="BOLD_ITALIC" size="36.0"> + </font> + </font> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Unlocked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>1</value> + <description>Write CMD_DevUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <value>0</value> + <description>Write CMD_DevLock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + </actions> + <text>UNLOCK</text> + <x>702</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false) || (pv1 == true) || (pv2 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true) && (pv1 == false) && (pv2 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Unlock this device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>Action Button</name> + <x>730</x> + <y>50</y> + <width>1</width> + <height>1</height> + <tooltip>$(actions)</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>Picture_Simple</name> + <symbols> + <symbol>../../../CMS_OPI_MASTER/Symbols/collapse-arrows.png</symbol> + </symbols> + <x>896</x> + <y>9</y> + <width>51</width> + <height>35</height> + <tooltip></tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>Action Button_Expand</name> + <actions execute_as_one="true"> + <action type="open_display"> + <file>CP_ControlPump_Faceplate_Simple.bob</file> + <target>standalone</target> + <description>Open Display</description> + </action> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[ScriptUtil = org.csstudio.display.builder.runtime.script.ScriptUtil; +ScriptUtil.closeDisplay(widget); +]]></text> + </script> + <description>Execute Script</description> + </action> + </actions> + <text></text> + <x>901</x> + <y>7</y> + <width>44</width> + <height>42</height> + <transparent>true</transparent> + <tooltip>Open Compact View</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Locked_1</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>0</value> + <description>Write CMD_DEVUNLOCK</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock(99)</pv_name> + <value>1</value> + <description>Run Lock script</description> + </action> + </actions> + <text>LOCK</text> + <x>804</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + </rule> + </rules> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: generate unique Machine ID from the network adapters to use it for locking mechanism*/ + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); + +var Lock = pvs[0];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock*/ +var Cmd_DevLock = pvs[1];/*${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock*/ +var P_Faceplate_LockID = pvs[2];/*${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID*/ +var Inhibit_Lock = pvs[3];/*${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock*/ +var Faceplate_LockID = pvs[4];/*${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID*/ +var BlockIcon_LockID = pvs[5];/*${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID*/ +var EnaForceUnlock = pvs[6];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock*/ +var DevLocked = pvs[7];/*${SecSub}:${Dis}-${Dev}-${Index}:DevLocked*/ + + + + +var PV1 = PVUtil.getLong(Faceplate_LockID); /*Faceplate_LockID*/ +var PV2 = PVUtil.getLong(BlockIcon_LockID); /*BlockIcon_LockID*/ + +//OnShow +if (PVUtil.getLong(DevLocked) == 1) { /*DevLocked*/ + + if (PV1.toString() == PV2.toString()){ /*FaceplateLockID != BlockIconeLockID*/ + + logger.info(" Owner"); + EnaForceUnlock.setValue(0); /*Write EnaForceUnlock*/ + + } else + { + logger.info(" Faceplate FaceplateLockID "+ PV1); + logger.info(" Faceplate BlockIconeLockID "+ PV2); + + logger.info(" Guest"); + EnaForceUnlock.setValue(1); /*Write EnaForceUnlock*/ + } + + + +} +// OnClick +if (PVUtil.getLong(Lock) != 99) { /*loc://Lock, check if the script was triggered because of a button press or initilization*/ + if (PVUtil.getLong(Inhibit_Lock) == 0) { /*Inhibit_lock, check if locking is inhibited*/ + + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + UniqueText = UniqueText + intf.getName() + intf.getDisplayName(); + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + UniqueText = UniqueText + enumIpAddr.nextElement().toString(); + } + } + + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText); + if (crc >=2147483647){ crc = crc - 2147483647;} + + logger.info(" Faceplate machine ID: "+crc); + P_Faceplate_LockID.setValue(crc); /*Write P_Faceplate_LockID*/ + Cmd_DevLock.setValue(1); /*Write Lock*/ + + } /*Lock inhibit*/ +} /*onshow*/ + +]]></text> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID</pv_name> + <pv_name trigger="false">loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + </script> + </scripts> + <tooltip>Lock this device</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/P_ControlPump_Faceplate_Simple.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/P_ControlPump_Faceplate_Simple.bob new file mode 100644 index 0000000000000000000000000000000000000000..f38a4a7c7a1fd71f185c359fc28d154feb383ace --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/P_ControlPump_Faceplate_Simple.bob @@ -0,0 +1,1779 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>CP_ControlPUMP_Faceplate_Simple</name> + <width>885</width> + <height>460</height> + <widget type="rectangle" version="2.0.0"> + <name>Header Bar</name> + <width>877</width> + <height>43</height> + <line_width>0</line_width> + <line_color> + <color red="0" green="0" blue="255" alpha="0"> + </color> + </line_color> + <background_color> + <color name="PRIMARY-HEADER-BACKGROUND" red="151" green="188" blue="202"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HeaderPVName</name> + <text>${SecSub}:${Dis}-${Dev}-${Index}</text> + <x>12</x> + <y>3</y> + <width>570</width> + <height>36</height> + <font> + <font family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Unlocked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>1</value> + <description>Write CMD_DevUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <value>0</value> + <description>Write CMD_DevLock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + </actions> + <text>UNLOCK</text> + <x>631</x> + <y>6</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false) || (pv1 == true) || (pv2 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true) && (pv1 == false) && (pv2 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Unlock this device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Locked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>0</value> + <description>Write CMD_DEVUNLOCK</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock(99)</pv_name> + <value>1</value> + <description>Run Lock script</description> + </action> + </actions> + <text>LOCK</text> + <x>727</x> + <y>6</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + </rule> + </rules> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: generate unique Machine ID from the network adapters to use it for locking mechanism*/ + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); + +var Lock = pvs[0];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock*/ +var Cmd_DevLock = pvs[1];/*${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock*/ +var P_Faceplate_LockID = pvs[2];/*${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID*/ +var Inhibit_Lock = pvs[3];/*${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock*/ +var Faceplate_LockID = pvs[4];/*${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID*/ +var BlockIcon_LockID = pvs[5];/*${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID*/ +var EnaForceUnlock = pvs[6];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock*/ +var DevLocked = pvs[7];/*${SecSub}:${Dis}-${Dev}-${Index}:DevLocked*/ + + + + +var PV1 = PVUtil.getLong(Faceplate_LockID); /*Faceplate_LockID*/ +var PV2 = PVUtil.getLong(BlockIcon_LockID); /*BlockIcon_LockID*/ + +//OnShow +if (PVUtil.getLong(DevLocked) == 1) { /*DevLocked*/ + + if (PV1.toString() == PV2.toString()){ /*FaceplateLockID != BlockIconeLockID*/ + + logger.info(" Owner"); + EnaForceUnlock.setValue(0); /*Write EnaForceUnlock*/ + + } else + { + logger.info(" Faceplate FaceplateLockID "+ PV1); + logger.info(" Faceplate BlockIconeLockID "+ PV2); + + logger.info(" Guest"); + EnaForceUnlock.setValue(1); /*Write EnaForceUnlock*/ + } + + + +} +// OnClick +if (PVUtil.getLong(Lock) != 99) { /*loc://Lock, check if the script was triggered because of a button press or initilization*/ + if (PVUtil.getLong(Inhibit_Lock) == 0) { /*Inhibit_lock, check if locking is inhibited*/ + + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + UniqueText = UniqueText + intf.getName() + intf.getDisplayName(); + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + UniqueText = UniqueText + enumIpAddr.nextElement().toString(); + } + } + + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText); + if (crc >=2147483647){ crc = crc - 2147483647;} + + logger.info(" Faceplate machine ID: "+crc); + P_Faceplate_LockID.setValue(crc); /*Write P_Faceplate_LockID*/ + Cmd_DevLock.setValue(1); /*Write Lock*/ + + } /*Lock inhibit*/ +} /*onshow*/ + +]]></text> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID</pv_name> + <pv_name trigger="false">loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + </script> + </scripts> + <tooltip>Lock this device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>Action Button</name> + <x>721</x> + <y>44</y> + <width>1</width> + <height>1</height> + <tooltip>$(actions)</tooltip> + </widget> + <widget type="group" version="2.0.0"> + <name>group.status</name> + <x>1</x> + <y>44</y> + <width>288</width> + <height>332</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.border</name> + <x>3</x> + <y>2</y> + <width>280</width> + <height>324</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STATUS</name> + <text>STATUS</text> + <width>280</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.background_1</name> + <x>8</x> + <y>276</y> + <width>270</width> + <height>42</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.background</name> + <x>8</x> + <y>35</y> + <width>270</width> + <height>230</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OutFreq</name> + <text>Output Frequency:</text> + <x>17</x> + <y>106</y> + <width>130</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_Frequency</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:PumpOUTFreq</pv_name> + <x>156</x> + <y>106</y> + <height>25</height> + <precision>2</precision> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OutVoltage</name> + <text>Output Voltage:</text> + <x>17</x> + <y>137</y> + <width>130</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_OutVoltage</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:PumpOUTVoltage</pv_name> + <x>156</x> + <y>137</y> + <height>25</height> + <precision>2</precision> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OutCurrent</name> + <text>Output Current:</text> + <x>17</x> + <y>168</y> + <width>130</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_OutCurrent</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:PumpOUTCurrent</pv_name> + <x>156</x> + <y>168</y> + <height>25</height> + <precision>2</precision> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OutPower</name> + <text>Output Power:</text> + <x>17</x> + <y>200</y> + <width>130</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_OutPower</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:PumpOUTPower</pv_name> + <x>156</x> + <y>200</y> + <height>25</height> + <precision>2</precision> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PUTemp</name> + <text>Power Unit Temp:</text> + <x>17</x> + <y>232</y> + <width>130</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_PUTemp</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:PumpPUTemp</pv_name> + <x>156</x> + <y>232</y> + <height>25</height> + <precision>2</precision> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Vibration</name> + <text>Vibration:</text> + <x>17</x> + <y>284</y> + <width>130</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_Vibration</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Vibration</pv_name> + <x>155</x> + <y>284</y> + <width>101</width> + <height>25</height> + <precision>2</precision> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>MET_PumpSpeed</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:PumpActSpeed</pv_name> + <x>156</x> + <y>44</y> + <height>25</height> + <precision>2</precision> + <tooltip>Pump speed in percent</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>MET_PumpSetpoint</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:PumpSP</pv_name> + <x>156</x> + <y>75</y> + <height>25</height> + <precision>2</precision> + <actions> + </actions> + <tooltip>Pump setpoint in percent</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OutFreq_1</name> + <text>Setpoint:</text> + <x>16</x> + <y>74</y> + <width>130</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OutFreq_2</name> + <text>Actual Speed:</text> + <x>15</x> + <y>44</y> + <width>130</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.Pump_Status</name> + <x>596</x> + <y>46</y> + <width>285</width> + <height>325</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.Pump_Status.border</name> + <width>280</width> + <height>324</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.Pump_Status.background</name> + <x>5</x> + <y>35</y> + <width>270</width> + <height>282</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_STS_Stopped</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Running</pv_name> + <x>19</x> + <y>105</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="ON" red="22" green="222" blue="33"> + </color> + </on_color> + <tooltip>Pump Rotation</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_Running</name> + <text>Running</text> + <x>49</x> + <y>105</y> + <width>120</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_STS_SetpointAttained</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:RemoteControlReq</pv_name> + <x>20</x> + <y>195</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="ON" red="22" green="222" blue="33"> + </color> + </on_color> + <tooltip>Setpoint Attained</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PUMP_STATUS</name> + <text>PUMP STATUS</text> + <width>280</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Group alarm</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_RemoteRequired</name> + <text>Remote Req.</text> + <x>49</x> + <y>195</y> + <width>120</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_STS_Running</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ready</pv_name> + <x>19</x> + <y>74</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="ON" red="22" green="222" blue="33"> + </color> + </on_color> + <tooltip>Pump Running</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_Ready</name> + <text>Ready</text> + <x>49</x> + <y>74</y> + <width>120</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_STS_DriveOn</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:RdyForSwitchON</pv_name> + <x>19</x> + <y>44</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="ON" red="22" green="222" blue="33"> + </color> + </on_color> + <tooltip>Automatic Trip Switch ON</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_RdySwitchOn</name> + <text>Rdy to ON</text> + <x>49</x> + <y>44</y> + <width>120</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_STS_SetpointEnabled</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibited</pv_name> + <x>20</x> + <y>165</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="ON" red="22" green="222" blue="33"> + </color> + </on_color> + <tooltip>Setpoint Enabled</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_Inhibited</name> + <text>Inhibited</text> + <x>49</x> + <y>165</y> + <width>120</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_STS_Inhibited</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:CoastStop</pv_name> + <x>20</x> + <y>135</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="ON" red="22" green="222" blue="33"> + </color> + </on_color> + <tooltip>Setpoint Enabled</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_CoastStop</name> + <text>Stoped</text> + <x>49</x> + <y>135</y> + <width>120</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_STS_SetpointAttained_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:MaxSpeedReached</pv_name> + <x>21</x> + <y>226</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="ON" red="22" green="222" blue="33"> + </color> + </on_color> + <tooltip>Setpoint Attained</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_MaxSpeedReached</name> + <text>Speed reached</text> + <x>49</x> + <y>226</y> + <width>120</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALARMS</name> + <text>ALARMS</text> + <x>5</x> + <y>259</y> + <width>270</width> + <height>28</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackgroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Group alarm</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_INTERLOCKS</name> + <text>INTERLOCK</text> + <x>5</x> + <y>288</y> + <width>270</width> + <height>24</height> + <font> + <font family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackgroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Group interlock</tooltip> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Auto</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Auto</pv_name> + <x>165</x> + <y>44</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_AUTO</name> + <text>AUTO</text> + <x>200</x> + <y>44</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Manual</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Manual</pv_name> + <x>165</x> + <y>75</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_MANUAL</name> + <text>MANUAL</text> + <x>200</x> + <y>75</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Forced</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <x>165</x> + <y>105</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_FORCED</name> + <text>FORCED</text> + <x>196</x> + <y>105</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>IND_StartState</name> + <text>N/A</text> + <x>151</x> + <y>192</y> + <width>120</width> + <height>25</height> + <font> + <font family="Source Code Pro" style="REGULAR" size="16.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="Read_Background" red="230" green="235" blue="232"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>NOT MOVING</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>POWERING PU</value> + </exp> + <exp bool_exp="pv0 == 2"> + <value>PU POWERED</value> + </exp> + <exp bool_exp="pv0 == 3"> + <value>STARTING</value> + </exp> + <exp bool_exp="pv0 == 4"> + <value>STARTED</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:StartState</pv_name> + </rule> + </rules> + <tooltip>Startup state</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>IND_StopState</name> + <text>N/A</text> + <x>151</x> + <y>224</y> + <width>120</width> + <height>25</height> + <font> + <font family="Source Code Pro" style="REGULAR" size="16.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="Read_Background" red="230" green="235" blue="232"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value> </value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>PREPARE STOP</value> + </exp> + <exp bool_exp="pv0 == 2"> + <value>RAMPING DOWN</value> + </exp> + <exp bool_exp="pv0 == 3"> + <value>MOTOR STOP</value> + </exp> + <exp bool_exp="pv0 == 4"> + <value>PU STOP</value> + </exp> + <exp bool_exp="pv0 == 5"> + <value>STOPPED</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:StopState</pv_name> + </rule> + </rules> + <tooltip>Startup state</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>Picture</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MotorColor</pv_name> + <symbols> + <symbol>../../symbols/custom/Motor_red.png</symbol> + <symbol>../../symbols/custom/Motor_blue.png</symbol> + <symbol>../../symbols/custom/Motor_green.png</symbol> + <symbol>../../symbols/custom/Motor_white.png</symbol> + <symbol>../../symbols/custom/Motor_yellow.png</symbol> + </symbols> + <x>154</x> + <y>130</y> + <width>99</width> + <height>69</height> + <tooltip></tooltip> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.Command_Status_2</name> + <x>291</x> + <y>46</y> + <height>217</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.Command_Status.border_2</name> + <width>300</width> + <height>188</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.Command_Status.background_2</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>144</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Vibration_8</name> + <text>RAMING STATUS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Group alarm</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_RampTime_1</name> + <text>Actual Direction:</text> + <x>8</x> + <y>43</y> + <width>135</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>IND_Direction</name> + <text>UP</text> + <x>153</x> + <y>43</y> + <width>135</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="Read_Background" red="230" green="235" blue="232"> + </color> + </background_color> + <transparent>false</transparent> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv2 == 0"> + <value>DISABLED</value> + </exp> + <exp bool_exp="pv0==1"> + <value>ACCEL</value> + </exp> + <exp bool_exp="pv1==1"> + <value>DECEl</value> + </exp> + <exp bool_exp="(pv0 == 0)&&(pv1==0)"> + <value>NOT MOVING</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Accelerating</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Decelerating</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ramping</pv_name> + </rule> + </rules> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_ActRampUPSpeed</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ActRampSpeed</pv_name> + <x>153</x> + <y>82</y> + <width>135</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Actual Ramp Speed</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Ract</name> + <text>Actual Ramp Speed:</text> + <x>9</x> + <y>82</y> + <width>135</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_RAMPON</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_RampON</pv_name> + <text>Ramping ON</text> + <x>14</x> + <y>137</y> + <width>130</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ramping</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>FORCE operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_RAMPOFF</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_RampOFF</pv_name> + <text>Ramping OFF</text> + <x>155</x> + <y>136</y> + <width>130</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ramping</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>FORCE operation mode</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_RampingNoAllowed</name> + <text>- Ramping Parameters are Zero!</text> + <x>15</x> + <y>113</y> + <width>268</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:RampSettingOK</pv_name> + </rule> + </rules> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.modify</name> + <x>291</x> + <y>239</y> + <height>139</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.modify.border</name> + <width>300</width> + <height>131</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Modify</name> + <text>MODIFY/FORCE</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.modify.background_1</name> + <x>5</x> + <y>31</y> + <width>290</width> + <height>93</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_StepValue</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Step</pv_name> + <x>194</x> + <y>88</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback step value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_StepValue</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Step</pv_name> + <x>95</x> + <y>88</y> + <width>92</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <tooltip>Step value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <limits_from_pv>false</limits_from_pv> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_StepValue</name> + <text>Step Value:</text> + <x>6</x> + <y>85</y> + <width>101</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_Setpoint</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Setpoint</pv_name> + <x>194</x> + <y>41</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback modified setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_ForcePumpSP</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Setpoint</pv_name> + <x>76</x> + <y>41</y> + <width>111</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="IncrementRule" prop_id="increment" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Step</pv_name> + </rule> + </rules> + <tooltip>Modify Setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <maximum>2815.0</maximum> + <limits_from_pv>false</limits_from_pv> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_FrcSetpoint</name> + <text>Setpoint:</text> + <x>7</x> + <y>41</y> + <width>106</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="polyline" version="2.0.0"> + <name>Polyline</name> + <x>133</x> + <y>69</y> + <width>41</width> + <height>17</height> + <line_color> + <color name="WHITE" red="255" green="255" blue="255"> + </color> + </line_color> + <points> + <point x="0.0" y="17.0"> + </point> + <point x="0.0" y="8.5"> + </point> + <point x="40.32786885245899" y="8.5"> + </point> + <point x="40.32786885245899" y="0.0"> + </point> + </points> + </widget> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>buttons.bar</name> + <x>5</x> + <y>374</y> + <width>872</width> + <height>80</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_AUTO</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Auto</pv_name> + <text>AUTO</text> + <x>8</x> + <y>414</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableAutoBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>AUTO operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_MANUAL</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Manual</pv_name> + <text>MANUAL</text> + <x>213</x> + <y>414</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableManualBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>MANUAL operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Force</pv_name> + <text>FORCE</text> + <x>418</x> + <y>414</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableForcedBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>FORCE operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_ACK</name> + <actions> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_AckAlarm</pv_name> + <value>1</value> + <description>Acknowledge alarms</description> + </action> + </actions> + <text>Acknowledge Alarm</text> + <x>692</x> + <y>417</y> + <width>180</width> + <height>33</height> + <background_color> + <color name="ORANGE" red="254" green="194" blue="81"> + </color> + </background_color> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1) || (pv2 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0) && (pv2 == 1)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + <tooltip>Acknowledge alarms</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_UNLOCK</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceUnlock</pv_name> + <value>1</value> + <description>Write ForceUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <value>0</value> + <description>Write EnaForceUnlock</description> + </action> + </actions> + <text>FORCE UNLOCK</text> + <x>692</x> + <y>381</y> + <width>180</width> + <height>33</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 1)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 0)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force unlock device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_START</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_PumpStart</pv_name> + <text>START</text> + <x>213</x> + <y>378</y> + <width>130</width> + <height>33</height> + <background_color> + <color name="GREEN" red="61" green="216" blue="61"> + </color> + </background_color> + <rules> + <rule name="EnabledRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0==0"> + <value>true</value> + </exp> + <exp bool_exp="pv0==1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Auto</pv_name> + </rule> + </rules> + <tooltip>Start pump</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_STOP2</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Stop</pv_name> + <text>STOP</text> + <x>350</x> + <y>378</y> + <width>130</width> + <height>33</height> + <background_color> + <color name="RED-BACKGROUND" red="225" green="192" blue="188"> + </color> + </background_color> + <rules> + <rule name="EnabledRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0==0"> + <value>true</value> + </exp> + <exp bool_exp="pv0==1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Auto</pv_name> + </rule> + </rules> + <tooltip>Stop pump</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_STOP2_1</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_RampedStop</pv_name> + <text>STOP RAMPED</text> + <x>488</x> + <y>378</y> + <width>130</width> + <height>33</height> + <background_color> + <color name="RED-BACKGROUND" red="225" green="192" blue="188"> + </color> + </background_color> + <rules> + <rule name="Enable rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1==1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1==0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ramping</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Auto</pv_name> + </rule> + </rules> + <tooltip>Stop pump ramped</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>Picture_Expand</name> + <symbols> + <symbol>../../symbols/custom/expand-arrows.png</symbol> + </symbols> + <x>831</x> + <y>5</y> + <width>51</width> + <height>35</height> + <tooltip></tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>Action Button_Expand</name> + <actions execute_as_one="true"> + <action type="open_display"> + <file>CP_ControlPump_Faceplate.bob</file> + <target>standalone</target> + <description>Open Display</description> + </action> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[ScriptUtil = org.csstudio.display.builder.runtime.script.ScriptUtil; +ScriptUtil.closeDisplay(widget); +]]></text> + </script> + <description>Execute Script</description> + </action> + </actions> + <text></text> + <x>825</x> + <y>6</y> + <width>44</width> + <height>42</height> + <transparent>true</transparent> + <tooltip>Open Extended View</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/P_ControlPump_Faceplate_Trend.plt b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/P_ControlPump_Faceplate_Trend.plt new file mode 100644 index 0000000000000000000000000000000000000000..d0bb7e56c9bd87a4b605e9cd2ade1e6dc14dfd68 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/P_ControlPump_Faceplate_Trend.plt @@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<databrowser> + <title></title> + <save_changes>true</save_changes> + <show_legend>false</show_legend> + <show_toolbar>true</show_toolbar> + <grid>false</grid> + <scroll>true</scroll> + <update_period>3.0</update_period> + <scroll_step>5</scroll_step> + <start>-10 minutes 0.0 seconds</start> + <end>now</end> + <archive_rescale>NONE</archive_rescale> + <foreground> + <red>229</red> + <green>229</green> + <blue>229</blue> + </foreground> + <background> + <red>77</red> + <green>77</green> + <blue>77</blue> + </background> + <title_font>Cantarell|16|1</title_font> + <label_font>Cantarell|11|1</label_font> + <scale_font>Cantarell|10|0</scale_font> + <legend_font>Cantarell|10|0</legend_font> + <axes> + <axis> + <visible>true</visible> + <name>Value Axis</name> + <use_axis_name>true</use_axis_name> + <use_trace_names>true</use_trace_names> + <right>false</right> + <color> + <red>255</red> + <green>165</green> + <blue>0</blue> + </color> + <min>0.0</min> + <max>25.0</max> + <grid>true</grid> + <autoscale>true</autoscale> + <log_scale>false</log_scale> + </axis> + </axes> + <annotations> + </annotations> + <pvlist> + </pvlist> +</databrowser> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/TP_ControlPump_Faceplate.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/TP_ControlPump_Faceplate.bob new file mode 100644 index 0000000000000000000000000000000000000000..aa3193938b592312c16d8aeba7d73648cd09f6f2 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/TP_ControlPump_Faceplate.bob @@ -0,0 +1,1865 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>TP_TurboPUMP_Faceplate</name> + <width>960</width> + <height>825</height> + <widget type="tabs" version="2.0.0"> + <name>Tabs</name> + <tabs> + <tab> + <name>Status</name> + <children> + <widget type="group" version="2.0.0"> + <name>group.status</name> + <x>9</x> + <y>10</y> + <width>306</width> + <height>224</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.border</name> + <x>3</x> + <y>2</y> + <width>301</width> + <height>216</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.background</name> + <x>8</x> + <y>35</y> + <width>290</width> + <height>176</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STATUS</name> + <text>STATUS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="linear-meter" version="2.0.0"> + <name>MET_PumpSpeed</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:PumpSpeed</pv_name> + <x>15</x> + <y>45</y> + <width>270</width> + <precision>2</precision> + <level_hihi>0.0</level_hihi> + <level_high>0.0</level_high> + <level_low>0.0</level_low> + <level_lolo>0.0</level_lolo> + <show_hihi>false</show_hihi> + <show_high>false</show_high> + <show_low>false</show_low> + <show_lolo>false</show_lolo> + <title>Pump Actual Speed (1/min)</title> + <tooltip>Pump speed in percent</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <auto_scale>false</auto_scale> + <maximum>2815.0</maximum> + <limits_from_pv>false</limits_from_pv> + <unit_from_pv>false</unit_from_pv> + <major_tick_space>400.0</major_tick_space> + <minor_tick_space>100.0</minor_tick_space> + <lcd_visible>false</lcd_visible> + <bar_color> + <color name="PRIMARY" red="0" green="148" blue="202"> + </color> + </bar_color> + </widget> + <widget type="linear-meter" version="2.0.0"> + <name>MET_PumpSetpoint</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:PumpSP</pv_name> + <x>15</x> + <y>125</y> + <width>270</width> + <precision>2</precision> + <level_hihi>0.0</level_hihi> + <level_high>0.0</level_high> + <level_low>0.0</level_low> + <level_lolo>0.0</level_lolo> + <show_hihi>false</show_hihi> + <show_high>false</show_high> + <show_low>false</show_low> + <show_lolo>false</show_lolo> + <title>Setpoint (1/min)</title> + <actions> + </actions> + <rules> + <rule name="Title" prop_id="title" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value>Setpoint (1/min)</value> + </exp> + <exp bool_exp="pv0 == 0"> + <value>Setpoint (1/min) - Not Retained on Mode Change</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:KeepSP</pv_name> + </rule> + </rules> + <tooltip>Pump setpoint in percent</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <auto_scale>false</auto_scale> + <maximum>2815.0</maximum> + <limits_from_pv>false</limits_from_pv> + <unit_from_pv>false</unit_from_pv> + <major_tick_space>400.0</major_tick_space> + <minor_tick_space>100.0</minor_tick_space> + <lcd_visible>false</lcd_visible> + <bar_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </bar_color> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.op.modes</name> + <x>13</x> + <y>238</y> + <width>302</width> + <height>386</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.border</name> + <width>300</width> + <height>380</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>268</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OP_MODES</name> + <text>OP MODES</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Auto</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Auto</pv_name> + <x>100</x> + <y>50</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_AUTO</name> + <text>AUTO</text> + <x>135</x> + <y>50</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Manual</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Manual</pv_name> + <x>100</x> + <y>85</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_MANUAL</name> + <text>MANUAL</text> + <x>135</x> + <y>85</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Forced</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <x>100</x> + <y>120</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_FORCED</name> + <text>FORCED</text> + <x>131</x> + <y>120</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_MESSAGES</name> + <text>MESSAGES</text> + <x>5</x> + <y>160</y> + <width>290</width> + <height>28</height> + <font> + <font family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitMan</name> + <text>- Manual mode inhibited</text> + <x>15</x> + <y>190</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Manual</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitForce</name> + <text>- Force mode inhibited</text> + <x>15</x> + <y>210</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Force</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm_DIS</name> + <text>- Alarms latching disabled</text> + <x>15</x> + <y>230</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm_ENA</name> + <text>- Alarms latching enabled</text> + <x>15</x> + <y>230</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.background_2</name> + <x>5</x> + <y>312</y> + <width>290</width> + <height>59</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OperatingHours:</name> + <text>Operating Hours:</text> + <x>30</x> + <y>328</y> + <width>130</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_PumpOperHrs</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OperHours</pv_name> + <x>169</x> + <y>330</y> + <height>25</height> + <precision>2</precision> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.modify</name> + <x>630</x> + <y>398</y> + <height>151</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.modify.border</name> + <width>300</width> + <height>141</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Modify</name> + <text>MODIFY/FORCE</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.modify.background_1</name> + <x>5</x> + <y>31</y> + <width>290</width> + <height>104</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_StepValue</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Step</pv_name> + <x>194</x> + <y>94</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback step value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_StepValue</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Step</pv_name> + <x>95</x> + <y>94</y> + <width>92</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <tooltip>Step value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <limits_from_pv>false</limits_from_pv> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_StepValue</name> + <text>Step Value:</text> + <x>6</x> + <y>91</y> + <width>101</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_Setpoint</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Setpoint</pv_name> + <x>194</x> + <y>41</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback modified setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_ForcePumpSP</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Setpoint</pv_name> + <x>76</x> + <y>41</y> + <width>111</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="IncrementRule" prop_id="increment" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Step</pv_name> + </rule> + </rules> + <tooltip>Modify Setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <maximum>2815.0</maximum> + <limits_from_pv>false</limits_from_pv> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_FrcSetpoint</name> + <text>Setpoint:</text> + <x>7</x> + <y>41</y> + <width>106</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="polyline" version="2.0.0"> + <name>Polyline</name> + <x>133</x> + <y>72</y> + <width>41</width> + <line_color> + <color name="WHITE" red="255" green="255" blue="255"> + </color> + </line_color> + <points> + <point x="0.0" y="20.0"> + </point> + <point x="0.0" y="10.0"> + </point> + <point x="40.32786885245899" y="10.0"> + </point> + <point x="40.32786885245899" y="0.0"> + </point> + </points> + </widget> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>buttons.bar</name> + <x>13</x> + <y>631</y> + <width>920</width> + <height>80</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_AUTO</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Auto</pv_name> + <text>AUTO</text> + <x>16</x> + <y>672</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableAutoBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>AUTO operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_MANUAL</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Manual</pv_name> + <text>MANUAL</text> + <x>221</x> + <y>672</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableManualBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>MANUAL operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Force</pv_name> + <text>FORCE</text> + <x>426</x> + <y>672</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableForcedBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>FORCE operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_ACK</name> + <actions> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_AckAlarm</pv_name> + <value>1</value> + <description>Acknowledge alarms</description> + </action> + </actions> + <text>Acknowledge Alarm</text> + <x>748</x> + <y>672</y> + <width>180</width> + <height>33</height> + <background_color> + <color name="ORANGE" red="254" green="194" blue="81"> + </color> + </background_color> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1) || (pv2 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0) && (pv2 == 1)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + <tooltip>Acknowledge alarms</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_UNLOCK</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceUnlock</pv_name> + <value>1</value> + <description>Write ForceUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <value>0</value> + <description>Write EnaForceUnlock</description> + </action> + </actions> + <text>FORCE UNLOCK</text> + <x>748</x> + <y>636</y> + <width>180</width> + <height>33</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 1)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 0)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force unlock device</tooltip> + </widget> + <widget type="group" version="2.0.0"> + <name>group.alarms</name> + <x>630</x> + <y>10</y> + <width>302</width> + <height>384</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.border</name> + <width>300</width> + <height>380</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>338</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_DriveWarning</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Warning</pv_name> + <x>70</x> + <y>85</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>Warning bit from the Sinamics Drive</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_DriveWarning</name> + <text>Sinamics Drive Warning</text> + <x>105</x> + <y>85</y> + <width>177</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_IO_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:SPDiscrepancy</pv_name> + <x>70</x> + <y>120</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Internal Sinamics SP Discrepancy</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ILOCK_START</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:StartInterlock</pv_name> + <x>70</x> + <y>327</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>Start interlock</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ILOCK_START</name> + <text>Start Interlock</text> + <x>106</x> + <y>327</y> + <width>153</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALARMS</name> + <text>ALARMS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackgroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Group alarm</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_INTERLOCKS</name> + <text>INTERLOCKS</text> + <x>5</x> + <y>270</y> + <width>290</width> + <height>35</height> + <font> + <font family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackgroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Group interlock</tooltip> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_DriveAlarm</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Alarm</pv_name> + <x>70</x> + <y>50</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Alarm bit from the Sinamics drive</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_DriveAlarm</name> + <text>Sinamics Drive Alarm</text> + <x>105</x> + <y>48</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_SPDiscrepancy</name> + <text>SP Discrepancy</text> + <x>105</x> + <y>120</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_TorqueLimit</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:TorqueLimit</pv_name> + <x>70</x> + <y>155</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Sinamics torque limit</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_TorqueLimit</name> + <text>Torque limit</text> + <x>105</x> + <y>155</y> + <width>83</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_ModuleDiagError</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ModuleDiagError</pv_name> + <x>70</x> + <y>225</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Profinet Problem</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_ModuleDiagError</name> + <text>ProfiNet error</text> + <x>105</x> + <y>225</y> + <width>177</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <tooltip>Drive temperature is over the limit!</tooltip> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_DriveOverLoad</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DriveOverLoad</pv_name> + <x>70</x> + <y>190</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Sinamics drive Overload</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_DriveOverLoad</name> + <text>Drive Overload</text> + <x>105</x> + <y>188</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <tooltip>Motor temperature is over the limit!</tooltip> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.Pump_Status</name> + <x>320</x> + <y>10</y> + <width>301</width> + <height>325</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.Pump_Status.border</name> + <width>300</width> + <height>321</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.Pump_Status.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>279</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_STS_Ready</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ready</pv_name> + <x>51</x> + <y>121</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="ON" red="70" green="255" blue="70"> + </color> + </on_color> + <tooltip>Pump running</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_Ready</name> + <text>Ready</text> + <x>90</x> + <y>121</y> + <width>110</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_STS_ProcessDataEnabled</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ProcessDataEnabled</pv_name> + <x>52</x> + <y>227</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="ON" red="70" green="255" blue="70"> + </color> + </on_color> + <tooltip>Remote control Required</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PUMP_STATUS</name> + <text>PUMP STATUS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Group alarm</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_ProcessDataEnabled</name> + <text>Process Data Enabled</text> + <x>90</x> + <y>227</y> + <width>173</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_STS_Decelerating</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Decelerating</pv_name> + <x>51</x> + <y>85</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="ON" red="70" green="255" blue="70"> + </color> + </on_color> + <tooltip>Drive Ready for speed control</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_Decelerating</name> + <text>Decelerating</text> + <x>90</x> + <y>85</y> + <width>108</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_STS_Accelerating</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Accelerating</pv_name> + <x>51</x> + <y>50</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="ON" red="70" green="255" blue="70"> + </color> + </on_color> + <tooltip>Drive Ready to switch on</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_Accelerating</name> + <text>Accelerating</text> + <x>90</x> + <y>50</y> + <width>153</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_STS_RestOnlyFullStp</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:RestOnlyFullStp</pv_name> + <x>52</x> + <y>192</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="ON" red="70" green="255" blue="70"> + </color> + </on_color> + <tooltip>Drive Inhibited</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_RestOnlyFullStp</name> + <text>Reset after full Stop</text> + <x>90</x> + <y>192</y> + <width>188</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_STS_Running</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Running</pv_name> + <x>52</x> + <y>156</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="ON" red="70" green="255" blue="70"> + </color> + </on_color> + <tooltip>Pump Stopped</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_Running</name> + <text>Running</text> + <x>90</x> + <y>156</y> + <width>130</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_STS_SetpointReached</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:SetpointReached</pv_name> + <x>53</x> + <y>263</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="ON" red="70" green="255" blue="70"> + </color> + </on_color> + <tooltip>Speed reached</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_SetpointReached</name> + <text>Setpoint Reached</text> + <x>90</x> + <y>263</y> + <width>173</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.Command_Status_1</name> + <x>320</x> + <y>338</y> + <width>302</width> + <height>285</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.Command_Status.border_1</name> + <width>300</width> + <height>280</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_MOTOR_START_STOP</name> + <text>MANUAL PUMP CONTROL</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Group alarm</tooltip> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.Command_Status.background_1</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>238</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_START</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_PumpStart</pv_name> + <text>START</text> + <x>87</x> + <y>157</y> + <width>130</width> + <height>33</height> + <background_color> + <color name="GREEN" red="61" green="216" blue="61"> + </color> + </background_color> + <rules> + <rule name="EnabledRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0==0"> + <value>true</value> + </exp> + <exp bool_exp="pv0==1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Auto</pv_name> + </rule> + </rules> + <tooltip>Start pump</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_STOP2</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Stop</pv_name> + <text>STOP</text> + <x>87</x> + <y>192</y> + <width>130</width> + <height>33</height> + <background_color> + <color name="RED-BACKGROUND" red="225" green="192" blue="188"> + </color> + </background_color> + <rules> + <rule name="EnabledRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0==0"> + <value>true</value> + </exp> + <exp bool_exp="pv0==1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Auto</pv_name> + </rule> + </rules> + <tooltip>Stop pump</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>Picture</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:MotorColor</pv_name> + <symbols> + <symbol>../../../CMS_OPI_MASTER/Symbols/CP_Pump_RED.png</symbol> + <symbol>../../../CMS_OPI_MASTER/Symbols/CP_Pump_BLUE.png</symbol> + <symbol>../../../CMS_OPI_MASTER/Symbols/CP_Pump_GREEN.png</symbol> + <symbol>../../../CMS_OPI_MASTER/Symbols/CP_Pump_WHITE.png</symbol> + <symbol>../../../CMS_OPI_MASTER/Symbols/CP_Pump_YELLOW.png</symbol> + </symbols> + <x>108</x> + <y>46</y> + <width>95</width> + <height>93</height> + <tooltip></tooltip> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_STS_RotationON</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:RotationON</pv_name> + <x>54</x> + <y>233</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="ON" red="70" green="255" blue="70"> + </color> + </on_color> + <tooltip>Speed reached</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_RotationON</name> + <text>Rotation ON</text> + <x>91</x> + <y>233</y> + <width>173</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + </children> + </tab> + <tab> + <name>Trend</name> + <children> + <widget type="databrowser" version="2.0.0"> + <name>DataBrowser</name> + <file>TP_ControlPump_Faceplate_Trend.plt</file> + <x>1</x> + <y>3</y> + <width>907</width> + <height>721</height> + </widget> + </children> + </tab> + <tab> + <name>Settings</name> + <children> + </children> + </tab> + </tabs> + <x>10</x> + <y>50</y> + <width>943</width> + <height>770</height> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Header Bar</name> + <width>958</width> + <height>50</height> + <line_width>0</line_width> + <line_color> + <color red="0" green="0" blue="255" alpha="0"> + </color> + </line_color> + <background_color> + <color name="PRIMARY-HEADER-BACKGROUND" red="151" green="188" blue="202"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HeaderPVName</name> + <text>${SecSub}:${Dis}-${Dev}-${Index}</text> + <x>20</x> + <width>715</width> + <height>50</height> + <font> + <font name="Header 1" family="Source Sans Pro" style="BOLD_ITALIC" size="36.0"> + </font> + </font> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Unlocked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>1</value> + <description>Write CMD_DevUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <value>0</value> + <description>Write CMD_DevLock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + </actions> + <text>UNLOCK</text> + <x>850</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false) || (pv1 == true) || (pv2 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true) && (pv1 == false) && (pv2 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Unlock this device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>Action Button</name> + <x>730</x> + <y>50</y> + <width>1</width> + <height>1</height> + <tooltip>$(actions)</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Locked_1</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>0</value> + <description>Write CMD_DEVUNLOCK</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock(99)</pv_name> + <value>1</value> + <description>Run Lock script</description> + </action> + </actions> + <text>LOCK</text> + <x>850</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + </rule> + </rules> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: generate unique Machine ID from the network adapters to use it for locking mechanism*/ + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); + +var Lock = pvs[0];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock*/ +var Cmd_DevLock = pvs[1];/*${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock*/ +var P_Faceplate_LockID = pvs[2];/*${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID*/ +var Inhibit_Lock = pvs[3];/*${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock*/ +var Faceplate_LockID = pvs[4];/*${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID*/ +var BlockIcon_LockID = pvs[5];/*${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID*/ +var EnaForceUnlock = pvs[6];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock*/ +var DevLocked = pvs[7];/*${SecSub}:${Dis}-${Dev}-${Index}:DevLocked*/ + + + + +var PV1 = PVUtil.getLong(Faceplate_LockID); /*Faceplate_LockID*/ +var PV2 = PVUtil.getLong(BlockIcon_LockID); /*BlockIcon_LockID*/ + +//OnShow +if (PVUtil.getLong(DevLocked) == 1) { /*DevLocked*/ + + if (PV1.toString() == PV2.toString()){ /*FaceplateLockID != BlockIconeLockID*/ + + logger.info(" Owner"); + EnaForceUnlock.setValue(0); /*Write EnaForceUnlock*/ + + } else + { + logger.info(" Faceplate FaceplateLockID "+ PV1); + logger.info(" Faceplate BlockIconeLockID "+ PV2); + + logger.info(" Guest"); + EnaForceUnlock.setValue(1); /*Write EnaForceUnlock*/ + } + + + +} +// OnClick +if (PVUtil.getLong(Lock) != 99) { /*loc://Lock, check if the script was triggered because of a button press or initilization*/ + if (PVUtil.getLong(Inhibit_Lock) == 0) { /*Inhibit_lock, check if locking is inhibited*/ + + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + UniqueText = UniqueText + intf.getName() + intf.getDisplayName(); + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + UniqueText = UniqueText + enumIpAddr.nextElement().toString(); + } + } + + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText); + if (crc >=2147483647){ crc = crc - 2147483647;} + + logger.info(" Faceplate machine ID: "+crc); + P_Faceplate_LockID.setValue(crc); /*Write P_Faceplate_LockID*/ + Cmd_DevLock.setValue(1); /*Write Lock*/ + + } /*Lock inhibit*/ +} /*onshow*/ + +]]></text> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID</pv_name> + <pv_name trigger="false">loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + </script> + </scripts> + <tooltip>Lock this device</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/TP_ControlPump_Faceplate_Trend.plt b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/TP_ControlPump_Faceplate_Trend.plt new file mode 100644 index 0000000000000000000000000000000000000000..d0bb7e56c9bd87a4b605e9cd2ade1e6dc14dfd68 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/TP_ControlPump_Faceplate_Trend.plt @@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<databrowser> + <title></title> + <save_changes>true</save_changes> + <show_legend>false</show_legend> + <show_toolbar>true</show_toolbar> + <grid>false</grid> + <scroll>true</scroll> + <update_period>3.0</update_period> + <scroll_step>5</scroll_step> + <start>-10 minutes 0.0 seconds</start> + <end>now</end> + <archive_rescale>NONE</archive_rescale> + <foreground> + <red>229</red> + <green>229</green> + <blue>229</blue> + </foreground> + <background> + <red>77</red> + <green>77</green> + <blue>77</blue> + </background> + <title_font>Cantarell|16|1</title_font> + <label_font>Cantarell|11|1</label_font> + <scale_font>Cantarell|10|0</scale_font> + <legend_font>Cantarell|10|0</legend_font> + <axes> + <axis> + <visible>true</visible> + <name>Value Axis</name> + <use_axis_name>true</use_axis_name> + <use_trace_names>true</use_trace_names> + <right>false</right> + <color> + <red>255</red> + <green>165</green> + <blue>0</blue> + </color> + <min>0.0</min> + <max>25.0</max> + <grid>true</grid> + <autoscale>true</autoscale> + <log_scale>false</log_scale> + </axis> + </axes> + <annotations> + </annotations> + <pvlist> + </pvlist> +</databrowser> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/TP_TurbinePump_BlockIcon_Horizontal.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/TP_TurbinePump_BlockIcon_Horizontal.bob new file mode 100644 index 0000000000000000000000000000000000000000..a397d54e0e05ad02adb4d450226f72ec4cce8bff --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/TP_TurbinePump_BlockIcon_Horizontal.bob @@ -0,0 +1,339 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>P Turbine PUMP Horizontal</name> + <width>245</width> + <height>120</height> + <widget type="rectangle" version="2.0.0"> + <name>Rectangle</name> + <width>245</width> + <height>120</height> + <line_width>0</line_width> + <background_color> + <color red="0" green="0" blue="0" alpha="18"> + </color> + </background_color> + <corner_width>20</corner_width> + <corner_height>20</corner_height> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon_1</name> + <text>A</text> + <x>102</x> + <y>40</y> + <width>30</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="29.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>A</value> + </exp> + <exp bool_exp="pv1 == true"> + <value>M</value> + </exp> + <exp bool_exp="pv2 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon_1</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>103</x> + <y>6</y> + <width>24</width> + <height>24</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Interlock_1</name> + <symbols> + <symbol>../../symbols/custom_v02/interlock_overridden_disabled_cms@32.png</symbol> + </symbols> + <x>13</x> + <y>6</y> + <width>24</width> + <height>24</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Interlock event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_MaintenanceIcon_1</name> + <symbols> + <symbol>../../symbols/custom_v02/Wrench_error @32.png</symbol> + </symbols> + <x>104</x> + <y>90</y> + <width>22</width> + <height>22</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false)&&(pv1==false)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true)||(pv1==true)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Module_Error</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:IO_Error</pv_name> + </rule> + </rules> + <tooltip>Maintenace Needed!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_IOErrorIcon_1</name> + <symbols> + <symbol>../../symbols/custom_v02/WARNING@32.png</symbol> + </symbols> + <x>13</x> + <y>89</y> + <width>24</width> + <height>24</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Module_Error</pv_name> + </rule> + </rules> + <tooltip>Siemens IO card error!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Locked_1</name> + <symbols> + <symbol>../../symbols/custom_v02/lock_locked@32.png</symbol> + </symbols> + <x>13</x> + <y>47</y> + <width>23</width> + <height>23</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:DevLocked</pv_name> + </rule> + </rules> + <tooltip>Device is locked</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIcon_1</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:PumpColor</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom/TP_Turbine_Pump_GREEN.png</symbol> + <symbol>../../symbols/custom/TP_Turbine_Pump_WHITE.png</symbol> + <symbol>../../symbols/custom/TP_Turbine_Pump_YELLOW.png</symbol> + </symbols> + <x>38</x> + <y>28</y> + <width>64</width> + <height>64</height> + <actions execute_as_one="true"> + </actions> + <tooltip>Open faceplate</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL_1</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>137</x> + <y>1</y> + <width>98</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="18.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color red="0" green="0" blue="0" alpha="0"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackGround Rule" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0==1"> + <value> + <color name="BLUE" red="79" green="228" blue="250"> + </color> + </value> + </exp> + <exp bool_exp="pv1==1"> + <value> + <color name="MAGENTA-BACKGROUND" red="218" green="195" blue="209"> + </color> + </value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + </rule> + </rules> + <tooltip>Device name</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "CP_ControlPump_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>245</width> + <height>120</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/TP_TurbinePump_BlockIcon_Horizontal_Left.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/TP_TurbinePump_BlockIcon_Horizontal_Left.bob new file mode 100644 index 0000000000000000000000000000000000000000..ec62d8ddb84c292fc7a0297f38ee455816527017 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/TP_TurbinePump_BlockIcon_Horizontal_Left.bob @@ -0,0 +1,338 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>TP_TurbinePump_BlockIcon_Horizontal_Left</name> + <width>245</width> + <height>120</height> + <widget type="rectangle" version="2.0.0"> + <name>WID_Rect</name> + <width>245</width> + <height>120</height> + <line_width>0</line_width> + <background_color> + <color red="0" green="0" blue="0" alpha="18"> + </color> + </background_color> + <corner_width>20</corner_width> + <corner_height>20</corner_height> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text>A</text> + <x>102</x> + <y>40</y> + <width>30</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="29.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>A</value> + </exp> + <exp bool_exp="pv1 == true"> + <value>M</value> + </exp> + <exp bool_exp="pv2 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>103</x> + <y>6</y> + <width>24</width> + <height>24</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Interlock</name> + <symbols> + <symbol>../../symbols/custom_v02/interlock_overridden_disabled_cms@32.png</symbol> + </symbols> + <x>13</x> + <y>6</y> + <width>24</width> + <height>24</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Interlock event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_MaintenanceIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/Wrench_error @32.png</symbol> + </symbols> + <x>104</x> + <y>90</y> + <width>22</width> + <height>22</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false)&&(pv1==false)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true)||(pv1==true)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Module_Error</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:IO_Error</pv_name> + </rule> + </rules> + <tooltip>Maintenace Needed!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_IOErrorIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/WARNING@32.png</symbol> + </symbols> + <x>13</x> + <y>89</y> + <width>24</width> + <height>24</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Module_Error</pv_name> + </rule> + </rules> + <tooltip>Siemens IO card error!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Locked</name> + <symbols> + <symbol>../../symbols/custom_v02/lock_locked@32.png</symbol> + </symbols> + <x>13</x> + <y>47</y> + <width>23</width> + <height>23</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:DevLocked</pv_name> + </rule> + </rules> + <tooltip>Device is locked</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIcon</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:PumpColor</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom/TP_Turbine_Pump_GREEN.png</symbol> + <symbol>../../symbols/custom/TP_Turbine_Pump_WHITE.png</symbol> + <symbol>../../symbols/custom/TP_Turbine_Pump_YELLOW.png</symbol> + </symbols> + <x>38</x> + <y>28</y> + <width>64</width> + <height>64</height> + <actions execute_as_one="true"> + </actions> + <tooltip>Open faceplate</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>137</x> + <width>98</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="18.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color red="0" green="0" blue="0" alpha="0"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackGround Rule" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0==1"> + <value> + <color name="BLUE" red="79" green="228" blue="250"> + </color> + </value> + </exp> + <exp bool_exp="pv1==1"> + <value> + <color name="MAGENTA-BACKGROUND" red="218" green="195" blue="209"> + </color> + </value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + </rule> + </rules> + <tooltip>Device name</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "CP_ControlPump_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>245</width> + <height>120</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/TP_TurbinePump_BlockIcon_Horizontal_Right.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/TP_TurbinePump_BlockIcon_Horizontal_Right.bob new file mode 100644 index 0000000000000000000000000000000000000000..a841df47cb57e159c2648dc6de16363695d1ae30 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/TP_TurbinePump_BlockIcon_Horizontal_Right.bob @@ -0,0 +1,339 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>TP_TurbinePump_BlockIcon_Horizontal_Right</name> + <width>245</width> + <height>120</height> + <widget type="rectangle" version="2.0.0"> + <name>WID_Rect</name> + <width>245</width> + <height>120</height> + <line_width>0</line_width> + <background_color> + <color red="0" green="0" blue="0" alpha="18"> + </color> + </background_color> + <corner_width>20</corner_width> + <corner_height>20</corner_height> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text>A</text> + <x>203</x> + <y>40</y> + <width>30</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="29.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>A</value> + </exp> + <exp bool_exp="pv1 == true"> + <value>M</value> + </exp> + <exp bool_exp="pv2 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>204</x> + <y>6</y> + <width>24</width> + <height>24</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Interlock</name> + <symbols> + <symbol>../../symbols/custom_v02/interlock_overridden_disabled_cms@32.png</symbol> + </symbols> + <x>114</x> + <y>6</y> + <width>24</width> + <height>24</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Interlock event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_MaintenanceIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/Wrench_error @32.png</symbol> + </symbols> + <x>205</x> + <y>90</y> + <width>22</width> + <height>22</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false)&&(pv1==false)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true)||(pv1==true)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Module_Error</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:IO_Error</pv_name> + </rule> + </rules> + <tooltip>Maintenace Needed!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_IOErrorIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/WARNING@32.png</symbol> + </symbols> + <x>114</x> + <y>89</y> + <width>24</width> + <height>24</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Module_Error</pv_name> + </rule> + </rules> + <tooltip>Siemens IO card error!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Locked</name> + <symbols> + <symbol>../../symbols/custom_v02/lock_locked@32.png</symbol> + </symbols> + <x>114</x> + <y>47</y> + <width>23</width> + <height>23</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:DevLocked</pv_name> + </rule> + </rules> + <tooltip>Device is locked</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIcon</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:PumpColor</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_OK@64.png</symbol> + <symbol>../../symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_valve_solenoid_CLOSED_w@64.png</symbol> + <symbol>../../symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_WARNING@64.png</symbol> + </symbols> + <x>139</x> + <y>28</y> + <width>64</width> + <height>64</height> + <actions execute_as_one="true"> + </actions> + <tooltip>Open faceplate</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>10</x> + <y>1</y> + <width>98</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="18.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color red="0" green="0" blue="0" alpha="0"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackGround Rule" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0==1"> + <value> + <color name="BLUE" red="79" green="228" blue="250"> + </color> + </value> + </exp> + <exp bool_exp="pv1==1"> + <value> + <color name="MAGENTA-BACKGROUND" red="218" green="195" blue="209"> + </color> + </value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + </rule> + </rules> + <tooltip>Device name</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "CP_ControlPump_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>245</width> + <height>120</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/TP_TurbinePump_BlockIcon_Vertical.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/TP_TurbinePump_BlockIcon_Vertical.bob new file mode 100644 index 0000000000000000000000000000000000000000..f66800b012e0224c04ae2809249b1781d29fbcb9 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/TP_TurbinePump_BlockIcon_Vertical.bob @@ -0,0 +1,260 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>TP_TurbinePump_BlockIcon_Vertical</name> + <width>132</width> + <height>130</height> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text>A</text> + <x>51</x> + <y>29</y> + <width>30</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="29.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value> </value> + </exp> + <exp bool_exp="pv1 == true"> + <value>M</value> + </exp> + <exp bool_exp="pv2 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>91</x> + <y>37</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Interlock</name> + <symbols> + <symbol>../../symbols/custom_v02/interlock_overridden_disabled_cms@32.png</symbol> + </symbols> + <x>15</x> + <y>37</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Interlock event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIcon</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:PumpColor</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_OK@64.png</symbol> + <symbol>../../symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_valve_solenoid_CLOSED_w@64.png</symbol> + <symbol>../../symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_WARNING@64.png</symbol> + </symbols> + <x>34</x> + <y>61</y> + <width>64</width> + <height>64</height> + <rotation>-90.0</rotation> + <actions execute_as_one="true"> + </actions> + <tooltip>Open faceplate</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <y>3</y> + <width>131</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="25.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color red="0" green="0" blue="0" alpha="0"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackGround Rule" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0==1"> + <value> + <color name="BLUE" red="79" green="228" blue="250"> + </color> + </value> + </exp> + <exp bool_exp="pv1==1"> + <value> + <color name="MAGENTA-BACKGROUND" red="218" green="195" blue="209"> + </color> + </value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + </rule> + </rules> + <tooltip>Device name</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "CP_ControlPump_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>132</width> + <height>130</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/TP_TurbinePump_BlockIcon_Vertical_Compact.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/TP_TurbinePump_BlockIcon_Vertical_Compact.bob new file mode 100644 index 0000000000000000000000000000000000000000..ab25aebdf1cfb273e65eb80c4fad84eebf95dd33 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Pumps/TP_TurbinePump_BlockIcon_Vertical_Compact.bob @@ -0,0 +1,260 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>TP_TurbinePump_BlockIcon_Vertical_Compact</name> + <width>132</width> + <height>130</height> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text>A</text> + <x>51</x> + <y>29</y> + <width>30</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="29.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value> </value> + </exp> + <exp bool_exp="pv1 == true"> + <value>M</value> + </exp> + <exp bool_exp="pv2 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>91</x> + <y>37</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Interlock</name> + <symbols> + <symbol>../../symbols/custom_v02/interlock_overridden_disabled_cms@32.png</symbol> + </symbols> + <x>15</x> + <y>37</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Interlock event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIcon</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:PumpColor</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_OK@64.png</symbol> + <symbol>../../symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_valve_solenoid_CLOSED_w@64.png</symbol> + <symbol>../../symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_WARNING@64.png</symbol> + </symbols> + <x>34</x> + <y>61</y> + <width>64</width> + <height>64</height> + <rotation>-90.0</rotation> + <actions execute_as_one="true"> + </actions> + <tooltip>Open faceplate</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <y>3</y> + <width>131</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="25.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color red="0" green="0" blue="0" alpha="0"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackGround Rule" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0==1"> + <value> + <color name="BLUE" red="79" green="228" blue="250"> + </color> + </value> + </exp> + <exp bool_exp="pv1==1"> + <value> + <color name="MAGENTA-BACKGROUND" red="218" green="195" blue="209"> + </color> + </value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + </rule> + </rules> + <tooltip>Device name</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "TP_ControlPump_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>132</width> + <height>130</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_BlockIcon_Horizontal.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_BlockIcon_Horizontal.bob new file mode 100644 index 0000000000000000000000000000000000000000..199e0b79340e147247c8dbdf6d35157fdbae9e6c --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_BlockIcon_Horizontal.bob @@ -0,0 +1,420 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>CV_ControlVALVE_BlockIcon_Horizontal</name> + <width>140</width> + <height>205</height> + <grid_visible>false</grid_visible> + <widget type="rectangle" version="2.0.0"> + <name>WID_Rect</name> + <width>140</width> + <height>205</height> + <line_width>0</line_width> + <background_color> + <color red="0" green="0" blue="0" alpha="18"> + </color> + </background_color> + <corner_width>20</corner_width> + <corner_height>20</corner_height> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>10</x> + <y>5</y> + <width>120</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="18.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color red="0" green="0" blue="0" alpha="0"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Device name</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text>A</text> + <x>54</x> + <y>30</y> + <width>32</width> + <height>32</height> + <font> + <font family="Source Code Pro" style="BOLD" size="29.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>A</value> + </exp> + <exp bool_exp="pv1 == true"> + <value>M</value> + </exp> + <exp bool_exp="pv2 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>103</x> + <y>39</y> + <width>24</width> + <height>24</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Interlock</name> + <symbols> + <symbol>../../symbols/custom_v02/interlock_overridden_disabled_cms@32.png</symbol> + </symbols> + <x>10</x> + <y>39</y> + <width>24</width> + <height>24</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Interlock event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_IOErrorIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/WARNING@32.png</symbol> + </symbols> + <x>10</x> + <y>121</y> + <width>24</width> + <height>24</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == true)||(pv1==true)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == false)&&(pv1==false)"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Input_Module_Error</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Output_Module_Error</pv_name> + </rule> + </rules> + <tooltip>Siemens IO card error!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_MaintenanceIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/Wrench_error @32.png</symbol> + </symbols> + <x>104</x> + <y>123</y> + <width>21</width> + <height>21</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false)&&(pv1==false)&&(pv2==false)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true)||(pv1==true)||(pv2==true)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:IO_Error</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Input_Module_Error</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Output_Module_Error</pv_name> + </rule> + </rules> + <tooltip>Maintenace Needed!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIcon</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValveColor</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_OK@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_ERROR@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_OFF@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_NEUTRAL@64.png</symbol> + </symbols> + <x>38</x> + <y>63</y> + <width>64</width> + <height>64</height> + <actions execute_as_one="true"> + </actions> + <tooltip>Open faceplate</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Moving</name> + <symbols> + <symbol>../../symbols/custom_v02/opening_neutral@32.png</symbol> + <symbol>../../symbols/custom_v02/closing_neutral@32.png</symbol> + </symbols> + <x>58</x> + <y>121</y> + <width>23</width> + <height>24</height> + <rules> + <rule name="Visibility" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Opening</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Closing</pv_name> + </rule> + <rule name="Picture" prop_id="initial_index" out_exp="false"> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>0</value> + </exp> + <exp bool_exp="(pv0 == 0) && (pv1 == 1)"> + <value>1</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Opening</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Closing</pv_name> + </rule> + </rules> + <tooltip>Pump is ramping</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_MV</name> + <text>MV:</text> + <x>13</x> + <y>149</y> + <width>25</width> + <horizontal_alignment>2</horizontal_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_SP</name> + <text>SP:</text> + <x>13</x> + <y>174</y> + <width>49</width> + <horizontal_alignment>2</horizontal_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_Value_MV</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValveMV</pv_name> + <x>68</x> + <y>149</y> + <width>61</width> + <background_color> + <color red="0" green="0" blue="0" alpha="0"> + </color> + </background_color> + <precision>1</precision> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </border_color> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_Value_SP</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValveSP</pv_name> + <x>68</x> + <y>174</y> + <width>61</width> + <background_color> + <color red="0" green="0" blue="0" alpha="0"> + </color> + </background_color> + <precision>1</precision> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </border_color> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Locked</name> + <symbols> + <symbol>../../symbols/custom_v02/lock_locked@32.png</symbol> + </symbols> + <x>10</x> + <y>170</y> + <width>23</width> + <height>23</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:DevLocked</pv_name> + </rule> + </rules> + <tooltip>Device is locked</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "CV_ControlVALVE_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>140</width> + <height>205</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_BlockIcon_Horizontal_Compact.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_BlockIcon_Horizontal_Compact.bob new file mode 100644 index 0000000000000000000000000000000000000000..8e49d86317ae4c9b525bd4d0ab3f45ac2a770107 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_BlockIcon_Horizontal_Compact.bob @@ -0,0 +1,398 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>CV_ControlValve_Horizontal_BlockIcon_compact</name> + <width>140</width> + <height>182</height> + <widget type="textupdate" version="2.0.0"> + <name>WID_Value_SP</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValveSP</pv_name> + <y>147</y> + <width>140</width> + <height>34</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="28.0"> + </font> + </font> + <precision>1</precision> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <rules> + <rule name="Disconnected" prop_id="background_color" out_exp="false"> + <exp bool_exp="pvInt0 > 0"> + <value> + <color name="Read_Background" red="230" green="235" blue="232"> + </color> + </value> + </exp> + <exp bool_exp="pvInt0 == 0"> + <value> + <color name="INVALID" red="149" green="110" blue="221"> + </color> + </value> + </exp> + <pv_name>${PLCName}:PLCHashCorrectR</pv_name> + </rule> + </rules> + <tooltip>Setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_width>1</border_width> + <border_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </border_color> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_Value_MV</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValvePosition</pv_name> + <y>117</y> + <width>140</width> + <height>33</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="28.0"> + </font> + </font> + <precision>1</precision> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <rules> + <rule name="Disconnected" prop_id="background_color" out_exp="false"> + <exp bool_exp="pvInt0 > 0"> + <value> + <color name="Read_Background" red="230" green="235" blue="232"> + </color> + </value> + </exp> + <exp bool_exp="pvInt0 == 0"> + <value> + <color name="INVALID" red="149" green="110" blue="221"> + </color> + </value> + </exp> + <pv_name>${PLCName}:PLCHashCorrectR</pv_name> + </rule> + </rules> + <tooltip>Actual position</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_width>1</border_width> + <border_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </border_color> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIcon</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValveColor</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_OFF@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_OK@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_ERROR@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_NEUTRAL@64.png</symbol> + </symbols> + <x>38</x> + <y>58</y> + <width>64</width> + <height>64</height> + <actions execute_as_one="true"> + </actions> + <tooltip>Open faceplate</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text>A</text> + <x>55</x> + <y>26</y> + <width>30</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="29.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value> </value> + </exp> + <exp bool_exp="pv1 == true"> + <value>M</value> + </exp> + <exp bool_exp="pv2 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <width>140</width> + <height>33</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="28.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Device name</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>99</x> + <y>32</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Interlock</name> + <symbols> + <symbol>../../symbols/custom_v02/interlock_overridden_disabled_cms@32.png</symbol> + </symbols> + <x>7</x> + <y>34</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Interlock event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Moving</name> + <symbols> + <symbol>../../symbols/custom_v02/opening_neutral@32.png</symbol> + <symbol>../../symbols/custom_v02/closing_neutral@32.png</symbol> + </symbols> + <x>103</x> + <y>62</y> + <width>23</width> + <height>24</height> + <rules> + <rule name="Visibility" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Opening</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Closing</pv_name> + </rule> + <rule name="Picture" prop_id="initial_index" out_exp="false"> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>0</value> + </exp> + <exp bool_exp="(pv0 == 0) && (pv1 == 1)"> + <value>1</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Opening</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Closing</pv_name> + </rule> + </rules> + <tooltip>Pump is ramping</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); +WIDIndexPID = macros.getValue("WIDIndexPID"); +WIDSecSubPID = macros.getValue("WIDSecSubPID"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + try + { + P_BlockIcon_LockID.setValue(crc); + } + + catch (e) { logger.info(" Locked ID cannot write pv"); } + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + map["IndexPID"] = WIDIndexPID; + map["SecSubPID"] = WIDSecSubPID; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "CV_ControlVALVE_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>140</width> + <height>190</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> + <widget type="textentry" version="3.0.0"> + <name>WID_BlkControl</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:P_Setpoint</pv_name> + <y>150</y> + <width>140</width> + <height>32</height> + <visible>false</visible> + <font> + <font family="Source Sans Pro" style="REGULAR" size="28.0"> + </font> + </font> + <format>1</format> + <precision>2</precision> + <rules> + <rule name="Disconnected" prop_id="background_color" out_exp="false"> + <exp bool_exp="pvInt0 > 0"> + <value> + <color name="Read_Background" red="230" green="235" blue="232"> + </color> + </value> + </exp> + <exp bool_exp="pvInt0 == 0"> + <value> + <color name="INVALID" red="149" green="110" blue="221"> + </color> + </value> + </exp> + <pv_name>CrS-CMS:Cryo-PLC-01:PLCHashCorrectR</pv_name> + </rule> + <rule name="Visibility" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:EnableBlkCtrl</pv_name> + </rule> + </rules> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_BlockIcon_Vertical_Left.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_BlockIcon_Vertical_Left.bob new file mode 100644 index 0000000000000000000000000000000000000000..1e38114232d78ab433a34c88dde44c3af73420c7 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_BlockIcon_Vertical_Left.bob @@ -0,0 +1,419 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>CV_ControlVALVE_BlockIcon_Vertical_Left</name> + <width>265</width> + <height>140</height> + <widget type="rectangle" version="2.0.0"> + <name>WID_Rect</name> + <width>265</width> + <height>140</height> + <line_width>0</line_width> + <background_color> + <color red="0" green="0" blue="0" alpha="18"> + </color> + </background_color> + <corner_width>20</corner_width> + <corner_height>20</corner_height> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIcon</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValveColor</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_OK@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_ERROR@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_OFF@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_NEUTRAL@64.png</symbol> + </symbols> + <x>35</x> + <y>39</y> + <width>64</width> + <height>64</height> + <rotation>-90.0</rotation> + <actions execute_as_one="true"> + </actions> + <tooltip>Open faceplate</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Interlock</name> + <symbols> + <symbol>../../symbols/custom_v02/interlock_overridden_disabled_cms@32.png</symbol> + </symbols> + <x>13</x> + <y>10</y> + <width>24</width> + <height>24</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Interlock event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>103</x> + <y>10</y> + <width>24</width> + <height>24</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text>A</text> + <x>9</x> + <y>51</y> + <width>30</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="29.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>A</value> + </exp> + <exp bool_exp="pv1 == true"> + <value>M</value> + </exp> + <exp bool_exp="pv2 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Moving</name> + <symbols> + <symbol>../../symbols/custom_v02/opening_neutral@32.png</symbol> + <symbol>../../symbols/custom_v02/closing_neutral@32.png</symbol> + </symbols> + <x>103</x> + <y>59</y> + <width>23</width> + <height>23</height> + <rules> + <rule name="Visibility" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Opening</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Closing</pv_name> + </rule> + <rule name="Picture" prop_id="initial_index" out_exp="false"> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>0</value> + </exp> + <exp bool_exp="(pv0 == 0) && (pv1 == 1)"> + <value>1</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Opening</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Closing</pv_name> + </rule> + </rules> + <tooltip>Pump is ramping</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Locked</name> + <symbols> + <symbol>../../symbols/custom_v02/lock_locked@32.png</symbol> + </symbols> + <x>132</x> + <y>70</y> + <width>23</width> + <height>23</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:DevLocked</pv_name> + </rule> + </rules> + <tooltip>Device is locked</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_IOErrorIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/WARNING@32.png</symbol> + </symbols> + <x>13</x> + <y>107</y> + <width>24</width> + <height>24</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == true)||(pv1==true)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == false)&&(pv1==false)"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Input_Module_Error</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Output_Module_Error</pv_name> + </rule> + </rules> + <tooltip>Siemens IO card error!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_MaintenanceIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/Wrench_error @32.png</symbol> + </symbols> + <x>104</x> + <y>109</y> + <width>21</width> + <height>21</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false)&&(pv1==false)&&(pv2==false)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true)||(pv1==true)||(pv2==true)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:IO_Error</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Input_Module_Error</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Output_Module_Error</pv_name> + </rule> + </rules> + <tooltip>Maintenace Needed!</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_Value_MV</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValvePosition</pv_name> + <x>194</x> + <y>47</y> + <width>60</width> + <background_color> + <color red="230" green="235" blue="232" alpha="0"> + </color> + </background_color> + <precision>1</precision> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Actual position</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </border_color> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_Value_SP</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValveSP</pv_name> + <x>194</x> + <y>74</y> + <width>60</width> + <background_color> + <color red="230" green="235" blue="232" alpha="0"> + </color> + </background_color> + <precision>1</precision> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </border_color> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_LBL_MV</name> + <text>MV:</text> + <x>134</x> + <y>47</y> + <width>49</width> + <horizontal_alignment>2</horizontal_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_LBL_SP</name> + <text>SP:</text> + <x>157</x> + <y>74</y> + <width>26</width> + <horizontal_alignment>2</horizontal_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>134</x> + <y>7</y> + <width>120</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="18.0"> + </font> + </font> + <background_color> + <color red="0" green="0" blue="0" alpha="0"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <tooltip>Device name</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "CV_ControlVALVE_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>265</width> + <height>140</height> + <background_color> + <color red="236" green="236" blue="236" alpha="0"> + </color> + </background_color> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_BlockIcon_Vertical_Right.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_BlockIcon_Vertical_Right.bob new file mode 100644 index 0000000000000000000000000000000000000000..f096dbbd30fd6bc847cb23699b31f99f2087a9ad --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_BlockIcon_Vertical_Right.bob @@ -0,0 +1,329 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>CV_ControlVALVE_BlockIcon_Vertical_Right</name> + <width>265</width> + <height>140</height> + <widget type="rectangle" version="2.0.0"> + <name>WID_Rect</name> + <width>263</width> + <height>140</height> + <line_width>0</line_width> + <background_color> + <color red="0" green="0" blue="0" alpha="18"> + </color> + </background_color> + <corner_width>20</corner_width> + <corner_height>20</corner_height> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIcon</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValveColor</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_OK@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_ERROR@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_OFF@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_NEUTRAL@64.png</symbol> + </symbols> + <x>164</x> + <y>39</y> + <width>64</width> + <height>64</height> + <rotation>90.0</rotation> + <actions execute_as_one="true"> + </actions> + <tooltip>Open faceplate</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Interlock</name> + <symbols> + <symbol>../../symbols/custom_v02/interlock_overridden_disabled_cms@32.png</symbol> + </symbols> + <x>138</x> + <y>10</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Interlock event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>227</x> + <y>10</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text>A</text> + <x>224</x> + <y>51</y> + <width>30</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="29.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>A</value> + </exp> + <exp bool_exp="pv1 == true"> + <value>M</value> + </exp> + <exp bool_exp="pv2 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Moving</name> + <symbols> + <symbol>../../symbols/custom_v02/opening_neutral@32.png</symbol> + <symbol>../../symbols/custom_v02/closing_neutral@32.png</symbol> + </symbols> + <x>139</x> + <y>59</y> + <width>23</width> + <height>23</height> + <rules> + <rule name="Visibility" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Opening</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Closing</pv_name> + </rule> + <rule name="Picture" prop_id="initial_index" out_exp="false"> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>0</value> + </exp> + <exp bool_exp="(pv0 == 0) && (pv1 == 1)"> + <value>1</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Opening</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Closing</pv_name> + </rule> + </rules> + <tooltip>Pump is ramping</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_Value_MV</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValvePosition</pv_name> + <x>9</x> + <y>46</y> + <width>122</width> + <height>36</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="28.0"> + </font> + </font> + <precision>1</precision> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Actual position</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_width>1</border_width> + <border_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </border_color> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_Value_SP</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValveSP</pv_name> + <x>9</x> + <y>85</y> + <width>122</width> + <height>35</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="28.0"> + </font> + </font> + <precision>1</precision> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_width>1</border_width> + <border_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </border_color> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>2</x> + <y>7</y> + <width>136</width> + <height>37</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="28.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <tooltip>Device name</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "CV_ControlVALVE_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>265</width> + <height>140</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_BlockIcon_Vertical_Right_Compact.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_BlockIcon_Vertical_Right_Compact.bob new file mode 100644 index 0000000000000000000000000000000000000000..d780689f962dcba33da6e95de6f2ea04005592fd --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_BlockIcon_Vertical_Right_Compact.bob @@ -0,0 +1,328 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>CV_ControlVALVE_BlockIcon_Vertical_Right_Compact</name> + <width>255</width> + <height>125</height> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIcon</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValveColor</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_OFF@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_OK@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_ERROR@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_NEUTRAL@64.png</symbol> + </symbols> + <x>156</x> + <y>39</y> + <width>64</width> + <height>64</height> + <rotation>90.0</rotation> + <actions execute_as_one="true"> + </actions> + <tooltip>Open faceplate</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Interlock</name> + <symbols> + <symbol>../../symbols/custom_v02/interlock_overridden_disabled_cms@32.png</symbol> + </symbols> + <x>130</x> + <y>10</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Interlock event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>219</x> + <y>10</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text>A</text> + <x>216</x> + <y>51</y> + <width>30</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="29.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>A</value> + </exp> + <exp bool_exp="pv1 == true"> + <value>M</value> + </exp> + <exp bool_exp="pv2 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Moving</name> + <symbols> + <symbol>../../symbols/custom_v02/opening_neutral@32.png</symbol> + <symbol>../../symbols/custom_v02/closing_neutral@32.png</symbol> + </symbols> + <x>191</x> + <y>13</y> + <width>23</width> + <height>23</height> + <rules> + <rule name="Visibility" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Opening</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Closing</pv_name> + </rule> + <rule name="Picture" prop_id="initial_index" out_exp="false"> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>0</value> + </exp> + <exp bool_exp="(pv0 == 0) && (pv1 == 1)"> + <value>1</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Opening</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Closing</pv_name> + </rule> + </rules> + <tooltip>Pump is ramping</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_Value_MV</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValvePosition</pv_name> + <x>9</x> + <y>42</y> + <width>148</width> + <height>36</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="28.0"> + </font> + </font> + <precision>1</precision> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Actual position</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_width>1</border_width> + <border_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </border_color> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_Value_SP</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValveSP</pv_name> + <x>9</x> + <y>81</y> + <width>148</width> + <height>35</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="28.0"> + </font> + </font> + <precision>1</precision> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_width>1</border_width> + <border_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </border_color> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>2</x> + <y>7</y> + <width>136</width> + <height>37</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="28.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <tooltip>Device name</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); +WIDIndexPID = macros.getValue("WIDIndexPID"); +WIDSecSubPID = macros.getValue("WIDSecSubPID"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + try + { + P_BlockIcon_LockID.setValue(crc); + } + + catch (e) { logger.info(" Locked ID cannot write pv"); } + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + map["IndexPID"] = WIDIndexPID; + map["SecSubPID"] = WIDSecSubPID; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "CV_ControlVALVE_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>255</width> + <height>125</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Faceplate.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Faceplate.bob new file mode 100644 index 0000000000000000000000000000000000000000..37f4c3ab84a967c80e02722a8e3fba3fc7e3f71a --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Faceplate.bob @@ -0,0 +1,2172 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>CV Control Valve Faceplate</name> + <width>965</width> + <height>790</height> + <widget type="tabs" version="2.0.0"> + <name>Tabs</name> + <tabs> + <tab> + <name>Status</name> + <children> + <widget type="group" version="2.0.0"> + <name>group.status</name> + <x>10</x> + <y>10</y> + <height>300</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.border</name> + <width>300</width> + <height>300</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>260</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STATUS</name> + <text>STATUS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Heater_Power</name> + <text>Position</text> + <x>28</x> + <y>41</y> + <width>129</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>MET_ValvePos</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ValvePosition</pv_name> + <x>50</x> + <y>70</y> + <width>126</width> + <height>50</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="23.0"> + </font> + </font> + <background_color> + <color red="255" green="254" blue="253"> + </color> + </background_color> + <transparent>true</transparent> + <precision>2</precision> + <tooltip>Valve position in percent</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>MET_ValvePos_2</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ValveSP</pv_name> + <x>50</x> + <y>147</y> + <width>126</width> + <height>50</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="23.0"> + </font> + </font> + <background_color> + <color red="255" green="254" blue="253"> + </color> + </background_color> + <transparent>true</transparent> + <precision>2</precision> + <tooltip>Valve position in percent</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>MET_ValvePos_3</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ValveMV</pv_name> + <x>50</x> + <y>223</y> + <width>126</width> + <height>50</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="23.0"> + </font> + </font> + <background_color> + <color red="255" green="254" blue="253"> + </color> + </background_color> + <transparent>true</transparent> + <precision>2</precision> + <tooltip>Valve position in percent</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Heater_Power_1</name> + <text>SetPoint</text> + <x>28</x> + <y>111</y> + <width>129</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Heater_Power_2</name> + <text>Manipulated Value</text> + <x>28</x> + <y>191</y> + <width>129</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.op.modes</name> + <x>320</x> + <y>10</y> + <height>300</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.border</name> + <width>300</width> + <height>300</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>260</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OP_MODES</name> + <text>OP MODES</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Auto</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Auto</pv_name> + <x>75</x> + <y>50</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode Auto</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_AUTO</name> + <text>AUTO</text> + <x>110</x> + <y>50</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Manual</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Manual</pv_name> + <x>75</x> + <y>85</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode Manual</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_MANUAL</name> + <text>MANUAL</text> + <x>110</x> + <y>85</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Forced</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <x>75</x> + <y>120</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode Forced</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_FORCED</name> + <text>FORCED</text> + <x>106</x> + <y>120</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_MESSAGES</name> + <text>MESSAGES</text> + <x>5</x> + <y>160</y> + <width>290</width> + <height>25</height> + <font> + <font family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitMan</name> + <text>- Manual mode inhibited</text> + <x>15</x> + <y>190</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Manual</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitForce</name> + <text>- Force mode inhibited</text> + <x>15</x> + <y>210</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Force</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm_DIS</name> + <text>- Alarms latching disabled</text> + <x>15</x> + <y>230</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm_ENA</name> + <text>- Alarms latching enabled</text> + <x>15</x> + <y>230</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_RampingON</name> + <text>- Ramping enabled</text> + <x>15</x> + <y>250</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ramping</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_RampingON_1</name> + <text>- Ramping disabled</text> + <x>15</x> + <y>250</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ramping</pv_name> + </rule> + </rules> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.alarms</name> + <x>630</x> + <y>10</y> + <height>300</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.border</name> + <width>300</width> + <height>300</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>260</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_IO_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:IO_Error</pv_name> + <x>50</x> + <y>86</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_IO_Error</name> + <text>I/O Error</text> + <x>85</x> + <y>86</y> + <width>88</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Input_Module_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Input_Module_Error</pv_name> + <x>50</x> + <y>120</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Input_Module_Error</name> + <text>Input Module Error</text> + <x>85</x> + <y>120</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ILOCK_START</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:MoveInterlock</pv_name> + <x>50</x> + <y>245</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>Start interlock</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ILOCK_START</name> + <text>Move Interlock</text> + <x>85</x> + <y>245</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALARMS</name> + <text>ALARMS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackgroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Group alarm</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_INTERLOCKS</name> + <text>INTERLOCKS</text> + <x>5</x> + <y>195</y> + <width>290</width> + <height>25</height> + <font> + <font family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackgroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Group interlock</tooltip> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Discrepancy</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Position_Discrep</pv_name> + <x>50</x> + <y>50</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Discrepancy</name> + <text>Position discrepancy</text> + <x>85</x> + <y>50</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Output_Module_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Output_Module_Error</pv_name> + <x>50</x> + <y>155</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Output_Module_Error</name> + <text>Output Module Error</text> + <x>85</x> + <y>153</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.ramping</name> + <x>320</x> + <y>320</y> + <height>263</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.ramping.border</name> + <width>300</width> + <height>255</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.ramping.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>213</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Ramping</name> + <text>RAMPING STATUS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_RampTime_1</name> + <text>Actual Direction:</text> + <x>10</x> + <y>44</y> + <width>135</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>IND_Direction</name> + <text>DISABLED</text> + <x>155</x> + <y>44</y> + <width>135</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="Read_Background" red="230" green="235" blue="232"> + </color> + </background_color> + <transparent>false</transparent> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv2 == 0"> + <value>DISABLED</value> + </exp> + <exp bool_exp="pv0==1"> + <value>Opening</value> + </exp> + <exp bool_exp="pv1==1"> + <value>Closing</value> + </exp> + <exp bool_exp="(pv0 == 0)&&(pv1==0)"> + <value>NOT MOVING</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Opening</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Closing</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ramping</pv_name> + </rule> + </rules> + <tooltip>Ramping status</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Ract</name> + <text>Actual Speed:</text> + <x>10</x> + <y>84</y> + <width>135</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_ActRampUPSpeed</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ActRampSpeed</pv_name> + <x>154</x> + <y>84</y> + <width>136</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Actual Ramping Speed</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_RAMPON</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_RampON</pv_name> + <text>Ramping ON</text> + <x>16</x> + <y>205</y> + <width>130</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ramping</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>turn ramping ON</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_RAMPOFF</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_RampOFF</pv_name> + <text>Ramping OFF</text> + <x>157</x> + <y>204</y> + <width>130</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ramping</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>turn ramping OFF</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_RampingNoAllowed</name> + <text>- Ramping Parameters are Zero!</text> + <x>17</x> + <y>178</y> + <width>268</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:RampSettingOK</pv_name> + </rule> + </rules> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_MaxRampUPSpeed</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:MaxRampUPSpd</pv_name> + <x>153</x> + <y>118</y> + <width>137</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Maximum allowed Opening Ramp speed</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Rmax</name> + <text>Allowed Opening:</text> + <x>8</x> + <y>118</y> + <width>140</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_MaxRampDNSpeed</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:MaxRampDNSpd</pv_name> + <x>153</x> + <y>147</y> + <width>137</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Maximum allowed Opening Ramp speed</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Rmax_1</name> + <text>Allowed Closing:</text> + <x>8</x> + <y>147</y> + <width>140</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.settings</name> + <x>630</x> + <y>320</y> + <height>265</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.settings.border</name> + <width>300</width> + <height>256</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Settings</name> + <text>SETTINGS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.settings.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>214</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_RampTime</name> + <text>Time:</text> + <x>8</x> + <y>70</y> + <width>75</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_RampingTime</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_RampUPTIME</pv_name> + <x>68</x> + <y>70</y> + <width>115</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <tooltip>Tamping UP time</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <maximum>3600.0</maximum> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_RampingTime</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_RampUPTIME</pv_name> + <x>193</x> + <y>70</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>$(pv_name)$(pv_value)</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_RampRange</name> + <text>Range:</text> + <x>8</x> + <y>110</y> + <width>75</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_RampingRange</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_RampUPRANGE</pv_name> + <x>68</x> + <y>110</y> + <width>115</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <tooltip>Ramping UP range</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_RampingRange</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_RampUPRANGE</pv_name> + <x>193</x> + <y>110</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>$(pv_name)$(pv_value)</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_RampTime_2</name> + <text>Time:</text> + <x>8</x> + <y>174</y> + <width>75</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_RampingTime_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_RampDNTIME</pv_name> + <x>68</x> + <y>174</y> + <width>115</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + </rule> + </rules> + <tooltip>Ramping DOWN Time</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <maximum>3600.0</maximum> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_RampingTime_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_RampDNTIME</pv_name> + <x>193</x> + <y>174</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>$(pv_name)$(pv_value)</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_RampRange_1</name> + <text>Range:</text> + <x>8</x> + <y>214</y> + <width>75</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_RampingRange_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_RampDNRANGE</pv_name> + <x>68</x> + <y>214</y> + <width>115</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + </rule> + </rules> + <tooltip>Ramping DOWN Range</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_RampingRange_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_RampDNRANGE</pv_name> + <x>193</x> + <y>214</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>$(pv_name)$(pv_value)</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_RdySwitchOn_1</name> + <text>Ramp OPEN parameters</text> + <x>8</x> + <y>39</y> + <width>250</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_RdySwitchOn_2</name> + <text>Ramp CLOSE parameters</text> + <x>7</x> + <y>144</y> + <width>250</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>buttons.bar</name> + <x>10</x> + <y>590</y> + <width>920</width> + <height>80</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_AUTO</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Auto</pv_name> + <text>AUTO</text> + <x>15</x> + <y>631</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableAutoBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>AUTO operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_MANUAL</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Manual</pv_name> + <text>MANUAL</text> + <x>220</x> + <y>631</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableManualBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>MANUAL operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Force</pv_name> + <text>FORCE</text> + <x>425</x> + <y>631</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableForcedBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>FORCE operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_APPLY</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceValInp</pv_name> + <text>APPLY IN</text> + <x>425</x> + <y>595</y> + <width>99</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_APPLY_1</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceValOut</pv_name> + <text>APPLY OUT</text> + <x>526</x> + <y>595</y> + <width>99</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_ACK</name> + <actions> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_AckAlarm</pv_name> + <value>1</value> + <description>Acknowledge alarms</description> + </action> + </actions> + <text>Acknowledge Alarm</text> + <x>725</x> + <y>631</y> + <width>200</width> + <height>33</height> + <background_color> + <color name="ORANGE" red="254" green="194" blue="81"> + </color> + </background_color> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1) || (pv2 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0) && (pv2 == 1)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + <tooltip>Acknowledge alarms</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_UNLOCK</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceUnlock</pv_name> + <value>1</value> + <description>Write ForceUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <value>0</value> + <description>Write EnaForceUnlock</description> + </action> + </actions> + <text>FORCE UNLOCK</text> + <x>725</x> + <y>595</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 1)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 0)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force unlock device</tooltip> + </widget> + <widget type="group" version="2.0.0"> + <name>group.modify</name> + <x>10</x> + <y>320</y> + <height>263</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.modify.border</name> + <width>300</width> + <height>255</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.modify.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>100</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <rules> + <rule name="Color" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 1"> + <value> + <color name="RED-BACKGROUND" red="225" green="192" blue="188"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + </rule> + </rules> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_HeaterMV</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Manipulated</pv_name> + <x>215</x> + <y>90</y> + <width>70</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Output] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_ForceHeaterMV</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Manipulated</pv_name> + <x>120</x> + <y>90</y> + <width>85</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Force heater output</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_FrcMV</name> + <text>Force Output:</text> + <x>15</x> + <y>90</y> + <width>96</width> + <height>26</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY VALUE] to apply</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_HeaterPow</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_ForcePosition</pv_name> + <x>215</x> + <y>50</y> + <width>70</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Input] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_ForceHeaterPow</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_ForcePosition</pv_name> + <x>120</x> + <y>50</y> + <width>85</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Force heater power</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_FrcActPos</name> + <text>Force Input:</text> + <x>15</x> + <y>50</y> + <width>96</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Modify</name> + <text>MODIFY/FORCE</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Text" prop_id="text" out_exp="false"> + <exp bool_exp="(pv0 == 1)"> + <value>MODIFY/FORCE</value> + </exp> + <exp bool_exp="(pv1 == 1)"> + <value>MODIFY</value> + </exp> + <exp bool_exp="(pv2 == 1)"> + <value>FORCE</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Auto</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Manual</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + </rule> + </rules> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.modify.background_1</name> + <x>5</x> + <y>143</y> + <width>290</width> + <height>104</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_StepValue</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Step</pv_name> + <x>194</x> + <y>206</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback step value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_StepValue</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Step</pv_name> + <x>95</x> + <y>206</y> + <width>92</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0==0"> + <value>true</value> + </exp> + <exp bool_exp="pv0==1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Step value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <limits_from_pv>false</limits_from_pv> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_StepValue</name> + <text>Step Value:</text> + <x>6</x> + <y>203</y> + <width>101</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_Setpoint</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Setpoint</pv_name> + <x>194</x> + <y>153</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback modified setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_ForcePumpSP</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Setpoint</pv_name> + <x>76</x> + <y>153</y> + <width>111</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="IncrementRule" prop_id="increment" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Step</pv_name> + </rule> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0==0"> + <value>true</value> + </exp> + <exp bool_exp="pv0==1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Modify Setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <limits_from_pv>false</limits_from_pv> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_FrcSetpoint</name> + <text>Setpoint:</text> + <x>7</x> + <y>153</y> + <width>71</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="polyline" version="2.0.0"> + <name>Polyline</name> + <x>133</x> + <y>184</y> + <width>41</width> + <line_color> + <color name="WHITE" red="255" green="255" blue="255"> + </color> + </line_color> + <points> + <point x="0.0" y="20.0"> + </point> + <point x="0.0" y="10.0"> + </point> + <point x="40.32786885245899" y="10.0"> + </point> + <point x="40.32786885245899" y="0.0"> + </point> + </points> + </widget> + </widget> + <widget type="action_button" version="3.0.0"> + <name>PIDScreen_Button_1</name> + <actions> + <action type="open_display"> + <file>../PIDControls/PID_Control_Faceplate_embedded.bob</file> + <target>window</target> + <description>Open Display</description> + </action> + </actions> + <text>PID</text> + <x>15</x> + <y>595</y> + <width>200</width> + <height>33</height> + <tooltip></tooltip> + <confirm_message></confirm_message> + </widget> + </children> + </tab> + <tab> + <name>Trend</name> + <children> + <widget type="databrowser" version="2.0.0"> + <name>DataBrowser</name> + <file>CV_ControlVALVE_Sipart_Tend.plt</file> + <width>940</width> + <height>681</height> + </widget> + </children> + </tab> + </tabs> + <x>10</x> + <y>60</y> + <width>943</width> + <height>720</height> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Header Bar</name> + <width>963</width> + <height>50</height> + <line_width>0</line_width> + <line_color> + <color red="0" green="0" blue="255" alpha="0"> + </color> + </line_color> + <background_color> + <color name="PRIMARY-HEADER-BACKGROUND" red="151" green="188" blue="202"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HeaderPVName</name> + <text>${SecSub}:${Dis}-${Dev}-${Index}</text> + <x>20</x> + <width>715</width> + <height>50</height> + <font> + <font name="Header 1" family="Source Sans Pro" style="BOLD_ITALIC" size="36.0"> + </font> + </font> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Unlocked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>1</value> + <description>Write CMD_DevUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <value>0</value> + <description>Write CMD_DevLock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + </actions> + <text>UNLOCK</text> + <x>755</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false) || (pv1 == true) || (pv2 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true) && (pv1 == false) && (pv2 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Unlock this device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Locked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>0</value> + <description>Write CMD_DEVUNLOCK</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock(99)</pv_name> + <value>1</value> + <description>Run Lock script</description> + </action> + </actions> + <text>LOCK</text> + <x>850</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + </rule> + </rules> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: generate unique Machine ID from the network adapters to use it for locking mechanism*/ + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); + +var Lock = pvs[0];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock*/ +var Cmd_DevLock = pvs[1];/*${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock*/ +var P_Faceplate_LockID = pvs[2];/*${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID*/ +var Inhibit_Lock = pvs[3];/*${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock*/ +var Faceplate_LockID = pvs[4];/*${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID*/ +var BlockIcon_LockID = pvs[5];/*${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID*/ +var EnaForceUnlock = pvs[6];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock*/ +var DevLocked = pvs[7];/*${SecSub}:${Dis}-${Dev}-${Index}:DevLocked*/ + + + +var PV1 = PVUtil.getLong(Faceplate_LockID); /*Faceplate_LockID*/ +var PV2 = PVUtil.getLong(BlockIcon_LockID); /*BlockIcon_LockID*/ + +//OnShow +if (PVUtil.getLong(DevLocked) == 1) { /*DevLocked*/ + + if (PV1.toString() == PV2.toString()){ /*FaceplateLockID != BlockIconeLockID*/ + + logger.info(" Owner"); + EnaForceUnlock.setValue(0); /*Write EnaForceUnlock*/ + + } else + { + logger.info(" Faceplate FaceplateLockID "+ PV1); + logger.info(" Faceplate BlockIconeLockID "+ PV2); + + logger.info(" Guest"); + EnaForceUnlock.setValue(1); /*Write EnaForceUnlock*/ + } + + + +} +// OnClick +if (PVUtil.getLong(Lock) != 99) { /*loc://Lock, check if the script was triggered because of a button press or initilization*/ + if (PVUtil.getLong(Inhibit_Lock) == 0) { /*Inhibit_lock, check if locking is inhibited*/ + + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + UniqueText = UniqueText + intf.getName() + intf.getDisplayName(); + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + UniqueText = UniqueText + enumIpAddr.nextElement().toString(); + } + } + + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText); + if (crc >=2147483647){ crc = crc - 2147483647;} + + logger.info(" Faceplate machine ID: "+crc); + P_Faceplate_LockID.setValue(crc); /*Write P_Faceplate_LockID*/ + Cmd_DevLock.setValue(1); /*Write Lock*/ + + } /*Lock inhibit*/ +} /*onshow*/ + +]]></text> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID</pv_name> + <pv_name trigger="false">loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + </script> + </scripts> + <tooltip>Lock this device</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Sipart_BlockIcon_Horizontal.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Sipart_BlockIcon_Horizontal.bob new file mode 100644 index 0000000000000000000000000000000000000000..2bcec0cac53d897d98a7aa71968cdb10bd48ae28 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Sipart_BlockIcon_Horizontal.bob @@ -0,0 +1,351 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>CV_ControlValve_Sipart_Horizontal_BlockIcon</name> + <width>140</width> + <height>160</height> + <widget type="textupdate" version="2.0.0"> + <name>WID_Value_SP</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValveSP</pv_name> + <x>7</x> + <y>116</y> + <width>131</width> + <height>34</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="25.0"> + </font> + </font> + <transparent>true</transparent> + <precision>1</precision> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </border_color> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_Value_MV</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValvePosition</pv_name> + <x>7</x> + <y>89</y> + <width>133</width> + <height>33</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="25.0"> + </font> + </font> + <transparent>true</transparent> + <precision>1</precision> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Actual position</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </border_color> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIcon</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValveColor</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_OFF@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_OK@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_ERROR@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_NEUTRAL@64.png</symbol> + </symbols> + <x>38</x> + <y>29</y> + <width>64</width> + <height>64</height> + <actions execute_as_one="true"> + </actions> + <tooltip>Open faceplate</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text>A</text> + <x>17</x> + <y>31</y> + <width>25</width> + <height>25</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="20.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value> </value> + </exp> + <exp bool_exp="pv1 == true"> + <value>M</value> + </exp> + <exp bool_exp="pv2 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>10</x> + <width>120</width> + <height>33</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="25.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Device name</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>100</x> + <y>35</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Interlock</name> + <symbols> + <symbol>../../symbols/custom_v02/interlock_overridden_disabled_cms@32.png</symbol> + </symbols> + <x>100</x> + <y>74</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Interlock event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Moving</name> + <symbols> + <symbol>../../symbols/custom_v02/opening_neutral@32.png</symbol> + <symbol>../../symbols/custom_v02/closing_neutral@32.png</symbol> + </symbols> + <x>10</x> + <y>74</y> + <width>23</width> + <height>24</height> + <rules> + <rule name="Visibility" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Opening</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Closing</pv_name> + </rule> + <rule name="Picture" prop_id="initial_index" out_exp="false"> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>0</value> + </exp> + <exp bool_exp="(pv0 == 0) && (pv1 == 1)"> + <value>1</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Opening</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Closing</pv_name> + </rule> + </rules> + <tooltip>Pump is ramping</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); +WIDIndexPID = macros.getValue("WIDIndexPID"); +WIDSecSubPID = macros.getValue("WIDSecSubPID"); + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + try + { + P_BlockIcon_LockID.setValue(crc); + } + + catch (e) { logger.info(" Locked ID cannot write pv"); } + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + map["SecSubPID"] = WIDSecSubPID; + map["IndexPID"] = WIDIndexPID; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "CV_ControlVALVE_Sipart_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>140</width> + <height>160</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> + <widget type="textentry" version="3.0.0"> + <name>WID_BlkControl</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:P_Setpoint</pv_name> + <x>7</x> + <y>117</y> + <width>127</width> + <height>40</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="25.0"> + </font> + </font> + <format>1</format> + <precision>2</precision> + <rules> + <rule name="Visibility Rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:EnableBlkCtrl</pv_name> + </rule> + </rules> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Sipart_BlockIcon_Horizontal_Compact.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Sipart_BlockIcon_Horizontal_Compact.bob new file mode 100644 index 0000000000000000000000000000000000000000..24ded131e7ba048af83f93b6a64e9d04f3a0caf9 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Sipart_BlockIcon_Horizontal_Compact.bob @@ -0,0 +1,347 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>CV_ControlValve_Sipart_Horizontal_BlockIcon_compact</name> + <width>140</width> + <height>190</height> + <widget type="textupdate" version="2.0.0"> + <name>WID_Value_SP</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValveSP</pv_name> + <x>9</x> + <y>142</y> + <width>129</width> + <height>34</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="28.0"> + </font> + </font> + <transparent>true</transparent> + <precision>1</precision> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </border_color> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_Value_MV</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValvePosition</pv_name> + <x>7</x> + <y>115</y> + <width>133</width> + <height>33</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="28.0"> + </font> + </font> + <transparent>true</transparent> + <precision>1</precision> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Actual position</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </border_color> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIcon</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValveColor</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_OFF@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_OK@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_ERROR@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_NEUTRAL@64.png</symbol> + </symbols> + <x>38</x> + <y>58</y> + <width>64</width> + <height>64</height> + <actions execute_as_one="true"> + </actions> + <tooltip>Open faceplate</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text>A</text> + <x>55</x> + <y>26</y> + <width>30</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="29.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>A</value> + </exp> + <exp bool_exp="pv1 == true"> + <value>M</value> + </exp> + <exp bool_exp="pv2 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>10</x> + <width>120</width> + <height>33</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="28.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Device name</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>99</x> + <y>32</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Interlock</name> + <symbols> + <symbol>../../symbols/custom_v02/interlock_overridden_disabled_cms@32.png</symbol> + </symbols> + <x>7</x> + <y>34</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Interlock event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Moving</name> + <symbols> + <symbol>../../symbols/custom_v02/opening_neutral@32.png</symbol> + <symbol>../../symbols/custom_v02/closing_neutral@32.png</symbol> + </symbols> + <x>103</x> + <y>62</y> + <width>23</width> + <height>24</height> + <rules> + <rule name="Visibility" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Opening</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Closing</pv_name> + </rule> + <rule name="Picture" prop_id="initial_index" out_exp="false"> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>0</value> + </exp> + <exp bool_exp="(pv0 == 0) && (pv1 == 1)"> + <value>1</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Opening</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Closing</pv_name> + </rule> + </rules> + <tooltip>Pump is ramping</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); +WIDIndexPID = macros.getValue("WIDIndexPID"); +WIDSecSubPID = macros.getValue("WIDSecSubPID"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + map["IndexPID"] = WIDIndexPID; + map["SecSubPID"] = WIDSecSubPID; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "CV_ControlVALVE_Sipart_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>140</width> + <height>190</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> + <widget type="textentry" version="3.0.0"> + <name>WID_BlkControl</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:P_Setpoint</pv_name> + <x>9</x> + <y>142</y> + <width>125</width> + <height>40</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="28.0"> + </font> + </font> + <format>1</format> + <precision>2</precision> + <rules> + <rule name="Visibility Rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:EnableBlkCtrl</pv_name> + </rule> + </rules> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Sipart_BlockIcon_Vertical_Left.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Sipart_BlockIcon_Vertical_Left.bob new file mode 100644 index 0000000000000000000000000000000000000000..d23e2e2f1fc0d12162a7b822eb771feaa76b282b --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Sipart_BlockIcon_Vertical_Left.bob @@ -0,0 +1,422 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>CV_ControlVALVE_Sipart_BlockIcon_Vertical_Left</name> + <width>246</width> + <height>140</height> + <widget type="rectangle" version="2.0.0"> + <name>WID_Rect</name> + <width>245</width> + <height>140</height> + <line_width>1</line_width> + <line_color> + <color name="BLACK-BORDER" red="121" green="121" blue="121"> + </color> + </line_color> + <background_color> + <color red="255" green="255" blue="255" alpha="120"> + </color> + </background_color> + <corner_width>20</corner_width> + <corner_height>20</corner_height> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_LBL_MV</name> + <text>MV:</text> + <x>102</x> + <y>46</y> + <width>49</width> + <font> + <font family="Source Sans Pro" style="REGULAR" size="28.0"> + </font> + </font> + <horizontal_alignment>2</horizontal_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_LBL_SP</name> + <text>SP:</text> + <x>102</x> + <y>75</y> + <width>49</width> + <font> + <font family="Source Sans Pro" style="REGULAR" size="28.0"> + </font> + </font> + <horizontal_alignment>2</horizontal_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_Value_SP</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValveSP</pv_name> + <x>152</x> + <y>73</y> + <width>88</width> + <height>36</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="28.0"> + </font> + </font> + <transparent>true</transparent> + <precision>1</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </border_color> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_Value_MV</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValvePosition</pv_name> + <x>152</x> + <y>44</y> + <width>88</width> + <height>36</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="28.0"> + </font> + </font> + <transparent>true</transparent> + <precision>1</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Actual position</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </border_color> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIcon</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValveColor</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_CLOSED@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_ERROR@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_OFF@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_NEUTRAL@64.png</symbol> + </symbols> + <x>31</x> + <y>39</y> + <width>64</width> + <height>64</height> + <rotation>-90.0</rotation> + <actions execute_as_one="true"> + </actions> + <tooltip>Open faceplate</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text>A</text> + <x>5</x> + <y>51</y> + <width>30</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="29.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>A</value> + </exp> + <exp bool_exp="pv1 == true"> + <value>M</value> + </exp> + <exp bool_exp="pv2 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>117</x> + <y>4</y> + <width>122</width> + <height>34</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="28.0"> + </font> + </font> + <vertical_alignment>1</vertical_alignment> + <tooltip>Device name</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Locked</name> + <symbols> + <symbol>../../symbols/custom_v02/lock_locked@32.png</symbol> + </symbols> + <x>62</x> + <y>108</y> + <width>22</width> + <height>22</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:DevLocked</pv_name> + </rule> + </rules> + <tooltip>Device is locked</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>95</x> + <y>10</y> + <width>24</width> + <height>24</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Interlock</name> + <symbols> + <symbol>../../symbols/custom_v02/interlock_overridden_disabled_cms@32.png</symbol> + </symbols> + <x>26</x> + <y>10</y> + <width>24</width> + <height>24</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Interlock event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_IOErrorIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/WARNING@32.png</symbol> + </symbols> + <x>26</x> + <y>107</y> + <width>24</width> + <height>24</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Module_Error</pv_name> + </rule> + </rules> + <tooltip>Siemens IO card error!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_MaintenanceIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/Wrench_error @32.png</symbol> + </symbols> + <x>95</x> + <y>109</y> + <width>21</width> + <height>21</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false)&&(pv1==false)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true)||(pv1==true)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:IO_Error</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Module_Error</pv_name> + </rule> + </rules> + <tooltip>Maintenace Needed!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Moving</name> + <symbols> + <symbol>../../symbols/custom_v02/opening_neutral@32.png</symbol> + <symbol>../../symbols/custom_v02/closing_neutral@32.png</symbol> + </symbols> + <x>89</x> + <y>59</y> + <width>23</width> + <height>24</height> + <rules> + <rule name="Visibility" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Opening</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Closing</pv_name> + </rule> + <rule name="Picture" prop_id="initial_index" out_exp="false"> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>0</value> + </exp> + <exp bool_exp="(pv0 == 0) && (pv1 == 1)"> + <value>1</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Opening</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Closing</pv_name> + </rule> + </rules> + <tooltip>Pump is ramping</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "CV_ControlVALVE_Sipart_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>245</width> + <height>140</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Sipart_BlockIcon_Vertical_Left_Compact.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Sipart_BlockIcon_Vertical_Left_Compact.bob new file mode 100644 index 0000000000000000000000000000000000000000..c8528a0021e86045fa5cddeecf0b841e786afe58 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Sipart_BlockIcon_Vertical_Left_Compact.bob @@ -0,0 +1,315 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>CV_ControlVALVE_Sipart_BlockIcon_Vertical_Left_Compact</name> + <width>246</width> + <height>110</height> + <widget type="textupdate" version="2.0.0"> + <name>WID_Value_SP</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValveSP</pv_name> + <x>117</x> + <y>73</y> + <width>129</width> + <height>36</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="28.0"> + </font> + </font> + <precision>1</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_width>1</border_width> + <border_color> + <color name="GRAY-BORDER" red="121" green="121" blue="121"> + </color> + </border_color> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_Value_MV</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValvePosition</pv_name> + <x>117</x> + <y>44</y> + <width>129</width> + <height>36</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="28.0"> + </font> + </font> + <precision>1</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Actual position</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_width>1</border_width> + <border_color> + <color name="GRAY-BORDER" red="121" green="121" blue="121"> + </color> + </border_color> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIcon</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValveColor</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_CLOSED@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_ERROR@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_OFF@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_NEUTRAL@64.png</symbol> + </symbols> + <x>31</x> + <y>39</y> + <width>64</width> + <height>64</height> + <rotation>-90.0</rotation> + <actions execute_as_one="true"> + </actions> + <tooltip>Open faceplate</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text>A</text> + <x>5</x> + <y>51</y> + <width>30</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="29.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>A</value> + </exp> + <exp bool_exp="pv1 == true"> + <value>M</value> + </exp> + <exp bool_exp="pv2 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>117</x> + <y>4</y> + <width>122</width> + <height>34</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="28.0"> + </font> + </font> + <vertical_alignment>1</vertical_alignment> + <tooltip>Device name</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>91</x> + <y>10</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Interlock</name> + <symbols> + <symbol>../../symbols/custom_v02/interlock_overridden_disabled_cms@32.png</symbol> + </symbols> + <x>26</x> + <y>10</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Interlock event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Moving</name> + <symbols> + <symbol>../../symbols/custom_v02/opening_neutral@32.png</symbol> + <symbol>../../symbols/custom_v02/closing_neutral@32.png</symbol> + </symbols> + <x>89</x> + <y>59</y> + <width>23</width> + <height>24</height> + <rules> + <rule name="Visibility" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Opening</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Closing</pv_name> + </rule> + <rule name="Picture" prop_id="initial_index" out_exp="false"> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>0</value> + </exp> + <exp bool_exp="(pv0 == 0) && (pv1 == 1)"> + <value>1</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Opening</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Closing</pv_name> + </rule> + </rules> + <tooltip>Pump is ramping</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "CV_ControlVALVE_Sipart_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>245</width> + <height>110</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Sipart_BlockIcon_Vertical_Right.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Sipart_BlockIcon_Vertical_Right.bob new file mode 100644 index 0000000000000000000000000000000000000000..b2d930d36dd2e254583f2eb1613ee54bd495bffd --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Sipart_BlockIcon_Vertical_Right.bob @@ -0,0 +1,328 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>CV_ControlVALVE_Sipart_BlockIcon_Vertical_Right</name> + <width>215</width> + <height>100</height> + <widget type="textupdate" version="2.0.0"> + <name>WID_Value_SP</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValveSP</pv_name> + <x>7</x> + <y>66</y> + <width>115</width> + <height>34</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="25.0"> + </font> + </font> + <transparent>true</transparent> + <precision>2</precision> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </border_color> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>WID_Value_MV</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValvePosition</pv_name> + <x>7</x> + <y>39</y> + <width>115</width> + <height>34</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="25.0"> + </font> + </font> + <transparent>true</transparent> + <precision>2</precision> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Actual position</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <border_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </border_color> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIcon</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValveColor</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_OFF@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_OK@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_ERROR@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_NEUTRAL@64.png</symbol> + </symbols> + <x>127</x> + <y>32</y> + <width>64</width> + <height>64</height> + <rotation>90.0</rotation> + <actions execute_as_one="true"> + </actions> + <tooltip>Open faceplate</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text>A</text> + <x>188</x> + <y>48</y> + <width>25</width> + <height>25</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="20.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value> </value> + </exp> + <exp bool_exp="pv1 == true"> + <value>M</value> + </exp> + <exp bool_exp="pv2 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <y>9</y> + <width>122</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="25.0"> + </font> + </font> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Device name</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>164</x> + <y>3</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Interlock</name> + <symbols> + <symbol>../../symbols/custom_v02/interlock_overridden_disabled_cms@32.png</symbol> + </symbols> + <x>116</x> + <y>3</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Interlock event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Moving</name> + <symbols> + <symbol>../../symbols/custom_v02/opening_neutral@32.png</symbol> + <symbol>../../symbols/custom_v02/closing_neutral@32.png</symbol> + </symbols> + <x>189</x> + <y>72</y> + <width>23</width> + <height>24</height> + <rules> + <rule name="Visibility" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Opening</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Closing</pv_name> + </rule> + <rule name="Picture" prop_id="initial_index" out_exp="false"> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>0</value> + </exp> + <exp bool_exp="(pv0 == 0) && (pv1 == 1)"> + <value>1</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Opening</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Closing</pv_name> + </rule> + </rules> + <tooltip>Pump is ramping</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); +WIDIndexPID = macros.getValue("WIDIndexPID"); +WIDSecSubPID = macros.getValue("WIDSecSubPID"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + try + { + P_BlockIcon_LockID.setValue(crc); + } + + catch (e) { logger.info(" Locked ID cannot write pv"); } + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + map["SecSubPID"] = WIDSecSubPID; + map["IndexPID"] = WIDIndexPID; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "CV_ControlVALVE_Sipart_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>215</width> + <height>101</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Sipart_Faceplate.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Sipart_Faceplate.bob new file mode 100644 index 0000000000000000000000000000000000000000..c9a2af8cdab39d400c037569eb18e1034c6ff559 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Sipart_Faceplate.bob @@ -0,0 +1,2231 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>CV Sipart Control Valve Faceplate</name> + <width>965</width> + <height>790</height> + <widget type="tabs" version="2.0.0"> + <name>Tabs</name> + <tabs> + <tab> + <name>Status</name> + <children> + <widget type="group" version="2.0.0"> + <name>group.status</name> + <x>10</x> + <y>10</y> + <height>300</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.border</name> + <width>300</width> + <height>300</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>260</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STATUS</name> + <text>STATUS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>MET_ValvePos_3</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ValveMV</pv_name> + <x>60</x> + <y>223</y> + <width>126</width> + <height>50</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="23.0"> + </font> + </font> + <background_color> + <color red="255" green="254" blue="253"> + </color> + </background_color> + <transparent>true</transparent> + <precision>2</precision> + <tooltip>Valve position in percent</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Heater_Power_2</name> + <text>Manipulated Value</text> + <x>38</x> + <y>191</y> + <width>129</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>MET_ValvePos_4</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ValveSP</pv_name> + <x>60</x> + <y>147</y> + <width>126</width> + <height>50</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="23.0"> + </font> + </font> + <background_color> + <color red="255" green="254" blue="253"> + </color> + </background_color> + <transparent>true</transparent> + <precision>2</precision> + <tooltip>Valve position in percent</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Heater_Power_3</name> + <text>SetPoint</text> + <x>38</x> + <y>111</y> + <width>129</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>MET_ValvePos_5</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ValvePosition</pv_name> + <x>60</x> + <y>70</y> + <width>126</width> + <height>50</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="23.0"> + </font> + </font> + <background_color> + <color red="255" green="254" blue="253"> + </color> + </background_color> + <transparent>true</transparent> + <precision>2</precision> + <tooltip>Valve position in percent</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Heater_Power_4</name> + <text>Position</text> + <x>38</x> + <y>41</y> + <width>129</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.op.modes</name> + <x>320</x> + <y>10</y> + <height>300</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.border</name> + <width>300</width> + <height>300</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>260</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OP_MODES</name> + <text>OP MODES</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Auto</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Auto</pv_name> + <x>75</x> + <y>50</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode Auto</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_AUTO</name> + <text>AUTO</text> + <x>110</x> + <y>50</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Manual</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Manual</pv_name> + <x>75</x> + <y>85</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode Manual</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_MANUAL</name> + <text>MANUAL</text> + <x>110</x> + <y>85</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Forced</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <x>75</x> + <y>120</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode Forced</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_FORCED</name> + <text>FORCED</text> + <x>106</x> + <y>120</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_MESSAGES</name> + <text>MESSAGES</text> + <x>5</x> + <y>160</y> + <width>290</width> + <height>25</height> + <font> + <font family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitMan</name> + <text>- Manual mode inhibited</text> + <x>15</x> + <y>190</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Manual</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitForce</name> + <text>- Force mode inhibited</text> + <x>15</x> + <y>210</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Force</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm_DIS</name> + <text>- Alarms latching disabled</text> + <x>15</x> + <y>230</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm_ENA</name> + <text>- Alarms latching enabled</text> + <x>15</x> + <y>230</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_RampingON</name> + <text>- Ramping enabled</text> + <x>15</x> + <y>250</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ramping</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_RampingON_1</name> + <text>- Ramping disabled</text> + <x>15</x> + <y>250</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ramping</pv_name> + </rule> + </rules> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.alarms</name> + <x>630</x> + <y>10</y> + <height>300</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.border</name> + <width>300</width> + <height>300</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>260</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_IO_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:IO_Error</pv_name> + <x>50</x> + <y>86</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_IO_Error</name> + <text>I/O Error</text> + <x>85</x> + <y>86</y> + <width>88</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Input_Module_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Module_Error</pv_name> + <x>50</x> + <y>120</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Input_Module_Error</name> + <text>ProfiBus Module Error</text> + <x>85</x> + <y>120</y> + <width>183</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ILOCK_START</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:MoveInterlock</pv_name> + <x>50</x> + <y>245</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>Start interlock</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ILOCK_START</name> + <text>Move Interlock</text> + <x>85</x> + <y>245</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALARMS</name> + <text>ALARMS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackgroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Group alarm</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_INTERLOCKS</name> + <text>INTERLOCKS</text> + <x>5</x> + <y>195</y> + <width>290</width> + <height>25</height> + <font> + <font family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackgroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Group interlock</tooltip> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Discrepancy</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Position_Discrep</pv_name> + <x>50</x> + <y>50</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Discrepancy</name> + <text>Position discrepancy</text> + <x>85</x> + <y>50</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.ramping</name> + <x>320</x> + <y>320</y> + <height>263</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.ramping.border</name> + <width>300</width> + <height>255</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.ramping.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>213</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Ramping</name> + <text>RAMPING STATUS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_RampTime_1</name> + <text>Actual Direction:</text> + <x>10</x> + <y>44</y> + <width>135</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>IND_Direction</name> + <text>DISABLED</text> + <x>155</x> + <y>44</y> + <width>135</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="Read_Background" red="230" green="235" blue="232"> + </color> + </background_color> + <transparent>false</transparent> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv2 == 0"> + <value>DISABLED</value> + </exp> + <exp bool_exp="pv0==1"> + <value>Opening</value> + </exp> + <exp bool_exp="pv1==1"> + <value>Closing</value> + </exp> + <exp bool_exp="(pv0 == 0)&&(pv1==0)"> + <value>NOT MOVING</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Opening</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Closing</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ramping</pv_name> + </rule> + </rules> + <tooltip>Ramping status</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Ract</name> + <text>Actual Speed:</text> + <x>10</x> + <y>84</y> + <width>135</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_ActRampUPSpeed</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ActRampSpeed</pv_name> + <x>154</x> + <y>84</y> + <width>136</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Actual Ramping Speed</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_RAMPON</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_RampON</pv_name> + <text>Ramping ON</text> + <x>16</x> + <y>205</y> + <width>130</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ramping</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>turn ramping ON</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_RAMPOFF</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_RampOFF</pv_name> + <text>Ramping OFF</text> + <x>157</x> + <y>204</y> + <width>130</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Ramping</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>turn ramping OFF</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_RampingNoAllowed</name> + <text>- Ramping Parameters are Zero!</text> + <x>17</x> + <y>178</y> + <width>268</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:RampSettingOK</pv_name> + </rule> + </rules> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_MaxRampUPSpeed</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:MaxRampUPSpd</pv_name> + <x>153</x> + <y>118</y> + <width>137</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Maximum allowed Opening Ramp speed</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Rmax</name> + <text>Allowed Opening:</text> + <x>8</x> + <y>118</y> + <width>140</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_MaxRampDNSpeed</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:MaxRampDNSpd</pv_name> + <x>153</x> + <y>147</y> + <width>137</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Maximum allowed Opening Ramp speed</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Rmax_1</name> + <text>Allowed Closing:</text> + <x>8</x> + <y>147</y> + <width>140</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.settings</name> + <x>630</x> + <y>320</y> + <height>265</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.settings.border</name> + <width>300</width> + <height>256</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Settings</name> + <text>SETTINGS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.settings.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>214</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_RampTime</name> + <text>Time:</text> + <x>8</x> + <y>70</y> + <width>75</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_RampingTime</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_RampUPTIME</pv_name> + <x>68</x> + <y>70</y> + <width>115</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <tooltip>Tamping UP time</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <maximum>3600.0</maximum> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_RampingTime</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_RampUPTIME</pv_name> + <x>193</x> + <y>70</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>$(pv_name)$(pv_value)</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_RampRange</name> + <text>Range:</text> + <x>8</x> + <y>110</y> + <width>75</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_RampingRange</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_RampUPRANGE</pv_name> + <x>68</x> + <y>110</y> + <width>115</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <tooltip>Ramping UP range</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_RampingRange</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_RampUPRANGE</pv_name> + <x>193</x> + <y>110</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <show_units>false</show_units> + <vertical_alignment>1</vertical_alignment> + <tooltip>$(pv_name)$(pv_value)</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_RampTime_2</name> + <text>Time:</text> + <x>8</x> + <y>174</y> + <width>75</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_RampingTime_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_RampDNTIME</pv_name> + <x>68</x> + <y>174</y> + <width>115</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + </rule> + </rules> + <tooltip>Ramping DOWN Time</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <maximum>3600.0</maximum> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_RampingTime_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_RampDNTIME</pv_name> + <x>193</x> + <y>174</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>$(pv_name)$(pv_value)</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_RampRange_1</name> + <text>Range:</text> + <x>8</x> + <y>214</y> + <width>75</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_RampingRange_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_RampDNRANGE</pv_name> + <x>68</x> + <y>214</y> + <width>115</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enable" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + </rule> + </rules> + <tooltip>Ramping DOWN Range</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_RampingRange_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_RampDNRANGE</pv_name> + <x>193</x> + <y>214</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <show_units>false</show_units> + <vertical_alignment>1</vertical_alignment> + <tooltip>$(pv_name)$(pv_value)</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_RdySwitchOn_1</name> + <text>Ramp OPEN parameters</text> + <x>8</x> + <y>39</y> + <width>250</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STS_RdySwitchOn_2</name> + <text>Ramp CLOSE parameters</text> + <x>7</x> + <y>144</y> + <width>250</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>buttons.bar</name> + <x>10</x> + <y>590</y> + <width>920</width> + <height>80</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_AUTO</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Auto</pv_name> + <text>AUTO</text> + <x>15</x> + <y>631</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableAutoBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>AUTO operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_MANUAL</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Manual</pv_name> + <text>MANUAL</text> + <x>220</x> + <y>631</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableManualBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>MANUAL operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Force</pv_name> + <text>FORCE</text> + <x>425</x> + <y>631</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableForcedBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>FORCE operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_APPLY</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceValInp</pv_name> + <text>APPLY IN</text> + <x>425</x> + <y>595</y> + <width>99</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_APPLY_1</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceValOut</pv_name> + <text>APPLY OUT</text> + <x>526</x> + <y>595</y> + <width>99</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Apply force value</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_ACK</name> + <actions> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_AckAlarm</pv_name> + <value>1</value> + <description>Acknowledge alarms</description> + </action> + </actions> + <text>Acknowledge Alarm</text> + <x>725</x> + <y>631</y> + <width>200</width> + <height>33</height> + <background_color> + <color name="ORANGE" red="254" green="194" blue="81"> + </color> + </background_color> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1) || (pv2 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0) && (pv2 == 1)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + <tooltip>Acknowledge alarms</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_UNLOCK</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceUnlock</pv_name> + <value>1</value> + <description>Write ForceUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <value>0</value> + <description>Write EnaForceUnlock</description> + </action> + </actions> + <text>FORCE UNLOCK</text> + <x>725</x> + <y>595</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 1)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 0)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force unlock device</tooltip> + </widget> + <widget type="group" version="2.0.0"> + <name>group.modify</name> + <x>10</x> + <y>320</y> + <height>263</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.modify.border</name> + <width>300</width> + <height>255</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.modify.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>100</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <rules> + <rule name="Color" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 1"> + <value> + <color name="RED-BACKGROUND" red="225" green="192" blue="188"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + </rule> + </rules> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_HeaterMV</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Manipulated</pv_name> + <x>215</x> + <y>90</y> + <width>70</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Output] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_ForceHeaterMV</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Manipulated</pv_name> + <x>120</x> + <y>90</y> + <width>85</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Force heater output</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_FrcMV</name> + <text>Force Output:</text> + <x>15</x> + <y>90</y> + <width>96</width> + <height>26</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY VALUE] to apply</tooltip> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_HeaterPow</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_ForcePosition</pv_name> + <x>215</x> + <y>50</y> + <width>70</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Click [APPLY Input] to apply</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_ForceHeaterPow</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_ForcePosition</pv_name> + <x>120</x> + <y>50</y> + <width>85</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="Enabled Rule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Force heater power</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_FrcActPos</name> + <text>Force Input:</text> + <x>15</x> + <y>50</y> + <width>96</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Modify</name> + <text>MODIFY/FORCE</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Text" prop_id="text" out_exp="false"> + <exp bool_exp="(pv0 == 1)"> + <value>MODIFY/FORCE</value> + </exp> + <exp bool_exp="(pv1 == 1)"> + <value>MODIFY</value> + </exp> + <exp bool_exp="(pv2 == 1)"> + <value>FORCE</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Auto</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Manual</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + </rule> + </rules> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.modify.background_1</name> + <x>5</x> + <y>143</y> + <width>290</width> + <height>104</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_StepValue</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Step</pv_name> + <x>194</x> + <y>206</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback step value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_StepValue</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Step</pv_name> + <x>95</x> + <y>206</y> + <width>92</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0==0"> + <value>true</value> + </exp> + <exp bool_exp="pv0==1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Step value</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <limits_from_pv>false</limits_from_pv> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_StepValue</name> + <text>Step Value:</text> + <x>6</x> + <y>203</y> + <width>101</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TU_FB_Setpoint</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Setpoint</pv_name> + <x>194</x> + <y>153</y> + <width>95</width> + <height>30</height> + <precision>2</precision> + <vertical_alignment>1</vertical_alignment> + <tooltip>Feedback modified setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="spinner" version="2.0.0"> + <name>INP_ForcePumpSP</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Setpoint</pv_name> + <x>76</x> + <y>153</y> + <width>111</width> + <height>30</height> + <format>0</format> + <precision>2</precision> + <rules> + <rule name="IncrementRule" prop_id="increment" out_exp="true"> + <exp bool_exp="true"> + <expression>pv0</expression> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:FB_Step</pv_name> + </rule> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="pv0==0"> + <value>true</value> + </exp> + <exp bool_exp="pv0==1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Modify Setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + <limits_from_pv>false</limits_from_pv> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_FrcSetpoint</name> + <text>Setpoint:</text> + <x>7</x> + <y>153</y> + <width>71</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="polyline" version="2.0.0"> + <name>Polyline</name> + <x>133</x> + <y>184</y> + <width>41</width> + <line_color> + <color name="WHITE" red="255" green="255" blue="255"> + </color> + </line_color> + <points> + <point x="0.0" y="20.0"> + </point> + <point x="0.0" y="10.0"> + </point> + <point x="40.32786885245899" y="10.0"> + </point> + <point x="40.32786885245899" y="0.0"> + </point> + </points> + </widget> + </widget> + <widget type="action_button" version="3.0.0"> + <name>PIDScreen_Button_1</name> + <actions> + <action type="open_display"> + <file>../PIDControls/PID_Control_Faceplate_embedded.bob</file> + <target>window</target> + <description>Open Display</description> + </action> + </actions> + <text>PID</text> + <x>15</x> + <y>595</y> + <width>200</width> + <height>33</height> + <tooltip></tooltip> + <confirm_message></confirm_message> + </widget> + </children> + </tab> + <tab> + <name>Trend</name> + <children> + <widget type="databrowser" version="2.0.0"> + <name>DataBrowser</name> + <file>CV_ControlVALVE_Sipart_Tend.plt</file> + <width>940</width> + <height>680</height> + </widget> + </children> + </tab> + <tab> + <name>Sipart Diagnostics</name> + <children> + <widget type="group" version="2.0.0"> + <name>group.sipart.diag</name> + <x>18</x> + <y>21</y> + <width>900</width> + <height>340</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.diagnostics</name> + <width>895</width> + <height>334</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.background_1</name> + <x>5</x> + <y>35</y> + <width>885</width> + <height>293</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OP_MODES_1</name> + <text>OP MODES</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_FORCED_1</name> + <text>Discrete Position</text> + <x>24</x> + <y>80</y> + <width>150</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <horizontal_alignment>2</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="text-symbol" version="2.0.0"> + <name>Text Symbol</name> + <symbols> + <symbol>Status message 1</symbol> + </symbols> + <x>188</x> + <y>68</y> + <width>380</width> + <height>50</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="21.0"> + </font> + </font> + <horizontal_alignment>0</horizontal_alignment> + </widget> + </widget> + </children> + </tab> + </tabs> + <x>10</x> + <y>60</y> + <width>943</width> + <height>720</height> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Header Bar</name> + <width>963</width> + <height>50</height> + <line_width>0</line_width> + <line_color> + <color red="0" green="0" blue="255" alpha="0"> + </color> + </line_color> + <background_color> + <color name="PRIMARY-HEADER-BACKGROUND" red="151" green="188" blue="202"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HeaderPVName</name> + <text>${SecSub}:${Dis}-${Dev}-${Index}</text> + <x>20</x> + <width>715</width> + <height>50</height> + <font> + <font name="Header 1" family="Source Sans Pro" style="BOLD_ITALIC" size="36.0"> + </font> + </font> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Unlocked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>1</value> + <description>Write CMD_DevUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <value>0</value> + <description>Write CMD_DevLock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + </actions> + <text>UNLOCK</text> + <x>755</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false) || (pv1 == true) || (pv2 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true) && (pv1 == false) && (pv2 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Unlock this device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Locked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>0</value> + <description>Write CMD_DEVUNLOCK</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock(99)</pv_name> + <value>1</value> + <description>Run Lock script</description> + </action> + </actions> + <text>LOCK</text> + <x>850</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + </rule> + </rules> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: generate unique Machine ID from the network adapters to use it for locking mechanism*/ + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); + +var Lock = pvs[0];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock*/ +var Cmd_DevLock = pvs[1];/*${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock*/ +var P_Faceplate_LockID = pvs[2];/*${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID*/ +var Inhibit_Lock = pvs[3];/*${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock*/ +var Faceplate_LockID = pvs[4];/*${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID*/ +var BlockIcon_LockID = pvs[5];/*${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID*/ +var EnaForceUnlock = pvs[6];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock*/ +var DevLocked = pvs[7];/*${SecSub}:${Dis}-${Dev}-${Index}:DevLocked*/ + + + +var PV1 = PVUtil.getLong(Faceplate_LockID); /*Faceplate_LockID*/ +var PV2 = PVUtil.getLong(BlockIcon_LockID); /*BlockIcon_LockID*/ + +//OnShow +if (PVUtil.getLong(DevLocked) == 1) { /*DevLocked*/ + + if (PV1.toString() == PV2.toString()){ /*FaceplateLockID != BlockIconeLockID*/ + + logger.info(" Owner"); + EnaForceUnlock.setValue(0); /*Write EnaForceUnlock*/ + + } else + { + logger.info(" Faceplate FaceplateLockID "+ PV1); + logger.info(" Faceplate BlockIconeLockID "+ PV2); + + logger.info(" Guest"); + EnaForceUnlock.setValue(1); /*Write EnaForceUnlock*/ + } + + + +} +// OnClick +if (PVUtil.getLong(Lock) != 99) { /*loc://Lock, check if the script was triggered because of a button press or initilization*/ + if (PVUtil.getLong(Inhibit_Lock) == 0) { /*Inhibit_lock, check if locking is inhibited*/ + + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + UniqueText = UniqueText + intf.getName() + intf.getDisplayName(); + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + UniqueText = UniqueText + enumIpAddr.nextElement().toString(); + } + } + + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText); + if (crc >=2147483647){ crc = crc - 2147483647;} + + logger.info(" Faceplate machine ID: "+crc); + P_Faceplate_LockID.setValue(crc); /*Write P_Faceplate_LockID*/ + Cmd_DevLock.setValue(1); /*Write Lock*/ + + } /*Lock inhibit*/ +} /*onshow*/ + +]]></text> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID</pv_name> + <pv_name trigger="false">loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + </script> + </scripts> + <tooltip>Lock this device</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Sipart_Tend.plt b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Sipart_Tend.plt new file mode 100644 index 0000000000000000000000000000000000000000..3bbd7f76a047704819dbe98148268b0e28415db1 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Sipart_Tend.plt @@ -0,0 +1,160 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<databrowser> + <title></title> + <save_changes>true</save_changes> + <show_legend>false</show_legend> + <show_toolbar>true</show_toolbar> + <grid>false</grid> + <scroll>true</scroll> + <update_period>3.0</update_period> + <scroll_step>5</scroll_step> + <start>-10 minutes 0.0 seconds</start> + <end>now</end> + <archive_rescale>NONE</archive_rescale> + <foreground> + <red>229</red> + <green>229</green> + <blue>229</blue> + </foreground> + <background> + <red>77</red> + <green>77</green> + <blue>77</blue> + </background> + <title_font>Cantarell|16|1</title_font> + <label_font>Cantarell|11|1</label_font> + <scale_font>Cantarell|10|0</scale_font> + <legend_font>Cantarell|10|0</legend_font> + <axes> + <axis> + <visible>true</visible> + <name>Value Axis</name> + <use_axis_name>true</use_axis_name> + <use_trace_names>true</use_trace_names> + <right>false</right> + <color> + <red>255</red> + <green>165</green> + <blue>0</blue> + </color> + <min>0.0</min> + <max>25.0</max> + <grid>true</grid> + <autoscale>true</autoscale> + <log_scale>false</log_scale> + </axis> + <axis> + <visible>true</visible> + <name>Value 1</name> + <use_axis_name>false</use_axis_name> + <use_trace_names>true</use_trace_names> + <right>false</right> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <min>0.0</min> + <max>10.0</max> + <grid>false</grid> + <autoscale>true</autoscale> + <log_scale>false</log_scale> + </axis> + <axis> + <visible>true</visible> + <name>Value 2</name> + <use_axis_name>false</use_axis_name> + <use_trace_names>true</use_trace_names> + <right>false</right> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <min>0.0</min> + <max>10.0</max> + <grid>false</grid> + <autoscale>true</autoscale> + <log_scale>false</log_scale> + </axis> + </axes> + <annotations> + </annotations> + <pvlist> + <pv> + <display_name>${SecSub}:${Dis}-${Dev}-${Index}:ValvePosition</display_name> + <visible>true</visible> + <name>${SecSub}:${Dis}-${Dev}-${Index}:MeasValue</name> + <axis>0</axis> + <color> + <red>255</red> + <green>0</green> + <blue>0</blue> + </color> + <trace_type>AREA</trace_type> + <linewidth>3</linewidth> + <line_style>SOLID</line_style> + <point_type>NONE</point_type> + <point_size>2</point_size> + <waveform_index>0</waveform_index> + <period>0.0</period> + <ring_size>5000</ring_size> + <request>RAW</request> + <archive> + <name>ESS Archiver</name> + <url>pbraw://archiver-01.tn.esss.lu.se:17668/retrieval</url> + <key>1</key> + </archive> + </pv> + <pv> + <display_name>${SecSub}:${Dis}-${Dev}-${Index}:ValveSP</display_name> + <visible>true</visible> + <name>${SecSub}:${Dis}-${Dev}-${Index}:ValveSP</name> + <axis>1</axis> + <color> + <red>0</red> + <green>255</green> + <blue>0</blue> + </color> + <trace_type>AREA</trace_type> + <linewidth>2</linewidth> + <line_style>SOLID</line_style> + <point_type>NONE</point_type> + <point_size>2</point_size> + <waveform_index>0</waveform_index> + <period>0.0</period> + <ring_size>5000</ring_size> + <request>RAW</request> + <archive> + <name>ESS Archiver</name> + <url>pbraw://archiver-01.tn.esss.lu.se:17668/retrieval</url> + <key>1</key> + </archive> + </pv> + <pv> + <display_name>${SecSub}:${Dis}-${Dev}-${Index}:ValveMV</display_name> + <visible>true</visible> + <name>${SecSub}:${Dis}-${Dev}-${Index}:ValveMV</name> + <axis>2</axis> + <color> + <red>0</red> + <green>0</green> + <blue>255</blue> + </color> + <trace_type>AREA</trace_type> + <linewidth>2</linewidth> + <line_style>SOLID</line_style> + <point_type>NONE</point_type> + <point_size>2</point_size> + <waveform_index>0</waveform_index> + <period>0.0</period> + <ring_size>5000</ring_size> + <request>RAW</request> + <archive> + <name>ESS Archiver</name> + <url>pbraw://archiver-01.tn.esss.lu.se:17668/retrieval</url> + <key>1</key> + </archive> + </pv> + </pvlist> +</databrowser> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/HV_VALVE_BlockIcon_Horizontal.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/HV_VALVE_BlockIcon_Horizontal.bob new file mode 100644 index 0000000000000000000000000000000000000000..39905ed16c8bf7aba447b98eb0aa75025c0ae285 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/HV_VALVE_BlockIcon_Horizontal.bob @@ -0,0 +1,126 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>HV_VALVE_BlockIcon_Horizontal</name> + <width>140</width> + <height>133</height> + <widget type="rectangle" version="2.0.0"> + <name>WID_Rect</name> + <width>140</width> + <height>133</height> + <line_width>1</line_width> + <line_color> + <color name="BLACK-BORDER" red="121" green="121" blue="121"> + </color> + </line_color> + <background_color> + <color red="255" green="255" blue="255" alpha="120"> + </color> + </background_color> + <corner_width>20</corner_width> + <corner_height>20</corner_height> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIcon</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValveColor</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/valve_hand/valve_hand_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom_v02/valve_hand/valve_hand_COSED@64.png</symbol> + <symbol>../../symbols/custom_v02/valve_hand/valve_hand_OK@64.png</symbol> + </symbols> + <x>38</x> + <y>41</y> + <width>64</width> + <height>64</height> + <actions execute_as_one="true"> + </actions> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>7</x> + <y>4</y> + <width>127</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="28.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Device name</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_IOErrorIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/WARNING@32.png</symbol> + </symbols> + <x>10</x> + <y>100</y> + <width>24</width> + <height>24</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:IO_Error</pv_name> + </rule> + </rules> + <tooltip>Siemens IO card error!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_MaintenanceIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/Wrench_error @32.png</symbol> + </symbols> + <x>104</x> + <y>102</y> + <width>21</width> + <height>21</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false)&&(pv1==false)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true)||(pv1==true)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:IO_Error</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Input_Module_Error</pv_name> + </rule> + </rules> + <tooltip>Maintenace Needed!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>103</x> + <y>35</y> + <width>24</width> + <height>24</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/HV_VALVE_BlockIcon_Horizontal_Compact.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/HV_VALVE_BlockIcon_Horizontal_Compact.bob new file mode 100644 index 0000000000000000000000000000000000000000..16ab83350ed9ed35127a69e17aa7f4aaa62c6ffa --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/HV_VALVE_BlockIcon_Horizontal_Compact.bob @@ -0,0 +1,185 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>HV_VALVE_BlockIcon_Horizontal_Compact</name> + <width>140</width> + <height>110</height> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIcon</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValveColor</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/valve_hand/valve_hand_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom_v02/valve_hand/valve_hand_NEUTRAL@64.png</symbol> + <symbol>../../symbols/custom_v02/valve_hand/valve_hand_OK@64.png</symbol> + </symbols> + <x>38</x> + <y>41</y> + <width>64</width> + <height>64</height> + <actions execute_as_one="true"> + </actions> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>7</x> + <y>4</y> + <width>127</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="28.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Device name</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>103</x> + <y>35</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "HV_VALVE_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>140</width> + <height>107</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/HV_VALVE_BlockIcon_Vertical_Left.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/HV_VALVE_BlockIcon_Vertical_Left.bob new file mode 100644 index 0000000000000000000000000000000000000000..ddca7063baaf1e4f28d855377ee0db545e6bdaec --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/HV_VALVE_BlockIcon_Vertical_Left.bob @@ -0,0 +1,185 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>HV_VALVE_BlockIcon_Vertical_Left</name> + <width>170</width> + <height>85</height> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIcon</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValveColor</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/valve_hand/valve_hand_OFF@64.png</symbol> + <symbol>../../symbols/custom_v02/valve_hand/valve_hand_OK@64.png</symbol> + <symbol>../../symbols/custom_v02/valve_hand/valve_hand_ERROR@64.png</symbol> + <symbol>../../symbols/custom_v02/valve_hand/valve_hand_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom_v02/valve_hand/valve_hand_NEUTRAL@64.png</symbol> + </symbols> + <y>16</y> + <width>64</width> + <height>64</height> + <rotation>-90.0</rotation> + <actions execute_as_one="true"> + </actions> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>55</x> + <y>3</y> + <width>98</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="20.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Device name</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "HV_VALVE_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>169</width> + <height>85</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/HV_VALVE_BlockIcon_Vertical_Right.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/HV_VALVE_BlockIcon_Vertical_Right.bob new file mode 100644 index 0000000000000000000000000000000000000000..9f3250d86947551fe1e64dd70af0811a196b8290 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/HV_VALVE_BlockIcon_Vertical_Right.bob @@ -0,0 +1,123 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>HV_VALVE_BlockIcon_Vertical_Right</name> + <width>235</width> + <height>106</height> + <widget type="rectangle" version="2.0.0"> + <name>WID_Rect</name> + <width>235</width> + <height>106</height> + <line_width>0</line_width> + <background_color> + <color red="0" green="0" blue="0" alpha="18"> + </color> + </background_color> + <corner_width>20</corner_width> + <corner_height>20</corner_height> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIcon</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValveColor</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/valve_hand/valve_hand_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom_v02/valve_hand/valve_hand_COSED@64.png</symbol> + <symbol>../../symbols/custom_v02/valve_hand/valve_hand_OK@64.png</symbol> + </symbols> + <x>146</x> + <y>16</y> + <width>64</width> + <height>64</height> + <rotation>90.0</rotation> + <actions execute_as_one="true"> + </actions> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>15</x> + <y>3</y> + <width>98</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="18.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Device name</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_IOErrorIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/WARNING@32.png</symbol> + </symbols> + <x>110</x> + <y>72</y> + <width>24</width> + <height>24</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:IO_Error</pv_name> + </rule> + </rules> + <tooltip>Siemens IO card error!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_MaintenanceIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/Wrench_error @32.png</symbol> + </symbols> + <x>202</x> + <y>74</y> + <width>21</width> + <height>21</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false)&&(pv1==false)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true)||(pv1==true)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:IO_Error</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Input_Module_Error</pv_name> + </rule> + </rules> + <tooltip>Maintenace Needed!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>201</x> + <y>9</y> + <width>24</width> + <height>24</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/HV_VALVE_Faceplate.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/HV_VALVE_Faceplate.bob new file mode 100644 index 0000000000000000000000000000000000000000..1f2e40037d03d501ad03f797e12eded0e8f324cf --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/HV_VALVE_Faceplate.bob @@ -0,0 +1,728 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>HV_VALVE_Faceplate</name> + <width>650</width> + <height>530</height> + <widget type="tabs" version="2.0.0"> + <name>Tabs</name> + <tabs> + <tab> + <name>Status</name> + <children> + <widget type="group" version="2.0.0"> + <name>group.status</name> + <x>10</x> + <y>10</y> + <height>341</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.status.border</name> + <width>300</width> + <height>331</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.status.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>289</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Status</name> + <text>STATUS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Status_Position</name> + <text>Valve Position</text> + <x>15</x> + <y>50</y> + <width>270</width> + <height>25</height> + <font> + <font name="Default Bold" family="Source Sans Pro" style="BOLD" size="16.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <transparent>false</transparent> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Opened</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Opened</pv_name> + <x>100</x> + <y>85</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Valve position</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Opened</name> + <text>OPENED</text> + <x>135</x> + <y>85</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Closed</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Closed</pv_name> + <x>100</x> + <y>120</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Valve position</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Closed</name> + <text>CLOSED</text> + <x>135</x> + <y>120</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Operation_Mode</name> + <text>Operation Mode</text> + <x>18</x> + <y>161</y> + <width>270</width> + <height>25</height> + <font> + <font name="Default Bold" family="Source Sans Pro" style="BOLD" size="16.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <transparent>false</transparent> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Forced</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <x>98</x> + <y>201</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_FORCED</name> + <text>FORCED</text> + <x>133</x> + <y>201</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm_ENA</name> + <text>- Alarms latching enabled</text> + <x>18</x> + <y>293</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitForce</name> + <text>- Force mode inhibited</text> + <x>18</x> + <y>276</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Force</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_MESSAGES</name> + <text>MESSAGES</text> + <x>8</x> + <y>241</y> + <width>290</width> + <font> + <font family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm_DIS</name> + <text>- Alarms latching disabled</text> + <x>18</x> + <y>293</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.alarms</name> + <x>318</x> + <y>11</y> + <height>341</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.border</name> + <width>300</width> + <height>330</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>288</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALARMS</name> + <text>ALARMS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackgroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Group alarm</tooltip> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_IO_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:IO_Error</pv_name> + <x>28</x> + <y>51</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_IO_Error</name> + <text>I/O Error</text> + <x>63</x> + <y>51</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>buttons.bar</name> + <x>8</x> + <y>361</y> + <width>610</width> + <height>46</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Force</pv_name> + <text>FORCE</text> + <x>14</x> + <y>367</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableForcedBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>FORCE operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_ACK</name> + <actions> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_AckAlarm</pv_name> + <value>1</value> + <description>Acknowledge alarms</description> + </action> + </actions> + <text>Acknowledge Alarm</text> + <x>422</x> + <y>367</y> + <width>190</width> + <height>33</height> + <background_color> + <color name="ORANGE" red="254" green="194" blue="81"> + </color> + </background_color> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1) || (pv2 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0) && (pv2 == 1)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + <tooltip>Acknowledge alarms</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_UNLOCK</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceUnlock</pv_name> + <value>1</value> + <description>Write ForceUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <value>0</value> + <description>Write EnaForceUnlock</description> + </action> + </actions> + <text>FORCE UNLOCK</text> + <x>218</x> + <y>367</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 1)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 0)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force unlock device</tooltip> + </widget> + </children> + </tab> + <tab> + <name>Trend</name> + <children> + <widget type="databrowser" version="2.0.0"> + <name>DataBrowser</name> + <file>HV_VALVE_Faceplate_Trend.plt</file> + <width>628</width> + <height>421</height> + </widget> + </children> + </tab> + </tabs> + <x>10</x> + <y>60</y> + <width>630</width> + <height>460</height> + <active_tab>1</active_tab> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Header Bar</name> + <width>640</width> + <height>50</height> + <line_width>0</line_width> + <line_color> + <color red="0" green="0" blue="255" alpha="0"> + </color> + </line_color> + <background_color> + <color name="PRIMARY-HEADER-BACKGROUND" red="151" green="188" blue="202"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HeaderPVName</name> + <text>${SecSub}:${Dis}-${Dev}-${Index}</text> + <x>20</x> + <width>620</width> + <height>50</height> + <font> + <font name="Header 1" family="Source Sans Pro" style="BOLD_ITALIC" size="36.0"> + </font> + </font> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Unlocked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>1</value> + <description>Write CMD_DevUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <value>0</value> + <description>Write CMD_DevLock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + </actions> + <text>UNLOCK</text> + <x>452</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false) || (pv1 == true) || (pv2 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true) && (pv1 == false) && (pv2 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Unlock this device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Locked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>0</value> + <description>Write CMD_DEVUNLOCK</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock(99)</pv_name> + <value>1</value> + <description>Run Lock script</description> + </action> + </actions> + <text>LOCK</text> + <x>547</x> + <y>10</y> + <width>85</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + </rule> + </rules> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: generate unique Machine ID from the network adapters to use it for locking mechanism*/ + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); + +var Lock = pvs[0];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock*/ +var Cmd_DevLock = pvs[1];/*${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock*/ +var P_Faceplate_LockID = pvs[2];/*${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID*/ +var Inhibit_Lock = pvs[3];/*${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock*/ +var Faceplate_LockID = pvs[4];/*${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID*/ +var BlockIcon_LockID = pvs[5];/*${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID*/ +var EnaForceUnlock = pvs[6];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock*/ +var DevLocked = pvs[7];/*${SecSub}:${Dis}-${Dev}-${Index}:DevLocked*/ + + + +var PV1 = PVUtil.getLong(Faceplate_LockID); /*Faceplate_LockID*/ +var PV2 = PVUtil.getLong(BlockIcon_LockID); /*BlockIcon_LockID*/ + +//OnShow +if (PVUtil.getLong(DevLocked) == 1) { /*DevLocked*/ + + if (PV1.toString() == PV2.toString()){ /*FaceplateLockID != BlockIconeLockID*/ + + logger.info(" Owner"); + EnaForceUnlock.setValue(0); /*Write EnaForceUnlock*/ + + } else + { + logger.info(" Faceplate FaceplateLockID "+ PV1); + logger.info(" Faceplate BlockIconeLockID "+ PV2); + + logger.info(" Guest"); + EnaForceUnlock.setValue(1); /*Write EnaForceUnlock*/ + } + + + +} +// OnClick +if (PVUtil.getLong(Lock) != 99) { /*loc://Lock, check if the script was triggered because of a button press or initilization*/ + if (PVUtil.getLong(Inhibit_Lock) == 0) { /*Inhibit_lock, check if locking is inhibited*/ + + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + UniqueText = UniqueText + intf.getName() + intf.getDisplayName(); + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + UniqueText = UniqueText + enumIpAddr.nextElement().toString(); + } + } + + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText); + if (crc >=2147483647){ crc = crc - 2147483647;} + + logger.info(" Faceplate machine ID: "+crc); + P_Faceplate_LockID.setValue(crc); /*Write P_Faceplate_LockID*/ + Cmd_DevLock.setValue(1); /*Write Lock*/ + + } /*Lock inhibit*/ +} /*onshow*/ + +]]></text> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID</pv_name> + <pv_name trigger="false">loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + </script> + </scripts> + <tooltip>Lock this device</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/HV_VALVE_Faceplate_Trend.plt b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/HV_VALVE_Faceplate_Trend.plt new file mode 100644 index 0000000000000000000000000000000000000000..888b4a0338f9cf09eb4ca76939617c23fa0d08a1 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/HV_VALVE_Faceplate_Trend.plt @@ -0,0 +1,118 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<databrowser> + <title></title> + <save_changes>true</save_changes> + <show_legend>false</show_legend> + <show_toolbar>true</show_toolbar> + <grid>false</grid> + <scroll>true</scroll> + <update_period>3.0</update_period> + <scroll_step>5</scroll_step> + <start>-10 minutes 0.0 seconds</start> + <end>now</end> + <archive_rescale>NONE</archive_rescale> + <foreground> + <red>229</red> + <green>229</green> + <blue>229</blue> + </foreground> + <background> + <red>77</red> + <green>77</green> + <blue>77</blue> + </background> + <title_font>Cantarell|16|1</title_font> + <label_font>Cantarell|11|1</label_font> + <scale_font>Cantarell|10|0</scale_font> + <legend_font>Cantarell|10|0</legend_font> + <axes> + <axis> + <visible>true</visible> + <name>Value Axis</name> + <use_axis_name>true</use_axis_name> + <use_trace_names>true</use_trace_names> + <right>false</right> + <color> + <red>255</red> + <green>165</green> + <blue>0</blue> + </color> + <min>0.0</min> + <max>25.0</max> + <grid>true</grid> + <autoscale>true</autoscale> + <log_scale>false</log_scale> + </axis> + <axis> + <visible>true</visible> + <name>Value 1</name> + <use_axis_name>false</use_axis_name> + <use_trace_names>true</use_trace_names> + <right>false</right> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <min>0.0</min> + <max>10.0</max> + <grid>false</grid> + <autoscale>true</autoscale> + <log_scale>false</log_scale> + </axis> + </axes> + <annotations> + </annotations> + <pvlist> + <pv> + <display_name>${SecSub}:${Dis}-${Dev}-${Index}:Opened</display_name> + <visible>true</visible> + <name>${SecSub}:${Dis}-${Dev}-${Index}:Opened</name> + <axis>0</axis> + <color> + <red>255</red> + <green>0</green> + <blue>0</blue> + </color> + <trace_type>AREA</trace_type> + <linewidth>2</linewidth> + <line_style>SOLID</line_style> + <point_type>NONE</point_type> + <point_size>2</point_size> + <waveform_index>0</waveform_index> + <period>0.0</period> + <ring_size>5000</ring_size> + <request>RAW</request> + <archive> + <name>ESS Archiver</name> + <url>pbraw://archiver-01.tn.esss.lu.se:17668/retrieval</url> + <key>1</key> + </archive> + </pv> + <pv> + <display_name>${SecSub}:${Dis}-${Dev}-${Index}:Closed</display_name> + <visible>true</visible> + <name>${SecSub}:${Dis}-${Dev}-${Index}:Closed</name> + <axis>1</axis> + <color> + <red>0</red> + <green>255</green> + <blue>0</blue> + </color> + <trace_type>AREA</trace_type> + <linewidth>2</linewidth> + <line_style>SOLID</line_style> + <point_type>NONE</point_type> + <point_size>2</point_size> + <waveform_index>0</waveform_index> + <period>0.0</period> + <ring_size>5000</ring_size> + <request>RAW</request> + <archive> + <name>ESS Archiver</name> + <url>pbraw://archiver-01.tn.esss.lu.se:17668/retrieval</url> + <key>1</key> + </archive> + </pv> + </pvlist> +</databrowser> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/PV_VALVE_BlockIcon_Horizontal.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/PV_VALVE_BlockIcon_Horizontal.bob new file mode 100644 index 0000000000000000000000000000000000000000..c69cb72591ce0980f639349f50198c4be374f474 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/PV_VALVE_BlockIcon_Horizontal.bob @@ -0,0 +1,330 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>PV_VALVE_BlockIcon_Horizontal</name> + <width>140</width> + <height>160</height> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIconSolenoid</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:SolenoidColor</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/valve solenoid/solenoid_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom_v02/valve solenoid/solenoid_OFF@64.png</symbol> + <symbol>../../symbols/custom_v02/valve solenoid/solenoid_ERROR@64.png</symbol> + <symbol>../../symbols/custom_v02/valve solenoid/solenoid_NEUTRAL@64.png</symbol> + <symbol>../../symbols/custom_v02/valve solenoid/solenoid_OK@64.png</symbol> + </symbols> + <x>38</x> + <y>63</y> + <width>64</width> + <height>64</height> + <actions execute_as_one="true"> + </actions> + <tooltip>Open faceplate</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIcon</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValveColor</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/valve solenoid/valve_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom_v02/valve solenoid/valve_OFF@64.png</symbol> + <symbol>../../symbols/custom_v02/valve solenoid/valve_ERROR@64.png</symbol> + <symbol>../../symbols/custom_v02/valve solenoid/valve_NEUTRAL@64.png</symbol> + <symbol>../../symbols/custom_v02/valve solenoid/valve_OK@64.png</symbol> + </symbols> + <x>38</x> + <y>63</y> + <width>64</width> + <height>64</height> + <actions execute_as_one="true"> + </actions> + <tooltip>Open faceplate</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text>A</text> + <x>55</x> + <y>31</y> + <width>30</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="29.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value></value> + </exp> + <exp bool_exp="pv1 == true"> + <value>M</value> + </exp> + <exp bool_exp="pv2 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <width>140</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="25.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Device name</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Locked</name> + <symbols> + <symbol>../../symbols/custom_v02/lock_locked@32.png</symbol> + </symbols> + <x>58</x> + <y>122</y> + <width>22</width> + <height>22</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:DevLocked</pv_name> + </rule> + </rules> + <tooltip>Device is locked</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Interlock</name> + <symbols> + <symbol>../../symbols/custom_v02/interlock_overridden_disabled_cms@32.png</symbol> + </symbols> + <x>10</x> + <y>36</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Interlock event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>103</x> + <y>36</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "PV_VALVE_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>140</width> + <height>160</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ManualOpen</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Cmd_ManuOpen</pv_name> + <text>O</text> + <x>24</x> + <y>126</y> + <width>30</width> + <rules> + <rule name="Visibility Rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:EnableBlkOpen</pv_name> + </rule> + </rules> + <tooltip>Manual Open</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ManualClose</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Cmd_ManuClose</pv_name> + <text>C</text> + <x>83</x> + <y>125</y> + <width>30</width> + <rules> + <rule name="Visibility Rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:EnableBlkClose</pv_name> + </rule> + </rules> + <tooltip>Manual Close</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/PV_VALVE_BlockIcon_Horizontal_Compact.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/PV_VALVE_BlockIcon_Horizontal_Compact.bob new file mode 100644 index 0000000000000000000000000000000000000000..c60a7657336b30d6ef7881b67fd0013824081b34 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/PV_VALVE_BlockIcon_Horizontal_Compact.bob @@ -0,0 +1,330 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>PV_VALVE_BlockIcon_Horizontal_Compact</name> + <width>140</width> + <height>160</height> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIconSolenoid</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:SolenoidColor</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/valve solenoid/solenoid_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom_v02/valve solenoid/solenoid_OFF@64.png</symbol> + <symbol>../../symbols/custom_v02/valve solenoid/solenoid_ERROR@64.png</symbol> + <symbol>../../symbols/custom_v02/valve solenoid/solenoid_NEUTRAL@64.png</symbol> + <symbol>../../symbols/custom_v02/valve solenoid/solenoid_OK@64.png</symbol> + </symbols> + <x>38</x> + <y>63</y> + <width>64</width> + <height>64</height> + <actions execute_as_one="true"> + </actions> + <tooltip>Open faceplate</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIcon</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValveColor</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/valve solenoid/valve_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom_v02/valve solenoid/valve_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom_v02/valve solenoid/valve_ERROR@64.png</symbol> + <symbol>../../symbols/custom_v02/valve solenoid/valve_NEUTRAL@64.png</symbol> + <symbol>../../symbols/custom_v02/valve solenoid/valve_OK@64.png</symbol> + </symbols> + <x>38</x> + <y>63</y> + <width>64</width> + <height>64</height> + <actions execute_as_one="true"> + </actions> + <tooltip>Open faceplate</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text>A</text> + <x>55</x> + <y>31</y> + <width>30</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="29.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value></value> + </exp> + <exp bool_exp="pv1 == true"> + <value>M</value> + </exp> + <exp bool_exp="pv2 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <width>140</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="25.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Device name</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Locked</name> + <symbols> + <symbol>../../symbols/custom_v02/lock_locked@32.png</symbol> + </symbols> + <x>58</x> + <y>122</y> + <width>22</width> + <height>22</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:DevLocked</pv_name> + </rule> + </rules> + <tooltip>Device is locked</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Interlock</name> + <symbols> + <symbol>../../symbols/custom_v02/interlock_overridden_disabled_cms@32.png</symbol> + </symbols> + <x>10</x> + <y>36</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Interlock event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>103</x> + <y>36</y> + <width>30</width> + <height>30</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "PV_VALVE_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>140</width> + <height>160</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ManualOpen</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Cmd_ManuOpen</pv_name> + <text>O</text> + <x>24</x> + <y>126</y> + <width>30</width> + <rules> + <rule name="Visibility Rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:EnableBlkOpen</pv_name> + </rule> + </rules> + <tooltip>Manual Open</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ManualClose</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Cmd_ManuClose</pv_name> + <text>C</text> + <x>83</x> + <y>125</y> + <width>30</width> + <rules> + <rule name="Visibility Rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:EnableBlkClose</pv_name> + </rule> + </rules> + <tooltip>Manual Close</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/PV_VALVE_BlockIcon_Vertical_Left.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/PV_VALVE_BlockIcon_Vertical_Left.bob new file mode 100644 index 0000000000000000000000000000000000000000..19827a16bef30315c7497158e369f8c11a73ad10 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/PV_VALVE_BlockIcon_Vertical_Left.bob @@ -0,0 +1,339 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>PV_VALVE_BlockIcon_Vertical_Left</name> + <width>250</width> + <height>130</height> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIconSolenoid</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:SolenoidColor</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/valve solenoid/solenoid_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom_v02/valve solenoid/solenoid_OFF@64.png</symbol> + <symbol>../../symbols/custom_v02/valve solenoid/solenoid_ERROR@64.png</symbol> + <symbol>../../symbols/custom_v02/valve solenoid/solenoid_NEUTRAL@64.png</symbol> + <symbol>../../symbols/custom_v02/valve solenoid/solenoid_OK@64.png</symbol> + </symbols> + <x>49</x> + <y>34</y> + <width>64</width> + <height>64</height> + <rotation>90.0</rotation> + <actions execute_as_one="true"> + </actions> + <tooltip>Open faceplate</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>WID_Rect</name> + <width>250</width> + <height>130</height> + <line_width>0</line_width> + <background_color> + <color red="0" green="0" blue="0" alpha="18"> + </color> + </background_color> + <corner_width>20</corner_width> + <corner_height>20</corner_height> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIcon</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValveColor</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/valve solenoid/valve_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom_v02/valve solenoid/valve_OFF@64.png</symbol> + <symbol>../../symbols/custom_v02/valve solenoid/valve_ERROR@64.png</symbol> + <symbol>../../symbols/custom_v02/valve solenoid/valve_NEUTRAL@64.png</symbol> + <symbol>../../symbols/custom_v02/valve solenoid/valve_OK@64.png</symbol> + </symbols> + <x>49</x> + <y>34</y> + <width>64</width> + <height>64</height> + <rotation>90.0</rotation> + <actions execute_as_one="true"> + </actions> + <tooltip>Open faceplate</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text>A</text> + <x>111</x> + <y>46</y> + <width>30</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="29.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>A</value> + </exp> + <exp bool_exp="pv1 == true"> + <value>M</value> + </exp> + <exp bool_exp="pv2 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>143</x> + <y>5</y> + <width>98</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="18.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Device name</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Locked</name> + <symbols> + <symbol>../../symbols/custom_v02/lock_locked@32.png</symbol> + </symbols> + <x>11</x> + <y>54</y> + <width>22</width> + <height>22</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:DevLocked</pv_name> + </rule> + </rules> + <tooltip>Device is locked</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Interlock</name> + <symbols> + <symbol>../../symbols/custom_v02/interlock_overridden_disabled_cms@32.png</symbol> + </symbols> + <x>11</x> + <y>10</y> + <width>24</width> + <height>24</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Interlock event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_IOErrorIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/WARNING@32.png</symbol> + </symbols> + <x>11</x> + <y>93</y> + <width>24</width> + <height>24</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == true)||(pv1==true)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == false)&&(pv1==false)"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Input_Module_Error</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Output_Module_Error</pv_name> + </rule> + </rules> + <tooltip>Siemens IO card error!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_MaintenanceIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/Wrench_error @32.png</symbol> + </symbols> + <x>115</x> + <y>95</y> + <width>21</width> + <height>21</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false)&&(pv1==false)&&(pv2==false)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true)||(pv1==true)||(pv2==true)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:IO_Error</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Input_Module_Error</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Output_Module_Error</pv_name> + </rule> + </rules> + <tooltip>Maintenace Needed!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>114</x> + <y>10</y> + <width>24</width> + <height>24</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "PV_VALVE_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>250</width> + <height>130</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/PV_VALVE_BlockIcon_Vertical_Right.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/PV_VALVE_BlockIcon_Vertical_Right.bob new file mode 100644 index 0000000000000000000000000000000000000000..ae27ff4fadbb5f9cccd1099d6189875245423fba --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/PV_VALVE_BlockIcon_Vertical_Right.bob @@ -0,0 +1,339 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>PV_VALVE_BlockIcon_Vertical_Right</name> + <width>250</width> + <height>130</height> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIconSolenoid</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:SolenoidColor</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/valve solenoid/solenoid_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom_v02/valve solenoid/solenoid_OFF@64.png</symbol> + <symbol>../../symbols/custom_v02/valve solenoid/solenoid_ERROR@64.png</symbol> + <symbol>../../symbols/custom_v02/valve solenoid/solenoid_NEUTRAL@64.png</symbol> + <symbol>../../symbols/custom_v02/valve solenoid/solenoid_OK@64.png</symbol> + </symbols> + <x>148</x> + <y>34</y> + <width>64</width> + <height>64</height> + <rotation>90.0</rotation> + <actions execute_as_one="true"> + </actions> + <tooltip>Open faceplate</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>WID_Rect</name> + <width>250</width> + <height>130</height> + <line_width>0</line_width> + <background_color> + <color red="0" green="0" blue="0" alpha="18"> + </color> + </background_color> + <corner_width>20</corner_width> + <corner_height>20</corner_height> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_CenterIcon</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValveColor</pv_name> + <symbols> + <symbol>../../symbols/custom_v02/valve solenoid/valve_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom_v02/valve solenoid/valve_OFF@64.png</symbol> + <symbol>../../symbols/custom_v02/valve solenoid/valve_ERROR@64.png</symbol> + <symbol>../../symbols/custom_v02/valve solenoid/valve_NEUTRAL@64.png</symbol> + <symbol>../../symbols/custom_v02/valve solenoid/valve_OK@64.png</symbol> + </symbols> + <x>148</x> + <y>34</y> + <width>64</width> + <height>64</height> + <rotation>90.0</rotation> + <actions execute_as_one="true"> + </actions> + <tooltip>Open faceplate</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text>A</text> + <x>210</x> + <y>46</y> + <width>30</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="29.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>A</value> + </exp> + <exp bool_exp="pv1 == true"> + <value>M</value> + </exp> + <exp bool_exp="pv2 == true"> + <value>F</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Forced</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>WID_TitleLBL</name> + <text>${WIDDev}-${WIDIndex}</text> + <x>9</x> + <y>5</y> + <width>98</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="18.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <tooltip>Device name</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Locked</name> + <symbols> + <symbol>../../symbols/custom_v02/lock_locked@32.png</symbol> + </symbols> + <x>110</x> + <y>54</y> + <width>22</width> + <height>22</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:DevLocked</pv_name> + </rule> + </rules> + <tooltip>Device is locked</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_Interlock</name> + <symbols> + <symbol>../../symbols/custom_v02/interlock_overridden_disabled_cms@32.png</symbol> + </symbols> + <x>110</x> + <y>10</y> + <width>24</width> + <height>24</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Interlock event occured!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_IOErrorIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/WARNING@32.png</symbol> + </symbols> + <x>110</x> + <y>93</y> + <width>24</width> + <height>24</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == true)||(pv1==true)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == false)&&(pv1==false)"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Input_Module_Error</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Output_Module_Error</pv_name> + </rule> + </rules> + <tooltip>Siemens IO card error!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_MaintenanceIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/Wrench_error @32.png</symbol> + </symbols> + <x>214</x> + <y>95</y> + <width>21</width> + <height>21</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false)&&(pv1==false)&&(pv2==false)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true)||(pv1==true)||(pv2==true)"> + <value>true</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:IO_Error</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Input_Module_Error</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Output_Module_Error</pv_name> + </rule> + </rules> + <tooltip>Maintenace Needed!</tooltip> + </widget> + <widget type="symbol" version="2.0.0"> + <name>WID_AlarmIcon</name> + <symbols> + <symbol>../../symbols/custom_v02/error@32.png</symbol> + </symbols> + <x>213</x> + <y>10</y> + <width>24</width> + <height>24</height> + <actions> + </actions> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == false"> + <value>false</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Alarm event occured!</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + +try +{ +P_BlockIcon_LockID = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":P_BlockIcon_LockID",3000); +DevLocked = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":DevLocked",3000); +Inhibit_Lock = PVUtil.createPV( WIDSecSub+":"+WIDDis+"-"+WIDDev+"-"+WIDIndex+":Inhibit_Lock",3000); +} +catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } + + + + + var patience = 500; + while (true) + { + try + { + if (PVUtil.getLong(Inhibit_Lock)!=null) + {break;} + + } + catch (e) {} + patience -=1; + if (patience <= 0) + { + throw "Timeout connecting to PV"; + } + } + + + if (PVUtil.getLong(Inhibit_Lock)==0) { /*Inibit_Lock, check if the locking is not inhibited*/ + if (PVUtil.getLong(DevLocked)==1) { /*DevLocked, check if the faceplate is locked*/ + + + /*Generate Unique ID for the machine*/ + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + var Data1 = ""; + var Data2 = ""; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + Data1 = intf.getName() + intf.getDisplayName(); + UniqueText = UniqueText + Data1; + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + Data2 = enumIpAddr.nextElement().toString(); + UniqueText = UniqueText + Data2; + } + } + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText) ; + if (crc >=2147483647){ crc = crc - 2147483647;} + logger.info(" BlockIcon machine ID: "+crc); + /*Write Block Icon ID to the PV*/ + P_BlockIcon_LockID.setValue(crc); + + } //Check if device is Locked + + } // Locking inhibited + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "PV_VALVE_Faceplate.bob", "STANDALONE", map); + + + + +PVFactory.releasePV(P_BlockIcon_LockID); +PVFactory.releasePV(DevLocked); +PVFactory.releasePV(Inhibit_Lock); +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>250</width> + <height>130</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/PV_VALVE_Faceplate.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/PV_VALVE_Faceplate.bob new file mode 100644 index 0000000000000000000000000000000000000000..a9f49e92b21b01eb334ba63e16a141b55fb03940 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/PV_VALVE_Faceplate.bob @@ -0,0 +1,1357 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>PV_VALVE_Faceplate</name> + <width>965</width> + <height>580</height> + <widget type="tabs" version="2.0.0"> + <name>Tabs</name> + <tabs> + <tab> + <name>Status</name> + <children> + <widget type="group" version="2.0.0"> + <name>group.status</name> + <x>10</x> + <y>10</y> + <height>340</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.status.border</name> + <width>300</width> + <height>330</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.status.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>289</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Status</name> + <text>STATUS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Status_Position</name> + <text>Valve Position</text> + <x>15</x> + <y>50</y> + <width>270</width> + <height>25</height> + <font> + <font name="Default Bold" family="Source Sans Pro" style="BOLD" size="16.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <transparent>false</transparent> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Opened</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Opened</pv_name> + <x>100</x> + <y>85</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Valve position</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Opened</name> + <text>OPENED</text> + <x>135</x> + <y>85</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Closed</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Closed</pv_name> + <x>100</x> + <y>120</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Valve position</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Closed</name> + <text>CLOSED</text> + <x>135</x> + <y>120</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Status_Solenoid</name> + <text>Solenoid</text> + <x>15</x> + <y>165</y> + <width>270</width> + <height>25</height> + <font> + <font name="Default Bold" family="Source Sans Pro" style="BOLD" size="16.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <transparent>false</transparent> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Solenoid</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Solenoid</pv_name> + <x>100</x> + <y>200</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Valve solenoid state</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Solenoid</name> + <text>OUTPUT</text> + <x>135</x> + <y>200</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.op.modes</name> + <x>320</x> + <y>10</y> + <height>340</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.border</name> + <width>300</width> + <height>330</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.background</name> + <x>5</x> + <y>35</y> + <width>289</width> + <height>289</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OP_MODES</name> + <text>OP MODES</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Auto</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Auto</pv_name> + <x>100</x> + <y>50</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_AUTO</name> + <text>AUTO</text> + <x>135</x> + <y>50</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Manual</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Manual</pv_name> + <x>100</x> + <y>85</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_MANUAL</name> + <text>MANUAL</text> + <x>135</x> + <y>85</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Forced</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <x>100</x> + <y>120</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_FORCED</name> + <text>FORCED</text> + <x>135</x> + <y>120</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_MESSAGES</name> + <text>MESSAGES</text> + <x>5</x> + <y>160</y> + <width>290</width> + <font> + <font family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitMan</name> + <text>- Manual mode inhibited</text> + <x>15</x> + <y>205</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Manual</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_InhibitForce</name> + <text>- Force mode inhibited</text> + <x>15</x> + <y>225</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Force</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm_ENA</name> + <text>- Alarms latching enabled</text> + <x>15</x> + <y>245</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>false</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + <widget type="label" version="2.0.0"> + <name>MSG_LatchAlarm_DIS</name> + <text>- Alarms latching disabled</text> + <x>15</x> + <y>246</y> + <width>270</width> + <foreground_color> + <color name="PRIMARY-DARK" red="31" green="83" blue="102"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="Visibility rule" prop_id="visible" out_exp="false"> + <exp bool_exp="pv0 == 0"> + <value>true</value> + </exp> + <exp bool_exp="pv0 == 1"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.alarms</name> + <x>630</x> + <y>10</y> + <height>341</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.border</name> + <width>300</width> + <height>330</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.alarms.background</name> + <x>5</x> + <y>35</y> + <width>290</width> + <height>288</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALARMS</name> + <text>ALARMS</text> + <width>300</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackgroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + </rule> + </rules> + <tooltip>Group alarm</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_INTERLOCKS</name> + <text>INTERLOCKS</text> + <x>5</x> + <y>218</y> + <width>290</width> + <height>25</height> + <font> + <font family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + <rules> + <rule name="BackgroundColor" prop_id="background_color" out_exp="false"> + <exp bool_exp="pv0 == 1"> + <value> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </value> + </exp> + <exp bool_exp="pv0 == 0"> + <value> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupInterlock</pv_name> + </rule> + </rules> + <tooltip>Group interlock</tooltip> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_OpeningTimeOut</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Opening_TimeOut</pv_name> + <x>25</x> + <y>50</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Opening timeout</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_OpeningTimeOut</name> + <text>Opening Timeout</text> + <x>60</x> + <y>50</y> + <width>155</width> + <height>26</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TEXT_OpeningTime</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpeningTime</pv_name> + <x>190</x> + <y>50</y> + <width>85</width> + <height>25</height> + <font> + <font name="TINY-SANS-PLAIN" family="Source Sans Pro" style="REGULAR" size="12.0"> + </font> + </font> + <foreground_color> + <color name="BLACK-BORDER" red="121" green="121" blue="121"> + </color> + </foreground_color> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Opening Time in ms</tooltip> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_ClosingTimeOut</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Closing_TimeOut</pv_name> + <x>25</x> + <y>85</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Closing timeout</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_ClosingTimeOut</name> + <text>Closing Timeout</text> + <x>60</x> + <y>85</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>TEXT_ClosingTime</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ClosingTime</pv_name> + <x>190</x> + <y>85</y> + <width>85</width> + <height>25</height> + <font> + <font name="TINY-SANS-PLAIN" family="Source Sans Pro" style="REGULAR" size="12.0"> + </font> + </font> + <foreground_color> + <color name="BLACK-BORDER" red="121" green="121" blue="121"> + </color> + </foreground_color> + <vertical_alignment>1</vertical_alignment> + <wrap_words>false</wrap_words> + <tooltip>Opening Time in ms</tooltip> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_IO_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:IO_Error</pv_name> + <x>25</x> + <y>120</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>I/O error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_IO_Error</name> + <text>I/O Error</text> + <x>60</x> + <y>120</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Module_Error</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Input_Module_Error</pv_name> + <x>25</x> + <y>151</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Module error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Module_Error</name> + <text>Siemens Input Module Error</text> + <x>59</x> + <y>151</y> + <width>188</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ILOCK_START</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:StartInterlock</pv_name> + <x>25</x> + <y>253</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>Start interlock</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ILOCK_START</name> + <text>Start Interlock</text> + <x>60</x> + <y>251</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ILOCK_STOP</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:StopInterlock</pv_name> + <x>25</x> + <y>287</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MINOR" red="252" green="242" blue="17"> + </color> + </on_color> + <tooltip>Stop interlock</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ILOCK_STOP</name> + <text>Stop Interlock</text> + <x>60</x> + <y>287</y> + <width>155</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_ALM_Module_Error_1</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Output_Module_Error</pv_name> + <x>25</x> + <y>184</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <on_color> + <color name="MAJOR" red="252" green="13" blue="27"> + </color> + </on_color> + <tooltip>Module error</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_ALM_Module_Error_1</name> + <text>Siemens Output Module Error</text> + <x>59</x> + <y>184</y> + <width>189</width> + <height>25</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>buttons.bar</name> + <x>8</x> + <y>361</y> + <width>920</width> + <height>80</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_AUTO</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Auto</pv_name> + <text>AUTO</text> + <x>12</x> + <y>402</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableAutoBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>AUTO operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_MANUAL</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Manual</pv_name> + <text>MANUAL</text> + <x>217</x> + <y>403</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableManualBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>MANUAL operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_MAN_ON</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ManuOpen</pv_name> + <text>OPEN</text> + <x>217</x> + <y>367</y> + <width>99</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)|| (pv2 == 1)|| (pv3 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0) && (pv2 == 0) && (pv3==0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Manual</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Solenoid</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:StartInterlock</pv_name> + </rule> + </rules> + <tooltip>Manual OPEN</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_MAN_OFF</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ManuClose</pv_name> + <text>CLOSE</text> + <x>318</x> + <y>367</y> + <width>99</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 0) || (pv2 == 1) || (pv3 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 1) && (pv2 == 0) && (pv3 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Manual</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Solenoid</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:StopInterlock</pv_name> + </rule> + </rules> + <tooltip>Manual CLOSE</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Force</pv_name> + <text>FORCE</text> + <x>422</x> + <y>403</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:EnableForcedBtn</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>FORCE operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_ON</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceOpen</pv_name> + <text>OPEN</text> + <x>422</x> + <y>367</y> + <width>99</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1) || (pv3 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv2 == 1) && (pv3 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Opened</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Closed</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force OPEN</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_OFF</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceClose</pv_name> + <text>CLOSE</text> + <x>523</x> + <y>367</y> + <width>99</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv2 == 1) || (pv3 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 1) && (pv3 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Forced</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Opened</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Closed</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force CLOSE</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_ACK</name> + <actions> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_AckAlarm</pv_name> + <value>1</value> + <description>Acknowledge alarms</description> + </action> + </actions> + <text>Acknowledge Alarm</text> + <x>722</x> + <y>403</y> + <width>200</width> + <height>33</height> + <background_color> + <color name="ORANGE" red="254" green="194" blue="81"> + </color> + </background_color> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) || (pv1 == 1) || (pv2 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) && (pv1 == 0) && (pv2 == 1)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:GroupAlarm</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:LatchAlarm</pv_name> + </rule> + </rules> + <tooltip>Acknowledge alarms</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_FORCE_UNLOCK</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ForceUnlock</pv_name> + <value>1</value> + <description>Write ForceUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <value>0</value> + <description>Write EnaForceUnlock</description> + </action> + </actions> + <text>FORCE UNLOCK</text> + <x>722</x> + <y>367</y> + <width>200</width> + <height>33</height> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 1)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 0)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Force unlock device</tooltip> + </widget> + </children> + </tab> + <tab> + <name>Trend</name> + <children> + <widget type="databrowser" version="2.0.0"> + <name>DataBrowser</name> + <file>PV_VALVE_Faceplate_Trend.plt</file> + <width>940</width> + <height>441</height> + </widget> + </children> + </tab> + </tabs> + <x>10</x> + <y>60</y> + <width>943</width> + <height>490</height> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Header Bar</name> + <width>963</width> + <height>50</height> + <line_width>0</line_width> + <line_color> + <color red="0" green="0" blue="255" alpha="0"> + </color> + </line_color> + <background_color> + <color name="PRIMARY-HEADER-BACKGROUND" red="151" green="188" blue="202"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HeaderPVName</name> + <text>${SecSub}:${Dis}-${Dev}-${Index}</text> + <x>20</x> + <width>715</width> + <height>50</height> + <font> + <font name="Header 1" family="Source Sans Pro" style="BOLD_ITALIC" size="36.0"> + </font> + </font> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Locked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>0</value> + <description>Write CMD_DEVUNLOCK</description> + </action> + <action type="write_pv"> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock(99)</pv_name> + <value>1</value> + <description>Run Lock script</description> + </action> + </actions> + <text>LOCK</text> + <x>850</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == 0) && (pv1 == 0)"> + <value>true</value> + </exp> + <exp bool_exp="(pv0 == 1) || (pv1 == 1)"> + <value>false</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + </rule> + </rules> + <scripts> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: generate unique Machine ID from the network adapters to use it for locking mechanism*/ + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); + +var Lock = pvs[0];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock*/ +var Cmd_DevLock = pvs[1];/*${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock*/ +var P_Faceplate_LockID = pvs[2];/*${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID*/ +var Inhibit_Lock = pvs[3];/*${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock*/ +var Faceplate_LockID = pvs[4];/*${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID*/ +var BlockIcon_LockID = pvs[5];/*${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID*/ +var EnaForceUnlock = pvs[6];/*loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock*/ +var DevLocked = pvs[7];/*${SecSub}:${Dis}-${Dev}-${Index}:DevLocked*/ + + + +var PV1 = PVUtil.getLong(Faceplate_LockID); /*Faceplate_LockID*/ +var PV2 = PVUtil.getLong(BlockIcon_LockID); /*BlockIcon_LockID*/ + +//OnShow +if (PVUtil.getLong(DevLocked) == 1) { /*DevLocked*/ + + if (PV1.toString() == PV2.toString()){ /*FaceplateLockID != BlockIconeLockID*/ + + logger.info(" Owner"); + EnaForceUnlock.setValue(0); /*Write EnaForceUnlock*/ + + } else + { + logger.info(" Faceplate FaceplateLockID "+ PV1); + logger.info(" Faceplate BlockIconeLockID "+ PV2); + + logger.info(" Guest"); + EnaForceUnlock.setValue(1); /*Write EnaForceUnlock*/ + } + + + +} +// OnClick +if (PVUtil.getLong(Lock) != 99) { /*loc://Lock, check if the script was triggered because of a button press or initilization*/ + if (PVUtil.getLong(Inhibit_Lock) == 0) { /*Inhibit_lock, check if locking is inhibited*/ + + var UniqueText = ""; + var en = java.net.NetworkInterface.getNetworkInterfaces(); + var inf; + var enumIpAddr; + for (en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + intf = en.nextElement(); + UniqueText = UniqueText + intf.getName() + intf.getDisplayName(); + for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + UniqueText = UniqueText + enumIpAddr.nextElement().toString(); + } + } + + + var a_table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + var b_table = a_table.split(' ').map(function(s){ return parseInt(s,16) }); + function b_crc32 (str) { + var crc = -1; + for(var i=0, iTop=str.length; i<iTop; i++) { + crc = ( crc >>> 8 ) ^ b_table[( crc ^ str.charCodeAt( i ) ) & 0xFF]; + } + return (crc ^ (-1)) >>> 0; + }; + + var crc = b_crc32(UniqueText); + if (crc >=2147483647){ crc = crc - 2147483647;} + + logger.info(" Faceplate machine ID: "+crc); + P_Faceplate_LockID.setValue(crc); /*Write P_Faceplate_LockID*/ + Cmd_DevLock.setValue(1); /*Write Lock*/ + + } /*Lock inhibit*/ +} /*onshow*/ + +]]></text> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:Faceplate_LockID</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:BlockIcon_LockID</pv_name> + <pv_name trigger="false">loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + <pv_name trigger="false">${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + </script> + </scripts> + <tooltip>Lock this device</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>ICON_Unlocked</name> + <actions execute_as_one="true"> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevUnlock</pv_name> + <value>1</value> + <description>Write CMD_DevUnlock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_DevLock</pv_name> + <value>0</value> + <description>Write CMD_DevLock</description> + </action> + <action type="write_pv"> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:P_Faceplate_LockID</pv_name> + <value>0</value> + <description>Write zero to P_Faceplate_LockID</description> + </action> + </actions> + <text>UNLOCK</text> + <x>755</x> + <y>10</y> + <width>90</width> + <rules> + <rule name="VisibilityRule" prop_id="visible" out_exp="false"> + <exp bool_exp="(pv0 == false) || (pv1 == true) || (pv2 == 1)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == true) && (pv1 == false) && (pv2 == 0)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:DevLocked</pv_name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Inhibit_Lock</pv_name> + <pv_name>loc://${SecSub}:${Dis}-${Dev}-${Index}:EnaForceUnlock</pv_name> + </rule> + </rules> + <tooltip>Unlock this device</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/PV_VALVE_Faceplate_Trend.plt b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/PV_VALVE_Faceplate_Trend.plt new file mode 100644 index 0000000000000000000000000000000000000000..1c020b430b48084cf6d047656720c0e9e827d0f9 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/DeviceTypes/Valves/PV_VALVE_Faceplate_Trend.plt @@ -0,0 +1,76 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<databrowser> + <title></title> + <save_changes>true</save_changes> + <show_legend>false</show_legend> + <show_toolbar>true</show_toolbar> + <grid>false</grid> + <scroll>true</scroll> + <update_period>3.0</update_period> + <scroll_step>5</scroll_step> + <start>-10 minutes 0.0 seconds</start> + <end>now</end> + <archive_rescale>NONE</archive_rescale> + <foreground> + <red>229</red> + <green>229</green> + <blue>229</blue> + </foreground> + <background> + <red>77</red> + <green>77</green> + <blue>77</blue> + </background> + <title_font>Cantarell|16|1</title_font> + <label_font>Cantarell|11|1</label_font> + <scale_font>Cantarell|10|0</scale_font> + <legend_font>Cantarell|10|0</legend_font> + <axes> + <axis> + <visible>true</visible> + <name>Value Axis</name> + <use_axis_name>true</use_axis_name> + <use_trace_names>true</use_trace_names> + <right>false</right> + <color> + <red>255</red> + <green>165</green> + <blue>0</blue> + </color> + <min>0.0</min> + <max>25.0</max> + <grid>true</grid> + <autoscale>false</autoscale> + <log_scale>false</log_scale> + </axis> + </axes> + <annotations> + </annotations> + <pvlist> + <pv> + <display_name>${SecSub}:${Dis}-${Dev}-${Index}:MeasValue</display_name> + <visible>true</visible> + <name>${SecSub}:${Dis}-${Dev}-${Index}:MeasValue</name> + <axis>0</axis> + <color> + <red>255</red> + <green>0</green> + <blue>0</blue> + </color> + <trace_type>AREA</trace_type> + <linewidth>2</linewidth> + <line_style>SOLID</line_style> + <point_type>NONE</point_type> + <point_size>2</point_size> + <waveform_index>0</waveform_index> + <period>0.0</period> + <ring_size>5000</ring_size> + <request>RAW</request> + <archive> + <name>ESS Archiver</name> + <url>pbraw://archiver-01.tn.esss.lu.se:17668/retrieval</url> + <key>1</key> + </archive> + </pv> + </pvlist> +</databrowser> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/EPICSConnection.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/EPICSConnection.bob new file mode 100644 index 0000000000000000000000000000000000000000..82c7194290f377a4a37444ae62bc560a698c53e2 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/EPICSConnection.bob @@ -0,0 +1,167 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>OnlineConnection_v02</name> + <width>350</width> + <height>300</height> + <widget type="group" version="2.0.0"> + <name>EPICS Communication</name> + <width>350</width> + <height>300</height> + <style>3</style> + <background_color> + <color name="BACKGROUND" red="220" green="225" blue="221"> + </color> + </background_color> + <widget type="rectangle" version="2.0.0"> + <name>BGGrey01-titlebar</name> + <width>350</width> + <height>300</height> + <line_width>2</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <corner_width>10</corner_width> + <corner_height>10</corner_height> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>BGGrey01-background</name> + <x>10</x> + <y>30</y> + <width>330</width> + <height>260</height> + <line_width>2</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="BACKGROUND" red="220" green="225" blue="221"> + </color> + </background_color> + <corner_width>5</corner_width> + <corner_height>5</corner_height> + </widget> + <widget type="label" version="2.0.0"> + <name>BGGrey01-title</name> + <text>EPICS Communication</text> + <x>10</x> + <width>330</width> + <height>30</height> + <font> + <font name="SUBSUB-GROUP-HEADER" family="Source Sans Pro" style="BOLD" size="16.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>Label_13</name> + <text>IOCFactory TAG:</text> + <x>25</x> + <y>200</y> + <width>140</width> + <horizontal_alignment>2</horizontal_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>Label_14</name> + <text>Alive:</text> + <x>25</x> + <y>170</y> + <width>140</width> + <horizontal_alignment>2</horizontal_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>Label_15</name> + <text>PLC hash OK:</text> + <x>25</x> + <y>140</y> + <width>140</width> + <horizontal_alignment>2</horizontal_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>Label_16</name> + <text>IOC Connected:</text> + <x>25</x> + <y>110</y> + <width>140</width> + <horizontal_alignment>2</horizontal_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>Label_17</name> + <text>S7 Connected:</text> + <x>25</x> + <y>80</y> + <width>140</width> + <horizontal_alignment>2</horizontal_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>Label_18</name> + <text>Modbus Connected:</text> + <x>25</x> + <y>50</y> + <width>140</width> + <horizontal_alignment>2</horizontal_alignment> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>Text Update_6</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ModbusConnectedR</pv_name> + <x>175</x> + <y>50</y> + <width>140</width> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>Text Update_7</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:S7ConnectedR</pv_name> + <x>175</x> + <y>80</y> + <width>140</width> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>Text Update_8</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ConnectedR</pv_name> + <x>175</x> + <y>110</y> + <width>140</width> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>Text Update_9</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:PLCHashCorrectR</pv_name> + <x>175</x> + <y>140</y> + <width>140</width> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>Text Update_10</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:AliveR</pv_name> + <x>175</x> + <y>170</y> + <width>140</width> + </widget> + <widget type="textupdate" version="2.0.0"> + <name>Text Update_11</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:ModVersionR</pv_name> + <x>175</x> + <y>200</y> + <width>140</width> + </widget> + <widget type="action_button" version="3.0.0"> + <name>Action Button_1</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Update parameters</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:UploadParametersS</pv_name> + <x>175</x> + <y>240</y> + <width>140</width> + </widget> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/ICSLibraryTestPage.bob b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/ICSLibraryTestPage.bob new file mode 100644 index 0000000000000000000000000000000000000000..572682b3b4236f3a63f53bc270011ae5b6edf80e --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/ICSLibraryTestPage.bob @@ -0,0 +1,117 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>Cryolibrary Device Test v02</name> + <width>2560</width> + <height>2220</height> + <grid_visible>false</grid_visible> + <widget type="rectangle" version="2.0.0"> + <name>Rectangle</name> + <class>TITLE-BAR</class> + <x use_class="true">0</x> + <y use_class="true">0</y> + <width>2560</width> + <height use_class="true">50</height> + <line_width use_class="true">0</line_width> + <background_color use_class="true"> + <color name="PRIMARY-HEADER-BACKGROUND" red="151" green="188" blue="202"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>Label</name> + <class>TITLE</class> + <text>ICS Library Device Test Screen</text> + <x use_class="true">20</x> + <y use_class="true">0</y> + <width>531</width> + <height use_class="true">50</height> + <font use_class="true"> + <font name="Header 1" family="Source Sans Pro" style="BOLD_ITALIC" size="36.0"> + </font> + </font> + <foreground_color use_class="true"> + <color name="HEADER-TEXT" red="0" green="0" blue="0"> + </color> + </foreground_color> + <background_color> + <color red="0" green="148" blue="202"> + </color> + </background_color> + <transparent use_class="true">true</transparent> + <horizontal_alignment use_class="true">0</horizontal_alignment> + <vertical_alignment use_class="true">1</vertical_alignment> + <wrap_words use_class="true">false</wrap_words> + </widget> + <widget type="embedded" version="2.0.0"> + <name>OnlineConnection</name> + <file>../ICS_OPI_LIBRARY/EPICSConnection.bob</file> + <macros> + <Dev>PLC</Dev> + <Dis>Cryo</Dis> + <Index>001</Index> + <SecSub>LabS-ICS</SecSub> + </macros> + <x>720</x> + <y>80</y> + <width>350</width> + <resize>2</resize> + </widget> + <widget type="label" version="2.0.0"> + <name>Label_13</name> + <text>AnalogTransmitter_BlockIcon_OnlyText_Horizontal_Compact.bob</text> + <x>20</x> + <y>169</y> + <width>590</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD_ITALIC" size="18.0"> + </font> + </font> + </widget> + <widget type="embedded" version="2.0.0"> + <name>TT-001</name> + <file>../ICS_OPI_LIBRARY/DeviceTypes/AnalogMeasure/AnalogTransmitter_BlockIcon_OnlyText_Horizontal_Compact.bob</file> + <macros> + <WIDDev>TT</WIDDev> + <WIDDis>Cryo</WIDDis> + <WIDIndex>001</WIDIndex> + <WIDLabel>Temperature</WIDLabel> + <WIDSecSub>LabS-ICS</WIDSecSub> + </macros> + <x>20</x> + <y>199</y> + <width>250</width> + <height>32</height> + <resize>2</resize> + <transparent>true</transparent> + </widget> + <widget type="embedded" version="2.0.0"> + <name>PV-001</name> + <file>../ICS_OPI_LIBRARY/DeviceTypes/Valves/PV_VALVE_BlockIcon_Horizontal.bob</file> + <macros> + <WIDDev>PV</WIDDev> + <WIDDis>Cryo</WIDDis> + <WIDIndex>001</WIDIndex> + <WIDLabel>Temperature</WIDLabel> + <WIDSecSub>LabS-ICS</WIDSecSub> + </macros> + <x>20</x> + <y>280</y> + <width>140</width> + <height>160</height> + <resize>2</resize> + <transparent>true</transparent> + </widget> + <widget type="label" version="2.0.0"> + <name>Label_14</name> + <text>PV_VALVE_BlockIcon_Horizontal.bob</text> + <x>20</x> + <y>250</y> + <width>590</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD_ITALIC" size="18.0"> + </font> + </font> + </widget> +</display> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/_project.xml b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/_project.xml new file mode 100644 index 0000000000000000000000000000000000000000..151dc6fa0cff976bc94da11e1ff8cae3270208bc --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/_project.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>CMS</name> + <comment></comment> + <projects> + <project>CSS</project> + <project>ess-symbols</project> + <project>ess-templates</project> + </projects> + <buildSpec> + </buildSpec> + <natures> + </natures> +</projectDescription> diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/OPIBackGrounds/ColdBoxBackGround.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/OPIBackGrounds/ColdBoxBackGround.png new file mode 100644 index 0000000000000000000000000000000000000000..0aefdf478dd3ecd2b6d60af1cd857c9f565ad5ef Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/OPIBackGrounds/ColdBoxBackGround.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/OPIBackGrounds/DistributionBoxBackGround.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/OPIBackGrounds/DistributionBoxBackGround.png new file mode 100644 index 0000000000000000000000000000000000000000..841cdad9d333f7bf9579abb3f1a598666556fcc8 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/OPIBackGrounds/DistributionBoxBackGround.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/OPIBackGrounds/GasManagementPanelBackGround.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/OPIBackGrounds/GasManagementPanelBackGround.png new file mode 100644 index 0000000000000000000000000000000000000000..6011fa32639b1ed8aa7868df27b33b8ceeb71793 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/OPIBackGrounds/GasManagementPanelBackGround.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/OPIBackGrounds/PumpCoolingBackGround.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/OPIBackGrounds/PumpCoolingBackGround.png new file mode 100644 index 0000000000000000000000000000000000000000..13f7be5738e013160a2e8c5d5c63fc8f3e2f6886 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/OPIBackGrounds/PumpCoolingBackGround.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/OPIBackGrounds/TMCPJumperSpoolBackGround.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/OPIBackGrounds/TMCPJumperSpoolBackGround.png new file mode 100644 index 0000000000000000000000000000000000000000..d35b0a22b31c7928ad8a6ff5c0e4d2a015f12f90 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/OPIBackGrounds/TMCPJumperSpoolBackGround.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/AnalogTransmitter/AnalogTransmitter_BLUE@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/AnalogTransmitter/AnalogTransmitter_BLUE@64.png new file mode 100644 index 0000000000000000000000000000000000000000..40480cf8635200f78b35b2c8fb9551fb182914be Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/AnalogTransmitter/AnalogTransmitter_BLUE@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/AnalogTransmitter/AnalogTransmitter_ERROR@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/AnalogTransmitter/AnalogTransmitter_ERROR@64.png new file mode 100644 index 0000000000000000000000000000000000000000..279fbf80e79654cbe55194d668200b3b15e6c3cb Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/AnalogTransmitter/AnalogTransmitter_ERROR@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/AnalogTransmitter/AnalogTransmitter_INVALID@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/AnalogTransmitter/AnalogTransmitter_INVALID@64.png new file mode 100644 index 0000000000000000000000000000000000000000..23cb24c0e3038c18392e88a79f9008a8760c6078 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/AnalogTransmitter/AnalogTransmitter_INVALID@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/AnalogTransmitter/AnalogTransmitter_NEUTRAL@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/AnalogTransmitter/AnalogTransmitter_NEUTRAL@64.png new file mode 100644 index 0000000000000000000000000000000000000000..17d40357d5af5543fe5f6bb7285e1e68afaa004a Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/AnalogTransmitter/AnalogTransmitter_NEUTRAL@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/AnalogTransmitter/AnalogTransmitter_NEUTRAL_w@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/AnalogTransmitter/AnalogTransmitter_NEUTRAL_w@64.png new file mode 100644 index 0000000000000000000000000000000000000000..ab9a44c80e7f96993010bf153948df7fd6853451 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/AnalogTransmitter/AnalogTransmitter_NEUTRAL_w@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/AnalogTransmitter/AnalogTransmitter_NOT_CONTROLED@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/AnalogTransmitter/AnalogTransmitter_NOT_CONTROLED@64.png new file mode 100644 index 0000000000000000000000000000000000000000..b93198a9ae0d5916684d0e0147d238eab52fe56a Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/AnalogTransmitter/AnalogTransmitter_NOT_CONTROLED@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/AnalogTransmitter/AnalogTransmitter_OFF@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/AnalogTransmitter/AnalogTransmitter_OFF@64.png new file mode 100644 index 0000000000000000000000000000000000000000..b80680c92249e9bbab872b47254d71aaaf297da7 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/AnalogTransmitter/AnalogTransmitter_OFF@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/AnalogTransmitter/AnalogTransmitter_OK@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/AnalogTransmitter/AnalogTransmitter_OK@64.png new file mode 100644 index 0000000000000000000000000000000000000000..26970a12cd87c6547b4864948469e8334e0d84a5 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/AnalogTransmitter/AnalogTransmitter_OK@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/AnalogTransmitter/AnalogTransmitter_WARNING@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/AnalogTransmitter/AnalogTransmitter_WARNING@64.png new file mode 100644 index 0000000000000000000000000000000000000000..1b5f9f95c3e14ba5606e8540592e2c4622ae7ece Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/AnalogTransmitter/AnalogTransmitter_WARNING@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/AnalogTransmitter/AnalogTransmitter_valve_solenoid_CLOSED@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/AnalogTransmitter/AnalogTransmitter_valve_solenoid_CLOSED@64.png new file mode 100644 index 0000000000000000000000000000000000000000..346d192ad2c643d43e4ef07292ffc94dfedd6ae0 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/AnalogTransmitter/AnalogTransmitter_valve_solenoid_CLOSED@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/AnalogTransmitter/AnalogTransmitter_valve_solenoid_CLOSED_w@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/AnalogTransmitter/AnalogTransmitter_valve_solenoid_CLOSED_w@64.png new file mode 100644 index 0000000000000000000000000000000000000000..608f053a09f579adcbd0cfc6032dcd0e426bd572 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/AnalogTransmitter/AnalogTransmitter_valve_solenoid_CLOSED_w@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-BLUE.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-BLUE.svg new file mode 100644 index 0000000000000000000000000000000000000000..9a027fe1555980c1bb03fc24595a4c89d642b3f3 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-BLUE.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1{fill:#dce1dd;}.cls-2{fill:none;}.cls-3{fill:#2f8794;}</style></defs><title>gas-analyser-2</title><circle class="cls-1" cx="66.78881" cy="68.95879" r="48.60103"/><rect class="cls-2" width="133.64375" height="133.64375"/><polygon class="cls-3" points="91.784 85.439 91.815 85.208 91.83 84.987 91.835 84.774 91.83 84.571 91.81 84.371 91.779 84.185 91.738 84.004 91.686 83.827 91.625 83.658 91.553 83.499 91.471 83.34 91.384 83.193 91.286 83.052 91.179 82.914 91.066 82.782 90.943 82.653 90.814 82.534 90.676 82.418 90.537 82.303 90.388 82.197 90.235 82.095 90.075 81.998 89.911 81.9 90.06 82.193 90.204 82.458 90.332 82.702 90.45 82.937 90.501 83.052 90.547 83.167 90.589 83.282 90.624 83.397 90.655 83.517 90.676 83.636 90.691 83.76 90.696 83.889 90.696 84.021 90.681 84.163 90.66 84.309 90.635 84.464 90.594 84.628 90.542 84.801 90.476 84.982 90.404 85.177 90.317 85.385 90.219 85.602 90.106 85.833 89.978 86.081 89.839 86.342 89.68 86.621 89.511 86.913 89.326 87.223 89.239 87.374 89.152 87.52 89.075 87.666 88.998 87.812 88.926 87.958 88.86 88.1 88.798 88.242 88.736 88.379 88.68 88.521 88.634 88.658 88.582 88.795 88.541 88.928 88.5 89.061 88.464 89.194 88.434 89.327 88.408 89.455 88.382 89.584 88.362 89.712 88.341 89.836 88.326 89.96 88.316 90.084 88.311 90.208 88.305 90.328 88.305 90.447 88.311 90.562 88.316 90.682 88.321 90.797 88.336 90.912 88.352 91.023 88.367 91.134 88.388 91.244 88.413 91.351 88.439 91.461 88.47 91.568 88.536 91.771 88.613 91.975 88.706 92.17 88.803 92.365 88.911 92.546 89.029 92.728 89.152 92.9 89.285 93.073 89.429 93.233 89.578 93.392 89.737 93.543 89.901 93.689 90.07 93.83 90.25 93.963 90.429 94.092 90.24 93.627 90.075 93.206 89.999 93.007 89.932 92.816 89.875 92.63 89.819 92.453 89.773 92.281 89.732 92.112 89.701 91.948 89.675 91.789 89.66 91.63 89.65 91.47 89.645 91.315 89.65 91.156 89.665 90.996 89.686 90.837 89.711 90.673 89.752 90.505 89.793 90.336 89.85 90.159 89.911 89.973 89.983 89.783 90.065 89.588 90.152 89.38 90.25 89.163 90.358 88.937 90.476 88.702 90.599 88.454 90.881 87.914 91.04 87.6 91.184 87.299 91.317 87.002 91.43 86.718 91.527 86.444 91.615 86.178 91.686 85.921 91.743 85.678 91.784 85.439"/><polygon class="cls-3" points="99.367 85.058 99.336 84.867 99.295 84.686 99.244 84.509 99.182 84.34 99.11 84.181 99.028 84.026 98.941 83.875 98.843 83.734 98.736 83.596 98.623 83.464 98.5 83.335 98.371 83.216 98.238 83.1 98.094 82.99 97.946 82.879 97.792 82.777 97.633 82.68 97.474 82.582 97.617 82.875 97.761 83.14 97.889 83.384 98.007 83.618 98.058 83.734 98.105 83.849 98.146 83.964 98.182 84.079 98.212 84.199 98.233 84.318 98.248 84.442 98.253 84.571 98.253 84.708 98.238 84.845 98.217 84.991 98.192 85.146 98.151 85.31 98.099 85.483 98.033 85.664 97.961 85.859 97.874 86.067 97.776 86.284 97.663 86.515 97.535 86.763 97.397 87.024 97.238 87.303 97.068 87.595 96.884 87.905 96.796 88.056 96.709 88.202 96.632 88.348 96.555 88.494 96.483 88.64 96.417 88.782 96.355 88.924 96.294 89.065 96.242 89.203 96.191 89.34 96.14 89.477 96.099 89.61 96.058 89.743 96.022 89.876 95.991 90.009 95.965 90.137 95.94 90.266 95.919 90.394 95.899 90.518 95.883 90.642 95.873 90.766 95.868 90.89 95.863 91.01 95.863 91.129 95.868 91.249 95.873 91.364 95.878 91.479 95.893 91.594 95.909 91.705 95.924 91.816 95.945 91.926 95.97 92.033 95.996 92.143 96.027 92.25 96.093 92.453 96.17 92.657 96.263 92.856 96.36 93.047 96.468 93.233 96.586 93.41 96.709 93.587 96.843 93.755 96.986 93.919 97.135 94.074 97.294 94.225 97.458 94.371 97.628 94.512 97.807 94.645 97.987 94.774 97.797 94.309 97.633 93.888 97.561 93.689 97.489 93.498 97.433 93.312 97.376 93.135 97.33 92.962 97.289 92.794 97.258 92.63 97.232 92.471 97.217 92.312 97.207 92.152 97.202 91.997 97.207 91.838 97.222 91.678 97.243 91.519 97.268 91.355 97.309 91.187 97.35 91.018 97.407 90.841 97.468 90.655 97.54 90.465 97.622 90.27 97.71 90.062 97.807 89.845 97.915 89.619 98.033 89.384 98.156 89.136 98.438 88.596 98.597 88.282 98.746 87.981 98.874 87.684 98.987 87.4 99.085 87.126 99.172 86.86 99.244 86.603 99.3 86.36 99.341 86.121 99.372 85.89 99.387 85.669 99.392 85.456 99.387 85.253 99.367 85.058"/><polygon class="cls-3" points="95.975 86.293 96.042 86.112 96.099 85.93 96.155 85.753 96.206 85.58 96.247 85.412 96.288 85.244 96.324 85.08 96.355 84.92 96.381 84.761 96.406 84.606 96.422 84.451 96.437 84.3 96.448 84.154 96.453 84.013 96.453 83.871 96.448 83.729 96.442 83.596 96.432 83.459 96.417 83.331 96.396 83.202 96.376 83.074 96.35 82.95 96.319 82.83 96.288 82.711 96.253 82.596 96.211 82.48 96.17 82.37 96.124 82.259 96.073 82.153 96.022 82.046 95.965 81.945 95.909 81.843 95.842 81.745 95.781 81.648 95.714 81.55 95.642 81.457 95.57 81.369 95.493 81.28 95.416 81.192 95.334 81.103 95.252 81.023 95.078 80.86 94.898 80.7 94.708 80.554 94.508 80.408 94.303 80.271 94.088 80.138 93.872 80.009 93.969 80.209 94.072 80.399 94.262 80.753 94.436 81.085 94.518 81.245 94.59 81.4 94.662 81.555 94.724 81.71 94.78 81.865 94.826 82.02 94.867 82.179 94.893 82.339 94.913 82.507 94.924 82.68 94.919 82.861 94.903 83.047 94.878 83.247 94.837 83.455 94.78 83.672 94.713 83.906 94.626 84.15 94.529 84.411 94.411 84.686 94.277 84.982 94.129 85.292 93.959 85.625 93.769 85.974 93.559 86.346 93.328 86.741 93.082 87.161 92.964 87.361 92.851 87.56 92.743 87.755 92.641 87.95 92.543 88.144 92.456 88.335 92.369 88.525 92.292 88.711 92.215 88.902 92.148 89.083 92.087 89.269 92.025 89.451 91.974 89.628 91.928 89.805 91.881 89.982 91.845 90.155 91.81 90.328 91.784 90.5 91.758 90.669 91.743 90.837 91.728 91.001 91.717 91.165 91.712 91.328 91.712 91.488 91.712 91.647 91.722 91.802 91.733 91.957 91.748 92.112 91.769 92.263 91.794 92.409 91.825 92.559 91.856 92.706 91.892 92.847 91.933 92.989 91.974 93.131 92.02 93.268 92.071 93.405 92.128 93.543 92.184 93.675 92.246 93.804 92.307 93.932 92.379 94.061 92.451 94.189 92.523 94.309 92.6 94.433 92.682 94.552 92.764 94.672 92.851 94.787 92.938 94.902 93.031 95.013 93.123 95.124 93.22 95.234 93.318 95.341 93.421 95.442 93.528 95.549 93.636 95.646 93.744 95.748 93.857 95.845 93.969 95.938 94.082 96.031 94.323 96.213 94.565 96.386 94.308 95.761 94.195 95.469 94.088 95.19 93.99 94.924 93.898 94.667 93.816 94.424 93.744 94.185 93.682 93.95 93.631 93.729 93.585 93.507 93.554 93.29 93.528 93.078 93.513 92.865 93.508 92.652 93.518 92.44 93.533 92.227 93.564 92.01 93.6 91.793 93.651 91.568 93.713 91.337 93.785 91.098 93.867 90.855 93.964 90.598 94.072 90.332 94.19 90.053 94.323 89.765 94.467 89.46 94.621 89.145 94.79 88.809 94.975 88.459 95.165 88.087 95.278 87.874 95.385 87.666 95.483 87.458 95.58 87.259 95.668 87.059 95.755 86.86 95.832 86.67 95.909 86.479 95.975 86.293"/><path class="cls-3" d="M66.7888,80.01441a1.08178,1.08178,0,0,0-.91183.49767c-.79492,1.22579-4.75788,7.48334-4.75788,10.1988a5.66972,5.66972,0,0,0,11.33943,0c0-2.71546-3.96128-8.973-4.75621-10.1988A1.0868,1.0868,0,0,0,66.7888,80.01441Z"/><path class="cls-3" d="M66.82187,2.67288a64.149,64.149,0,1,0,64.149,64.149A64.15227,64.15227,0,0,0,66.82187,2.67288Zm43.54277,107.69176A61.59235,61.59235,0,1,1,66.82187,5.23883a61.545,61.545,0,0,1,61.583,61.583,61.41146,61.41146,0,0,1-18.04026,43.54277Z"/><path class="cls-3" d="M66.82187,18.10259A50.84711,50.84711,0,1,0,117.669,68.9497,50.84711,50.84711,0,0,0,66.82187,18.10259ZM40.406,98.678A10.4805,10.4805,0,1,1,50.88647,88.19751,10.48049,10.48049,0,0,1,40.406,98.678Zm26.38284,0A10.4805,10.4805,0,1,1,77.2693,88.19751,10.48049,10.48049,0,0,1,66.7888,98.678Zm4.83269-36.42231c.01382.17975.02765.36643.02765.54618a4.83952,4.83952,0,1,1-4.83952-4.83954c.17975,0,.36642.01383.54618.02765l12.76251-9.70671,1.20989,1.20989Zm8.35008-23.50645-2.10173-1.20988,2.37135-4.12744a29.04739,29.04739,0,0,0-12.22326-3.24938v4.81187H65.59818V30.16252a28.81527,28.81527,0,0,0-12.21635,3.2494l2.39211,4.12744L53.6722,38.74924l-2.39212-4.12743a29.9669,29.9669,0,0,0-5.00544,4.00989,29.14313,29.14313,0,0,0-3.96151,4.92941l4.162,2.3921L45.26525,48.055l-4.162-2.40592a28.93566,28.93566,0,0,0-3.29778,12.31314h4.81187v2.41975h-4.805a28.98344,28.98344,0,0,0,2.60745,10.88927H35.17458a33.88371,33.88371,0,1,1,63.29439,0H93.22463a28.84925,28.84925,0,0,0,2.60675-10.88927H91.01953V57.96217h4.83954A28.93584,28.93584,0,0,0,92.56125,45.649l-4.162,2.40592L87.1894,45.95321l4.14124-2.3921a29.27782,29.27782,0,0,0-3.96153-4.92941,29.966,29.966,0,0,0-5.00543-4.00989ZM93.84894,98.678a10.4805,10.4805,0,1,1,10.48049-10.48049A10.4805,10.4805,0,0,1,93.84894,98.678Z"/><path class="cls-3" d="M43.81924,83.37615a2.57872,2.57872,0,0,1-.29986,2.782c-1.2387-4.69106-4.29857-5.65344-4.29857-5.65344.36109,2.41932-1.31091,5.06626-2.92484,7.04286a5.21307,5.21307,0,0,0-.62485-2.55434c-.11459,1.75208-1.45378,3.18075-1.81644,4.93754-.49139,2.37849.36894,4.11959,3.6329,5.95958a3.92089,3.92089,0,0,1,.30928-4.50894A7.15683,7.15683,0,0,0,38.8817,88.871a2.9487,2.9487,0,0,1,.40662,2.26074,5.70436,5.70436,0,0,0,1.24342-4.27344,7.382,7.382,0,0,1,2.30783,9.032C51.13839,91.19456,44.90409,84.169,43.81924,83.37615Z"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-BLUE@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-BLUE@128.png new file mode 100644 index 0000000000000000000000000000000000000000..b9f4974c9e101ff51549c26beaf7093af346806b Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-BLUE@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-BLUE@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-BLUE@256.png new file mode 100644 index 0000000000000000000000000000000000000000..e9f138d4928e12dba11f11adfdea3576c2f3b633 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-BLUE@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-BLUE@36.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-BLUE@36.png new file mode 100644 index 0000000000000000000000000000000000000000..abe3286cbdb7836aeb118d1f3a2db789941608a9 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-BLUE@36.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-BLUE@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-BLUE@512.png new file mode 100644 index 0000000000000000000000000000000000000000..0d4b58b9e33e456a9e9b5cc554939fc5bd1e29dd Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-BLUE@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-BLUE@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-BLUE@64.png new file mode 100644 index 0000000000000000000000000000000000000000..2dcfbddfedcbcb5a5b27dd6fd0025e9abec5364c Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-BLUE@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-ERROR.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-ERROR.svg new file mode 100644 index 0000000000000000000000000000000000000000..fefc068a4de468a53ccfa24b23db99f6ea3ccce1 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-ERROR.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1{fill:none;}.cls-2{fill:#dce1dd;}.cls-3{fill:#de2116;}</style></defs><title>gas-analyser-2</title><rect class="cls-1" width="133.64375" height="133.64375"/><circle class="cls-2" cx="66.82073" cy="68.95879" r="48.60103"/><polygon class="cls-3" points="91.816 85.439 91.847 85.208 91.862 84.987 91.867 84.774 91.862 84.571 91.841 84.371 91.811 84.185 91.77 84.004 91.718 83.827 91.657 83.658 91.585 83.499 91.503 83.34 91.416 83.193 91.318 83.052 91.21 82.914 91.098 82.782 90.974 82.653 90.846 82.534 90.708 82.418 90.569 82.303 90.42 82.197 90.266 82.095 90.107 81.998 89.943 81.9 90.092 82.193 90.236 82.458 90.364 82.702 90.482 82.937 90.533 83.052 90.579 83.167 90.62 83.282 90.656 83.397 90.687 83.517 90.708 83.636 90.723 83.76 90.728 83.889 90.728 84.021 90.713 84.163 90.692 84.309 90.667 84.464 90.626 84.628 90.574 84.801 90.508 84.982 90.436 85.177 90.349 85.385 90.251 85.602 90.138 85.833 90.01 86.081 89.871 86.342 89.712 86.621 89.543 86.913 89.358 87.223 89.271 87.374 89.184 87.52 89.107 87.666 89.03 87.812 88.958 87.958 88.891 88.1 88.83 88.242 88.768 88.379 88.712 88.521 88.666 88.658 88.614 88.795 88.573 88.928 88.532 89.061 88.496 89.194 88.466 89.327 88.44 89.455 88.414 89.584 88.394 89.712 88.373 89.836 88.358 89.96 88.348 90.084 88.343 90.208 88.337 90.328 88.337 90.447 88.343 90.562 88.348 90.682 88.353 90.797 88.368 90.912 88.384 91.023 88.399 91.134 88.419 91.244 88.445 91.351 88.471 91.461 88.502 91.568 88.568 91.771 88.645 91.975 88.738 92.17 88.835 92.365 88.943 92.546 89.061 92.728 89.184 92.9 89.317 93.073 89.461 93.233 89.61 93.392 89.769 93.543 89.933 93.689 90.102 93.83 90.282 93.963 90.461 94.092 90.272 93.627 90.107 93.206 90.03 93.007 89.964 92.816 89.907 92.63 89.851 92.453 89.805 92.281 89.764 92.112 89.733 91.948 89.707 91.789 89.692 91.63 89.682 91.47 89.676 91.315 89.682 91.156 89.697 90.996 89.717 90.837 89.743 90.673 89.784 90.505 89.825 90.336 89.882 90.159 89.943 89.973 90.015 89.783 90.097 89.588 90.184 89.38 90.282 89.163 90.39 88.937 90.508 88.702 90.631 88.454 90.913 87.914 91.072 87.6 91.216 87.299 91.349 87.002 91.462 86.718 91.559 86.444 91.647 86.178 91.718 85.921 91.775 85.678 91.816 85.439"/><polygon class="cls-3" points="99.399 85.058 99.368 84.867 99.327 84.686 99.275 84.509 99.214 84.34 99.142 84.181 99.06 84.026 98.973 83.875 98.875 83.734 98.768 83.596 98.655 83.464 98.532 83.335 98.403 83.216 98.27 83.1 98.126 82.99 97.978 82.879 97.824 82.777 97.665 82.68 97.506 82.582 97.649 82.875 97.793 83.14 97.921 83.384 98.039 83.618 98.09 83.734 98.137 83.849 98.178 83.964 98.214 84.079 98.244 84.199 98.265 84.318 98.28 84.442 98.285 84.571 98.285 84.708 98.27 84.845 98.249 84.991 98.224 85.146 98.183 85.31 98.131 85.483 98.065 85.664 97.993 85.859 97.906 86.067 97.808 86.284 97.695 86.515 97.567 86.763 97.429 87.024 97.27 87.303 97.1 87.595 96.915 87.905 96.828 88.056 96.741 88.202 96.664 88.348 96.587 88.494 96.515 88.64 96.449 88.782 96.387 88.924 96.325 89.065 96.274 89.203 96.223 89.34 96.172 89.477 96.131 89.61 96.09 89.743 96.054 89.876 96.023 90.009 95.997 90.137 95.972 90.266 95.951 90.394 95.93 90.518 95.915 90.642 95.905 90.766 95.9 90.89 95.895 91.01 95.895 91.129 95.9 91.249 95.905 91.364 95.91 91.479 95.925 91.594 95.941 91.705 95.956 91.816 95.977 91.926 96.002 92.033 96.028 92.143 96.059 92.25 96.125 92.453 96.202 92.657 96.295 92.856 96.392 93.047 96.5 93.233 96.618 93.41 96.741 93.587 96.874 93.755 97.018 93.919 97.167 94.074 97.326 94.225 97.49 94.371 97.659 94.512 97.839 94.645 98.019 94.774 97.829 94.309 97.665 93.888 97.593 93.689 97.521 93.498 97.464 93.312 97.408 93.135 97.362 92.962 97.321 92.794 97.29 92.63 97.264 92.471 97.249 92.312 97.239 92.152 97.234 91.997 97.239 91.838 97.254 91.678 97.275 91.519 97.3 91.355 97.341 91.187 97.382 91.018 97.439 90.841 97.5 90.655 97.572 90.465 97.654 90.27 97.741 90.062 97.839 89.845 97.947 89.619 98.065 89.384 98.188 89.136 98.47 88.596 98.629 88.282 98.778 87.981 98.906 87.684 99.019 87.4 99.116 87.126 99.204 86.86 99.275 86.603 99.332 86.36 99.373 86.121 99.404 85.89 99.419 85.669 99.424 85.456 99.419 85.253 99.399 85.058"/><polygon class="cls-3" points="96.007 86.293 96.074 86.112 96.131 85.93 96.187 85.753 96.238 85.58 96.279 85.412 96.32 85.244 96.356 85.08 96.387 84.92 96.413 84.761 96.438 84.606 96.454 84.451 96.469 84.3 96.479 84.154 96.485 84.013 96.485 83.871 96.479 83.729 96.474 83.596 96.464 83.459 96.449 83.331 96.428 83.202 96.408 83.074 96.382 82.95 96.351 82.83 96.32 82.711 96.284 82.596 96.243 82.48 96.202 82.37 96.156 82.259 96.105 82.153 96.054 82.046 95.997 81.945 95.941 81.843 95.874 81.745 95.812 81.648 95.746 81.55 95.674 81.457 95.602 81.369 95.525 81.28 95.448 81.192 95.366 81.103 95.284 81.023 95.11 80.86 94.93 80.7 94.74 80.554 94.54 80.408 94.335 80.271 94.119 80.138 93.904 80.009 94.001 80.209 94.104 80.399 94.294 80.753 94.468 81.085 94.55 81.245 94.622 81.4 94.694 81.555 94.756 81.71 94.812 81.865 94.858 82.02 94.899 82.179 94.925 82.339 94.945 82.507 94.956 82.68 94.951 82.861 94.935 83.047 94.91 83.247 94.868 83.455 94.812 83.672 94.745 83.906 94.658 84.15 94.561 84.411 94.443 84.686 94.309 84.982 94.16 85.292 93.991 85.625 93.801 85.974 93.591 86.346 93.36 86.741 93.114 87.161 92.996 87.361 92.883 87.56 92.775 87.755 92.673 87.95 92.575 88.144 92.488 88.335 92.401 88.525 92.324 88.711 92.247 88.902 92.18 89.083 92.119 89.269 92.057 89.451 92.006 89.628 91.959 89.805 91.913 89.982 91.877 90.155 91.841 90.328 91.816 90.5 91.79 90.669 91.775 90.837 91.759 91.001 91.749 91.165 91.744 91.328 91.744 91.488 91.744 91.647 91.754 91.802 91.765 91.957 91.78 92.112 91.8 92.263 91.826 92.409 91.857 92.559 91.888 92.706 91.924 92.847 91.965 92.989 92.006 93.131 92.052 93.268 92.103 93.405 92.16 93.543 92.216 93.675 92.278 93.804 92.339 93.932 92.411 94.061 92.483 94.189 92.555 94.309 92.632 94.433 92.714 94.552 92.796 94.672 92.883 94.787 92.97 94.902 93.063 95.013 93.155 95.124 93.252 95.234 93.35 95.341 93.452 95.442 93.56 95.549 93.668 95.646 93.776 95.748 93.889 95.845 94.001 95.938 94.114 96.031 94.355 96.213 94.597 96.386 94.34 95.761 94.227 95.469 94.119 95.19 94.022 94.924 93.93 94.667 93.847 94.424 93.776 94.185 93.714 93.95 93.663 93.729 93.617 93.507 93.586 93.29 93.56 93.078 93.545 92.865 93.54 92.652 93.55 92.44 93.565 92.227 93.596 92.01 93.632 91.793 93.683 91.568 93.745 91.337 93.817 91.098 93.899 90.855 93.996 90.598 94.104 90.332 94.222 90.053 94.355 89.765 94.499 89.46 94.653 89.145 94.822 88.809 95.007 88.459 95.197 88.087 95.31 87.874 95.417 87.666 95.515 87.458 95.612 87.259 95.7 87.059 95.787 86.86 95.864 86.67 95.941 86.479 96.007 86.293"/><path class="cls-3" d="M66.82072,80.01441a1.08179,1.08179,0,0,0-.91183.49767C65.114,81.73787,61.151,87.99542,61.151,90.71088a5.66972,5.66972,0,0,0,11.33944,0c0-2.71546-3.96129-8.973-4.75622-10.1988A1.0868,1.0868,0,0,0,66.82072,80.01441Z"/><path class="cls-3" d="M66.8538,2.67288a64.149,64.149,0,1,0,64.149,64.149A64.15227,64.15227,0,0,0,66.8538,2.67288Zm43.54276,107.69176A61.59235,61.59235,0,1,1,66.85379,5.23883a61.545,61.545,0,0,1,61.583,61.583,61.41153,61.41153,0,0,1-18.04027,43.54277Z"/><path class="cls-3" d="M66.8538,18.10259A50.84711,50.84711,0,1,0,117.70089,68.9497,50.84712,50.84712,0,0,0,66.8538,18.10259ZM40.43788,98.678A10.4805,10.4805,0,1,1,50.91839,88.19751,10.48049,10.48049,0,0,1,40.43788,98.678Zm26.38284,0A10.4805,10.4805,0,1,1,77.30123,88.19751,10.4805,10.4805,0,0,1,66.82072,98.678Zm4.83269-36.42231c.01383.17975.02765.36643.02765.54618a4.83952,4.83952,0,1,1-4.83952-4.83954c.17975,0,.36643.01383.54618.02765l12.76252-9.70671,1.20988,1.20989Zm8.35008-23.50645-2.10172-1.20988,2.37135-4.12744a29.04747,29.04747,0,0,0-12.22326-3.24938v4.81187H65.63011V30.16252a28.81528,28.81528,0,0,0-12.21636,3.2494l2.39212,4.12744-2.10174,1.20988L51.312,34.62181a29.967,29.967,0,0,0-5.00545,4.00989,29.14313,29.14313,0,0,0-3.96151,4.92941l4.162,2.3921L45.29718,48.055l-4.162-2.40592a28.93567,28.93567,0,0,0-3.29779,12.31314h4.81187v2.41975h-4.805a28.98324,28.98324,0,0,0,2.60744,10.88927H35.2065a33.88371,33.88371,0,1,1,63.29439,0H93.25655a28.84945,28.84945,0,0,0,2.60676-10.88927H91.05146V57.96217H95.891A28.936,28.936,0,0,0,92.59318,45.649l-4.162,2.40592-1.20987-2.10174,4.14124-2.3921A29.27825,29.27825,0,0,0,87.401,38.6317a29.96643,29.96643,0,0,0-5.00543-4.00989ZM93.88086,98.678a10.4805,10.4805,0,1,1,10.48049-10.48049A10.4805,10.4805,0,0,1,93.88086,98.678Z"/><path class="cls-3" d="M43.85116,83.37615a2.5787,2.5787,0,0,1-.29986,2.782c-1.2387-4.69106-4.29857-5.65344-4.29857-5.65344.3611,2.41932-1.31091,5.06626-2.92484,7.04286A5.21307,5.21307,0,0,0,35.703,84.9932c-.11459,1.75208-1.45378,3.18075-1.81644,4.93754-.49139,2.37849.36894,4.11959,3.63291,5.95958a3.92088,3.92088,0,0,1,.30927-4.50894A7.157,7.157,0,0,0,38.91363,88.871a2.94873,2.94873,0,0,1,.40661,2.26074,5.70427,5.70427,0,0,0,1.24342-4.27344,7.382,7.382,0,0,1,2.30784,9.032C51.17032,91.19456,44.936,84.169,43.85116,83.37615Z"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-ERROR@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-ERROR@128.png new file mode 100644 index 0000000000000000000000000000000000000000..79d2ed8101989159d1dc121b534c3247b70190ed Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-ERROR@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-ERROR@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-ERROR@256.png new file mode 100644 index 0000000000000000000000000000000000000000..ef85a9fbb2ffce232c6f9d32aa059bee4ad35c8f Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-ERROR@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-ERROR@36.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-ERROR@36.png new file mode 100644 index 0000000000000000000000000000000000000000..0caba235d70fec697ba5a874ae2f3e4019ad93c7 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-ERROR@36.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-ERROR@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-ERROR@512.png new file mode 100644 index 0000000000000000000000000000000000000000..f68e2a67023eac25faa50b8e7079fa6bd7d192bd Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-ERROR@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-ERROR@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-ERROR@64.png new file mode 100644 index 0000000000000000000000000000000000000000..40dd896c943680d8ecf25762ec5934b27cd83d41 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-ERROR@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-INVALID.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-INVALID.svg new file mode 100644 index 0000000000000000000000000000000000000000..e9639a9880079f18b73c9a43b7bf9e7e8e77a8ca --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-INVALID.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1{fill:none;}.cls-2{fill:#dce1dd;}.cls-3{fill:#694da4;}</style></defs><title>gas-analyser-2</title><rect class="cls-1" width="133.64375" height="133.64375"/><circle class="cls-2" cx="66.78881" cy="68.95879" r="48.60103"/><polygon class="cls-3" points="91.784 85.439 91.815 85.208 91.83 84.987 91.835 84.774 91.83 84.571 91.81 84.371 91.779 84.185 91.738 84.004 91.686 83.827 91.625 83.658 91.553 83.499 91.471 83.34 91.384 83.193 91.286 83.052 91.179 82.914 91.066 82.782 90.943 82.653 90.814 82.534 90.676 82.418 90.537 82.303 90.388 82.197 90.235 82.095 90.075 81.998 89.911 81.9 90.06 82.193 90.204 82.458 90.332 82.702 90.45 82.937 90.501 83.052 90.547 83.167 90.589 83.282 90.624 83.397 90.655 83.517 90.676 83.636 90.691 83.76 90.696 83.889 90.696 84.021 90.681 84.163 90.66 84.309 90.635 84.464 90.594 84.628 90.542 84.801 90.476 84.982 90.404 85.177 90.317 85.385 90.219 85.602 90.106 85.833 89.978 86.081 89.839 86.342 89.68 86.621 89.511 86.913 89.326 87.223 89.239 87.374 89.152 87.52 89.075 87.666 88.998 87.812 88.926 87.958 88.86 88.1 88.798 88.242 88.736 88.379 88.68 88.521 88.634 88.658 88.582 88.795 88.541 88.928 88.5 89.061 88.465 89.194 88.434 89.327 88.408 89.455 88.382 89.584 88.362 89.712 88.341 89.836 88.326 89.96 88.316 90.084 88.311 90.208 88.305 90.328 88.305 90.447 88.311 90.562 88.316 90.682 88.321 90.797 88.336 90.912 88.352 91.023 88.367 91.134 88.388 91.244 88.413 91.351 88.439 91.461 88.47 91.568 88.536 91.771 88.613 91.975 88.706 92.17 88.803 92.365 88.911 92.546 89.029 92.728 89.152 92.9 89.285 93.073 89.429 93.233 89.578 93.392 89.737 93.543 89.901 93.689 90.07 93.83 90.25 93.963 90.429 94.092 90.24 93.627 90.075 93.206 89.999 93.007 89.932 92.816 89.875 92.63 89.819 92.453 89.773 92.281 89.732 92.112 89.701 91.948 89.675 91.789 89.66 91.63 89.65 91.47 89.645 91.315 89.65 91.156 89.665 90.996 89.686 90.837 89.711 90.673 89.752 90.505 89.793 90.336 89.85 90.159 89.911 89.973 89.983 89.783 90.065 89.588 90.152 89.38 90.25 89.163 90.358 88.937 90.476 88.702 90.599 88.454 90.881 87.914 91.04 87.6 91.184 87.299 91.317 87.002 91.43 86.718 91.527 86.444 91.615 86.178 91.686 85.921 91.743 85.678 91.784 85.439"/><polygon class="cls-3" points="99.367 85.058 99.336 84.867 99.295 84.686 99.244 84.509 99.182 84.34 99.11 84.181 99.028 84.026 98.941 83.875 98.843 83.734 98.736 83.596 98.623 83.464 98.5 83.335 98.371 83.216 98.238 83.1 98.094 82.99 97.946 82.879 97.792 82.777 97.633 82.68 97.474 82.582 97.617 82.875 97.761 83.14 97.889 83.384 98.007 83.618 98.058 83.734 98.105 83.849 98.146 83.964 98.182 84.079 98.212 84.199 98.233 84.318 98.248 84.442 98.253 84.571 98.253 84.708 98.238 84.845 98.217 84.991 98.192 85.146 98.151 85.31 98.1 85.483 98.033 85.664 97.961 85.859 97.874 86.067 97.776 86.284 97.663 86.515 97.535 86.763 97.397 87.024 97.238 87.303 97.068 87.595 96.884 87.905 96.796 88.056 96.709 88.202 96.632 88.348 96.555 88.494 96.483 88.64 96.417 88.782 96.355 88.924 96.294 89.065 96.242 89.203 96.191 89.34 96.14 89.477 96.099 89.61 96.058 89.743 96.022 89.876 95.991 90.009 95.965 90.137 95.94 90.266 95.919 90.394 95.899 90.518 95.883 90.642 95.873 90.766 95.868 90.89 95.863 91.01 95.863 91.129 95.868 91.249 95.873 91.364 95.878 91.479 95.893 91.594 95.909 91.705 95.924 91.816 95.945 91.926 95.97 92.033 95.996 92.143 96.027 92.25 96.094 92.453 96.17 92.657 96.263 92.856 96.36 93.047 96.468 93.233 96.586 93.41 96.709 93.587 96.843 93.755 96.986 93.919 97.135 94.074 97.294 94.225 97.458 94.371 97.628 94.512 97.807 94.645 97.987 94.774 97.797 94.309 97.633 93.888 97.561 93.689 97.489 93.498 97.433 93.312 97.376 93.135 97.33 92.962 97.289 92.794 97.258 92.63 97.232 92.471 97.217 92.312 97.207 92.152 97.202 91.997 97.207 91.838 97.222 91.678 97.243 91.519 97.268 91.355 97.309 91.187 97.35 91.018 97.407 90.841 97.468 90.655 97.54 90.465 97.622 90.27 97.71 90.062 97.807 89.845 97.915 89.619 98.033 89.384 98.156 89.136 98.438 88.596 98.597 88.282 98.746 87.981 98.874 87.684 98.987 87.4 99.085 87.126 99.172 86.86 99.244 86.603 99.3 86.36 99.341 86.121 99.372 85.89 99.387 85.669 99.392 85.456 99.387 85.253 99.367 85.058"/><polygon class="cls-3" points="95.975 86.293 96.042 86.112 96.099 85.93 96.155 85.753 96.206 85.58 96.247 85.412 96.288 85.244 96.324 85.08 96.355 84.92 96.381 84.761 96.406 84.606 96.422 84.451 96.437 84.3 96.448 84.154 96.453 84.013 96.453 83.871 96.448 83.729 96.442 83.596 96.432 83.459 96.417 83.331 96.396 83.202 96.376 83.074 96.35 82.95 96.319 82.83 96.288 82.711 96.253 82.596 96.211 82.48 96.17 82.37 96.124 82.259 96.073 82.153 96.022 82.046 95.965 81.945 95.909 81.843 95.842 81.745 95.781 81.648 95.714 81.55 95.642 81.457 95.57 81.369 95.493 81.28 95.416 81.192 95.334 81.103 95.252 81.023 95.078 80.86 94.898 80.7 94.708 80.554 94.508 80.408 94.303 80.271 94.088 80.138 93.872 80.009 93.969 80.209 94.072 80.399 94.262 80.753 94.436 81.085 94.518 81.245 94.59 81.4 94.662 81.555 94.724 81.71 94.78 81.865 94.826 82.02 94.867 82.179 94.893 82.339 94.914 82.507 94.924 82.68 94.919 82.861 94.903 83.047 94.878 83.247 94.837 83.455 94.78 83.672 94.713 83.906 94.626 84.15 94.529 84.411 94.411 84.686 94.277 84.982 94.129 85.292 93.959 85.625 93.769 85.974 93.559 86.346 93.328 86.741 93.082 87.161 92.964 87.361 92.851 87.56 92.743 87.755 92.641 87.95 92.543 88.144 92.456 88.335 92.369 88.525 92.292 88.711 92.215 88.902 92.148 89.083 92.087 89.269 92.025 89.451 91.974 89.628 91.928 89.805 91.881 89.982 91.845 90.155 91.81 90.328 91.784 90.5 91.758 90.669 91.743 90.837 91.728 91.001 91.717 91.165 91.712 91.328 91.712 91.488 91.712 91.647 91.722 91.802 91.733 91.957 91.748 92.112 91.769 92.263 91.794 92.409 91.825 92.559 91.856 92.706 91.892 92.847 91.933 92.989 91.974 93.131 92.02 93.268 92.071 93.405 92.128 93.543 92.184 93.675 92.246 93.804 92.307 93.932 92.379 94.061 92.451 94.189 92.523 94.309 92.6 94.433 92.682 94.552 92.764 94.672 92.851 94.787 92.938 94.902 93.031 95.013 93.123 95.124 93.22 95.234 93.318 95.341 93.421 95.442 93.528 95.549 93.636 95.646 93.744 95.748 93.857 95.845 93.969 95.938 94.082 96.031 94.323 96.213 94.565 96.386 94.308 95.761 94.195 95.469 94.088 95.19 93.99 94.924 93.898 94.667 93.816 94.424 93.744 94.185 93.682 93.95 93.631 93.729 93.585 93.507 93.554 93.29 93.528 93.078 93.513 92.865 93.508 92.652 93.518 92.44 93.533 92.227 93.564 92.01 93.6 91.793 93.651 91.568 93.713 91.337 93.785 91.098 93.867 90.855 93.964 90.598 94.072 90.332 94.19 90.053 94.323 89.765 94.467 89.46 94.621 89.145 94.79 88.809 94.975 88.459 95.165 88.087 95.278 87.874 95.385 87.666 95.483 87.458 95.58 87.259 95.668 87.059 95.755 86.86 95.832 86.67 95.909 86.479 95.975 86.293"/><path class="cls-3" d="M66.7888,80.01441a1.08179,1.08179,0,0,0-.91183.49767c-.79491,1.22579-4.75788,7.48334-4.75788,10.1988a5.66972,5.66972,0,0,0,11.33944,0c0-2.71546-3.96129-8.973-4.75622-10.1988A1.08679,1.08679,0,0,0,66.7888,80.01441Z"/><path class="cls-3" d="M66.82188,2.67288a64.149,64.149,0,1,0,64.149,64.149A64.15227,64.15227,0,0,0,66.82188,2.67288Zm43.54276,107.69176A61.59235,61.59235,0,1,1,66.82187,5.23883a61.545,61.545,0,0,1,61.583,61.583,61.41153,61.41153,0,0,1-18.04027,43.54277Z"/><path class="cls-3" d="M66.82188,18.10259A50.84711,50.84711,0,1,0,117.669,68.9497,50.84711,50.84711,0,0,0,66.82188,18.10259ZM40.406,98.678a10.4805,10.4805,0,1,1,10.4805-10.48049A10.48049,10.48049,0,0,1,40.406,98.678Zm26.38283,0A10.4805,10.4805,0,1,1,77.26931,88.19751,10.4805,10.4805,0,0,1,66.7888,98.678Zm4.83269-36.42231c.01383.17975.02765.36643.02765.54618a4.83952,4.83952,0,1,1-4.83952-4.83954c.17975,0,.36643.01383.54618.02765l12.76252-9.70671,1.20988,1.20989Zm8.35008-23.50645-2.10172-1.20988,2.37135-4.12744a29.04747,29.04747,0,0,0-12.22326-3.24938v4.81187H65.59819V30.16252a28.81532,28.81532,0,0,0-12.21636,3.2494L55.774,37.53936l-2.10174,1.20988-2.39212-4.12743a29.967,29.967,0,0,0-5.00545,4.00989,29.14313,29.14313,0,0,0-3.96151,4.92941l4.162,2.3921L45.26526,48.055l-4.162-2.40592a28.93551,28.93551,0,0,0-3.29778,12.31314h4.81187v2.41975h-4.805a28.98343,28.98343,0,0,0,2.60744,10.88927H35.17458a33.88371,33.88371,0,1,1,63.29439,0H93.22463a28.84945,28.84945,0,0,0,2.60676-10.88927H91.01954V57.96217h4.83954A28.936,28.936,0,0,0,92.56126,45.649l-4.162,2.40592L87.1894,45.95321l4.14124-2.3921a29.27825,29.27825,0,0,0-3.96152-4.92941,29.96643,29.96643,0,0,0-5.00543-4.00989ZM93.849,98.678a10.4805,10.4805,0,1,1,10.48048-10.48049A10.4805,10.4805,0,0,1,93.849,98.678Z"/><path class="cls-3" d="M43.81925,83.37615a2.57872,2.57872,0,0,1-.29987,2.782c-1.2387-4.69106-4.29856-5.65344-4.29856-5.65344.36109,2.41932-1.31091,5.06626-2.92484,7.04286a5.21318,5.21318,0,0,0-.62485-2.55434c-.1146,1.75208-1.45379,3.18075-1.81645,4.93754-.49139,2.37849.36894,4.11959,3.63291,5.95958a3.92089,3.92089,0,0,1,.30927-4.50894A7.157,7.157,0,0,0,38.88171,88.871a2.94873,2.94873,0,0,1,.40661,2.26074,5.70427,5.70427,0,0,0,1.24342-4.27344,7.382,7.382,0,0,1,2.30784,9.032C51.1384,91.19456,44.90409,84.169,43.81925,83.37615Z"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-INVALID@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-INVALID@128.png new file mode 100644 index 0000000000000000000000000000000000000000..0b2977f237414fb3e77c4f9e2fd53efa12e41e6b Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-INVALID@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-INVALID@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-INVALID@256.png new file mode 100644 index 0000000000000000000000000000000000000000..c1ea3813200425577e7d6021405fc56f72e7394d Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-INVALID@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-INVALID@36.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-INVALID@36.png new file mode 100644 index 0000000000000000000000000000000000000000..fef1d0e96c0c3cb82c2e3657cd9ee91b0e86ce01 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-INVALID@36.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-INVALID@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-INVALID@512.png new file mode 100644 index 0000000000000000000000000000000000000000..cfd230b2214a85629afb68ff5b83ec29bd8f2385 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-INVALID@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-INVALID@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-INVALID@64.png new file mode 100644 index 0000000000000000000000000000000000000000..9c60c8eb84ddb54db914c1234bd4e7be6fa33feb Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-INVALID@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NEUTRAL.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NEUTRAL.svg new file mode 100644 index 0000000000000000000000000000000000000000..afad451b956a3b2a0dc7d740d5006880fd8de9a4 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NEUTRAL.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1{fill:none;}.cls-2{fill:#dce1dd;}</style></defs><title>gas-analyser-2</title><rect class="cls-1" width="133.64375" height="133.64375"/><circle class="cls-2" cx="66.83822" cy="68.95879" r="48.60103"/><polygon points="91.833 85.439 91.864 85.208 91.879 84.987 91.885 84.774 91.879 84.571 91.859 84.371 91.828 84.185 91.787 84.004 91.736 83.827 91.674 83.658 91.602 83.499 91.52 83.34 91.433 83.193 91.336 83.052 91.228 82.914 91.115 82.782 90.992 82.653 90.864 82.534 90.725 82.418 90.587 82.303 90.438 82.197 90.284 82.095 90.125 81.998 89.961 81.9 90.109 82.193 90.253 82.458 90.381 82.702 90.499 82.937 90.551 83.052 90.597 83.167 90.638 83.282 90.674 83.397 90.705 83.517 90.725 83.636 90.741 83.76 90.746 83.889 90.746 84.021 90.73 84.163 90.71 84.309 90.684 84.464 90.643 84.628 90.592 84.801 90.525 84.982 90.453 85.177 90.366 85.385 90.269 85.602 90.156 85.833 90.027 86.081 89.889 86.342 89.73 86.621 89.561 86.913 89.376 87.223 89.289 87.374 89.201 87.52 89.124 87.666 89.047 87.812 88.976 87.958 88.909 88.1 88.847 88.242 88.786 88.379 88.729 88.521 88.683 88.658 88.632 88.795 88.591 88.928 88.55 89.061 88.514 89.194 88.483 89.327 88.457 89.455 88.432 89.584 88.411 89.712 88.391 89.836 88.375 89.96 88.365 90.084 88.36 90.208 88.355 90.328 88.355 90.447 88.36 90.562 88.365 90.682 88.37 90.797 88.386 90.912 88.401 91.023 88.416 91.134 88.437 91.244 88.463 91.351 88.488 91.461 88.519 91.568 88.586 91.771 88.663 91.975 88.755 92.17 88.853 92.365 88.96 92.546 89.078 92.728 89.201 92.9 89.335 93.073 89.478 93.233 89.627 93.392 89.786 93.543 89.95 93.689 90.12 93.83 90.299 93.963 90.479 94.092 90.289 93.627 90.125 93.206 90.048 93.007 89.981 92.816 89.925 92.63 89.868 92.453 89.822 92.281 89.781 92.112 89.75 91.948 89.725 91.789 89.709 91.63 89.699 91.47 89.694 91.315 89.699 91.156 89.714 90.996 89.735 90.837 89.761 90.673 89.802 90.505 89.843 90.336 89.899 90.159 89.961 89.973 90.033 89.783 90.115 89.588 90.202 89.38 90.299 89.163 90.407 88.937 90.525 88.702 90.648 88.454 90.93 87.914 91.089 87.6 91.233 87.299 91.366 87.002 91.479 86.718 91.577 86.444 91.664 86.178 91.736 85.921 91.792 85.678 91.833 85.439"/><polygon points="99.416 85.058 99.385 84.867 99.344 84.686 99.293 84.509 99.231 84.34 99.16 84.181 99.078 84.026 98.99 83.875 98.893 83.734 98.785 83.596 98.672 83.464 98.549 83.335 98.421 83.216 98.287 83.1 98.144 82.99 97.995 82.879 97.841 82.777 97.682 82.68 97.523 82.582 97.667 82.875 97.81 83.14 97.939 83.384 98.057 83.618 98.108 83.734 98.154 83.849 98.195 83.964 98.231 84.079 98.262 84.199 98.282 84.318 98.298 84.442 98.303 84.571 98.303 84.708 98.287 84.845 98.267 84.991 98.241 85.146 98.2 85.31 98.149 85.483 98.082 85.664 98.01 85.859 97.923 86.067 97.826 86.284 97.713 86.515 97.585 86.763 97.446 87.024 97.287 87.303 97.118 87.595 96.933 87.905 96.846 88.056 96.759 88.202 96.682 88.348 96.605 88.494 96.533 88.64 96.466 88.782 96.405 88.924 96.343 89.065 96.292 89.203 96.24 89.34 96.189 89.477 96.148 89.61 96.107 89.743 96.071 89.876 96.04 90.009 96.015 90.137 95.989 90.266 95.968 90.394 95.948 90.518 95.933 90.642 95.922 90.766 95.917 90.89 95.912 91.01 95.912 91.129 95.917 91.249 95.922 91.364 95.927 91.479 95.943 91.594 95.958 91.705 95.974 91.816 95.994 91.926 96.02 92.033 96.045 92.143 96.076 92.25 96.143 92.453 96.22 92.657 96.312 92.856 96.41 93.047 96.517 93.233 96.635 93.41 96.759 93.587 96.892 93.755 97.036 93.919 97.184 94.074 97.343 94.225 97.508 94.371 97.677 94.512 97.856 94.645 98.036 94.774 97.846 94.309 97.682 93.888 97.61 93.689 97.538 93.498 97.482 93.312 97.426 93.135 97.379 92.962 97.338 92.794 97.308 92.63 97.282 92.471 97.267 92.312 97.256 92.152 97.251 91.997 97.256 91.838 97.272 91.678 97.292 91.519 97.318 91.355 97.359 91.187 97.4 91.018 97.456 90.841 97.518 90.655 97.59 90.465 97.672 90.27 97.759 90.062 97.856 89.845 97.964 89.619 98.082 89.384 98.205 89.136 98.488 88.596 98.647 88.282 98.795 87.981 98.924 87.684 99.036 87.4 99.134 87.126 99.221 86.86 99.293 86.603 99.349 86.36 99.39 86.121 99.421 85.89 99.437 85.669 99.442 85.456 99.437 85.253 99.416 85.058"/><polygon points="96.025 86.293 96.092 86.112 96.148 85.93 96.204 85.753 96.256 85.58 96.297 85.412 96.338 85.244 96.374 85.08 96.405 84.92 96.43 84.761 96.456 84.606 96.471 84.451 96.487 84.3 96.497 84.154 96.502 84.013 96.502 83.871 96.497 83.729 96.492 83.596 96.482 83.459 96.466 83.331 96.446 83.202 96.425 83.074 96.399 82.95 96.369 82.83 96.338 82.711 96.302 82.596 96.261 82.48 96.22 82.37 96.174 82.259 96.122 82.153 96.071 82.046 96.015 81.945 95.958 81.843 95.892 81.745 95.83 81.648 95.763 81.55 95.691 81.457 95.62 81.369 95.543 81.28 95.466 81.192 95.384 81.103 95.302 81.023 95.127 80.86 94.948 80.7 94.758 80.554 94.558 80.408 94.352 80.271 94.137 80.138 93.921 80.009 94.019 80.209 94.121 80.399 94.311 80.753 94.486 81.085 94.568 81.245 94.64 81.4 94.712 81.555 94.773 81.71 94.829 81.865 94.876 82.02 94.917 82.179 94.942 82.339 94.963 82.507 94.973 82.68 94.968 82.861 94.953 83.047 94.927 83.247 94.886 83.455 94.829 83.672 94.763 83.906 94.676 84.15 94.578 84.411 94.46 84.686 94.327 84.982 94.178 85.292 94.009 85.625 93.819 85.974 93.608 86.346 93.378 86.741 93.131 87.161 93.013 87.361 92.9 87.56 92.793 87.755 92.69 87.95 92.593 88.144 92.505 88.335 92.418 88.525 92.341 88.711 92.264 88.902 92.198 89.083 92.136 89.269 92.074 89.451 92.023 89.628 91.977 89.805 91.931 89.982 91.895 90.155 91.859 90.328 91.833 90.5 91.808 90.669 91.792 90.837 91.777 91.001 91.767 91.165 91.761 91.328 91.761 91.488 91.761 91.647 91.772 91.802 91.782 91.957 91.797 92.112 91.818 92.263 91.844 92.409 91.874 92.559 91.905 92.706 91.941 92.847 91.982 92.989 92.023 93.131 92.069 93.268 92.121 93.405 92.177 93.543 92.234 93.675 92.295 93.804 92.357 93.932 92.428 94.061 92.5 94.189 92.572 94.309 92.649 94.433 92.731 94.552 92.813 94.672 92.9 94.787 92.988 94.902 93.08 95.013 93.172 95.124 93.27 95.234 93.367 95.341 93.47 95.442 93.578 95.549 93.685 95.646 93.793 95.748 93.906 95.845 94.019 95.938 94.132 96.031 94.373 96.213 94.614 96.386 94.358 95.761 94.245 95.469 94.137 95.19 94.039 94.924 93.947 94.667 93.865 94.424 93.793 94.185 93.732 93.95 93.68 93.729 93.634 93.507 93.603 93.29 93.578 93.078 93.562 92.865 93.557 92.652 93.567 92.44 93.583 92.227 93.614 92.01 93.65 91.793 93.701 91.568 93.762 91.337 93.834 91.098 93.916 90.855 94.014 90.598 94.121 90.332 94.24 90.053 94.373 89.765 94.517 89.46 94.67 89.145 94.84 88.809 95.024 88.459 95.214 88.087 95.327 87.874 95.435 87.666 95.532 87.458 95.63 87.259 95.717 87.059 95.804 86.86 95.881 86.67 95.958 86.479 96.025 86.293"/><path d="M66.83821,80.01441a1.08178,1.08178,0,0,0-.91183.49767c-.79491,1.22579-4.75788,7.48334-4.75788,10.1988a5.66972,5.66972,0,0,0,11.33943,0c0-2.71546-3.96128-8.973-4.75621-10.1988A1.0868,1.0868,0,0,0,66.83821,80.01441Z"/><path d="M66.87129,2.67288a64.149,64.149,0,1,0,64.149,64.149A64.15227,64.15227,0,0,0,66.87129,2.67288Zm43.54276,107.69176A61.59235,61.59235,0,1,1,66.87128,5.23883a61.545,61.545,0,0,1,61.583,61.583,61.41153,61.41153,0,0,1-18.04027,43.54277Z"/><path d="M66.87129,18.10259A50.84711,50.84711,0,1,0,117.71838,68.9497,50.84712,50.84712,0,0,0,66.87129,18.10259ZM40.45537,98.678A10.4805,10.4805,0,1,1,50.93588,88.19751,10.48049,10.48049,0,0,1,40.45537,98.678Zm26.38284,0a10.4805,10.4805,0,1,1,10.4805-10.48049A10.48049,10.48049,0,0,1,66.83821,98.678ZM71.6709,62.25569c.01382.17975.02765.36643.02765.54618A4.83952,4.83952,0,1,1,66.859,57.96233c.17975,0,.36643.01383.54618.02765l12.76251-9.70671,1.20989,1.20989ZM80.021,38.74924l-2.10173-1.20988,2.37136-4.12744a29.04747,29.04747,0,0,0-12.22327-3.24938v4.81187H65.64759V30.16252a28.81527,28.81527,0,0,0-12.21635,3.2494l2.39212,4.12744-2.10175,1.20988-2.39212-4.12743a29.96731,29.96731,0,0,0-5.00544,4.00989,29.14313,29.14313,0,0,0-3.96151,4.92941l4.162,2.3921L45.31466,48.055l-4.162-2.40592a28.93552,28.93552,0,0,0-3.29779,12.31314h4.81187v2.41975h-4.805a28.98324,28.98324,0,0,0,2.60744,10.88927H35.224a33.88371,33.88371,0,1,1,63.29439,0H93.274A28.84945,28.84945,0,0,0,95.8808,60.38192H91.06894V57.96217h4.83954A28.93584,28.93584,0,0,0,92.61066,45.649l-4.162,2.40592-1.20986-2.10174,4.14124-2.3921a29.27782,29.27782,0,0,0-3.96153-4.92941,29.96636,29.96636,0,0,0-5.00542-4.00989ZM93.89835,98.678a10.4805,10.4805,0,1,1,10.48049-10.48049A10.4805,10.4805,0,0,1,93.89835,98.678Z"/><path d="M43.86865,83.37615a2.57872,2.57872,0,0,1-.29986,2.782c-1.2387-4.69106-4.29857-5.65344-4.29857-5.65344.36109,2.41932-1.31091,5.06626-2.92484,7.04286a5.21307,5.21307,0,0,0-.62485-2.55434c-.11459,1.75208-1.45378,3.18075-1.81644,4.93754-.49139,2.37849.36894,4.11959,3.6329,5.95958a3.92089,3.92089,0,0,1,.30928-4.50894A7.157,7.157,0,0,0,38.93112,88.871a2.94873,2.94873,0,0,1,.40661,2.26074,5.70431,5.70431,0,0,0,1.24342-4.27344,7.382,7.382,0,0,1,2.30784,9.032C51.1878,91.19456,44.9535,84.169,43.86865,83.37615Z"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NEUTRAL@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NEUTRAL@128.png new file mode 100644 index 0000000000000000000000000000000000000000..c465a71e925388a47987adc4b56da3125f744eef Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NEUTRAL@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NEUTRAL@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NEUTRAL@256.png new file mode 100644 index 0000000000000000000000000000000000000000..481b2574f36846e6d02d601f253e85b0a72cfe7d Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NEUTRAL@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NEUTRAL@36.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NEUTRAL@36.png new file mode 100644 index 0000000000000000000000000000000000000000..56e41e64fba606e832099795bb200441982ef585 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NEUTRAL@36.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NEUTRAL@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NEUTRAL@512.png new file mode 100644 index 0000000000000000000000000000000000000000..2df94a3dd8778e53d1edace5300c0e4da9a49ffd Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NEUTRAL@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NEUTRAL@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NEUTRAL@64.png new file mode 100644 index 0000000000000000000000000000000000000000..e6f9cd82cd123d753ee691a1b47596205c9ff29c Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NEUTRAL@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NEUTRAL_w.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NEUTRAL_w.svg new file mode 100644 index 0000000000000000000000000000000000000000..50a4e09b059b068a0f93285731eb67d73dd909cd --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NEUTRAL_w.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1{fill:none;}.cls-2{fill:#3c3f41;}.cls-3{fill:#fff;}</style></defs><title>gas-analyser-2</title><rect class="cls-1" width="133.64375" height="133.64375"/><circle class="cls-2" cx="66.83822" cy="68.95879" r="48.60103"/><polygon class="cls-3" points="91.833 85.439 91.864 85.208 91.879 84.987 91.885 84.774 91.879 84.571 91.859 84.371 91.828 84.185 91.787 84.004 91.736 83.827 91.674 83.658 91.602 83.499 91.52 83.34 91.433 83.193 91.336 83.052 91.228 82.914 91.115 82.782 90.992 82.653 90.864 82.534 90.725 82.418 90.587 82.303 90.438 82.197 90.284 82.095 90.125 81.998 89.961 81.9 90.109 82.193 90.253 82.458 90.381 82.702 90.499 82.937 90.551 83.052 90.597 83.167 90.638 83.282 90.674 83.397 90.705 83.517 90.725 83.636 90.741 83.76 90.746 83.889 90.746 84.021 90.73 84.163 90.71 84.309 90.684 84.464 90.643 84.628 90.592 84.801 90.525 84.982 90.453 85.177 90.366 85.385 90.269 85.602 90.156 85.833 90.027 86.081 89.889 86.342 89.73 86.621 89.561 86.913 89.376 87.223 89.289 87.374 89.201 87.52 89.124 87.666 89.047 87.812 88.976 87.958 88.909 88.1 88.847 88.242 88.786 88.379 88.729 88.521 88.683 88.658 88.632 88.795 88.591 88.928 88.55 89.061 88.514 89.194 88.483 89.327 88.457 89.455 88.432 89.584 88.411 89.712 88.391 89.836 88.375 89.96 88.365 90.084 88.36 90.208 88.355 90.328 88.355 90.447 88.36 90.562 88.365 90.682 88.37 90.797 88.386 90.912 88.401 91.023 88.416 91.134 88.437 91.244 88.463 91.351 88.488 91.461 88.519 91.568 88.586 91.771 88.663 91.975 88.755 92.17 88.853 92.365 88.96 92.546 89.078 92.728 89.201 92.9 89.335 93.073 89.478 93.233 89.627 93.392 89.786 93.543 89.95 93.689 90.12 93.83 90.299 93.963 90.479 94.092 90.289 93.627 90.125 93.206 90.048 93.007 89.981 92.816 89.925 92.63 89.868 92.453 89.822 92.281 89.781 92.112 89.75 91.948 89.725 91.789 89.709 91.63 89.699 91.47 89.694 91.315 89.699 91.156 89.714 90.996 89.735 90.837 89.761 90.673 89.802 90.505 89.843 90.336 89.899 90.159 89.961 89.973 90.033 89.783 90.115 89.588 90.202 89.38 90.299 89.163 90.407 88.937 90.525 88.702 90.648 88.454 90.93 87.914 91.089 87.6 91.233 87.299 91.366 87.002 91.479 86.718 91.577 86.444 91.664 86.178 91.736 85.921 91.792 85.678 91.833 85.439"/><polygon class="cls-3" points="99.416 85.058 99.385 84.867 99.344 84.686 99.293 84.509 99.231 84.34 99.16 84.181 99.078 84.026 98.99 83.875 98.893 83.734 98.785 83.596 98.672 83.464 98.549 83.335 98.421 83.216 98.287 83.1 98.144 82.99 97.995 82.879 97.841 82.777 97.682 82.68 97.523 82.582 97.667 82.875 97.81 83.14 97.939 83.384 98.057 83.618 98.108 83.734 98.154 83.849 98.195 83.964 98.231 84.079 98.262 84.199 98.282 84.318 98.298 84.442 98.303 84.571 98.303 84.708 98.287 84.845 98.267 84.991 98.241 85.146 98.2 85.31 98.149 85.483 98.082 85.664 98.01 85.859 97.923 86.067 97.826 86.284 97.713 86.515 97.585 86.763 97.446 87.024 97.287 87.303 97.118 87.595 96.933 87.905 96.846 88.056 96.759 88.202 96.682 88.348 96.605 88.494 96.533 88.64 96.466 88.782 96.405 88.924 96.343 89.065 96.292 89.203 96.24 89.34 96.189 89.477 96.148 89.61 96.107 89.743 96.071 89.876 96.04 90.009 96.015 90.137 95.989 90.266 95.968 90.394 95.948 90.518 95.933 90.642 95.922 90.766 95.917 90.89 95.912 91.01 95.912 91.129 95.917 91.249 95.922 91.364 95.927 91.479 95.943 91.594 95.958 91.705 95.974 91.816 95.994 91.926 96.02 92.033 96.045 92.143 96.076 92.25 96.143 92.453 96.22 92.657 96.312 92.856 96.41 93.047 96.517 93.233 96.635 93.41 96.759 93.587 96.892 93.755 97.036 93.919 97.184 94.074 97.343 94.225 97.508 94.371 97.677 94.512 97.856 94.645 98.036 94.774 97.846 94.309 97.682 93.888 97.61 93.689 97.538 93.498 97.482 93.312 97.426 93.135 97.379 92.962 97.338 92.794 97.308 92.63 97.282 92.471 97.267 92.312 97.256 92.152 97.251 91.997 97.256 91.838 97.272 91.678 97.292 91.519 97.318 91.355 97.359 91.187 97.4 91.018 97.456 90.841 97.518 90.655 97.59 90.465 97.672 90.27 97.759 90.062 97.856 89.845 97.964 89.619 98.082 89.384 98.205 89.136 98.488 88.596 98.647 88.282 98.795 87.981 98.924 87.684 99.036 87.4 99.134 87.126 99.221 86.86 99.293 86.603 99.349 86.36 99.39 86.121 99.421 85.89 99.437 85.669 99.442 85.456 99.437 85.253 99.416 85.058"/><polygon class="cls-3" points="96.025 86.293 96.092 86.112 96.148 85.93 96.204 85.753 96.256 85.58 96.297 85.412 96.338 85.244 96.374 85.08 96.405 84.92 96.43 84.761 96.456 84.606 96.471 84.451 96.487 84.3 96.497 84.154 96.502 84.013 96.502 83.871 96.497 83.729 96.492 83.596 96.482 83.459 96.466 83.331 96.446 83.202 96.425 83.074 96.399 82.95 96.369 82.83 96.338 82.711 96.302 82.596 96.261 82.48 96.22 82.37 96.174 82.259 96.122 82.153 96.071 82.046 96.015 81.945 95.958 81.843 95.892 81.745 95.83 81.648 95.763 81.55 95.691 81.457 95.62 81.369 95.543 81.28 95.466 81.192 95.384 81.103 95.302 81.023 95.127 80.86 94.948 80.7 94.758 80.554 94.558 80.408 94.352 80.271 94.137 80.138 93.921 80.009 94.019 80.209 94.121 80.399 94.311 80.753 94.486 81.085 94.568 81.245 94.64 81.4 94.712 81.555 94.773 81.71 94.829 81.865 94.876 82.02 94.917 82.179 94.942 82.339 94.963 82.507 94.973 82.68 94.968 82.861 94.953 83.047 94.927 83.247 94.886 83.455 94.829 83.672 94.763 83.906 94.676 84.15 94.578 84.411 94.46 84.686 94.327 84.982 94.178 85.292 94.009 85.625 93.819 85.974 93.608 86.346 93.378 86.741 93.131 87.161 93.013 87.361 92.9 87.56 92.793 87.755 92.69 87.95 92.593 88.144 92.505 88.335 92.418 88.525 92.341 88.711 92.264 88.902 92.198 89.083 92.136 89.269 92.074 89.451 92.023 89.628 91.977 89.805 91.931 89.982 91.895 90.155 91.859 90.328 91.833 90.5 91.808 90.669 91.792 90.837 91.777 91.001 91.767 91.165 91.761 91.328 91.761 91.488 91.761 91.647 91.772 91.802 91.782 91.957 91.797 92.112 91.818 92.263 91.844 92.409 91.874 92.559 91.905 92.706 91.941 92.847 91.982 92.989 92.023 93.131 92.069 93.268 92.121 93.405 92.177 93.543 92.234 93.675 92.295 93.804 92.357 93.932 92.428 94.061 92.5 94.189 92.572 94.309 92.649 94.433 92.731 94.552 92.813 94.672 92.9 94.787 92.988 94.902 93.08 95.013 93.172 95.124 93.27 95.234 93.367 95.341 93.47 95.442 93.578 95.549 93.685 95.646 93.793 95.748 93.906 95.845 94.019 95.938 94.132 96.031 94.373 96.213 94.614 96.386 94.358 95.761 94.245 95.469 94.137 95.19 94.039 94.924 93.947 94.667 93.865 94.424 93.793 94.185 93.732 93.95 93.68 93.729 93.634 93.507 93.603 93.29 93.578 93.078 93.562 92.865 93.557 92.652 93.567 92.44 93.583 92.227 93.614 92.01 93.65 91.793 93.701 91.568 93.762 91.337 93.834 91.098 93.916 90.855 94.014 90.598 94.121 90.332 94.24 90.053 94.373 89.765 94.517 89.46 94.67 89.145 94.84 88.809 95.024 88.459 95.214 88.087 95.327 87.874 95.435 87.666 95.532 87.458 95.63 87.259 95.717 87.059 95.804 86.86 95.881 86.67 95.958 86.479 96.025 86.293"/><path class="cls-3" d="M66.83821,80.01441a1.08178,1.08178,0,0,0-.91183.49767c-.79491,1.22579-4.75788,7.48334-4.75788,10.1988a5.66972,5.66972,0,0,0,11.33943,0c0-2.71546-3.96128-8.973-4.75621-10.1988A1.0868,1.0868,0,0,0,66.83821,80.01441Z"/><path class="cls-3" d="M66.87129,2.67288a64.149,64.149,0,1,0,64.149,64.149A64.15227,64.15227,0,0,0,66.87129,2.67288Zm43.54276,107.69176A61.59235,61.59235,0,1,1,66.87128,5.23883a61.545,61.545,0,0,1,61.583,61.583,61.41153,61.41153,0,0,1-18.04027,43.54277Z"/><path class="cls-3" d="M66.87129,18.10259A50.84711,50.84711,0,1,0,117.71838,68.9497,50.84712,50.84712,0,0,0,66.87129,18.10259ZM40.45537,98.678A10.4805,10.4805,0,1,1,50.93588,88.19751,10.48049,10.48049,0,0,1,40.45537,98.678Zm26.38284,0a10.4805,10.4805,0,1,1,10.4805-10.48049A10.48049,10.48049,0,0,1,66.83821,98.678ZM71.6709,62.25569c.01382.17975.02765.36643.02765.54618A4.83952,4.83952,0,1,1,66.859,57.96233c.17975,0,.36643.01383.54618.02765l12.76251-9.70671,1.20989,1.20989ZM80.021,38.74924l-2.10173-1.20988,2.37136-4.12744a29.04747,29.04747,0,0,0-12.22327-3.24938v4.81187H65.64759V30.16252a28.81527,28.81527,0,0,0-12.21635,3.2494l2.39212,4.12744-2.10175,1.20988-2.39212-4.12743a29.96731,29.96731,0,0,0-5.00544,4.00989,29.14313,29.14313,0,0,0-3.96151,4.92941l4.162,2.3921L45.31466,48.055l-4.162-2.40592a28.93552,28.93552,0,0,0-3.29779,12.31314h4.81187v2.41975h-4.805a28.98324,28.98324,0,0,0,2.60744,10.88927H35.224a33.88371,33.88371,0,1,1,63.29439,0H93.274A28.84945,28.84945,0,0,0,95.8808,60.38192H91.06894V57.96217h4.83954A28.93584,28.93584,0,0,0,92.61066,45.649l-4.162,2.40592-1.20986-2.10174,4.14124-2.3921a29.27782,29.27782,0,0,0-3.96153-4.92941,29.96636,29.96636,0,0,0-5.00542-4.00989ZM93.89835,98.678a10.4805,10.4805,0,1,1,10.48049-10.48049A10.4805,10.4805,0,0,1,93.89835,98.678Z"/><path class="cls-3" d="M43.86865,83.37615a2.57872,2.57872,0,0,1-.29986,2.782c-1.2387-4.69106-4.29857-5.65344-4.29857-5.65344.36109,2.41932-1.31091,5.06626-2.92484,7.04286a5.21307,5.21307,0,0,0-.62485-2.55434c-.11459,1.75208-1.45378,3.18075-1.81644,4.93754-.49139,2.37849.36894,4.11959,3.6329,5.95958a3.92089,3.92089,0,0,1,.30928-4.50894A7.157,7.157,0,0,0,38.93112,88.871a2.94873,2.94873,0,0,1,.40661,2.26074,5.70431,5.70431,0,0,0,1.24342-4.27344,7.382,7.382,0,0,1,2.30784,9.032C51.1878,91.19456,44.9535,84.169,43.86865,83.37615Z"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NEUTRAL_w@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NEUTRAL_w@128.png new file mode 100644 index 0000000000000000000000000000000000000000..c614ca268d9d6b4c6ea4861629e69062583d9b06 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NEUTRAL_w@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NEUTRAL_w@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NEUTRAL_w@256.png new file mode 100644 index 0000000000000000000000000000000000000000..0c040938d33b73653d81f20641d16cf72cf1ed38 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NEUTRAL_w@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NEUTRAL_w@36.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NEUTRAL_w@36.png new file mode 100644 index 0000000000000000000000000000000000000000..88b53a8a00bc8ee7d4d310fe5981bec3df0b6489 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NEUTRAL_w@36.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NEUTRAL_w@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NEUTRAL_w@512.png new file mode 100644 index 0000000000000000000000000000000000000000..b4fbc99f2194c9b28d69593a0910209a2c8221d8 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NEUTRAL_w@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NEUTRAL_w@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NEUTRAL_w@64.png new file mode 100644 index 0000000000000000000000000000000000000000..862e5a9aa5440a5fc90dc122071d71699bf5f482 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NEUTRAL_w@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NOT_CONTROLED.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NOT_CONTROLED.svg new file mode 100644 index 0000000000000000000000000000000000000000..4a2c0508863a53178a4f8c6871ab078acfa79c0b --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NOT_CONTROLED.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1{fill:none;}.cls-2{fill:#dce1dd;}.cls-3{fill:#a9a9a9;}</style></defs><title>gas-analyser-2</title><rect class="cls-1" width="133.64375" height="133.64375"/><circle class="cls-2" cx="66.88762" cy="68.95879" r="48.60103"/><polygon class="cls-3" points="91.883 85.439 91.914 85.208 91.929 84.987 91.934 84.774 91.929 84.571 91.908 84.371 91.878 84.185 91.837 84.004 91.785 83.827 91.724 83.658 91.652 83.499 91.57 83.34 91.483 83.193 91.385 83.052 91.277 82.914 91.164 82.782 91.041 82.653 90.913 82.534 90.775 82.418 90.636 82.303 90.487 82.197 90.333 82.095 90.174 81.998 90.01 81.9 90.159 82.193 90.303 82.458 90.431 82.702 90.549 82.937 90.6 83.052 90.646 83.167 90.687 83.282 90.723 83.397 90.754 83.517 90.775 83.636 90.79 83.76 90.795 83.889 90.795 84.021 90.78 84.163 90.759 84.309 90.733 84.464 90.692 84.628 90.641 84.801 90.574 84.982 90.503 85.177 90.415 85.385 90.318 85.602 90.205 85.833 90.077 86.081 89.938 86.342 89.779 86.621 89.61 86.913 89.425 87.223 89.338 87.374 89.251 87.52 89.174 87.666 89.097 87.812 89.025 87.958 88.958 88.1 88.897 88.242 88.835 88.379 88.779 88.521 88.733 88.658 88.681 88.795 88.64 88.928 88.599 89.061 88.563 89.194 88.533 89.327 88.507 89.455 88.481 89.584 88.461 89.712 88.44 89.836 88.425 89.96 88.415 90.084 88.409 90.208 88.404 90.328 88.404 90.447 88.409 90.562 88.415 90.682 88.42 90.797 88.435 90.912 88.45 91.023 88.466 91.134 88.486 91.244 88.512 91.351 88.538 91.461 88.568 91.568 88.635 91.771 88.712 91.975 88.804 92.17 88.902 92.365 89.01 92.546 89.128 92.728 89.251 92.9 89.384 93.073 89.528 93.233 89.677 93.392 89.836 93.543 90 93.689 90.169 93.83 90.349 93.963 90.528 94.092 90.338 93.627 90.174 93.206 90.097 93.007 90.031 92.816 89.974 92.63 89.918 92.453 89.872 92.281 89.831 92.112 89.8 91.948 89.774 91.789 89.759 91.63 89.748 91.47 89.743 91.315 89.748 91.156 89.764 90.996 89.784 90.837 89.81 90.673 89.851 90.505 89.892 90.336 89.949 90.159 90.01 89.973 90.082 89.783 90.164 89.588 90.251 89.38 90.349 89.163 90.456 88.937 90.574 88.702 90.698 88.454 90.98 87.914 91.139 87.6 91.282 87.299 91.416 87.002 91.529 86.718 91.626 86.444 91.713 86.178 91.785 85.921 91.842 85.678 91.883 85.439"/><polygon class="cls-3" points="99.466 85.058 99.435 84.867 99.394 84.686 99.342 84.509 99.281 84.34 99.209 84.181 99.127 84.026 99.04 83.875 98.942 83.734 98.834 83.596 98.722 83.464 98.598 83.335 98.47 83.216 98.337 83.1 98.193 82.99 98.044 82.879 97.89 82.777 97.731 82.68 97.572 82.582 97.716 82.875 97.86 83.14 97.988 83.384 98.106 83.618 98.157 83.734 98.203 83.849 98.244 83.964 98.28 84.079 98.311 84.199 98.332 84.318 98.347 84.442 98.352 84.571 98.352 84.708 98.337 84.845 98.316 84.991 98.291 85.146 98.25 85.31 98.198 85.483 98.132 85.664 98.06 85.859 97.973 86.067 97.875 86.284 97.762 86.515 97.634 86.763 97.495 87.024 97.336 87.303 97.167 87.595 96.982 87.905 96.895 88.056 96.808 88.202 96.731 88.348 96.654 88.494 96.582 88.64 96.516 88.782 96.454 88.924 96.392 89.065 96.341 89.203 96.29 89.34 96.238 89.477 96.197 89.61 96.156 89.743 96.121 89.876 96.09 90.009 96.064 90.137 96.038 90.266 96.018 90.394 95.997 90.518 95.982 90.642 95.972 90.766 95.967 90.89 95.961 91.01 95.961 91.129 95.967 91.249 95.972 91.364 95.977 91.479 95.992 91.594 96.008 91.705 96.023 91.816 96.044 91.926 96.069 92.033 96.095 92.143 96.126 92.25 96.192 92.453 96.269 92.657 96.362 92.856 96.459 93.047 96.567 93.233 96.685 93.41 96.808 93.587 96.941 93.755 97.085 93.919 97.234 94.074 97.393 94.225 97.557 94.371 97.726 94.512 97.906 94.645 98.085 94.774 97.896 94.309 97.731 93.888 97.66 93.689 97.588 93.498 97.531 93.312 97.475 93.135 97.429 92.962 97.388 92.794 97.357 92.63 97.331 92.471 97.316 92.312 97.306 92.152 97.3 91.997 97.306 91.838 97.321 91.678 97.342 91.519 97.367 91.355 97.408 91.187 97.449 91.018 97.506 90.841 97.567 90.655 97.639 90.465 97.721 90.27 97.808 90.062 97.906 89.845 98.014 89.619 98.132 89.384 98.255 89.136 98.537 88.596 98.696 88.282 98.845 87.981 98.973 87.684 99.086 87.4 99.183 87.126 99.271 86.86 99.342 86.603 99.399 86.36 99.44 86.121 99.471 85.89 99.486 85.669 99.491 85.456 99.486 85.253 99.466 85.058"/><polygon class="cls-3" points="96.074 86.293 96.141 86.112 96.197 85.93 96.254 85.753 96.305 85.58 96.346 85.412 96.387 85.244 96.423 85.08 96.454 84.92 96.48 84.761 96.505 84.606 96.521 84.451 96.536 84.3 96.546 84.154 96.551 84.013 96.551 83.871 96.546 83.729 96.541 83.596 96.531 83.459 96.516 83.331 96.495 83.202 96.474 83.074 96.449 82.95 96.418 82.83 96.387 82.711 96.351 82.596 96.31 82.48 96.269 82.37 96.223 82.259 96.172 82.153 96.121 82.046 96.064 81.945 96.008 81.843 95.941 81.745 95.879 81.648 95.813 81.55 95.741 81.457 95.669 81.369 95.592 81.28 95.515 81.192 95.433 81.103 95.351 81.023 95.176 80.86 94.997 80.7 94.807 80.554 94.607 80.408 94.402 80.271 94.186 80.138 93.971 80.009 94.068 80.209 94.171 80.399 94.361 80.753 94.535 81.085 94.617 81.245 94.689 81.4 94.761 81.555 94.822 81.71 94.879 81.865 94.925 82.02 94.966 82.179 94.992 82.339 95.012 82.507 95.023 82.68 95.017 82.861 95.002 83.047 94.976 83.247 94.935 83.455 94.879 83.672 94.812 83.906 94.725 84.15 94.628 84.411 94.509 84.686 94.376 84.982 94.227 85.292 94.058 85.625 93.868 85.974 93.658 86.346 93.427 86.741 93.181 87.161 93.063 87.361 92.95 87.56 92.842 87.755 92.74 87.95 92.642 88.144 92.555 88.335 92.468 88.525 92.391 88.711 92.314 88.902 92.247 89.083 92.185 89.269 92.124 89.451 92.073 89.628 92.026 89.805 91.98 89.982 91.944 90.155 91.908 90.328 91.883 90.5 91.857 90.669 91.842 90.837 91.826 91.001 91.816 91.165 91.811 91.328 91.811 91.488 91.811 91.647 91.821 91.802 91.831 91.957 91.847 92.112 91.867 92.263 91.893 92.409 91.924 92.559 91.955 92.706 91.99 92.847 92.032 92.989 92.073 93.131 92.119 93.268 92.17 93.405 92.226 93.543 92.283 93.675 92.344 93.804 92.406 93.932 92.478 94.061 92.55 94.189 92.622 94.309 92.698 94.433 92.781 94.552 92.863 94.672 92.95 94.787 93.037 94.902 93.129 95.013 93.222 95.124 93.319 95.234 93.417 95.341 93.519 95.442 93.627 95.549 93.735 95.646 93.843 95.748 93.955 95.845 94.068 95.938 94.181 96.031 94.422 96.213 94.663 96.386 94.407 95.761 94.294 95.469 94.186 95.19 94.089 94.924 93.996 94.667 93.914 94.424 93.843 94.185 93.781 93.95 93.73 93.729 93.683 93.507 93.653 93.29 93.627 93.078 93.612 92.865 93.607 92.652 93.617 92.44 93.632 92.227 93.663 92.01 93.699 91.793 93.75 91.568 93.812 91.337 93.884 91.098 93.966 90.855 94.063 90.598 94.171 90.332 94.289 90.053 94.422 89.765 94.566 89.46 94.72 89.145 94.889 88.809 95.074 88.459 95.264 88.087 95.377 87.874 95.484 87.666 95.582 87.458 95.679 87.259 95.766 87.059 95.854 86.86 95.931 86.67 96.008 86.479 96.074 86.293"/><path class="cls-3" d="M66.88761,80.01441a1.08178,1.08178,0,0,0-.91183.49767c-.79491,1.22579-4.75788,7.48334-4.75788,10.1988a5.66972,5.66972,0,0,0,11.33943,0c0-2.71546-3.96128-8.973-4.75621-10.1988A1.0868,1.0868,0,0,0,66.88761,80.01441Z"/><path class="cls-3" d="M66.92069,2.67288a64.149,64.149,0,1,0,64.149,64.149A64.15227,64.15227,0,0,0,66.92069,2.67288Zm43.54276,107.69176A61.59235,61.59235,0,1,1,66.92068,5.23883a61.545,61.545,0,0,1,61.583,61.583,61.41153,61.41153,0,0,1-18.04027,43.54277Z"/><path class="cls-3" d="M66.92069,18.10259A50.84711,50.84711,0,1,0,117.76778,68.9497,50.84712,50.84712,0,0,0,66.92069,18.10259ZM40.50477,98.678A10.4805,10.4805,0,1,1,50.98528,88.19751,10.48049,10.48049,0,0,1,40.50477,98.678Zm26.38284,0a10.4805,10.4805,0,1,1,10.4805-10.48049A10.48049,10.48049,0,0,1,66.88761,98.678ZM71.7203,62.25569c.01382.17975.02765.36643.02765.54618a4.83952,4.83952,0,1,1-4.83952-4.83954c.17975,0,.36643.01383.54618.02765l12.76251-9.70671L81.427,49.49316Zm8.35008-23.50645-2.10173-1.20988L80.34,33.41192a29.04747,29.04747,0,0,0-12.22327-3.24938v4.81187H65.697V30.16252a28.81527,28.81527,0,0,0-12.21635,3.2494l2.39211,4.12744L53.771,38.74924l-2.39212-4.12743a29.96731,29.96731,0,0,0-5.00544,4.00989,29.14313,29.14313,0,0,0-3.96151,4.92941l4.162,2.3921L45.36406,48.055l-4.162-2.40592a28.93552,28.93552,0,0,0-3.29779,12.31314h4.81187v2.41975h-4.805a28.98324,28.98324,0,0,0,2.60744,10.88927H35.27339a33.88371,33.88371,0,1,1,63.29439,0H93.32344A28.84945,28.84945,0,0,0,95.9302,60.38192H91.11834V57.96217h4.83954A28.93584,28.93584,0,0,0,92.66006,45.649l-4.162,2.40592-1.20986-2.10174,4.14124-2.3921a29.27782,29.27782,0,0,0-3.96153-4.92941,29.966,29.966,0,0,0-5.00543-4.00989ZM93.94775,98.678a10.4805,10.4805,0,1,1,10.48049-10.48049A10.4805,10.4805,0,0,1,93.94775,98.678Z"/><path class="cls-3" d="M43.91805,83.37615a2.57872,2.57872,0,0,1-.29986,2.782c-1.2387-4.69106-4.29857-5.65344-4.29857-5.65344.36109,2.41932-1.31091,5.06626-2.92484,7.04286a5.21307,5.21307,0,0,0-.62485-2.55434c-.11459,1.75208-1.45378,3.18075-1.81644,4.93754-.49139,2.37849.36894,4.11959,3.6329,5.95958a3.92089,3.92089,0,0,1,.30928-4.50894A7.157,7.157,0,0,0,38.98052,88.871a2.94873,2.94873,0,0,1,.40661,2.26074,5.70431,5.70431,0,0,0,1.24342-4.27344,7.382,7.382,0,0,1,2.30784,9.032C51.2372,91.19456,45.0029,84.169,43.91805,83.37615Z"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NOT_CONTROLED@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NOT_CONTROLED@128.png new file mode 100644 index 0000000000000000000000000000000000000000..379baa80cc22a18ec43fe4269cb474efb198db17 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NOT_CONTROLED@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NOT_CONTROLED@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NOT_CONTROLED@256.png new file mode 100644 index 0000000000000000000000000000000000000000..e26d064b2de6786790b0bd3eec3f48ab9a656e41 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NOT_CONTROLED@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NOT_CONTROLED@36.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NOT_CONTROLED@36.png new file mode 100644 index 0000000000000000000000000000000000000000..4675379861b1c2c93953ec2684f9cb74c60d31c4 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NOT_CONTROLED@36.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NOT_CONTROLED@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NOT_CONTROLED@512.png new file mode 100644 index 0000000000000000000000000000000000000000..29c4b2b3a600d70f5cc9bc74c53590766cb5fc8b Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NOT_CONTROLED@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NOT_CONTROLED@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NOT_CONTROLED@64.png new file mode 100644 index 0000000000000000000000000000000000000000..3188773b80a784e9023b1179f10ed272ac1fae47 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-NOT_CONTROLED@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-OK.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-OK.svg new file mode 100644 index 0000000000000000000000000000000000000000..d6de6ddc6eb25be601446d5ddb3962679677eb44 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-OK.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1{fill:none;}.cls-2{fill:#dce1dd;}.cls-3{fill:#288c28;}</style></defs><title>gas-analyser-2</title><rect class="cls-1" width="133.64375" height="133.64375"/><circle class="cls-2" cx="66.83821" cy="68.95879" r="48.60103"/><polygon class="cls-3" points="91.833 85.439 91.864 85.208 91.879 84.987 91.885 84.774 91.879 84.571 91.859 84.371 91.828 84.185 91.787 84.004 91.736 83.827 91.674 83.658 91.602 83.499 91.52 83.34 91.433 83.193 91.336 83.052 91.228 82.914 91.115 82.782 90.992 82.653 90.864 82.534 90.725 82.418 90.587 82.303 90.438 82.197 90.284 82.095 90.125 81.998 89.961 81.9 90.109 82.193 90.253 82.458 90.381 82.702 90.499 82.937 90.551 83.052 90.597 83.167 90.638 83.282 90.674 83.397 90.705 83.517 90.725 83.636 90.741 83.76 90.746 83.889 90.746 84.021 90.73 84.163 90.71 84.309 90.684 84.464 90.643 84.628 90.592 84.801 90.525 84.982 90.453 85.177 90.366 85.385 90.269 85.602 90.156 85.833 90.027 86.081 89.889 86.342 89.73 86.621 89.561 86.913 89.376 87.223 89.289 87.374 89.201 87.52 89.124 87.666 89.047 87.812 88.976 87.958 88.909 88.1 88.847 88.242 88.786 88.379 88.729 88.521 88.683 88.658 88.632 88.795 88.591 88.928 88.55 89.061 88.514 89.194 88.483 89.327 88.457 89.455 88.432 89.584 88.411 89.712 88.391 89.836 88.375 89.96 88.365 90.084 88.36 90.208 88.355 90.328 88.355 90.447 88.36 90.562 88.365 90.682 88.37 90.797 88.386 90.912 88.401 91.023 88.416 91.134 88.437 91.244 88.463 91.351 88.488 91.461 88.519 91.568 88.586 91.771 88.663 91.975 88.755 92.17 88.853 92.365 88.96 92.546 89.078 92.728 89.201 92.9 89.335 93.073 89.478 93.233 89.627 93.392 89.786 93.543 89.95 93.689 90.12 93.83 90.299 93.963 90.479 94.092 90.289 93.627 90.125 93.206 90.048 93.007 89.981 92.816 89.925 92.63 89.868 92.453 89.822 92.281 89.781 92.112 89.75 91.948 89.725 91.789 89.709 91.63 89.699 91.47 89.694 91.315 89.699 91.156 89.714 90.996 89.735 90.837 89.761 90.673 89.802 90.505 89.843 90.336 89.899 90.159 89.961 89.973 90.033 89.783 90.115 89.588 90.202 89.38 90.299 89.163 90.407 88.937 90.525 88.702 90.648 88.454 90.93 87.914 91.089 87.6 91.233 87.299 91.366 87.002 91.479 86.718 91.577 86.444 91.664 86.178 91.736 85.921 91.792 85.678 91.833 85.439"/><polygon class="cls-3" points="99.416 85.058 99.385 84.867 99.344 84.686 99.293 84.509 99.231 84.34 99.16 84.181 99.078 84.026 98.99 83.875 98.893 83.734 98.785 83.596 98.672 83.464 98.549 83.335 98.421 83.216 98.287 83.1 98.144 82.99 97.995 82.879 97.841 82.777 97.682 82.68 97.523 82.582 97.667 82.875 97.81 83.14 97.939 83.384 98.057 83.618 98.108 83.734 98.154 83.849 98.195 83.964 98.231 84.079 98.262 84.199 98.282 84.318 98.298 84.442 98.303 84.571 98.303 84.708 98.287 84.845 98.267 84.991 98.241 85.146 98.2 85.31 98.149 85.483 98.082 85.664 98.01 85.859 97.923 86.067 97.826 86.284 97.713 86.515 97.585 86.763 97.446 87.024 97.287 87.303 97.118 87.595 96.933 87.905 96.846 88.056 96.759 88.202 96.682 88.348 96.605 88.494 96.533 88.64 96.466 88.782 96.405 88.924 96.343 89.065 96.292 89.203 96.24 89.34 96.189 89.477 96.148 89.61 96.107 89.743 96.071 89.876 96.04 90.009 96.015 90.137 95.989 90.266 95.968 90.394 95.948 90.518 95.933 90.642 95.922 90.766 95.917 90.89 95.912 91.01 95.912 91.129 95.917 91.249 95.922 91.364 95.927 91.479 95.943 91.594 95.958 91.705 95.974 91.816 95.994 91.926 96.02 92.033 96.045 92.143 96.076 92.25 96.143 92.453 96.22 92.657 96.312 92.856 96.41 93.047 96.517 93.233 96.635 93.41 96.759 93.587 96.892 93.755 97.036 93.919 97.184 94.074 97.343 94.225 97.508 94.371 97.677 94.512 97.856 94.645 98.036 94.774 97.846 94.309 97.682 93.888 97.61 93.689 97.538 93.498 97.482 93.312 97.426 93.135 97.379 92.962 97.338 92.794 97.308 92.63 97.282 92.471 97.266 92.312 97.256 92.152 97.251 91.997 97.256 91.838 97.272 91.678 97.292 91.519 97.318 91.355 97.359 91.187 97.4 91.018 97.456 90.841 97.518 90.655 97.59 90.465 97.672 90.27 97.759 90.062 97.856 89.845 97.964 89.619 98.082 89.384 98.205 89.136 98.488 88.596 98.647 88.282 98.795 87.981 98.924 87.684 99.036 87.4 99.134 87.126 99.221 86.86 99.293 86.603 99.349 86.36 99.39 86.121 99.421 85.89 99.437 85.669 99.442 85.456 99.437 85.253 99.416 85.058"/><polygon class="cls-3" points="96.025 86.293 96.092 86.112 96.148 85.93 96.204 85.753 96.256 85.58 96.297 85.412 96.338 85.244 96.374 85.08 96.405 84.92 96.43 84.761 96.456 84.606 96.471 84.451 96.487 84.3 96.497 84.154 96.502 84.013 96.502 83.871 96.497 83.729 96.492 83.596 96.482 83.459 96.466 83.331 96.446 83.202 96.425 83.074 96.399 82.95 96.369 82.83 96.338 82.711 96.302 82.596 96.261 82.48 96.22 82.37 96.174 82.259 96.122 82.153 96.071 82.046 96.015 81.945 95.958 81.843 95.892 81.745 95.83 81.648 95.763 81.55 95.691 81.457 95.62 81.369 95.543 81.28 95.466 81.192 95.384 81.103 95.302 81.023 95.127 80.86 94.948 80.7 94.758 80.554 94.558 80.408 94.352 80.271 94.137 80.138 93.921 80.009 94.019 80.209 94.121 80.399 94.311 80.753 94.486 81.085 94.568 81.245 94.64 81.4 94.711 81.555 94.773 81.71 94.829 81.865 94.876 82.02 94.917 82.179 94.942 82.339 94.963 82.507 94.973 82.68 94.968 82.861 94.953 83.047 94.927 83.247 94.886 83.455 94.829 83.672 94.763 83.906 94.676 84.15 94.578 84.411 94.46 84.686 94.327 84.982 94.178 85.292 94.009 85.625 93.819 85.974 93.608 86.346 93.378 86.741 93.131 87.161 93.013 87.361 92.9 87.56 92.793 87.755 92.69 87.95 92.593 88.144 92.505 88.335 92.418 88.525 92.341 88.711 92.264 88.902 92.198 89.083 92.136 89.269 92.074 89.451 92.023 89.628 91.977 89.805 91.931 89.982 91.895 90.155 91.859 90.328 91.833 90.5 91.808 90.669 91.792 90.837 91.777 91.001 91.767 91.165 91.761 91.328 91.761 91.488 91.761 91.647 91.772 91.802 91.782 91.957 91.797 92.112 91.818 92.263 91.844 92.409 91.874 92.559 91.905 92.706 91.941 92.847 91.982 92.989 92.023 93.131 92.069 93.268 92.121 93.405 92.177 93.543 92.234 93.675 92.295 93.804 92.357 93.932 92.428 94.061 92.5 94.189 92.572 94.309 92.649 94.433 92.731 94.552 92.813 94.672 92.9 94.787 92.988 94.902 93.08 95.013 93.172 95.124 93.27 95.234 93.367 95.341 93.47 95.442 93.578 95.549 93.685 95.646 93.793 95.748 93.906 95.845 94.019 95.938 94.132 96.031 94.373 96.213 94.614 96.386 94.358 95.761 94.245 95.469 94.137 95.19 94.039 94.924 93.947 94.667 93.865 94.424 93.793 94.185 93.732 93.95 93.68 93.729 93.634 93.507 93.603 93.29 93.578 93.078 93.562 92.865 93.557 92.652 93.567 92.44 93.583 92.227 93.614 92.01 93.65 91.793 93.701 91.568 93.762 91.337 93.834 91.098 93.916 90.855 94.014 90.598 94.121 90.332 94.24 90.053 94.373 89.765 94.517 89.46 94.67 89.145 94.84 88.809 95.024 88.459 95.214 88.087 95.327 87.874 95.435 87.666 95.532 87.458 95.63 87.259 95.717 87.059 95.804 86.86 95.881 86.67 95.958 86.479 96.025 86.293"/><path class="cls-3" d="M66.8382,80.01441a1.0818,1.0818,0,0,0-.91183.49767c-.79491,1.22579-4.75788,7.48334-4.75788,10.1988a5.66972,5.66972,0,0,0,11.33944,0c0-2.71546-3.96129-8.973-4.75622-10.1988A1.08679,1.08679,0,0,0,66.8382,80.01441Z"/><path class="cls-3" d="M66.87128,2.67288a64.149,64.149,0,1,0,64.149,64.149A64.15226,64.15226,0,0,0,66.87128,2.67288ZM110.414,110.36464A61.59235,61.59235,0,1,1,66.87128,5.23883a61.545,61.545,0,0,1,61.583,61.583A61.41142,61.41142,0,0,1,110.414,110.36464Z"/><path class="cls-3" d="M66.87128,18.10259A50.84711,50.84711,0,1,0,117.71837,68.9497,50.84711,50.84711,0,0,0,66.87128,18.10259ZM40.45537,98.678a10.4805,10.4805,0,1,1,10.4805-10.48049A10.4805,10.4805,0,0,1,40.45537,98.678Zm26.38283,0A10.4805,10.4805,0,1,1,77.31871,88.19751,10.4805,10.4805,0,0,1,66.8382,98.678Zm4.83269-36.42231c.01383.17975.02765.36643.02765.54618A4.83952,4.83952,0,1,1,66.859,57.96233c.17976,0,.36643.01383.54618.02765l12.76252-9.70671,1.20988,1.20989ZM80.021,38.74924l-2.10172-1.20988,2.37135-4.12744a29.04747,29.04747,0,0,0-12.22326-3.24938v4.81187H65.64759V30.16252a28.81532,28.81532,0,0,0-12.21636,3.2494l2.39212,4.12744-2.10174,1.20988-2.39212-4.12743A29.967,29.967,0,0,0,46.324,38.6317a29.14362,29.14362,0,0,0-3.96151,4.92941l4.162,2.3921L45.31466,48.055l-4.162-2.40592a28.93551,28.93551,0,0,0-3.29778,12.31314h4.81187v2.41975h-4.805a28.98343,28.98343,0,0,0,2.60744,10.88927H35.224a33.88371,33.88371,0,1,1,63.29439,0H93.274a28.84926,28.84926,0,0,0,2.60676-10.88927H91.06894V57.96217h4.83954A28.936,28.936,0,0,0,92.61066,45.649l-4.162,2.40592L87.2388,45.95321,91.38,43.56111a29.27825,29.27825,0,0,0-3.96152-4.92941,29.96643,29.96643,0,0,0-5.00543-4.00989ZM93.89835,98.678a10.4805,10.4805,0,1,1,10.48048-10.48049A10.4805,10.4805,0,0,1,93.89835,98.678Z"/><path class="cls-3" d="M43.86865,83.37615a2.57872,2.57872,0,0,1-.29987,2.782c-1.2387-4.69106-4.29856-5.65344-4.29856-5.65344.36109,2.41932-1.31091,5.06626-2.92484,7.04286a5.21307,5.21307,0,0,0-.62485-2.55434c-.1146,1.75208-1.45379,3.18075-1.81645,4.93754-.49139,2.37849.36894,4.11959,3.63291,5.95958a3.92089,3.92089,0,0,1,.30927-4.50894A7.157,7.157,0,0,0,38.93111,88.871a2.94873,2.94873,0,0,1,.40661,2.26074,5.70433,5.70433,0,0,0,1.24343-4.27344,7.382,7.382,0,0,1,2.30783,9.032C51.1878,91.19456,44.95349,84.169,43.86865,83.37615Z"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-OK@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-OK@128.png new file mode 100644 index 0000000000000000000000000000000000000000..4a0b231c327394934a50669db5c8550b29e3fac0 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-OK@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-OK@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-OK@256.png new file mode 100644 index 0000000000000000000000000000000000000000..2c4784415c62490e9a287e1241175ff2a913451c Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-OK@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-OK@36.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-OK@36.png new file mode 100644 index 0000000000000000000000000000000000000000..5f60ceb9a894f8de4ce4df09d1ce1299bfd7fea1 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-OK@36.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-OK@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-OK@512.png new file mode 100644 index 0000000000000000000000000000000000000000..7ea658ba57c002a49ff596974d1cd62fd8e82bc1 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-OK@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-OK@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-OK@64.png new file mode 100644 index 0000000000000000000000000000000000000000..3cfa830f1739741de5aee91f1bb73552418699f2 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-OK@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-WARNING.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-WARNING.svg new file mode 100644 index 0000000000000000000000000000000000000000..2a1c866767bde5cfb19c4773442ad1591a68f9f2 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-WARNING.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1{fill:none;}.cls-2{fill:#dce1dd;}.cls-3{fill:#96900a;}</style></defs><title>gas-analyser-2</title><rect class="cls-1" width="133.64375" height="133.64375"/><circle class="cls-2" cx="66.78881" cy="68.95879" r="48.60103"/><polygon class="cls-3" points="91.784 85.439 91.815 85.208 91.83 84.987 91.835 84.774 91.83 84.571 91.81 84.371 91.779 84.185 91.738 84.004 91.686 83.827 91.625 83.658 91.553 83.499 91.471 83.34 91.384 83.193 91.286 83.052 91.179 82.914 91.066 82.782 90.943 82.653 90.814 82.534 90.676 82.418 90.537 82.303 90.388 82.197 90.235 82.095 90.075 81.998 89.911 81.9 90.06 82.193 90.204 82.458 90.332 82.702 90.45 82.937 90.501 83.052 90.547 83.167 90.589 83.282 90.624 83.397 90.655 83.517 90.676 83.636 90.691 83.76 90.696 83.889 90.696 84.021 90.681 84.163 90.66 84.309 90.635 84.464 90.594 84.628 90.542 84.801 90.476 84.982 90.404 85.177 90.317 85.385 90.219 85.602 90.106 85.833 89.978 86.081 89.839 86.342 89.68 86.621 89.511 86.913 89.326 87.223 89.239 87.374 89.152 87.52 89.075 87.666 88.998 87.812 88.926 87.958 88.86 88.1 88.798 88.242 88.736 88.379 88.68 88.521 88.634 88.658 88.582 88.795 88.541 88.928 88.5 89.061 88.464 89.194 88.434 89.327 88.408 89.455 88.382 89.584 88.362 89.712 88.341 89.836 88.326 89.96 88.316 90.084 88.311 90.208 88.305 90.328 88.305 90.447 88.311 90.562 88.316 90.682 88.321 90.797 88.336 90.912 88.352 91.023 88.367 91.134 88.388 91.244 88.413 91.351 88.439 91.461 88.47 91.568 88.536 91.771 88.613 91.975 88.706 92.17 88.803 92.365 88.911 92.546 89.029 92.728 89.152 92.9 89.285 93.073 89.429 93.233 89.578 93.392 89.737 93.543 89.901 93.689 90.07 93.83 90.25 93.963 90.429 94.092 90.24 93.627 90.075 93.206 89.999 93.007 89.932 92.816 89.875 92.63 89.819 92.453 89.773 92.281 89.732 92.112 89.701 91.948 89.675 91.789 89.66 91.63 89.65 91.47 89.645 91.315 89.65 91.156 89.665 90.996 89.686 90.837 89.711 90.673 89.752 90.505 89.793 90.336 89.85 90.159 89.911 89.973 89.983 89.783 90.065 89.588 90.152 89.38 90.25 89.163 90.358 88.937 90.476 88.702 90.599 88.454 90.881 87.914 91.04 87.6 91.184 87.299 91.317 87.002 91.43 86.718 91.527 86.444 91.615 86.178 91.686 85.921 91.743 85.678 91.784 85.439"/><polygon class="cls-3" points="99.367 85.058 99.336 84.867 99.295 84.686 99.244 84.509 99.182 84.34 99.11 84.181 99.028 84.026 98.941 83.875 98.843 83.734 98.736 83.596 98.623 83.464 98.5 83.335 98.371 83.216 98.238 83.1 98.094 82.99 97.946 82.879 97.792 82.777 97.633 82.68 97.474 82.582 97.617 82.875 97.761 83.14 97.889 83.384 98.007 83.618 98.058 83.734 98.105 83.849 98.146 83.964 98.182 84.079 98.212 84.199 98.233 84.318 98.248 84.442 98.253 84.571 98.253 84.708 98.238 84.845 98.217 84.991 98.192 85.146 98.151 85.31 98.099 85.483 98.033 85.664 97.961 85.859 97.874 86.067 97.776 86.284 97.663 86.515 97.535 86.763 97.397 87.024 97.238 87.303 97.068 87.595 96.884 87.905 96.796 88.056 96.709 88.202 96.632 88.348 96.555 88.494 96.483 88.64 96.417 88.782 96.355 88.924 96.294 89.065 96.242 89.203 96.191 89.34 96.14 89.477 96.099 89.61 96.058 89.743 96.022 89.876 95.991 90.009 95.965 90.137 95.94 90.266 95.919 90.394 95.899 90.518 95.883 90.642 95.873 90.766 95.868 90.89 95.863 91.01 95.863 91.129 95.868 91.249 95.873 91.364 95.878 91.479 95.893 91.594 95.909 91.705 95.924 91.816 95.945 91.926 95.97 92.033 95.996 92.143 96.027 92.25 96.093 92.453 96.17 92.657 96.263 92.856 96.36 93.047 96.468 93.233 96.586 93.41 96.709 93.587 96.843 93.755 96.986 93.919 97.135 94.074 97.294 94.225 97.458 94.371 97.628 94.512 97.807 94.645 97.987 94.774 97.797 94.309 97.633 93.888 97.561 93.689 97.489 93.498 97.433 93.312 97.376 93.135 97.33 92.962 97.289 92.794 97.258 92.63 97.232 92.471 97.217 92.312 97.207 92.152 97.202 91.997 97.207 91.838 97.222 91.678 97.243 91.519 97.268 91.355 97.309 91.187 97.35 91.018 97.407 90.841 97.468 90.655 97.54 90.465 97.622 90.27 97.71 90.062 97.807 89.845 97.915 89.619 98.033 89.384 98.156 89.136 98.438 88.596 98.597 88.282 98.746 87.981 98.874 87.684 98.987 87.4 99.085 87.126 99.172 86.86 99.244 86.603 99.3 86.36 99.341 86.121 99.372 85.89 99.387 85.669 99.392 85.456 99.387 85.253 99.367 85.058"/><polygon class="cls-3" points="95.975 86.293 96.042 86.112 96.099 85.93 96.155 85.753 96.206 85.58 96.247 85.412 96.288 85.244 96.324 85.08 96.355 84.92 96.381 84.761 96.406 84.606 96.422 84.451 96.437 84.3 96.448 84.154 96.453 84.013 96.453 83.871 96.448 83.729 96.442 83.596 96.432 83.459 96.417 83.331 96.396 83.202 96.376 83.074 96.35 82.95 96.319 82.83 96.288 82.711 96.253 82.596 96.211 82.48 96.17 82.37 96.124 82.259 96.073 82.153 96.022 82.046 95.965 81.945 95.909 81.843 95.842 81.745 95.781 81.648 95.714 81.55 95.642 81.457 95.57 81.369 95.493 81.28 95.416 81.192 95.334 81.103 95.252 81.023 95.078 80.86 94.898 80.7 94.708 80.554 94.508 80.408 94.303 80.271 94.088 80.138 93.872 80.009 93.969 80.209 94.072 80.399 94.262 80.753 94.436 81.085 94.518 81.245 94.59 81.4 94.662 81.555 94.724 81.71 94.78 81.865 94.826 82.02 94.867 82.179 94.893 82.339 94.913 82.507 94.924 82.68 94.919 82.861 94.903 83.047 94.878 83.247 94.837 83.455 94.78 83.672 94.713 83.906 94.626 84.15 94.529 84.411 94.411 84.686 94.277 84.982 94.129 85.292 93.959 85.625 93.769 85.974 93.559 86.346 93.328 86.741 93.082 87.161 92.964 87.361 92.851 87.56 92.743 87.755 92.641 87.95 92.543 88.144 92.456 88.335 92.369 88.525 92.292 88.711 92.215 88.902 92.148 89.083 92.087 89.269 92.025 89.451 91.974 89.628 91.928 89.805 91.881 89.982 91.845 90.155 91.81 90.328 91.784 90.5 91.758 90.669 91.743 90.837 91.728 91.001 91.717 91.165 91.712 91.328 91.712 91.488 91.712 91.647 91.722 91.802 91.733 91.957 91.748 92.112 91.769 92.263 91.794 92.409 91.825 92.559 91.856 92.706 91.892 92.847 91.933 92.989 91.974 93.131 92.02 93.268 92.071 93.405 92.128 93.543 92.184 93.675 92.246 93.804 92.307 93.932 92.379 94.061 92.451 94.189 92.523 94.309 92.6 94.433 92.682 94.552 92.764 94.672 92.851 94.787 92.938 94.902 93.031 95.013 93.123 95.124 93.22 95.234 93.318 95.341 93.421 95.442 93.528 95.549 93.636 95.646 93.744 95.748 93.857 95.845 93.969 95.938 94.082 96.031 94.323 96.213 94.565 96.386 94.308 95.761 94.195 95.469 94.088 95.19 93.99 94.924 93.898 94.667 93.816 94.424 93.744 94.185 93.682 93.95 93.631 93.729 93.585 93.507 93.554 93.29 93.528 93.078 93.513 92.865 93.508 92.652 93.518 92.44 93.533 92.227 93.564 92.01 93.6 91.793 93.651 91.568 93.713 91.337 93.785 91.098 93.867 90.855 93.964 90.598 94.072 90.332 94.19 90.053 94.323 89.765 94.467 89.46 94.621 89.145 94.79 88.809 94.975 88.459 95.165 88.087 95.278 87.874 95.385 87.666 95.483 87.458 95.58 87.259 95.668 87.059 95.755 86.86 95.832 86.67 95.909 86.479 95.975 86.293"/><path class="cls-3" d="M66.7888,80.01441a1.08178,1.08178,0,0,0-.91183.49767c-.79492,1.22579-4.75788,7.48334-4.75788,10.1988a5.66972,5.66972,0,0,0,11.33943,0c0-2.71546-3.96128-8.973-4.75621-10.1988A1.0868,1.0868,0,0,0,66.7888,80.01441Z"/><path class="cls-3" d="M66.82187,2.67288a64.149,64.149,0,1,0,64.149,64.149A64.15227,64.15227,0,0,0,66.82187,2.67288Zm43.54277,107.69176A61.59235,61.59235,0,1,1,66.82187,5.23883a61.545,61.545,0,0,1,61.583,61.583,61.41146,61.41146,0,0,1-18.04026,43.54277Z"/><path class="cls-3" d="M66.82187,18.10259A50.84711,50.84711,0,1,0,117.669,68.9497,50.84711,50.84711,0,0,0,66.82187,18.10259ZM40.406,98.678A10.4805,10.4805,0,1,1,50.88647,88.19751,10.48049,10.48049,0,0,1,40.406,98.678Zm26.38284,0A10.4805,10.4805,0,1,1,77.2693,88.19751,10.48049,10.48049,0,0,1,66.7888,98.678Zm4.83269-36.42231c.01382.17975.02765.36643.02765.54618a4.83952,4.83952,0,1,1-4.83952-4.83954c.17975,0,.36642.01383.54618.02765l12.76251-9.70671,1.20989,1.20989Zm8.35008-23.50645-2.10173-1.20988,2.37135-4.12744a29.04739,29.04739,0,0,0-12.22326-3.24938v4.81187H65.59818V30.16252a28.81527,28.81527,0,0,0-12.21635,3.2494l2.39211,4.12744L53.6722,38.74924l-2.39212-4.12743a29.9669,29.9669,0,0,0-5.00544,4.00989,29.14313,29.14313,0,0,0-3.96151,4.92941l4.162,2.3921L45.26525,48.055l-4.162-2.40592a28.93566,28.93566,0,0,0-3.29778,12.31314h4.81187v2.41975h-4.805a28.98344,28.98344,0,0,0,2.60745,10.88927H35.17458a33.88371,33.88371,0,1,1,63.29439,0H93.22463a28.84925,28.84925,0,0,0,2.60675-10.88927H91.01953V57.96217h4.83954A28.93584,28.93584,0,0,0,92.56125,45.649l-4.162,2.40592L87.1894,45.95321l4.14124-2.3921a29.27782,29.27782,0,0,0-3.96153-4.92941,29.966,29.966,0,0,0-5.00543-4.00989ZM93.84894,98.678a10.4805,10.4805,0,1,1,10.48049-10.48049A10.4805,10.4805,0,0,1,93.84894,98.678Z"/><path class="cls-3" d="M43.81924,83.37615a2.57872,2.57872,0,0,1-.29986,2.782c-1.2387-4.69106-4.29857-5.65344-4.29857-5.65344.36109,2.41932-1.31091,5.06626-2.92484,7.04286a5.21307,5.21307,0,0,0-.62485-2.55434c-.11459,1.75208-1.45378,3.18075-1.81644,4.93754-.49139,2.37849.36894,4.11959,3.6329,5.95958a3.92089,3.92089,0,0,1,.30928-4.50894A7.15683,7.15683,0,0,0,38.8817,88.871a2.9487,2.9487,0,0,1,.40662,2.26074,5.70436,5.70436,0,0,0,1.24342-4.27344,7.382,7.382,0,0,1,2.30783,9.032C51.13839,91.19456,44.90409,84.169,43.81924,83.37615Z"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-WARNING@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-WARNING@128.png new file mode 100644 index 0000000000000000000000000000000000000000..539bd7df7c0fe2b3cc75e9257d83b5fe5ac26a5a Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-WARNING@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-WARNING@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-WARNING@256.png new file mode 100644 index 0000000000000000000000000000000000000000..db98ab483b2cd22902b09cec4fd3f5aba0df5387 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-WARNING@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-WARNING@36.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-WARNING@36.png new file mode 100644 index 0000000000000000000000000000000000000000..698e4bf522cffb9767818134aceaddee4825a2a3 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-WARNING@36.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-WARNING@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-WARNING@512.png new file mode 100644 index 0000000000000000000000000000000000000000..192ea75ab9bfe9ab50ac7cf21c574f92709abc23 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-WARNING@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-WARNING@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-WARNING@64.png new file mode 100644 index 0000000000000000000000000000000000000000..6be067f8bd728d9ad2bf829b127316c5bb5505d7 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/GasAnalyser/gas-analyser-2-WARNING@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/PID/PIDControlIcon.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/PID/PIDControlIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..a0380d4c6c0041a340a4f3c3694e30ac329dbaa5 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/PID/PIDControlIcon.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/PID/icon-pidcontroller-1.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/PID/icon-pidcontroller-1.png new file mode 100644 index 0000000000000000000000000000000000000000..44adfb2e79f38d3ef5588e8212d77ab935a037f4 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/PID/icon-pidcontroller-1.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_BLUE@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_BLUE@64.png new file mode 100644 index 0000000000000000000000000000000000000000..d3c3c51b9ae16f78096dd6c8172987d7b37186cc Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_BLUE@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_ERROR@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_ERROR@64.png new file mode 100644 index 0000000000000000000000000000000000000000..0f78d2f20eeaf237a1a3db8ec98595a673b06f4b Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_ERROR@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_INVALID@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_INVALID@64.png new file mode 100644 index 0000000000000000000000000000000000000000..9ea75db2b9afcc33f9b761bb40af70bf4bff6a4c Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_INVALID@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_NEUTRAL@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_NEUTRAL@64.png new file mode 100644 index 0000000000000000000000000000000000000000..1cce444bb9b1c14644eb53791ab6cf04cd08e6c8 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_NEUTRAL@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_NEUTRAL_w@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_NEUTRAL_w@64.png new file mode 100644 index 0000000000000000000000000000000000000000..33eca76e1e3ce263e1d73e2a9533745b7f1be8dc Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_NEUTRAL_w@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_NOT_CONTROLED@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_NOT_CONTROLED@64.png new file mode 100644 index 0000000000000000000000000000000000000000..b9e605158d38128b7908268c3ff9984ec12966ab Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_NOT_CONTROLED@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_OFF@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_OFF@64.png new file mode 100644 index 0000000000000000000000000000000000000000..f93646f282096d6ded4efc65c2b2d1f32d795c35 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_OFF@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_OK@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_OK@64.png new file mode 100644 index 0000000000000000000000000000000000000000..0af336adc0634e5be2b07a09c2c608ec66bab7b6 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_OK@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_WARNING@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_WARNING@64.png new file mode 100644 index 0000000000000000000000000000000000000000..a5ff5f26a44ab3ace376d2f542c8c0d2c11a9863 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_WARNING@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_valve_solenoid_CLOSED@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_valve_solenoid_CLOSED@64.png new file mode 100644 index 0000000000000000000000000000000000000000..a6b72a80fb116d78dee7168c61c0fde7de65e8f0 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_valve_solenoid_CLOSED@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_valve_solenoid_CLOSED_w@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_valve_solenoid_CLOSED_w@64.png new file mode 100644 index 0000000000000000000000000000000000000000..154a1a872af4fea4d5620b36646bcf8b658884db Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/TP Turbine Pump/TP_Turbine_Pump_valve_solenoid_CLOSED_w@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/WARNING@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/WARNING@32.png new file mode 100644 index 0000000000000000000000000000000000000000..3cf62db5af58404471a552036e215507d2b511f9 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/WARNING@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/Wrench_error @32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/Wrench_error @32.png new file mode 100644 index 0000000000000000000000000000000000000000..5df7eff3f55ed1d0a3634bf966e97b2c72f002ea Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/Wrench_error @32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/closing_neutral@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/closing_neutral@32.png new file mode 100644 index 0000000000000000000000000000000000000000..e804f651424b7ae8df02e592d80a700808b8f3b2 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/closing_neutral@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/error@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/error@32.png new file mode 100644 index 0000000000000000000000000000000000000000..03a2a9847bb45bf47a2c335534ba8d6b38e1c158 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/error@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/interlock_overridden_disabled_cms@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/interlock_overridden_disabled_cms@32.png new file mode 100644 index 0000000000000000000000000000000000000000..b3b92d21a40447ddbaa72274301fe742b6f433d8 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/interlock_overridden_disabled_cms@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/interlock_tripped_cms@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/interlock_tripped_cms@32.png new file mode 100644 index 0000000000000000000000000000000000000000..1bcfcb7970eae89d0132a4306fddc5b08aead802 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/interlock_tripped_cms@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/lock_locked@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/lock_locked@32.png new file mode 100644 index 0000000000000000000000000000000000000000..2ef61c6223a7a4bed98ddd7d4955fc1d4a6d40de Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/lock_locked@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/opening_neutral@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/opening_neutral@32.png new file mode 100644 index 0000000000000000000000000000000000000000..a0baf551618f9d3f9eaddabb1f6fb5e550676b01 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/opening_neutral@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_BLUE.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_BLUE.svg new file mode 100644 index 0000000000000000000000000000000000000000..7d957d97bb1023bb32bef34856d015e2c66d7870 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_BLUE.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1,.cls-2{fill:#dce1dd;}.cls-2{stroke:#000;}.cls-2,.cls-3{stroke-width:6.15118px;}.cls-3{fill:#4fe4fa;stroke:#2f8794;}.cls-4{fill:none;}.cls-5{fill:#2f8794;}</style></defs><title>valve_hand-solenoid-analog_v05</title><path class="cls-1" d="M28.085,46.05137a38.8588,38.8588,0,0,1,77.47363,0Z"/><path d="M66.82187,13.34515a35.83967,35.83967,0,0,1,35.25275,29.63063H31.56915A35.83963,35.83963,0,0,1,66.82187,13.34515m0-6.15119a41.933,41.933,0,0,0-41.933,41.933h83.86593a41.933,41.933,0,0,0-41.933-41.933Z"/><path class="cls-2" d="M66.82187,49.55634V93.64978"/><polygon class="cls-3" points="7.122 62.65 7.122 124.65 66.822 93.65 7.122 62.65"/><polygon class="cls-3" points="126.522 124.65 126.522 62.65 66.822 93.65 126.522 124.65"/><rect class="cls-4" width="133.64375" height="133.64375"/><circle class="cls-5" cx="66.82187" cy="93.64978" r="10.81973"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_BLUE@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_BLUE@128.png new file mode 100644 index 0000000000000000000000000000000000000000..909e798f945f9ac13ddef232bd51434b13d332a2 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_BLUE@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_BLUE@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_BLUE@256.png new file mode 100644 index 0000000000000000000000000000000000000000..a920da7e32033cbebbaf2658b354dc0960354c1c Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_BLUE@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_BLUE@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_BLUE@32.png new file mode 100644 index 0000000000000000000000000000000000000000..0f2fec8159b05054cd4199ebdad4d9956b1a03e5 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_BLUE@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_BLUE@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_BLUE@512.png new file mode 100644 index 0000000000000000000000000000000000000000..dd912d287f48ae9aefeb86f0021d8b44f6de49e5 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_BLUE@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_BLUE@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_BLUE@64.png new file mode 100644 index 0000000000000000000000000000000000000000..271d08c9806c91e54d9ca6e12af1d25773d23302 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_BLUE@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_CLOSED.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_CLOSED.svg new file mode 100644 index 0000000000000000000000000000000000000000..fc7da360c35157adff6e4c8aa9d2339234d369e0 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_CLOSED.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1,.cls-2{fill:#dce1dd;}.cls-2,.cls-3{stroke:#000;stroke-width:6.15118px;}.cls-3{fill:#646464;}.cls-4{fill:none;}</style></defs><title>valve_hand-solenoid-analog_v05</title><path class="cls-1" d="M28.08517,46.05108a38.85888,38.85888,0,0,1,77.47363,0Z"/><path d="M66.82186,13.34515a35.83964,35.83964,0,0,1,35.25275,29.63063H31.56912A35.83963,35.83963,0,0,1,66.82186,13.34515m0-6.15118a41.933,41.933,0,0,0-41.933,41.933h83.866a41.933,41.933,0,0,0-41.933-41.933Z"/><path class="cls-2" d="M66.82187,49.55634V93.64978"/><polygon class="cls-3" points="7.122 62.65 7.122 124.65 66.822 93.65 7.122 62.65"/><polygon class="cls-3" points="126.522 124.65 126.522 62.65 66.822 93.65 126.522 124.65"/><rect class="cls-4" width="133.64375" height="133.64375"/><circle cx="66.82188" cy="93.64978" r="10.81973"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_CLOSED@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_CLOSED@128.png new file mode 100644 index 0000000000000000000000000000000000000000..2d82dec73b7c47b44d29bdc61f84e6e35b4bddad Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_CLOSED@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_CLOSED@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_CLOSED@256.png new file mode 100644 index 0000000000000000000000000000000000000000..0899b534d24f28e4c9a1ac7a0641b0fc3d1435bc Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_CLOSED@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_CLOSED@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_CLOSED@32.png new file mode 100644 index 0000000000000000000000000000000000000000..ff9afd05896eb28bd76533bf2e598dd56b033cff Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_CLOSED@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_CLOSED@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_CLOSED@512.png new file mode 100644 index 0000000000000000000000000000000000000000..e8a3141bd6f342ab4eafb493b6da25c9e88daaae Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_CLOSED@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_CLOSED@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_CLOSED@64.png new file mode 100644 index 0000000000000000000000000000000000000000..3616b09c5950a57e099cf915966f9bf06de202b0 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_CLOSED@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_CLOSED_w.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_CLOSED_w.svg new file mode 100644 index 0000000000000000000000000000000000000000..d7335b9013d47d83f3492675e62a4eef8506ba72 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_CLOSED_w.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1{fill:#3c3f41;stroke-linejoin:round;}.cls-1,.cls-2{stroke:#fff;stroke-width:6.15118px;}.cls-2{fill:#bababa;}.cls-3{fill:none;}.cls-4{fill:#fff;}</style></defs><title>valve_hand-solenoid-analog_v05</title><path class="cls-1" d="M108.75486,49.127a41.933,41.933,0,1,0-83.866,0Z"/><path class="cls-1" d="M66.82187,49.55634V93.64978"/><polygon class="cls-2" points="7.122 62.65 7.122 124.65 66.822 93.65 7.122 62.65"/><polygon class="cls-2" points="126.522 124.65 126.522 62.65 66.822 93.65 126.522 124.65"/><rect class="cls-3" width="133.64375" height="133.64375"/><circle class="cls-4" cx="66.82188" cy="93.64978" r="10.81973"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_CLOSED_w@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_CLOSED_w@128.png new file mode 100644 index 0000000000000000000000000000000000000000..9e7a4939587393d65adfea801a08cd11751e0c1f Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_CLOSED_w@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_CLOSED_w@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_CLOSED_w@256.png new file mode 100644 index 0000000000000000000000000000000000000000..000b121b7e250d9012f23a6a5d33e05b885bfdd5 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_CLOSED_w@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_CLOSED_w@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_CLOSED_w@32.png new file mode 100644 index 0000000000000000000000000000000000000000..4f1455c6bc385dcbaee239ee79dd3507fd315088 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_CLOSED_w@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_CLOSED_w@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_CLOSED_w@512.png new file mode 100644 index 0000000000000000000000000000000000000000..7b0ae8d6823b677f1c946b87cebea5ad8602d078 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_CLOSED_w@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_CLOSED_w@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_CLOSED_w@64.png new file mode 100644 index 0000000000000000000000000000000000000000..741a5588cec0aa7d98e90e00a6772a241ebad418 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_CLOSED_w@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_ERROR.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_ERROR.svg new file mode 100644 index 0000000000000000000000000000000000000000..c4cc8711f60b827f09f7889b51cbd7fac7a242a7 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_ERROR.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1,.cls-2{fill:#dce1dd;}.cls-2{stroke:#000;}.cls-2,.cls-3{stroke-width:6.15118px;}.cls-3{fill:#fc0d11;stroke:#960810;}.cls-4{fill:none;}.cls-5{fill:#960810;}</style></defs><title>valve_hand-solenoid-analog_v05</title><path class="cls-1" d="M28.08526,46.05137a38.85853,38.85853,0,0,1,77.47314,0Z"/><path d="M66.82186,13.34515a35.83968,35.83968,0,0,1,35.25278,29.63063H31.56911A35.83966,35.83966,0,0,1,66.82186,13.34515m0-6.15119a41.933,41.933,0,0,0-41.933,41.933h83.866a41.933,41.933,0,0,0-41.933-41.933Z"/><path class="cls-2" d="M66.82187,49.55634V93.64978"/><polygon class="cls-3" points="7.122 62.65 7.122 124.65 66.822 93.65 7.122 62.65"/><polygon class="cls-3" points="126.522 124.65 126.522 62.65 66.822 93.65 126.522 124.65"/><rect class="cls-4" width="133.64375" height="133.64375"/><circle class="cls-5" cx="66.82187" cy="93.64978" r="10.81973"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_ERROR@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_ERROR@128.png new file mode 100644 index 0000000000000000000000000000000000000000..9baa62bfed39820c57f7fa7e2e8082dd6d56d32a Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_ERROR@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_ERROR@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_ERROR@256.png new file mode 100644 index 0000000000000000000000000000000000000000..e1fcde9a456929e831a58c2e6af29a6336e991e7 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_ERROR@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_ERROR@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_ERROR@32.png new file mode 100644 index 0000000000000000000000000000000000000000..d8c64233fd7fc092add6741feacf325bb4438e66 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_ERROR@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_ERROR@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_ERROR@512.png new file mode 100644 index 0000000000000000000000000000000000000000..941f8126910be87c6116be2ab4201f253514669f Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_ERROR@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_ERROR@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_ERROR@64.png new file mode 100644 index 0000000000000000000000000000000000000000..b97bca50248292663b2f82d2e9f0850fd16ce367 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_ERROR@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_INVALID.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_INVALID.svg new file mode 100644 index 0000000000000000000000000000000000000000..bc8df5f04d6b4e815de9599cf80509b4b4505a6c --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_INVALID.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1,.cls-2{fill:#dce1dd;}.cls-2{stroke:#000;}.cls-2,.cls-3{stroke-width:6.15118px;}.cls-3{fill:#956edd;stroke:#694da4;}.cls-4{fill:none;}.cls-5{fill:#694da4;}</style></defs><title>valve_hand-solenoid-analog_v05</title><path class="cls-1" d="M28.08477,46.05137a38.8588,38.8588,0,0,1,77.47364,0Z"/><path d="M66.82186,13.34515a35.83966,35.83966,0,0,1,35.25275,29.63063H31.56912A35.83966,35.83966,0,0,1,66.82186,13.34515m0-6.15119a41.933,41.933,0,0,0-41.933,41.933h83.866a41.933,41.933,0,0,0-41.933-41.933Z"/><path class="cls-2" d="M66.82187,49.55634V93.64978"/><polygon class="cls-3" points="7.122 62.65 7.122 124.65 66.822 93.65 7.122 62.65"/><polygon class="cls-3" points="126.522 124.65 126.522 62.65 66.822 93.65 126.522 124.65"/><rect class="cls-4" width="133.64375" height="133.64375"/><circle class="cls-5" cx="66.82188" cy="93.64978" r="10.81973"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_INVALID@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_INVALID@128.png new file mode 100644 index 0000000000000000000000000000000000000000..4691c531c0a1ec5c19609332bc5f947affea57de Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_INVALID@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_INVALID@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_INVALID@256.png new file mode 100644 index 0000000000000000000000000000000000000000..d66455ce17cb4d94de6c5f0a9d131210dfddb18b Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_INVALID@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_INVALID@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_INVALID@32.png new file mode 100644 index 0000000000000000000000000000000000000000..8cc6c709f5f104d4e1a1c283b1f166c813a22df7 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_INVALID@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_INVALID@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_INVALID@512.png new file mode 100644 index 0000000000000000000000000000000000000000..8b6a3c9e85be677aac3db39f6d225feeac32cf5d Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_INVALID@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_INVALID@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_INVALID@64.png new file mode 100644 index 0000000000000000000000000000000000000000..c680762578260232a237f21825d37a2a91583b37 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_INVALID@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NEUTRAL.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NEUTRAL.svg new file mode 100644 index 0000000000000000000000000000000000000000..a789036ee1df1d330badef1fe35f9a0b9b323aa2 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NEUTRAL.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1,.cls-2{fill:#dce1dd;}.cls-2{stroke:#000;stroke-width:6.15118px;}.cls-3{fill:none;}</style></defs><title>valve_hand-solenoid-analog_v05</title><path class="cls-1" d="M28.08556,46.05137a38.85827,38.85827,0,0,1,77.47265,0Z"/><path d="M66.82185,13.34515a35.83969,35.83969,0,0,1,35.25278,29.63063H31.56914A35.83962,35.83962,0,0,1,66.82185,13.34515m0-6.15119A41.933,41.933,0,0,0,24.8889,49.127h83.866a41.933,41.933,0,0,0-41.933-41.933Z"/><path class="cls-2" d="M66.82187,49.55634V93.64978"/><polygon class="cls-2" points="7.122 62.65 7.122 124.65 66.822 93.65 7.122 62.65"/><polygon class="cls-2" points="126.522 124.65 126.522 62.65 66.822 93.65 126.522 124.65"/><rect class="cls-3" width="133.64375" height="133.64375"/><circle cx="66.82188" cy="93.64978" r="10.81973"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NEUTRAL@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NEUTRAL@128.png new file mode 100644 index 0000000000000000000000000000000000000000..728ae76f090c638a862c4fc69dfbd86ce23a1da5 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NEUTRAL@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NEUTRAL@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NEUTRAL@256.png new file mode 100644 index 0000000000000000000000000000000000000000..ea6ac7f6631b3168dda8f6f1e86d7a5d8ecbe402 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NEUTRAL@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NEUTRAL@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NEUTRAL@32.png new file mode 100644 index 0000000000000000000000000000000000000000..0ba1de972541dd5d04dbfdfe38c9ff24647cdb5a Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NEUTRAL@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NEUTRAL@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NEUTRAL@512.png new file mode 100644 index 0000000000000000000000000000000000000000..91c708efbd0fc401f47bfc6d7c8abf75460e9f7d Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NEUTRAL@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NEUTRAL@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NEUTRAL@64.png new file mode 100644 index 0000000000000000000000000000000000000000..6569877c919fc36af3256f217665f999ec87ea1b Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NEUTRAL@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NEUTRAL_w.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NEUTRAL_w.svg new file mode 100644 index 0000000000000000000000000000000000000000..d7b574579ac9b9613daec11709db2c2286990f4b --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NEUTRAL_w.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1,.cls-2{fill:#3c3f41;stroke:#fff;stroke-width:6.15118px;}.cls-1{stroke-linejoin:round;}.cls-3{fill:none;}.cls-4{fill:#fff;}</style></defs><title>valve_hand-solenoid-analog_v05</title><path class="cls-1" d="M108.75486,49.127a41.933,41.933,0,1,0-83.866,0Z"/><path class="cls-1" d="M66.82187,49.55634V93.64978"/><polygon class="cls-2" points="7.122 62.65 7.122 124.65 66.822 93.65 7.122 62.65"/><polygon class="cls-2" points="126.522 124.65 126.522 62.65 66.822 93.65 126.522 124.65"/><rect class="cls-3" width="133.64375" height="133.64375"/><circle class="cls-4" cx="66.82188" cy="93.64978" r="10.81973"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NEUTRAL_w@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NEUTRAL_w@128.png new file mode 100644 index 0000000000000000000000000000000000000000..8a5cff56532cbfbc23571406bbd60723e99b8b7d Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NEUTRAL_w@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NEUTRAL_w@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NEUTRAL_w@256.png new file mode 100644 index 0000000000000000000000000000000000000000..e490e4dfc9aafd6710e44c40ae5f5d76b80bbe08 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NEUTRAL_w@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NEUTRAL_w@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NEUTRAL_w@32.png new file mode 100644 index 0000000000000000000000000000000000000000..111e1b0bba2d960a4b8da3eb832a1a4ca3bf95fd Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NEUTRAL_w@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NEUTRAL_w@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NEUTRAL_w@512.png new file mode 100644 index 0000000000000000000000000000000000000000..dd804653ae54250517459381a032e35dd41845e0 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NEUTRAL_w@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NEUTRAL_w@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NEUTRAL_w@64.png new file mode 100644 index 0000000000000000000000000000000000000000..f0cd7d03521620a886f6e32fd67491cdfb1e0737 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NEUTRAL_w@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NOT_CONTROLED.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NOT_CONTROLED.svg new file mode 100644 index 0000000000000000000000000000000000000000..f8c661b5d82b6255ce1fc873dc218ea569bd0a4a --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NOT_CONTROLED.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1,.cls-2{fill:#dce1dd;}.cls-2{stroke:#000;}.cls-2,.cls-3{stroke-width:6.15118px;}.cls-3{fill:#a9a9a9;stroke:#797979;}.cls-4{fill:none;}.cls-5{fill:#797979;}</style></defs><title>valve_hand-solenoid-analog_v05</title><path class="cls-1" d="M28.08516,46.05137a38.8588,38.8588,0,0,1,77.47363,0Z"/><path d="M66.82187,13.34515a35.83964,35.83964,0,0,1,35.25274,29.63063H31.56914A35.83963,35.83963,0,0,1,66.82187,13.34515m0-6.15119a41.933,41.933,0,0,0-41.933,41.933h83.866a41.933,41.933,0,0,0-41.933-41.933Z"/><path class="cls-2" d="M66.82187,49.55634V93.64978"/><polygon class="cls-3" points="7.122 62.65 7.122 124.65 66.822 93.65 7.122 62.65"/><polygon class="cls-3" points="126.522 124.65 126.522 62.65 66.822 93.65 126.522 124.65"/><rect class="cls-4" width="133.64375" height="133.64375"/><circle class="cls-5" cx="66.82187" cy="93.64978" r="10.81973"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NOT_CONTROLED@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NOT_CONTROLED@128.png new file mode 100644 index 0000000000000000000000000000000000000000..f7ba0a8ea108bce956ab7e32a1b81cf6dabb986a Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NOT_CONTROLED@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NOT_CONTROLED@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NOT_CONTROLED@256.png new file mode 100644 index 0000000000000000000000000000000000000000..ac5f5880f736b06077bd4c98bbb60c1fbd3eb4a3 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NOT_CONTROLED@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NOT_CONTROLED@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NOT_CONTROLED@32.png new file mode 100644 index 0000000000000000000000000000000000000000..a40ec87c6158f2ffbcf838a87d92608de6fbce6f Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NOT_CONTROLED@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NOT_CONTROLED@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NOT_CONTROLED@512.png new file mode 100644 index 0000000000000000000000000000000000000000..95d4693cf5480f7cacd5bb7fb7e139dd5fc38585 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NOT_CONTROLED@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NOT_CONTROLED@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NOT_CONTROLED@64.png new file mode 100644 index 0000000000000000000000000000000000000000..0f214f6408c9b252cad0439ba35b25a4f3092d8a Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_NOT_CONTROLED@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_OFF.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_OFF.svg new file mode 100644 index 0000000000000000000000000000000000000000..bdbd8237b9af2d4ffaa9e61c2728d4928251360b --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_OFF.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1,.cls-2{fill:#dce1dd;}.cls-2{stroke:#000;stroke-width:6.15118px;}.cls-3{fill:#c8cdc9;}.cls-4{fill:#a9a9a9;}.cls-5{fill:none;}</style></defs><title>valve_hand-solenoid-analog_v05</title><path class="cls-1" d="M28.085,46.05137a38.8588,38.8588,0,0,1,77.47363,0Z"/><path d="M66.82186,13.34515a35.83964,35.83964,0,0,1,35.25275,29.63063H31.56914A35.83963,35.83963,0,0,1,66.82186,13.34515m0-6.15119a41.933,41.933,0,0,0-41.933,41.933h83.866a41.933,41.933,0,0,0-41.933-41.933Z"/><path class="cls-2" d="M66.82187,49.55634V93.64978"/><polygon class="cls-3" points="7.122 62.65 7.122 124.65 66.822 93.65 7.122 62.65"/><path class="cls-4" d="M12.62107,71.99687H7.12187v4.67354h5.4992V71.99687Zm0,9.34707H7.12187v4.67354h5.4992V81.34394Zm0,9.34708H7.12187v4.67354h5.4992V90.691Zm0,9.34708H7.12187v4.67354h5.4992V100.0381Zm0,9.34707H7.12187v4.67354h5.4992v-4.67354Zm-.84207,6.65-4.14769,2.15374.28216.54339h-.7916v4.67354H9.51755l3.10352-1.61155h0l1.69217-.87868L11.779,116.03513Zm8.29539-4.3075-4.14769,2.15375,2.53423,4.88045,4.14769-2.15374-2.53423-4.88046Zm8.29539-4.30748-4.14769,2.15374,2.53423,4.88046,2.86959-1.49008,1.2781-.66367-2.53423-4.88045Zm8.29538-4.30748-4.1477,2.15374,2.53425,4.88045,4.14769-2.15375-2.53424-4.88044Zm8.29538-4.3075-4.14769,2.15374,2.53425,4.88046,4.14768-2.15374-2.53424-4.88046Zm8.29539-4.30748-4.14769,2.15374,2.53423,4.88045,4.1477-2.15374-2.53424-4.88045Zm7.59942-3.9461L57.40362,92.344l1.51917,2.92562-.19422.374.53186.27618.67743,1.3046.91749-.47642h0l3.51306-1.8242,1.04209-2.00687-2.36387-1.22747-.00629-.00327-.017-.00881-.0032-.00166-.00387-.002-.02647-.01375-.00189-.001-.00508-.00263-.00024-.00013-2.12727-1.10461Zm-7.88794-4.09591-2.53423,4.88045,4.14769,2.15375,2.53424-4.88046-1.23025-.63882-.00028-.00014-.09931-.05158-.00309-.0016-.016-.00833-.00145-.00076-.00986-.00512-.00223-.00115-.00254-.00132-.00381-.002-.00152-.00079-.01019-.00529-.0013-.00068-.00447-.00232-.001-.00051-.00461-.0024-.00144-.00075-.00892-.00463-.00455-.00236-.00192-.001-.00163-.00085-.00534-.00278-.00008,0-.03452-.01792-.0008-.00042-.04565-.0237-.00146-.00076-2.64944-1.37575ZM44.672,82.1482l-2.53424,4.88045,4.14769,2.15374,2.53424-4.88045L44.672,82.1482Zm-8.29539-4.3075L33.8424,82.72116l4.1477,2.15374,2.53423-4.88046-1.82192-.946-.00076-.0004-.017-.00881-.00116-.0006-.00443-.0023-.00269-.0014-.11892-.06175-.00157-.00082-.02179-.01131-.004-.00209-.01316-.00684-.00451-.00234-.04638-.02408-.00077-.0004-.00417-.00217L38.457,78.921l-.00925-.0048-.00178-.00093L38.4416,78.913l-.00028-.00014-.00571-.003-.00116-.0006-.00332-.00173-.003-.00157-.00377-.002-.00968-.005-.00181-.00094-.00429-.00223-.00142-.00073-.00289-.0015-.00384-.002-.02263-.01175-.00027-.00014-.02378-.01235-.00084-.00044L36.37664,77.8407Zm-8.29538-4.30748L25.547,78.41367l4.14769,2.15374L32.229,75.687l-2.78383-1.44553,0,0-.00805-.00418-.00812-.00422-.00121-.00062-.00789-.0041-.00715-.00371-.0089-.00463-.00439-.00228-.00362-.00188-.017-.00883-.01515-.00787-.00351-.00182-.01166-.00605-.00053-.00028-1.26665-.65772Zm-8.29539-4.30749-2.53423,4.88046,4.14768,2.15374,2.53425-4.88045-1.73245-.8996-.00419-.00218-.00943-.00489-2.40163-1.24708Zm-12.664-6.57595V63.19h0v4.13338h3.11975L8.95625,69.79869l4.14769,2.15375L15.63818,67.072l-8.51631-4.4222Z"/><polygon class="cls-3" points="126.522 124.65 126.522 62.65 66.822 93.65 126.522 124.65"/><path class="cls-4" d="M118.22649,66.95727l-2.5763,1.33778-.00061.00031-.00487.00253-.00364.0019-.00018.00009-.00529.00274-.00106.00056-.0112.00581-.00041.00021-.01021.0053-.00143.00075-1.53249.79577,2.53423,4.88045,4.14769-2.15374-2.53423-4.88046Zm-8.29539,4.30749-.60187.31253-.00491.00255-.00261.00136-.00352.00182-.01195.0062-.00528.00275-.004.002-.00074.00039-.00832.00432-.00666.00345-.01286.00668-.01388.00721-.00218.00113-.008.00413-.00224.00117-.00091.00047-.00434.00226-.00007,0-.00865.00448-.00121.00063-.00664.00345-.00347.0018-.00207.00108-.0213.01106-.0028.00145-.00823.00428-.00015.00007-3.39891,1.76493,2.53424,4.88045,4.1477-2.15374-2.53425-4.88045Zm-8.29539,4.30749L97.488,77.726l2.53423,4.88045L104.17,80.4527l-2.53425-4.88046Zm-8.29538,4.30749-4.14769,2.15374,2.53423,4.88045,4.1477-2.15374-2.53424-4.88045Zm-8.29539,4.30748-1.97522,1.02566-.00275.00143-.01048.00544-.00077.0004-.01041.00541-.00344.00178-.00256.00133-.00224.00117L83.033,85.232l-.002.00106-.00444.0023-.00169.00089-.00273.00141-.01624.00843-.003.00159-.00424.0022-.00012.00006-.0354.01838-.00162.00084-.21757.113-.00027.00014-1.8463.95871,2.53424,4.88046,4.14769-2.15375-2.53424-4.88045Zm-8.29538,4.30749-1.94164,1.00822-.00409.00212-.00142.00074-.00336.00174-.00477.00248-.00037.00019-.02391.01242-.00073.00038-.00393.002-.00233.00121-.00485.00252-.00133.00069-.01008.00523-.01029.00534h0l-.01087.00565L74.723,89.547l-2.12111,1.10142,2.11909,4.081-1.236,2.38027,4.14769,2.15374L80.1669,94.383l-1.412-.73319.52887-.27462L76.74956,88.4947Zm-5.555,2.88452-4.37265,2.27055h0l2.8375,1.47342-.20448-.39379,1.73963-3.35018Zm13.12006,5.15748-2.53423,4.88046,4.14768,2.15374,2.53425-4.88045-4.1477-2.15375Zm8.29539,4.3075-2.53424,4.88045,3.29061,1.70869.00115.0006.00329.0017.001.00052.06307.03275.00286.00148.00716.00372.007.00364.00176.00091.00726.00377.00731.0038.0029.00151.00176.00091.00863.00448.00072.00037.00812.00422.00279.00145.00148.00077.00369.00191.00038.0002.00793.00412.00251.0013.00281.00146.00713.0037.00161.00084.00783.00407.00146.00076.00362.00187.00072.00038.00251.0013.00363.00188.00189.001.0012.00062.00383.002.0015.00078.002.00106.00376.00194.00013.00007.004.00208.007.00365.00082.00043.005.00259.00913.00474.00341.00177.00068.00036.0079.0041.00173.0009.01553.00806.00313.00163.033.01713.00106.00055.57624.29922,2.53424-4.88045L92.61,100.84421Zm8.29538,4.30748-2.53424,4.88045,1.49623.77694.00364.00189.001.00052,2.64683,1.3744,2.53423-4.88046-4.14769-2.15374Zm8.29538,4.30748-2.53423,4.88046,4.12774,2.14338.00021.00011.0196.01018h0l.00014.00007,2.53424-4.88044-4.1477-2.15376Zm8.29539,4.3075-2.53423,4.88044,4.1477,2.15375,1.91307-3.68423v1.86455h4.29786l-2.06324,3.97343,3.26458,1.69517h0V114.30764h-5.4992v1.29023l-3.52654-1.8312Zm9.02574-8.80611h-5.4992v4.67354h5.4992v-4.67354Zm0-9.34707h-5.4992V100.287h5.4992V95.61349Zm0-9.34708h-5.4992V90.94h5.4992V86.26641Zm0-9.34708h-5.4992v4.67354h5.4992V76.91933Zm0-14.26955-4.14769,2.15374,1.43769,2.76873h-2.7892v4.67354h5.4992v-9.596Z"/><rect class="cls-5" width="133.64375" height="133.64375"/><circle class="cls-3" cx="66.82188" cy="93.64978" r="10.81973"/><path class="cls-4" d="M66.82188,82.83006h-.03129l-.00521,0h-.00412l-.005,0-.00409,0-.00507,0-.00413,0-.00506,0-.004,0-.00513,0-.00413,0-.005,0-.004,0-.00548.00005-.00362,0-.00625.00005-.00283,0-.00724.00007-.0031,0-.00793.00008-.003,0-.006.00007-.00369.00005-.00552.00007L66.677,82.831l-.00506.00006-.00431.00006-.00484.00007-.00432.00007-.00473.00006-.00433.00007-.00487.00008-.00428.00007-.00477.00008-.00429.00007-.00509.00009-.00394.00007-.00548.0001-.00357.00007-.006.00011-.00319.00007-.00687.00013-.00224.00005-.009.00019-.0032.00007-.00593.00013-.00369.00008-.00538.00012-.00386.00009-.00524.00013-.004.00009-.00511.00013-.00384.00009-.00532.00014-.004.0001-.005.00013-.00416.00011-.00479.00013-.00445.00012-.00469.00013-.00423.00012-.005.00015-.00412.00012-.00523.00015-.00377.00011-.00584.00018-.004.00012-.00829.00026-.00265.00008-.00631.00021-.00394.00013-.00511.00017-.00422.00014-.00478.00016-.00425.00015-.005.00017-.00409.00014-.00489.00018-.00421.00015-.005.00018-.00411.00015-.00485.00018-.0042.00016-.00508.00019-.00394.00016-.00528.0002-.00377.00015-.00565.00022-.0034.00014-.006.00024-.00314.00013-.00882.00037-.0037.00016-.00534.00022-.004.00018-.005.00021-.00411.00018-.00493.00022-.0042.00019-.00487.00022-.00413.00019-.00489.00022-.00431.0002-.00463.00022-.00441.00021-.00461.00021-.00444.00022-.00465.00022-.00434.00021-.00478.00024-.00422.00021-.00518.00026-.00379.00019-.00538.00027-.00374.00019-.00869.00045-.00432.00023-.00469.00025-.00451.00024-.00446.00024-.00489.00027-.004.00021-.00511.00028-.00391.00022-.005.00028-.004.00022-.00489.00028-.00423.00024-.00474.00027-.00406.00023-.005.0003-.00387.00023-.00507.00029-.00388.00024-.005.0003-.00392.00024-.00509.0003-.00327.0002-.01876.00117-.00448.00028-.00468.0003-.00422.00027-.00493.00032-.004.00026-.00508.00033-.00388.00025-.005.00033-.004.00027-.00508.00033-.00378.00026-.00512.00035-.00377.00025-.00523.00036-.00373.00026-.005.00035-.004.00028-.00495.00035-.0038.00027-.00512.00036-.00322.00023-.021.00153-.002.00014-.00568.00042-.00332.00025-.00538.0004-.00346.00027-.00523.00039-.00383.00029-.005.00039-.00375.00028-.0052.00041-.00373.00028-.00516.00041-.00364.00028-.00529.00042-.00364.00029-.00523.00042-.00356.00028-.00535.00043-.0033.00027-.00567.00046-.00213.00018-.0231.00191-.00075.00006-.00647.00055-.0024.00021-.00575.00048-.00321.00028-.00552.00047-.00334.00029-.00542.00047-.00345.0003-.00536.00047-.0036.00032-.00515.00046-.00364.00032-.00544.00048-.00321.00029-.00559.0005-.00311.00029-.00583.00053-.00272.00024-.00606.00056-.00211.0002-.03054.00285-.00209.0002-.00632.0006-.00243.00024-.006.00058-.00293.00028-.00577.00056-.003.00029-.00574.00056-.00309.00031-.00582.00058-.0028.00027-.00595.00059-.00287.00029-.006.0006-.00266.00027-.00608.00061-.00254.00026-.00639.00065-.00092.0001-.03239.00336-.001.00011-.00692.00073-.00185.0002-.0065.00069-.00234.00026-.00608.00065-.00275.0003-.00616.00066-.0024.00026-.00643.00071-.00212.00023-.00675.00074-.00173.00019-.00682.00075-.002.00023-.00683.00076-.00129.00014-.00742.00083-.00036.00005-.04126.00473-.00111.00013-.00679.00079-.0021.00025-.00638.00075-.00234.00028-.0063.00075-.00242.00029-.00629.00075-.00236.00028-.00627.00075-.00247.0003-.00637.00078-.00186.00022-.007.00085-.00109.00013-.049.00611-.00123.00016-.007.00088-.00174.00023-.00676.00086-.00189.00025-.00671.00086-.00193.00025-.00663.00086-.002.00027-.00679.00088-.00163.00022-.007.00091-.0015.0002-.00726.001-.00069.00009-.0582.00789-.00047.00007-.0076.00105-.00109.00015-.00718.001-.00154.00022-.0071.001-.00132.00018-.00733.001-.00107.00015-.00752.00107-.00081.00011-.00784.00112h-.00011l-.05859.00856-.00029,0-.00769.00115-.001.00014-.00751.00113-.001.00015-.00745.00112-.00105.00016-.00753.00114-.00088.00014-.0075.00114-.00108.00016-.06631.01035H65.107l-.00814.0013-.00033.00006-.00792.00127-.00059.00009-.008.00128-.00033.00006-.00808.00131-.00031,0-.09167.01531-.00013,0-.00811.00139-.00035.00006a10.73762,10.73762,0,0,0-2.10308.58708l-.00024.00009-.00751.00295-.00012.00005-.00746.00294-.00044.00017-.06067.02414-.00051.00021-.00705.00283-.00068.00028-.00677.00272-.00117.00047-.00658.00266-.00113.00046-.00651.00263-.00137.00056-.00659.00267-.00074.0003-.007.00285-.00044.00019-.04488.01837-.00067.00028-.00662.00273-.00117.00049-.00626.00258-.0016.00066-.00591.00246-.00208.00085-.00541.00226-.0026.00107-.00526.00219-.00251.001-.00528.0022-.00252.00106-.00534.00223-.00249.001-.00526.00221-.00261.00109-.00527.00221-.00182.00076-.01894.008-.00238.001-.005.00213-.00274.00116-.00492.00209-.003.00126-.00477.002-.00309.00131-.00459.002-.00337.00144-.0045.00193-.00325.00138-.0046.002-.00331.00142-.00453.00194-.00322.00138-.00461.002-.00337.00146-.00445.00191-.00333.00144-.00452.00195-.00322.00139-.00462.002-.00076.00033-.01074.00466-.00392.0017-.00371.00162-.00416.0018-.00374.00164-.00419.00182-.00355.00155L62.488,83.733l-.00363.00158-.00425.00186-.00357.00157-.00439.00193-.00346.00152-.0045.002-.00328.00145-.0047.00207-.00324.00143-.00475.0021-.00307.00136-.00525.00233-.00258.00114-.00727.00323-.00047.00021-.00806.00359-.0005.00022-.00746.00333-.0015.00068-.00637.00284-.002.00092-.00595.00266-.00211.00095-.00568.00255-.00246.00111-.00558.00251-.00224.001-.00579.00261-.002.00092-.00609.00275-.00183.00083-.00607.00275-.0019.00086-.00644.00292-.00139.00064-.00737.00335-.00045.00021-.03221.01474-.00034.00016-.00744.00342-.00131.00061-.0065.003-.00063.00029,2.305,4.99281a5.26939,5.26939,0,0,1,2.225-.48472V82.83006ZM58.5953,86.62167l-.03877.04559L58.556,86.668l-.00466.00551-.00066.00079-.00461.00546-.00078.00093-.00459.00545-.00062.00074-.00474.00563-.00036.00042-.03062.03661-.00053.00064-.00458.00549-.00081.001-.00432.0052-.00112.00135-.00425.00512-.001.00115-.00441.00532-.00061.00074-.02509.03042-.00035.00043-.00438.00534-.00106.00129-.00409.005-.00125.00154-.004.00493-.00125.00153-.00409.005-.001.00127-.0043.00527-.00067.00083-.02478.03051-.00038.00047-.00438.00542-.001.00122-.00409.00507-.00126.00155-.00389.00484-.00143.00177-.00394.0049-.00108.00134-.00419.00522L58.38,86.8815l-.01936.02418-.00045.00056-.00416.00522-.00112.00141-.00382.0048-.00153.00192-.00374.0047-.00141.00179-.00382.0048-.00143.0018-.00381.00481-.00126.0016-.004.00506-.00078.001-.01837.02331-.00134.0017-.00372.00473-.00146.00187-.00367.00468-.00154.002-.0037.00473L58.294,86.99l-.00363.00465-.00156.002-.00378.00484-.001.00134-.0041.00526-.00063.00082-.01878.0242-.00077.001-.00408.00528-.00106.00138-.0038.00492-.00149.00192-.00363.00472-.00146.0019-.00367.00476-.00145.00189-.00377.00491-.001.00126-.00419.00546-.00019.00024-.01861.02435-.00123.00162-.0037.00486-.00145.0019-.00345.00454-.00176.00231-.00338.00446-.00173.00229-.0033.00436-.00182.00239-.00346.00457-.00125.00166-.0038.005-.00084.0011-.01275.01692-.00132.00177-.00331.0044-.00192.00256-.003.004-.00212.00283-.00291.00389-.00228.00305-.00294.00393-.002.00264-.00319.00428-.00189.00253-.00317.00426-.00184.00247-.00327.00439-.00118.00159-.01205.01625-.00165.00223-.003.004-.00217.00293-.003.00407-.002.00268-.00308.00419-.002.00264-.00315.00429-.0019.00258-.003.00414-.00212.00288-.003.00407-.00192.00262-.00311.00425-.00125.00171-.0067.00917-.00186.00255-.003.00406-.002.00276-.003.00415-.002.00279-.00307.00422-.00183.00253-.00314.00433-.002.00271-.003.00409-.00211.00292-.00285.00394-.00227.00314-.00274.00379-.00229.00319-.00271.00376-.00228.00317-.00531.00737-.00216.003-.00274.00383-.00228.00318-.00264.00368-.00236.00329-.0027.00379-.0023.00322-.00261.00364-.00244.00343-.00256.00359-.00249.00349-.00243.00342-.00261.00367-.00246.00346-.00238.00336-.00259.00365-.00117.00165-.00625.00883-.00226.00319-.0027.00383-.00218.00309-.00281.004-.00217.00308-.00269.00383-.00227.00322-.00261.00372-.00241.00343-.00254.00362-.00228.00325-.00271.00388-.00221.00315-.00266.00381-.00253.00362-.00318.00455-.00388.00557-.00272.00392-.00215.00308-.00264.0038-.00234.00338-.00238.00342-.00259.00374-.00234.00337-.00259.00374-.00235.0034-.00244.00354-.00254.00367-.00237.00344-.00245.00356-.0025.00362-.00244.00354-.00237.00346-.00513.00748-.00194.00281-.00246.0036-.00252.00368-.00221.00323-.00263.00384-.0023.00338-.00262.00383-.00225.0033-.00256.00377-.00232.00341-.00265.00389-.00216.00319-.00278.00409-.00206.003-.0032.00472-.00162.00239-.00482.00712-.0004.0006-.00442.00655-.00173.00258-.00306.00453-.00216.00321-.00263.00391-.00223.00332-.00256.00381-.00239.00357L57.826,87.636l-.00237.00354-.00247.00369-.00235.00352-.00266.004-.002.003-.00274.00411-.0022.0033L57.806,87.666l-.00343.00517L57.8,87.67509l-.00232.00349-.00251.00379-.00228.00345-.00242.00365-.00238.0036-.00244.0037-.00229.00347-.00249.00377-.00218.00332-.00274.00416-.002.0031-.0026.004-.00219.00335-.00264.004-.0021.00321-.00456.007-.00192.00295-.00275.00421-.00235.00358-.00234.0036-.00242.00371-.00232.00357-.00228.0035L57.741,87.765l-.00234.00361-.0023.00354-.0024.0037-.0022.00341-.00254.00392-.00223.00345-.00234.00362-.00261.004-.00312.00484-.00347.00539-.00209.00325-.00253.00394-.0022.00342-.00254.004-.00215.00335-.00245.00383-.00227.00354-.00239.00375-.0023.00361-.00228.00357-.00235.00368-.00246.00386-.00212.00334-.00273.00429-.00188.003-.00337.0053-.00167.00264-.00411.00649-.00193.00305-.00268.00424-.00212.00337-.00245.00388L57.66,87.8915l-.00228.00362-.00226.00359-.00235.00374-.00232.0037-.00224.00358-.00229.00365-.0024.00383-.00217.00348-.00275.00438-.00176.00283-.00323.00518-.003.00484-.0028.0045-.002.00317-.0026.00418-.002.00331-.00252.00406-.00215.00347-.00232.00373-.00229.00371-.00231.00374-.00219.00356-.00237.00383-.00215.00349-.00243.004-.00214.00347-.00233.00379-.00219.00357-.0031.005-.00327.00533-.00244.004-.00235.00384-.00212.00348-.00243.004-.002.0033-.00247.004-.00211.00347-.0022.00362-.00236.00389-.00217.00358-.0023.00378-.00219.00361-.00217.0036-.00236.00389-.002.00338-.00239.004-.0014.00233-.0053.0088-.002.00325-.00244.00406-.002.00326-.00237.004-.00217.00362-.00222.00371-.00218.00364-.00225.00377-.00222.00371-.00222.00373-.00215.0036-.00227.00382-.00223.00375-.00219.00367-.00207.00348-.00435.00733-.00219.0037-.00216.00365-.0022.00373-.00235.004-.002.00345-.00227.00385-.00213.00361-.00225.00381-.00218.00372-.00216.00368-.00216.00367-.00229.00391-.00205.0035-.00229.0039-.002.00351-.00233.004-.00208.00356-.00894.01534-.00174.003-.00243.00418-.00186.0032-.00241.00417-.00194.00336-.00242.00417-.0018.00312-.00251.00434-.00181.00315-.00246.00426-.00187.00323-.00238.00416-.00192.00332-.00243.00425-.00078.00134-.00691.01207-.00052.0009-.00266.00466-.00166.0029-.00255.00448-.00167.00293-.00253.00444-.00172.003-.00256.0045-.00168.00295-.00246.00434-.00182.00322-.00248.00437-.00163.00287-.00259.0046-.00133.00234L57.384,88.355l-.00091.00162-.0027.00481-.00154.00275-.00259.00462-.00158.00282-.00249.00445-.00179.00319-.00245.0044-.00162.00289-.00258.00464-.00154.00276-.00269.00483-.00122.00219-.00294.0053-.00082.00147-.01023.01849-.001.00187-.00258.00469-.00161.00292-.0025.00454-.00163.003-.00248.00451-.00165.003-.0025.00457-.00158.00287-.00255.00465-.00147.0027-.00273.005-.00111.002-.00293.00536-.001.00178-.01018.01874-.00074.00135-.00292.0054-.0012.00221-.00274.00506-.00131.00243-.00273.00506-.0013.0024-.00282.00524-.00106.002-.003.00556-.001.00183-.003.00556-.001.00183-.003.0057-.0001.00018-.0109.02042-.00069.00128-.00288.00542-.00115.00215-.00282.00532-.00116.00219-.00278.00525-.00118.00222-.00281.00531-.00117.00221-.00277.00525-.00116.00221-.00287.00544-.00068.00128-.01444.02753-.00024.00047-.00322.00616-.00076.00144-.00305.00587-.00084.0016-.003.00573-.001.0019-.00294.00567-.00083.00158-.0031.006-.00063.00123-.00325.00627-.00023.00044-.01447.02808-.00042.00084-.0031.006-.00079.00156-.00309.006-.0007.00137-.00308.006-.00076.0015-.00309.00607-.00064.00124-.0032.0063-.00038.00075-.02172.043-.00026.00053-.00335.00666-.00044.00087-.00322.00644-.00058.00115-.00324.00648-.0003.0006-.02509.05053-.00035.00072-.00329.00667-.00039.0008-.00329.00669-.00034.00069-.00342.007v0l-.02494.05121-.00031.00063-.00327.00678-.00034.0007-.00323.0067-.00044.00089-.00328.00682,0,.0001-.02471.05172,0,.00007a10.7409,10.7409,0,0,0-.63437,1.69147l5.29317,1.49115a5.26055,5.26055,0,0,1,1.0752-2.00522l-4.17947-3.574Zm2.97083,7.86594-5.43278.85212a10.73622,10.73622,0,0,0,.68079,2.42992l.0003.00072.00287.007.0003.00073.00286.00692.00036.00088.00283.00683.00035.00083.0029.007.00008.00019.01553.03716.00038.00089.00271.00644.00057.00137.0026.00616.00076.00179.0024.00569.001.00233.00241.00567.00078.00184.00257.00608.00056.0013.00282.00664,0,0,.01273.02979.00023.00053.00253.00589.00093.00216.00235.00547.001.00231.00234.00543.00108.0025.00226.00523.00113.00259.00227.00525.00116.00267.00222.00512.00117.00268.00226.0052.001.00234.00766.01753.00144.00329.00193.00438.00153.0035.002.00451.00148.00336.002.00447.0015.00339.002.00457.00147.00333.002.00441.0016.00361.00187.00422.00171.00384.00176.004.00183.0041.00171.00383.00215.00483.00132.003.00346.00773.00141.00315.00215.00479.00159.00354.00193.00432.00165.00365.002.00435.00159.00353.002.00445.00151.00333.00219.00485.00138.003.0022.00486.00142.00314.00226.005.00134.00294.0025.00549.00108.00238.00334.00733.00028.0006.00361.0079.00107.00235.00258.00562.00112.00243.00257.00561.00116.00251.00248.0054.00125.00271.00238.00515.00136.00295.00241.00522.00115.00249.00266.00573.001.00223.00289.00624.00075.00161.00331.00711.00041.00088.00757.01622.00023.00049.0035.00747.00064.00136.003.00647.00091.00193.00294.00623.00079.00169.003.00628.00084.00178.003.00643.00071.00149.00323.00682.00052.0011.01933.04056h0l.00381.008.00027.00055.00366.00761.0002.00042.00366.0076.0003.00061.03143.06461.00026.00053.00377.00767.00012.00026a10.81106,10.81106,0,0,0,.71553,1.24l4.57079-3.05762a5.232,5.232,0,0,1-.827-2.11284Zm2.47752,3.70155-2.87974,4.68489q.39323.24171.808.45019l.00006,0,.00775.00389.00057.00028.00754.00378.00038.00019.00789.00394h0l.04837.024.00018.00008.00767.00378.00077.00038.00715.00352.001.00048.00715.0035.00074.00036.00727.00356.00081.0004.00764.00372.0002.0001.04048.01964.00008,0,.008.00383.00034.00017.00738.00355.00115.00055.00689.0033.00115.00056.00693.00332.001.00049.00725.00347.00072.00034.00748.00357.00056.00027.03221.01527.00109.00052.00685.00323.00139.00066.00654.00307.00172.00081.00624.00293.00174.00082.0063.00295.00174.00082.00672.00314.00108.00051.00735.00343.00067.00031.03221.01495.00154.00071.00645.003.00182.00083.006.00278.00217.001.006.00274.002.00091.006.00277.002.0009.00629.00288.00166.00076.00682.00312.00112.00051.02437.01107.0004.00018.00753.00341.00157.00071.00633.00286.00207.00093.00591.00266.00228.001.00575.00258.00227.001.00567.00254.00248.00111.00569.00255.00222.001.00622.00278.00175.00078.00764.0034.00026.00011.01633.00725.00111.0005.00682.003.00205.00091.006.00263.00238.00105.00547.00241.00277.00122.00538.00236.00254.00112.00563.00246.00234.001.00586.00256.00221.001.00585.00256.00223.001.0069.003.001.00043.0163.00707.00129.00056.00663.00287.00243.00105.0056.00241.00256.0011.00546.00235.00283.00122.0051.00219.00305.00131.00489.00209.00322.00138.00509.00218.00273.00116.00562.0024.00245.001.00646.00275.00148.00063.01641.007.00042.00018.00749.00317.00222.00093.00579.00244.0027.00114.00523.0022.00309.00129.005.00209.00311.00131.00485.002.0033.00138.00471.002.00337.00141.00485.002.0031.00129.00547.00227.00256.00107.00671.00278.00134.00055.008.00329.00307.00127.00485.002.00381.00156.00425.00176.00365.00149.00443.00182.00361.00148.00453.00186.0034.00139.00464.0019.00361.00147.00445.00181.0035.00143.00463.00188.00352.00143.00478.00194.00317.00128.00521.00211.00352.00143.00732.00295.00265.00107.00535.00215.00322.0013.005.002.00338.00136.00447.00179.0038.00152.00438.00175.00374.00149.0042.00168.00388.00154.00427.0017.00387.00154.004.0016.004.00159.00449.00178.0035.00139.0057.00224.00232.00092.00789.00311.00408.0016.00394.00155.0043.00169.00377.00147.00415.00163.00395.00154.00428.00167.00369.00144.00439.00171.0036.0014.0046.00179.00348.00135.00436.00169.00382.00148.00441.0017.00338.00131.00463.00179.00308.00118.01768.00679.003.00114.00478.00183.00337.00129.0047.00179.00325.00124.00474.0018.00345.00131.00466.00178.00329.00124.00473.00179.00343.0013.00465.00176.00335.00126.00471.00178.00351.00132.00456.00172.00328.00123.01722.00645.00337.00126.00474.00176.00337.00126.00457.0017.00356.00132.0045.00167.00367.00136.00435.00161.00378.0014.00443.00163.00369.00136.0044.00163.0037.00136.00448.00164.00362.00133.00448.00164.00325.00119.01822.00664.00248.00091.00494.00179.00321.00117.005.0018.00307.00111.00489.00176.00338.00122.00462.00167.00352.00127.00459.00165.00363.0013.00456.00164.00334.0012.00489.00174.00319.00114.00491.00176.00306.00109.00511.00182.00122.00043.01261.00448.00192.00068.00538.0019.00278.001.00508.00179.00305.00108.00528.00186.00272.001.00539.00189.00269.001.00544.0019.00268.00094.00532.00185.00286.001.00532.00185.00257.0009.0056.00194.002.00069.02105.00728.00079.00026.00563.00194.00256.00089.00533.00182.00281.001.00514.00175.00317.00109.00486.00166.00332.00113.00484.00165.00342.00116.00478.00163.00335.00113.00478.00162.00362.00122.00463.00157.00312.00105.00517.00174.00113.00038.02083.007.002.00067.00539.0018.00289.001.00519.00173.003.001.00494.00164.00336.00111.00491.00163.00332.00109.00481.00159.00342.00113.00486.0016.00324.00107.005.00164.0027.00089.02662.00869.0032.001.005.00161.00314.001.005.0016.00343.00111.00481.00155.00334.00108.0049.00157.00338.00109.005.0016.003.001.0053.00169.00283.00091.00544.00173.00243.00078.00576.00183.00164.00052.02047.00649.00205.00064.00519.00163.00322.001.0049.00153.00338.00107.00484.00151.00345.00108.0048.0015.00366.00114.0044.00137.004.00126.00446.00138.00369.00114.00458.00142.0035.00109.005.00154.0021.00064.01964.006.00256.00078.00542.00166.00283.00086.00506.00154.00343.001.00486.00147.00334.001.00491.00149.00351.00106.00483.00146.00339.001.0049.00147.00352.00106.00484.00146.0034.001.00486.00145.00342.001.01809.00538.00309.00092.00494.00146.00341.001.00493.00146.00343.001.00474.0014.00363.00107.00488.00143.00337.001.005.00145.0034.001.00494.00144.00343.001.0049.00143.00312.00091.00544.00157.0016.00047.01993.00575.00293.00084.00506.00146.00326.00093.00489.0014.00361.001.00461.00132.00384.00109.00445.00127.004.00114.00447.00127.00378.00107.00464.00131.00388.0011.0045.00126.00386.00109.00457.00129.00385.00108.00457.00127.00217.00061.01053.00294.00379.00106.00428.00119.00412.00114.00468.00129.00364.001.00487.00134.00348.001.00491.00135.00363.001.00461.00127.0039.00106.00457.00126.00393.00107.00444.00121.004.00109.00451.00122.00439.00119.00392.00107.006.00163.006.00162.00467.00126.00419.00112.0042.00113.00438.00117.00418.00112.00423.00113.00423.00113.00425.00113.0043.00114.00417.00111.00434.00115.00412.00108.00457.00121.00392.001.00454.0012.004.00105.00462.00121.00392.001.00507.00132.007.00182.00464.00121.00389.001.00468.00121.00392.001.00464.0012.0038.001.00478.00123.0039.001.00458.00118.004.001.00445.00113.00417.00107.00452.00115.00386.001.00474.0012.00394.001.00491.00125.00351.00088.00685.00173.00347.00087.0067.00168.00318.0008.00525.00131.00384.001.00479.00119.00384.00095.00468.00117.00384.001.00484.0012.00384.00094.0046.00114.004.001.00474.00117.00379.00093.00515.00126.00329.0008.006.00146.00266.00065.00757.00183.00126.00031.00826.002.00307.00074.00554.00134.00357.00085.005.00119.00375.0009.0049.00117.00379.00091.00486.00116.00362.00086.00512.00121.00359.00085.005.00119.00357.00085.00511.0012.00356.00084.0058.00136.00268.00063.00787.00184.0008.00018.00866.002.00226.00053.00632.00146.003.0007.00578.00133.003.00069.00558.00128.0033.00076.00542.00125.0033.00075.00536.00122.0033.00076.00562.00127.003.00069.00594.00135.00267.0006.00683.00154.00183.00042.01764.004.00069.00016.008.00178.002.00044.0068.00151.00219.00048.00645.00143.00271.0006.00606.00133.00267.00059.00616.00135.0026.00057.00649.00142.00215.00047.00672.00146.00215.00046.00787.00171.0007.00015.02678.00576.00109.00023.00778.00165.00144.00031.00725.00154.002.00042.00694.00146.00194.00041.00678.00143.00221.00046.00692.00145.00177.00037.0076.00159.00113.00023.04481.00923.00087.00017.00778.00158.00179.00037.00723.00146.00156.00031.00732.00148.0017.00034.00741.00148.00141.00029.00781.00156.001.0002.04517.0089h.00006l.00873.00169.00093.00018.00806.00156.001.0002.008.00153.001.0002.00827.00159.0006.00011.00875.00167.00018,0,.05451.01022.00054.0001.00845.00156.00074.00014.00822.00151.001.00017.00832.00152.00059.00011.00892.00162h0l.05485.00979.00015,0,.00888.00156.00042.00007.00852.00149.00076.00013.0087.00151.00017,0q.28872.05.58247.08465l.64246-5.46155a5.23067,5.23067,0,0,1-2.14309-.74417Zm6.38624-.629a5.348,5.348,0,0,1-1.96483,1.15316l1.6952,5.23139a10.77264,10.77264,0,0,0,2.57537-1.23284l.00008-.00006L72.79,102.676l.00007-.00005.00671-.00446.0001-.00006.00661-.0044.00031-.00019.04688-.03134.00045-.00031.00594-.004.00123-.00083.00556-.00375.00141-.001.00542-.00366.00167-.00112.0054-.00366.001-.00067.03234-.022.00074-.00051.00562-.00383.00147-.001.00514-.00352.002-.00133.005-.00345.00184-.00127.00513-.00352.00159-.00109.00551-.00379.00059-.0004.02552-.0176.00093-.00065.00515-.00356.002-.00138.00483-.00335.00209-.00145.00489-.0034.002-.00139.00492-.00343.002-.00136.005-.00348.00177-.00124.00525-.00367.00065-.00045.02485-.01742.00159-.00112.00484-.00341.00218-.00153.00458-.00323.00247-.00174.00438-.00309.00257-.00182.00448-.00317.00235-.00166.00454-.00322.00243-.00172.00452-.0032.00237-.00169.01565-.01113.0024-.00172.00416-.003.00281-.002.004-.00284.00308-.00221.00391-.0028.003-.00215.00393-.00282.00313-.00225.0038-.00273.00321-.00231.00374-.00269.00322-.00232.00381-.00275.002-.00145.0087-.00629.00279-.002.00359-.00259.00343-.00249.00359-.0026.00336-.00244.00357-.00259.00341-.00248.00358-.00261.00351-.00255.00328-.00239.00388-.00283.00313-.00229.004-.00289.003-.00219.004-.003.003-.0022.00674-.00494.00238-.00175.00453-.00332.003-.00219.004-.003.0031-.00228.00376-.00278.00319-.00234.004-.00293.003-.00222.00383-.00284.00317-.00235.00392-.00289.003-.00225.004-.00295.003-.0022.00581-.00432.001-.00077.007-.00519.00172-.00128.00529-.00395.002-.00151.00494-.0037.00236-.00177.00462-.00345.0024-.0018.00454-.00341.00254-.00191.00466-.0035.00217-.00163.00486-.00366.00224-.00169.006-.00452.00079-.00059.01421-.01074.001-.00077.00577-.00438.002-.00153.005-.00382.002-.00155.00484-.00369.0022-.00167.00491-.00375.00208-.00158.00491-.00375.002-.00154.00582-.00446.001-.00075.02117-.01624.001-.00078.006-.00462.00121-.00093.00573-.00442.00152-.00117.00554-.00428.00142-.0011.00554-.00429.00155-.0012.00616-.00478.00057-.00043.02837-.0221.00045-.00034.00643-.005.001-.00079.006-.00472.00105-.00082.006-.0047.001-.00077.00656-.00517.00024-.00018.04249-.0336.00026-.0002.00677-.00539.00033-.00027q.31193-.24837.6048-.51888l-3.73117-4.03974Zm7.20385-4.32666-5.49527.2079q.00395.10373.00394.2084a5.28509,5.28509,0,0,1-.403,2.0387l5.07821,2.1102a10.73661,10.73661,0,0,0,.55189-1.72693l.00011-.00047.00175-.00767.00008-.00035.00167-.00733.00022-.001.00163-.00724.00017-.00072.00164-.00727.0002-.00088.00166-.00737.00013-.00057.00163-.00729.00022-.001.00159-.00709.00021-.001.00158-.0071.00023-.001.00158-.00713.0002-.00092.00156-.007.00026-.00117.00153-.007.00023-.001.00156-.00711.00021-.001.00157-.0072.00018-.00082.00158-.00723.0002-.001.00154-.00713.00023-.001.00153-.00709.00022-.001.00154-.00715.00019-.00087.00152-.0071.00027-.00125.00147-.0069.00024-.0011.00152-.00715.00016-.00075.00157-.00743.00012-.00054.0016-.00761.00009-.00043.00163-.00773.00006-.00026.00165-.00786,0-.00022.00165-.0079.00005-.00022.00163-.00786.00008-.00035q.02016-.09709.0386-.19491l0-.00019.0015-.008,0-.00021.00138-.00738.00017-.00091.00134-.00715.00019-.00105L77.46,95.6341l.0002-.001.00135-.0073.00016-.00087.00124-.00673.0003-.00165.0012-.00655.0003-.00164.00117-.00639.00034-.00187.0012-.00658.00027-.00155.00119-.00654.00031-.00172.0012-.00665.00026-.00149.0012-.00665.00028-.0016.0012-.00671.00027-.00149.00113-.00641.00036-.002.00109-.00618.00037-.0021.001-.00587.00043-.00249.001-.00585.00041-.00234.001-.00586.00041-.00237.00105-.006.00038-.00222.001-.00593.0004-.00234.00105-.0061.00034-.002.00106-.00618.00037-.00212.001-.00607.00039-.0023.001-.00582.00042-.00246.001-.00592.00039-.00231.001-.00585.00041-.00241.001-.006.00038-.00224.001-.00595.00038-.0023.001-.00609.00035-.00214.001-.0059.00043-.00264.00093-.00566.00043-.00261L77.5,95.40455l.00045-.00279.00091-.00563.00041-.00251.00092-.00571.00042-.00258.00094-.00581.00036-.00229.001-.006.00033-.00213.001-.0063.00027-.00172.001-.00647.00031-.002.001-.00636.00029-.00188.001-.00628.00034-.0022.001-.00623.00026-.00165.001-.00662.00025-.00163.001-.00669.00023-.00153.001-.00668.00026-.00172.001-.00675.0001-.00059.00116-.00763.00015-.001.0011-.00727.00016-.00108.00108-.00712.00024-.00164.01189-.08123v-.00006l.001-.00737.00014-.001.001-.00677.00022-.00159.001-.007.00017-.00128.00091-.00648.00027-.00195.00084-.006.00033-.00234.00077-.00562.00039-.00279.00079-.00578.00033-.00248.00081-.00587.00034-.00251.00078-.00573.00036-.00263.00075-.00563.00037-.00275.00078-.00579.00033-.00247.00076-.00573.00037-.00274.00073-.0055.00038-.00286.00071-.00535.0004-.00309.00071-.0054.00037-.00284.00072-.00552.00037-.00293.00071-.0054.00038-.00295.00068-.00532.0004-.00312.00068-.0053.00038-.003.00068-.0053.0004-.00316.00064-.0051.00043-.00336.00061-.0049.00044-.00353.00062-.00494.00042-.00338.00061-.005.00044-.00353.0006-.00491.00041-.00339.00061-.00493.00043-.00357.0006-.005.00039-.0032.00064-.00522.00039-.00328.00061-.00511.00039-.00324.00061-.0051.0004-.00337.00061-.00514.00036-.00308.00062-.00531.00038-.00317.00061-.00526.00036-.00309.00061-.00521.00038-.00334.00059-.00514.00036-.00311.0006-.00527.00039-.00339.00055-.00488.00042-.00366.00053-.00472.00043-.00383.00052-.00461.0004-.00365.00053-.0048.00043-.00382.0005-.0045.00044-.004.00049-.00446.00042-.00389.00051-.00464.00037-.00348.00054-.005.00039-.00359.00051-.00486.00039-.00356.00051-.00481.00039-.00376.00051-.00474.00035-.00332.00054-.00515.00036-.00345.00051-.00493.00035-.00339.00054-.00513.00029-.00294.00057-.00555.00024-.00229.00063-.0062.00019-.00182.00066-.00659.00022-.00212.00061-.00621.00035-.0035.0005-.005.00023-.00236.00378-.03884.00008-.00093.00056-.00594.00025-.00256.00046-.00482.00034-.0037.00043-.00462.00035-.00384.00046-.0048.00033-.00363.00047-.00513.0003-.00333.00045-.005.00032-.00353.00047-.0051.00029-.00332.00047-.00525.00029-.0032.00046-.00522.0003-.00332.00041-.00468.00034-.0039.00039-.00456.00034-.00388.00042-.00482.0003-.00358.00044-.00509.00029-.00341.00041-.00481.00031-.00375.0004-.00481.00031-.00364.0004-.00484.0003-.00364.00041-.00494.00029-.00357.00038-.0047.00032-.00387.00038-.0047.0003-.00375.00039-.0048.00029-.00365.00038-.0049.00029-.00364.00037-.0047.00031-.00388.00035-.00464.0003-.00384.00036-.00472.00029-.00372.00036-.00476.0003-.00393.00032-.00431.00033-.00431.00031-.00426.00031-.00422.00032-.00432.00031-.00413.00032-.00447.00029-.00407.00032-.00437.0003-.00418.00032-.00441.00029-.00407.00031-.00447.00028-.004.00032-.00457.00028-.00409.00029-.00426.0003-.00435.0003-.00428.00028-.00422.00029-.00424.00028-.00429.00029-.00435.00028-.00411.00029-.0044.00026-.0041.0003-.00454.00025-.0039.0003-.00463.00025-.00384.00029-.00472.00026-.00405.00027-.00432.00027-.00436.00026-.00426.00027-.00426.00026-.00425.00025-.00418.00027-.00446.00025-.00415.00025-.0043.00026-.00439.00025-.0042.00025-.00425.00025-.00432.00024-.00413.00025-.00446.00025-.00436.00023-.00409.00026-.00468.00022-.00392.00025-.00456.00022-.004.00023-.00424.00024-.00441.00021-.004.00024-.00456.00023-.00437.00022-.00419.00023-.00442.00022-.00416.0002-.00376.00024-.0049.00021-.004.00022-.00446.0003-.00613.00012-.00248.00036-.00728.00032-.00655.00015-.00327.00018-.00386.00023-.0048.00022-.00487L77.63,94.155l.00024-.00513.00016-.00354.00021-.00484.00017-.00369.0002-.00462.00018-.004.00021-.00479.00016-.00369.00021-.0051.00015-.00351.00022-.00527.00013-.00325.00021-.00494.00015-.00379.00018-.0046.00016-.004.00019-.00464.00015-.004.00018-.00469.00015-.00389.00017-.00433.00016-.00449.00015-.00384.00017-.00469.00015-.00408.00016-.00455.00015-.00422.00015-.00424.00015-.00438.00015-.00436.00015-.00425.00013-.00425.00016-.00446.00013-.00417.00015-.00451.00013-.004.00014-.00442.00013-.00436.00013-.00426.00013-.00424.00013-.00436.00013-.00436.00013-.00433.00012-.00415.00013-.00443.00012-.00433.00012-.00434.00011-.00412.00013-.00456.0001-.00416.00012-.00441.0001-.00419.00012-.00433.00011-.00455.0001-.004.00011-.00451.0001-.00425.0001-.00442.0001-.0042.0001-.00438.00009-.00422.0001-.00455.00009-.00412.00009-.00433.00009-.00439.00009-.0043.00008-.00433.00008-.00421.00009-.00442.00008-.00439.00008-.00422.00007-.00435.00008-.00433L77.64,93.836l.00007-.00431.00006-.00422.00007-.00444.00007-.00435.00007-.00425.00006-.0043.00006-.00441.00006-.00424.00006-.00444.00006-.00406.00006-.00458,0-.0043.00006-.00432.00005-.00426.00005-.00441,0-.00432.00005-.00434,0-.00433,0-.0043.00005-.00453,0-.00413,0-.00455,0-.0041,0-.00461,0-.00408,0-.00447,0-.00419,0-.00477,0-.00388,0-.00479,0-.0039v-.00518l0-.00343,0-.00546V93.679l0-.00316v-.02607h0v-.02639l0-.00757v-.00264l0-.00549v-.00256l0-.00763V93.596l0-.00615v-.00325l0-.00443,0-.0037,0-.00494,0-.00545,0-.004,0-.00419,0-.00333,0-.00445,0-.00221-.00008-.00953,0-.002-.00005-.00529,0-.00177-.0003-.025v-.00007q-.00131-.10036-.00443-.20031l-.00006-.002L77.636,93.299l-.0001-.00329-.00016-.005-.00021-.00623-.00008-.00241-.0002-.006-.00006-.00174-.00147-.04077Zm-4.10518-8.07467L70.11713,89.472a5.39576,5.39576,0,0,1,1.45159,1.76947l4.9-2.49615-.00827-.01622-.00022-.00042-.004-.00776-.00019-.00034-.004-.00779-.00018-.00035a10.84838,10.84838,0,0,0-1.74985-2.47676l-.00007-.00008-.00608-.00645-.00025-.00026-.006-.00634-.00023-.00025-.03121-.0329-.00014-.00015-.006-.00632-.00044-.00046-.0056-.00586-.00085-.0009-.0054-.00564-.00078-.00081-.00556-.00582-.00058-.0006L74.608,86.137l-.00091-.00094-.00517-.00536-.00127-.00131-.00486-.005-.00145-.0015-.00477-.00492-.00135-.00139-.00479-.00494-.00148-.00153-.00516-.0053-.00086-.00088-.01859-.01905-.00142-.00145-.00467-.00478-.00183-.00186-.00422-.00431-.002-.00209-.0041-.00417-.00217-.00221-.00375-.00381-.00245-.00249-.004-.004-.00209-.00212-.00474-.00481-.00134-.00135-.00607-.00614-.00182-.00184-.00422-.00425-.00268-.00271-.0034-.00343-.0027-.00272-.00342-.00344-.00281-.00282-.00327-.00328-.00282-.00284-.00326-.00327-.00295-.00295-.00321-.00322-.00279-.0028-.00347-.00345-.00275-.00276-.00361-.0036-.00594-.00592-.0022-.00219-.00355-.00353-.00266-.00265-.00336-.00333-.00264-.00262-.00353-.0035-.00252-.00251L74.43327,85.96l-.00223-.0022-.00383-.00379-.00222-.00219L74.421,85.9479l-.00148-.00147-.02127-.02092-.00081-.0008-.00459-.00449-.00154-.0015-.00434-.00426-.00174-.0017-.00421-.00411-.00181-.00177-.00441-.0043-.0013-.00127-.00474-.00462-.00081-.00078-.028-.02717-.00066-.00064-.005-.00478-.00121-.00117-.00487-.0047-.001-.00091-.00517-.005-.00055-.00053-.03475-.03328-.00005-.00005-.0057-.00543-.00026-.00025-.00566-.00538-.00024-.00023q-.35795-.34026-.74641-.6476Zm-6.70668-2.32875v5.49919a5.366,5.366,0,0,1,1.25244.147l1.28495-5.347-.00078-.00018-.00808-.00194-.001-.00025-.03766-.00894-.00045-.0001-.00906-.00213-.0004-.0001a10.80042,10.80042,0,0,0-1.60785-.2509h0l-.01-.00079h-.00008l-.0499-.00382-.00068,0-.00936-.00069-.00052,0-.04965-.00353-.001-.00006-.009-.00061-.001-.00007-.00933-.00063-.00043,0-.03-.002-.00038,0-.00923-.00059-.00133-.00008-.00858-.00054-.00126-.00007-.00922-.00057-.00049,0-.02-.00121h0l-.00966-.00057-.00128-.00007-.00839-.00049-.00177-.0001-.0082-.00047-.00159-.00009-.00888-.0005-.00079,0-.02959-.00161-.00157-.00008-.00807-.00042-.002-.00011-.00813-.00042-.00148-.00007-.00932-.00047-.00035,0-.02-.001-.00065,0-.009-.00042-.00168-.00008-.008-.00038-.0021-.00009-.00787-.00036-.0019-.00009-.00865-.00039-.001,0L67.29079,82.84l-.0011-.00005-.00856-.00036-.002-.00009-.00769-.00031-.00236-.0001-.00769-.00031-.002-.00008-.00888-.00035-.00075,0-.01956-.00074-.00234-.00009-.00731-.00026-.0028-.0001-.0069-.00025-.00282-.0001-.00725-.00025-.0024-.00008-.00823-.00028-.0014,0-.0099-.00032h-.00014l-.00939-.0003-.00252-.00008-.007-.00021-.00328-.0001-.0063-.00019-.0035-.00011-.00642-.00018-.00308-.0001-.0077-.00021-.00186-.00005L67.118,82.834l-.00093,0-.0086-.00022-.00268-.00007-.007-.00018-.003-.00008-.00658-.00016-.0032-.00007-.00687-.00017-.00276-.00006-.008-.00018-.00163,0-.00963-.00021-.002,0-.00759-.00016-.00308-.00006-.00648-.00013-.00341-.00007-.00629-.00011-.00349-.00007-.00652-.00012-.003-.00005-.00787-.00014-.00178,0-.00957-.00015-.00254,0-.00688-.00011-.0037-.00005-.006-.00009-.00369-.00005-.006-.00008-.00353-.00005-.00665-.00008-.00295,0-.00832-.0001-.00128,0-.00959-.0001-.00255,0-.007-.00007-.00341,0-.00617-.00006-.00372,0-.00583,0-.00392,0-.00633-.00005-.00308,0-.00836-.00005h-.00131l-.00949,0-.00313,0-.00635,0-.00384,0-.00592,0h-.03254Z"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_OFF@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_OFF@128.png new file mode 100644 index 0000000000000000000000000000000000000000..496792d18b05f2b5d8bd728809b955c13dd0da01 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_OFF@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_OFF@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_OFF@256.png new file mode 100644 index 0000000000000000000000000000000000000000..37c6afff32d5d91e913af48ce05fee9259187777 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_OFF@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_OFF@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_OFF@32.png new file mode 100644 index 0000000000000000000000000000000000000000..4a55ef05c584ba01a7bb2d2b8c12a660b42f95f8 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_OFF@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_OFF@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_OFF@512.png new file mode 100644 index 0000000000000000000000000000000000000000..39305194c067ec54d28bc4031f32fefa91357f72 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_OFF@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_OFF@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_OFF@64.png new file mode 100644 index 0000000000000000000000000000000000000000..edf99746a97fe4d19659ec894fe80a644d5a101b Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_OFF@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_OK.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_OK.svg new file mode 100644 index 0000000000000000000000000000000000000000..a9c164fdd1a045dc24a882dd929ade974f11d4e9 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_OK.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1,.cls-2{fill:#dce1dd;}.cls-2{stroke:#000;}.cls-2,.cls-3{stroke-width:6.15118px;}.cls-3{fill:#3dd83d;stroke:#288c28;}.cls-4{fill:none;}.cls-5{fill:#288c28;}</style></defs><title>valve_hand-solenoid-analog_v05</title><path class="cls-1" d="M28.08536,46.05137a38.85853,38.85853,0,0,1,77.47314,0Z"/><path d="M66.82187,13.34515a35.83964,35.83964,0,0,1,35.25274,29.63063H31.56914A35.83963,35.83963,0,0,1,66.82187,13.34515m0-6.15119a41.933,41.933,0,0,0-41.933,41.933h83.866a41.933,41.933,0,0,0-41.933-41.933Z"/><path class="cls-2" d="M66.82187,49.55634V93.64978"/><polygon class="cls-3" points="7.122 62.65 7.122 124.65 66.822 93.65 7.122 62.65"/><polygon class="cls-3" points="126.522 124.65 126.522 62.65 66.822 93.65 126.522 124.65"/><rect class="cls-4" width="133.64375" height="133.64375"/><circle class="cls-5" cx="66.82188" cy="93.64978" r="10.81973"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_OK@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_OK@128.png new file mode 100644 index 0000000000000000000000000000000000000000..8bbd4f3aebcb3c4eee875fe5b1f94058bc590309 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_OK@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_OK@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_OK@256.png new file mode 100644 index 0000000000000000000000000000000000000000..7084ecd77239f750182fc088edc702ced4530e1c Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_OK@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_OK@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_OK@32.png new file mode 100644 index 0000000000000000000000000000000000000000..50dc68452875cb1253c75ca7f5ddef9c66aa365f Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_OK@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_OK@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_OK@512.png new file mode 100644 index 0000000000000000000000000000000000000000..26a7885ba47977bc9a19f081a9a8e05feb1ba78e Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_OK@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_OK@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_OK@64.png new file mode 100644 index 0000000000000000000000000000000000000000..45388b595460e21103dd363c3b8e4eb0826cc591 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_OK@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_WARNING.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_WARNING.svg new file mode 100644 index 0000000000000000000000000000000000000000..bf0ab8c73fe5a9f4e88a23e9512bd2a33b64e36b --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_WARNING.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1,.cls-2{fill:#dce1dd;}.cls-2{stroke:#000;}.cls-2,.cls-3{stroke-width:6.15118px;}.cls-3{fill:#fcf211;stroke:#96900a;}.cls-4{fill:none;}.cls-5{fill:#96900a;}</style></defs><title>valve_hand-solenoid-analog_v05</title><path class="cls-1" d="M28.08506,46.05137a38.8588,38.8588,0,0,1,77.47363,0Z"/><path d="M66.82186,13.34515a35.83964,35.83964,0,0,1,35.25275,29.63063H31.56913A35.83965,35.83965,0,0,1,66.82186,13.34515m0-6.15119a41.933,41.933,0,0,0-41.933,41.933h83.866a41.933,41.933,0,0,0-41.933-41.933Z"/><path class="cls-2" d="M66.82187,49.55634V93.64978"/><polygon class="cls-3" points="7.122 62.65 7.122 124.65 66.822 93.65 7.122 62.65"/><polygon class="cls-3" points="126.522 124.65 126.522 62.65 66.822 93.65 126.522 124.65"/><rect class="cls-4" width="133.64375" height="133.64375"/><circle class="cls-5" cx="66.82188" cy="93.64978" r="10.81973"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_WARNING@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_WARNING@128.png new file mode 100644 index 0000000000000000000000000000000000000000..db477f18ab54fd3731551aab4ab091477412b631 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_WARNING@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_WARNING@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_WARNING@256.png new file mode 100644 index 0000000000000000000000000000000000000000..7773e2a8ae6446fc5759c648ad0f40321ae10e2f Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_WARNING@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_WARNING@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_WARNING@32.png new file mode 100644 index 0000000000000000000000000000000000000000..1b63e5e858e7e9b76549ab8f5b321a2ddb678a84 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_WARNING@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_WARNING@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_WARNING@512.png new file mode 100644 index 0000000000000000000000000000000000000000..6b4eb37146b07fd89fe55bd899df7e46e9358fc1 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_WARNING@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_WARNING@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_WARNING@64.png new file mode 100644 index 0000000000000000000000000000000000000000..0e94292b4bee90eecaad114a94a4cf73f6a38d15 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve analog/valve_analog_WARNING@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_BLUE.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_BLUE.svg new file mode 100644 index 0000000000000000000000000000000000000000..14e88c181d40c3a3b20c515414acbce192bf3993 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_BLUE.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1,.cls-3{fill:#4fe4fa;}.cls-2{fill:#2f8794;}.cls-3{stroke:#2f8794;stroke-width:6.15118px;}.cls-4{fill:none;}</style></defs><title>valve_hand-solenoid-analog_v05</title><rect class="cls-1" x="46.01074" y="7.33438" width="41.62256" height="41.62305"/><path class="cls-2" d="M84.55768,10.4104V45.8818H49.08606V10.4104H84.55768m6.15118-6.15118h-47.774V52.033h47.774V4.25922Z"/><path class="cls-3" d="M66.82187,52.033V93.74865"/><rect class="cls-4" width="133.64375" height="133.64375"/><rect class="cls-4" width="133.64375" height="133.64375"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_BLUE@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_BLUE@128.png new file mode 100644 index 0000000000000000000000000000000000000000..cf1752e586db49511e43803826e2e9dc67e87929 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_BLUE@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_BLUE@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_BLUE@256.png new file mode 100644 index 0000000000000000000000000000000000000000..e7f80fdfe74013c3cf9777b991eb9bd5944e13bb Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_BLUE@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_BLUE@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_BLUE@32.png new file mode 100644 index 0000000000000000000000000000000000000000..433a7f1d02e248c63d34f61a3adf8e2db6e8276d Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_BLUE@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_BLUE@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_BLUE@512.png new file mode 100644 index 0000000000000000000000000000000000000000..9c0015e92c4695bbbd72224e55d7498998319a80 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_BLUE@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_BLUE@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_BLUE@64.png new file mode 100644 index 0000000000000000000000000000000000000000..dbf0b4f4780408ccf6f667b0d5d7a4a87f9ff1c4 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_BLUE@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_CLOSED.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_CLOSED.svg new file mode 100644 index 0000000000000000000000000000000000000000..e654003c74ad7d06f0be5a0c47fce8c30a6f51ff --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_CLOSED.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1,.cls-2{fill:#646464;}.cls-2{stroke:#000;stroke-width:6.15118px;}.cls-3{fill:none;}</style></defs><title>valve_hand-solenoid-analog_v05</title><rect class="cls-1" x="46.00997" y="7.33438" width="41.62402" height="41.62305"/><path d="M84.5577,10.4104V45.8818H49.08608V10.4104H84.5577m6.15119-6.15118H42.9349V52.033h47.774V4.25922Z"/><path class="cls-2" d="M66.82188,52.033V93.74865"/><rect class="cls-3" width="133.64375" height="133.64375"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_CLOSED@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_CLOSED@128.png new file mode 100644 index 0000000000000000000000000000000000000000..e013292d1de7232b0269cbf8a120b86b1f37ea46 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_CLOSED@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_CLOSED@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_CLOSED@256.png new file mode 100644 index 0000000000000000000000000000000000000000..e3b6c4284aae926989efb59689903a9a2e3608a8 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_CLOSED@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_CLOSED@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_CLOSED@32.png new file mode 100644 index 0000000000000000000000000000000000000000..8c2b6bae4c2e44d34169a46a4ce161493a834afc Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_CLOSED@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_CLOSED@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_CLOSED@512.png new file mode 100644 index 0000000000000000000000000000000000000000..43fa4bbd305269ac4de4c1276b10b3cee8d8bb0f Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_CLOSED@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_CLOSED@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_CLOSED@64.png new file mode 100644 index 0000000000000000000000000000000000000000..a7e56db480c028e840b36ef7c2eccfd4ffead477 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_CLOSED@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_CLOSED_w.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_CLOSED_w.svg new file mode 100644 index 0000000000000000000000000000000000000000..a02028bc60081de8506d8054f6761acafe85c83c --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_CLOSED_w.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1,.cls-3{fill:#bababa;}.cls-2{fill:#fff;}.cls-3{stroke:#fff;stroke-width:6.15118px;}.cls-4{fill:none;}</style></defs><title>valve_hand-solenoid-analog_v05</title><rect class="cls-1" x="46.00978" y="7.33438" width="41.62402" height="41.62305"/><path class="cls-2" d="M84.55769,10.4104V45.8818H49.08607V10.4104H84.55769m6.15119-6.15118h-47.774V52.033h47.774V4.25922Z"/><path class="cls-3" d="M66.82188,52.033V93.74865"/><rect class="cls-4" width="133.64375" height="133.64375"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_CLOSED_w@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_CLOSED_w@128.png new file mode 100644 index 0000000000000000000000000000000000000000..0b77e60da986c2f19e43da2d83114b489cad325f Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_CLOSED_w@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_CLOSED_w@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_CLOSED_w@256.png new file mode 100644 index 0000000000000000000000000000000000000000..e413718405c10d59fbb232cf83d465691df1b8f9 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_CLOSED_w@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_CLOSED_w@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_CLOSED_w@32.png new file mode 100644 index 0000000000000000000000000000000000000000..d0dc1886990f1d2ca09504415393e2f01c882361 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_CLOSED_w@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_CLOSED_w@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_CLOSED_w@512.png new file mode 100644 index 0000000000000000000000000000000000000000..43fb6998a7789e0545e4a137cfdc3a90fafd8d0d Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_CLOSED_w@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_CLOSED_w@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_CLOSED_w@64.png new file mode 100644 index 0000000000000000000000000000000000000000..3967396f07ab7526f14501681ddc0e2c33df31ee Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_CLOSED_w@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_ERROR.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_ERROR.svg new file mode 100644 index 0000000000000000000000000000000000000000..f615b4d5d22dcc4248eb87b775e4fbdbde12a38c --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_ERROR.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1,.cls-3{fill:#fc0d11;}.cls-2{fill:#960810;}.cls-3{stroke:#960810;stroke-width:6.15118px;}.cls-4{fill:none;}</style></defs><title>valve_hand-solenoid-analog_v05</title><rect class="cls-1" x="46.01055" y="7.33438" width="41.62256" height="41.62305"/><path class="cls-2" d="M84.55767,10.4104V45.8818H49.08605V10.4104H84.55767m6.15118-6.15118h-47.774V52.033h47.774V4.25922Z"/><path class="cls-3" d="M66.82187,52.033V93.74865"/><rect class="cls-4" width="133.64375" height="133.64375"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_ERROR@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_ERROR@128.png new file mode 100644 index 0000000000000000000000000000000000000000..9834f780fa5fca4f5a73090ffe3609360741081e Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_ERROR@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_ERROR@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_ERROR@256.png new file mode 100644 index 0000000000000000000000000000000000000000..e9b322a4d71f3d82b8f3ba8748d32398957c80e0 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_ERROR@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_ERROR@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_ERROR@32.png new file mode 100644 index 0000000000000000000000000000000000000000..8945415be0d9eea88f0a2fa9ed80f10c84a9d2c1 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_ERROR@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_ERROR@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_ERROR@512.png new file mode 100644 index 0000000000000000000000000000000000000000..d0b15bf609777194a54fac12030e2746e5ac576d Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_ERROR@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_ERROR@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_ERROR@64.png new file mode 100644 index 0000000000000000000000000000000000000000..195f21ddb6c1a336745bc231df6997117c14a70c Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_ERROR@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_INVALID.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_INVALID.svg new file mode 100644 index 0000000000000000000000000000000000000000..d9fa4e23d50bbf624e4391ff8acc1af4b79f5401 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_INVALID.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1{fill:#956edd;stroke:#694da4;stroke-width:6.15118px;}.cls-2{fill:none;}</style></defs><title>valve_hand-solenoid-analog_v05</title><rect class="cls-1" x="42.93487" y="4.25922" width="47.774" height="47.77377"/><path class="cls-1" d="M66.82187,52.033V93.74865"/><rect class="cls-2" width="133.64375" height="133.64375"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_INVALID@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_INVALID@128.png new file mode 100644 index 0000000000000000000000000000000000000000..8467ac11f8855cfe4490685b550c6309e4329d11 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_INVALID@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_INVALID@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_INVALID@256.png new file mode 100644 index 0000000000000000000000000000000000000000..fde738309463f4b6b22325d075d66dc1cf6c0159 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_INVALID@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_INVALID@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_INVALID@32.png new file mode 100644 index 0000000000000000000000000000000000000000..e3617593a6fe3c916bb9265730ede58d45eaa13f Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_INVALID@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_INVALID@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_INVALID@512.png new file mode 100644 index 0000000000000000000000000000000000000000..3cbe0b76a3ff8eb9949be2584d3424c59813ae87 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_INVALID@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_INVALID@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_INVALID@64.png new file mode 100644 index 0000000000000000000000000000000000000000..ffbd848487cb2cac96fe0c0d3280c63abf8766b3 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_INVALID@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NEUTRAL.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NEUTRAL.svg new file mode 100644 index 0000000000000000000000000000000000000000..8ba35eb06b3104bc19c965c8b74cc90233ae6399 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NEUTRAL.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1,.cls-2{fill:#dce1dd;}.cls-2{stroke:#000;stroke-width:6.15118px;}.cls-3{fill:none;}</style></defs><title>valve_hand-solenoid-analog_v05</title><rect class="cls-1" x="46.01036" y="7.33477" width="41.62305" height="41.62256"/><path d="M84.55766,10.4104V45.88179H49.086V10.4104H84.55766m6.15119-6.15118h-47.774V52.033h47.774V4.25922Z"/><path class="cls-2" d="M66.82187,52.033V93.74865"/><rect class="cls-3" width="133.64375" height="133.64375"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NEUTRAL@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NEUTRAL@128.png new file mode 100644 index 0000000000000000000000000000000000000000..2bf8737c70bc527333064977a4a96a626b346709 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NEUTRAL@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NEUTRAL@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NEUTRAL@256.png new file mode 100644 index 0000000000000000000000000000000000000000..16c7fc31236e4808e00a2e7790bd57ce6c677771 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NEUTRAL@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NEUTRAL@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NEUTRAL@32.png new file mode 100644 index 0000000000000000000000000000000000000000..b877403fafe8510cfd3d2918d60104dad7579ecc Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NEUTRAL@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NEUTRAL@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NEUTRAL@512.png new file mode 100644 index 0000000000000000000000000000000000000000..4ee72d12d759973c3e5caae825069b8e4c914b4c Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NEUTRAL@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NEUTRAL@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NEUTRAL@64.png new file mode 100644 index 0000000000000000000000000000000000000000..5e9b52a4cbba0f6c1dbfbc70059914018f52bebf Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NEUTRAL@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NEUTRAL_w.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NEUTRAL_w.svg new file mode 100644 index 0000000000000000000000000000000000000000..22f7e93dbaae9bff26f32a061dfa9453ff1fd07c --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NEUTRAL_w.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1,.cls-3{fill:#3c3f41;}.cls-2{fill:#fff;}.cls-3{stroke:#fff;stroke-width:6.15118px;}</style></defs><title>valve_hand-solenoid-analog_v05</title><rect class="cls-1" x="46.00999" y="7.33496" width="41.62402" height="41.62256"/><path class="cls-2" d="M84.55784,10.4104V45.88181H49.08591V10.4104H84.55784M90.709,4.25922H42.93479V52.033H90.709V4.25922Z"/><path class="cls-3" d="M66.82187,52.033V93.74865"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NEUTRAL_w@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NEUTRAL_w@128.png new file mode 100644 index 0000000000000000000000000000000000000000..c159d5af162a479946dc0d125c0a9fb021e79b52 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NEUTRAL_w@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NEUTRAL_w@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NEUTRAL_w@256.png new file mode 100644 index 0000000000000000000000000000000000000000..e896f622e64f06c9f1b4fb6a3ce8518dec58ae07 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NEUTRAL_w@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NEUTRAL_w@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NEUTRAL_w@32.png new file mode 100644 index 0000000000000000000000000000000000000000..3ccb2a216513e44c36c561abc7220638424b7b9a Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NEUTRAL_w@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NEUTRAL_w@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NEUTRAL_w@512.png new file mode 100644 index 0000000000000000000000000000000000000000..8a8e941f9bde8ac6e1640fc7a83c6d0b37a1816f Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NEUTRAL_w@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NEUTRAL_w@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NEUTRAL_w@64.png new file mode 100644 index 0000000000000000000000000000000000000000..c393e9b9d8b27e8d45f170e5932d7b4f7666ec70 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NEUTRAL_w@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NOT_CONTROLED.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NOT_CONTROLED.svg new file mode 100644 index 0000000000000000000000000000000000000000..46ed2b61d9f4e295cfd010a2d76b824cc56ee7f5 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NOT_CONTROLED.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1,.cls-3{fill:#a9a9a9;}.cls-2{fill:#797979;}.cls-3{stroke:#797979;stroke-width:6.15118px;}.cls-4{fill:none;}</style></defs><title>valve_hand-solenoid-analog_v05</title><rect class="cls-1" x="46.01045" y="7.33438" width="41.62256" height="41.62305"/><path class="cls-2" d="M84.5577,10.4104V45.8818H49.08606V10.4104H84.5577m6.15117-6.15118h-47.774V52.033h47.774V4.25922Z"/><path class="cls-3" d="M66.82187,52.033V93.74865"/><rect class="cls-4" width="133.64375" height="133.64375"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NOT_CONTROLED@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NOT_CONTROLED@128.png new file mode 100644 index 0000000000000000000000000000000000000000..1930623097d471c9cad0f93f6e9f3a3072e82328 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NOT_CONTROLED@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NOT_CONTROLED@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NOT_CONTROLED@256.png new file mode 100644 index 0000000000000000000000000000000000000000..da391a6da3664bd8ba60180f40e4b097a28f538a Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NOT_CONTROLED@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NOT_CONTROLED@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NOT_CONTROLED@32.png new file mode 100644 index 0000000000000000000000000000000000000000..cf7bfa18bc3dc2ebca6fce947fb442c0bb38f7b9 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NOT_CONTROLED@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NOT_CONTROLED@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NOT_CONTROLED@512.png new file mode 100644 index 0000000000000000000000000000000000000000..a57f24b1b7a0607a5a0557e3869c36e979279131 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NOT_CONTROLED@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NOT_CONTROLED@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NOT_CONTROLED@64.png new file mode 100644 index 0000000000000000000000000000000000000000..eb2cf7d1d36b334bddce05d1f40549283c1663f6 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_NOT_CONTROLED@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_OFF.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_OFF.svg new file mode 100644 index 0000000000000000000000000000000000000000..0b3c93d26d1d0fa43c387e02a479357dbeada945 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_OFF.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1,.cls-3{fill:#c8cdc9;}.cls-2{fill:#a9a9a9;}.cls-3{stroke:#a9a9a9;stroke-miterlimit:3;stroke-width:5.4992px;stroke-dasharray:4.67354;}.cls-4{fill:none;}</style></defs><title>valve_hand-solenoid-analog_v05</title><rect class="cls-1" x="42.93487" y="4.25922" width="47.774" height="47.77377"/><path class="cls-2" d="M81.36179,4.25922H76.68825v5.4992h4.67354V4.25922Zm-9.34707,0H67.34118v5.4992h4.67354V4.25922Zm-9.34707,0H57.99411v5.4992h4.67354V4.25922Zm-9.34708,0H48.647v5.4992h4.67354V4.25922Zm-4.88649,0H42.93487v5.4992h1.03862V7.89415h4.46059V4.25922Zm0,8.30847H42.93487v4.67354h5.49921V12.56769Zm0,9.34709H42.93487v4.67354h5.49921V21.91478Zm0,9.34706H42.93487v4.67354h5.49921V31.26184Zm0,9.34708H42.93487v4.67353h5.49921V40.60892ZM45.53142,46.5338H42.93487V49.956h0v0h0v2.077h5.49921V49.956H45.53142V46.5338Zm9.34708,0H50.205V52.033H54.8785V46.5338Zm9.34709,0H59.55205V52.033h4.67354V46.5338Zm9.34706,0H68.89912V52.033h4.67353V46.5338Zm9.34709,0H78.24619V52.033h4.67355V46.5338Zm7.78914,0h-3.1156v3.94125h-2.3836V52.033h5.4992V46.5338Zm0-5.40583h-5.4992v4.67354h5.4992V41.128Zm0-9.34707h-5.4992v4.67354h5.4992V31.7809Zm0-9.34709h-5.4992v4.67353h5.4992V22.43381Zm0-9.34707h-5.4992v4.67354h5.4992V13.08674Zm0-8.82752h-5.4992v4.154h.82566V9.75842h4.67354V4.25922Z"/><path class="cls-3" d="M66.82187,52.033V93.74865"/><rect class="cls-4" width="133.64375" height="133.64375"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_OFF@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_OFF@128.png new file mode 100644 index 0000000000000000000000000000000000000000..fd5c2486e53c378720b3584063bff8108a49589d Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_OFF@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_OFF@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_OFF@256.png new file mode 100644 index 0000000000000000000000000000000000000000..6eb1ac906a67a5d696df35a09f67365e4a98bb71 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_OFF@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_OFF@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_OFF@32.png new file mode 100644 index 0000000000000000000000000000000000000000..53f98bd8608c4466e16fc4ce9a2a8cde9bc8cfd8 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_OFF@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_OFF@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_OFF@512.png new file mode 100644 index 0000000000000000000000000000000000000000..fb7e16be29bd3897d38e8d10f46bdba32e8b98e5 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_OFF@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_OFF@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_OFF@64.png new file mode 100644 index 0000000000000000000000000000000000000000..61a520e95a912f7b14ed6363b3a242d43749d209 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_OFF@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_OK.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_OK.svg new file mode 100644 index 0000000000000000000000000000000000000000..365821c8b7c45e194a334c3d2e3cf497b5a1ffd0 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_OK.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1,.cls-3{fill:#3dd83d;}.cls-2{fill:#288c28;}.cls-3{stroke:#288c28;stroke-width:6.15118px;}.cls-4{fill:none;}</style></defs><title>valve_hand-solenoid-analog_v05</title><rect class="cls-1" x="46.01065" y="7.33438" width="41.62256" height="41.62305"/><path class="cls-2" d="M84.55771,10.4104V45.8818H49.08606V10.4104H84.55771m6.15117-6.15118h-47.774V52.033h47.774V4.25922Z"/><path class="cls-3" d="M66.82187,52.033V93.74865"/><rect class="cls-4" width="133.64375" height="133.64375"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_OK@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_OK@128.png new file mode 100644 index 0000000000000000000000000000000000000000..2ff62d770626701a7a4ee25fa9e27101839b025b Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_OK@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_OK@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_OK@256.png new file mode 100644 index 0000000000000000000000000000000000000000..e072aa7d772d12962a077111b0cd0a1f575b10ce Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_OK@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_OK@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_OK@32.png new file mode 100644 index 0000000000000000000000000000000000000000..7190d859ad68a134bf4963710e95b71a8d21664f Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_OK@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_OK@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_OK@512.png new file mode 100644 index 0000000000000000000000000000000000000000..11bf924630948ab71f7fac359ddcdaf3038233bc Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_OK@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_OK@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_OK@64.png new file mode 100644 index 0000000000000000000000000000000000000000..7562aa762fde4aa0a3421a77d9340f6177405f24 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_OK@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_WARNING.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_WARNING.svg new file mode 100644 index 0000000000000000000000000000000000000000..af5da468a65444bb9999e3141356252751870754 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_WARNING.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1,.cls-3{fill:#fcf211;}.cls-2{fill:#96900a;}.cls-3{stroke:#96900a;stroke-width:6.15118px;}.cls-4{fill:none;}</style></defs><title>valve_hand-solenoid-analog_v05</title><rect class="cls-1" x="46.01035" y="7.33438" width="41.62305" height="41.62305"/><path class="cls-2" d="M84.55769,10.4104V45.8818H49.08607V10.4104H84.55769m6.15118-6.15118h-47.774V52.033h47.774V4.25922Z"/><path class="cls-3" d="M66.82187,52.033V93.74865"/><rect class="cls-4" width="133.64375" height="133.64375"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_WARNING@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_WARNING@128.png new file mode 100644 index 0000000000000000000000000000000000000000..fa079c23bada205758c1ae4c76c60c8512ae8967 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_WARNING@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_WARNING@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_WARNING@256.png new file mode 100644 index 0000000000000000000000000000000000000000..388cb5d22dbf8021747b6c260c4ccca4ab8948ec Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_WARNING@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_WARNING@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_WARNING@32.png new file mode 100644 index 0000000000000000000000000000000000000000..4e0ef1524faac944826536775468a48b6c1b8c00 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_WARNING@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_WARNING@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_WARNING@512.png new file mode 100644 index 0000000000000000000000000000000000000000..bd5963b328cae4f3ed4e98db46c57015ac4e4ac9 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_WARNING@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_WARNING@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_WARNING@64.png new file mode 100644 index 0000000000000000000000000000000000000000..39d88887e1e08340604189bf601d950b999c8378 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/solenoid_WARNING@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_BLUE.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_BLUE.svg new file mode 100644 index 0000000000000000000000000000000000000000..620d363ca0200c57669c054cfd0e390700917984 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_BLUE.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1{fill:#4fe4fa;stroke:#2f8794;stroke-width:6.15118px;}.cls-2{fill:none;}.cls-3{fill:#2f8794;}</style></defs><title>valve_hand-solenoid-analog_v05</title><polygon class="cls-1" points="7.122 62.65 7.122 124.65 66.822 93.65 7.122 62.65"/><polygon class="cls-1" points="126.522 124.65 126.522 62.65 66.822 93.65 126.522 124.65"/><rect class="cls-2" width="133.64375" height="133.64375"/><circle class="cls-3" cx="66.82187" cy="93.64978" r="10.81973"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_BLUE@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_BLUE@128.png new file mode 100644 index 0000000000000000000000000000000000000000..fac3a7cb88e5a0cfb7ab3324713adb7b5c0ba08e Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_BLUE@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_BLUE@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_BLUE@256.png new file mode 100644 index 0000000000000000000000000000000000000000..acefa609ea73ea33887dc9b313d256fac9e96e81 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_BLUE@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_BLUE@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_BLUE@32.png new file mode 100644 index 0000000000000000000000000000000000000000..7e3cbf716d843251dd1fd46910892172a23a195b Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_BLUE@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_BLUE@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_BLUE@512.png new file mode 100644 index 0000000000000000000000000000000000000000..8f0b5f19c4eef669baacda0af13fcdb578b1e37c Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_BLUE@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_BLUE@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_BLUE@64.png new file mode 100644 index 0000000000000000000000000000000000000000..ffd04d42d73ec0e876e0e8383c4e3271429e6884 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_BLUE@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_CLOSED.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_CLOSED.svg new file mode 100644 index 0000000000000000000000000000000000000000..501051861058f4e4430ff3c03b9d24eebce72a72 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_CLOSED.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1{fill:#646464;stroke:#000;stroke-width:6.15118px;}.cls-2{fill:none;}</style></defs><title>valve_hand-solenoid-analog_v05</title><polygon class="cls-1" points="7.122 62.65 7.122 124.65 66.822 93.65 7.122 62.65"/><polygon class="cls-1" points="126.522 124.65 126.522 62.65 66.822 93.65 126.522 124.65"/><rect class="cls-2" width="133.64375" height="133.64375"/><circle cx="66.82188" cy="93.64978" r="10.81973"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_CLOSED@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_CLOSED@128.png new file mode 100644 index 0000000000000000000000000000000000000000..07f42ff2fcfabe3c7e6f61800bf6f727d27cdd1f Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_CLOSED@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_CLOSED@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_CLOSED@256.png new file mode 100644 index 0000000000000000000000000000000000000000..b1da9150aaeb63df0e8210157f76527f0b0e0175 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_CLOSED@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_CLOSED@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_CLOSED@32.png new file mode 100644 index 0000000000000000000000000000000000000000..eaae69cf5f813dde4a6aea65adf2a4450d5930ca Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_CLOSED@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_CLOSED@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_CLOSED@512.png new file mode 100644 index 0000000000000000000000000000000000000000..16a8a901bbe467164ff6d88dbcf31b18b426f223 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_CLOSED@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_CLOSED@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_CLOSED@64.png new file mode 100644 index 0000000000000000000000000000000000000000..17536535c4b39c2fdc46f2a9559373760c9b9e24 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_CLOSED@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_CLOSED_w.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_CLOSED_w.svg new file mode 100644 index 0000000000000000000000000000000000000000..528a54e9e382a3e60d6c6acecdaa11fed02b6f05 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_CLOSED_w.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1{fill:#bababa;stroke:#fff;stroke-width:6.15118px;}.cls-2{fill:none;}.cls-3{fill:#fff;}</style></defs><title>valve_hand-solenoid-analog_v05</title><polygon class="cls-1" points="7.122 62.65 7.122 124.65 66.822 93.65 7.122 62.65"/><polygon class="cls-1" points="126.522 124.65 126.522 62.65 66.822 93.65 126.522 124.65"/><rect class="cls-2" width="133.64375" height="133.64375"/><circle class="cls-3" cx="66.82188" cy="93.64978" r="10.81973"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_CLOSED_w@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_CLOSED_w@128.png new file mode 100644 index 0000000000000000000000000000000000000000..d56b9eb48b1dc07b7c1d4a09188aef94636e7e72 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_CLOSED_w@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_CLOSED_w@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_CLOSED_w@256.png new file mode 100644 index 0000000000000000000000000000000000000000..483c347a76a48ecb87455a768d99f06eda3d048d Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_CLOSED_w@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_CLOSED_w@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_CLOSED_w@32.png new file mode 100644 index 0000000000000000000000000000000000000000..0976ce255ae72975cc81aa97e0ed82d180a08c49 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_CLOSED_w@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_CLOSED_w@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_CLOSED_w@512.png new file mode 100644 index 0000000000000000000000000000000000000000..508ca262dfffe348c27b64fc06b8b11cc8af71f3 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_CLOSED_w@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_CLOSED_w@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_CLOSED_w@64.png new file mode 100644 index 0000000000000000000000000000000000000000..57aa7c55e797fe087d2718a3eea41591170a71e2 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_CLOSED_w@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_ERROR.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_ERROR.svg new file mode 100644 index 0000000000000000000000000000000000000000..3e6e0fa8c556120c797228ec3d2e0fd1ef89a101 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_ERROR.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1{fill:#fc0d11;stroke:#960810;stroke-width:6.15118px;}.cls-2{fill:none;}.cls-3{fill:#960810;}</style></defs><title>valve_hand-solenoid-analog_v05</title><polygon class="cls-1" points="7.122 62.65 7.122 124.65 66.822 93.65 7.122 62.65"/><polygon class="cls-1" points="126.522 124.65 126.522 62.65 66.822 93.65 126.522 124.65"/><rect class="cls-2" width="133.64375" height="133.64375"/><circle class="cls-3" cx="66.82187" cy="93.64978" r="10.81973"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_ERROR@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_ERROR@128.png new file mode 100644 index 0000000000000000000000000000000000000000..33dde32bab37edb967c50adc0934ea439d253c4d Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_ERROR@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_ERROR@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_ERROR@256.png new file mode 100644 index 0000000000000000000000000000000000000000..0f20bf5c8fe5e54fdb562ef805ce29674803e152 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_ERROR@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_ERROR@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_ERROR@32.png new file mode 100644 index 0000000000000000000000000000000000000000..fe833191c6ee50535d995736b6cd384ecc891679 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_ERROR@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_ERROR@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_ERROR@512.png new file mode 100644 index 0000000000000000000000000000000000000000..a18f28f8a667783a8ed9f79d7034fa5282a0369e Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_ERROR@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_ERROR@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_ERROR@64.png new file mode 100644 index 0000000000000000000000000000000000000000..7b9878168adf183572c47b237a76e066b9d562a1 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_ERROR@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_INVALID.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_INVALID.svg new file mode 100644 index 0000000000000000000000000000000000000000..4aca2b5c0fbd233209d70488434fbfd6f4d6ad9a --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_INVALID.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1{fill:#956edd;stroke:#694da4;stroke-width:6.15118px;}.cls-2{fill:none;}.cls-3{fill:#694da4;}</style></defs><title>valve_hand-solenoid-analog_v05</title><polygon class="cls-1" points="7.122 62.65 7.122 124.65 66.822 93.65 7.122 62.65"/><polygon class="cls-1" points="126.522 124.65 126.522 62.65 66.822 93.65 126.522 124.65"/><rect class="cls-2" width="133.64375" height="133.64375"/><circle class="cls-3" cx="66.82188" cy="93.64978" r="10.81973"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_INVALID@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_INVALID@128.png new file mode 100644 index 0000000000000000000000000000000000000000..1ede031c298474e8809088d0c055468d3df8a723 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_INVALID@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_INVALID@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_INVALID@256.png new file mode 100644 index 0000000000000000000000000000000000000000..5b8119f6ab9cc0224502d4a097c0fd9387da222a Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_INVALID@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_INVALID@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_INVALID@32.png new file mode 100644 index 0000000000000000000000000000000000000000..0278380cc97877080014fa92a12986a8bc439f1f Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_INVALID@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_INVALID@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_INVALID@512.png new file mode 100644 index 0000000000000000000000000000000000000000..e450475f464237fe2a87404edad924fce0f4d8e6 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_INVALID@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_INVALID@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_INVALID@64.png new file mode 100644 index 0000000000000000000000000000000000000000..c112c46eb0ae9e49a2c6a3ed84e1702f05d73365 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_INVALID@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NEUTRAL.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NEUTRAL.svg new file mode 100644 index 0000000000000000000000000000000000000000..976da02ab641aded72f809282031177e7110ccb1 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NEUTRAL.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1{fill:#dce1dd;stroke:#000;stroke-width:6.15118px;}.cls-2{fill:none;}</style></defs><title>valve_hand-solenoid-analog_v05</title><polygon class="cls-1" points="7.122 62.65 7.122 124.65 66.822 93.65 7.122 62.65"/><polygon class="cls-1" points="126.522 124.65 126.522 62.65 66.822 93.65 126.522 124.65"/><rect class="cls-2" width="133.64375" height="133.64375"/><circle cx="66.82188" cy="93.64978" r="10.81973"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NEUTRAL@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NEUTRAL@128.png new file mode 100644 index 0000000000000000000000000000000000000000..9ebd75d13d50bdc6385790f9ff238ae23453c5f3 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NEUTRAL@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NEUTRAL@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NEUTRAL@256.png new file mode 100644 index 0000000000000000000000000000000000000000..ec398a6c1d9b8ff778a10d5166dfd446a1d41eab Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NEUTRAL@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NEUTRAL@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NEUTRAL@32.png new file mode 100644 index 0000000000000000000000000000000000000000..e1adbf1d4788a54930ed898aa3deee89dcb50ab3 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NEUTRAL@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NEUTRAL@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NEUTRAL@512.png new file mode 100644 index 0000000000000000000000000000000000000000..d95553df5057e4133de0d1da7d367fb91d6c5c1c Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NEUTRAL@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NEUTRAL@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NEUTRAL@64.png new file mode 100644 index 0000000000000000000000000000000000000000..40e7d6bb1f5258b7a7c30df861c8cab7c7bc8080 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NEUTRAL@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NEUTRAL_w.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NEUTRAL_w.svg new file mode 100644 index 0000000000000000000000000000000000000000..f9141622724bd3a676e615f3bf3c8cc25a70fa25 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NEUTRAL_w.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1{fill:#3c3f41;stroke:#fff;stroke-width:6.15118px;}.cls-2{fill:none;}.cls-3{fill:#fff;}</style></defs><title>valve_hand-solenoid-analog_v05</title><polygon class="cls-1" points="7.122 62.65 7.122 124.65 66.822 93.65 7.122 62.65"/><polygon class="cls-1" points="126.522 124.65 126.522 62.65 66.822 93.65 126.522 124.65"/><rect class="cls-2" width="133.64375" height="133.64375"/><circle class="cls-3" cx="66.82188" cy="93.64978" r="10.81973"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NEUTRAL_w@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NEUTRAL_w@128.png new file mode 100644 index 0000000000000000000000000000000000000000..619bcfaf880f0312f88582a17851d43753b37095 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NEUTRAL_w@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NEUTRAL_w@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NEUTRAL_w@256.png new file mode 100644 index 0000000000000000000000000000000000000000..8e3dfd6fbc27ed58d7717197f139d315b7a0fe68 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NEUTRAL_w@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NEUTRAL_w@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NEUTRAL_w@32.png new file mode 100644 index 0000000000000000000000000000000000000000..3345ab105ed1ea8a03e41f2eef8575c92a9df759 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NEUTRAL_w@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NEUTRAL_w@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NEUTRAL_w@512.png new file mode 100644 index 0000000000000000000000000000000000000000..c2aa3adc74e1fe4d46da62148fd6489ef54e3115 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NEUTRAL_w@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NEUTRAL_w@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NEUTRAL_w@64.png new file mode 100644 index 0000000000000000000000000000000000000000..d5e2acfbdce5328a08bf0c2b39dcc0faf08a19a2 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NEUTRAL_w@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NOT_CONTROLED.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NOT_CONTROLED.svg new file mode 100644 index 0000000000000000000000000000000000000000..90fbe731b2153e9de3273567281332bc604e4563 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NOT_CONTROLED.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1{fill:#a9a9a9;stroke:#797979;stroke-width:6.15118px;}.cls-2{fill:none;}.cls-3{fill:#797979;}</style></defs><title>valve_hand-solenoid-analog_v05</title><polygon class="cls-1" points="7.122 62.65 7.122 124.65 66.822 93.65 7.122 62.65"/><polygon class="cls-1" points="126.522 124.65 126.522 62.65 66.822 93.65 126.522 124.65"/><rect class="cls-2" width="133.64375" height="133.64375"/><circle class="cls-3" cx="66.82187" cy="93.64978" r="10.81973"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NOT_CONTROLED@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NOT_CONTROLED@128.png new file mode 100644 index 0000000000000000000000000000000000000000..f22f175cf3950c9ffc76816402834ffd7f6cc1eb Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NOT_CONTROLED@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NOT_CONTROLED@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NOT_CONTROLED@256.png new file mode 100644 index 0000000000000000000000000000000000000000..518e109a7d9fcadac4f8686c64d0c2e210d74750 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NOT_CONTROLED@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NOT_CONTROLED@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NOT_CONTROLED@32.png new file mode 100644 index 0000000000000000000000000000000000000000..8a1ece9719f1be177f862bb728a9f3b7db48afe9 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NOT_CONTROLED@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NOT_CONTROLED@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NOT_CONTROLED@512.png new file mode 100644 index 0000000000000000000000000000000000000000..5ae5a9f95e9f3d51eb63f9581383baf50c6aa95e Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NOT_CONTROLED@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NOT_CONTROLED@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NOT_CONTROLED@64.png new file mode 100644 index 0000000000000000000000000000000000000000..b5d696dfd5d73ed3f36418588a96bd83eab42f42 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_NOT_CONTROLED@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_OFF.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_OFF.svg new file mode 100644 index 0000000000000000000000000000000000000000..19b173f98667a422149a7b9baebb781f213e7bd4 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_OFF.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1{fill:#c8cdc9;}.cls-2{fill:#a9a9a9;}.cls-3{fill:none;}</style></defs><title>valve_hand-solenoid-analog_v05</title><polygon class="cls-1" points="7.122 62.65 7.122 124.65 66.822 93.65 7.122 62.65"/><path class="cls-2" d="M12.62109,71.99686H7.12188v4.67355h5.49921V71.99686Zm0,9.34707H7.12188v4.67356h5.49921V81.34393Zm0,9.34708H7.12188v4.67355h5.49921V90.691Zm0,9.34709H7.12188v4.67354h5.49921V100.0381Zm0,9.34706H7.12188v4.67356h5.49921v-4.67356Zm-.84208,6.65-4.14769,2.15373.28215.54339H7.12188v4.67354H9.51755l3.10354-1.61154h0l1.69215-.87868L11.779,116.03513Zm8.29538-4.3075-4.14769,2.15375,2.53424,4.88045,4.14769-2.15375-2.53424-4.88045Zm8.2954-4.30748-4.14769,2.15373,2.53422,4.88047,2.8696-1.49009,1.27811-.66366-2.53424-4.88045Zm8.29538-4.30749-4.14771,2.15374,2.53426,4.88045,4.14769-2.15375-2.53424-4.88044Zm8.29538-4.30748-4.14769,2.15373,2.53424,4.88046,4.14769-2.15375-2.53424-4.88044Zm8.29539-4.3075-4.14769,2.15375,2.53423,4.88045,4.14769-2.15375-2.53423-4.88045Zm7.59941-3.94609L57.40363,92.344l1.51917,2.92563-.19423.374.53187.27618.67743,1.3046.91748-.47643h0l3.51307-1.82419,1.04208-2.00686-2.36386-1.22748-.0063-.00327-.017-.00882-.0032-.00166-.00388-.002-.02647-.01375-.00188-.001-.00508-.00264-.00024-.00013-2.12728-1.10461Zm-7.88792-4.0959-2.53424,4.88043,4.14769,2.15375,2.53424-4.88046-1.23026-.63883-.00027-.00012-.09932-.05158-.00308-.00161-.016-.00833-.00145-.00074-.00986-.00512-.00223-.00116-.00253-.00132-.00382-.002-.00152-.00079-.0102-.00531-.00129-.00067-.00447-.00232-.001-.00049-.0046-.00241-.00144-.00074-.00892-.00463-.00455-.00238-.00192-.001L55.7047,87.877l-.00534-.00277-.00007,0-.03452-.01795L55.664,87.8559l-.04564-.02372-.00146-.00076c-1.18793-.61682-2.64943-1.37573-2.64943-1.37573Zm-8.2954-4.3075-2.53424,4.88044,4.14771,2.15374,2.53422-4.88043L44.672,82.14819ZM36.37664,77.8407l-2.53423,4.88046,4.14769,2.15375,2.53424-4.88046-1.82193-.946-.00074-.0004-.017-.00882-.00116-.00061-.00442-.00228-.00269-.00141-.11892-.06177-.00157-.00079-.02179-.01132-.004-.00211-.01317-.00683-.0045-.00232-.04637-.02408-.00078-.00043-.00417-.00213L38.457,78.921l-.00924-.00479-.00177-.00095-.0044-.00226-.00027-.00015-.00573-.003-.00115-.00061-.00332-.00171-.00305-.00159-.00377-.002-.00967-.005-.00182-.001-.00428-.00223-.00142-.00073-.00289-.0015-.00384-.002-.02263-.01175-.00028-.00012-.02378-.01236-.00084-.00043L36.37664,77.8407Zm-8.29536-4.3075L25.547,78.41367l4.1477,2.15374L32.229,75.687l-2.78383-1.44553,0,0-.00805-.00418-.00813-.00421-.0012-.00061-.00789-.00412-.00716-.00369-.0089-.00464-.00439-.00226-.00362-.00189-.017-.00882-.01516-.00787-.00351-.00183-.01167-.00605-.00052-.00027-1.26664-.65775Zm-8.2954-4.30749-2.53424,4.88046,4.14769,2.15375,2.53424-4.88043s-.821-.42637-1.73245-.89963l-.00418-.00217-.00943-.00488-2.40163-1.24707Zm-12.664-6.57593v.54016h0v4.13339h3.11975L8.95626,69.79868,13.104,71.95245,15.63819,67.072,7.12188,62.64978Z"/><polygon class="cls-1" points="126.522 124.65 126.522 62.65 66.822 93.65 126.522 124.65"/><path class="cls-2" d="M118.22651,66.95728,114.07882,69.111l2.53422,4.88044,4.14771-2.15375-2.53424-4.88043Zm-8.2954,4.30749-4.14769,2.15372,2.53424,4.88046,4.14769-2.15375-2.53424-4.88043Zm-8.29538,4.30747L97.488,77.726l2.53425,4.88043L104.17,80.4527l-2.53423-4.88046Zm-8.29539,4.30749-4.14769,2.15375,2.53424,4.88043,4.1477-2.15372-2.53425-4.88046ZM85.045,84.18723l-2.08281,1.08151-.0009.00046-.00276.00143-.01062.00552-.00183.001-2.04877,1.06384,2.53424,4.88047,4.14769-2.15375L85.045,84.18719Zm-8.29538,4.30746-4.14771,2.15375L74.721,94.72935l-1.236,2.38031,4.14769,2.15374,2.53424-4.88045-1.412-.73317.52889-.27463-2.53423-4.88046Zm-5.5551,2.88455-4.3726,2.27054h0l2.83754,1.47343-.20452-.39386,1.73958-3.35011ZM84.31457,96.5367l-2.53424,4.88046,4.1477,2.15373,2.53423-4.88045L84.31457,96.5367ZM92.61,100.84418l-2.53423,4.88046,2.8889,1.50011.00061.0003.00427.00223.0022.00114.00379.002.001.00053.01044.00543.00078.0004.00459.00238.00131.00069.01587.00824.00066.00033.00922.00479.00248.0013.00336.00174.01875.00974.00374.00193.00374.002h0l.0051.00264.00091.00047.00838.00435.004.00209.00252.0013.00206.00108.003.00153.00357.00186.00147.00076.01326.00689L93.1,107.295l.00248.00129.00776.004.0028.00145.00928.00483.00083.00042.00935.00485.00232.00121.01976.01027.00113.00058.01935.01.0043.00224.0396.02057.00079.0004.04024.0209.00322.00168.9602.4986,2.53424-4.88045L92.61,100.84418Zm8.29539,4.30749-2.53424,4.88045,4.14771,2.15375,2.53422-4.88045-4.14769-2.15375Zm8.2954,4.30748-2.53424,4.88045,2.71424,1.40942,1.43345.74433,2.53424-4.88045-4.14769-2.15375Zm8.29539,4.30748-2.53424,4.88046,2.894,1.50275.00156.00079.00418.00219.0015.00077.01461.0076.00235.00121.01544.008.00116.00063.00879.00454.00412.00215.00049.00026.02149.01114.001.00052.03183.01654.00119.00061.00421.0022.00309.00159.00125.00065.0032.00167,1.13223.58793,1.91312-3.68431v1.86469h4.29782l-2.06323,3.97335,1.34839.70018h0l1.91623.995h0V114.30769h-5.49921v1.29016l-3.52655-1.83122Zm9.02576-8.806h-5.49921v4.67354h5.49921V104.9606Zm0-9.34707h-5.49921v4.67353h5.49921V95.61353Zm0-9.34708h-5.49921V90.94h5.49921V86.26645Zm0-9.34708h-5.49921V81.5929h5.49921V76.91937Zm0-14.26959-4.14768,2.15375,1.43772,2.76877h-2.78925v4.67352h5.49921v-9.596Z"/><rect class="cls-3" width="133.64375" height="133.64375"/><circle class="cls-1" cx="66.82188" cy="93.64978" r="10.81973"/><path class="cls-2" d="M66.82188,82.83006h-.01224l-.006,0h-.00912l-.00392,0h-.00521l-.00412,0h-.005l-.00409,0-.00507,0-.00413,0-.00506,0-.004,0-.00513,0-.00413,0-.005,0-.004,0-.00548,0-.00362,0-.00625.00007h-.00283l-.00724.00008-.0031,0-.00793.00009-.003,0-.006.00006-.00369.00005-.00552.00007L66.677,82.831l-.00506.00008-.00431,0-.00484.00008-.00432.00006-.00473.00007-.00433.00007-.00487.00007-.00428.00008-.00477.00007-.00429.00008-.00509.00009-.00394.00006-.00548.00011-.00357.00006-.006.00012-.00319.00006-.00687.00014-.00224.00005-.009.00018-.0032.00008-.00593.00012-.00369.00009-.00538.00012-.00386.00009-.00524.00013-.004.00009-.00511.00012-.00384.00011-.00532.00012-.004.00011-.005.00013-.00416.00011-.00479.00012-.00445.00012-.00469.00014-.00423.00012-.005.00014-.00412.00012-.00523.00016-.00377.0001-.00584.00019-.004.00012-.00829.00026-.00265.00009-.00631.0002-.00394.00012-.00511.00017-.00422.00015-.00478.00015-.00425.00015-.005.00017-.00409.00015-.00489.00017-.00421.00016-.005.00018-.00411.00015-.00485.00018-.0042.00016-.00508.00019-.00394.00016-.00528.0002-.00377.00015-.00565.00021-.0034.00014-.006.00024-.00314.00014-.00882.00037-.0037.00015-.00534.00023-.004.00017-.005.00023-.00411.00016-.00493.00023-.0042.00018-.00487.00022-.00413.0002-.00491.00021-.00421.0002-.00481.00023-.00423.0002-.00481.00023-.00425.00019-.00487.00025-.00413.0002-.005.00024-.00394.0002-.00557.00027-.00341.00019-.006.0003-.00315.00015-.00879.00046-.00371.0002-.00531.00027-.00415.00023-.00481.00026-.00463.00025-.00423.00023-.00489.00027-.00413.00023-.0048.00026-.00417.00024-.00471.00026-.00442.00026-.00457.00026-.00426.00025-.00483.00029L66.176,82.849l-.00486.00029-.00415.00025-.00478.00029-.00438.00026-.00459.00029-.00455.00027-.0044.00028-.00873.00053-.00331.00021-.00573.00037-.00392.00024-.005.00033-.00441.00027-.0045.00031-.00465.0003-.00432.00028-.00459.0003-.00436.00029-.00472.00032-.00418.00028-.00475.00032-.00416.00029-.00486.00033-.00418.00029-.00461.00032-.00456.00031-.00445.00032-.00449.00032-.00444.0003-.00427.00031-.01843.00134-.00376.00028-.005.00036-.004.00031-.00483.00036-.004.00029-.0048.00037-.00427.00032-.00466.00037-.00416.00032-.00484.00036-.00412.00032-.0048.00038-.004.00032-.00492.00039-.00407.00032-.00482.00038-.00406.00033-.00486.00039-.00394.00032-.005.00041-.00319.00026-.02058.00171-.00243.00019-.00568.00049-.0032.00026-.00521.00046-.00376.00032-.00508.00043-.0038.00033-.005.00043-.00386.00034-.005.00044-.004.00035-.00478.00043-.004.00035-.00508.00046-.00364.00032-.00517.00047-.0036.00032-.00536.00049-.00338.0003-.00541.00051-.00312.00029-.02157.002-.00138.00012-.00569.00054-.00326.00032-.00545.00052-.00332.00032-.00536.0005-.0036.00035-.00517.0005-.00363.00036-.00519.00051-.00368.00036-.00527.00053-.00341.00033-.00539.00054-.00349.00035-.00536.00053-.00341.00035-.00536.00054-.00342.00035-.00553.00056L65.705,82.887l-.023.00238-.00047,0-.00643.00069-.00236.00025-.00605.00064-.00273.00029-.00583.00062-.003.00032-.00548.0006-.00337.00035-.0056.00061-.003.00033-.00587.00065-.0027.00029-.00622.00068-.00238.00026-.0062.00069-.00269.0003-.00614.00069-.00222.00024-.00651.00074-.00163.00018-.031.00354-.00174.00021-.0064.00074-.00234.00027-.00589.00069-.003.00036-.00557.00066-.00317.00037-.00557.00067-.0032.00038-.00558.00065-.00315.00039-.00553.00067-.00329.00039-.00558.00068-.00279.00033-.00606.00075-.00223.00027-.00659.00081-.001.00012-.03176.004-.00143.00018-.00612.00078-.0027.00033-.00581.00075-.00294.00037-.00574.00074-.00295.00039-.00578.00074-.00293.00037-.00572.00075-.003.00038-.00589.00078-.00271.00035-.00588.00078-.00286.00038-.00594.00078-.00244.00032-.00626.00084-.0019.00026-.03141.00424-.00082.0001-.00716.001-.00143.00018-.00666.00093-.00213.00029-.00618.00085-.00257.00036-.00589.00082-.00291.00041-.00583.00083-.00268.00036-.00607.00087-.00251.00035-.00614.00087-.00239.00034-.00632.0009-.002.00029-.00671.001-.00089.00013-.03266.00476-.00028,0-.00732.00108-.00127.00018-.00675.001-.002.00029-.00625.00093-.00245.00038-.00621.00092-.00239.00037-.00617.00093-.0024.00036-.00629.001-.00233.00036-.00611.00094-.00259.00038-.00625.001-.00177.00027-.00683.00106-.00122.00018-.04056.00635-.00041.00006-.007.00113-.00175.00027-.00664.001-.00188.00031-.00662.00107-.002.00032-.00658.00105-.00189.00031-.00666.00108-.00188.0003-.0068.00112-.00135.00021-.0073.00119-.0007.00012-.05755.0096-.00056.00011-.00721.00122-.00152.00026-.00681.00116-.00174.0003-.00668.00115-.00187.00032-.00678.00117L64.964,82.989l-.00693.00121-.00153.00026-.00713.00125-.00077.00012-.00775.00136h0l-.04918.00875-.001.00018-.00707.00127-.00147.00027-.00673.00122-.00188.00034-.00672.00123-.0016.00029-.00685.00126-.00166.0003-.00678.00125-.00166.00031-.00686.00126-.00134.00025-.05655.01063-.00074.00014-.007.00134-.00157.00031-.007.00133-.0014.00027-.007.00134-.00141.00028-.00706.00137-.00131.00024-.007.00138-.00135.00026-.00726.00142-.00054.0001-.05728.01137-.00029.00006-.00755.00153-.00094.0002-.00716.00145-.00134.00026-.007.00141-.00147.00031-.00684.00139-.00165.00033-.00686.00142-.00126.00025-.00726.00149-.00068.00016-.0649.01359-.00076.00015-.00743.00159-.00094.0002-.00716.00154-.0013.00027-.00713.00153-.00113.00024-.00722.00156-.001.00023-.00747.00162-.00046.00009-.073.0161-.00092.00021-.00743.00166-.00073.00017-.00747.00168-.0009.0002-.00749.00171-.00054.00012-.00779.00177-.00021.00005-.06522.015-.0001,0-.008.00186-.00027.00008-.00787.00185-.00036.00009-.00784.00184-.00036.00008-.00769.00183-.0007.00017-.08075.0195-.00049.00012-.00771.00189-.00043.00011-.00766.00189-.00062.00015-.00779.00194h0l-.08078.02039-.00059.00015-.00731.00188-.001.00026-.00727.00187-.00079.0002-.00736.00191-.0008.00021-.00759.002-.0001,0-.07229.019-.00062.00017-.00745.002-.00069.00019-.00736.002-.00087.00023-.0073.002-.00079.00021-.00731.002-.00088.00023-.06371.01745-.00015,0-.00769.00213-.00048.00014-.00763.00212-.00041.00011-.00765.00215-.00046.00012-.00754.00211-.00062.00018-.00757.00212-.0003.00009-.0638.01818-.00021.00006-.00734.00212-.00094.00026-.00712.00206-.001.00029-.00693.002-.00134.00038-.00686.002-.00112.00034-.00707.00206-.00085.00024-.00739.00217-.00013.00005-.05525.01635-.00074.00022-.00718.00215-.0009.00027-.00692.00208-.00129.0004-.00679.002-.00131.0004-.00667.002-.00151.00046-.00671.002-.00118.00036-.00687.00208-.00113.00035-.05426.01666-.00076.00025-.00646.002-.002.00061-.0062.00193-.00178.00055-.00632.002-.00182.00058-.00626.00195-.00182.00057-.0062.00195-.002.00063-.00628.002-.00123.00038-.007.0022-.00043.00014-.03865.0123-.00069.00023-.0064.002-.00182.00059-.0062.002-.00188.00061-.00605.002-.00208.00067-.00608.002-.002.00064-.00588.00191-.00236.00076-.00587.00191-.002.00067-.00605.002-.00179.00058-.00654.00214-.00049.00016-.038.01252-.00119.00039-.00652.00217-.00148.00049-.006.002-.00222.00073-.00574.00193-.00231.00076-.00559.00188-.00267.0009-.00548.00183-.00246.00082-.00558.00188-.00257.00087-.00557.00188-.0023.00077-.00578.002-.00219.00074-.006.002-.0011.00037-.02863.00976-.00207.00072-.00547.00186-.00266.00091-.0051.00176-.00314.00108-.00479.00165-.00329.00115-.00494.0017-.00316.00109-.00486.00169-.00326.00113-.00485.00169-.00331.00115-.00474.00165-.00329.00114-.00491.00173-.00308.00106-.00494.00174-.00308.00109-.0051.00178-.00136.00047-.01222.00431-.00214.00076-.0048.00169-.00341.00121L63.206,83.449l-.00392.00139-.004.00143-.00418.00148-.004.00142-.004.00144-.00427.00152-.00387.00138-.00422.00151-.004.00142-.004.00145-.00435.00155-.00377.00136-.00424.00153-.00392.00141-.00438.00158-.0037.00134-.00494.00178-.00311.00113-.007.00255-.0011.0004L63.117,83.481l-.00268.001-.00552.002-.00275.001-.0054.002-.00312.00114-.00492.0018-.00348.00129-.00454.00166-.0037.00137-.00451.00167-.00346.00126-.00477.00177-.00338.00125L63.06,83.502l-.00335.00125-.00489.00182-.00321.00119-.00565.0021-.00226.00084-.00673.00252-.00143.00053-.01643.00615-.00123.00047-.007.00263-.0018.00067-.00625.00237-.00238.0009-.00585.00221-.00239.0009-.00567.00215-.00256.001-.00577.00218-.00235.0009-.00568.00217-.00257.001-.00572.00218-.00238.00092-.00588.00226-.00223.00085-.00658.00252-.00144.00055-.00792.00305-.00014.00006-.025.00966-.00012.00005-.00794.00308-.0012.00047-.00694.0027-.00144.00057-.00668.00261-.00173.00067-.00649.00255-.00164.00064-.00655.00258-.00166.00064-.007.00274-.00093.00037-.00742.00293-.00082.00032-.0495.0197-.00017.00006-.00814.00327-.00009,0-.0079.00318-.00079.00032-.0075.003-.00067.00027-.00756.00305-.00065.00026-.00781.00316-.00028.00012q-.2358.09562-.46585.20188l2.305,4.99279a5.26968,5.26968,0,0,1,2.225-.48471V82.83006ZM58.5953,86.62167a10.79971,10.79971,0,0,0-2.06639,3.68378l-.00013.00038-.02025.063v0l-.02487.0793h0l-.02424.07944-.00007.00024-.00235.00782,0,.00013-.00233.0078-.00009.00029-.02118.0717v0l-.02072.072-.00006.0002-.00618.02188,5.29317,1.49115a5.2604,5.2604,0,0,1,1.0752-2.00522l-4.17947-3.574Zm2.97083,7.86594-5.43278.85213a10.75693,10.75693,0,0,0,1.689,4.31834l4.57078-3.05763a5.23191,5.23191,0,0,1-.827-2.11284Zm2.47752,3.70154L61.16391,102.874q.39691.244.81588.45416l.00035.00018.00783.00393.00007,0,.06437.03193.00045.00022.00749.00367.00068.00034.00748.00368.00044.0002.00759.00372.0005.00024.05658.02745h0l.00773.00373.00086.00041.0072.00346.00086.0004.00727.00349.00072.00034.00762.00365.00037.00016.00793.00379.00012.00006.03242.01538.00062.00029.00734.00346.001.00048.00694.00326.00136.00064.00665.00312.00138.00065.00669.00313.00136.00064.00726.0034.00054.00025.008.00374h0l.03249.01508.001.00045.007.00324.00134.00062.00653.003.00176.00081.00642.00294.00155.00072.00651.003.00153.0007.00682.00312.00116.00053.00748.0034.00048.00023.03261.0148.0008.00037.00714.00322.00143.00064.00657.003.0017.00076.00641.00289.00164.00073.00636.00285.00184.00083.00646.0029.00149.00065.00714.00319.00084.00038.03257.01445.0012.00054.00684.003.00166.00073.00624.00275.00214.00093.00605.00267.00193.00084.00631.00276.00171.00075.00659.00288.00149.00066.00674.00294.00138.0006.03251.01411.00157.00067.0065.00281.00185.00079.00622.00267.00212.00092.00589.00253.00231.001.00571.00245.00246.001.006.00256.00187.0008.00664.00283.00146.00063.03275.01389.001.00042.007.003.00175.00074.00622.0026.00227.001.00587.00245.0023.001.00577.00241.00244.001.00571.00238.00242.001.00607.00254.00192.00079.00709.003.001.0004.01651.00683.00063.00026.00731.003.00245.001.00566.00232.00255.001.00557.00229.00265.00109.00557.00227.00247.001.00565.00231.00264.00108.00562.00229.0024.001.00591.0024.00228.00093.00678.00275.0012.00049.02468.01.00167.00067.00654.00263.00206.00082.00586.00235.00273.0011.0055.0022.0027.00106.00538.00216.00279.00111.0055.00218.00269.00107.00549.00218.00264.00105.00645.00255.00156.00063.01655.00651.00068.00028.00737.0029.00245.00094.00568.00223.00275.00108.00539.00211.003.00119.005.00195.00324.00125.00485.0019.00343.00134.0049.00189.003.00118.00529.002.003.00116.00547.00211.00259.001.00629.00243.00192.00073.00823.00316.00056.00023.00749.00285.00262.001.00557.00214.003.00113.005.00192.00337.00128.00492.00186.00328.00125.00484.00183.00332.00127.005.00189.00314.00119.00516.002.003.00111.00591.00223.00218.00082.00721.0027.001.00038.01656.0062.00215.00079.006.00224.00266.001.00552.00206.00293.00108.00534.002.00288.00106.00535.002.003.00111.00532.002.00287.00105.00554.002.00268.001.00612.00224.002.00073.00684.0025.00149.00055.0166.00606.00184.00066.00638.00232.00261.00094.00552.002.003.00109.00536.00193.00285.001.00541.00194.0029.001.00552.002.00277.001.00543.00195.00291.001.00592.00212.00222.0008.00736.00262.00086.00031.01678.00595.00184.00064.00639.00227.00259.0009.00562.002.00316.00111.005.00174.0035.00124.00471.00164.00362.00127.00479.00168.00333.00116.00515.0018.00313.00108.00546.00189.00276.001.00642.00222.00182.00063.01675.0058.00164.00056.00665.00227.00247.00086.00575.002.00293.001.0055.00188.0028.001.00552.00188.00287.001.00563.00192.00268.0009.00588.002.00238.00081.0066.00222.0017.00058.00739.00249.001.00034.017.00569.00154.00052.00678.00226.0023.00077.00605.002.00268.00088.00569.0019.00268.0009.00573.00189.00276.00091.00577.00191.00252.00084.006.002.00239.0008.00641.0021.00191.00063.00686.00224.00163.00054.017.00556.00034.00011.00812.00264.00131.00043.00692.00224.00228.00073.00624.002.00228.00073.00607.00195.0025.00081.006.00193.00253.0008.00585.00188.00261.00084.00622.002.00213.00069.00746.00237.00084.00027.0257.00813.00137.00043.00712.00224.00178.00057.00667.00209.00205.00064.0064.002.00222.0007.00661.00206.00165.0005.007.00219.00162.0005.00739.00229.001.00032.008.00245.00061.0002.02594.008.0009.00027.00747.00228.0018.00055.00681.00207.00187.00057.00654.002.00217.00066.00649.002.002.00061.00663.002.00186.00057.00721.00216.00124.00039.03473.01036h.00007l.00838.00249.00125.00037.00729.00215.00156.00045.007.002.0019.00056.00668.002.00192.00056.00684.002.00169.00049.00744.00217.001.0003.00793.0023.00073.00022.03483.01.00088.00024.00778.00223.00109.00031.00757.00216.0012.00034.00755.00213.00117.00034.00752.00214.00118.00033.00806.00228.00046.00012.044.0123.00016,0,.00835.00232.00108.00029.00747.00206.00151.00042.00739.002.00115.00031.00772.00212.001.00026.00834.00229.00019,0,.05306.01432.00022.00006.00847.00225.00059.00016.00826.00219.00055.00014.0084.00223.00035.00009.071.01851h0l.00879.00226.00021.00006.00868.00221.00021.00005a10.77437,10.77437,0,0,0,1.40519.26056l.64246-5.46154a5.23054,5.23054,0,0,1-2.14309-.74418Zm6.38624-.629a5.3476,5.3476,0,0,1-1.96483,1.15316l1.6952,5.2314a10.773,10.773,0,0,0,2.57537-1.23284l.00008-.00006L72.79,102.676l.00007-.00005.00671-.00446.0001-.00006.00661-.00439.00031-.0002.04688-.03134.00045-.00031.00594-.004.00123-.00084.00556-.00374.00141-.001.00542-.00366.00167-.00111.0054-.00367.001-.00067.03234-.022.00074-.0005.00562-.00383.00147-.001.00514-.00353.002-.00132.005-.00345.00184-.00127.00513-.00352.00159-.00109.00551-.0038.00059-.00039.02552-.01761.00093-.00064.00515-.00357.002-.00138.00483-.00334.00209-.00145.00489-.0034.002-.0014.00492-.00342.002-.00137.005-.00348.00177-.00124.00525-.00366.00065-.00046.02485-.01741.00159-.00113.00484-.0034.00218-.00154.00458-.00322.00247-.00174.00438-.0031.00257-.00182.00448-.00317.00235-.00166.00454-.00321.00243-.00172.00452-.00321.00237-.00169.01565-.01112.0024-.00173.00416-.003.00281-.002.004-.00285.00308-.0022.00391-.00279.003-.00217.00393-.00281.00313-.00226.0038-.00273.00321-.0023.00374-.00269.00322-.00232.00381-.00276.002-.00145.0087-.00629.00279-.002.00359-.00259.00343-.00249.00359-.00261.00336-.00243.00357-.00259.00341-.00249.00358-.00261.00351-.00254.00328-.0024.00388-.00282.00313-.00229.004-.0029.003-.00218.004-.003.003-.0022.00674-.00494.00238-.00176.00453-.00333.003-.00218.004-.003.0031-.00228.00376-.00277.00319-.00235.004-.00293.003-.00222.00383-.00283.00317-.00235.00392-.0029.003-.00225.004-.003.003-.00219.00581-.00432.001-.00078.007-.00519.00172-.00128.00529-.00394.002-.00152.00494-.0037.00236-.00177.00462-.00344.0024-.0018.00454-.00342.00254-.00191.00466-.00349.00217-.00164.00486-.00366.00224-.00168.006-.00453.00079-.00058.01421-.01074.001-.00078.00577-.00438.002-.00152.005-.00382.002-.00156.00484-.00367.0022-.00168.00491-.00375.00208-.00158.00491-.00375.002-.00154.00582-.00447.001-.00073.02117-.01626.001-.00077.006-.00463.00121-.00093.00573-.00441.00152-.00117.00554-.00429.00142-.0011.00554-.00429.00155-.00119.00616-.00479.00057-.00042.02837-.0221.00045-.00035.00643-.005.001-.00079.006-.00472.00105-.00082.006-.0047.001-.00078.00656-.00516.00024-.00018.04249-.0336.00026-.0002.00677-.0054.00033-.00026q.31193-.24838.6048-.51889l-3.73117-4.03974Zm7.20385-4.32666-5.49527.20791q.00395.1037.00394.2084a5.28509,5.28509,0,0,1-.403,2.0387l5.07821,2.1102a10.75576,10.75576,0,0,0,.78248-3.19445l0-.00035.0007-.008,0-.00042.0007-.00808,0-.00032.00068-.008,0-.00044.00065-.00759.00009-.001.00062-.00749.00008-.00093.00061-.00739.0001-.00111.00059-.00731.0001-.00117.00057-.007.00013-.00161.00056-.00692.00012-.00151.00056-.007.00011-.00148.00055-.007.00013-.00156.00052-.00668.00016-.00193.00051-.00656.00014-.00189.0005-.00661.00015-.00184.0005-.00653.00016-.00211.00045-.00609.00019-.00258.00045-.006.00019-.00249.00044-.006.00018-.00244.00044-.00609.00017-.00243.00044-.006.00018-.00256.00043-.006.00017-.00246.00043-.006.00017-.00242.00043-.00609.00017-.0025.0004-.00583.0002-.00283.00039-.00578.00018-.00265.00039-.00577.00018-.00278.00039-.00584.00017-.00257.0004-.00592.00016-.00259.00039-.006.00015-.00235.0004-.00615.00015-.00232.00039-.00621.00016-.00245.00037-.00589.00018-.00286.00035-.00575.00016-.00266.00036-.00585.00016-.00258.00036-.006.00015-.00243.00035-.006.00016-.00273.00036-.00586.00014-.00251.00035-.006.00013-.00236.00036-.0062.00014-.00236.00034-.00608.00015-.00273.00032-.00586L77.625,94.255l.00034-.00611.00011-.00209.00035-.00654.00007-.00129.00039-.00723.00008-.00143.00037-.00711.00005-.00106.00039-.0075v-.00016l.00325-.06726,0-.00073.00033-.00751.00005-.001.00028-.00646.0001-.00221.00028-.00665.00009-.00184.00027-.00648.00009-.00212.00027-.00656.00008-.002.00025-.00594.00011-.00279.00022-.00557.00013-.003.00021-.00548.00012-.00313.00022-.00545.00012-.00313.00018-.005.00015-.00384.00016-.00449.00015-.004.00017-.00464.00014-.004.00018-.00479.00013-.00366.00016-.00487.00013-.00387.00016-.00473.00013-.00379.00016-.00488.00013-.00374.00016-.00493.00011-.00363.00015-.00479.00013-.004.00014-.00462.00012-.00388.00014-.00468.00012-.004.00014-.00465.00011-.00385.00013-.00471.00012-.00405.00012-.00462.00011-.00385.00013-.0048.0001-.00391.00013-.00465.00009-.004.00012-.00454.00011-.00434.0001-.00419.0001-.00431.00011-.00444.0001-.00422.0001-.00438.0001-.00421.0001-.0044.00009-.00438.00009-.00427.00008-.00418.0001-.00453.00009-.00415.00008-.00449.00008-.00406.00009-.00456.00008-.00426.00008-.00435.00007-.00421.00008-.00445.00007-.00423.00008-.00442.00006-.00412.00007-.00455.00007-.00424.00007-.00437.00006-.00419.00006-.0045.00006-.00416.00006-.00453.00006-.004.00006-.00467,0-.00422.00006-.00439.00005-.0042.00005-.00448,0-.00424.00005-.0044,0-.00427,0-.00436.00005-.00448,0-.00418,0-.0045,0-.00415,0-.00458,0-.00412,0-.00444,0-.00421,0-.00473,0-.00392,0-.00476,0-.00392V93.6967l0-.00346,0-.00543V93.679l0-.00318v-.02606h0V93.6234l0-.00759v-.00264l0-.00549v-.00256l0-.00763V93.596l0-.00615v-.00325l0-.00444,0-.00369,0-.00495,0-.00545,0-.004,0-.00419,0-.00333,0-.00446,0-.00221-.00008-.00952,0-.002-.00005-.0053,0-.00177-.0003-.025v-.00006q-.00131-.10038-.00443-.20032l-.00006-.002L77.636,93.299l-.0001-.00329-.00016-.005-.00021-.00623-.00008-.00241-.0002-.006-.00006-.00174-.00147-.04078Zm-4.10519-8.07466L70.11713,89.472a5.39576,5.39576,0,0,1,1.45159,1.76947l4.9-2.49615-.00283-.00556-.00064-.00127-.00281-.00549-.00113-.00221-.00253-.005-.0015-.00292-.00243-.00474-.00143-.00279-.00251-.00488-.00143-.00278-.0025-.00486-.00131-.00254-.00266-.00519-.00076-.00145-.01013-.01957-.00058-.00112-.00273-.00526-.00129-.00249-.0026-.005-.00137-.00262-.00255-.00492-.0014-.00267-.00261-.005-.00134-.00253-.0026-.005-.00133-.00252-.00273-.0052-.0007-.00134-.01018-.01933-.00074-.00141-.00278-.00528-.00123-.00232-.00271-.00512-.00129-.00243-.00273-.00514-.00123-.00235-.00275-.00518-.00127-.00239-.00278-.0052-.00107-.002-.003-.0056-.0006-.00111-.011-.02056-.00008-.00015-.00317-.00592-.00087-.00162-.003-.00555-.00108-.002-.00283-.00526-.00125-.00231-.00281-.00522-.00122-.00225-.00283-.00524-.00112-.00206-.003-.00558-.00059-.0011-.01456-.02675-.00071-.00131-.00291-.00531-.00131-.00241-.00276-.005-.00128-.00235-.00284-.00518-.00127-.00232-.00283-.00515-.00119-.00214-.003-.00542-.00082-.00149-.01464-.02646-.00064-.00116-.00322-.0058-.0009-.00162-.00307-.00552-.00109-.00195-.00305-.00547L76.276,88.384l-.003-.00534-.00116-.00206-.00314-.00563-.00043-.00078-.01924-.03421-.00063-.0011-.00337-.006-.00079-.00139-.00326-.00575L76.24,88.32007l-.00333-.00586-.0006-.00105-.00359-.00634-.00023-.00039-.01976-.03456-.00045-.00081-.00342-.00594-.00086-.00149-.00342-.006-.00066-.00113-.00357-.0062-.00046-.00081-.0242-.04172-.00013-.00022-.00385-.0066-.00037-.00062-.0037-.00632-.00057-.001-.00363-.00621L76.1627,88.186l-.00376-.0064-.0002-.00036-.02457-.04162-.00026-.00044-.00383-.00646-.00048-.00079-.00368-.0062-.00062-.00105-.00377-.00633-.00015-.00025-.02506-.04179v0l-.004-.00658-.00044-.00073-.00384-.00636-.00041-.00067-.00394-.00652-.00018-.00029-.02527-.04153-.00006-.0001-.00415-.00676-.00017-.00028-.00408-.00667-.00023-.00037a10.8723,10.8723,0,0,0-2.521-2.83858Zm-6.70667-2.32875v5.49919a5.36644,5.36644,0,0,1,1.25243.147l1.28494-5.347a10.80449,10.80449,0,0,0-1.78591-.2735h0l-.01-.00067h-.00005l-.05012-.00327-.00052,0-.00953-.00061h-.00043l-.04-.00242-.00066,0-.00906-.00052-.00125-.00008-.00881-.0005-.001,0-.00961-.00055h-.00011l-.02993-.00163-.001,0-.00862-.00046-.0016-.00008-.00865-.00044-.001-.00006-.02995-.00148H67.3512l-.00958-.00046-.00127-.00006-.00839-.0004-.00183-.00009-.00812-.00036-.0017-.00008-.00892-.0004-.00075,0L67.29073,82.84l-.00087,0-.00879-.00037-.00181-.00008-.00785-.00032-.00222-.00009-.00786-.00032-.00182-.00007-.00908-.00036-.00056,0-.01963-.00073-.00221-.00009-.00745-.00027-.0027-.0001-.007-.00024-.00274-.00011-.00734-.00024-.00233-.00009-.00835-.00028-.00128,0-.01948-.00063-.00243-.00008-.007-.00022-.00322-.0001-.00636-.00019-.00344-.0001-.00649-.00019-.003-.00008-.00779-.00023-.00178-.00005L67.118,82.834l-.00084,0-.00867-.00022-.00264-.00008-.00709-.00017-.00295-.00007-.00663-.00017-.00317-.00008-.0069-.00017-.00273-.00006-.008-.00018-.00157,0-.00965-.00021-.002-.00005-.00762-.00015-.00306-.00006-.0065-.00014-.00341-.00006-.0063-.00012-.00347-.00007-.00655-.00012-.003,0-.00789-.00014-.00176,0-.00958-.00015-.00252-.00005-.00689-.00011-.00369,0-.006-.00009-.00369,0-.006-.00008-.00353,0-.00665-.00009-.00295,0-.00833-.00011-.00127,0-.00959-.00009-.00255,0-.007-.00006-.00341,0-.00617-.00006-.00372,0-.00583-.00005-.00392,0-.00633,0-.00308,0-.00836-.00006h-.00131l-.00949-.00005h-.00313l-.00635,0-.00384,0h-.00592l-.00375,0H66.841l-.00631,0h-.01279Z"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_OFF@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_OFF@128.png new file mode 100644 index 0000000000000000000000000000000000000000..7f082ebf4b34b41e843dd97c98b5f3782e6ccacd Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_OFF@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_OFF@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_OFF@256.png new file mode 100644 index 0000000000000000000000000000000000000000..7777d9357852cda3d01b9043607a67a8d3c47184 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_OFF@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_OFF@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_OFF@32.png new file mode 100644 index 0000000000000000000000000000000000000000..921d9924b2cff63838efb36cc5d6e3cb9a6a7751 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_OFF@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_OFF@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_OFF@512.png new file mode 100644 index 0000000000000000000000000000000000000000..5c85c62f603c86262b983cf8ccea0be6d737ca92 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_OFF@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_OFF@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_OFF@64.png new file mode 100644 index 0000000000000000000000000000000000000000..34d748d6e729dcca6a739a77fc8bc41665662437 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_OFF@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_OK.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_OK.svg new file mode 100644 index 0000000000000000000000000000000000000000..531d4fbf735f9fed5816ef277f81c15b1f2dc8f6 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_OK.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1{fill:#3dd83d;stroke:#288c28;stroke-width:6.15118px;}.cls-2{fill:none;}.cls-3{fill:#288c28;}</style></defs><title>valve_hand-solenoid-analog_v05</title><polygon class="cls-1" points="7.122 62.65 7.122 124.65 66.822 93.65 7.122 62.65"/><polygon class="cls-1" points="126.522 124.65 126.522 62.65 66.822 93.65 126.522 124.65"/><rect class="cls-2" width="133.64375" height="133.64375"/><circle class="cls-3" cx="66.82188" cy="93.64978" r="10.81973"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_OK@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_OK@128.png new file mode 100644 index 0000000000000000000000000000000000000000..aa804754b5e9b71de1202eb6b22258a545a96623 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_OK@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_OK@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_OK@256.png new file mode 100644 index 0000000000000000000000000000000000000000..812b46a851219f84a821c5420af9ecd9ef9e287e Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_OK@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_OK@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_OK@32.png new file mode 100644 index 0000000000000000000000000000000000000000..b2f9f141424397edfdb94a36d0ba1ee60a0f30ac Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_OK@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_OK@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_OK@512.png new file mode 100644 index 0000000000000000000000000000000000000000..fe99f42cf745139d2785b5ecf7c04bb377837bf7 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_OK@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_OK@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_OK@64.png new file mode 100644 index 0000000000000000000000000000000000000000..aaf176a7010448886589966b7fc48fca00c05a04 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_OK@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_WARNING.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_WARNING.svg new file mode 100644 index 0000000000000000000000000000000000000000..2995259a8873f6749a43b9812f58bf78504f6bdc --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_WARNING.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1{fill:#fcf211;stroke:#96900a;stroke-width:6.15118px;}.cls-2{fill:none;}.cls-3{fill:#96900a;}</style></defs><title>valve_hand-solenoid-analog_v05</title><polygon class="cls-1" points="7.122 62.65 7.122 124.65 66.822 93.65 7.122 62.65"/><polygon class="cls-1" points="126.522 124.65 126.522 62.65 66.822 93.65 126.522 124.65"/><rect class="cls-2" width="133.64375" height="133.64375"/><circle class="cls-3" cx="66.82188" cy="93.64978" r="10.81973"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_WARNING@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_WARNING@128.png new file mode 100644 index 0000000000000000000000000000000000000000..ffbb5491c7701da4ddee1f1691cbbac460b7ad12 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_WARNING@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_WARNING@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_WARNING@256.png new file mode 100644 index 0000000000000000000000000000000000000000..899df43e33e73276b3ccbd26b11758bf40f2dce0 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_WARNING@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_WARNING@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_WARNING@32.png new file mode 100644 index 0000000000000000000000000000000000000000..e7f69cb8c39493911c95b8a280203fcb67de3e89 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_WARNING@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_WARNING@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_WARNING@512.png new file mode 100644 index 0000000000000000000000000000000000000000..ec05000580ac351874b702f266fce38ce4d8188b Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_WARNING@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_WARNING@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_WARNING@64.png new file mode 100644 index 0000000000000000000000000000000000000000..ed8a4e66b95c88ff98a9031fe7c5a9c4bd33ecd8 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_WARNING@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_solenoid_BLUE@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_solenoid_BLUE@64.png new file mode 100644 index 0000000000000000000000000000000000000000..03e15922ad4de5b747313bec83127f994d57eceb Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_solenoid_BLUE@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_solenoid_CLOSED@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_solenoid_CLOSED@64.png new file mode 100644 index 0000000000000000000000000000000000000000..0e49f216aa4052536089ed44c3468a4dc8e51586 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_solenoid_CLOSED@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_solenoid_CLOSED_w@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_solenoid_CLOSED_w@64.png new file mode 100644 index 0000000000000000000000000000000000000000..bfbebb7139e404ef988de26a7c10529ef6903c74 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_solenoid_CLOSED_w@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_solenoid_ERROR@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_solenoid_ERROR@64.png new file mode 100644 index 0000000000000000000000000000000000000000..b7416c79e1c92a8e03487d6eaa01402125acebbc Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_solenoid_ERROR@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_solenoid_INVALID@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_solenoid_INVALID@64.png new file mode 100644 index 0000000000000000000000000000000000000000..f3127fdbf8989f65e438155e0f1d692cfb68c01e Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_solenoid_INVALID@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_solenoid_NEUTRAL@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_solenoid_NEUTRAL@64.png new file mode 100644 index 0000000000000000000000000000000000000000..53a319852d4ce39eb67780d8b62788be5279c71a Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_solenoid_NEUTRAL@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_solenoid_NEUTRAL_w@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_solenoid_NEUTRAL_w@64.png new file mode 100644 index 0000000000000000000000000000000000000000..b10946459560a0085cdadadd701504eb2d472366 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_solenoid_NEUTRAL_w@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_solenoid_NOT_CONTROLED@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_solenoid_NOT_CONTROLED@64.png new file mode 100644 index 0000000000000000000000000000000000000000..7017861ee06cc88e198df896c46433309fc36f22 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_solenoid_NOT_CONTROLED@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_solenoid_OFF@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_solenoid_OFF@64.png new file mode 100644 index 0000000000000000000000000000000000000000..7045ed5ee00ed2f4de4c8c224c3dcc92cb381e31 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_solenoid_OFF@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_solenoid_OK@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_solenoid_OK@64.png new file mode 100644 index 0000000000000000000000000000000000000000..c75cb75bf7915be7882c475b8e0d39daea7894e3 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_solenoid_OK@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_solenoid_WARNING@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_solenoid_WARNING@64.png new file mode 100644 index 0000000000000000000000000000000000000000..8cfcbc7ef335840a76eab8e61a8510ab2ed29608 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve solenoid/valve_solenoid_WARNING@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand-solenoid-analog_v05.ai b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand-solenoid-analog_v05.ai new file mode 100644 index 0000000000000000000000000000000000000000..0b03ddcaf3b52694c9a1257dd06b4133b0eca413 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand-solenoid-analog_v05.ai @@ -0,0 +1,2241 @@ +%PDF-1.5 %âãÏÓ +1 0 obj <</Metadata 2 0 R/OCProperties<</D<</OFF[14 0 R 15 0 R]/ON[16 0 R]/Order 17 0 R/RBGroups[]>>/OCGs[14 0 R 16 0 R 15 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <</Length 23515/Subtype/XML/Type/Metadata>>stream +<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> +<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c145 79.163499, 2018/08/13-16:40:22 "> + <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> + <rdf:Description rdf:about="" + xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" + xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" + xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" + xmlns:stMfs="http://ns.adobe.com/xap/1.0/sType/ManifestItem#" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:xmp="http://ns.adobe.com/xap/1.0/" + xmlns:xmpGImg="http://ns.adobe.com/xap/1.0/g/img/" + xmlns:pdf="http://ns.adobe.com/pdf/1.3/" + xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/" + xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#" + xmlns:xmpG="http://ns.adobe.com/xap/1.0/g/" + xmlns:illustrator="http://ns.adobe.com/illustrator/1.0/"> + <xmpMM:DocumentID>xmp.did:c3de8e3c-d852-b149-8eca-112338003303</xmpMM:DocumentID> + <xmpMM:InstanceID>uuid:8ce727d9-4fb7-4154-a7ea-b3b4301c1502</xmpMM:InstanceID> + <xmpMM:OriginalDocumentID>xmp.did:756bfc30-4464-c94c-be2b-133edb6af807</xmpMM:OriginalDocumentID> + <xmpMM:RenditionClass>proof:pdf</xmpMM:RenditionClass> + <xmpMM:DerivedFrom rdf:parseType="Resource"> + <stRef:instanceID>uuid:caecd4a3-eacc-4f74-a2d1-a3ca0ee32fb7</stRef:instanceID> + <stRef:documentID>xmp.did:b2796d09-8461-2047-b638-ce3f79d70c9d</stRef:documentID> + <stRef:originalDocumentID>xmp.did:756bfc30-4464-c94c-be2b-133edb6af807</stRef:originalDocumentID> + <stRef:renditionClass>proof:pdf</stRef:renditionClass> + </xmpMM:DerivedFrom> + <xmpMM:History> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:756bfc30-4464-c94c-be2b-133edb6af807</stEvt:instanceID> + <stEvt:when>2019-05-03T14:22:07+02:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CC 23.0 (Windows)</stEvt:softwareAgent> + <stEvt:changed>/</stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:c3de8e3c-d852-b149-8eca-112338003303</stEvt:instanceID> + <stEvt:when>2019-05-24T13:01:51+02:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CC 23.0 (Windows)</stEvt:softwareAgent> + <stEvt:changed>/</stEvt:changed> + </rdf:li> + </rdf:Seq> + </xmpMM:History> + <xmpMM:Manifest> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <stMfs:linkForm>EmbedByReference</stMfs:linkForm> + <stMfs:reference rdf:parseType="Resource"> + <stRef:filePath>Z:\Collaboration Area\ICS Division\ICS communication design\helper\golde_shower.png</stRef:filePath> + <stRef:documentID>adobe:docid:photoshop:05684d46-561a-3743-9aa0-3e88aa430a60</stRef:documentID> + <stRef:instanceID>xmp.iid:2744e4fb-25ec-514c-b66f-ca5dfc5ea12a</stRef:instanceID> + </stMfs:reference> + </rdf:li> + </rdf:Seq> + </xmpMM:Manifest> + <xmpMM:Ingredients> + <rdf:Bag> + <rdf:li rdf:parseType="Resource"> + <stRef:filePath>Z:\Collaboration Area\ICS Division\ICS communication design\helper\golde_shower.png</stRef:filePath> + <stRef:documentID>adobe:docid:photoshop:05684d46-561a-3743-9aa0-3e88aa430a60</stRef:documentID> + <stRef:instanceID>xmp.iid:2744e4fb-25ec-514c-b66f-ca5dfc5ea12a</stRef:instanceID> + </rdf:li> + </rdf:Bag> + </xmpMM:Ingredients> + <dc:format>application/pdf</dc:format> + <dc:title> + <rdf:Alt> + <rdf:li xml:lang="x-default">valve_hand-solenoid-analog_v05</rdf:li> + </rdf:Alt> + </dc:title> + <xmp:CreatorTool>Adobe Illustrator CC 23.0 (Windows)</xmp:CreatorTool> + <xmp:CreateDate>2019-05-24T13:01:53+02:00</xmp:CreateDate> + <xmp:MetadataDate>2019-05-24T13:01:53+02:00</xmp:MetadataDate> + <xmp:ModifyDate>2019-05-24T13:01:53+02:00</xmp:ModifyDate> + <xmp:Thumbnails> + <rdf:Alt> + <rdf:li rdf:parseType="Resource"> + <xmpGImg:width>256</xmpGImg:width> + <xmpGImg:height>92</xmpGImg:height> + <xmpGImg:format>JPEG</xmpGImg:format> + <xmpGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA
AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK
DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f
Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAXAEAAwER
AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA
AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB
UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE
1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ
qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy
obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp
0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo
+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7
FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXk2m+bde0eJ7g3i
3Nn6knO1vW2FHYARTbunSgB5DwGbeWjjKAPIvHw7Zy4s0oEccb+KZXX5n6ldFbWz019Knkrxm1FS
GYDY+jFReZHu23gcx8OjEjuXY67tmWKPpgbPenH5d3N7PHqxvLqW7kW6UCSZqmhhRiAAAqip6KAM
r1mMQlQ7m/sXUTzYjOZs8Twfyd+d/nLy7whvJf03pxagtrtz661J+GGejN8lcMOwpnOY9bIS4SLf
ZNd7LafLhGWJ8OVfBlnm7/nIbzAsCWmlaHNod3MH/wBI1WM+oArslYYSFViKbliQDUcT1zI1GsMB
sHT9j+y+PPK55IkDpFk/5E6zq+reTddvdUvZr67Opzj15mLMB9Ut24r2VQSaKoAHbJ6bIZ4iTz3d
d7T6THp9UMeMVEQj+lNNN1/VtJ020uJboX9vJFGTbXLfvyzKDSGUAsxr0Vga+IzhezfajPDKcU4n
JG68+bqsmnBFjZEr511LVWNrawHR5KEsboVuSAaViiYBaf5Rrv2zZdse0+XDGoYzEnrJhi04PMov
SpblfKetM9xLNLEbsJPI5aT4Y6j4vbtTNr2BqcmbR+JM3I242sHCDXcwHy7+ZnmHSIraG8Y6xbSB
QkMhP1ypA2icA+qf8lhX/Kx0vaU74ZDieV0Xa+Ti4ZDi+9Hav+bWtXwFtplodGZkV3e6XldUYVrH
GwCBfBzyr4DLtX2nKO0Y172/W9rzhtGNeZT3y3eXr/lZqlzJcyy3Sw6iwuXdml5L6nE8ya1HbM/Q
zMsQJ5uz7NmZ4YyO5KV6P+YGt6a0dvdhtXhf4Yo/+PyvghUfvfkRX/KzLc5fqn5kazfr9XsoG0cl
VaX1RyuqMK/CrAKins1DX2xVkvlm6u3/AC++sPPJJciG7Pru5MnJZJaEuamop1xVZZ+bb2DlFcxG
8IUsrRikgAG5cAEcf8rFALr3zbfzUit4vqRKgs0grLuK1RSKU8Ca4ral52vb2L8spbuG4liu/Qs2
FyjFJQzSxVbkKEE1zK0URLLEHkzhzYX5f/N/X7Jfqmo2ja4wRmiaAcbqiqT8aopV1FN2oKdTXNnq
uzIDeJ4WyWMKPmX81/MepSS2dhG+hwpVJkYf6bXwcsB6XyUV/wArJaXs2FcUjxfcscYZD5me8ufy
q8sAXtzbz3cuhJLeW8zxXH72WEORKp5Vapr4980ucVOXvLVJKNZ/NbzD5DY2erFPOA9NpLeGyURa
yiKCedxbRK0MkQ/amUR0/kOVMQVC585eZfPHl3Vb631NfLun2tvMzaVp8hOrJIkbMEvpnVWtWqN4
o0Df8WHFbZlrXmDUtG/KeDW7Rw19babbzK0tXDN6Kk89wTXvvilD/lR+aF353sna50iaxlgHx3ag
tZyEUBEchoeVTum9B3xVjvmv87dYs/Omn+WLHRpbJZ76C3mvb9SpkjeZUZrdBsVPZyx/1cNItGf8
5Eanq+neXvLs2lahcabdNraL9YtX4PQafePxPVWXkgJVgVPcYEsM8vf85JeZrFH0/WdDl80XkIjp
caJGfrADuqA3VsodELcvhZSAzUXiK1xVivnb86/PHmrTLma0vRoWmR142OmyH1yVp8NzdEJJUd0R
UHZuWKvqPX7+ew017qEAyIybMKggsAcVW6Jq7ala+q1u8JHc/Zb/AFD3xVLj5muZdagsEt2gjZwH
Moo5HsO2KqujeSdB0uf60kRubwMzJc3B9Rk5MWpGPsp1/ZFfE5bPNKQonZxMGhxYyZAeo9U2v9Ps
dQtmtb2BLm3f7UcihhXsd+hHY5WJEbhyZwjIVIWEFoHluw0JbqOyaUx3MolKzOZOBCBAqsfipRf2
iTk8mUz3LTp9LDCCIbAm0l8m/lX5O8pn19PtDPqG9dRuiJZxWuyGgWMb0+ACveuY2PDGHIO51vau
fU7Tl6R0HJkGtaDouuWL2Gr2UV9aP1imUMAenJT1Vh2Zdxlkogii4eHPPFLigTEpZ5Q8i6N5T02+
03SWmFnfXL3RSZ/UMZkiji4IxHIqBEKcqn3yuGIRiQOTfrdfk1MxPJvIAC++kZo3lbSNJCNBGZbl
FCC7nPqS8QKUBOyj2UAZi6PszBp/ojv39XGnkMuaN1DTLDUYPQvYFmjrVeWxU/zKwoyn3BzJz6fH
ljwzAkGIkRyQln5dtLTSrrTI5ZXhu/V5ySMHkHrLxPxEb07VynSaHHgxnHD6d/tXKeO76ofy55M8
v+XowLC3rcceL3sx9Sdh4Fz0H+StB7Zbh08MY9IcbBpceIekI3WdA0fWrf6vqdolzGN0LCjofFHW
jofdTk8mKMxUhbZlwwyCpCwg9P8AKVhY+W7jy/FLM1ncrcI0jlTKFueXKjcabc9qjHFiGOPCOTHB
hjijwx5K+ieWNF0VD9RtwJmFJblzzmf/AFnbensNvbLG5V1jQdJ1iARahbrMF3jk3WRCe6OtGX6D
iqzTdAs7DQxo0byPahJE5uQZCsrMzVIAFfj8MVRVlp9nZR+naxLED9ojq1P5mO5+nFXXun2V7H6d
1EsijoTsw91YUI+jFUFrHlux1Xy++hTvKlo6RRl42AkCwsrLRiGFfgHbLMWUwkJDmEg0u0Ly1oeg
2xg0q0S3VqerJu0khHd5GqzfScOXNLIbkbUm1HzF5P8AL/mGMLqVqHmUcYrtPgnj/wBWRd6f5J29
sOHUTxm4lRIhCax5FsNU8qWPlt7y6trWwNmYbq3dUuP9BZGjPMqQCfTFSF+VMrnLiJJ6oKO8u+VP
L3l22eDRrKO1Ezc7iYVeaZ/555nLSyv/AJTsTkVQHm38vPLPmhHe9he21Fo2hTVrFzb3ixsKFPVX
7aEH7EgZP8nFUzXy/praHb6Lcxi7sYIY4DHMFYSJEoQc1I4mtNxTFUfBBBBEkMEaxRIAqRoAqgAU
AAHgMVQ+oaRpmorEL61jufQkWaEyKGKSIQyutR8LAjYjFUl89+QNF87WOn2OryXCWtherfBLaT0m
kZYZYPTZwOYRlnavAhvAjFUz8v8AlrQPLunJp2h2EOnWSb+jAgUM3d3PV2PdmJJ74qxrz1+Tvkfz
mWn1C1a01NgA2qWLCC4dRT4ZSAVmXalJFanamKs0mghnT05kWRKg8WFRUGo2OKrwABQCg8MVU5ba
CV0eRAzxnlGxG6n2OKvPfzV1jWlvtK0O1Gq2mkXiTXGsappFje3U/GIosVpFLZxTtC0xdmZ9iFWg
ILYqwSXUtP0eOXV/IK+ZX1bT5D9Y0prHX7q1vWjIMtrcrcwSokzLVVkqrIxBJpgQ9/ik9SJJOLLz
UNxYUYVFaEdjhS81/NPVtZk1zTtAUazZeX5Ld7vVNR0Wzvrmadw4SKzWeyhmeAbM8hBDEcQCKnFW
Gw6xY6J6WteQo/Mc721z6d/pL6fr13aXscUxhuom+swyLFcRFXo4YEOvF67jFD37FLy78y9X1W58
z2+gTLrVp5ZitFur660ax1KaS8nkd0W1+tWEUrRJGic5OLKzclFaVxVi2mava6Pf6dqnkRfMVxaN
dx22paPLYa3PY3EDTehcOr3cDJBNbmr8ldR8BVhvsoe9YpeU/mHqupXvm86LfJrlr5WsrWKZzo9j
qchv7qZm5I91p8MjJFAiiqK6lmbfYUxQUi8va3BpWs6Le+SU8wXmiajcw22pabcWGszWLW1w3D67
BPdwlIWhJDsVcKyA1FaHFQ9zxS8h89anqGp+dL3SNXj1628q6ZFCsMGk2GqyJqNxMnqySS3dhC59
KEMqCNZBVuXLoBigpf5R1sad5h0Obyd+nb7yvrMiRX1hd2GryWaQzpyhv7W7vIeMSq3HmBJwZGrS
oBxUPbsUvG/OmsT6j5s1e18yprtn5V0jhFZWunWWrC3vKwrLPd3N1YQsHjVn4Knq8RwJYb4oLvJW
sT6d5s0i28tJrt55V1fnFe2uo2OrfV7OkLSwXdtdX8KhI2ZODR+rxPMFRtioeyYpeI+btbGo+Ydc
m84/p2x8r6NI8VjYWlhq8dm8MCcpr+6u7OHjKrNy4AycFRa0qScUFMfIuqX+medLLSNIj1258ran
FOJoNWsNVjTT7iFPVjkju7+FD6UoVkMbPs3Hj1pioeu4peGeYNch1TWdbvfOy+YLPRNOuZrbTtNt
7HWYbEW1u3D67PPaQhJmmILqWcqqcaCtTigp7+XmqalZebxotimuXXla8tZJUOsWWpxmwuYWXiiX
eoQxs8U6MaIzsVZdtjTFQ9WxS8I/NG+/O/U/MNxaeXtPvbPRLVuFu9vwVpiBvI0leVCfsgbU98KG
Y/k9qv5jTWNxp/nWwmimtuBs7+VFUyoago/HaqcRvTeu+/UJejYq8Bl1mx1v1tZ8+R+ZIHubj0rH
SU0/XrS0s45JhDawj6tDGstxKWSrliS7cUpsMUMy/KzVtYj1vUdBb9M3vl9LdLvS9R1qzvraaBy5
SWzae9hhacbq8ZJLAcgSaDFL0wmgJpWnYYq+ePPl7+fmr6/cvplhfWGkwSstjFb8I+SBuKu7V5Mz
0BpWg7YUPUfyq1bzve6C8HnGwktNUtX4JcSKE9eMiochfhDA7GmBLF9N8yazoyetb3weF5pAbG7L
SRuxkYUiI/eIx7Baj/JObiWlhKAPI08bj7WzYs0oAcceLkp6V5q8y2C6jbPYtobarqE95Hc3kb8/
39P3UIkRIy68erV/1cxsGlhI7ydjru1s2OG0CPMsx/Lh52j1f155bl/rSVlmcyOawRnqf1DbIa2A
jIAdzf2HnnlxGUjZMngHkr83fO/lyWK2gnbWLOV+CaVdF5WJJ+zbuOUqN2AHJf8AJzmsWrmJcPMP
tXaHs5pcuAZb8KfDz6FOb382vP2g6IdKh0WXy3JfX2p3q3t/E5lb67qE92Y4FlRI6xevwLENXrxG
2ZGo1c4jaLpexvZzTZ5niyiddB/az/8AIG/v77yVr1zfXUt3cvqk5eed2kc/6HbH7TEnJ6WZliJP
Pd1/tVpseHViGMcMRCO3zTTTNY1PSNOspIbo3aSxRldNuC0kjsUBKwOoaUH2ow9hnBdl+0WqhlOL
hOWPFXm6jJgiRfJBeV9S1u10lNElDaNIZ7ucNKhFxKLm6kuCIvUUIAvq8SfiO1aDNp217RanDGoY
zC+pa8WCJ5lkek808o62DJJIyG8Akkdnc0j6lmJObX2ezzy6LjmbkbcbWihKu5575a/MDzNo6W1q
jPrMUij09OlLyXJ26QSKHk+hgw+WHSdoZb4a4g8noe1MwlwEcYUNP84+bNL8t6X5a9FtDa0tUiMk
sbC6mVRTnH6qqqKfYMfcZbrO0MsRQjwt+v7UzQFCPD5s18tSzH8p9UkaWR5RDqR9V3Z3JHqbl2JY
n3rmw0EjLECebtOzJGWCJPMpTovnfzFpsqWo56zG393ZNye6p/xXIoZmA/ywfmMzHPS3SvMXmPTv
KuieVxz0r9F6da2bsyNHdTi3hWL1F5gemrcK/DUj+bFWe+V5p/8AlXfq+o7TCG8IlLEyVEktDyJr
X3riqAuNY1W70q/0oqb0XNtLDzVSZYxIhTk3EEMBXvQ4oBbh1jVrTS7LSlU2X1a2ig5spEsgjQKW
XkAFBp2qcVJVvPNxcD8r5Z0mdZzBZt66MyvUyxVYMDyr71zL0IByxB/GzOHN5lP52826n5V1vyq8
cmt/pPTbqzR0RnuoFnhaL1W9NT6irzr8VCf5s2er7PxDcHhbJQCP80fmX5s1KeSx4SeX4l/vLJeS
XdD/AL8kYI6g9uAHzOT0nZ+KuInj+5MIBknmiH65+U3laCWWZBdS6DHLLDLJDLSSWAMVljZZFbf7
StXNHqP7yXvLTJh/5hebfOGl6Fq3lOxl/wAcTXdq8YsIY3bV7ON12luDaxyRyRDoDIkbH+ZzlTEI
6680a7540HV5L/VToX1O1lkn8qae8ttqELCMkLqE0iw3PX9mJI0P8zjAts113WtR0f8AKKDVrCTh
fWumW8sUjAOOQhXqGrXClQ/Kf8xfMHnLTml1TRJLERgMmpJtazkHcRq59Svy5LsatWgxVjnnL83/
ADdZedtM8uW+jyaVZ3F/BbvfXSh2niaZUcwUrGFINK1Y/wCqcKEZ/wA5IXN7b+XPLclndz2U/wCn
E43FrK8Mq00+9YUdCD1A26HvgS8zH5y/mNqOkfoU6NL50lsL/TLx7zTYXW5j+pahBdiO6WCOSCsv
ocFZQhHXidziqUeefzY87ebbK8NzftpNrb8lfQ9PaSAxuD9i7kYJPI47qwRf8jFX1X5hvp7HS5Lm
AgSIyUqKihYAjFVukajc6lZ+pPbNbsCrBj9l6GtVrv2xVLm8xajJrlvYm3a1haSjCQVdhv8ART5V
+eKozRvKOg6RK1xa2/K7csTdSn1JRyJJCsfsLv0WgyyeWUtiXHw6THjJMRueqaXNrbXUD291Ek8E
gpJFIodGHgVNQcgDTfKIIo7hA6J5d0zRFuU09XjiuZBK0bOzhSFC0XlUgUXpXJTyGXNpwaeGIEQF
Apb5R/Lryj5TQ/oixVbp6iW+m/e3DA9R6jbqv+StF9sohijHkHaavtDNqP7yVgdOiealpem6pZyW
WpWsV5aSiklvOiyIfmrAjJkA83Fx5JQNxNFKvK3knQfK+n3mnaNG8FneztcvCztJwd4kiIRnq3Hj
EOpOQjijEEDk36vW5NRISyG5AVaM0fy5pGkIBZwUl4hGuJCZJWUbAF2qaew29sx9JoMOnFY4159X
HlMy5ou9sbO+t2t7uFJ4G6xuARXsfYjxzIy4o5I8MhYQDSEtPL9haaZc6bCZPq116nPm5dx6o4tR
mqenStcp02jx4YGEBUf1oyHj5qfl/wAraFoFv6WmWqxMQFknb45np/PI1WPy6DtluLDHGKiGnDp4
YxURSL1TSNM1W1a01G1jurdt/TlUNQ/zKeqsOxG+TnASFEWzyY4zFSFhBWPlTS7LQLjQYDKLC5Wd
GDPydVuOXMB2BO3LatfpyOLGIChyY4cMcceGPJEaPoGkaPCYtPtlh5f3km7SOR3d2qzfScsbVXU9
I03VLY22oW6XEPUBxup8VYUZT7g1xVS0/Q7Cx0caREHayCyJxdiWKyszMCwof2ziqLtbO1tIvSto
lij68VFKnxPicVaurO1u4jFcxLLGezCtPcHsfcYqg9W8vadqmhtotyHFi6xoQjEPxiZWUctz+wMs
xZDCXEOYSDSpo+h6Ro1oLTS7WO1gG5VBux/mdjVnb3Yk4MmSUzcjZUm1LXfLOh69biDVbRLgLX0p
N1kjJ7pItHX6DksWaeM3E0oNIHV/I+j6p5Ys/LlxLcx6fYm1MTwTGGf/AEJlaP8AepRlr6YqUofA
jITkZEk9UFMNC8u6FoFiLDRbGGwtASxjhULyc9Xc/ad27sxJPfIqgvNfkXyz5ptvS1e05TqjRwX8
LNBdwq32hFcRlZFB7rXi3cEYqmEeiacukW+kyxC4sreKOFY5wrhkiUKvMEcTsPDFUaiIihUUKo2A
GwGKqV3Y2d2ipdQJOiOsiLIocB0NUcBgfiU7g9jiqSedPInl7znZWVjrscstnY3YvUhilaHnIsMs
PF2jKvwKTtUKw+7bFU10nRtJ0ewi0/SbOGwsYRSK2t41ijXxoqgDfvirH/O/5W+SvOcYOtWAN4oC
x6lbkw3SqP2fVTd0/wAh+S+2KsqkijkXjIodag0YAio6dcVXYqteKJypdQxQ8kJFaHxGKpbrmmar
qCQjTtZm0goSZHt4rab1AaUB+sRygU/ycVYh5VsPO2pvqhuPON5x0/Up7ONVs9OAaOHjTl/o/U8s
Veh4qlGuaTrGoNC2na5PpCoG9RYIbWYSVpQn6xFLSn+TirFfJFn5z1Sye/vfN13ILfVNStGtxaae
qSRafqU9ogYrbhhzjgHIg99sVeg1G+/Tr7d8VSbW9G1y/uI5NP8AMFxpMSpxaGCC0mV2qTzJuIpW
BptsaYqxnyHaectU0221W/8ANl1MEvLqOW1+q2CJJHa3ssIQskCuOaRblSD4Yqz+o+7riqS63ouu
310k2n+YbnSYVjCNbQQWkqswJJctcRSvUggUBptirHPy6t/N+qaBomval5purr63BHcXNkbWxjic
sN15RwK4HybFWe8hQmuw6nFUi1jQvMF5emex8yXWmQFQBaw29nKgI6tynhkff54qkP5bQebdT8s+
W/MWqeZ7m8Oo6da313Ym2sY4me5t1kZeUUKSABn2o2Ks7xVifnHTvMyWeparpvmW506O3tZJobKO
3spYw0URb7U0Mkh5Fan4sVd5O07zM9npuq6l5ludRjuLWOaaykt7KKMtLEG+1DDHIOJao+LFWWYq
wT8yYPNumeWfMnmLS/M9zZnTtOur60sRbWMkSvbW7SKvKWF5CCyb1bFU+0fQvMFneie+8yXWpwBS
DazW9nEhJ6Nyghjfb54qnnJaA1FD0PjXFWCfmHB5u0vQda1/TfNFzbfVIJLi3sfqti8S8RULyeFp
CPm1cVZFomi67Y3Tzah5hudWhaMottPBaRKrEghw1vFE9QARQmm+Kp0CCKjcHocVdirsVcSAQCaE
7D3PXFXn/nW0856VZLqFn5tukFxqmm2i25tLBkji1DUoLRwpMBY8I5zxJPUCtcVZToek6xp7TNqO
uT6urgems8NrCI6VqQbeKKtf8rFU3xV2KuxV45petano9G068ZXmml46dIGnjmb1G2SIfvAx/wCK
6e9c3MtPjlAE7GnisXaOox55QgOIcXJuz13zfpcN/Fe2raDFql9NeG7kQs3KcqPSSRh6SEcerCp7
DMbBp8cjvK3aa/tHU44emFebLvy0UrFrFZHlY3aFpJXaR2JgjJLMxJOQ10RGYA7m7sLLLJhMpGyZ
PnryL+Y/njy7dQ2eizSajHMxEeiSq9yjkkkiFFrIh/1Nu5BzmMOpyCdDcPt/aXYmiy4BkyEY58P1
frZDrX5h/ml5f0RtNk0mXyvbXt/qN39ekQyyM9/fT3ZijmZREnD1io25MByFK5k6nUZIjYU6LsTs
TQ5p+rKJ1/Dy/H4DO/8AnHuaefyPr81xK888mqzvLNKzSO7GztiWZ2JYk++S0kjLESee7ge1mGGL
WCEBURCND5prpWo3+k2FiNOuWmkkgjZdIkDTiT4RX0wtZI/mPgHcZwHZPbeshmOOIOSHEdu50+TF
AizshtAuddsNLi0W/Mmiq9xdSqeJWWY3NzJcFUmYcF4+rxovxGlds2vbnbetxRqOPgB/i5teHDA9
bZDpEaxeUNcjQsQrXgBZizf3fdmJJPzza+zuWU9DxSNyPE42uFCXuedeU/OPmjSTbWWmM+qh0Xjp
EnOVuNB/dOKvEPc1QeGHR6zMJcIHEHkNB2hnEuEDjCyLzD500jy7pflq7jk0KG2tkgRuLJPcBRQl
Zjsv+rH8Q8cv1utzRFAcLkdodoaiIoR4B3sz8sDj+UmqgE/3Gp7kkn/dm5J3zP7PJOEEu07LkTgi
SlGg+a/Mun3CWdh6mrr201+Ujqv+RKKtGv8Ar1XM12CAtNW8z6X5b0XyvcetpEOm2FtZIvFo57hb
eFIufqkCnLjUrHuvQnFWeeVaj8t9iaiC8oaknaSXv1xVBNqOs3mm32lor38Vxbywu1C0kQkQrXmB
v1qFO5xQHLqOtWemWWlyBrCOC3igRqESSCNFWvM9K06LuMClU8+Mx/KuUkkMbeyqQTWplh/a65ma
Afvo/jozhzeZx+ZvOureW9a8q26Ta7BqOn3Nk4KtJPbrcQvF6nrAGvHlULJUt0BzaazRYRvfA2Tg
EZ5u89ec9QupNP1BZdDi76ZHyjkZelXmPFpF/wBSinJ6LRYa4geIphAMm802Vtf/AJR+VLO6Uvb3
EugRyqGZCVaaAGjIVYH3Brmi1H95L3n72mXNiHnTXfN1to2r+U/K1zJ54Wa3e2n0tlea908MtAZL
+MMj0/33cfvW7OcqYhFajrmo+ctJ1aHzNqcmlX9taTyyeSrYy2TxARsQbl39O4vFBH24+MLfyt1w
KzjzBq2oaR+TsOpafL6F7a6ZbywS0VuLLCpB4sCp+kYUqf5Red/OnmfTvV8waKbOFYw1vqi/u0uO
gFIXPMVG/MVU+2KsZ87/AJm/mFZ+dtK0RNJbRtHuNRtoPr7gTG5jaZQQsgBjTkh3Xdx4jChFf85L
8/8ADXlopJJDIuvRvHNDI8UiMunXrKySIVZSCKgg4EvNrD8zPza1fRxpOn6VL55tbHUNOujexIYp
oXsL+3uxDNcopglL+iFPwh1B5tyAxVIPP35hecvNcF9Dr19LZNaD975bgWWyjgYGoFxE9J5W95Tx
7qoxV9aeY7y4s9KkuLduMqMnE0B6sAdjireiX+oXlqZLy1Nuw+yegf3Cn4h9OKpW+t6w2u21pLAb
S3aShU/EXA/yun3YqjtP0Ly35fjmu4YorUsS1xeSt8XxNX4pXOy1PStMnKcpbNEMOPFZAA7yiItX
0DUGNpFe2l40qkG3WWOUstPiHAE1FOuDhkN6ZDJCWwILtI0DStHFwunQC3juZPVkjUkoG4hfhBPw
ig6DbGUzLmuLBDHfCKtLNE8reSfJGnSy2UFtpdvt9av53AZuTAD1J5TWnI7AtSvQZVGEYDbZ2ObV
Z9TIcRMj0H6gjIta8o68sumxX2n6qsqH1rJJYbkNHsDyjBeq79xh4gdmo4suL1ESj50Qt8u+T/L/
AJcsrux0a2+qWd7O9zLArMyiR40jbhyLcRxjHwjYdsAxgCgnUarJmIlM2QKVbLTdA8v2n7lYrKHZ
XnkYBm7DnI5qfapzHxYMOmj6QIDv/a0mRkrrd6JqqSWqz218jL+9gV0lBXp8SgnbLBkxZQY3GXls
UUQstdB0y006fTreNktLj1PUTkzH96OLULEnBg0uPFAwgKiUT9XND2Wn+V/K1gscK22mWrEIZZHV
DI9DTnJIeTtQHqa5OMYYxtQDTCGPEKFRCr9Z8t69BLZCaz1SGgM1urxzinYsoLU9jhuE9tim4ZBW
0vtW2fljR7PRJtEtomj06dZUeLmzELPXmAzEt+0ab4ceMQFDknFijCPDHkut7by95es1ij+r6dbM
1OTssfNqftO5q7U7kk5NsXu2ga7bS2pe21K3FPVjVklCk14k8SeJ22OKr7HRdOsdKGlW8ZFiFdBE
WZjxkJZhyJ5ftHviqpz07T40i5Q2sZr6aErGDTrQGlcVdz03UYXiDw3cW3NAVkG/StK4qoaloOl6
lo7aPdRFtPZY0aFWZfhiZWUclIb9gd8njyGB4hzSDSH+ueUfLNvDYNc2OjwkFobeSWK35DoWAYry
36nJVPIboyXcrJl8n+bbOS2MlnrNvERz9KRJjEzA0IeNi0bGhoQQcIOTEb3iV3C3VfJXl/VfLlt5
cvopJNJtRbiOJZZI2palTEDJGVf9gVod8rlIyJJ6oaF95G8oWlvpZudN0C1Ck21m0kFopUGhZUYp
XfqciqjqWk+Q/P2lNHP9T1yyjZoluraVZGhkKjl6VxC3OJ+LCvFgaHFU5g0qxi063070hJaW0aRR
RyfH8MahVrXrsMVRRZF2JC+3TFVksME6BZUWVKhgGAYVUhgfoIriqT+bfJPlrzdaWdn5gtPrtnZX
S3sVuXdEMqxyRDnwK8l4zNVTse9Rirptf8j+Wlh0mfUtM0VYYx9X095re0CRbheERZKLsaUFMVQP
mDyf+X/5haXDPf29rq9qa/U9TtpAXXixDCK5hPLjzUhlDcSRQjFWUsqsAGAIBBFfEdMVbqBirRVG
pUA0NRXxHfFUg8/Wlzd+Ur+3toXuJn9IrDGpZmCzIxoo67DLcBAmCXE18DLDIR3LCfJ9nPJ5t0+4
h0ye3htWuEuZngMaKxhZeLNTrU9M2OszQlCg852Lo82PNcwa3erZqXrmE/nRpuoan+W2rWWn2st7
dyNaGO2gQySOEvIXbioqTRVJyjUxJxkDm7bsPNDFrMc5mog7/IvJ/wAgfLmu2vno6hcaVc2tilpd
2z3MsLRx+sk0aNHyIpyV42UjsQcwtDinGR4nqva3tDT5sMY4iLBv4EbPo7No+fsf87280+kwCK3e
69O7gkkhjQyMUVqt8I65pe38GTLpZRxgmR7m3CQJWUr8oqs2uG7t7KW2thayxNK8XpKz+snwg9yO
DZz/ALJaDPhyTlkBox/S36mYIFM0zunDYP8Am5p19f6Fp6WdnLetFqCSywwxmVgggmXkVFduTDMD
tHHKeOoje3WdrYp5MNRFm0i/KDT7yPWL2+axmtrKe0jWGaSMxpIfUJ+E9G2zG7KwzhfEObh9i4Mk
OIyHN6rm4d+w78zLG8u7CwFtaS3np3BaSOGMyEAxMKkD3OKoD8q7S4jk1K6a1kt7a6itDbyOhRZA
DM3JD0YUddxir0DFWN+cLaeZ7J44XlWP1S5ROYWoXrTp0xQXeTreeJrxngeGOQRGMuhQMAGrxqB4
4qGSYpeSfnPZX76rZ3kVpcTWlvZyG4uIoZJI4wr8iXZFYLRRXfN12TljEEE1ZbcRATD8mdN1OzOs
te2VxZiU2wi+swyQFuIl5cRIq1pUZX2rljMx4SCjIQXpealreR/mg9rpnny017VtFudS0ODRpoZb
mG0+tRQym5SSshI4p8Cnc4oKc/k1ZzwWnmi4bSrjR7a/1x7mxtLq3Nq5h+oWcXMRECimSJx9GKXo
eKvL/wA7PJvnLzJHpi+WpTC1uZPrJEzQVD0C/Z64UM38mafqGneU9JsNSblf2trFFdNyL1kRQG+I
9d++BKc4q+Zvz80PVT+ZM+qNod3fabPY6daQXkNs00X1hriaNYudKB3eaNVXqSQMVeufkVpmoaZ+
WGl2eoWU2n3Kz6hIbO4jMUqJLqNxLHyjahWsbqR7Yqz3FWPeZtK1W8nheyfiiKQ/xldydumKp7bo
yW8av9pVAb5gYqqYql+j6fNZC99Vlb6zdy3CcSTRJCKA1A32yUpW1YoGN31JKYZFtdiqVeWtKuNL
06a2uGRpJL7ULtTGSRwvL6a5jBqF+IJMA3v49cjEUG7PkE5Aj+bEfKIH6E1yTS7FUFo9lLZWIt5S
rOJJnqtSKSzPIOoHZt8o0+MwhR7z9pJTI2Ubl6HYql3l3Tp9N0KxsJ2VpraFY5GQkqSooaEhTT6M
hjjwxAa8MDGAB6Jjk2x2KoHQrGXT9E0+wmKtNaW0MEjJUqWjjCEqSAaVHhiqOxVbMheJ0HVlIFem
4xVqBCkMaGlVUA03Gwpiq/FUv8x6dPqfl7VNOgZVnvbSe3iZyQgeWJkUsQGNKtvQZPFLhkCehSEw
yCHYqkvnbRLvXfKWraPaPGlzf20kELykiMM4oCxUMafIYqnWKuxVphUU9wfuNcVbxV2KpL5v0S61
nSYLO1eNJYtS0u9YykhfTsNRt7yUDiG+IxwMF/yqVIG+Kp1irsVaYVH0j8DireKuxV2KuxV2KuxV
2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kv/9k=</xmpGImg:image> + </rdf:li> + </rdf:Alt> + </xmp:Thumbnails> + <pdf:Producer>Adobe PDF library 15.00</pdf:Producer> + <xmpTPg:NPages>1</xmpTPg:NPages> + <xmpTPg:HasVisibleTransparency>False</xmpTPg:HasVisibleTransparency> + <xmpTPg:HasVisibleOverprint>False</xmpTPg:HasVisibleOverprint> + <xmpTPg:MaxPageSize rdf:parseType="Resource"> + <stDim:w>133.643749</stDim:w> + <stDim:h>133.643749</stDim:h> + <stDim:unit>Pixels</stDim:unit> + </xmpTPg:MaxPageSize> + <xmpTPg:PlateNames> + <rdf:Seq> + <rdf:li>Cyan</rdf:li> + <rdf:li>Magenta</rdf:li> + <rdf:li>Yellow</rdf:li> + <rdf:li>Black</rdf:li> + </rdf:Seq> + </xmpTPg:PlateNames> + <xmpTPg:SwatchGroups> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <xmpG:groupName>Default Swatch Group</xmpG:groupName> + <xmpG:groupType>0</xmpG:groupType> + </rdf:li> + </rdf:Seq> + </xmpTPg:SwatchGroups> + <illustrator:Type>Document</illustrator:Type> + </rdf:Description> + </rdf:RDF> +</x:xmpmeta> + + + + + + + + + + + + + + + + + + + + + +<?xpacket end="w"?> +endstream endobj 3 0 obj <</Count 44/Kids[18 0 R 19 0 R 20 0 R 21 0 R 22 0 R 23 0 R 24 0 R 25 0 R]/Type/Pages>> endobj 18 0 obj <</Count 5/Kids[5 0 R 6 0 R 7 0 R 8 0 R 9 0 R]/Parent 3 0 R/Type/Pages>> endobj 19 0 obj <</Count 5/Kids[10 0 R 11 0 R 12 0 R 13 0 R 26 0 R]/Parent 3 0 R/Type/Pages>> endobj 20 0 obj <</Count 5/Kids[27 0 R 28 0 R 29 0 R 30 0 R 31 0 R]/Parent 3 0 R/Type/Pages>> endobj 21 0 obj <</Count 5/Kids[32 0 R 33 0 R 34 0 R 35 0 R 36 0 R]/Parent 3 0 R/Type/Pages>> endobj 22 0 obj <</Count 5/Kids[37 0 R 38 0 R 39 0 R 40 0 R 41 0 R]/Parent 3 0 R/Type/Pages>> endobj 23 0 obj <</Count 5/Kids[42 0 R 43 0 R 44 0 R 45 0 R 46 0 R]/Parent 3 0 R/Type/Pages>> endobj 24 0 obj <</Count 5/Kids[47 0 R 48 0 R 49 0 R 50 0 R 51 0 R]/Parent 3 0 R/Type/Pages>> endobj 25 0 obj <</Count 9/Kids[52 0 R 53 0 R 54 0 R 55 0 R 56 0 R 57 0 R 58 0 R 59 0 R 60 0 R]/Parent 3 0 R/Type/Pages>> endobj 52 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 61 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 25 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 53 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 64 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 25 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 54 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 65 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 25 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 55 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 66 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 25 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 56 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 67 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 25 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 57 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 68 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 25 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 58 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 69 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 25 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 59 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 70 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 25 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 60 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 71 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 25 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 71 0 obj <</Filter/FlateDecode/Length 279>>stream +H‰l‘AN1E÷9…/0žØ±“xKA]Pé‚ (@*,¸>fZÚEÉŽâŸûg|ÜÐ8m2ÝÝo(eÖâ„hmŽîô}HãvŸéðƒ¢µÎU‚¤(·jäÎY¡zMoéaa\yræ5 ºŽàYå,$Z¹ä ®j4,¹¬$T± \‚F4¸t‡¨qkvÊ‹¸»wê8¨JCq¶¦tJìfGð3–PÜ—à®ôò™æÂÑR“Jé˜Ý©«§mª,.ôKFÝ uL""פáµèÚ(]:B$¥p…Åç<œ7㙾.®h4®'› šÍ9ó÷¾\Ñ€ÁÓªp”¶¨ +¼î¹±áäòk»ô'À�Yêgü +endstream endobj 14 0 obj <</Intent 72 0 R/Name(Layer 3)/Type/OCG/Usage 73 0 R>> endobj 16 0 obj <</Intent 74 0 R/Name(Layer 1)/Type/OCG/Usage 75 0 R>> endobj 15 0 obj <</Intent 76 0 R/Name(Layer 2)/Type/OCG/Usage 77 0 R>> endobj 76 0 obj [/View/Design] endobj 77 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 23.0)/Subtype/Artwork>>>> endobj 74 0 obj [/View/Design] endobj 75 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 23.0)/Subtype/Artwork>>>> endobj 72 0 obj [/View/Design] endobj 73 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 23.0)/Subtype/Artwork>>>> endobj 63 0 obj <</AIS false/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 1.0/op false>> endobj 62 0 obj <</LastModified(D:20190524130153+02'00')/Private 78 0 R>> endobj 78 0 obj <</AIMetaData 79 0 R/AIPrivateData1 80 0 R/AIPrivateData2 81 0 R/AIPrivateData3 82 0 R/AIPrivateData4 83 0 R/AIPrivateData5 84 0 R/AIPrivateData6 85 0 R/AIPrivateData7 86 0 R/ContainerVersion 11/CreatorVersion 23/NumBlock 7/RoundtripStreamType 1/RoundtripVersion 17>> endobj 79 0 obj <</Length 1321>>stream +%!PS-Adobe-3.0 +%%Creator: Adobe Illustrator(R) 17.0 +%%AI8_CreatorVersion: 23.0.3 +%%For: (Dirk Nordt) () +%%Title: (valve_hand-solenoid-analog_v04.ai) +%%CreationDate: 5/24/2019 1:01 PM +%%Canvassize: 16383 +%%BoundingBox: -796 -241 925 370 +%%HiResBoundingBox: -796 -240.074994504119 924.081239508276 369.500000009001 +%%DocumentProcessColors: Cyan Magenta Yellow Black +%%DocumentFiles:Z:\Collaboration Area\ICS Division\ICS communication design\helper\golde_shower.png +%AI5_FileFormat 13.0 +%AI12_BuildNumber: 585 +%AI3_ColorUsage: Color +%AI7_ImageSettings: 0 +%%RGBProcessColor: 0 0 0 ([Registration]) +%AI3_Cropmarks: 790.43748623781 -240.074994495117 924.081234861591 -106.431245871338 +%AI3_TemplateBox: 64.5 64 64.5 64 +%AI3_TileBox: 461.2593605497 -479.253120183228 1253.2593605497 132.746879816773 +%AI3_DocumentPreview: None +%AI5_ArtSize: 14400 14400 +%AI5_RulerUnits: 6 +%AI9_ColorModel: 1 +%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 +%AI5_TargetResolution: 800 +%AI5_NumLayers: 3 +%AI9_OpenToView: -940 876.5 1 2363 1284 18 0 0 46 121 0 0 0 1 1 1 1 1 0 1 +%AI5_OpenViewLayers: 676 +%%PageOrigin:-1215 -736.5 +%AI7_GridSettings: 100 10 100 10 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 +%AI9_Flatten: 1 +%AI12_CMSettings: 00.MS +%%EndComments + +endstream endobj 80 0 obj <</Length 8479>>stream +%%BoundingBox: -796 -241 925 370 +%%HiResBoundingBox: -796 -240.074994504119 924.081239508276 369.500000009001 +%AI7_Thumbnail: 128 48 8 +%%BeginData: 8301 Hex Bytes +%0000330000660000990000CC0033000033330033660033990033CC0033FF +%0066000066330066660066990066CC0066FF009900009933009966009999 +%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 +%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 +%3333663333993333CC3333FF3366003366333366663366993366CC3366FF +%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 +%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 +%6600666600996600CC6600FF6633006633336633666633996633CC6633FF +%6666006666336666666666996666CC6666FF669900669933669966669999 +%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 +%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF +%9933009933339933669933999933CC9933FF996600996633996666996699 +%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 +%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF +%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 +%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 +%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF +%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC +%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 +%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 +%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 +%000011111111220000002200000022222222440000004400000044444444 +%550000005500000055555555770000007700000077777777880000008800 +%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB +%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF +%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF +%524C45FDFCFFFD9AFFCAFD0BFFAEFD0BFFAEFD51FFAFAFFD07FFA8FFFFCA +%FD07FFCAA8FFCFCFFD07FFCFCFFFAEAEFD07FFAEAEFFA8FD08FFA8FD0EFF +%A8FD07FFA9FFFFFF7DFD07FF7DFD0EFFA8A8FD07FF7DFD0CFF353684FFFF +%FFA8843560FFFF6893A1FFFFFFA8A1689AFFCF7AA5A7FFFFFFA8A67AA7FF +%A8105EA8FFFFFFA85E33AEFFA852A8A8FFFFFFA87D52FFFFA87DFD05FFA8 +%A8A8FFA97853A8FD04FF7E547EFFA85252A8FFFFFFA852277DFFA8A8A8FD +%05FFA8A8FFFF522752A8FFFFFF7D2727A8FFA8FD07FFA8FF843D3D5A8484 +%603C4384FFFFB5FC8C93A19A938CFCA1FFA8CCFEA4A6A7A6A5C6FEA7FF83 +%3939395E835E39395EA8FFFD057DA8FD047DFFFFFD05A8FFA8A87DFFFFFF +%7879547E7EA278784EA9FFA87DAE527D527D52A87DA8FFFF52527DFFFFFF +%7D2752FFFF7D2752277D5252275227FFFFFF7DA8A8FFFFFFA8A8A859673D +%3C2F3536433C84FFFF8CFCFC8C44688CFC8CA1FFCFA4FEC6A4507AA4FEA4 +%CAFFA8103F16332D33163F33AEFFA87DA87D7D52FD047DFFFFA87DA87DA8 +%7DA883A8A8FFA97854784D534D7878787EFFA87DFFA827F8F8A8FF7D7DFF +%FF52F827A8FF7D27F87DFFFF52275227F8F8F8525227A8FFA8A87DA8FFFF +%A8A87DFF603C6084FFFFA8363D60FFFF938C9AA1FFCAA18CFC9BFFA8A5A4 +%A6A8FFCFA6A4C6A7FF83393983A8FFA85E3339AEFFA87D7DA8FFFFA87D7D +%7DFFFFA8A8A8FD04FFA87DFFFFFF547878A9FFFF7E784EA9FFA8527D52A8 +%FFFF527D52A8FFFF527DFD04FFA87D7DFFFF7DF82752FFFFA8272727FFFF +%FFA8FD06FFA8A85984CAFD05FF5984FFFF6FA1FD05FFCA6FA1FFCF7BCFFD +%05FFA87BCFFFA833AEFD05FFA833AEFFA87DFD06FFA87DFFFFFFA8FD06FF +%A8A8FFFF7E7EFD05FFA87E7EFFA8527DFD05FF7D527DFD0DFF5252A8FD05 +%FF7D52A8FDFCFFFD13FFA87DFD09FFA8A87DFD09FFA8A8A8FD09FFA8A8A8 +%FD09FFA8A8A8FD09FF7DA8FD0AFF7DA8FD0AFF7DA8FD15FFA87DFD12FFA8 +%52525227A8FD06FF7DFD0452FD07FF7DFD0452FD07FFFD04527DFD07FF27 +%5252527DFD06FFA827585252A8FD06FFA8277D5252A8FD06FF7D277D5252 +%FD07FFA8525252FD07FFA852527D277DFD07FFA852527DFD05FF52A8FFFF +%A852FD05FFA852A8FFFF7D52FD05FFA852AFFFFF7D7DFD05FF7D7DFFFFFF +%527DFD05FF527DFFFFA852A8FD05FF52A8FFFFA852FD06FF2DAEFFFF7D52 +%FD05FFA852FFFFFF527DFD06FFFD042752FD06FF7D7DFFFFFF52FD06FFA8 +%272705277DFFFFFFA8277D527D7D27A8FD04FF7D277D527D5227A8FD04FF +%52277D527D5252FD05FF52527D527D2752FD04FFA827527D527D277DFD04 +%FF7D277D7D527D27A8FD04FF7D527D7D527D27FD05FF52527D7D525227FD +%05FF7D522E522752A8FD05FF277D527D58527DFD05FFFD0452277DFD04FF +%A8A87D52A8A8FD06FFA8A8527DA8A8FFCBFFFFFFA9A8A8527DA8A8FD05FF +%CBA87D52A8A8CBFD05FFA8A87D52A8A8FD06FFA8A8527DA8A8FD06FFA8A8 +%527DA8CFFD04FFA8FFA8A852A8A8FD13FFA87D52A8A8FFA8FD0CFF5984AF +%FF7DA8FFFF5984FFFF6FA1FFFF7DFFFFCA6FA1FFCF7AC9FFFF7DFFFFCA7A +%CFFFA833AEFFFF7DFFFF8333AEFFA87DFFFFFF7DFFFFA87DFFFFA8A8FFFF +%A87DFFFFA8A8FFFF787EFFFF7DA8FFA9787EFFA8277DFFFF7DFFFF7D277D +%FFFFA8FD07FFA8FFFF5227A8FFFF7DFFFF5227A8FD0BFF603C6084847D85 +%3C3D60FFFF938C93A17DA19A8CFC9AFFA8A5A4A5A77DA7A6A4C6A7FF8339 +%335E837D835E3939A8FFA87D7DA8A87DA87D7D7DFFFFA8A8A8FF7DA8A8A8 +%7DA8FFFF787853A97DA87E784EA8FFA87D8352A8527D527D7DA8FFFF5253 +%A8FFFFFFA8527DFFFF7D272752A8527D275227FFFFFFA8FD05FFA8A8FF5A +%433D3C0C3514673C84FFFF8CFCFC8C44688CFC8CA1FFCFA4FEA4A4507AA4 +%FEA4A7FFA8333F16330A33163F33AEFFA87D7D5252527D7DA87DFFFFA883 +%A87DA87DA87DA8A8FFA87878784D4D4D5478787EFF7D7DFFA827F8F8A8FF +%7D7DFFA852F8277DFF7D27F87DFFFF52525227F8F8F8525252A8FFA8A87D +%A8FFFFA87D7DFF603D6060AF84843C3D60FFFF93FC939ACAA19A8CFC9AFF +%CAC7A4A5A7CFA7A5A4FEA7FFA839395E83AE835E3939A8FFA87D7DA8A8A8 +%FD047DFFFFA8A8A8FFA8FFA8A883FFFFFF787854A3A8A9787854A9FFA87D +%A8527D7D7D52A87DA8FFFF52527EFFFFFF7D527DFFFF7D272727A87D7D27 +%5227FFFFFFA8A8FD04FFA8A8FF596084FD04FFA93560FFFF689AA8FFFFFF +%AFA1689BFFCF7AA6A8FFFFFFA8A77AA7FFAE3383A8FFFFFFA88333AEFFA8 +%52A8FD04FFA87D7DFFFFAFA8FD05FFA8A8A8FFA97878A9FD04FF7E787EFF +%A82752A8FD04FF52277DFFA8A8FD06FFA8A8FFFF52277DFD04FFA82727A8 +%FFA8FD07FFA8FFAFFD08FFA8FFFFCAFD08FFCAFFCFCFFD08FFCFFFA8FD08 +%FFAEFFFFA8FD17FFA8FD07FFA9FFFFFFA8FD07FFA8FD0EFFA8A8FD07FFA8 +%FDFCFFFD12FFA8FFA8FFA8FD07FFA8FFA8FFA8FD07FFA8FFA8FFA8FD07FF +%A8FFA8FFA8FD07FFA8FFA8FFA8FD07FFA8FFA8FFA8FD07FFA8FFA8FFA8FD +%07FFA8FFA8FD13FFA8FFA8FFA8FD11FF7D7D52527D7DFD05FFA87D7D5252 +%7D7DFD05FFA87D7D52527DA8FD05FFA87D5252527DA8FD05FF7D7D52527D +%7DFD06FF7D7D5252527DFD06FF527D527D52A8FD06FF527D527D52A8FD11 +%FFA8527D527D52FD10FFA8FF7D7DFD08FFA8FF52A8FD08FFA8FF52A8FD0A +%FF52FFA8FD08FFA852FFA8FD08FF7D7DFFA8FD08FF7DA8FFA8FD08FF7DA8 +%FFA8FD13FFA87DFD14FFA87DFD0AFF7DA8FD0AFF7DA8FD0AFF7DFD0AFFA8 +%7DFD0AFF7DA8FD0AFF7DFD0BFF7DFD17FF7DFD10FF5AA8FFFF7DA8FFFF84 +%84FFFF9AA8FFFF52A8FFFF9AA1FFCF7CCFFFFF52FFFFFFA0CFFFAE58FFFF +%FF52FFFFAE58AEFFA87DFFFFFF52FFFFA87DFFFFFFA8FFFFA87DFFFFFFA8 +%FFA97EA8FFFF7DA8FFA8A27EFFA852A8FFFF7DA8FFA8527DFFA8FD0BFF52 +%52FFFFA87DFFFF7D52FD0CFF603C60A8A87DAF5A3C60FFFF938C9ACA7DA8 +%C4938C9AFFA8A4A4A6CF7DA8A7A4A4A7FF83393383A87DFF833339A8FF7D +%7D7DA8A87DFFA87D7DFFFFA8A8A8FF7DA8FFA87DFFFFFF53787EFF7DFFA8 +%784DA9FFA8527D52FF7DFF7D5252A8FFFF53A8FD05FF7D7DFFFF7DF8527D +%A87DFF522727FFFFFFA8FD06FFA8A85A673C3C2E35363D3C84FFFF8CFC8C +%8C446F8CFC8CA1FFCFA4FEA4A4509FA4FEA4CAFFA8103F10332D33163933 +%AEFFA8FD047D52FD047DFFFFA87DA87DA87DA87DA8A8FFA978547854534D +%7854787EFFA87DA8A827F8277DAE7D7DFFFF52F852A8FF7D52F87DFFFF52 +%272727F8F827525227A8FFA8A87DA8FFFFA8A87DFF853D3D36845A603C67 +%84FFFFB5FCFC939A9A93FCFCA1FFA8CCFEFEA5A7A5C6FECCA7FF83393939 +%58835E39395EA8FFA8FD047DA87D7D7DA8FFFFFD05A8AEA8A884FFFFFF78 +%7954787E7E787954A9FFA87DFF7D5252527DAF7DA8FFFF522752FFFFFF52 +%2752FFFF7D275227525252275227FFFFFF7DA8A8FFFFFFA8A8A8353C5AFF +%FFFFA8841384FFFF68939BFFFFFFA89A68A1FFCF7AA5A7FFFFFFA7A57ACE +%FFA8105EA8FFFFFF833910AEFFA852A8A8FFFFFF7D7D52FFFFA87DFD05FF +%A8A8A8FFFF544DA8FD04FF784E7EFFA852527DFFFFFFA852527DFFA87DA8 +%FD05FF7DA8FFFF52F827A8FFFFA87D2727A8FFFFA8A8FD05FFA8FF84A8FD +%06FFAF84FFFFA1A8FD06FFA2A1FFCFA7CFFD06FFA7A8FFA8A8FD07FF83A8 +%FFA8A8FD06FFA8A8FD0EFFA2FD07FFA8A9FFFF7DFD07FF7DA8FD0DFFA87D +%FD07FF7DFD22FFCAFD0BFFCFFDE0FF60356059FD07FFA89493939AFD07FF +%A8A59FA5A7FD07FF83393358A8FD07FFFD047DA8FD07FF7DA87DA8FD07FF +%A953785478FD07FFA82752277DFD08FFA8A8A8FD08FF7D275227FD09FFA8 +%FD08FF35673D60FD08FF8CFC8C9AFD07FFCFA4FEA4A7FD07FF83103F33AE +%FD07FFA87DA87DFD08FFFD04A8FD07FFA878787978FD07FF7D59A87D52FD +%08FF52057DFD08FF52275227A8FD08FFA87DFD06FFCA603D6735FD07FFA8 +%8DFCFC76FD07FFA7A4FEC6A6FD07FF5839393983FD07FFFD047DA8FD07FF +%7DA883A8FD07FFA954795478FD07FF7D52FF7D7DFD08FF270552FD08FF52 +%275227FD09FF7DA8A8FD06FF59603660FD08FF69938C9BFD07FFCF7AA59E +%CEFD07FF83105E33AEFD07FFA87D7D7DFD08FFFD04A8FD07FFA878547878 +%FD07FF7D5252527DFD08FFA87DA8FD08FF52272727FD0AFFA8FD08FF8484 +%A9FD09FF76CACAFD08FFCF7CCFFD08FFAEA858FD0AFFA87DFD0BFFA8FD09 +%FFA87E7EFD09FFA8527DFD15FF7D52A8FD13FFAFA8FD0AFFA1CAFD0AFFA7 +%FD0BFF83FD0BFFA8FD16FFA2FD0BFF7DFD17FF7DFD14FF84A8FD0AFF9ACA +%FD0AFFA6CFFD0AFF58FD0BFF7DFD0BFFA8FD0AFFA2A8FD0AFF7DA8FD09FF +%A8FD0BFFA87DFD0AFFA8FD0AFFAFFD45FFCBFD0BFFA8FD17FFA8FDFCFFFD +%93FFFF +%%EndData + +endstream endobj 81 0 obj <</Length 65536>>stream +%AI12_CompressedDataxœì½i{â8³?ü¼žëÊw€¬xƬìd!²/Ä€H&6ÌLŸÿÏþ”dïÆ,=w÷sŸ“NlY%U•~ª*©¤`µÍ´Å¦¥cD`åœ$ðCQÚ àÇ“^o$%ô(t\Œ@¥2'ɆZòFä®Øß PPEŒFo‹èûP¾+}.D©=Baô¼Þöxó'ßûShtø~;*‹=¡/vÛQ¾Ï÷Ä÷ÆŸã»áqK æ<?„qŠ‰S™ +»¨žã"|ÿO^–»ÿH–NbêYqÔowûïYñïÝ@”K±(Å•Ðnýq÷J‹1‚cR)&A0$JQLŒH’JIŠc4›Š%å¿A¨¶¼Ø} ýaU[‚,çÄž(ɻܾ8çßá ¸z=ñ¯@¶Ç·>ßÅþÊcº½^wô-wß;Cc‰AhíÉåŠÝž ï>ì>ýß%Ì»@˜øt’«òÝ?»HNø–øõ5êw[J™¶ wßûO¡7¤§w±×rGüKbƒþ;Éœ$¨~ë?4V‚Ì I5²£n¯}1új + òD2ŸÓ Ì„kzŒ@¿ãç\ãäÕ„áýÁÒ¸*e¬ƒ§ø¡Ç+ὋuùÖj–ÄÁ/}Â×\Šˆ14Ç$YŠæ’¤Q~L*A’œ.?(C&RP„$Xø†¤˜D’#i:©ÖZ¾=Ð3¬,KÀí_0�¿fX2F%R4K$˜ˆ2\ +þ†: 2IST2@Â_Æ$MÅ8†Mr©$ÉrV¨ëðgWøkÆJ_P¹‘†5E«† ”Ÿê««QO®û]¤,~–RØ}.¶…|¡WQìñ˜Ëø¤þS-Qç¥waCAì†x'ÇT@¤eþ‡€™V‰TB¿.Þà¦FSHr,0ˆ„ÏÒÐé$ “˜ÃŸ䘮ö?bÜ6TªH#Ár¨'UPŽŠÔ}ïöw£PA†% $TÝ)Iݶ®:$b1þ‘Š%• #—"RTÊï“þ I’åç‰Êàïp(ô5žÃpÈ”›ˆ×P· +ývˆZÆøjݸSßêàwPÅh°òÇãÊt*þ=‡0>ûï=!bãïÿ§€˜/Œ$T‹0”hò²Uèö•§í¦òЧ;»@>ÞæßßIýÞÇ[] ôð'ü‡á?ìˆ#€9^kñ’Ø¿ÃøÆu÷„·a¼R�UL(u£Pþ]Bh4&‰‹j(¯š#x:Œý6/wâÂþ°¬-Äa€·4¢¡2ÙBTùXâmf�ú�Œâø}»+HÐc9—|ØÁ2ñÖH’„~ëüÁÆ›’ø)ô›<ÀÉ&ãZùxKüPë”ÚoÂW·ßíÃçþöúâ0Þù1èý¸„Ñ>lÇ¿øj°„ÀŒ_Žäøð/QÓº¢v$AÿÅ·FC!þ5‚AÇñ³väkk m�qj‚ñ>þôÅËQ·(™D/¿G¼ß _;|ïM¡¡>” ÁñÖ¨*£P̤™Qø›÷>ƒ:Ïâ9µ ñþ<^ÀC-Ãç…ñw'J©…ĉ¡ÌɸLa؉_`‚PMEù ¢|P1|PQÚT÷5ê »ƒÞxEî!¸Ö:t||møøzüÕ½ò²Þ%Ðf¥>¨šç¼ÖÞð5¯æÇ•ð˜¼oiì”Ï¥vAÿªÆßu•R]¥T×@¢;.#�;ú +AQ).jm ˆj‘ñwm˜¥Ñ…#åÓ‘BidjÏhüÍåõ3ã‡öxåzAAÛÄi£.ÃLc˜`èšB¿%"h7аXvKã1n-·~£ }ýaS�\ÓêWlÉú6½aê hNd0ÄÃêb€ß%ÕÞ^–$q48鿉+„KôFhµ “b;Pi~À`Ubs"P—@Îýwø{\lÈAxB…yá 와ò>Vžú +=q èÏ•r~j¬öÀŠ•øŸÂr�»ÊC?õ*QAaxç«Nêè®—±ÔïQÀðÊ)˜Î$C¿ñŸÚ¿~¾/#è²4?ÀúK”>‘Àtw"&ü-Lª±ö)[kêÓ™kòØâ0Éc.*êGRSžùéyŽ‡q�ƒuÐé¶Yi$wuQìkwx?¦d|‡_¡/ýýøjŠ½®ü5&c|Röt[=¡ö&1Ú‹Œ©_é+ü±÷B-`í�šÊ7SµþŸ¥6þʉ¼ü¨€e†8ãDÃüjLG}üRÑ„Æ^€ó,Sû‹0(w›*bó[·ß†v×FÝ¡ Mñk€BZ‡xäh%kz• 4Ÿg¬hÔÇ\¦˜ú¸-Êœ5î¸Â»s˜/À| T$ žô2à 6qø9X´¿Ž‡1µAÈÙ05ç'tÍ ¡€[Ñ;ð)ü„âÕþ·øö§”wÈÍþ�Ϫ³¾øWÿØE}é‹}ð6¸p ~Á ddã©t\&®©N±ÛCã}–ëÀLPŠ(øqµTCâ7]¹Ûì)•:TRòÏ©*Éòr·e¨A¨Cä*oo²�æéU…m ÄN£ÀÆ©FÅ´)¼½ac,Ž£{¨…©ô*’Z50ßm¡/ýìGÅá•Ð—Œ9¥%YЀZ½RûI_S8¬´Mý==ÊwåAÿ¡ü‰ËÄ•oUá@O¯Vþ b“â(’aá_&Å&À“g¹™b(ŽL°“dðÞ±•H¦,Š¤ðr92E$Hš%µ@Æ]jŒÿúþ:…ß>lŒLd’¤(PÜ$ø+ÀÎÏD ½%¯Páß6âƒðجü¡õ·w`/€™Øƒ—q4{; +6'öÛ�_þÔ»*$£©”ÌS†„&ÃkY(ü)ô+í¶"DF—JI…¤¸›`Hš#i&¤B°ðkŠMQ,Á$pÄ…$’d"‘b �M,àøKqL‚H% :E‘,z’¤è•bH’cŽÄeŒÿq;ÞMj$ȉ$,‚BE-‚wÀ]LÞŒÆväâ8Çõé,õÝ7CŸô*<;…B-T^â*ÜÐ2™øÏ ¥©°•ðo€KSÄv w‹‚;Ž )Ž&\ŠæX +¸G¡? šàRèI"É0ÕÇ‘\MB›âh@È|Hs4<1BËPè—1¢z¨³WŠ%¸$C“Ìþþ9ø£ú?ÿJcFÉpl*ÉC ³„JRI cŒDü$I§`Œ1E±Œ²ìÄÚÌ’ÉOÜÑ5cR`¢rl‚K&I úW€FšÌ€¡J'èÀ›¤H:°Ä[¼¥Àmc©ü—J!F1I3€¡$“L&‰FN˜¾h6 ’…™ŒM±XŽ2iNƒP¼Xˆ¤•`ÓÄeLç_©__™%¾.ñu‰¯K|]âëÏÀWzi¿þÖøºvþŠh¹vþ;½}zi.Ñr‰–K´\¢¥´üï, -Ñr‰–K´\¢å<hÉ.Ñr‰–K´\¢å-} år“æ-—h¹DË%ZúAËä-—h¹DË%Z.ÑÒZ¦–h¹DË%Z.Ñr‰–“Ñ’!–h¹DË%Z.Ñr‰–>Ðr¹Ê³DË%Z.Ñr‰–“Ñ’þíNÿW&—ǸTŠ`S$Ë’IšáÐ0¤)š†‘È0äÁ%ZF)Ã%R(# ^�I‚J€â¼ œZbM#1¦Eà ÅéԦ̒%¼.^ˆ±( +gê¤0t‚Xi–ƒùŒ`‰‡Ñ*"ÀG¨e„D›² +i‰¦ÿš2ÿ4ýWÚžË\Êœ.s)¯¿D.%¸ÿ|ýWZ«ê Y…´`¸ãŠM°Œh†A“ ÁÏp)ŽR¦-Š`X +}D³«X˜œÍŸüä¿w¿†9™úïlÁüWÂÝ2–ùKÂ%KPI$¨H¢À™L0€tlÌ~FyBL&)–ci2ω#Á @~Ažá ŠÑ2»Þד%|þƒðùßÙ“ùï„O†ÆÃFE&•Ð&C°¤‘ëbÄ”’H k‡À}Ãc×â¡ÁÖt¤#€šÜº%¸. +\‰Íq—$©¸Õ)UáÀ£æ’l’N(ÏlBJÏؤ9].ýÏÀó¿³Eóß žI*A$Áq‰Ë"È£àwt\nÆ[Š¢Uð¤YÆ& J ‹¬DĶqi-³DÏ…™¦èE€º$K¦èdBC„eB&íg[f´%VþSXÉÿ šÿN¬LÐèZQðÁš&YqhKM$6&hŠÁO(<÷$ËTRÊ~ð9ð•æð–Æ°À£¸ò“Ÿ,±sQØù.Þ-ÑõŸCWr‰®¿5ºR š"’à¥SÅ‘4^üAOÁOd’(Æ™J&œýv¸K$±Kèw} ŸSÁ'rÀS$M#ÌL@XV5=íŽ:‘0nC¢—ŽúÿÙÿΚø¿mÏÑd‰T¤ +6ü'æ—Ø}ðÿåè%Ò,‘f‰4ÿ;¤ùï¬Ü.‘f‰4K¤ùß!Íg™s‰4K¤YôžÄ%RýcHÅýw—HµDª%Rý¾HõßY°["Õ©–Hõû"Õ2_‰Tÿ%¤ZÆ™þWH³¼×r‰4K¤Y"ÍÏGšåK¤Y"Íi~>Ò,÷-‘æ¿„4Ë8ÏïŠTËýDK¤Z"Õ©~}¤ZîGZ"Õ©–HõË#Ur¹Ê¿DªÿR±©A©T‚f†P6rp‹ ’ 2Érð?…1ãy©4>;6 CáLM/ãVÿ(rQKäZ"×¹–ÈõÛ!×r¿Ò¹–ȵD®ß¹–§”ü®Èµ¼é_„§Ë›‘þ¥øºÜ‹±Ä×%¾.ñu‰¯?_—;H–øºÄ×%¾.ñõgàk‚ZâëËÈæLHFR\‚M0$º‘“Á×,üšbSK ëð IŽ4nù@¸e›Ì°…oYžÇü¿C²å¾%’ý§Œ#hŠ£ÑÕR4Øf·X€4 +ýIЗ¢ðÙþ·$Aq`sc+aSºŽ8Ò¾aÓ€b.CÙo92ÝFÅ,‘íD6z¹oæwE¶)._'aŒL€E¤`ø9©ÚÒ']ÀŒ±ßÀcÚöRë~ z:ð,0 ¸ +p5ôlÏ#<çG½áó, ú¯wì'éÞÏÌIªQè·3Ò÷CÆèQãBìWY†�.Ѩú<+�Vùž0 +Jg«ÍE÷.ôxT0 +ƒš<‡17ïþIÁübåjþ?«·yÜ2½±Æn¬üq1PûŒßi½.C¥&!Û£™ÌGr$¡¼¬ýøjŠ=TÕÿ§=‡Ê¬OÝ(¨Î‹Ñ—Ðæù!h×F#®=@:ˆþ4ŒuÇcˆûâåO<\ Ïø^WVŸq0…@µ¡ö SŸÑl ~%ðPpÀ«È¸ÑÏ\ò@ªÏõÛ–Ø“ÔG{Pæ$ ÅÀ/PuÿOP_±‰P¿€Ž�1š"/µð¹(ø%A#– *é^” +4{#ÁÚ+`5hk|êÊb +P@K›:]KöÅÖ§8Þ%q4ðÛŠwIúöŠS?�ˆ–»_£Vc¿0tk"q[”¡Œ›¾<à%¡ßúí붡c ®õùm ±Ç–ÌIâ # ¼b4ªoãIâÝ´|2À%“ª¢UEèy t5ê REêÂЋ©¨†Ð9/iúú“ïý)4@ÐB_ì¶Ùòu ûºßm‰mA3 ’ëýWôºš¹RE¹ ÙT,ahʕЫ‹WJ+”fUE¹‹z€_“Ú·,KÅèK²oD¦àËÄ’ãé¿NʪF'rFe~MèÙ9–¶C Ò=ÝS…`c<“L¡rð/KÑ\rñB(\]U®¦–KsfNÎ*’AÇ8’J€/ +#ˆNþ"a™dŒJâÉ•áìâEr›¹º8¹(M-†Kšy9«Ph&#Ø$—�7?É&¸ß@(I‚¥h’bÐÍ4³x¡TΦ–Mf6Î*2ÉÆÀB#ˆD‚`’ûÈìÍXÆHŠaÐ¥½‹—ÇE¥ÞÈU.êW•r!?µhH–4stVÑP\ŒK˜c“I’H%~}É@c™E~Ñ$™Lý„i½R,N-ÊÄE‚žU$×d˜É1›ü FJ’JR†&§/“‹›Lùdê1B&fVÎ( +,˜4ø™ìo0™$†44™û àU¸®_eÊÓŠ„&3+g øþ1°9™L¥Šù Œ®$K†&'~šHM+†£ÍÌœQ(,X0h•$@2õ8'`Ù$ M¦/”\¹R›~vgiÒÌÉ% £»^äo ÀjS‹’@¦$\Š05lF‰¤Àv!ÀP ¡"2‘ú D‚#'I‚aL^üDÂ÷ùžø>{…"‰9çNá8°,5ÿ“!¹_OÖpÊO”Ì‚+“-ÆòëËÉcù‰rZX´e’²^~}IY/?QR‹Á,@H¶h̯/$k4æ' +iÁq™ÈË¢ùåÅeÑüÌ1µˆ`ÍüB²Åm~}!Yã6?QH‹ŠàÌ/'[0ç×—“5˜ó3±oAaùåd‹ðüúr²Fx~¾œë™_R¶°Ï¯/)kØç'JjA ùÅdýúR²Æ‚~º”æ +Í/&[€è——“ ¢ÀE7ú»M‡ïϱÅ&AÍÊ7÷ðP4 ÆýØU¤¹)€ÿ³øÐÏÌ‚¢C“-:ôˆÉúYbZXph‚²‡~AÙ¢C?KP‹ˆ -@F¶ØÐo #[pègÉhÁ¡¡ˆËúõ¥e ý´µˆÈÐü2²E†~ÙBC?KF‹ +Í/&[`è7“-2ôÓ€oAq¡ùÅd‹ýb²†~²˜š_P¶°Ðo ([\èg *· ÐüB²…~Ù¢B?UFó‡„æ’-$ôëKI‰ Ñ`ð}§EîãBq¡@Kü˜)8%,LÎ`zÛ£C0Ïň±ò+†êlÑ¡Ÿ)"!šMF¶0Ñ"fýú³Å‰~¦ÀÔXÑl"³Œ!2{Äè×™-bô3EV9›MZ¶ÐÑ"¤eýúҲŎ~¦´Lñ£Ùg"-Bp¶(Ò//7{駎²bq6iÙÂI–=žôëKËOú™ÒRcJ3IÌXZ€Àì‘¥__`¶ÈÒO…E%l1“Àl!¦Ìcúõf‹1ýkü5“ÈlÁ¦ˆÌmúõEf‹6ýL‘);\f’—-î´�yÙO¿¾¸l§Ÿ/®˜5µ�yÙcPóŒ\¨ÀÐ9Pj|ú6~w^¾�ιœ_ýýÕëC(?æ6GCA;©Êt Ð?RÍ‚¨Êµ:Ý^[Ÿ ¤Ü¤½F?†?+C›}¹ñ'/É{†ó eAKÇçEá²KÁ¾Q>ZÉ«š]|Êé‡SÀÒš ê¬v‹/R‰gïl_ì»5ÝÔÑžØúD£×G'µ¢‹TŠùAz3Ÿ¬»|³'ø~¤û?þô °û§X@e %Gýlä¡øõÀßOUÑ]™GgŒ¢³hükê?1njè8å_«=ÿ®¡,¿ýõè÷o€är¯Ûú÷ÀøØÚvíoSö•…·¡æ´ø½ý£_Ì£4ÚÀ,¸;lŠHPš—äÚû¾º»`·böþ¥©ü?¤lŠdé‰ýûÛßPþEú—$P÷èXŠdн4“º×ºï_3Ǹè/ÑQ:Á¢2$G‘A&“;úW·=ìøê§Zò—1;0žÖÄ‘Ô²èV†_Ãî€éð—hÇ—0äÛ`- 1©¹³¦SíKÑ¥µ°Í‰r 3IÆ爃!5Ê|ÿ}Ä¿ª8Ÿ{=ž›ðUIéO!Pþ +íîov{Ý¡†½� +IzLB«?Ç÷ÿäåš~ö4a¨” ¼õ@ï…¾ øþ°à{]^v(H +Š£a¯Û2¾‹Âoé!4ZX6À<ÒjBï˜BÊb‹ï!_6…®\JCÇé$o*k|_Gf+"=æ.i‹MVIøøì’Ôm7jÐ�Á">k™ë~W«2‘$b„òE&ã¤å‹+´…¿‡ºjøüÙ¦ïPä’qiW±'ŠRÉpN8Mq,çU8««úIJWúñ„[sqÁÊ€oéJJ±éÖ`Ô;c{ÉT’ô(kh.:/Ý£¤ŸÆb[ÍÔÖ ýR¯¸QtÉUd9¡×ˬk%i×ZQIÃ8¥Ü›z,JÝÿûÇÆ ›ré~ÝàæPtŒˆÑìúÌœG½ž†7ð-ŒKxëC°—Ìï»´È*áUÖ´pA³¸ïñVä[B¦ÿ>ÎîÅ‘&ØJ']›rÓþnæ»òï·Æ–™Bwüð’1•˜Œ4C~¼`…S•—�àäj¾ˆîo‚Òfôw,ŒJ´¤j‘’©Xá«)´«’øÖí g‚¡J{ÑÛN·Õ± ‘T2–ÀøeP¯ÚM©î$Ȋߌ®‰…MŠz<ÚÝÑWàJžÌæÙ¾òã4§Ç“ž:‡ãò®Zè~…sAîŒïÉÀ‚0\Ó'•Ñp0NúˆÔ?2±±6jB‹Šb(_¡OuVN«8H[«=¾Æ#r9 +¤UÅ¥¦¬ª.Œõ¸ìqy|ûÖF¤Æ“&LŸ3|gX8<é·…¿‹]Iw•¡Q±R‘ÞÂK²~úŒ±7á¯irõÛŽšÐûdq©4„I¡ÿ’)ŠöÝ13míH²Ü¸oØ:Ðäê«o7|¿+w`8i†_%Ó¹4¿–éuùT3ý7}‰&´aæEW@wÀü)`õsä +¬š‰n4b%<È£Bm¢hò=Г.†o«×Z" +(ÿ„wÀyÂ'ÍÂÿ¤ºhì‹:8à㫉àU¼ð÷@”†ÈÂÍÈ�,²Ž'GŽ’K2þµ)¤#›BšÐ~±À8šÆïîÇVxÜxš¥;¶+ÒŒ÷ãT s¨XùÁ%,%Žß(Êš$dtM”êTŸ¤®û$¤[™šÉ˱Ë!)çT)_™¤lv´ÐeLÈÃÊ K¿Éev3Lk˜ŒçT¦²8æefê$mNú¢®\n+(Ú„ øn(Tkž 2w•vê9iô†Q!O!+EüJYÐ[ÌæBîrVÊyšÑlï24OÛl’w}éº9q=�ÿ›±–ØëÙçDk)ù³;hÆf즑õí.)‰ï¿ÛcÖÒþ]0–tkˆ$€øduL²HØV%2ßëù,¦µ×°”¢ÆCŸŠÍ“þ›08ö³pØ!Ç„>жGOÿÄÄAKôhyKjÇäV«/[g5{¡A¯õãÐàý볿ý›T®–³G™·þ0&0x5 +•i÷Ò›¨AÇÆ÷¤Ø—Øükœ!,F.l•$«é<þ–’æéwyyØ‹ mÔÞž¡~¾Bê%HÆòÂ@E;ÐüÈK0MJÞµ’±ëèŠfÕ°–ê~˜cÊš‘Ýq°kßbú-Ø™¤; óºÒ-‡‚má a¥1€î4E2¨ëZã/}ÊâÛ[L2x|n£�‚Üì¿x/e—ÅNªÞP‡6È1d}õÁCöb’ƒÎRЩãHmÚÊF<U{ƳªáFSA˜/`ì2L§,9Ao,¼ó*:4¢„³ÒˆÒûX·<uü%,gÉÝÕ<Å'Ê–ƒ}h‘Þ=…{`ßZ‚gŽZÔTe<õ-ÈÝ÷>ï.°*S‡‡IR˜ r=²…Ã<þkèŒÎ˜–øœàÉv nJ0:¢ô“ÐEßSìQÈ6óºC•^L*>ôœ[ˆ7øÂNO½Ça_ѵ`Å;½YCs}ä¢2*òhZ@¹ N”ºà5ò>D<WÛxa«£)0v'Àm}N(ÝãF„qÖÉpù°ßJ;þÂ0^h—ñmoR+ñu¬M^š¬8MTÄLÐèË]íëC… “&ô¢/¼ó†Ë`qØÓɨz·™_.6»È®ö9 ¼liÔä'3Ï=žlº)µzS‡>«ÌšÜC‚Ê‚ç„¢€ŠT±›ñ6ê·<&¨E 06üÕÏܺ 0Z¸å}E<ØõôM¼³ë#{šSJïÔÈ€§I…+k¼ü¨/““!_•²“BŽ%S,¥bäCêæn‹ùçDB‹¸µ¾~|z M½¤8ìŒÍ:g¯sÁ¤ØNR†*‘…hˆªy÷×Ê÷ûâ$+Y1mÃÙqÖ0AâHòb+‹þÔDçÊ29->€×TÞìÊg´oŒÎ¼!¬SãÿÎVºƒž±B™¶ØÕ|Q H!“S•09žv*6å•1lÅqkŒ*‹ÖeãÙ®YÈÔr''ÉD^@BÃo™£Êæcdÿö`k¿Û9¥7+ÑlZ*}uvßûÁÓbp'´•ëò1y½>.°k»éëÒá9s´[~Ú:OK£W,PçÉ ’aÖBÎäßwˆõôÞKl;½¿3Óò2é½rPÒJ³ïÇ—åô>#Ôr݃ÃV>Ûz·Ñ*·ï —/nìr¥aþã9Ë<Dw2_bYÞ;‘CvmTÌ3ë·ÙÞÖ-É¿§MÇÚÖ¹Ôwsùø”©çb7îTåvŸÓûŸÅçô®ûŠäw6FÅP©ýd0¿Š¯Ê(ÿö|Ëe{éÞÝî[¶3Ìu¸ÒÄ‘×Í|‹,§÷¶n•Š ÑrîåýE„ß6¿ó'í“`6šüXÏÔ¢k}¥w|{dR¡H«ÐJ\†r¦±·ŸÙ 7#Ù‹×H:·u]Ì £íÛӵÎ^«Å¢ßº‘Â[¹£&‰8ÏIÝõ×ÝîËi;ÛÛ8ÚŠJ‘§Q¦\ÛüF§÷N;4a÷nžÓ™~kë+rp¾ç¾žº—ßèŒÔ:!#Ÿ»ä¸ÊVþT¾Îq[wKíÝn.΃ÉóƒPtGÈö¸ê—Ò‡ûòF:w²¿v[ØI%d$›“Gvíˉ/‘ý›öã.Õ\{Æõö7 K‡ìöË#{Ë^ö«³Ÿa6ª*èM»LÏkçù8¿¿YF$D†E/^p-¸!š«'þ#rXÜWÛ¿-œ)ås;…W¥6êž: ¾#"‡‡…*ô~ Vt{°¿×þ¸xÁÒ·ê«d(•=7áYo:¸B¥?K³ùfw^öýheêùHþ-~ö]àùõ,Û¼¾LU7î®3•\¶š«u¿ÓßÏ»ï@&ËÜ× +CØöC¡AFn²Ì]¦RÌÜ6rÝ6¾÷öµñ^̽m“ÀÃÃWŽ»j‹:Ádíûë,S)oŸóáö™Â×Ê@*0Ä.#G7ü·Ò¥C6ɧ÷êÃÕLýt8²wÎÂ\'4aÜIAªŒ JÙÚïÔëþQž(>¥i¬û¯ûÅ<èÈöN$+¦^¬ò23×(\MŠúuäæê‘U§åR¦qJb½Ùö^‹¡·³X†Ø¯?Páõ—}¥%fŽ°£«”Pm¹{õYˆ”cE]_aÜ‹lj…6RÔ4Œ®¯MèÜZ8÷Þ)ÈÜ^ëú*Ã=P·V9T{7¦ÊWK…èN3å$–Ô§p–2™úy;`s˜ÊgË÷ŸNíÅE åJ÷ÜžEP%æÜ®>Ãj1\ííó‰*rXz½kЯÖ[±OpY6Z¹ÁØ#ov0Õ|üu°ý¶¿²½þ˜©wîÖ¡Ž³È¸‚AaG¼ Š›Qî1sõÖÙ‚Ïž7³l¤ÜQ¡3œÛ:f¡½bGÄÂÍݱ†è@áì¹NÓïwï_óM¦s›¹ÞhÉær›™«úc/ùÑ‹îctÓçDF/ žûÙÏÐ [Ü/‘!Ô?\móF¶ÀÜb€n’hŽ +¡ƒï[}æ±¼E +rïÐ@¡f+|ìÈo€ßµD–õ3µ×Óœú6•yMïçbPäõð ¼™%FLmTgô·¸0Â4xò•–Z»›ŠÈŒ5~¿TÉõ9îŒ_#N‡iâ,ôU€í,qF¶3Êo§÷)øíîžñiã3ò=‹¿@dŒEyõ˳Ð{Nûò~§ªÊGêç¥"¥¶AÊ]Áoy¥ˆZx ’7•2V„É|åuš?þâô³W›£´ µ×Àd”žâ*Q³ÂÙšòL ÷“AŸ[¹4n´•jy_åÔ§ôæñÈðùé°²¥®àÇcÆÈML?ô’Ö¹i`‚ÂÒ‡–—ŒÎ\DÆ,-gùN+‹$t2T°¤ñšª–<ÔXeâˆRNÿSQ¬>ˆ´½n½ñ#Üå7JõéO¤X6.êá¡Á²±_º¾Øù…_`2NüRº‹™¡qÄÐkTØ‘¯XA½Vy¨3ÍÚqøH%8®ÃÜÃhU:üxh¢ŠêS¨Þ*ãF™Y´ +ûP•Jy`†ÓQG&ú£ªbZªlPiÙ=Qi0×ï”Î4m,}ý#e<¾çfRF,µÃ +Óð˜FÔÃlEû w uDéëÖ“Ù&ÜÎÔoÎúÅô–P?à2ΩLfÏ÷rñõü~·ÜŽ¡iš»I͈®ƒ=“ÿLß®]¿çº/ Êàd‘)p<βìXVáKƒR?EÜÊ]ƒ9šh"ËÆÉ32š-ùSiûÕâ¡.E°o€ÅpÆöMs6±–¾Ù +eóí^ùÈàÉÌB†Û{(3‰tü:ê¯eÎîk}Ó[þ‰•.kéý(·š?¬%Lþ øžÈyÕ§ulC[¦æló=/lʸ»Z_¯ŠÅF8ØQúpòXÿÎTOÂOÎs{¶©¸Ç‘õ½[ÍêÄÎVBî_eòg˜Ô@ÆbUÿ“ÈX¬jÜ9Õ— Ÿò|¿t>Çég±@‚ŸXcSAŠ›×Y€-,»=v3uŠë¬Ò«BÆm¥Ìf‹û…§ØØ÷Šyû^~/TÇ]?gØT¿”kñnõÆoá;§tœ¦V½ÝI_¾äíÛiןª½èÛñ0²*ÿ )ZrI‹™³Û»uF‘os@F•ÃKö‰ IgÍv1×þºÇº¯ê¨¡%B%_Ìä…ñ8¿R%‚Yz{ÕÇîH áió9M-e{ìû£îFè€ÝS*²Ôf®ø–ëÊ]6ÿ}¬RᵓcT$®Mê3C<ÚÉÖÌü1õº·]EˆÝöW NKä)1¯ñUçÒ{g÷«¥Áj'8V]äT¦ÕJíд‰J_SÊ@ÙY?„F”=®o¾)/Æ:ŸìŤcr'”K™ÊbZ’:×Ìîùí®e8Ú{EÎòÖˆ·TîD 0ŒîA¿Ùã,3Êäε<v‰Ÿc�¢/™ÔÞYtü¢Î|ǺՉ¯oÄéñê0<Ùkîv84 +Û9P_4i¶k¦5C=|®å:OÁ]ðý Så±³ìçyœÂêc–ÃKö“:ê/ðD¨:…T^^^d{B–Ìuƒ[�°ÙË<±ÞÉZŸß›X"©)U,¾¼¶Š™ËÀûÒeHQwŠÍlªX}wšÅ>uüüê)ƒj¦qTPÓ4»ÞdH¨:’͵ùÆÇQ<%"¦MÉ©^Q|ó3Œ-a\úÜ`\î£i—îÑd)wÖ³V‰¢ÆÏvsÇŒxöüÕ^¯9pÿ¼9üþRÂïÁô÷QKÐd¹5Ê$›ƒw%$�ÊP‡áñ~Ÿ‹ +KN%™8y,íÃ@…ÝS¾Ó¢ÐªGŽžÅf‡¨ã§L=W©åcWíhz÷ⳫOaºö)ñ×Íã«»÷Ü~,ìˆç£L*ÞÛÖ-5bˆøJ¿Ž# Hø~ó*ol-µhVDú5v&îå^?³Øl%ÒŠ\³:©Ú*ýÜ{§‡=´š¬í +Í8ñ?º@f÷â}¯[hÖ7¿Íæ ž`“õÍõZ±±¶yUlT3Cßn:7ÿ}ãd˜ZEÁ§c¨¯Èö¸Ë6yl°Õ£ÌOì~(-ES£Ìåvþ-ݪ»d2xQßW‡`T‘íñ‹räàì¢o¥vtÒÐÃPfMU‡á¼Ï˜ÞmuâáåU«C0¼–‚0<Û/éï,¹ÈD¯¢Ák휩r<vß2ggž¥NØïøe+Ò«mŸ0(«§O…ÖÑf"v¬¥ªÅ´|ZþÀåt°±ëR®»ºÎªãq·�Èv¬ +¢®nÄ;é›·ë,’ôÀh6ªUEJÏ\Mk™Äñó‰Ù|U¥ŸìfùÂK‘ºÎ\îÝndU©PþT®öaœ³±ÒFé©‘é—®ysôJ© +ÛX÷bítªó”éÁpΟg®êéo£Y®¶-vmy;Ã=íåÒ»·ß]î–¦…L=#ÚJ|~gaö!Ó?ÞþF¶À~±%Tæð€¥ÕzQyÍôÄ>™TåèÄYKصUh„ðžfÅõ»ìå†È™h§>6³hpŽ>Óû‡ƒ‹Ìuül¿ÐÜJ°nEn`^Ëh~ÌŒ‘ qóx˜Ë<¿Ãh£˜¯žSŽdä´ÃàÙëX‡‡k_Çk ÆZóO`e$.”ÃŽ.-@è³z®“VµêW×XùíÆ•\ˆl³oFË~DìKúf}84ÛW¼LT=}x6ôA2½Ñúbuv+ּʑ"S>vóo›Ç½dBÚ»Å+9{ÂKµã 4,šÎNP¬³YßÞ,沩mdÃ]€Á—‘ +üëcÈ(ÕVz”_{ºß$Ô*´Øð~†8<ý²èížpMµò§ç×w�¬ÇQPíÇFÚðıÇuÅôjÝ]¼AËKC°:ï^ó§4Ux©4Ÿóoõ~L¯wÿ8ß8Â(Ì»§êÒ8Q[¿9d_S™ŠØ¤.SKÿ +ŒÐB=Ã¥®Þ̓òC±Žà·ÎØîBŒ\ûÌÐÃí|檞/4ߎd JU`n!.ÛtÒ:Øyç£Á¼Ùºsš0ØÕâù&’C.|#ÜÈ$F÷:¯™B&qôV.†ÎJ)ƒkå1dÚ¯ÉÆm�„Á¼y% +-þAÈuŽ’Ц³˜q½+üÞ³BŽæONUÏöòÂþËj¦zù€Æ KÙsã4˜Ê|Åp»®zêzæC¦Ö¼ó=2KPBÖÐWC¬"qðÀîV?ߨi†©*ßyÏÔë·IãÙSyqý<Óír(A_Òåbc¸ö¦Pz³Mó &Úúô +Ÿ@í¿³6¤^ûV1ë€BOŸÅñ"UhF3îV{8hßA¿NïéihԎ׮“`¶7=ËÕÑx$Q`¡_ÚÈ1iìâjÔS•[ú)tql [j{t€x,£!ÓÃ�æÉ…iZSÔxs4°Cœ‚§ +^ Ñ5ÀéW()f{±B/ûñQMçOÚ—Ãüi(TD(p’¾©ŸðÅLÇš³]nž5Ò§#l^bSýâãÓ<ê0Øú9u•\‡_iÞ?bv@6V1×ú"@|:ª/þb¼ø©öf·ÝnÕw/^š£âëõæþíCqŒIáÄñùˆ|ˆ ö`ž Š^,n&£èh^Þæv_"5l*Z•Œ÷i@†Ï0[[bŠ¼=‹g’%y¨lA¸ªóýýR¯\ÿl·>ÖͽÈ'¹£Ü1R¨U`ha5½I¿€ò쯎W¬uH>×n°ƒÖ¶n@gtUƒ),ûM¦Š@e¿·Oóÿ™ßîÆ[»çú†çæØÁ×°jScxz2m.¨>põ×5 ¹q0 ^ˆWö›‘©žûHÇLPÕÍÈA¦Ðfa¾ËÜæß™çOPãaÚÿSŠT¶žQ–ƒy”Ø^Uœ§ƒÓ‡SÅÝ1üyÔÁ¶@ûd¹lO05ݯe?ó[…‡VóÁ¡JQ™3WAIÝ–aª\»³zq;\:Å&½þVÓ´=awsÏÀ¾æpcäð¸TolŸÃœ˜Ów0…"™«ž¸Ë]ƒÒhT̯[2Û‹’õÒC²~¹Ë¯¨>DFµc›ÐûcÉj7/CÃbè„ßg¯«í8ŒÂësè•Ÿ«¸†"¼G8l·u´‰°²³'˧û¹ËóüóG,k)Ÿ¬”>2c°yÈ“‡Î•³gìefÍ2rŸå¸ú :ì–06HŸØß*´F«`cd‡#(*pù´óh6™©œmߢ:]С¡…ถöo²ÒVF̼…Œê¦WôrV(æ›8"îXG3½wV‚ºíÜYÍ€CöìÏóâ)mKÉÊI!¡±À_×1BñQwÄR‡I3éX{4Fºqü=Cá4ߤËd»XH^ëñ™ýQ¾YÕƒ!î¶[¿Çƒfƒè½Þ@˜V¶»¨¢=ö6vDfh©ôfl;®+Unœ"«³•h1Y6ÝŠ»Ë ,÷õ²þ¥˜ g·¹ì^‘ß’•‡`˜xkDÏãçOß dŸ22#ÞsÏÛ;ÐœË(týu:ÿÙ ô#üHáIºpIáý€á9¥¿Â7ÿïPßñgÞ\—ÇÇ;ùJÝ=žôz#¼/\”s$Õ8ížD[«ùb£.u¿Ðä^Xµ²Uþ]81åçÙ7@jeñÖʺwŽ©lÖ²·ÒµW»±ÁN{=µ¢Ú‰ É3}ÂÔŽ+ãqõŽ ^ÃŽPwzÔ”c9ðWGèdþO$¾0ŠmÇ ð2z¬ïÖÔÎÈŠ®e\%ü4WöC=øHì„v½Á¤•êÞùn%2í€ØøÓ>t 0Q-!ÐÅYÏ| Çûa€zÝ–rv‡<juPóNP¬ ûÞ׫Q¨õG#hø¦“ïÊQÿ³/þÕy+!RzÄO¨º%uöÙkÜ/òòðVh¢|z¢Å²*wǹÀ^eÇÉÖ>Z‘CIYS’ƒSYJ;ÀÒq"KÌ u¯±o-,ë).õâÔ†|¿ÍKš€‹*G¸ÀkÐ?õHUtBKqpNXÕv.öÅVG¿„<è€r|°ý/üP·•Ô· èxŽ(ç»u[B¼¥¦)Žª˜ª'gÝñ±&åB[×ý»”’–iŠR÷\¿-IüÃ1Ešn¹¨Vœ¾5äo*¢Ï‰ý6Îu;iƒ +tߺž¹ëÚ·ªªœô[ 3|f“A_\>œ|€é©húyAø¸ M*‰IœCC ›×}rP +T·Ì™^<1|ab‡Wû°Ö8‹Þ9OÉرÇ[ I€ +õÎè«Ù绽 6á(Cï™ÖܽËo8¯Ë1µbŒÎ8W¬£¦é¿DéÓ8O¤é8€OŽ¢Ñï1~=- %Ó DÃYs._x8é͸kuöF%³šØ:e8Ìüµ¿ãÀ¦ ÏÉKÕ”nfGO Z$okîT¸h›ýƒ›Ç±G³A³3I¡^G¼°LûžçjhtÀÞĺ[7f¹:%ƒMg‡c÷üÎlóŒ“'ÀøšÆuúÌ@“ÑYP8ÁêÂ÷iï””Þ“Êaøúà’YïÿP¾éx¯{l~¹LK›ü°Ìÿ$É5PDa[nìÚÜ(B?°Úý[èUéMhÙ/²Ù7ž‡áR¦#þuÜmֺз·«-Þ0ìïÏEäÓ5dáµÏvPÒ¸\^âÿòQŒ¤Ží¤¬ÚM {†øÌßßr€jíD,ÐŽ6Êc‡i¤âµçÊWe4ƒ\ñWøe»õ`¢¥þ451å3?Ôôû@?Z]ÙôJçÊh(ž ’ÃWÈ$4Ì»”þê©Œ‡Qs*ý*?ì8¡úþæL Èlì´þ¶†Žyp0�àU¾žwh]àÂtºÀ˜ú]›qƒô±È y¡™^ÏrkÚžC< íÊÜhúíñqzü‡åAˆ, VqJ{¹òðÆGΉ ‘ÃÄ+9ºiƉxä<9êiôÅì_îÒã—ãßð‹=ú¨>ÌæßR¥Ï㵫>ÿFÜŽßR‘ƒ+¶KŒfè: îœßU‚;Tñ:¸sóüogw‚‘Ñn1ÍÞ3Düà>„I'‚¹ð%#Sò94,ÿÉU^él’N²ì×Ã~ôµ(âeký-qÜr’tÈ£«êJ½›föõü2“Ù‹‘Âmnõ.~œy8˳G¹býˆ¹KLJû2|~úE¿Vscª¥å¸›Dx=‰Rš¤Ü[é)˜©¼Ô¯‹ûæ¿E«añHY–$J惑‡Ði0Rú>†ÚD,Ý£É(Üé|Ô ;LTÅÃTéåšÞn;[yÛ>§ÂìGìpÞXZ‚d3¹1ã–sσ‘V¬ï_l£O…4jD-9ü,Ã÷b0L—¾bt9JÁMF¦×/1 |8µë‘¬(_(|8¼†t9íÍû|$ݾ‚geÖM-Á# +ë–":Óöäºôô°sBÄ™š"s]Œr²8¼¡^ÄÏM Hö bAõJÏ„¼•'GjóµÖÅâr²Ä$¿÷>….õ”ö´'?IÏçO—ÎTKÜKb÷ä%æHõeý¢l¡ªQ ³Ý³’Õý`H’É É™j•|bV©Ým'ªòÖÎ9Z©tén¢â·îÎT™û;¢HlŸ;R]-¶Ùuî*|¡S2:a¢X¿Í»Pe×6ªµLÆê+QZ{¸v¦ZŠ¦ÌÖI3vçÈ䧞U©V·¶,¢¥÷†½6¦Jngš³\ï¥gêôQ cª+8¹]mì‘98ÏE€*#Úêe¿èJ5Ñ«¬Ý¨"ä•^67ntÂ&ªÅÛßbiGªræ™v£z̈÷¢NuŒªB†ä-nSr¢*^ÉpèèñÙ‰*QL]¨²h#ÁzíFÚsî.sÿLŸ¯ûºZ”÷6>ã75Gª¥Ñ…NÉÆLxKxOWœ©îã`V×Õm‡/‹ÛG\:xT¹…*›2—½W ›SekåÏ…jáé³hêëCš(?ŽTW¿eîsí’ÅTŒµ»çÛRוjú³‘˸P}µ]Av¢ +däÕ³èÓY[Ø:u—¨5Žö\©^<Ÿfݨ戛»$¦ªMÆî–×Fµ÷f;éHõ¦LŠ®T¯KñRω*7@øŒ¸Ðig&—Â7/·¯Gª·GÍmWªFfx‹©{wŸâ¹R;S½¨¼Üå÷·©>c—NTB#Â_ÕÈæ“ŸŠDãò{ß™j%–3rΑjá#ª€"žo¬ÝMo/ˆ²B•_–̃çHÝ>2ˆjÄ6x*k{á—ÑW¨Hf“~ݾZW»û™Ú¶Ì<›ÄùES¥¶CÇfª1I~?]CT£v (Ç‚Ok,Úä„Ó² ŸÄ”Bõ(Tرˆ6˜)V¶ªÏÃÝS‡Ãב½ãƒSD5®SEdT\¼&£\yó¨GVªR÷(¬RݽŒ™ûz|ÝØÜÇTé£ërÙÔ×µG9Ñ|ÄɆ@˜°1ù"µ¹z7¼<ª” «¥L³Ù ÷ßf“[÷×å§SýiZ“F|pŸ8yŠ?ñ[‡$/WלނŠ;Áìz½u›ãfŸåŠë$*`SžÕãÎ@›ÛœÞö%®ò|œpy;&ÉÃNQ‡'›Átå¶péòv¸wvrº&;¿=#žË‘Hb¤¿5Û«glã"}8ÚrùüìºËÝDß&/Hmn¥vœ˜V&Öǵë~™Ý¼æ‡.o÷C7¹ýÛ´ËÛìöíºÔͪLs(p¼Óȱõ'ç·ç™âÇA˜;¿½¸ê|ÈBDkaÚÅÝÇ-Ç)—Ï¿¾Åè§t~{ÿ\e¯ø¨ã·˜iÏÛc=·Þø¾ÑÀÑá-G¬îpEç·ÂÝEq¸Z\™öF<w¶>NVßnÜ^¶oBÁ‹#§·’tи¤Ó—¡zsžÒ•=©\f¿P¸íóLãK>oåߎ^wCÛûÁW§·hö½„·Ó·Û¼^Àì?0`¦Ž×?ç û¹šóÆy;oÁí³=;ìù«[ðÕ_jÁF»=†Gè·*r'sÁèYL¤»ONõDä#ÖÒ˜ N:~žìo|7ÂÎàìÛþ˜*²:ã݃fL¿ÕøCq3ˆJ«ÔÖA5ªúCë¢q~<\£·°¯8CÍõ«OºT™ð“âF ¨®_¢®T‰b–¸Pe×Öûô^Ãd˜ß¿xP-îTK%é~L•6QM™µovô¤.õÌL~6RejëF_¦¯TÛ››k:ÕÈ^ïúB§ŠM“‘Î œ©2÷÷îTW‹ï„+U4<‘káÒ]ð8ÁµhºQå=¨–ˆ]³-`&ŒíWªÈN¹vãðŽ+UŒiÅ“M‹hÉ0@0}ü›*Œ‹QÛW¹Êš`)‡Œ[§¢«•ƒ *¥QãsÀ¨×ꯧGúÖ¢ðùNÈ‚ßrÈ0<Á¼Ñ¤:û¥Ê°ù|GýqDB=jxÙ¹2[‡ÕMÀÊÇœÚþ*MÝ•¨”¦€~6ÞòèÇژ¶S�šó˜'·³EÕN£ a>Œ‡‡… ÀIÝ¿Ä!2cáêæ·VDí°Þbâ4±±È ‘RÜ=s˜ú6éc Ü/]WáÏMdÀŽ¶Údˆ(Í’½›ï®íîà +KÇñ?£¾(\/t®+a;GÆãWF×Ý¡‡GäYyRá6Õù»¼·é£›úù$J£øK¦*dp'÷¶½ùå_†¥Zߢ¥ãxš+¿<j»ñóªB»ó‹xÛú¾›Q¿tæªÃS$ùõãy¸?f}܉õšl¦å~Sž +#´(‡A£wúV*<åF +ãþ{¢2Kä¥@žåÒ¸Ú™‡¥³MÕXs`_á©2´O[‹0Ôï ÆP}ägŸ¹€¸Ûð»¨ÛK^ß;+ÏÓ9%fó´6™Ý›ÊXrk !ðk×~áÞ(]oâ~9CýýÎ�O3vi6…§|̤ñãñhRwB¨Æ6‚Q–ž¾ƒz*Þ¼í†Ü&î˱æèwÄK¡‰·\ìqúÚœG_“±f€üjÙ±ãÓš|q\„VÚ.ÐÂŽòC•—²Pa×&½êC¤š- B"»;Œi~õœt-Þ#ö†í~»ÚMê›Ê>¤Nõv'r°Î¼Äò™`™è..4>¿–<‘×/ +•cŠz¯•á©ÏT“IƒÛ%3ÄÚ§)‘ˆi„ü™ÍmTi(�Ío½ù…zŸØ¦Ôª×쩷ȇ;knmJëƒW—¡âF¹ˆq‚×mù•!™dëù¨ŸIi<uY«Â–ÍÔµµ·øÂT Ó¡Ó^›y‚™«›xöô§û>jsµöfbšŽ¼‹`šÝ¦ì¦Óc6Töî>jönÑ)Ìm9G‡‡ +‚(ãf¢§á<ÞýšÞ@ÆÍ€8¶:ì3Ïw¢žGÙ³)ÜieaØAG®«Íž>äß3tÞg£Ê¼úå×—p·ì +ú¸ñjŒÖÿ^ ¥%ªÃ®4føi‰ÙêÔZb³:'°e�XœÇ&6mN2ÌYÙ»3ë®,Žcã†ú^wñ‚û•Ù€: +å‡ÓQp œ /¸änÙ8!‰Ë@GÍqÞwj“¶Ê£Y‹€6©ÒÇÉ‚ �z¸9u\Àµ‡G»—çSà7#ºÍ7H\ gåu1ó©g¹C¬ÎyU«t?pÅ´a÷ŒÜ\÷â\½ŸŠ_¸¼Çί)»¿ÓÌžv~™ûÁvccÉSƒ…¯›Ù"§–ÁîL ojÁgu#ÏÖ½K¿Æ=²¡×wQDa’ëì#{j5îÇSPÀØ?ÏÎ…f„Cª§¶™z† Ñ×)!ÈŸ·–.i+Stét4}PÏ>Ñë©ofFÞ˜Ó&E- qgGlÇ +L3F%,–6Ú0N˜Íì3«™íFÁ€.–6àýÚ¼ì;Ãó¢¬-òm%ÎÌó¢U-Ìæà„©q÷rãæÌ:+º!”‡ºï^ͳ!m±:ýEzé£ë zú.™7\ªtï#<ï ƒ3Ëôgšo¦âyæsmæÃ* Yºâ|0ȇ™«XáPļ)úuW›j�zø¹€Ç¶ðÃ�(nõî5Þ2âoDµÅý(™CˆÖŽÐ¨6b^ˆÉKÓÖåÕTKÎÿhYô²Vdv6gmÎý�‡æ¯ÈyC¯E5n'WÔ¦Y7°N„[�×f^hœª6K@½Tëë–¨ðx~ø ¹¡ªÌÓe`ª j¯Çª‘ÛJ¡›eqW÷ÉM£ajF7Ëð| o; ÛõÜèf͸�t“?ñÈäâúG7ùÓ}ÕÈ Ý”…|ggÕFÍnà>ÔV€×>ÐÍ +\ÏnŠƒ+šÛÐÀµ,bWÔp]~KÂð:®*’É>0Nf¹í®q Ó +¤-Dgܪ¶dKYÈ?ܶì›q/…Cÿo°³ímªûXá‘ú@\LÆèBmž6¿7âZj›{CÚ�dõ*M«¸¾vá)™ +Ü4 *š`áùlNÌšµ"?&""3±"÷4Ù^7-EàÚÈ9j3ǽÂ;–ÉQÅ´Û…YÿOßN“ã´N!òÂ&ÌhN“£„´ÕæËÅœ¼AUÅX#·3©¿*¬/`Z»;fPùÿ[×ÉqÊiíÖ‡õïTËŠ1T«h–ùÑEhç”WzúùíBß±LŽú†}"˜y~¼ó +F«û²ÔMä†Ý®,€¶½ŒÜÄbâ¦>2Ý—ð/1ÁÖômCUŒÏ‰ÀÏ8ß %&†|à¸Æ´¾KØÑe´)ôÏïµ#Âó¶º&ïس¶É}´Ôbå¿3UÌÁ»÷;MÚu¦jÊnœq–¸À½u¿7ý²ìÝçꢶö¢Ú¾'L5ÆùÆ{ùÕ6œU—˜æ'm°;L« +fiZvúºFnÕÚ\ìŽ\,î±ÓרqØx5˲ž:Ó¶X“ lDw hLÝ]sã#_ÊèšNçóÎå2‹IçóÎåC»†’ÎçËg™ofOçóÎå[1¥.ΑÎçË·bN]œ=Ï;—oÅšº8k:Ÿw.YL:Ÿw.ߊ%uqæt>ï\>Õ€š?Ï;—OwØçLç‹xæò¹S¦LçóÎå3F9<7@»'à |xÆ–÷îÉHiÇím~Û¤»¸ÕMiÒ^ñƒfÈG®¢Óæ‹'íw º9aÿúb`Uušýë®âÛZ¸Ê/«¬i>æ]K8ªŽæ}Ii‘©X¥We÷oPm;êá8ƒOGÛf=¿=Œùhž¤}4˼4u›´ïÀó$VMLÞSâÐbÎþôö~GrõM•'¥q¹§MOÚ_bu +_ +ó„›M‹6—zmƒ›Ð¹iö—¸nð¿ß8m1™6MR 3Ï .ø]ö»QÎC%ʹ{>W+€1ÆáéÇQñðR 6×,1eÅcbmæ ^àØ–"fË¢èíºOƒÐüêkj‚glÛ5Tô›÷:1é•/êP8FèÙc�EÏ…q%¢â´Æ#Ö±GTÚ%9L~½>“îøHF[±ä>½mÿ9…¦¸ŒÓÎû)òÑ&¦/‹¦÷ͺLœþó•à=4Ë}çýØDô%ÃÔº“gÚ–`‹zN”áŠWNáÄœßec?«afýrIÑ1®xLS›Çfþ˜æœ´3+ÓÜWR¦î¦ói þ™fŽs’uG?Ê5š˜PæÏú~?ž˜N©{÷XçäÔ=—:ô +\±GßA¼S'•ÆùðÈqœ{/”¸,¯Ú"Âþ £‰FeïW7-áîéë¸køñjôE‡ŒÏ¬=¿RrXXqwŠÜ“í&¡€…vßq„šŠ#>²õœöŽ9âeÏO>ŸeÍ3ªn¶0©g¹3[˜'“2u-楇B?Ëýi“õ\‹�È=-ËGÚ´O; šå'ñÌu‘Ôl§=C›aÕ–¥MöÍI~Yå²èW §éM’poR G0ÙÕÓMô”ÓšW²ßTÑ÷-ñz†Þ,¬2GoŽÈSÙ~ʽžLpûüDoŽÈ3ëq-³lƒ;>zã¾óþëtAÑèÜÖ6'úˆÞ¨©$òáæŽÞ¬ ÔÅÔ÷Üû‘O½£7+†$ÙI¹‚sDoÆÁ{Ä›©„ܳƒ€;¬?…ö·ñ"=²¥Æî^}ìU÷cHÎ’!ytMzoAð뇜éáǘÍT Á™]ºŠåwž; ïRõ:ùÌo›÷±gºã1)Åo®ŒVÕ)<›qO -ÅÏ%eÅœÀ<yÛ Îós?_Ëe›¬NËv@ ½¶eY“…g!ïý^Ž3Ÿ“Sª~-:3Ïe`Ñ™y–U\×Ü•93ó´m×–ä¼EgæM¹vÖÌ<ÛÞÁÚBrW¬™yÎûÓž™§’qÝ„¸ ̼-OÚœœ·èÌ<-¹¨…;—Ì<CÊq2[Pfž†ž[:gÊ̳{k.ëB(î²€|’íL]L³ó"g9BÙÃêô³õÒ¶ñbF¸ž?ûá‘ß —>*²¿1ýb1ªÈâbÏØdá»ïš¦"wïÚ²ó~òëkÏ�Ú„<•i–ñè° ˆÒ首Áhv<@sv›³œrŒu~Åz¨¶ÿñXxºñ1‚,˜æ:O÷«óN¦7Ø¿™<ÞsÔ1®hŠñèº U´€ñˆj±{ÜŽÓÚäŠ|d®›¬~w°Aµ™ÏÄ™tP–G4GÉÕˆeÏz6aFóçv£$¨…$É>}/2Ij[`’ìÓ÷’dÉUkÖÏ,ÑAœ(¶3ö£ƒ–Š�¢P‹qae®ŠüøW+“dýtíG Ð@ñ8 +vÚýK(vôÁ¨“Ù M†Ïñ蘔gÀ´ió…¦IÊ·n!ÅÅ$å™æ+ø3[RÞ”±ÎY“ò&ùžJÊÃãÆ}ò]TRž~ð‘ü:WRžOó·³Í¨3œ~ï>I7eóž‹Rüônâá9û–]Km®û-AH?gT›Ë™Œ3X6MÙ|„ò¬+8—nÅpÐÄÚ\æ +´‘Á}ÒÁj169|6˧ZXçŠqHU™.Ԉѥr•ž£Vk6!¾A”{{|ãòÅ›Z:>Ì–ÒËAã žÿ$sÙøém~M8å"5å8_#,üQªBÑ\ñî©Ø¦¶WóÊü„£Ä†8ô=.yqd̳\¡·vs_5o†5§¢îæïÝÒîî\ÓîÐ…¤…êŠ1Ù_FîB•]C—‘?»¥Ýy&û hË2‘%íníáÚ•*º‰üÝ-#,lÉ[±ÜS˜ TÍ©høvî1UkÚºA´ç’ýöNö[-ò1WªDñl¿êB•]Û`.ò¯É~ ¯´»uÖjéríÁ…*¾§p£Ò=çÝ’ý®</ÎnÜ© +×Esð¯+g*h¿©y£íƒ¸Y\ÊÑ9»܊~5ònÆG•‘]qXÐ'Sèõ=c5QÇ@úk0ïr^[ý'îïµlÎßÎ$Âú“jä§Ü=åž\tà¸qͶâáï4³•<¹M.;º Y¹ ;W}fÊ>vtÍt½žC›´ŒüE\¯ç;l‡n[«DóÌïcïà47ëMÛÍ~³žŸ®hwáùÝ<©M“oWðÍx¿I +z›œÃ>.Õóß&ê1¯úÙZ;Ó|ö�ñ܉}þc6s%ö9eõ™¶ Ä>§Îi+ìLìs7‹Mì›;sö5qÃ$½¨Ä>§©^ª/,±Ïça&ó&öM3IÏ‘Øg©’Õç'Ü=ebŸSHfÅpxÖ‚ûœ²ú<v ÍšØçd1:íš3±Ï°KxœÕg´”Øç”Õ§øžMìsj“q¾YPbŸSVŸÅ€ZDbŸ“Ùªˆ–Øç$CÕ²YdbŸ“8ób±{bŸSUØ,0±oÓ•Øç”Õ7Ó&YŒ“˜6WbŸÓ*ŒûÎû™ûŒC‰c¦M]ÇDì1fõ)“ôBû\vÞ/:±Ï©¡™Øç”Ɔ™¶ØÄ>'[‰C/4±Ï”5Çc‰}NìXq?¬qÖÄ>'cU7nQ³&\!7ÙG< +å%‹H=ËïC˦¾™Õ‚Þ¬W™æ'ûÊwB°CäLjкÅïÐá +?§˜Íœ·ø9i©ê⺳jâÀ¬Òù¤ì¹dmøÓƒüÐõÂ^=+Â_³¦C›Luܬ9´ÊÔ¦†õâÙY5ñš^+Øx4K˜p.ˆ~êþ’ +6Ù_§æÂao“ŸPÞéB¶Zù¼üoE=ÆÛ^Ÿûò?#ظßÿ7Mç/1[1&”ùËé›åèsë~hçûÿ¦í’íò?WèôL•šúò?ç ¤õþ¿)s!ì—ÿùPh{½/ÿ[qËÂó·üD]GÖ|hÄŠ÷]ƒ³Ååxí^nùèd‹:·š?›hpæk‡]KMËD(§Ï×C®Y´ç5Ù|O9}Óî4vš=Q¾£ûÎÿ÷rÍãfÚMjg~SšV§ÁyÞ7Vý²§4U¿üÎ|“ÖÖPÞ\lþ+äºÕª¶ÐVµé§?§*ð|ÆQhNvëË(긙µ"ïD_½Õ÷ô¨h ¦(Ü=÷PÄy#¹ÉTŸ°q×6u¶¯)‡Ýšíëp3<;𞸧8ÞÕ–³¦ÏLeú™ª¢üÞ´d˜Ì\¹ù!l{sS—ÁÙôÚµ V\ØšBÏ&ÜVesØ]wm_û½×{Bb̸óB©j—;Þˆ~S(¼Q@þœáF_k†ÀvfÏxÇ\MÈÅðµô+š+ÁtE»ÓËvó¬ý2gÎ[kô›E¡”©R(&.#›lÛ–Ò´õ=A¾ƒ÷êÕó-¸k÷þyo²ð='Ýûçˆi®ãqæ{ÿV¬‰˜s_(ïxïŸKòÅ䊦FÎ.®áê¿yûµ˜Ü(Ÿ÷þùŠªÏïŸe?´ýê¿C?÷þù>¾í}ñuÃö¤´0ç- ¦mp¾³}ùÕ†ü\ƒñƒ¬N×l_~µé'¶àéÚÜâýSóFÑâ¯ã}V&žÑ¥T4gðK‰ªCEÈöEµ¸l¢²zk“+š˜}ï”H¥'ÆXoœ9ûÞ¾¨Žj*`wsÇq¢á…i®¹T.ÜlHÞ3ú>_¹Tw3z÷β¹[Øî¨*ðîçˆuš™æíâOã{¢ÌÓ©Œñ4”ôxãÓÓYŒ¨M¶ÝSÞB`µs±¨ÍbÌÅ-v‰§ùôàî}\†i<—cò=}×ã$&\†éd§åbü&ߧjAU‰‰LóŸw›‹YϜݲ±m +™ve˜s¿ˆ¼[tw }4™.ïöÞó˜:ë\1©:LúH&âÅFÔ‰ –î&ä$éˆÜP²ëGÜ}þ¡x_Ï?¤t星™\6ÖÊå²ñ3´_´6Ð梞¹j,Êr5Ýõ ÷蜙·|ÔÓ·Ô(‡)ñr·jT(Sf^d¯UqËLt¶7öƒ¢U ƒòÆÜåÕb;îJ•(Ö³—.TÙ5=UMSs¶Ú«ÕR4e j½šn7"©rä€f2s×)ï¹$"®†\sä¤Ñ+éžÙßû2lfM ô¸u¹ôÊBürÌ}\ÑÒãŠb½îÔ]Lu³,tÚnT¯|ÀË;3tZS/K.T“Ǧ{T/mrUVØÕ&Àcßu*êPnÏW9æ ™þŠ†«J9uâ,³æ¨6‚‹£žý,ÏørÚi'»×î̈ý„¼ê¦8Åþ4¯éú1ïºÅÆ=˜âž‚ô=c›¬û YSm±qÏù2Á+ó\L󘟴qÎx�털SukÂ7âS¼µÇüt·<Òãœwm™â¾ó'쵫ԊÛi (ÐSG§èáý`º-Š=ôVPm—ª¿fMºòŵM–¥”8y˜¿6÷€X¯I+-²»Bf芉6èºß¸š¹Ú?èz)̸jòœ¿ó»hfZÁâ#¯üávX£7ù¥°ˆe"èÜÓ¼ñ´—ƒÍOÁûXÿ^™tv÷B"Ò-ž6?oüçMôjPmæóî|L¤C§e+J“©¼üjÙ»×¾Á¦IãI[bÈ+¸uìc ½è¹+ÏàZöuºD`Ð!jîuùˆñéÃs|¯>¿Â´#¡4ùdˆ FŠÁ“n—<¦ËéÚ’C‹‘b_š"/ñÅû(†é2½&íÆ7Åp]Ú¤„T×£|˜êÆ6YB¤ã6)vÚ”y‰fø÷“[êj@}¦&º +¾exõáxø¯Í=ëH·ü×æ¸TïÝ°ç<iTÛÄ›’ý7Œ\(ÓÜo›…iî7ÍÂ4Ƶ6[³»Ù¨æ#Zæ›iS]†–-Ñi;Ï)‰ÌlWwÊ”D¿ùˆÚD0cÚo>¢—Õé#%Ño>¢É†v·[ü_4è¾ÆWJ¢ß|D£¦Í’8E¦—+G¦;¶Æ3q:OÚm Ï;QOZ²IÚbTÍ{YáŠ÷%u‹º¬pʰݬ—®üáh"¸5kÖË +-`øŸtY¡¦-ú²Â±BÿÜË +s]øS/+\1fzý¼Ë +Ýl¹.+´´©Ì<Y–WûL®}e,kêpºíЖ3ë…‡³ì¶›áÂC¦©·zo¸œâÂÃlíõsááä=P¹ðÐû¶Ãqo|%G.âT«ù.<Ô“#½OµšóÂCï‘8•dz[󎛓f¹ðÐÚaóm‡Î¨.<ôÞ+µòÇä8°¯½;dsááB.?™|á¡w—´imîµÜ?ÏãÛç¿ðÐ{GÛŠs†äŒ)PÆ -ãü'tŽµÚ›ù/<tJ²ÓGŸÓþ´™.<ôŽ&¯L:<Ëï…‡ÞþðØ€š÷ÂCáηN§iN—‘?ó…‡Þ·z炙ðлŒ•é.<ôÜe¦$É.âÂCu=Æå¶ÃCfñ¼Ù1·š÷rÌqá¡çŠfÄC6Ó]xèƒX†ç".<ô¾íÐê°Ï˜FVôîõšq¥p®½×ÊVlÙ«3^xè}Û¡ûÒ÷”z×âèšöÂC÷Z>*‰zá¡w-~RI|]xè½ÚlÜÚ;×…‡)†SRdæºðиGÚ~Û¡}AÒ_Ù”{>…^À…‡žk×(ܽ˜½mŸ¦ú䧹§pãÑù¶Cƒ¦Íwá¡w-¦ºÓ…‡S]QhÊvÐzßv¸â‘ˆ9Õ…‡ócš¯½ƒ¦Íwá¡¥aßÛi¥p¦g‰Îpá¡[-~˜ðyááÄŒ•Å\xè]‹:wÏO™xårÛ¡®is^x¨çw9uÝ#x?Ý…‡N¦iZ[Ì…‡ÞÜD½YÈ…‡c¦9F~LLóŸxe¿ðpÊXç¬zço®8¤9CâUCò¾ípº-Šz[ŒFL›ëÂCo‹Ñ¾ 9ã…‡.ÜTo;t]X™öÂCï¬Ð‹¸ðÐ{÷±cT}–]™†3|¬Fù»YÐ{HrÌyá¡÷\±bM+õÂCç¹¢ÌÄð\a!Sf<L^'³âˆ0½žúŒ[ÂÁhÀa9Ôï~s¥5¦‡¼ÔÙsÓ�¡/cˆÃôø.œŸ åa%Qr³·ŠÒÒ‚¡Çð(o!M‹ÑåÔºVª,K%g‚ÛïÒe<º±»Ißž'2 6"wNââˆß:’©í£Çõ‡ÕàÉ0̯â«÷/ìîzíFÌl|ökå-¡3ˆ²µòwƒûl—ßÓŸ¯ s&ÔR©‹§ãï›98{«u.»½ëRü|tÓ(…CF.þ¸O|T¾ª‘½·Aä!=”6j¡-I¢×ƒ«¢ Æ7ˆõÎ^ø¡Üº‰¤"ç¡Ãïõ¯2ÑÞèç%éh·Ü~.¡Þ©l¥Ùk1i¢HÅúm‘(‰D©rÑ‘¤îQTu·ä‹&êzPÍü<ü.D’H,Aœ€Gn¸†$¿Ÿ®ñŠ`•)@¬Ê§¼ÊÃüC1S.dZú™Ê ‹[Ùï+g~õH¦Ö¹^ÿ–Ò}ö"x{qÁ}2ŽÝ½ÆÖ·77îªëɽ^v£Z+n½ÖN˜Ôæ9§«‚¨ž +Q®¼ùº)Ê«Å“hPê>ÇQFéL5Éì)£E·º^7z¦ˆ,²1Ô(mVïœ>9qÄmínŠS¸Í~ߤãÃmŠ¤˜f<[ ŽÓðøü4ýv]¿È³¯‘TâਘZ¿jçžO׎q_©ì}¤ q|.Ýaé6„VhB‘üÎƨ:>9!/»û¹.'‘€ú…Öçw +›»Ï(Õ8nïqþ;Šæýu´É"Š>‡)ô@ü¤®Wcx½Gƒúµ-ì-ñÆÓÒ"ü¹Á¨¾ú†?ÓQm™ªvðôúþþk±~<#Þ^Òïé½rP‚–Ÿ›ºCô_Ç/¶/rÍñ‹ã‹k² dÆïbÆwïoã„áEtý¤£½¸ã¾’¥ò*?~1.½ÄZø…âI_Dï»zWgˆÄ’¦¾Èc¶L¡?)¥òæËƸòˈR¤9 £èÏè{ÖA_BÇ +™Ë˜RªÅæPE—>#ŸlWðŸj½‡G»1Dü¾‰Ÿ×>ix[ßÁo©0»ÛÖ¨Öc +"¼ž$¨^ Mk…Tø%½Gܬ5ðSXì…Ú]\u"€*ã–*êSvßU†*Éøš¼¹Þ“ØÃkæ"Ã=·Cʨ +?Ô‚X¡×TæK,£½ƒ™³ÛÛW]ɨð¨ý©õþÖ 2Tþø�™ˆ·Š’Sù‡RÑþ|«’Pë]Sêo£Ç<æ©B˜ohÁ{ª@½'P ¥ŽÆCUùÃ)2T£N>þ¼1ºR+ ßuî24çu¯ý1~ÁD +7wÇjoš†Þ¼ÞsböÐYÌWÙ^ì};Sm½•óg'ÁšÖ!´Ó)sã Þ¦!X¨s–Þ†qóWFü&uÍàöÒ›{ õ·<ß—£Õr7_ks*¹ús1ß[me®êO[…f4}‹fÙ}:qÅ÷‰l±@']'u}FWÌ€ÃÄÍ·n•XâXø’æCv#‡Î€iE¸Ë¯µG…Üséên÷¹"†0ˆfÃ= ÝÊÌgD¬¾÷Pî–z7wO�¬ÁfÄ~´Âî:¹Iâï°6¾«âx;àgDmöîE&⟫±xwµº vÏ× B1YÕÑDlŠÜGqhC'¾ÎU‡Næ†C¨üxK‰íOƒnºã}¨i´‰&†ƒ_’Pˆð8î>&TàJÛÃáá·Ž³ +Ø�Ôb8”¨>LcÔ©ˆ~x'ͳ#ÄrDþt_$ H…ÄC5ÿEbÀ•Ð€Z'[‘±¢ŽDLÅèpWá”»9ν~fÐœ60·te¨æ¥àˆˆWÓÛæÀ÷@‹uê³-´£š|ûîÚß®ûØÄùõ*Ô{ž¢ +ûYtz;ƒÇ<<{ÊDÔ³Csit€pLòõ0¾j1‡&¸!|^’;B¹£Àn›—¼íOd§íä¯(d‚^#¡t0ÒcŠÁFûýFOS÷ÁH+vÜ¡Š¹`x;»Œ&£/Áp·wŒö/ŸÐ["^á‘bÀN�ƒFRê}kÕ¨vìÂy©gÔ�Ä„|#¤oÎNŠa=Xxe+bcçx-Syß/gêyf=ÿÿ³÷¦oRËðwŸ‡ÿa@T¶©©Ü³PdV7MEe‘åý½÷Ëû·¿çDfUWweO0pçÒå½×;Ó}¦r©Ìˆ‘‘¿÷üªšço~r>ÎS7>œ™J]$d×ðÊVÏ?>÷Í·g SœûíìŸþuäü•_üg¿yäЙÏN_¬:ð¯¼uŒîþó£ÇÏ°»¾·‹†Úئõ½ÛÇÎ|ú럷ÏWW{¶ýû©ÇwLa³tÌ|$•ÉéyÓõcé%Ôõ©ã¬'k’_øõâ¿”%¡§g¶^üøÙ™?ùù_Jè'—Ÿ]=ÝlÚœ}vðü+5ß´þÝùß?~úáI³}þî…;¿Ý»=vâÛYÿµY:ëoo¥>Ù&™³¤³0?Òæ"Ù’ +߉YµÜü·xüsÿáóÇÞøóì?þôìÓͳ¿1Öƒ†/_ݹpçÎ'Õ…÷ý)›ÍÄ—Ýö<öÇóÞôu¯˜p.esþùµÛÇ.ÐÛš9_s褯2úÙÐ_i¹eÃcôèW]ÃRW2]8rÿúÂ…²‚Y¿›Lžø÷éOI¦ÿîЧ§ßüäéµÃüâJÒößÜ<kHnùÿ÷žøêçË>{vâà‰ƒ¿}Âþø&Û~aÏË»Y¹íßDâ`ê/ðÁ™Çÿný†.\½þ +Ûþɉ×6ËÇüÆrNVÚÊ10–Û‡é"¼úâÙ3ýâ“Ê^>×»±²gozaÔⳑ=w 'hzÍm7vÏq¥½©”¡ÖÑÌ«köWWë$3ìÞS™×Pk¯Ceæz>Ôjüt°,·ä뜓òo𦗎z Ö +[ìì£7ZidqbâîFäF‹1ûÏý|çÅÂÑÆÌË‘fðpòæ·_50,=³ø}vîÜo_øµüÚ\ˆ/õ%÷R}£ôûØ£§¿<{Ù|¶}ó‹óß‹Ë{'.<»uòVßFu¿Ôg¶ž?ý3Ù7ß?³o>ü„n•ãb™ääht™w69MôžÜ¹zæä…Ïý}äÈw.ûPù÷ìÖÙóW=|«]Ë~m{þa:X‘÷ðükÚ ‡ŽŸþôó>¾é§ÛÛçþþäñ¯ç«ðÉóÁ@3+8ÆGOnn¿f«Ÿ~yøü¯ç/]:õwÒžæßÑ̆.0‹¤J¤ÀRÊÒ=E?ŒÒ篮̅T ÷¯>çc'|OÕÚ«¨™fÝÃöéRÝR±{Ó)¨ï͈W¶oÓ`¿üùÉí_¾a{€iAOŸºúƳ¿ûÔôM×…Ôþžø +ÐÌîZ†‡>ßövqæ'>9<g™ÔJÏ’¶ÖÐ#׿>{âi}æì½ï¾¾xþôq÷ÅÙO®Õç_Þùó'95:óûO?½ðìæÝo>=~Œâ=úØ#gß–¾y%Q0O9Zñûæ6í‚ì§oÞ°éÃt AÑþû+·"váö_w׶sª6»0Þ•¾Yê|ðш10„ÍæãÍøÏ‚ãf!Îæ-8n âŸnÄK]¯ÚþOú|U}öÈõMuæÓ/þ¾*CçõºßŒY¡™WW¹¯¾Ò³}³Gn³¥M§“Âñûì57Ù.kï[]ne™ö+<à¥+mÉ>{ÍQ“Ù¼Ê>{ÍM¶|¥•÷Ùël2{âªØ7wþU~?ºç…?xôë =gø¯sôú}~=zìœ>¸ùë…ïéEÜ¡OðK~Q<ñç_ßó׋~öõI9¿ùñV=óî³°ÇöëÜSG}‰òtŽ®½óh¼ž3eõáÌngy1C߶%½WÒÐißìê>Ü#‡A}¯ç¾|¥öWyn_ûÈ`žk¿®?íþ)Pdú{y*Y4qWXoÕs;°¯Êþ´¿½¾?Í›£›ÕöÍ/â7øõ÷ow·eJ†L +‰_¹ãO_=öëÙ®ýuk”Ò‘ŸRtäÑ»¹íÙt¯(êÏ^¼ý÷?Ç.žýçÎ_»Ë9¹ƒé–_R4ãÁS7ž¼îëVŸ<x±ýg¸ù`üä¿ò þôè¯ç·/œ|=K> ÍŒópÀ7áÙ¯ Ö–yõ€ÿ<þÂþôòµeÚè—¼û~eŸÍë 8Ë´7É»ÍìÍKÞ}À«½F¿äÝ̽'/ù•½^U/ãüÐo°ªóÎJ:ùÄæOú˜fzÚ÷W§›Õ¹¿GælŽêIåFï»àÎE¤.ζ¿.TQIWÎôØÎÇîÉÅ^[mÈÈ¡í³‡:óäǹ2éGûÏ8ñðÂÂ3Žo>}a¦Öõ‘溙 ½õ:ôùéKíaÖ“cý)àœºx±ç©r[ÏøùçoÏvxxd.Ë¡2i¼ð맛ŒU°èÏŸ`P_º˜"Ÿ1Š±JŸÝ|~›áÉ¿>OñŸŸ»Û/=‹©ú‘þã»®vÎÍ|ùâЬöãØñ»ëóõw>é†ôç±3?»ÓVZ:¥g;øè‘Ó¿ÜD?í¥…LÉý oUÞÍ˃³{íó_>î”:+X5æîüsíëþ‚º~âqž´sG¿<ÞÞ2¸|³:ô×5YÚtw¿üM¢¿}ÒõèŸÞ•;‡.Ïópþù÷Ý<üÚŸ„—¿|ÓMÂBAã}Öùç±_ž™»í<œT½yؾqÿV;ÕæÜ‘tÉ»O±Ã2 íùÍñÓÛÿö7£9ÛkÒj[L^ça÷IHWŠ¤U¾ù;iO΃~©F.†Ùúþùà“iž»þËlŽÜ=|õ×ÙbXtB=Ò[P}vð·Ò‚ZxÆüŽ––Àèg{ÍNôÂàr×ÜuWˆ¸Ô‰$:ÇdóMf3mÏ|·ó ²µ{'Ú}³ë@êW_ZóPs~è×zƉþÒZ¶ÉÑÌnûüıÏØõ{ lNœXÒ‰Á²8 ÷¤‹“±9âsX|Àl]Q{.}#æÌwGŽägÜ9ýÍü3V,…Wš¤Àb?ê7Ù#|€Z˜‰D_iœÐí3ü‡³MöüÐ¥/·çp[Çf84Ã:}ßËz|ÄJÛm\['æWÚëÌÍÖ²U2Xª½•¶°Z·ª7Ü·[½U‚f^o õ+íÛŽrÌ=C½é@ôò•6vïo™Õ¸lO}µ}<=àÙçÎ,*i=fiíÖ }¢Ô KØóϽ´:ÑSÒºzý¯—Sž9%½›Ó¯+€Úœ÷°½Î<¯·Ü©sW~¯>¼øÃé“7.<»UÝ8{Ù}yûÎ_üÅK0NŸ»qít¾Ÿê¶«tcgþÏÜ£®1ؙ߯]¸rþô‘û7.>¹þï×Û7¿øñz¨]REwþôq}eëò¹?ÿ9ãâ÷W¥˜.~ú⛳'«›g¶^Ôå¶->;ÿÕGöëóß•nêöÞM/öâß™wcÝú8ݶÍ×þzœï†}óàXºöÉ©ï ¤ ÷ÒÉ£|ÀWH“ÕÖÃo¯l›³ç®Õ¥kG"‰´“»d‹W¥ÒuU^•J÷«îü{bv±Ú,]ž;“™”ÍÙÖÏ×½îü缟ꇆ³õï×Nn1ÓÁ‰|Iøï?ÿåM·-+ó‚œH+íË#ÝM¶›úÖAs[.1¶·bçî¢v·<Oþñø“k?»`Ÿ$âÿÉÓkóD퇃‡Ïǃ?¾xMÓ2~Ñ¿øÿI^(é2–\Áêþ5K¥w}î—c·ÒMÊó÷¾Ñò–z7²$fýäìî6•Ù™?í®~¢ŽmÿrƒÏ¸1pôæ5]*6O»–äóÛë²r8s³j]â&IÕãÜåOÒt÷stýuC½¿yN_øìÞwÇOýô”9{Ì\Ð篬Û÷ûýSú{ªùG~'/~®ýc¾|±9üî¼–‹ˆ[_ý¾ýyýûíÃ;RSLJ m=¼~ë2¯!oÉ÷”»¦Ãµ[à豌;~iÝÝs-\oúB!éó/q2fwæ«:9?‹í–$-Ï>Áø_V—Ã1ŠNóñ…ËôíG›_JúYŽ'gÿ¥û·Žþí³C¼ÖõÍ缨¼¸r\*Ówvœ»Å°èî³T—íôQ÷·–âv«ê/.þ¸•ÔÚWã×_Ò¿ÿë~½äðëß/Ô‰í[[ò´TžàôÑC/Ø–c2éƒé:Êâ¿‹·o=<a?å…ófvóU&íúÝÛ·úëóÂÛ?‰ÙWŸ¢Õ?´ùøàá3ð_y9˜s[÷0ô+õ)É6å üŇVß¾üǶ9~ªûéÆÎãNR—Ÿ‰õׯ®¿¸tñ"æá|4›cÛ˜Íf'%9xð׃GíV{tîŸ8²‰›Ý„oªŸüyt&vtÕ|òvê§õ˜û¢½ü{êºÍ;M* ãÝä¸ÛêÓ,5/Þ¾Ý^Cþö‰¸Úø4uâ?>—5—/Ãó.®Ü]nïâ¶êÎí#ù§¿¾^N·ÿ™<âòñüëÉ#Ü%—“°å¾ù}Çæg@¾h§åJÝÝJ½ )ð¢É]ý<}ÑÃ秎÷¾¸sxûTûÅ6"fßõµâçW¶f_˜ÃŸþq¶ýbáÊ-*.:6û¬ßô¥íý«ò·ú_ºRñÃ6úU29Å‚þë¥Ü»•_gWn»‡ßÎ÷™¿½(ÚàVăs"·èŽ)‚x'J + ¾Ù¢˜:þ=Œ_¯És¥´õí/¦K^€WðágŠd@Õ£zëúÎf×êom3"UnpÒÎoÝùìãN{üµàÞÔÍùŠfÊ]|¼={déyE}³Ë#ç‚WŽ~¿k⥋g>yðÃù+÷OÌŠûúϪõ„þ2ðŒ@’ýçö‡mŠƒ;¶ýþ"»ûdÙ8y ñëµ¼úï‚BÜݹr?ý¢2!¹{KÞ\Ñx_wïPt¶¿Ü·òŒü~ÿ¾*Ü”lBøõçöÒþß¿ÔíO·fkî®þäôÎç¹;ß7½/¨ôåÄC’|õïGy4?ò½(Ñ·Žþ¾ý§¿ø͹⇱wQ¯«ƒž†4ûWJÀ6Ëôâ窿oîå%óâX”:s?ÝQíO÷õ—‰Î‹¿ì ;îÅýüÓðã桯.þöÕGÑ7·ŸÌãÌýpÓgŽós.‹ŒÍ °{ú€’9i2ìž> SŽ7Ï p|×ô)œg2ìž>@ŒÂ7Ê ðüÿCŽJ‡¨«ÜÆÖÕ—ÿ<xöͳ‡<|¼Zûé¶Î^QêÚãûO.>{ðà‡ÿï‹óOî½|ôàñ‹“[g¿ß¾r%ºóî=¹ÿ`#óàßB'6óXò7b¿ÖsîüïÍ¥¿/xõÔó¿××?_¼ÂzÔ\>Åà3Òœ}–‚ÕNüùßýö{uðøË“ß3ÐìüÁÍú+MõZÌòÖr¸áÝøló·‹OÂO¦¾¿`ˆ5üù©»gO<ýú‹3_6Ï?—?û©ºøä†ýñ³_oÔ°¤®ÿ ²4úæÁ5ð™›`Úß^e·¥;xùò„Ç¥óšñÛÉ?2ø¯·ï‚‰÷Ùg¶žßÿôbóáßß^øéŒI‘!hf.ùG—^¤HTÇÿŸpÒnµKü«Ç3½×m±ß@.ÿ©¡O™mÜõgY¿8R¥%pûEÞïØÄíOêHâPiª\8–r)Ý9tå©°ä”KéÜÏ¿<K&qþ³‹[º¸ÜËfD‚ŠYí¸Ñ—Gû»«yÑ%ú²ŸÕèÄÎñ{Ýý”F'n…Ý[Í<ÝžåmRý<Hçþ%›úºŸ² æT—²éë~ʦKØ.-ÑוˆzÒÑ”1‡Í\Þ¼H&ðµJbåòé«üõ»þÃïþqœî’ïNä<H‡Ãɬ8N|õ$ ‡{›§è|ùn+'R:}…3÷j)º÷Ý5y®é˜%©|tÓR¶üЛ}ôô™O_) éöœl]Ìã^¾øÙ+çõY|^ëËünçÔL’¸ß~péæøÇÙï_~xáÆýo©~P³e¬o¾¼u&kñë·LÇIl?iÒépïÀ,_ÐO›9yÒwÛ”·?mµà'<üîMNü¤Z•÷“¤WyŸL÷“M¸ðé#fc»‘ŸwûÞE“öÍ.§ÖºûIõó&é[]Z¢¦ÿÅù¿·lã/׎æ†ÍX³-f«ºÙÓcæã£ßp^oâ_×âÁáM%?¥ÑÜÔ}èWX~fù³¾»øÛ×·ÏG/^¼ðÕ±¥9\ýàîI/~—.-Ô¹ô‘å ˆ.]—)nl.ºã³ŸµBôéiI¤DºýòηßsÑu>´K›^¬ü$¿Ðãĉîúâh²ü3vÖwÅi>"¶o:íûpkÆfò±4Dg¢>ÇΞz:':¿·Ù<;yäß–6Ù”Èo7 ~|ÖÉðY—±æÜ/ÅDÞ¿ß:óëâ<@¶[9{<‰ØÎï•Åy2ìR.¥›Ïïþ}îŸC/ÎKÙº#+÷Í韞+y “‹P¦/{ÿø& Öäüú´Ò¾®²Ô<|f+óªKßÔɈ뙎—®i1À$æa>7Q)½á,ÞêÜB ݘúºGV_¸åºˆ—ï +/›ýˆ—{ñËùP6ùøà‹#Ï»g|;x†=vI¢«—F¼<{öÙæW3÷ø,j¦ü‘S¬ƒ;Ü]¿÷ñàç¶zÏP¾¤zþÂdxh‘.l=üüÚ¡û[Oœü¼õT´ÿø¯|,Œaëá7ÏR½a |ýå!‘¨Ò�’óp~ö飫¥x6³’"–T +Å'~)CUÇ—Æ£p»ÍB1$CèàøPŒÙQõ«5õðêi7·úó ‘BynôãrÐþ$üŸ¶“pÆô&Gä>̃ݚÍ{ôw¯ 0 °…yXœ„Ó'ÿ~ÜN±æ'a³æÿz<§^ŒNÊáRåø¤Ó'¿}±{|Òîq9t }Ò]Û}½ØºÞŽŒ j|Ïxþ÷Ñ7 0¢ÃïØl[¤wóŠ;#Äx…N0cñ’ÄÿM²]m.ìïî”|ô@$;ô«vâÀ\Ž� ½ÑÒ‚¾K@3cŸAÕ|dé>ß}“·Š€ž£¯ùŒü€æű76t¥/>cä²kmçø‰•Ïèwb0›×ÔæˆhÆ;Ÿ}={†ùåûϸ^ciõðÇ©öfÃk?ãév½r&T6Ø—<cóð•Â”]º|®}†ÿÇýÿöp0…fÜÅ¿ÔÇcæßæWÚ¥CËʘq .@½•¶ë3nUåU2r¹³°ÏeU'žž\±JVÇÍ’ð¾Ñ¾½¼y±îVÚkä²ßQ#:1·Òý8}U¯èijÏ%~'=à²}Q]û¬÷€»·>:ÖSÒ¯5wÿ8~|l'²¾öã©z£¥%'‹³e±\IïöFîmžªV½Ò9 Fü‚K§ß¯.€Ä¹ “U¸ã|¦{ªµ¸yðž=úøíŸaS_Ú%Ý|˜í}˜®ÃñWñ`'§VÎA;»®º*Ý;½É~«éÞ³‰ûÉ[N÷~ —¹ÿ–Ó½÷]o3Ý»ŽðÂÉÛM÷Îw³,=ûÀÛõúéÞ{ÖÚÛL÷Þ?í{‹éÞùn˜ñý-§{§Lk=Fo1Ý;e3¾¿åtïùÌÿ³¥éÞi¦º¹È²Ñt'Ä“!"+…ä¸:KŸ.ÜIrÆ)_Ëå#²—$¿Ë1êЖ>¿ùËq9béNR6åÈ@ÎYX¿êçÎÛ—òlI)rwq«\ñÈ]©ÁgòÅçV„>4Ï‘#'Ûh“]$àý_R@(zö|™ãúHwÛãЋU?ì£ùûŸä;\g½ãÐCUá¥3Çg¾C‘Úr¶véâ&uÜ—vº3Ù¯ëì6ô;³‡ÏÄÙf^KgyLÊD�< +½}áñýþ1(>þ}ÿàÅ˧q·Ï=øãáã;ÿyðìÀõ†’ÿÔò½š íÿ¯ÞpühçîŽxÃÝØyÌ?9Ëà¸Û[gŸ½8ÿðÞ‹‡OßyöŸ“òÙÏ_í\»r~ãäFú›Ûø›O7Ž cõmÀñÕQ9†½ÍîÞ–gø@müüü1ýû샼äßà_•ÒÁyg• ÊXt¬®jßh_[g5>QuTÎ5�c”æHªèu°®nbm<?‰Ú8ÝX¥‚·A ¦ÿOØøùNš4?ÿ‡¿}ŸþÂgÿ·¡ê¯6~¹YoÜ?€/¯øÀÚX)Û4 uÿG'ªˆX4nB40ú²•«½¶¾Ž.F?í@:6• xvÐÞaü š*5÷û®-}ý6¶¾~òâêƒ{OžÝp?½·Uß›+_l¹óðäI|óâÎã?þypòä•Ç_<¼óÏw/ïÜvçñ‹¼Ž\yüÿÜùçáý£[×?äý÷/ž=|üÇàÏ·Ÿ<{üàÙÿyŠŸUþceLå ydjcëêƒ;ÿþô§‡÷_üù&홶½sOžØþçɽ¿ÿïá󇧫¨UÖ(›%ýÚÆÞ|ðìú«öìê“—ïã‹ù¹¨—5"ã¸zçþ×Ïg#‡®ßdÒ^ùçÇõ†Þ4B�TÞGmw}?¿Y›ú•&÷Õ^œ~“W±ªcgùÃ=eUˆzÉŸ\~ðð?ÛMüiúzçáÿóàû?ï°Åoï<»óèyÛ繿-÷¼÷·—ï<¾ÿσg_ßyô`ÉóÛçîü¿Ã‡½ÿäîȤg_à“»/_<XT7Ý÷|à7ŽÝø™Ôèö()¹6FŽ`%!]ht$¬ÜèãQ¼øÁ$®“¸¶>†P;ð‡I\ÿ7Åu¬ŒŽJƒ´…'q½æâZòøÉã §c×ÿmë@+g*§èÆ¥Z�ÊBת©è_¬!¸m,Jí¨¤ÍM”¢üë¬C&Ê?é])ÿ()Ø9^€•¹ü(Y>¦oåŸ(ÿ{#®U•©lÝç4HÚ$®×\\ï;Êßù`BmLÔÆ&d‡Òn鱂µé¾Ú~¥LÝŠq¾7;ç¬o= +ÔkdbõoUM¨FUÖ;]l–ä&þû¬Þ7r“gèÕÄ2½ú?«&vsäuÏ1?ÕÃ/Kr¸ÐÀHØ\Sqc‰ÜàMA7jY¿&‰ü.}õ:h¥–ñÐI"¯‹DÞwÄþ•9‰¯<„‡óº“jPâ]ÁGÖÑYÛP;%””é”òIM“\ú‹ Ž•Ú›xý[Õ"Æq¥5Xˆ\knÒ"ÿ=-ÂWañ&êhütà»öÞŸ’³~ŒÇÌŒä%\IJš +·:±þ7–׆=3µžNWÿ«òÚ6•|uÌä®_w½ïXÿÐûRÒoPIl]FPðöŒBM´¢ýë«F&wþ¤F^Ù_&þ£DyÉÿ_äóãÄù¨ÞMÄ"þï“ÄžÜý“ÄÞÇÄ?xWq¾‰ÀVå NoTÀ�µSÆ£+ R¤æ ¹Q )4 +Í__µ¯,¨”3u` ô¤CÖ[‡Xÿ()þÑíQr¼�+ÇÜ’åcú6Qþ½×Shþþ×®òÊyc 3w×k.®÷åg–…ÊÚ逿uª|×€u€ý5A‚¸Mù6î"¨xÑv±¹Q ‰òO”uÈDù'²+å%Å#Ç°%×lÇÈò1}›(ÿDùßqj§ëÊ7>:ã}ô“¸^sq½ï(çƒqÖjíûw¼:g*ÚÐôï] ¾+]ÝZ|öÌtwºŒ»nZbFêë89†Öýê×n~ü¡œî¹å’ºðmùšíi½¼mß<ÝÅÝ9yêµÂ.0»ëÆI ¿ÿyÿÓöR,çP-”b*Ê£¡9”ûc@SPþ”¿ÎZd¢õ“óçÕh}9&œ$/ÅhûQÒ|Lï&Ú¿7{ŠÉß{¢ý“ÀÞÇ´¿ËŽ`mµ*dPî§àñ¦®ñvŠg¬P1öf±¹Q )@g +ÐY_Ò%à±ØÒSžµ×!»eàÙMŠ÷2ëì&Ç°%‘7cdù˜¾M” +ÐyÄu›§öJ¯x“¸~ÿÅõ¾£ütÇH5”Àk±Í©¢wÚ ^×åXΨ¤ÍM”¢ük¬C&Ê?éÝ)ÿ()Ø9^€•¹ü(Y>¦oåŸ(ÿ{#®U]»¦ +ÞùÚÙ`vל“¸~ÿÅõ¾£ü&à¿ÎÅ~°gçíB?�sð])„sððQ ), +Ë_7E1ãõA×^M¾¡uÝÍ•_Õ=×|AX¾-GÜØ»ôd"ï{#“§Èü}!“[ýõ8Éä÷_&ï;ò.ÒyNæ—B:!œ¥sþi–ä;.ÀJ‘šÃ6Ç¡¦ðü)<}U µzÄqÑqgOªdÍý@%·ý(aþÑí‘â¼,‡Þé£zø¿j�,=I›bô×\j×–†îêsïIj¿ÿR{ÿ�KÃ6{ü_m WŒ.ºQÅhœÅG¦)dg½µˆp¯Ý¤CÖ]‡ìÆüw“â3>¿»/á–Ä⌑åcz÷¿Jú÷çŸ"vö•´Î¯šÝä©Ywy½ÿ8´+â6º”®4ý7Úü¯¤¿*’ùÅæF&Æ?1þõÖ!ãŸ4ÈrÆ?F†6FŠ`KˆüI>¦oÿ³|Ÿ ë‰ðïaÝ4µ‡SÑùèjµ,he×ë"®÷áÏvqŸ¥3Þ.søe)œsðøQ )H +Ò_7U1Eñ¼™ªxïBGEñôƒôw×¥¯Ëñ÷£Dö.}ù_%ðûÈc?…éï+©<EéLRyßx†SÎÉõ%qúò!£.Ó‡zIœþV +×,4:6EêO‘úë«Mj¬ eRÍŸª(®»;¨ÀñGÊs�ÇIô"°‚?Rªëãÿª°ß÷¬¿?·®Àá"¸]Œ+,²Ip¿ÿ‚{ÿšÆò¤Éør´~RÛ‡¦|è;D•s‡-ŽCMÑ;SôÎ:+’l`/›)tíÉnÀ®¢¼ãõ+„y WŽÍ'ÐGõo"ÿSÏû$³3ù׺6÷_w‘½ï¸¿ÂƒSˆ&šôni1X1Òà wº\eSŒÆ_llh"ýé_g2‘þIƒìJúGÉpIµ¹RŠQKbñÇHò1=›ØþÄößaÝ`Ç`DUˆk?Eü¬»°Þwt¿ó¿(åZÒs1ûÝa/k X§çbö_–b;‡Ï‡š¢ö§¨ýuÓ3jCã§øеÝÍŸ_’×ýðœ‚Ä.}]ŽÇ'µwëÍDã÷F0OûûC0g§=¶Œ·ÓÍÛuÌûÆ«èä~1pßhöë8ÚºaeçràþVŒÈ6:6îOûk«MöUÅÅïkÅÔ%“6Ys§P‰æ“ç�Ž“èEà’xüqR}\'3`o÷¸¿?·©‚WsMýtãjÝ÷>6‚õZ©rº¶™*ðut±±åÀýª’?hqjŠá™bxÖY‘d€ÉÊWc“"yÿÉ®Àn¢¼Ïëwæ%Ü’€üQ}Tÿ&ò?…ò¼O2;“ÿ¨õDý×]bï;ꯜÉašÁ4]·okWÕüÅ•¤,bŠ!ù‹Mœâüë¬?&Î?i]9ÿ(Ø)>D- È#ÉÇôl"ûÙo„u㚈åm7uSe”µÖûŽîÏÜ/NH5·ßùzLðÚ-Äí¾,Fäž?5ÅíOqûë¦-fÔÞâ„I[¬{xè®îü‚¼î{ç»ôõ’xüQR{·ÞL4~oó·¿?sòÙ›ÚÙÆLqûë.˜÷ÇCä~1n߆X†`j½Y·?„ò‡Ž„MqûSÜþúj¼‚ªQ1`4¾žâö×Ý)T¢ùãä9€ã$z¸$œT×ÇÉØÁ=ÅíïÁMŠ]€õ>כּàÞÇf@ЖM—ãö;Uà";VΕ<D#ò-ŽCM1<SÏz+±�t˜îí®½Ù•ÿï&Èû¬~7Q^Â-‰Æ%ÎGõo¢þS Ïû%±Å}§lÉk/³÷õW&æ0Íà•Ë×¼˜a2(&6MËw¼ bPþbs£@ëŸXÿzë‰õOd)ë%Ã#Å°%!ùc$ù˜¾M„"üï°n,\ÕÔk¥Öj +ùYwq½ïÿÌcmµžÏ¸ßù{Œ³±®Í\äþàËbLþàùãPSäþ¹¿nÚbFí]mì ºö¢»ºôòºï¡/HìÒ×K"òGIíÝz3Ñø½ÌSäþ~̲So¦R(k/˜÷cXûÅÈ}oBeø¡VA^L9r+†ä ›"÷§ÈýõÕ&Î… +Û¼ñŽõ�ºöN¡Í'Ï'Ñ‹À%ùã¤ú¸>NfÀÞî)rn/®2£•§Ã×µÜûØXÈ9gX�ÑÇräþ�UŒÉ´85ÅðL1<ë¬H²`ëô2¹8)’uQ$»Z�»‰ò>¯ßM˜—pKbòG ôQý›ÈÿÊó>ÉìDþ5Œ`&¯ÍºËì}Gþ•6+:»_7¡ +ôåÔÆû%R{�*†å/67 +4ñþ‰÷¯³™xÿ¤Cvåý£¤8`cäx¶$,Œ,Ó·‰òO”ÿ½×nTåð*°q°¸§ëºë.®÷å/Õ΢÷'¾³èýÁ—ŸüÁóÇ¡¦èý)zÝ´ÅÖófÚâ½Ö3½¿›Ä.}½$*”ÔÞ7ßÁ<EïïÁ<…íL‚y?Óxïõª Núиªá?5~¢W¦½?„Ãò‡Ž„MÑûSôþújÓÄÊcÇ«¢qÒ&kî*ÑüqòÀq½\”?Nªëãdìàž¢÷÷‡àrŽw¢üŠƒ•Ip¿ÿ‚{›hÖ‡¦Ê9gXkÊÕχ¨b\þ Åq¨)ŠgŠâYgE’-�ètX“"YsE²«°›(ïóúÝ„y ·$*”@Õ¿‰üO¡<ï“ÌÎä¿®2ÓÀºËì}GþUR¤fltmCSTµUMgNí¢ªU9�s�*æ/67 +4ñþ‰÷¯³™xÿ¤Cvåý£¤¸ä_-Ç°%aùcdù˜¾M”¢üï¸n@ݪl_Y,ø)gçºKë}Çøg>ƒ¬ósÁûÃG5.@ÆÍï¾,†åž?5ïOÁûë¦,fÜÛÁM1¢k#º«O¿ ¯û.ú‚Ä.}½$(”ÔÞ7‹ßÁ<ïïÁœ÷ TÖO·ªÖ]0¯¤ñ&x0µ `V ß|^ó×ÚÔ¡á'.Z啪u*¸ŸXßÃðjü¡ Ÿô)|-Í:nÏçh)¡_c¢²Bë}í!—ÏR~àÛ‘ÐOL嚺öÎ(=í@~ š*5÷¾}]o0âÃUËÌØÉ‘¿¾:Æx¨°è5^I£ë) Ï+ê”ý¬RÎï ×%Ä?º=JŒ`%]ht$¬Üèÿˆ°Ÿ¥õäÇßÒÚWMPÑ7µVS^…u—Ö3 ÙŸ€6ÐÖà‹`À4\QwhÀã…º6MãÊB|�*)„As£@“0�ë¬R&`R)»�£„8`cÄxVfö£Dù˜¾MÀd�¼7ÒZÕ°u«Úü㻿îÒzß�tа±t2kcÿœÒ¼B'”Ìó‡ÄƒïJ'¿ƒ‡½‡1=ûToL1=ûEo€åÇJcmK¦?©÷èäxÝüË$5ÝöËeuáÛrœÎ(y½KO&*?Eó¼O"9T`Ti¢m–Š˜I&¯‹Lþäò¥LnCMQÊ¥VÐ'…ÔlM0 +õ>gåܧŠeÊʹËÄõ__¯ìëË^oë—srŽ“åEë ˜hsœ<Õ¿ÉØ‘=åãÜ"{²&™ý?d4ÚTºÆÃJéAÍEQ ¡A“FÊ�Õ¦¦v)>�•zÍM=S`Ïúêè‘Êëè¡á!&¦äük~T\0F ñnãX9bg”(ӷɘ{Þ'im` 7¦®ë܆¹æÒzß�ÍU(ƒÏt(\÷bd¿èØ þ +²]•#ûAÅ ýÅæF&`2�ÖY¥LÀ¤Rvì#Ä#Æ°%!ûcDù˜¾MÀd�¼7ÒZÕ>˜ª©kglc›)²Í¥õ¾7�è ñü;kÀúá¢ôA¤8ï´jš~�çà»Rèâ³Ç`¦°þ)¬Ý”(¾«j¨ï´Ëë)ĺÇ.qò/‘ÓÉg¿LR¾-Çë‘ÖËû1±ø½ÈSPÿþÈl‰¬Qni×I ¯‹@þߣñ¥HСš(Åc”I!ºs¨Æ€¦ˆþ)¢µÊDó§ðÐW£ùåˆþq’¼h#õGIó1½›Ì€½ØS<ÿþØ“0 ì]Ì€søâìwûÂãû;wþóàÙæfþà܃?>–øgé?”÷ü7긡Y‘kÃñÓ»>8"è ¼ÚÇb`\X*FþjçÚ•ó`¼éonão0̳WT}p|µ¨gÎò_?ÿßœÝrUìÛ@øYè‡Æ6žÂè{h`¹(ç…%ÇOjFƒZíbã<m˜ÖÕ€ÈX420<_Záo¬"öó| 7¾ÀïmøJ9¥ P´ªëh6þoÃn|µñËÍzãþ ¯²þ—n*ņÆxk&Š«”¶öZEcj“Jˆ-¢6m]£bTãÁˆú~ÙÄ…¬]¾ÿñÒmY\âósµ Ë«Š0±ê¦®•jT¹#¾1•3u´P{Ýõ†ý€IÔ´´ ÷Òþ»õÝêî]ÿ‡¿}ŸþÂgÿ·¡ê¯`îBI‰§Ò‹µ¡8•µÅ˱-6éz_A»i¯‚ŠÌôXDH(@›X‹ÖYÔVB×´ƒ‚ÝÄ„HË@kÍó‹âªc0 +-ÖOé1˜¦ªVX=Æ bØÏ`h«ly8Û2œÝ‡œÜô⎽Üó-w§·)Œ„Yãuª&TØoøÁs\žw¥*g±Jž[{3Da´¾Š¶1N5ÎÈ„` +Ðá`bð1U£‰Öaè«Âø#FÌ΃ú<)¶²Ü_c5Q;‚B`õf¾±`ѬÈk\Ëc]^=vôç"EðùÒLé +Ëk¾9°Ý4QNC¤@å·_m† *6yϯízIJ5YÑ^€`°hÁzÂ[•y‚-Xië”eàFâµSD ›«=V2ëpÉëU…>¯úö˜ùI«ùص]\6Ïýöì—o_ùþö—g¿ýöìííkW¼°ÒüQgŸ&²qžÿ7z®L7? ¤³w:—) ÚùÑX7?±nhÙÙÀ G Ebo‚RìvBîIcíòˆË«V¥'¥wŸþ©›Rwú7jðÿìjk-«RíôÍÓÿ¢ŽyĤHHÌè…óàJf\³¾ +.F¼Û9Ò‚^Sí-G�Y%šÿÜ›iþy=Ûé×Á†Ù7Ä`Ó×M¥!3Ÿ”mQõû:@Â7z‰ÞwP¶Ð-2µmí>1°+_dÔùŽ¶³Ýå0PÔì꤮‡0ØdMˆN¹¥:å`ßÒϳa¼»ÚÙPVú +<6Ä`\Y=bÀË×ñÅÑ)èaüi¥Á°UâR±¬ô}íÀ·¸Ê¢¼Å²Ò÷µÆ +ÂzË̬Ô\$—ί¹Ðá•#ï«üº¤òA@Ðcð¡âCõé•®ðöè^M·@A!%•ï`(xÎ�š…§Ê*ˆ4‡±TX|XAÚbÚaŸW}{Ìü¼k•ß½Á®¢l‰ÎÂZ¶!ņ½=96´^¦ôÛÂO¡4Jü¡}ýt†€Ã !E½¿rö^ñÛ5Wüí:À"ð\/eÍ?DMªÿƒMüQÕieV¿…M_gÓ³¨w1Ÿ¼&°Ô¢ßD7ª¬µ‹ªßHôLSkcËÖ¾ hS;—û&¬ëQÒý+Gût;Pb,ØÅdBè¼æs/ëIŒ˜žcãÑ Êê¬òÅæ–è~Q‹ à!s„hTeÝo-z¤ð$—Ηü–•£ã';€ +^=ú¾þ Kúß‚àpž öÄP—âà +ÛÁgƒ¾dƒ!%ýöY5JAÄË”ôÿ5h΀%£|‚ »b±Ï«†¾=f~Þµþï†njÈ^–èÿ!l n»’ó›P2ÕÛÑ k·Lÿ·„’$@¾”•_¿2 ·N•:4„õÿÊØ{ýïÖ\ÿwÊ›°v&”õÿ5éÿ65oÍÌÑYPÿš~t¥:_üPùj–¾K\þ{‡¡p˜å¢iO + y Î9[ölbTU-ê©È@°è F —¹ò·Göhÿ4#dDðf‰åWÇD–g#Š%Ë_k´ƒ½`)Áê`êXc3Òš›+(”µ?t©ˆ„35^dYûëè*ˆY¯,$™„¡›µü×ØSrº0ìôÊÑ÷µÿ�]Òþû9Z¼]üýà• +\)Mè&j^!%å¯!@¤?¦*¤)()ÿ!jØœÁ¶Æ¨4V6& @XVŽ|{Ìô¼kåß ‰°L÷PMÛÎq ó&ôz7vˆü™j–©þvuÀ¾€åîJ,¢{ùN¾ŒBEÅ¿jô{¯÷ýšëýÙˆÊçSºÚ€&ÿÁ&C}v×ùŠžtëå6¿‚Æ¥zÐËìúM˜°0©SÊF½œóÓ¨\vÄïBEï^H^…‚»ßU½¢Êß}¤ï@á§IÀ{ÅÛãL,9ß÷Þ¶ƒ‰òÜÒù¾®4C7!ݱNʾ÷¦2fpºÖ&YáCb’hE¬®ÆhµDá+.V¹–SþÒÉ‚Rè’áJµ5f¨¤ðW¾¯ðè’Âç^×ÑÊ NjO¼ƒÊñ=Ö·W%ÿûRv÷ó]+Wc{2Ða™»5<áWHc‹¤ÓwÿÊ¡o™Ÿwïî—¡cícáD³LåaÃCõ<CÌÊSPÔíè£\¸ÑKÝýíÁn´%w÷ú=[³¶Ð¡!d‰»Åì½Úk®öÛu fÙ/3÷‡¨Iñ ]e’öX¦ø!õa7ËT®eˆpӺϬªÕÒ¸¾Èв.zp€ÀŸò8»N�ƒÖaßW!d:QR÷+Æ÷öÕ½L@…‡ç%¯ í£Â3-Z1mðÜ"¨ñt0X�–uA×7 –<þ¾ÖŠ)›|QÕkÆPI”—</iz=ì2h.Û^Ú²´¡B£¯~Á¿zØ=5?�´¼åŠVŸÑÐå3Äh«—"¾›¡9¥;DT¼ª]“Î×{§‘jø!h±*˜ú˜SÌ’V.vw嘷GÌË;Öî³aÓ +/x?*£Ui;9šD|1ÔÇyäØý +Cµå/ʶ]±{%оsͨ«ã°3CDI¯úžku[¯·Vo—�ïMEßË¢R‚&þ¬Šª±!½—tº¢ï–!áE¥ +[±âÊ.ûݱÍ*ñb—{î5H¶Ô2®a•F±åÊJ]ó¢– «ej}Åß¾Zϳ`œO'¶Eµ®y›EÚÔâ‚´s¼²�•!,©`Sk*ÞöfB‚¥ú˜g°(EyY‡ej茣Ô5�P…¶ äf\kÐוCî©ô¸ Ò¡*§±þUŠñ` û«€©WiºÙ™S³CDA¥k,,Fc%¼)Çè Aú`–äL©À@VŒy{ļ¼c•Þ[®#p*Š*}ˆhÑ<9XÆBÁCß<‚éF[p¼'E›EíÁB]ðã·ï<ÖK^:3D”Túʡ。×[¥·KÀ3€Éç‹‹*}šTúÆêÊ5m¬|I¥k+µÌ5Þ +%ÂÓª²ßÝÀ�ÍÚ¸¤ÏmM‹° Ë‚ù°Ÿ+»ì�4y•Â°Ô’Søƒ{ûÊ<¿nð·es–ÜĪñÊÏn<,‚°*ÌP\g•ÇÌAÁ,«“éð`O:Z.G”oÛ‹Þ4Yê£XмzÉm»ÕÃî)ô¸ Ð!Û±y·¾Ñ(ŸÓT¦À]7Dºeß]Ç+ß³‚Û²µlµš†!w+Ǽ=b^Þ±Bï† *ñäË +}ˆZÔ¡íä@€Õ ¸üP·B£æ9º×… :Q³Ý¢p Á¶)0ƒö£“X5ªÐ™!¢¤ÐW}ïz³Þ +½]lÛÌú´ºê¿±ÿv¶·ôó�Rn ¾¥©8L)Ä:Œè ni“1‹» +ⵂí }TãláB 윪¥éã/nq<œÉ…ššw›tÉ›g¡:kÁãTº2D7øÊAc{ßÝ›VFõ·óà©¡üuqA{¿Î9$ö|ãë/z7h,¬µš7¤Ji3¨½ÏßÁ¢ÓXÿ¬^‚]’¾}Àz +rÈ£´õï&}Ç,€˜aš^êR稽Ÿ$Þ×�a”åhhð;»h:‡Uè}!'Ë[™¥.Þ +ÜV—;7@íý,1®•bŒ×UA ã’Ž`׺¦qØJµñ±°òßÊ,åÓiôÃfÉB ö~–˜'Z»Ò¢ÌeÉŽƒùá )¯!”ßÑZjÝýM`BŸP^çОÏZå[CU”-Ǧ©cX×ÁÒ {G3ÔyO"oUž¡hÏgˆéšY5 h”3å‚2b«ÞÊe´¦°ßNÒ¥/f¼5ÀV(¯ðÈÞ¯!vÃ:¼Ð:¨`'gÚ…ŽÐgÐÐãŒFO廚¥E6Êyë(ý@vÉþ€ö|î ðn@_ÐÒº)¨{v#ðƦŒáZ |ó¶˜@«—<k7Óã|gy06“·'À{a$4bÖžû´ŒŽ‰ ™Ö*¤w –v-z,ÛäÑ$t}rß4„ˆ†Ž‰ˆÆZ!¼CÔÖ$í–ΘG˜§–¡>˜_ö¼°ÖÑò ŒZ4YLhMZEz®b'-tct²jg=Ì2¦uã¯"ÃYœ©…ÆJXì"J[›P ³»¥”¥9]j °æžµSzÖ Å],Š#ªý ?º±Õ&<wîì½{/]}òâ±y½ø14׳Ús´Â²Ñº0®G%T©Ç#G¿ºÅw6ú¾j óóKzô\W†Â…NÆ'ñrTLø uZ(ŸïäÏy#ÓÕé¦Ìó±ðÔq¨Bÿ#ùr»Üž)Õï>É—7•*Ýùr8ÇèW1åËäË]¶§öC¾Ü™³kpÀIùÛã(¤b2%Á·#K…”4óîi2×ç)F¸ÌR5h…ij]ëÀ;'|,3\m#¥)ÚŠB(ÍôIH¥™y×ùhÒáiìÒ;ʤc€*’Ž…t2a‰Ú]Ùâ»#N±$„™ÔÆõ¨„*’Žq£_Ýâ~%`êU�¥ÂbušÇ‰%ÒáMXɆ "Ñ´75Ñ‘‰Ž¼¯tÄ9?ºÂåDGþéȪ,éÔ¤bÖ– CÿkÅ#sÒ-™•U"/_.¡*MÿÖ„Ý©Š5Ni¯KçztŸÐhö†ùÍä& ÿž‡id@-Û2sq~î<X¸LÏY¢^!ÃM€.ä¡R#Çz¾L\¨"q™ÏƒÃÓ³’ê^Ýâ»#.˜¾JÉ‘šø÷ +ãzTB‰Ë¸Ñ¯nq¿:™Y¥ÊY&iu¡H\lˆ+yÄT¤$ƒöÆ¡&â2—÷•¸åF×웈Ë:Ïøi°ŒèUÃ|FYxWzžÀX-0†M‰ž¼�D¢ìÅ™R³ÄDäƒ óÛ +M1à0d3±Ö£Ö=,ùOHSäh3š§¥ÁµxaÀ°ö‹<e€*ò”ùÄ=<Q/jê•-¾;ž¢XVˆ=Žº©c,ŒëQ Uä)ãF¿ºÅýÊST„urQ;WÛ†§7²Pä2Áî´a*2A{ãPO™xÊûÊSb0Uà=ZEæCŸxʺóò`ŒÍ²µ†uLN5¨KÐF1LDbÜc”�KoˆM<Æî2¬þ¤ÇdœaVqo +eÇ`{gµ¡y.·@¬|¢™c,z"£Ó¥ + ŽÍ+Î<_ ¤÷üõ¼ú“ÑÌF9ËÔ2Š÷²#“J™Í�Ud6s©‰˜3ª¬ÛW¶ø=0¶jˆÚ0¶½6KŽŽ¨"³7úÕ-îWf£C5‹Æᨱ‘ÊË+xÆT¤,‹ÍM´f¢5ï)lוi`ÀÆȤUY?Z³Œß@Å=üÃ[ÝŒXQÆÃL+‘Å%SÔ+dbãðM:d +ƒHØX/ºnÂÂñù 8¯&8^Ô‰jŠ¤a�*iº~æ£ )ÃJsus;ƒËõïšò5/hëˆ2o/o¡CÓ“û5¼–ØM &@.Y3°b´SQ7.6ÑazdÞ +Í ›ú½„cA<ç™á¤6Θò�AÅFSYºýŒ…Ú6®Üq as£@ņˆýy1(F)pT`°Ø‘ˆ±RºÜ«Q˜ac£@Åá1rÚC©GÆŽ+]Þ"¨8<ìbˆ Ú:µ µ-wkhØÜ(Py€z&xçXl¢<ÀPq€Î±à6žM‹%%f67 +ThndªŒ`ݹÈ$jƒ¾TV¤V™¨ˆˆ•›úRµ$Äôýxœj‚ÇŸóa+ v`°Xh̆=¾µBÍ'Ñ\˜…1 ¦ý€DCûT„|Åê‚©…–>@ÃY° ÷µ–i¿—mˆ!F¡“†ñÊÖLÛ=ÔB¬!!™\–¹êUrÀEk5˜þ±×ÇÌõÎH^/P7r;ŠV_$FÎT¨¼«/’E™JYgO‰`£¬'¬r¹çƒm,“¤\Õ– •·a"^¢…ñbÊ�½0<æ`Z¡Aª±&Ú ZÙ›± ß%1‹Ó™“çbíê +š¯m+ïä†s`×Ì<˜ö5H꼆‰1u¬<%™Ëï‡u+7'•³ÌAajG3q'eñÅù”&\&‰Ù¬SZÒêN è/ð!0*|æÞ¨©�X)6_JÕÃÑm1u'¹<mÍDÝèàõ1#Û Â4Š’k`¶ù‰¼¯LĬäÃM Ù'½D.™šïÑ3=‰“åÄ‚„µhx¯Éð¾‹$Ç—hð"‘«ÆWBÊ©Tw(J.B¦»ÇX%Ѩ€Vöi,èw¦©a%ÝÔAÒûQÕÌÛ#Édùˆ\Fdг‡ýîr6YgñŠðªBc“òd|‘ë/f�òŒØAx¥š èeææ´”%ðj\í’_Ù§± ßyY>6gï@TëZs§Y‹M!ÂsíyЦÚ9"xgôÆÊr€´‰žn8&¼ŒÁñ¡â+Ö,‚àS‹$5txoÞS²@^“Éõû1}â�ñr d»§ÕyÀ멱g’+ÌÙÊkÍòµ¥‘W=C.å÷Mî–‡$S¬»Ý¤,†¦®±Cñ6e‰bsã…C1aÏÑW³ÁR[è¤aòÚvª)`*„Z©¤Ì�‚°…4Óµä!HzЖ–Žs SV +MÆB‡ `!›YŒS@”›¼` *¡7 +ã×U`Å æ àâü±8I ª;%yÅ\[ԋç}û‰I¥?\Ðm²lö‡9µ¥$¦®{‰xK9±x”Ùf¬åZÃW¢€•?+J�d³c²?ì2!°œBlBJòœ0&2üÉäå& CS*å3Í °Ö°ò’f¦ì2“äæ]Lr‘,“´¬ÄÑ ÄvjcÂêçVn\á]b®T¦õjטΣ‚¾ã¦ÁiÊÀbk’²´-"¾vrÑY0ó|Gƒá™£T±±¶3˜9hµ˜SDùŪóʦn¦—Z6Ê]Ô„€’jR·A Uƒ!d„g”Tk6#Ð Þ[¥ÕöFy +1z¶ ÑØ‘ì<¾ë¢`R9óbtôPZ\«·òXP|PŠJ®³H±vb5Õ(¬oŠ,|¡ÂJa-”™ä5eÌ+tjkc9Ö°o°4ÓÎ0²æ%É•Š3qFiÝ uV‚‘ׄ™À¬*.KGÌjßTéo„ÅÚÊ£SŠ`Ó‚œäxA?;9KDÿ‚È‚"×<‹t&M) ÍHU Õ‚ÀC°H¨s¡äw–f‚ u‹ÅO5ƒeDo'DàÑ!-Å�[cF¼I¹ÒœJõ_=·–ôF@® …NXgAvøZLAºtoÜw²&–ÃõI‹%Y÷žÁ¥À ÚÞ`GæI6¹ËL�f`šôzƒ½ šÑf¿P€FmçF˜_L©fFÿŒ /¦až»„ ]ß´Ú\L)àŠìÚÞÐͯڴ„ „eC®‡·Úö†¼Á¸TmA@žÙëtžŸ,˜éûPGl=ˆô=ËJváÜ—Tô>¯ä¶/†V,ý-yýaò1"¼ç»¾8&W²½9öLJˆ]hõÂ3ÍZ“R$&~Ï4T�†4$ö;ƒò¶=§.wK<¶ò'ƒ@ÿzÄY@PˆÂiAPYزøCiË6¼MŸrVg'"Ò0!@ÑÛ"P hÅœ»Ü‹þc¶zí@1CÏvôT@x,zˆ¥®ò° þ#¦³›k˜ó@ŠÓåÎ@@'¤¥'Õ03Êl«°´dl¦[3tIè‚�ÀC³ÝAŒ <˜…Ji7¦ç!ª8sgÌ,S¸|-9ÁÓ9”|èBmiAðÈ„•zb×Í9[¹` uÏRL’Ÿ=ˆíü8ò=eK^wJ3Û³'5Öm•»›éÄýkº®˜™Õ‚ +˜Ä/™vR,ZĬU¶}… +äO‚ˆPmÑô%ÉÅÆrià/it¦ŒÖ !õ:°ù‚o{¢À殂vK„ E4ÛÒµ'‘KƒJ hE{9FÅŸCFˆJ‡²I¯ˆu@¤fJ"*ºÚ°Zðštî þ<Ô<LL¼\@X,вERo°xë¯5ar"i;q±º°TÔÀÎ:«(hÙi,þì©>L·«=éF¥ZÙ‹CîäJu²› “0샕Rê2,–«OÊ£¡†[¼¯ÑðÙÆ“¡/x0uQš“ü²¼H&"×JŸÀ�¹ÅZ‰ïÉ"+:>s‡NÍÑEDå™TlÍUYÌ5TìZÙ¥± d¤cí‚ùyÉ5˳‘7Ç‚×^”Ã#©*Ó©²,}ż'A¾:éŽÄ2v + NXæ-Ë5¡’zÀ1¥™<áG¤N‡×xvZ‹†76°˜X²›…w™iGw <Úpö„ž$…Ë{º„ðζÕ�f|v‰%À¬ÂQúž†¬ÃʱŽqÌƧ³ELV3»3’Ó&í31¢¥NãL‚(앤,!4½o&#t»ªC‹ »À®íMäý$Ý-ñÄ]J‚]0¼ÿ/¸Æò(0ãFB`ØÉÀÔ-‚Þ'º^NµÙÛvHÃçÔ6w†JTó¦·‘·Ý0¥Ä°Í–D 5ÉÓš6$ªˆÌ„Pr–DnBXú9ÚÉÌx×– �oiʵ}qX’i÷‘³5‡Í=m»`ØPâ+í¨�ò}¨9V}¦ÅD@zZ4°ˆ°äŠ¦-d$'æLÊú— ÞqÄJ’Ù„þ¾qÓõÆ0+i’ØyÜ)£±7\Y‚ lp©±Œ�Ñ î§â“\õhÄ!DƒÉ½ákšŽ„ùµØnM¶HòT¥ªQÄt~é'„æáŸK3!Hg’¢Nˆ{²ä˜¬;Êln±í 7§#Í«€({f´M@ÑÎl4ÁÖÀLÎ)å™V+yËAG‚RrË�<–C«ºZ©!¤égÉ}ñÔbJTRž`Ø.,ûÁ´š¹+>§Äžõ%ûéšÜÞ†é 6Úvl["%lK‰[Ds2†»¾`³Í +ú;Íl;Ó®_aD+‚g@†ê °]±¸‚Éß{r†ˆa—„nkÓÿì„Ätí0é(ý2W¹3\0>ыЂäÁ¾‘xJ·‡jŽFØPBô%"¸&»Ãroláɿ˜A§×!ëVÁðÔ?³¡Œ¡“᧦Ȼ¡Ó$9y‹àrˆ$‚„˜j‹µ$„˜œIH·1]Ýñ$šx ³‰©ç´W[ƒO¸³ ÀCÁ¤ekgDϨ&m¤Úmêú]TgÆ@dWX‚=œ›©IØ}*&ïJ–X´˜yÖ®Íê±™ƒg€ad0ð˜Þž§Ÿ‘ Kc6âÄ*´ÉTò-¨¡UYçƒ1Úˇlm (mnjÀ·SUúVyžb@´ëv;Í´N3>)H¼7÷&¹ÚòK‚~´èúì€�ˆ.rI>)46:©tŸo£µv¯¡m- + ˜h”Z1› Dp÷Á +’g¤ž�Ý«"ý™ºI +·6ÐÀÈ +渖ºHyò´EuzÝ‚à>ËûŒÖ›8ć”çÅKT%÷rÍôTV«Øíl[Aõƒ99H²Â9W–Zrq5e¼>†Wvgi†ÊR7ÓùÆUÙ?—œ2’ô²¢ÁˆyÌ¥‚ø°šÙš-}¦é¸Ÿ%Ž•™ãÎF*W%†Ò$'šn*Ë+æLz%…¡c+•ÖK²wð$/n¼dÌéžã Ç:-ƒ o: . ®Vï3U'ȱġJ¯ l'¼‘Ðr1c ¸³\“A4ôñ(JQwÅ–r[žÑÒM"8DÌ[E‚2¶‰»l§†Èô`Mù¬ +dÐ(¡i{cÉu¿¼8‚Ò[õ+†üúN£9žÏѱÕÈô±Êè½ì„h®ä…̽!ØAIM©¹Þà` ¶Nd1#¢Kö© °Ðsº§ÍCDtûP1Õ5ËƲ€} +šçlÛF‹u…3HÓ)¬ûo +´£+õ™1@jÄÅ(�+Ïè7€³¦ +ª h§èN+A³ØdöV�ÄTŽ<¢i¥ãÑ4½É{¸“A<°ë,XaïÚ<,"è‘ÑÉûšÛ a�1¾K°hߥìGÑLÂsoð.tZš˜tÌesP²`Ò"ïa@{ ¢¤Ãànç!OvÙ<¶°]5Aˆ©(ŽÁܦxp©nmûfBÏú!O3A“ϼ"O4dcëu^-t®‘L] Cͳil—´}ñW,î®ñòj‰f ƒ`ωCÇDÄäà®R‘kÒ+»E8iV5›1RMY¬y‘À´r<×g*xzÁ²(”¤\w>‡D41]-t9Ž\Ab³úz¦F› +ª‹Å[’«åG‰¬À»Ã€£òæ#Hú¨³Á)`ÈeR)ÄðP7&J¾«y’UÏŽ™ÌÓ›DRÕü&0V²õ -]ÏX¡Ü‡•o ûrãvºÊF®žØb°AXµkOJ@#A®Ÿ;ši-<™ç +‡%Í€¬Ã@ƒa±„ÌU ‰6b€gÚóL%|,›ŽzS”iOR³‰Æbñó€]0ôä¥UC ǶhöÕ\¶º¶K?7cA«ŠëìéÍfVwgT(oV +æEÛcÂyÇ4*°¥W7öt2º28µ¥x×Õ ÝUàÔ°¾…åûHPiöF½‰ÕÍíü׫Á€ÀSyv'qVö!˜>Añ:CBB›ç‹"öLŒ¬½èZsT)ð[t2¶uÔ©x�&ÍIg +Uöý$å¤%NïXÝ¡± jÌ:TÊ2%”‹‰FÔ—KÊt³–hfZÈ!Q¯èyUwk'ó† Þd[ƒ†5ça(7²@sÅïF\Sé|Ö4¢V©u±B’OtgLŸÆ‚•+Npð]0Zlt`.‡Zå ÕÆB@Ó…µçíWturlÔ§)Ø;€�°rQW:=bÙƒ3D—é¢t‹13±¡G±e¡«;OÀê>q€t4æÈ9hÄòõtOód Ããå{ERÒ]ºå4þq<£h¡Ád!×lϹ°b Cñ¢ŸÕºP³d4gŽ³`B0›„|FµªGã 8Ö°vf±&JŽ`ðtB§#aŽÔ\ÏN|íÅLc9Zg§Ñ1U›4™ ¤$&ê6@¿£Ð+“õÌÛA+2êtøÙ!°!:ï·`‚²ì #†×i9_yQ +Èx‡Îgr5Ü nAàƒ¢ÓÖ>Æ1ö¹w ª@ÉžWÙ. G@°°ÛxƒJ;¯=w + T +Äó²%³8šŠÈQßIÃ2‚éðT'„JÞÃ4¨ëÒÌb&£m…?£éGÿF“IµÔ´ç»jÏæ˜?êì¾ÚYþÒcÝ:ÿvÍVFZAÁ0h£«5œoA ɽ˜]¬t¨eªªîÍòƒ“£¨îªgPUÃâs]õ΀Á0I+pµOe‚Ô@Ã^qÁ%3:ðÊË‚±4u-¯?PÃq³t Ñd$«MËëB€A;ugÄA{ò|fEÓä.9ÆÇxº'søw«b{¼Ža}5ãt»Rð ä6¦’Ö}zÐÊY”ûa˜Ñâßõ)æ†ÃD§t¿¸LL…7m±ëh$ÈKý;kŒ1òPL{Vgg LrðȲ.àÕïn,ˆÒ›×°4›\2WvC#eÝX<½â¤þjÍ`—!ƒÇC/€¿53’‡QÞ0þÑ&_´–hk:¦knÙlhG)ƒ‡uÇ?¬—1Ìk®é¬îÓXH¹ûÛ}§QëÓDõÄ‹–Ǿ*;~¼á9«ñuvê'uÈb*xÅ>G»x !†X¤;tmœ +«gˆ‚Ô3+ÞHÀ.r,!jfñ¤ÐÍLVÙ?'Ko<fS‰Ö$?ý¬/t‰£F¹®7 ¤m¤y2,Øir*ˆ†ì߶ïŒÔ˧qDÀ�ëE5&f“•[’F·¡~ÒaA4HaV¾í „iº#wcY—'©)˜z®²Of€€äÊ“×8Må‘£°¢Ž’�©›]“aï%7Ÿ€X·ÕóºEKm�jrÌth{ƒ¿€e€w)ßÓMšýí÷&2œ˜J"!ðN’éß!4ËG²ž{ÛvK(^Ýõ‹Ãpy?'PŠrKZ+؛ؾ¦6zöuwP¾etrÝÍéfK¬s`$AàŠL(ìy&(½¶Î¹âI–ÜÁê@ôè¥Cö„ð,£ÒytBV¬•£¸„ÀJÙw¾EÐÈ´LsÒöSÉ„&íe6- ¿t{Ô¹Ó‚˜å$ðîEhA ²ùXUMûŸ—/Ö?\“z+.¦_ï¶Þ0ÞF=n/Êc:]·'öytÝ;‚@·¶ÿx8ÉÕ´]•S·˜„`œaÃ<ñ*½&ž2~?A0k¾p”;ãyæO23oŸG€º[»,-Z©g"Ĩىž 0I¾¦D-‘øXjí±·x|@aÍ‘=´]!wcÔbŠ–Èé$3ÝŠéWK'$9ÞœD'È÷ˆ³øAð£±ym‡Ž‘¶ûˆ‘Q<…jû’Éïl»¢{P¯¦½î# †‡º÷"YD¹&Q7imÒ‘oºÈiAX°ôD´ +ÂÒ(aür+aXØ3.!˜¹71bªtK²Äs,“•{ÓNw3~nòñ¿GO =³3 ÃAÍÅíS_’p Fo…óÆ´Go¹/ø5„¶‰M�emÛ®4éΩøâ3HTµ–ƒ>A`8Ù”±-‚·# º£³’×:O+Äc1˘ÛÎPtqE‚ôãuÓ™è5uöœ×€à¥k:1Ï-‚©k]ö Á˜Z%°™$ðf Õ<â“Kp©7Üž*3eÌÈ£6Ü>÷FÍ_$Óm!Û$"Á«³÷XÓ›Aƒ3¸ô5ïÍÉð×&å®`ø0ÚËNÂæ³³STÁ H«ªk;Ûóh)ʾ6}‹*#xƒêN너}×”g.gðR_wAòœvô<\‚¡f³ZöIî9‚WÍLï«\¥ä”P¡aÆÎÙôBŸÐ‡’ì("¬J¡íÜQ]Ê·n+Þ„¦!›îhFóÖWÒ¢¹/,ЙUWÂNoòVAÄÖ ÏóKf£C6׈ ',8†Œ õdÄ@è&ÂÁÏ®› È“Ø3¬åx†QEs"šÅæ0llïü<’{¯�ŠØ3‘7œø}à<v‘j>PpÙhÛöJ·1gìÚ\-¿3@Ýô'²ØXÙ×¼†É=£“]I¯db#Çvu7ù.Q÷Žò„%d)wË£f, �oδûˆÞ«ÐÅ¥’""S° TÍízÈÞº ÃN;‰W3)¥Ý®nÅ[F¤$|FêOQŠ¸Ùºär"OË·±š”1WÎf|T9e©[ÙI¶ l{™Ž¿ÒÀïù²º3¤„°¯ä¯Ê}‰<°I{6÷eÐ’XŒb„2Ô¡m#t¼¢ƒºÌ¦ódžŸ¹Óry‰ØçM†v]|z‰iÚ^Ë[ì5(†„FÄj[g,(ùdśĚDµyžÈ@µ/Þ8ºdfCµ-WÍ™p!D¦Úåÿdð¼¬Ü¿£çe²’û¯™B¨ZŠÎpÌ»[,…Ø^ ZÙ™‘q¦ÓÑ +#?‰0¨i¿3Â0âÙ™Î× +s—÷b•Ü3gÍȾWŽÎt|@m&¼—†mê•r°-¾ Y‘cÖI9N^Dž×¼ñLUÜr$¹&µm;¬9í÷Xùé‚.¦2R„CÞŠTÙ3´± ΓâõiIS Šcü,àYƒ©ˆló9DKÂÌÔ‚Ží�sÔ)ô5ß䱌ÿ‡òo¯³öK ÇK yÏdÓÍ(¡Ø‘$¢dd€|±` ³èÒ×ä"é:Ûvn$‚5ê–ë(H +PŸâ”2&ªî‚½`˜Ò€gy½ ¡è3Ì„ áyN)3“[*»„�Ù¯»@5)ÜÊ+%ÈP,3Î9Ea'P>ˆ®™@¢rå®ZFô–‚žJ/—X"FÕÝ D``«c6÷¦ —ÒyЙ‚2„Q ù�& …u~Eøã/òqHB0¬<‘ÚŒè +‚ž3(gÛõ¤ÓÔvU ~uÝšùu‘´°€XÄ<sÄ„èô‘|ÿœ,“ô5Þ»ê[„ˆŽörcõb¥¨f¢ñç´]ÝÄ[rI DF�Î-:T`z9Þ'3Ù]ÄyÓ´±x‚¨ö xù¸ëën¡Ú$±§M¾W/ ú¤¡9fO³õ\][í=—— +®q Ÿ+5»&&?‹ ð�,³ÞKŠ¶ç@IæÁŽ6³™¡Ã³s Htj +Kˆ5Ûê>AðJJ>lHô5¸ã“sE@à`±”´!X7ØðrZ·“À,ëŸ_{ÅQ×Ô ?J¾ú1»‘3æ,€Ø¡®+¾ÜʘP7íjÈ}u3MÔ’]¦¡f7äñŽ¯€Y"$B?S,½c‰¢\çc"O;É«rtºÓ |3^†•wí�U‚I‡Åÿò›Òšw;ô,²"+òr;Y‰ê—"ïØä`…ýÍÎäó´Ì}Ä+˜C ˜EÅå‘a2°�r7êÇô˜ÝA½À“®ûöëÔÌüîër²B±›(¶_²FïX)^s±pYÅ Æ‚~/õ|,¸‰´z} +ctkTî;H®§Ž"ÍL.¼ÂT•š*ÙK2£œ¥,ö}T oèômx©ºÍRèÖP©¹1 â�£‘\D¤qm\Ã°ï‹ â�Cße$óqÄ%‹}¨ÔÜPq€ Ã-r V›†}_CÅP‚ÚöÂe†Ý*57T`)ÂS©¦’¼X-!ƒŠ….ÂrÈwb²Ü¯ž\«tÞhj%0໾=ALÂ(£« a`f4ª(Œo¨R9 +ôߊ»éW€•#%GÆ]ŽŠ÷{÷q—6MÊ’|ä æš/ —+ªè¹<à4ÿ +‰Ç RNñAs£@Sâñ)ñøûšx\ÑÑÙJ—8å_¿¼ãéƆEÛAkzwﵦDµ<Œp¬-+!ßno5ïãòzµ°‰kF9 é0Ó;ðÊwôÿÉÍä�ú\`ŽÝ1ýºoZ"ËçZ_¡VyɶÅÀ-^ ŽÅëPIb²zÍ@C†Är@þÊævÞUu†I?Ç붮0¨GP©¿£F¾º¹w6òW«‹’²¶€ÀóÖÓ*˜É«èÂ�SâƒÆF&r2‘“÷•œÛô„ËÄNÖ‡,Å”¿e&I©›&¹Ä™®Ò×ôdKiµ(µ‹à¥`aqpmþ^žÚ¤Û:ÁÅÛx6ëÏëHëE¹ñ“ÚJµyG»›ä¹ö¢xYÛð6sÖ+#I‰ÑŒ"ˆJå´ å;›PI¡š¨x¡8€tÓ¥ šW7÷ÎT³µ0EØÔhSÔ£¨ÔßQ#_ÝÜ>%%–5lÓD–Ñ6–H‰Qv%M`J|cÐØ(ÐDJ&Rò¾’WÇžpñ)yïHÉ7 O³™žáX^J»2öGKtÝôz#'ÐS¼Õ̸©äê™ Z2¾#Ε>©£;o‡Dó“¹b÷¶ÇP²zPòŸ±ÃF‰þgVX^2-×w[À”t£3 S{G¹¼¥lYÉ®jëéX×À–`OÖ^ë"¹XÄ”z;fÔ+ÛÚ§ÌÂc¼Anî0–š‰@†Ì³R×0%Ò0hlhb³x_™ÌÏ9Ñ21‹÷Y¼òaý o—‘4âÓ¨=oðJ<)X„|dfÕáéñ S£éœÐOÑÌ')šssÈ%q©wcl ã`@#«E0zÙZþ9Hãè-Ã9]ÍO˜³·fF?'é€$YÒâ‘PŸÛĘ8ÑB7ÆÖ²ÇÈM|´2Ð, +Fg{ã«)_ɽ€è¤áíA ÅÙº©Ô,\€ÑªaþY;¥g Z|gj|Ó³,&û"õ˜ta\J¨RGŽ~u‹û”Ä çše +HX˜«Ù`a-Å{ÀLnR^’MômøÅNþK¯eÑa!æYxî8T©‘‰²¼ea'^cæ.& Ÿ(˲0ÿëhö8Q–eÑïe!Óh0Jæ l˜AÎ')]5A \Ÿ¶¡6Kb˜ýŠ‰˜ý (#~äFË£D‰"qÃfa)õb&±Ä:l˜c±#¡ÌA¨"z¬QLdtX¢…W¶øî8ˆ£ºc_œØ¸•PE2nô«[ܯĽ +Iëóc,soÂj®0DyÇ Åq¨‰Lìä½e'Ž5†G¾Š‰¬;ç€Ê‘\Lÿ˜ò9K-HæqãMgã–°•¦cÂîlÅ2i ÕLê#šÑ^.*7Ö +y©#Bĉ¶L^œŸ; :3—jz4w±UYi]¢U|™»PEî‚þU’¸HJÕZ_ÖÞ«[|wÜÓÇ„x,þ£Ø~™»PEî2nô«[ܯÜÅX‡µ-©ùtô.”¹‹ q5“¢Š¬dÐâ8ÔÄ]&îòÞr—À„LW Anâ.kÏ]<kü±Æ—W ÄâF–ßÌ¥9_|"#HHÃŒ©DÍDju WöâR©YV!°FŸ•œ8ÂTh 3DÉQOû°äEÙ’üh3šª%…ÆcdDgþŽU ŠT…阡44QùÀ<Ee½²ÅwGUðrS £È¬^±0®G%T‘ªŒýê÷+UQ¬¾�P;ÞO…Y)º^M†¨" ´85Q•‰ª¼·T%fǃ%!ÛDUÖžª¼ë:R™Ì0™³ò1s ônÕFRc±Œ¦ÝHFÑf¤Ô:]b& áA!½ç§+=«?Mn“MòLŠa±X�er3@ÉMcY˜%JÝ0y[Y½¯lñúalÕ0w+ëK2gä?Ì"ªHnÆ~u‹û•Üè0—Ò¤Ìm”W«™ÆUd-‹ ŽMÌfb6ï+³aaçÊ°Ši¤@Y¦¨'fó3›eç]W”U-ñ†¨¤ìùÄJzsus;ÿõê¡MŪΠ+ RfgzŠ%±Y~²3iÈ<ÏkY†Ù™ "È2.‹t³xVªg0lnhØÜ(Ðï%œn*Ù®2@y€‹ â�µe*[–ådZäXîÖ8а¹Q ò�YW‘…F¹2ý².€Šd‘Vf VŽuD—Ìû(P¡¹Q â�É© XhÄû%+tS^ ûÂÚ.aq¹S£@ÃÖÆ`Šƒ«Á\À²ë-ø|aØóPix ¯}±[´,:狽*57 +Ä"tžË²'¬ÁÈŒþ09¢V¤»Ra̧²J“.§j†´bâi +C›.V,êGSűŸ%»¡i\€®°©üÅpÆ€XmÖ1FÈõg)á+,A¬D…^FÞè(“Àbº^±´VN¬[i)rIå"°8`>×!D‡÷¡4ANj¶[±ã‚†iÎR5,V3"²©$ý<džgö©rºr²wF‚˜ 5HVs¦Ôn¦}£i˜ž ÖëáR’bÞRtÌV]+Ïʯ ï_Yº0¿m]Ǥ¼pSkmXRIW|])±8æSÀ*:‘ÝÒ6*ß–rÐÊ>a€š%<X«ƒU7XúÂòJ^Ö…ÜÕÔ,Q"5 YçÐɆ%|“”¸f‰ÇZ,Êf=gSvÒV%ÈWPs¬Bë™Ù;l0°š˜Š,˜†Îv‹16 �¬íƒÉ `Áf†¹\šTP0(Lu®bÅ…°zh;#A˜'ÃÈ&6, $€¶†kY/Mr¹ˆÃA7²ajîXð†ÔÛn+¤ì0K +‹ªa±D¶ªyœ5kñgXx‚a}¦O±a¾ VH‰Þ°*·LÊɲ²;cA›eÙ †¹ä`&‚gm°¬GÍ*€‘5$@H˜ „UJÀãL®.»Á2á‘×ÐñgML¥>,#úå´8Ørý)Öi6-óƒƒã1f©¶¼Å2á¬ÉR�M–O+û4„:ñ³¡O:•=HéõY‹U[Ó…dfÜ÷,‘j^o0‘9ÞôU`å)Ÿî¡ãU(¬UÛ€Î4FfÁ°\ þåtš©ß‚UŠ‰Je%w ¸YêO¸ºOcA`d…•šSayUZhkÎx2sH\¹•n™‚ÑPZ´ðôsE!S¬'Ó4µHM¯K$€WûÄ0x;VfÔ¹ŠºTW'‹3Jw3ÅI©Ê„Wã%0ÛVLEŽM3 ÕKu‡»žÕ) {A°ûXñÂa7ùA¬�žvj±$¥JÕ7†ƒGS +ï¯M[)(°Cmí»œ +u:š„â“zÜ"å<”2KXäj+VŒl`lwϲ†:?‰•+Ûò1Í4úŒ_@òò,Ñè¤h›Ô$Ù`’mÖ!¬sÁuvš ,ƺé +xà¾x‰éf;ï4Øv[ª2¬íƒwé%Vèή}F@eÖ˜Xò„`R^ pm;\$VÊf±°…Oå8ëH§]Kº½«3œ ´dÚ*Ç ¤X³•å¢4Å„ôЄ©hYFð[A|M@k¦CÈM™I²TÛ›Û€µQ0yÔ k¨§²%mo°þ™´¼]Ëò¹ÎžÝHÓnùî1,Gã1™>!ÄÇߤâE `²¬oìæRŽþ0—ö)¬•BõÛØ®3Š’$³yzd`Í’^ ,hYë+÷ñXP’zL˜!5@¥<'Í0ïiy³ª†¤a¨¼›U=I¯Õ±R¥7…åïöJî Èû´æYÓ<亵‚£Ä&puIJj¸—u®éŠ÷ãsý-HF–"�á›2Ø�a&¡¸¥Ä°™°ïb#ò¥[ ÐÊXz"RÙX- IðP³¼dc:Ê@5bñ ¨áU¦}Û^•JeLCF°ÄžÓ²>QC[b:De'@ê—¬áÃ÷ï$!kd$Çz† „ïkÖ~mò$¦¬ ÷«D· ˆUn†±.<|¥¿ºÇГ«±ô›Œ —€Žóîq¶€soÀ£9Ë€å™q¬øhkúšÚÎ` c$c‹Á 1Ÿ¬È›�µËµ²Z�d†•r» ø"s‰´„€ˆa%Ä\" F¸Tu§}ŒäàÁI +Z@˜»†ÑF"ŸäÉ,X,-J[Xn5Ëe¡®EpŠ…À²HaH…–�²²/^~×ÃRD©°UEËš±n;AC›ƒå½šÂÖf9-–C•¶ Ó0/àÑØÁ]‘¯é=:©q'•·óÔp»XÊ°TpK@\s�0é_Y¾(¿d 3Îz¸¬€•Aø;Ê"ÈLiË¢i˜r©”rF°µÔKþ½Ê3!¸žxÝÍw/ +‚ª_'â”@ÕqÓssoh‰Õ©J[Ûåȼo¬ðœ…åºzÚ])^o–átiö°‚¸Š__Fpþ¤0^èzS3s-t(¤‚©R{=÷ÆÌæjà Y†w§Y,Y–µå¡iUû.YU”°ÍÕY yöSÎ`Qcämoø2bO¹”Aô΀ëØT04ëúyŠŽr…ß´ˆY±†ö±¼§˜9Iæ›5o©Á0pm£qIOw²†Õ¿t»›ö"»TÚC@Š‹Š"èÜÖkŠ²®®´E¹W³¬.iKBðÍ*©°Ø`,˜úК®p`X¾ o7aX}B-y‰ a]ÞTH]µ]Á°Y(†Š¬´� Ê2‚îKÊžF„Ø–0ÙY49#Êa/µâS_"xQ ñd5×"ºI—#Þq+„Á|a1ídňnò&k͆”–|Ñ'+òa‹qq=Ã[æ2!"tWDD·½1¬\˜ +óÙD¦#z$©UÈN¼¢¶ê1¬G—ê–:tf¥ +¿>FÏg3O®„¾XŠ°>#…|2hæ±4#‹ŒÖi×HŸ0^LÏlÅ[S‘ éÄÚi*1ûg`Ýé;ØS5+-cfµXöÐa0Ò©x=¸gò¯îÓXP²Ñ±¢èünj)òËc¤šª™IN\ÊhIï3«FfHò0pFlR²Jºeé%ŒZ¼æNÈqñ³ ¥TåÓè‹zmHÁ©`èÞÈOjȬ™âO<f Ä!pÙ8lA؆žLSxJq&õ›rjB˺E0F€G:_(ì‚"ÇIm½íÔ6Vd*É—@ت0*¤ÜvÛ(HiCUè[æ†Qä1õ¦æ±‹(2´„°míïŒ`}ùlAd„ªc&÷†5‘!€<=U1ƒ*EÙ5¹7Øä kQKýáÒ”[´-!ýñÉàn ÔÀ伂pôÑIIàÜ"K Â,ʽan9Œ=“çF›V:Li»“A®+oæ[a¬4%`à}§z®±àµe3ItuffB@¬F±›ÚÎ0»¿e¹-1]‚¸„´Ã2Kö€hvàÝ$Û$zh… ‚l‚> ÑÇ‚@¿@n©aÙ?Èg¡ö ÷*z1]sgÐ3٥ɥ„FTBž;ƒ•eYž‹»IÃRõRôûeßHF@n©³ëBÑî<j¬PÍÓÐÜVùä„¥Ú€¢ ×hñYäÞP6´±iA耸eM�¡½,Œ<w�°$-W•Î€šWª4¶ˆ†gRÿ4w&gÙãÐv$EäFÝu†Å0”Ëc3(bEZ&Ò<UFPºE@1pÓ‘S +úÞÑVQu‹`éa½»ÞŠA.ÖÉ!ª f–ÞöÆ3¬Ê*j ¼†¢ªeM�Ѻ€l÷,�ˆÍ<5ÞöI(NÔdÔ]gÀ—Òkê@,˵½Îšæí“1¹Äoú–’ ñÉ:Ë_IáÐäžÔŒT}nVÖk“Ì3‚ w@£ÔÎ 2ü<O¹'ŽÖ$„HÂBû¹HBÐ+ÁËk4ÏZJ@¨sízßv†ÎCÇ:©¾É›Éò¼¬]+ô0ï©âž´O ìØÌ\¤)KŸŠÖ,åØ!‚œ¦°w‚àêqâ€ÏëWÎ7ðÄ Uמî$•Çä¨ÚY@Tµ[Û“¶ÅLþ3˜5Òë'ãµ0*‰ÕÓhRL +¢•’1Kà†Î¼;¬ÛvÆ0€¡‘™É¯�2sKnÓu“.–(kA´ö0¨$g Û< zc!!hGÚiïkÊÌš¦ËÿÏÞ»íÊ’$WbïøçNÊï—GN Òè@ D©1õDÝÓÀ,0âÿCk™™{D¦{žŒfWŸkVƒì®½×÷ðp7[võ`v€/rgóÜ58Ó8q°›æׄŽ¡”€V©c6tÍÒHËCit‘wL6›ØíRì!‰x¿»Ý §ˆÀ|»œ.”q‹ì˜ŒÇÉF.t]@i(Æ9|2ìhñ¤¡pø™]âT÷ðóŽe¡õm/^Ã4xˆ�9ãÂÐúk¶¼ŒÀ¥@×õX€0gX*¼ßg€ #ƒFPÊ€Ó0(4¤-Aúª¾8ïqñ±Ù…²Š€ªMàÚ¹‚�þ¸@]iezñ† ¡ÕåºØ)Î^^ù ³I·Ì aàÛzùäáÆ뻳¯Ùã¯W(æ«EöM¼2Ü k©ì†Gã¯òqF‹Â÷ÀcÑ`–9FÕ0¥D_€]{n3CáI‰$3ðvyœjè!9¡ãï˜0£FgÅ[ AAøíƒ ñ¤BÓžGGÝj?Ác!ñˆ'þ-9Y$…$^۔‹·+]fGL·«zÕ)-ÞÄUZ’ˆü¤ÍDþ G§³Þ9nÏdP%8DÜ[G‚àÆ„' ˆQÜ ¢g€xoµzm6X;šk”‡c¬ÌÎB^T» xm1˜ˆÏ¢ë‰ ›ŠÍRºÎ7ÒáÌPVyKÄcœ |c6/Ä‹�ZKÌòá˶Ùà`‘Ú‰Ä@Œ•(‰[‚à× ¯r¶É„m@¯Ž"ð0[±ŠX!/n\?&C×;ÞÉÑ«g ÆΉz5¸M†f-/#'£7ÙwbXT_œÙÐqNb¯†�wêÜó:]Ï/$½„‘SÉ;m2Òð1Ói—í!‰ÔÓ¦·©dú¡½v.Û[C•Á§4”©dònz(ÄÁ£ŽNŸhWï÷©ë¾Ùžá<,ˆ2æRq€è 1:FPãWÄ¿§ñ•°üza{«¶É^ÛuÙžx.bSlº…W½‡Š(\2¨v†&‘é"€êvcK*Ã[òy¦#³± 5û6ἡêMú†CÇÑ1ý᥸ùõ‚HšŒIL‹õØ15.ô‰©Sf<¤[âž¹ +8ö2k¬ž£7bH37 }$²5Ž›ê&Œ´ÞNw=Úâ˜Âgä-ã¼æܱ‹1îÆ›X*óÃÕÊÞÙŽÞÑ»<þ„.ÑÆh]ç½ò‰FãkêþƒäV�[ø\‡ÂdGôñ“Bbs°Àà ‚šcT€§ªšBc‚ê\�Œs6Æ„ª@ +ð'ª!ûª&Für¬2ä1ã,m®2^£3}_ +sì,©QGŽ¥z¶ùSýpÃâûù®wÿ{A…)ೞçðaƒ€ÞŒŒ›zü°ë Ì„Ò²1Äð‘ì#†ÙÁ¶¢ ¾>ÃÔœ!›µfF:S »SC˲.<]zІ4äe~«Òøƒ0…©OÞêa¯‚¾ÖmÁ—2{7°]nïæ¶à]vï•Aö¥oŽ™Ø_<Ïz¹FyW¡´€v«wéK¼îÓWϳ–,Yhkœøª]qâ ”ŠYBŠv]<=ôLž>Áž{úÖ5¨†Ù݆@¦6£UÍ9 ÚÀST8�¨‹ IŠ ‰„¨&ûøeŒÁÝø«C ó1vªE¼H©0GZãq�ìØMâ늀vþ˜J&©`Íxˆa;‡2§BÝ {PÌe±Þ±3?'“%ªq�Á0áÿKãö" Áã’FEÁÄ%º1è0DbûnMyQÃõ¦ÞædÀ?:Ùq,Óµs¡—9‰}<ˆ¡D—%ÁRYh»D)Á^d…´WLán[Aà,ª¿ç˜ÌH8+m‚H ø”4gƒOcg&ŒÍïM~©?Ö›’—"PÉáOQ„?¹àám`µ�4c|q€œKj¹Ù8Ç̵®a=‚@f:,òEILIÆcÕÕWùFjÀ¯|ŒäA1«>k¤ +$¬‰W(hÔOƪŒšA”_ÑV#Ó–|z~0ù&#Ž÷òð}d.( x©Õ¦ï }>©¥¥™hÌ'ÇÞqêŽá*‘ô17V‚î| rÒø QC @èQêó}>N(]É@§¸Ä§u/¤«Ñ@Ì®M6–g –¬tŒ•™Á«#Çl`ÐxE¾‚ÉOþÅŠÌ{ⲈQFv‚7Ș XN„)!ÇVAÌçÖà¡Žäî?Ø:c¾…7¾5ƒ‰M +Q€zÈeÉÇd˜È4D—` ìš:‡æ\|c:p›0ãu™yÙFbf&†ÍÒ‚W¡„CÐP¥çe|' +Ä÷œ“I3^k /ùròWs6”JMJ;ä"%•LY®Ÿ]!@€ô÷l.{E0|ÀÏ6–†N5& +RúŽÙÀ +¡©¯JAÉÉåu¡ÍµItÇÁ’¯j<Ä45ª%NOžf‘s"˜GñÑé[#‚ …Œg‰,ƒ6W³afR$v¬ ÇcÆ™³Øót�æñ$Õb^:-ÕÆìõÜV<ŽëHó™Z/‚¶5'6Ô˜‹80 òÇ΋<¹eqÅX~ÃÁb)m-ý7#aÔ�32d�®n"pþÆþsUG˜«ã…ðÇlÁÓW¢Óq<ÁJÄöÕ8Š X‘a•+ŠÑý<™fyè¹�.6¬V:&ÃSQ,, Çjq¼Y<>5 +v^éCÂòè:}ÿÉr‡@ãRœÃö€ô›‰0Æôiæ9(hºE(“I—“IQ³#%[@Ì’ +{oHʈSÍî6“l¶Ø §H&L}BÆ\"/ïȶ«Ë?‚ä•©Dñõtss +&Œ”‰ù]‚׊ðT@A™–"09ÇÌ—Ø‚ iJmÆd<m{‡cÿº†…+bøÍÙàÌð¼3ð0@àö âúÄ\ÙÇƱa÷ÉèÆÊ°v£ç¹‰`{€ã 9Ž-ßKš©Kˆ|ÎÄRú%>j 6æÂ'³Ó&Œ^™ kÎà\©ªï]A™Š'ÒÀµ*@¡˜‘‘Lɽ\ì,/L1‰÷³‘…—Êû*ˆU],EÄFÅ7gà#‰SšYKæõ•¢§ŽI0G)Œ¿ÃŒ®HzøtîæŽP((”&²74ŠZ*¸h/ȤkÈ)ö(Ë"0ܾ$Š(jU×Ó9áÂȈŸ‰ÛºÃ*•…?;sñlÏlºÝHtFbîáU«ðãÃZ»A6¦GŒ©ˆŸP’Y¡§…ÀÈr¶zɧq6òNS7^Oé*ˆUkl€®Èæ&yYtM2N“ƒäýHTÉU|²5‘q'HÞX#'¡VË$•˜#‹œ4›LN0ÓÑKAO3ÐôBËË (øÊ!$P4Ð<BA†}Æ“èh¦‹“úÞbSv%ìöæ$#p ˜áI®D'ˆ§;iîÂ�yÆ.c“a%¼TÀ +&1˜¢IJD°º|p,ÌæÕú{|!Òüµß;ÎrÆ·1•ÂpòPA‚›P´óSuÄÊ(K©Wˆ�È£6‚€:³j)› +-_˜EB…œ¦ €›–E:}Ì…:Pòë5á’ |&|!I`“I´ŠìÔ)ˆnÿ É{:T¤úwÌáèç“w„§šh¡šêlµ£©‡%&ýÊSü(BoSÖ¹4 3†'ìãIxÔPF‚ÀvJdãÉÇxQ!dåŠ`àE,ú6žo¯I4eÎ&2nn¡<ÅP³Š_`Ì%0‹™åcùXw–J~$¿¸>®J¾rÒÏ”hÇáM„$A4© JP ]áµæóœx&Ffz˜Û˜ µ=8p÷bDc2]ü°˜^[OƒsêY€ô&JV0%ˆV†N“aêXŸiibîsîâ˜÷*ø®Ú_ +Áa’£>Λ/;Ä]÷úâŒHÒŽæ11>ø‘qd £.I3c¯MÄŒW.¢ÿ•XF^^ªvèéc)šðIãç‰E®ä~ŸhÄÈí|}Þ"O‘€|m¢)3s"$T˜©FïÅŠÉè$8iU -JFX“E[ZºÕ»4`ædVHOÞÂëÕôR¤_A?ÔÈä‚QÞa)Ï’™tš”ú¡†3óf¶L‹^+ï‡ \ÒÆXº€˜_ÊŒ<(APÓÿà™ç#ÏJ8)îPm½XvB�,1†¬—C*ÃÔ†qIœ^C×bMH6'rvšÞ{ǃŒµY!€H +)C¨,}ÇP7{®2%™åDÉîKÃ;Ôu/Œ™xn„¢¼`€<ï0•’ETÖ³@1õùÏS)¹þŠ˜Yéi +pÉ#d6’S'*¿5K;t½eë((uËÅè”i¡K!Œ"Â)EM;”õݬåLU8œxEFtÇl Q(¤¶WA# S-?±æͳ $Ù¶¢“Ò‹Ë£êXY–Sô‚@±œáµšM}LŠpl?(þ›M-MŽµæ¨øm±ï|™kCþÄà¢iF™¯ÒUùì» ³£…=™l¸Õ¹z`üþ-µÙúHµÔv_`kç#Z, ,êÚ6üªk“©4üT÷DT1S™Ç®ˆüxXc#žÅc6ŸÙl²\j<„;1T]d®•”E‰U¬XôâëS@²²¸OÜR‚pLJ(£O@’Ì…ö¼Ï ûµ«SººÛ)w(iå-$žNÉ-,ÀÇJNï(le,E+лdæe·ŒÃ E¹ž©%§Ð*W{Cm@¸PŠJÕ*Ó~í{>ð>bÆšU°óª¾ia¹›˜RµÞ˜x’hαâN†£Ë¨6]Se¶”"E|ÂðŽÑLV:¾xÖ %fܸ|<é©Tï´;U#½ýª"Jƒõ-YªXÑ(ûÅ0¨M1â[msìæþ]½kÔiYT”"fÆÅ2t, 袒²žÜ¸ÝÁ¯¿ÝUПÅLd$…×¹iÑ…OI™v™$ˆý&\ˆÑ—I†¤¶þÎErÂ^‘´/µôÀUÚŽ‘yPâÊ`˜ºí-* ÒÖvÕÁ)›BfõrJ1|;J ¶X`GÞQïrQ E0sZÊìÈ‘Ò(Ÿ +ÒÁ3í+Sake móÆ:³cC¼%†âåèê)Wûˆdf˜Ç*F†úE´`…ÍÀ0_—6 E5Šà(¬"Z ÎL$«–Sc±WV‚L§éïéìËÒµ¿äusbÍœL¿ Rk£ØMêÉaEÖ2hºiw’x=ò;½€"T8ËäÈÊl"`Ť½‹b嶺@Ó”´Úë�`^æã?+ô`ÉŒº ‚o˜2[çdèÀé2Ñ' 6åaz¾6wP–¶�øÊi€œ8shVÊX…>>DÔÎŽ&=Œù²)‹Ùp¶º!="â¼³a4ZkÓhnˆ•Ø‘°?ÇlŽ(¥" +Õ=žì²TÙ`fxM‘™¹ÅfŸ†èlÅ7ø øBMªM…8/?’œuÝ·øPe ©T—ÛXÌböŒš'Ù•ÑN +àhþóC*€î‰c¸hÌ«£ß§ŽÉà“Ñ|ú”tÇx‰¹@¥ûCv ,é,ˆ„ÅzÑ;Y9¤ ¸{-¬SÍ“-8)D“»a+0›@Ý<€cÿæïúm2†rXõ{*G‚uÎ,uF%ŠüWɶ³æG‚èΊHšM—ùÅ`~øúiL†!À#yB@••R< +}ÌÆ}ÆX…U`‰‹ñAM3Ã`Â/$³ "T©³)¬,“xÒœÍðµÛœYÒ¶Ï{oy¶±OfÝ„;+B.ÇâeF…$>o€ÑEÅ— .e¹ÆØ3R¿ßÓ´>„9“Í‘ˆckñ:‚èðólˆ”DøÒßQ-k½+ȵ@ìY5ÖÑxfY=?Žþ¼Œš:[`ö`YþP–ñ2ˆ¨@°™«¾7^3ÓÙ[æŽ 8ÏUkO©.GÙlÝ)iŽ¹°¾G.rw¶|Òbt6"„ºùÔ!¹mmzn9¦VÕböĶbö® ¸Á趨¦p`>ÒŸÁŠŽ2æÂd{I +CŒCr& +©¤AÏÈ2³?¤•Œ”é¢rñ<x‰6¨…"BT«o¨®(ËÆC8æBËFuŠ%ÖðY:õ˜´×W,ÜÂYM¼;NàL…}&4òF™‚Öz [¦‚Š©@”!÷9—ÎÀ¦´0!ìZÖ£ú<w/ó°aneÍMUXd•nS2V‘,‡“¶à-Q“cÀ‹^F¶!˜„Ý$Ø&SŽ]cÆÜA¬M†ýá Pò±e@ÚÛ7¹ Û—¢Ž¹Iê!"°7„—ê)EÚ‚Ùb‚hGmÒ˜ ÞŠõiÚyCA$®G/M‚Dg†“ºÅç'ƒÐ`l{lȾ0(‡ ˜zÂŒH–Á‚íZ¤yÀ˜ ·â½2…j|Ð燪’Ÿ‡…Ÿšçpg é0*ìÄN5]û Pï¢a”,9i2éû°Š�°¤Í꜑òÑ„�Úøf‘·¢ã½O÷€Z—>á–C$ È|SI` çÙ“Ö¡pÒ•¤`Q9;ИâÁJÖ¤E˜ÁtluŒÙtˆWËß·•±®‰#3¨3•ÓIÙ„Õn ˆM(¬ |¥Ì¥>õ¥e ©· @ÏÙÃMAâFÙb¢¹¨- +s›˜Äšª:.3壤ô´ñ½qt¡«£ÔÆ +¢QÉɳï踴æ'‚´#t¯qXEÐ4¢Êhce¸ïqÆzÐ,6a*÷2‹%YmÔüˆŽG-𗱸}ÙRpJ;ø0NA4’HºZmÛIZ–Óìí1™È»Î_ °[I€ñÔ§IóbŽ½©¼©eÆoè‘Æ2ëd˜ ™Õ5Ø +Éc³þ`Ïi +ÖƒXìÍv˜LzÖúÍóc“—nåªÝßÔw#R& Æ`éèavˇÎV‰,îSwFº|àˆ©ž¦©G)©ó¼#ÈÞ»â›v±0QLÏ—6åUÆâýô-«io,ŤC1#±xíUÈtkPäøðµ¬@aN„\“<Tma˜ÈÏ!,Ø¢ƒÂ;KYzû~â|Ffæ3à+ z¬ØkIuA™Š:‚Ù‚97õQŒçe¦ ÛA†¢€9‚w‚`Åi(t ¢r'jG C°|T +åÓ³mã,ÈÅ;a¹˜âϸ }Û–®ÁÞ4š(¯ª~úœYˆ,¾À‘:ðb¯‚þ<RUÀÂJ§ ãBú[$eÄ\ÙMS)Ùä1«+ HëQæ9²gaQPèBnŠÎ Ö²«(Kc"ÍôàGZG“˜´‚FF ÄO€c+öœ |Ô +¸`°Z/ £SD· U Kç,9¦IñR7½@�30ñn=ÏÉ0×kØ:DÖN óéðì ¨‘=ôdm x X…ÕFËŸÎô:†e½¸NIAŸ[é« ~6ÏÄkAÒ¢û8Ëñp¶¥¹3ý›liÄn°Á2…f}¤Ù#í M‘Aç²4ájL̵¤oæ°…A× +„È:ÿBüãaò7ÎV™¨ xó h“·á¶ ¶¤m’ˆÙ¸ãpBúñRy“³=Í™§mÅuúù@<˜Ø;ì Ó)‘öŸå(3WcÖÒ[vö«MwôçÍÜ) šú!<]Tºƒ¦µ€vs—ÆÁŒÚ563)i»TA›á®€¶/Ȧ‰YáÚ†bû~˜í뉴é̳«õ:Ø%Ð:ÚÌöå˜R0|´Û7;ö¯ÕoÝKÛíT¸ŸÍÐãP¯�ÛŠ‘d;Û*€yÅýK=‚¶/$ã=ÎNÓû)]톻ھà¦~Súr‚™ÂLÚç• ¶`‘+‘×ý¡Q» u.„µ.ÓŽƸŠ,ç•.£³gÊ毀65“—@_«°òR)߶/…¼XXy© ïËV&]”'Wi´ÀRÐ$Û»ÆÂÝÍ_.îï[P»kÄ–/Þw½ïûaïƒ)|˜ö¾jìç»jìá†1Æâ »@ÿ+ß™SɾÂt¶Ð!)·FÞòRé~÷ïØK£çêùÒTÖ²k ïÑMA°g_ ?J5ÆŠäífyN'ž/|R=~7²¿|+ª/Úd»Ð“T¤bxm°€vš‹Åz†ƒs’ÐîèþåpŸ¾Ô ¡…[äT*[jåÍKý¶íæ{éÍ_÷ÅÞü/» 5ðN!¶g¡{-švÅçüš0, õX†»zó“7?ùaùILý$_Þåç!(¼„MŠ4^`ƒC¶Ÿq…y …>¶µ–;Õ“Û!3K�„@´¥ÙÌ}ûÿyžR¯„`u»xqX¹‹q§\ƒ ’x'å¾,úÐ{Ú¥!Cõݱw¢Ÿªå"/‰ìä(fLí[3- NÍKê‚$Áê ;«v~=ÜÓΉ=»8väýX;^²€vó½ô毇ûFy 6«ªÙÛ”¹ŽmËK¢O¯‰ÂÚQŽe¸K 7/yó’–—d×Nò¥¼yÉÇKž9K¾)¹³VGó6|I7íÝ£=ÖYU Ž´Rà;ó2±GovñáÁIEG-ÚSX$‘q´Çßþ‘5lýæ,Uƒ¨¼Š¡õ3÷ƒWvŽ=rNçþË‹wû´t"ü]9—V_¿hæ®ôzÃRz»¯VB†Õ—ÛhE«_ ÊÆi^GÀUà/zãí¥Ùã÷Qº&ÖöÊJÅÇw Ö/›KQ$ÙŸE–<ýúD枆ã“-cãÈõKzqó8Û×/Ùü'ãà8¸È¦¡%Me”X3v`wYÄÕu³>Æ&ef–5ÜòËï±¥kàÍ…¼7D;=U^›˜ý6ʈAŸv Ç‘*ËÝq£^¬³›ëËWþåʺ\DNõÿÿþ/ÿü¿þÓ?ÿoÿÿø÷ÿüËÿõüáE6ìŸ0ì)Ú(2‰2ø?ò¿Æ›³¥ÉWµåé¬Óû™w([ìì,°±>™Éµ1œÖ');Ö‡Iúlž½ þ(Ô×6EfSv{\d«˜Œ¼NfE<¼Ô/½ú¿~6zý+Œð¦ÏuZ_O/|E;ul6ÌtâsÅ™JêÙT®i!ã +:Õ¡úª5gÿáÙW©—,§'VÒr\¦&?;Š^ôÂ``ÕŒD°8 ñªÅÌ’ ý w_ãN0’…€eêÞÎÊ +Æ%Nm~ÙWíÊO¾öd÷k~–êhçÛÕÑ°€vFòýW~kn¿î‹™ÛØŸ7–0ðŒ2CwëhX@Û~ËWÞüõpߨ£¡–|;[Â;?ŽÄÊeº…'¢o ÿ´s!<Žvóö2¼½?¬—¡I/®)\Þ^†ÙË l¤ÊM-,Ü‹¬‰¤Ò—â÷.W•×4õÂKã5ÍÈUl„yݦ^I~r¢ŽN0afQð|ÎÌÕdŠtb#¦ +¼ü‡lÂø—{Ñ:o¯gO_öXgÙjq¬˜GŠ÷Æ+D]ÚGw1Z®l\3K:úÆŽø#Û}¤;:ž—v6ÇæS|f›$Ø„^Ú-nf² Vcãå;ÿëg´ù_bî©z>¹±‡â›÷-ç^AkÎí°?þBÞÍRØ"½ù#É°pj¶7Kr¹{Ðû$‚cûhÚR,²×+6Nûše]W~ò™}…'WºF¸÷Øí_®’Úðä´ãx÷_†õÝ;¶ør¸/Æ»/¼1²Cï,Úòä´›ï¥7=Ü7Ê“{H7Þ¯Ì{|î{¢\»{I]1; +¼v ô&Êo¢üÃå5~H—7Oþ‘yòÓ¡o”;_aI:„³53 ”-ÁxÄìtcæ]‡Ä°3ŠOû¬—Wc}1›Á£Ym][©ìÉÅ#f7Û+oýr¬o”YW^x׸5j|{³€v´aîèÍ-ÞÜâ‡åŒ¶Ÿ¥Ë›\ühäâ/®‘bŒ–·yÈUžê–à-N¼“ŽMQs•ÅÍÕ¸wn †ôúýý wAvéîÒž…7,òìYؼ¤†¤$AÇê=oP>m†äyì·Á|›œôžÒÇJ¼8Lòã4.ò–Xm!\y¥vk>z1`CcG+W«$Ïl`5Œ?“‹ª¥Š·†~óG!/`É?<íÓöiË _L›,…=Œ1ËÂîÕ~ÛÂvs¾ºýFù¦ØØ“„‚=`ú‡oÈN‹±€–}cr›ß|²ßä0ï=ÔEyxò5Ôv”7{ùkØK¨Lré´ª2oèx³—¯Å^x‰üßØ8ŠiZoöò“³’Žî¥K=ûåÉEBWúýälvf0QXÎÓ4^ÁþvŽW²I<ËûT+›‰²WYÓìªu˜¥pÜ=Þ~•Ž”H÷ >_“Vòõ Ya[:yãõj•´#ÜeüzÐ/GG2íuÉ +ΑÝqžÐ‘¶¥#Wà ß*—gor’„RlOèH‘$öW¬a…m)È2æ5Ô›¨¼‰ÊKTr.—=^o¢ò•o°ªl°xÛbQ’</’ûÉZÌOˆK?gbý<qIQÒ»Á7x¤¸YhU¹)¡³«8ÿžIÖäC,@H{“Ë]˜H˜ÍÉ©r=ô1UÞìÅ+U$Ý»<¡1+lKc0ÛWA5»œÊ%~aÐ/Gc°„7ÞµØc_ì Ya[sq.úÒ˜˜2öxcðÀk֞ИTÛN±Â¶eóêMcÞ4æÇ¥1ø—?Å›Æü4¦ðBhpPÍL„ßÂ=9àÅK–É8Hos¼X‡%šâhÁÿfêKé!iá]<ä6M.þ8UŸñ* –L>R¥GÌeÖ™æŸo¶ÇÞß³–¶e-!G^¶Þjç:%?ÓÙ¯ýr¬øÆËu°»ã {ֲ¶¬åâ +\ô[e-¾Áæap9ËÍ?OXKî…Xa[>²Œy õf-oÖòã²–V#/žãÛåþoÖò³³¹N®–ÞXäîX΀oiŠž©&’Ûš$™$zJ’²š²ô1xý“¯É‘IÜ%ñÖ(=æçf^™Çktz’Ÿ‡1³;CІ +éˆàBArz¾VÊ¿þÉežãsºE'ñ:²ô„笰-ÏééVˆbÍZoñYˆå _Ð;“ns õd.>2°-Ϲ¸ýVyN¨w×<¡9,å{Í9VØ–À<y ô&9o’óÃ’ìèp‹ÆmcUÀ»šþ'$9ÏØ@-×&ó2TfºxÞžÍûÏ°YºúNš…W<‚”®á¨ºäÖ6÷èÖ©"²Ä»¬Y—éØ>ô=…XQ;·\´UŸFü´tÚûÒ$°ßزM/}†Ð$Éé²Æ¼¢ñVÊcYoWIr1Ô§*$PÇÚo'oÎnE^F¼†Úx õçí Îã;DêæVö¯¹ ¶¯É6ƒÒ +ùüÖk;µk¨Ýˆ×PÛ׌YËÙ±g–K)ì_sAm_3ůd/Ž’]後x µñjûš‰)—%øô©¥ödÓ.¨ík‚·%æë1$Û²ÝE½Œx µñjûš¹Þ J†xd½~Ú¿æ‚Ú¾&8mKøI¤âe?µk¨Ýˆ×PxÍv뽎«èI$?œ:Ñ/œm¾êkbHc¿VäÊð%ó–f˜ ¼À½é5”ùÆ˳!˜] ìu/ÜíÒ[„,Ä?YŒK¨êorz‡!ÛFgÐ[åÍ·Ø ©³Ø 6Ûo¯–jýÜ1Ù¡ E`x;Šðèx+(QP²= +–ÝG`Öû.óf_ϥݤ"×ÅÜxYݯ—–ýÓU/I¬·Ð¡™ñya-vØŠs‡5xï|í*z<"sJ˜[×6Ù`\rq!G[-ŸÙŠ¯èÌyå*–✽¸‘×jƒ+TÞreð±zÎŒƒ@Ø0¯gt…¼~?ò‰k;lœÁà¥J=Ë6 ¼_ܱäÙîšå®gÏS^C±h×óð‚ñ<w3_ ð:Ç–HZŠ5U g/•Ân‹…OŸyÍ»çÕ?z‚[—`û±¬ô.(è¶IäÝÎØÌ7Zì¡`}p qB³b‹®c_ýzé?]Ea½¨î°½÷Öùcf÷DåÀÀ T ¬W—óÃ.í]ü1G¦!˜"½M|ZäÕÞìKã´{¬,jÇ’@9„”ìrïÈûŸñÞ¾e>«ÉÌjã…þVP¯§u…·L2mˆ*™k¢0/¼K/"l†ð&l‰tÒ»Fd*`x‘h%-fBS¾Û;0xw>ZÁ£Tañ’àx÷°ç*=Éz™½ˆ?]š×e^3‹ó®0wr-“ñâ›4ìEð6 +eϼ»tÞXÜ‹j6P»Ø:ØNH+:µvk…¾HÆÏœŸÔo<É•M|±æVa~Ãy?hIÏlE{,f•¯ya^—Q|M|'葺ñå"6#Tö£yÙrâ mçv[LNèïyÅlj¢çÔÍÓ›¸³+õÆrN°C;¿>$DP bÝnsاY;$¹“nãú(<ˆ"8ÅtÿS½24]‚x?¸bùæX‚:Û•* +sÂŽkxÑõ±°–ä|éáú +€ä˜Ùxßvëvkµ ¨¡‰ –ôâZùŠÛÃuþ;M@Úoo§8O² xµÄ-üñ(l%,¥¶«n‚¢àÀ‡ååæøŠk8êøNM;‚Œ,Ú+¤ccåÄ ‚8¨Cº÷&×ApÆþTdØ&MÜ ÅW†$IDiSq(G…Pµä{Þ�V³Þd$Ë€½7B~ѱxJðª]´ ¢oœú°56]°—c¦Av¼GF€ 0·®ê5DšÕBß@vd™4J!^܉ lBXÃJŒ·‹ŠÂ=:²$(¬á¡ÌåžíLhTÈ#Ž\]¬Þà�ý›-‘ÃÚgæU̗DZú;Š 7f„ã�û™É§c¬(w†!õ«cG®…ƒCkÛíÂ)¿ŒRÙ(=ø%°Ñø __/Wò“õVð(¸Â\RPžÂÛ§ —Ù³µcªz`Ô³�Í z’Nòl'Fú]áÿGè>6¼fö 4dµÎ$7ꪟ»ú[•i‡Ôï9÷˜GÎ'Ë\qÜڔƔQNo-P”+ä~êVAÁ$m‚ï ÅÏÌÆøÔÓÁ¿´>žB¨œSñC$I½j{à“X ¿Å†Èrµ#”±öí×±J—šülÌ[PÁv»Á@I@G ‰t&á(‚J8'ž\L!°ó°IÝñÈr¼x¤á6f)jË›¡Øä&AüœfTyÛ�ö²mQAæ;Û Ä‘åÑŠ) +¸†Å{ƒâÙùc�…°z +‰ J6#ðñ•J4Tó8 ŒBVAqÈEnÌÖyˆcŠZ*V À!îøuM6e(µŽ3+·Jˆ?v÷˜Od¹B> +ËÞ`;2°#lët^mN/‚WˆE%¶ïÝ+¡ˆç=ªFh‚½À+N3r”»à\D›Q&Ó1¥¨Šm&â‚ri*(C5úà`gû ©³U�goöjoÏ'åAƒH3Uì_ÀU´ á‰x«t +cp•Òi‰ð/8‹tx{9ìp°¥Óaϱ—A™'Vz·±å�=x:B†ÆVµ3f„Ó—UgCARÔr]ÆŒ°õr²KOå3øÁBFä÷¼‘¶Æ&GH~ïé׶;!”oŸC6N¤Õxöf=Û£R9{¸Ã$�XÖÆ'¹Pè’†ºÄ¢ˆ«cÎ9K9Ä‘Ætâa¥ +UQ¥æ£ Øk“±mºl³° H¿ +!ž®ð6X 0çp„äœÊ¯qp!Î;ŽïXú·ñÄbwu(J®l8x ¸ŸñwÇwxW¢`D6éûi³°Ã·sJ7‚E3ÛU?L¤ÌЦ^Ï¢žrOI®3jŒÈ1à©d_Q(êÑÑak±’qØGDA²‚ÊB4j +2§ÜfÄØ*;šVjB êç}( +Á#°nX'îT›Î£Ã: ¾ATëm˜BÈc–ؤôÌ„”ø�ÞCÔâ½ÿë%v`–¤LÔ“À‚mÌÂ,h®#Ò’ì¬väÎrª“<;€öýá"‚yp–WI–D8”#Ì5‡%/æ-ãÔ Ò+‰÷ w÷ëy]F©[ ÓíxåM ¿…·³Ue"7éݦþ3aÉ&0xiéAõ˜Gz¸¯L¡È^G›`ðæXorÕz…žŽ(Ax’TlC[2<‡Ïó°û‹î—ÈçBJˆF(G·o7†£(^ܺ¸d¢wÉYVD Ó;§Ha¯¯¦�X±µn»”ÇVzÆj¦Eï$öíôÄ* +o?®H2T"L@ øIBL~§ü£CAƒ„±Ù뀀‘@>Ð5Vb…¹[…ó †©QìX47f~ ® ©ÃBj%öl0[Fc« +WH–˜žÓC£õ.ÚTgÄ~z¡Û½C‚‚„ÇÆá½CÇ&Á®ÄáÀ‘Ó³ (°OïU¸*ÄK@OųBóÇç2V¼ÐaÇ‘©oª¹õlBù¸&ª) +òëÁÐæÜCÌOh/WÅ•5X@ä5ö^_ÇL5äl‘‰f)¤ÐsVÜPÞDq¹ YªQO]¥t·ÆqBˆb—Æ(Öž½?½±ÐWQ6›@pf!z¢r +Áç[…)|PwÞŒ•ê$1ÛÑ®ÛF_áäRDñ&T,|V‰¢ kÅD÷ž26€Bƒ™Yi«@B£Fµ¼B(´éŽŠ®€µ÷Y9 2>ˆ²%ñ� +rëÌ•ñ¥Ã$G£¸lž2¥sP|z[ª–¨¤ÔXö¹zø Òx§WwM¨ÐXô¢Èly](άOÇIÃ6èðœ**B¨‚rŽáðÁ°q2oËJÂ<&#eÊV@m„=Ö“S0fäâÉho¢òÆ]njƶöa(˜slë9fÄ~Ijþ)$ÒþWc_!Ž¶Î!qtصãìc5 x»ˆQ«ÈMT8Ÿ"ÖlFÜDEIJ(°dÚS” +Ásª8_¼A@_<™¿¾BÎá…`o'ÍH¸·S李2N&Ð5S$ÃÁ˜•¡pªéâÍ,¼h%eõ¹$²SG™‹2ž6AU¾¤lzgB}Ì(*Ë cÖ̯�S?¯=w§ö +•)¶´òrn•59[‘¡EÀÿ'†@À¹0Å»£™öa:CqßáŸT,,MßÔÏãÇpt´wvæ¤ø‚ýÃœÆhûç+}’úX±Pi&'‚ 2ž¤f™-5…'þ´Žp” ˜æ{¥ =›¾Ö(`ƒrøñjžîÞæI;t• #RÓ<)µÍH€ã‹Á8Ãç:0ˆ€™ä%H`b–}ðÏt4e…½äzžv¶@ ·HoÄt$C˜C¾'3| )\±dOÑÙ�µëåŽÀ0P^¢Þ#¿"JH«í`ßf@w6«}}ðZ¤A!¼Tkz=ÁZ&ˆWËÖ‡¤°Æc3ÂðŽ3%8¬æ®N·Ì‰]-a¢Üè‘%IS z‡þz‰Îè ”sù½Ù×a»“‹ˆÑ®�ZA#BZ¸À¦¸ž‘\?3ð³N uðòÐÀú!£tÒ]Ä×ZÙqÞ<¢!2ÌAQT¹é³ð%ð ÔjâzÞÀMZ‹ÐPܨã@ +šï:,YiúÁgŒ¸•$7x’ A±'#ÞÁN9QЀ¼{Bd®@°ž^µÉŽÁÜ`<‰{ûK ÌŸéÆ€~ѱè)î^£Š‚¤Æ±ìyxB¾WOT£·¢¨îeG™jléÈì-.!±Ñ™Ì=!|MìMu”ÚŒ¢çÕæY\†b€ÔÝÏJâlø¼å¸¸f;ϳ[¶n‚ ±Ã¿)0]^¦ç%Š,šÄ(“¶Ñ´ÅTŠ(º˜NPP¥Ï»TDw�âåÙÁì ‰M8²wŠRÃÔ¥,…ê.“À#äöà§þ!À oîÍO†‚Â=ìfA±6`¼!ì²ÔOìÂÍ8z/ºèÃ,eÂ4¯R¶i3‚e‘ëÔïaûáÉzvmB¶óO �)Œ—“YÂÓQ5\á'ͦ#„^1œR²‰ ÊÂp\Ú|Ø4ç…î]?P)å¡M4ÏöWÅxI ™Ÿ~òRé×K²kæx8¹&£ÍŸ`í]†úÇs<ãdw2“ÎXÄa<r¥</ñÃÚsˆJ X3C¦ÉÅ_Ò�ÂñH<„öé…<¦»ñVOZÙ–â^wŒ`˜s#l}j_@çf‹]Ä’ÄĉÞiò\ + +{•ÿWP¼¿ˆ ¢ƒ%AF“¼„à—XÔÜÁæVˆhyù•£È<¼TO—TµL¯ë…bÎ¥5SsQi÷zyý}š§Ã¾«´KÓLÍüw£‚Ä¢RûtÉ7ì_ úN±;ë-‘F0>l|gAIÓciÚŒ@V"‹ãZX[S§"[Ìh¦ŒìæŸÀÔ q1¬èjÔ$¢Ð3÷¬“®»mû^XÐ˨W×ÿ¾÷7_K‰ÞávIÑýRZô¥q÷´æw]q¹0$ðcûOR‡B¹åyÛ,óô¶U^+j·~׾ƅ?}õ$u˜;àº9@/MS‘¬I²"A¤›ºÆÙÀŸ¾¢$Ž‡»@ï´ÌÛiðÂ<¼AÑ©aMã—j¦oï³0ß“èzˆ &¹4\+Ÿ.Íê2ŠÊÕU^É2 ƒBŽCIÕ“rucgwËÃôÇéd93)BƒÑg8¬$×䪷‡÷ V3ø¥�Å‚è’Á5|µŸ.Íë2ŠIÍ Â4q÷ŒtEy‡¸8È-Û·'fÀV³ÌjDàxø:¤ÆH}ì•I“3>ÐÈŸAíÂà›25&µSRÌ)ì[ƒ~¸.Ìë2Š¯éx¡œ;ÜÅU¬ëÀÅØ/ d¢#ïÇKÌAoDðÒÂÃZ»M–úŒÖqq@òxƒÎÐlÛ¢3)ŒÃÒKÂ-s¢0+úˆ³½œÕE³¶)Ï\TÆãÈQÍ,xó)3Ðf8›Ip…9Hq–Š¢_Š^VUQL¦pª–&ß„˜Å99XÁö`ö¢E:‚9Ÿ|ô‚Âv07 V¢÷È6ª ÀóÔ4²D3"è]&£ì?ð}zâìA4µ:“)Hp÷#Ç Æo;R›y02,…í4CŸxMÝW2V¶ÍSã[|0eóG¬iàxl®QÞÎ ‹˜Q$¯ö«‡ñÙ;x¾ZÃRB@ƒž7ì1 +À¨ ‚J3ãÀügŸžo‚Ò§ò3¨ÓVÑ=U#óUÀИˆ£¹Pµxê5èä~{’2B÷QËDHÖÒH%àza¦DÕ@L8ž©‚Žñ)Màr…U¡*«µÎdÈ^éM ÖWéŠÓ…’*57fMBX+„FrÓ>”äZÞÁ´ƒâíZræ:K-Þ”ò!¬°ÿð…@ǾŠ !`C¶Ñ…ÕºŒÂâ,"‹' ÿéwÖ<<êZÊO*³«€5dêl÷oÔ_ˆ*r»FnÓ€MÌäpŒIž›l(| ~ÿ‘ª·ÛÓ¾ãeå<KI¾‚ŸG¾p”Ô‚Â(r–3YY'B_Dð–$”úWÉf¼i¨öÕ$ê&’ºscø¸Nk¾Iž7£V‰ùÏ´ôH—¬>ê¼.£øš*íN4zò@³FŠÕ‹E˜›jié’¡ŸEoŒÀƒjPß">T+–í“™ˆýBaˆEAAöVI%PTä÷r‰°B¨xGVB«!š”v(KëRÝ„ +¡·˜n¦ ‘ AÑÝU$éeŒ…E%?ÀŽªsFj#ßP`®‘u&ë +¤Ó¤Hã +$EBÀÑNI +áÖð30-(è(Pµ¬‘AÃÎܳOe¥GR…APsYÊ…hú+¢ÃN +¡³·Õ¹ŠÐÿ$1–š¦zÉ$d6–(0;ŸMMÔßHSéFŠ£vOPÝRÐk¨ÎH”~ZÐuk®ƒ$*RÌ<Cઋa"Ç&KÏcB"�ZÀb‚b6WÅ +endstream endobj 82 0 obj <</Length 65536>>stream +ǶӮ(MT=§¨Æ¼¿ùÍFbùü}=ÕgÊï™éíΟ÷:¦XêÈ%% +jƒYÁY9Q>“ë(Þ> åpUäN%1<RxÃ’·‚+TæHh8Q!tOgI\ÆyA“¦–uÉšgã±2 +³Û:#·ŸJ®Îc¥‹ «¡Ï@±@ú,°’±C|U|ìµ?3í1!vÀ™k„3NáÞ4R*(PŸ*LõødPï)¿›í0’0'„?p¤Ìaº×¸ a€_؈„@d;[Õ—M¨0BbYC1þšÔ'Aañ³'¦˜Éå™}¸3%Y!…9ÓZ AH}oåWL~Ž¬‘•±lFd‚LôÔ$C1AIçm3ªþàn‚üểà‡�ófgΆ@ØZƶ¯“åŽS–)¥xqXÔ˜´ ŒSº0³AŒDZg¸ùôa‹§û—êL·,6ë_,—VÔ=à—"d™È:„؆¢pÉRWmBa‡0øš §]·7³ lô±@ÌGˆ#8F�/3g±Ñ!…Š\ Ò™Ý óé”J=§CÀÚ/#€hó¼Ó1‡ê,AéEc6ìŸÙ^•wŽQuæ9ÊRïdÆ’íD aRØ æªªWÝH£ù¤o>æC 4s¬ÅÌ8†c9™ «Úr(Åxæ¡xt²«#´ È]äÍ჉Å9Td’X“ÚD+¿ðV-j¼¹SAƒÍÇß—öåé°6ù!Gqþ¾1ûO«›å÷,ÚºAž¢Õ¦ƒÅWë±<—ÚŸ¢Â‚âí¢²ÇæpÙÓ©©µ-)çRÖâz¥¤ig7™@¨ŠÂQ„Ð%8sò· ¨cí<ca#€ø~âÝ1Õ:j°S µ³ý´Î=°°OM5"Lɲ¾€m ¦Å_6›ÄpN +V£¨Lß•ê^›höÐuUØ_Êm´6¼c¡;Õ° + ‘¥ÐŒ8ûè9ŽL¬äGµ”�fö3f4òl$Åܪ;IîYñÉÈîüÐ{ýô1DÃdlRiF�ãô~æðe¤Ð’fúãœOeí‹T{1Ï"<ækøƒ+Fn|c½P0LJÊ3B]dkmðV°ñ6÷|·Š®ñÉÀ¦S‡:ϲM¨3Ûh&lŠÂÓ9)1‘:sþ Št¶4Kª$‚¾-bfQò‹ÚK|xyš›§›ÙÃE5Pb) +N§Ÿ»•‰™¼ +}Zvm›Ç‹ †ëÉ Y6´j •cʙɣÜÌ‚ €Áá#öE”"ö‡¹Ïl>tê7=Ð6Ÿ»\ÎÇ3ÛÛ1óÓR”€bz‹þÔøê,^çöèñ0˜dØfºÜ¯âjdß…>¦.µÑ’“�ÑÍmî‚Au¥ncfB«ì“|?)鹘‹nc¦QÛËþ¯7)DÅçìÙfÕî;×PfÞcM[-›A%cÖ›ûi§QÓ…Œìù3ºŒ÷?½Á=ÉÝé #2 +QÚQ*oÍýÏÏÌP+Ÿ—Æ ±îÎWH÷¿(Ÿ<èJ¡;!‘)jÿŽ*tJ¶*‘6n1ÿ&ÃáŽuëØ}m°¬’À;ø6#9T"N’ +3]¥º:3´ „¡ä±�ÁË÷»Œâr1ŠqsðV‹U8(‡„„‚x–-ù%H; V½à»–Y|ÁãjÎjªÂöØØÔuèLEeæ:ÙyVT¦|UÞnœÒ¼B`#DÓx”ß7ÆëÒð‡nÑ0Œ¢(S¡ °5Ý+Õüì› (è+Èlg‹ÒÖtK…4I©“%2«™L$ +š:„#KRP—»«ä4Ä*ë“F‘º¢,”$ÄUP’BµŒÐ §Üo…Ð_Ìä– Òð£²O!1±žmB#w,Ø«?62>Ĉ +¿fUSŸÿG#otÎKèŒ#ä”l©LÿíT™‚šz~ èͧ³&jåÌâpÕà +â+(ßTÄT`òëÄ&Cfôèï±)Š°ZÛE—~–¡ê”8¦(¦±™_ĭÕ-iT½ +ª{®ªW LVÑœ'{+|à£À_ °K{™Š)¼Ñš‘XÆŒò¬¶7‡Ä™ë<_žþóÚÂñ,öyÁŸ¤c¸QI•Çãfáéý$Vß34"ÎB:}ü!ß°–NnAIÖ˜£ŸèX#ºd§'KPÙ±7¼æ *²/ ©z¤+„½d²%: ¤Ü“Aá;û."¹ŠÌ„DÑš(Šˆ‘ÝŠiÍ¡Šê5HòbS ŠAF®ˆŸš*3›Mz1kÝÍ b‚qÑŒxAѦc(Zv¾÷l +Ò¢‰ª.’øȈ»ÌçW>‡!YO~fIÿ…½g¥:a(æÅ:–PÒП-65GêèEn…c4Ë‚b©—¼³L@ó^C@VO;’¹••'ØÌnPˆÚwFÛDF…̬©Búƒ>èꔵdûtÒ9Zðs¢@akµ±úÎY¿‡Í†¸†ŠÖE¶ + +‡üyÉ(.£þ¼{?jI`hôo»©-¨í€%öÿªzì“%»ˆÚx µ}M6°qžÞåsjÎã,¨ík&éÁÁ|Á8›ÅlF¼†Úx µ}͘¤M•ôÆ ë,¨íkÆv«L$¦ñe.µÍ€—@»ñ.¡¶/$ ‡õ1]yðö%Ôö%C§Ç�rùœ5´Žx µñjûš»\Xü/& ÷£´¶a–!™~`æ.Œ£B!F©x±óSh<.Æ5oW‰ìÊãL“ؼæ%Ô.ñôêk¥§^K†Üáöé¤WÓS¯¥D~ùôÔ¤ó¤>HÊ Æ3jÃO:Þ‡»öó´.·ïØ®™ý2ä%лãý»ãýÛñÞÓÍ:¤L{7¼ÿùÞ?ô¹gÍ:„@—2K +}k¼H$:õú˜Ä%wÿîxr{~¥2¬oöR¢£»Ñ*ØÓcʘÁƪ ìÖCN'ž/#’‚7òõK”}‘nkt¦³:»íëIVÔN½b¹˜›Î„¶ºmOª^øéK]PZ�ueÊ+óî½~Û¡v3¾ööFüboÿ—]Ïȵc£æ†”'w'C›] jÇB–/ÞTåMU~\ªS? ™7Wùy¸ÊEñ,ÉÍI’˜“\æ'é%æØ$Aîûkrb`©µp‰¶ïÝ—4úÏS–šz ÌO=õÂaKed<)³8ÉO~Çdã¬+ìì]]¥¥q,~j—‹%²D>ÐçâsHõIÉëŠÚ)ÖØX%”´3–¤ý’¾0âSÒ dƒr†ÙØ¢bOQVÔnÆ×Þþˆß(EÁdAco Ì:¤¶§(ѧ”aAíØÇ2à%Л¢¼)ÊKQ²k'!SÞ凣(´ä‹Pÿá_>ìéAéìJÃ\\Ø“¡¹9§H ³˜\ÔúÓï¡�)jI}¼”ˆ2øŸžÉàzÁ•ðá?ÿ])A7yW +STvS©ì%ÌÜf�³‚ý•3Ù2È3w¤‹‰mkä>hñ;1¨ž˜%ºã’þ„úZ(•íÿèsb½‘gó^Räø5ÏÝ1˜Xså'Ê%ÿ3¾ê¿ü]‰íÖùQ¤Û$qvÄnEm¯wØ÷À²µ=µ¹0â£657ÖòwÏ·Ø»µíréí/Œø»ZòíL;¶¼õV¥hŒyùlQ³ãYjGÙÇ»‚y³º7«ûqY]cÍC¼YÝÏêÈL{ùÏáºÿñ_@ÖKr%HÊlÜ2¤´%kÿá¯$kM:/2/—åû¹ì§ÒåÞÂ>y¡m¸å_9‘Ïpµ+íØN’=¢Á„‚±.8ÕTAµµcWV‚ô²š]™MgžD/ýäLËðpvŠ™µ¨ùÁ;Z¶¢vdb~J–Yñ6ù=1y=â#&Ý^eÄû-ÙËb÷^¿íP»_{û#~£´¬³ý'&!åXü±çeU+ô>O”A;Ƶw ôæeo^öãò²ÞÒIļiÙMËž«cv—i×–@ýN?HA&ófƒæ*y6š•ÈXkFæÙÊC²œÎ@'˜0ÓŽ¤Y2’›$û(]'…{B˜š´ aÓ_Þã¶çh§ sdY0ë9"kîŸÄ¶^÷ÅTmî].Û+©±óÞg, Ý|/½ùëá¾Q’Q\yåÖ‘«Zã… Û‚Ú1ˆeÀK 7ÍxÓŒ—f”RîDÌ›güh<ãbÞÑ×}µ<¤<âe–CDÇöºŽÍWœŒyŽV P`wZ‚:ûùµ»h#©ùü ûPÕÓѾ|¤*³Æ,ïôÛ³›î¥9Ú7ÊSf<¨ÑKžÃ‡À1ÙOZDù~£êÂü +ú´ÅÂ$gý§;¥jËp—@»áÞ$å¯ )ìR~“ÎÌl¸Úú›¤|1*/o’ò—‘”ø퓔ϓ/-ùwû<F¸ƒý`\vuK$ÐF Îøï\îõéËѾ|l…wS„²¾ÓoÌnº—^üåhß(‘˜ÞpjÙ‰/‘çf_@;Ž°w ô&o"ñÉTñòùOñ&ß'‘ÐÀ‰Üá¥Ñ}ªTõ‘—Þ6/0SOEå=à¼�U|.Ï{¤Ù¸5'½Oî±</$"ß_''$âcõM.ÓèY%®ŠŒ÷±²gño[ïÓ©r‹ng/Pzóã-8^{ǶŸr¯+Ûï;Lˆ).Ò-ô›?Z„”òGŽÙøw»w^ ½{à ½¶ÌëÂ~6äñµt¨GTcõÌ%bôì]ºÌ¦ñÖc^<‹•ì1îÞê"C-˳>hYäu6/¿Ö¥õοW2#‰ûûl»;Õôÿú¯ÿíÿýÿ‘?©Í‰Ø+MÞÅËî+ÔwcßúÝÃ﵋Ûbý9€=òÿÛý‡ÿçOgÜ•<k^Þ[üL)>Lú¿¼šÊ?ýÛÿý?þíNj5óñ´½|ENÙ±Ø/„ eIǦ”)Õ’q¼"¡JÏN—«ü(ŽBO•:¬í¼K”f}+—R—[™G·VìÇÖŠvÞüm‡ð‘÷¤³1ý'þšU@çÎæ/7§—sø´Üpù sií0^ÉÛ,ìÐdWþ¶‡úñ4®0Ö×—+å{â…ÌÒîù*ìqÐO×æØ2›Ÿ'ËEÖ›WCz6,qRÔ•’Æå?ÖÌ[ïØ/´›]`Ÿö°ÜnÇ'±ÙžX½Ûz öªQÚŒþð?ÿïÿýß@JþûÿøÓý“žÔW¿ÿr†Mª·J—±ýó,F÷»6îj7 +%uà‹Á>uümØü- ›Ï©Ó·a³1lôLAmQ}øúìL}S†ûð_þôwÿS9õdÎÀþü¯)1ד`̑˳öh<Äösà§gÀ!¸yã[ÔûöC_n‡þ.\NoÉü–ÌoÉü³KæÑ\vfÙÌ:«¿µA7Òf¾¦‰t1:¶ztV%!¶ÇNnofe‰5ýžÅY#l³Ø|dáÔhH-rOSHÐT¼ù™—âÈ”{ÙüæÓø\¤£)¤ŒRª¼>ú"l7Îw¡.¿Õ @»UÞµâèë{æå~«Ë·ºüæÔå÷—úÍFhð7r4[ãùêâ>B㽿̳óê÷¨MÔB”ã¼x=B_Õâv±Œ²‹ÐlžóXÙÌf…<¼Ö6BÃ>û¾ñÂ@Þª¡ž‡Ù@HºP|×·Û·z„l#4›-‹¼Îæå×ú=#4¿sˆ¦ùØxqoE÷QÔ¯¡y‡h^‰©uÇÍê+ÇÒC«{ñ¯_ÎØó¼vl'!xË;—{mÓŠÙɈݓÏönF+æñå¶bâ#†çýxrW,7,3Š¬R¬9G}áµ”›w[0[I±{Բܛ½þrß²°½ð¢J›í[Z|Ò‚å³¼ÕË3›"T%o”?•KÞ™L×›VÕÜ·åNóxµ€{èå+|%çÎËÎJæmÔ!´}FÉŠZr8rI·ÌbFœìµ´É˜¸åˆ#S¡a#Æ6£$×r˼B{5—wbcZÞhŸt´ÝtÈ.¥dE-Iët–Tõ½v9%ëZ–yÎËïõÎ)ù}sJr.¼Â»Rò¹Iÿ"èYN =‡Ý“y†Ö!…JQg/k}Eù소"ŠÖ–ásÇaL8LñIÉ#à>E¢îÆ[6åÏK¿_RH>;ƒ5ƒäç�‹¶ éÐÏ·"Ø.õÓ¸…ÊÉŽ›e¯Âv"ævÎùÂÑ—°––P²ÉÉ=ñ>Ë8}Ÿ«±¢v‰›!/¶c^‚½óCÞQÈŸÇz¯ß׋üxQÈù!C0ûMOóC†ÔþðÓ3à>íc3ôeà;?ä-™ß’ù-™¿WÉ<òC’ók~ÈïnœYBÈßÔ⹚ðñàn‰O>VØHøø›Û„ÏRJ¿Ð6î¸A=Fú7Õ/\ü]Û¸ãâ8Û<èÑý¶™Î +ÙWÔê[§³×÷ÚE×Z´,ó:—ßë[&|—‘ÇŸÛ‘·î¸}äq[â|ËØėô<.Çr÷¨ÇÓ½›ÒŠÙ…WØè[§´×·ÛÆ×…Ú<jYðÍ”^»oY\|Ÿ±ÇŸ[^°ˆtæK.5M¥Jس%²= +x²0Çþxä¡×–öÌ&—»¶ÀÂuN‰SzSÄGY< ºŸExžw=ì"‘+j ý%—Ù +Ïe6òkufÄéñ·ÖÁ¯ +&Ò&ÆÈÓC€—›²©x‹k»…€ƒ‰] êéã~:d‰\QKèoÎ@\ßk‰\h}вÌët^~¯w$ò÷DVŸµÁmlÒTç'HO«Û]†µC.9ÏKŠièŸ œ±S[i1?1~û¹9y¬Ï"“Ðð·ÊF¶3¼öš\÷±ÇØyVºw^~ôò×Kdòó3XC“_XvcÃVO ?Ç滪òßö°]T醹&ˆA²®ÃvÊs;*±ª7ж¢í¾öú$P‰¾ÕZ‹o‰§÷YUù¶‹An½Û z öU¾â?C|êNiÿnöùã9Ä/„*‡`-Ë}®ûPåÛŸ~zÜG 7C_¾C•oÉü–ÌoÉü½JæYÊÞÛ¦”ýom½YèòZDW™Ó[£¢þIsA}½ºõ˜2–'ï%×'u멶[Õr í²/b_aÛRõuЋ°wEû»¢ý'ÑšŸ¿ìê5¿ÇŠöÙų|ŒO¤-TÀ¹•Gz"mW؃UØ:èEØ[Ú¾¥í+mß锕´ý„í»%Ó[¤¾Eê»%Ó÷"R¿kþ¯F´M„Þ 3—,™5yI·Ù&B/y;›=fÿl¦³B6‰Ð+jÉ<^§³ä/¯ïµK„^h}вÌët^~¯o9³ñ»L„þ¹óˆÖ·O„ÞÀ–¬ãål²——ôO„^ŽåîQ§{7¥³K„^akÖñ:¥5{y}»m"ôºP›G-¾™Òëo÷-‹‹ï3úç–Žy¯ÞyWé(RÎ…ÿírí̤‡h&B±‘è4Fé!yºŒÜ±Gó-/«GŒP˜ÂM®&w Z²„}&ôŠZRÄ«Ð\ 5ðJô59äx�WØ™1•ÍE`<¾x¡èZJØ {`÷ ’$üæRê5麟@v™Ð+jI=^§³$0¯ïµË„^h}вÌët^~¯w&ôï› ÝjT;>dWrúÙ$ÒÓLèÝêÁ›IxË,SâÎP‚H»3¥Â +QATqsó.ó$mŸWÈ}jsˆàÅß.yÏ/fðiI|þâ²%{ïR°h›’ù¼íRšCež$gEaéÂ×`»ÌçsûtÊ|¡ßbî¶,Ý’Ÿd>‡Zo„°¹‚ÉÅgý’6°]JófЋ°í —`ïÌçw~ÝÏãhºR|Þ϶ÈÛÑúýæ×]È|ž‚¦t©¹?Í|bÛ€íiæó¸OhÞ}øÎ|~Kæ·d~KæïU2™Ï}“ùüûZk–çü% «‰ÎÓ£’}w£Xìë¥:ûVn)dç2½:u—õ!Á]È:ÞÀ¶) ë aïL‘w¦ÈO¢&?ÿ)Þjò;Îùêq–mªÈõ˜›±„Ö%±MY›=†G6ÓY!›T‘µäf¬ÓY2<Ö÷Ú¥Š¬´>hYæu:/¿×·ûý.SE~î@˺ãö©"Ø’—±M~Çr˜ö©"˱Ü=êñt領bv©"+lÍËX§´æw¬o·MYjó¨eÁ7Szýí¾eqñ}¦ŠüÜò‚=!±Õ ‘XÌ«íœS陶®üÛöE)`0Ö¼wÙ5 =ÛœSßß\ú¥Ÿ¥iXþŒÀ†ð¬mêÈŠZr5Z»/åâzÅ™ó»[¸zº6-öÒDŸ²Iñ0á™,á|ÂÉÜ€€ÀÙ LÍ÷êp¼×Ù¬]æÈŠZR5–Ù,ùë[íGÖåY´.ò2›×_ë8ò»&Žà´„¸t+AY†ŸM>=M‰™JoÉ…ä(‚Ø:¤:DÏK’»ü¤Éõȉ‰ûI]•å¡Eù•Ÿˆ ògÕ§œÜà¹K-Y!÷É#T5Ý÷ü.µäñ·KjÉ‹¬©%_[¶×r£%èúé´MªÉ¶Ë!ñ?Œ§˜ïD»Û¥š\˜Û9Õ¤ºä¦Ç:úúe<§š@ÞhÊã3FöÏ{’õ±írH6ƒ^„í½ûÁRM gõÿÌ ÷hþ¼žÚíúöÔþxÍ©&C0 +®Ï¯RÛ€ùi¦É¸O YG¾ŠûÎóLÞbù-–ßbù'ËÇe`n“gò¥;ËDùšöÒÕÌ”;oO »,F"+ìëe¦ìN¬8Í0«ò“Äè·9"Ø6ãdóê–òNKùI´êç Î[«~Çi)_Ûï·D ¶i*Ôc^È´X³K–èÇ6Må1Š²>g Ŭ³Ù@6Y*+jIYf³ä–¬oµKRY—gyкÈËl^o9êü=&©üäAuÇí“T6°%#d9›Ì’å0í“TOåæIËÙÞÌhƒÙ娬°5!d™ÑšW²¾Û6Ee]¦õQër¯3ºðå¾eañ]¦¨üäÒâˆüÞ@1j ÿ0JÊ›¿}L52KÓ5·¡´"Œgºâ°¬ÚqU5ëSÜcÅJ}èÞF"SÓát%*SœÒ¾ÍMYAÉ 6%ÌÖÖ{~Í(a¾ZrÐÛ�¸¾»�§ +f¾+t~äjŒe1]-€±Z°½¶u*+b“¿±‚ó@Ö©<&“¬o´IJYæ´.îãT^£?>ÆÅÅY!aÝ/ïiëÒÈ+DêxeìâÃ]"⑃w¶¬uDÊÅãD`Rå Âgç+4˜ïyEübA˜»ÊlIÿä1ã<¹šÂD‹G±Àvx:P(Ñ:+Äöä1 j/]ÚiKi:„ü:à·±É0¿CøP]ÍxÝè7Àþ(ŒÊ´˜ûî×0†:”9”Ûþñœ»¥§Ž…p¥P¥ê!Æ‚c“ÔÊ}·ÄCÈ-ºÓu¨1Æñ«¨%â“Ç8 pBxà@`nPjؤ‚p8>ôde¿CØ@Ž.c¼²‡)øä1¹ö6’ öHÌÞ*¶Q™‹Ú°Î½à1ö(ÄUÃú¦$ŸŠÝ¹ÿ½ãlÁôywÀ@×8µ$ÃÄ[çTC¯;¶¯ AÀ¦‰Ù~0)KÖ¬=.š|ø1Šï!96 AøÓ: ÈVã*ˆXœšCÚ l Hah¬’s8Ä@Ã.+8mUƒiâÀX©Ù?Adˆ´ˆWÇDÅZQ#´9–ò|ðèNu€qÒ¼Hœ¹+¡YsÊxE€+⥠xK[c l†(uúüFXF˹!‚§<ã�ä'¼®eÁÏ€¢ <w6ägöÅá´¥²`@"ˆ“Æä¡ ˆŸ”*™ˆ,¨‚Â×1%áÇupˆ.ôD6=öEá}©àX:„ÀO˜ÜÝéÀûÊÌæÞf:;6ÔÞ!¼ ¹Œ.ww|çRÑä©d-tŠçvšˆÖªÍ-GÆoÂǯ "28œ zzLâgçÝ‚`yxÂlêéÐ×¹QîÙ@¤_ø£5?�dœH]ýΙŠþAl< °)à•ã!q!ãL”8Ç 0|˯Ҝ.ž‰Bm.¶ƒÄ\Ãñ…Äœƒy¦Ÿª-cõŽ–k™E_ÐåsœÄkSsÌ%"ê� b¬=ô©b—VCd*êx¾æ¯ÂqDEŠ3Íd® ‚¬”½«ñ”�%‡“"¡="ˆˆ# 5r<Þƒà|Ç0¿43þ@4ĤЦ5ÑŽ]™¸Z|°"Š‡¢ÝÙVÀ”]$O<¤2´0>->·>G°‚¨€èÏo˜À]ªÜ£K^ „†0Îâ@ósfsåBmï)[çÑn¥ Ó•eµÅ×î1=A@ +â©Póù@¤@åç!}´Û{Tk™›°A8,@#É›/°$‹ŸZ¸Û +A/>tŒÃ#ÍØr:4Þï¨ëRs<´—:RWæ“Lƒ~„‰€t®{1i{ÅŸöÞ:ƒgS®ÃÔ(Çc<¾E–î9|½„ÃŽï¬-tJg?µ:â3ðwxécyé~ÐœEA@•U%´B *"ãá|s'ÂËíÂsoCÑb¥éü>ô'v7×[8CŽwº¹ã^z7?*0\xe±#qÛ‰žÕ"ýÃt *ù:?ì�AV:‘‚¨cÅæÎQàdº‚� «3[‚eyJ%šr¨ÓAV,N×Ç€ACÚnA9l"ª ²ÒÏßOÆkÃà)ТG8+„ÉÈw×eiÐàà#`kM„Ì=* ì#¨ŽŠÆ‰ÀKã«N’Å�jS¦–Ç„mƒ²êcp¤ « +]ù!„Ê+iiëz¿mÞRär„Ä4ª…jЛIϯX:Q€S…ã™3Œ>šìæ''öº¼cœš)Åqèqü&È ®)|BlkˆŸ©B +"éT÷6ÌœÔ?›„Û ¢$ç©YI”°#ådÍåÅR{œ"Õ›z´Òæ>8!ˆ2~ؽêÄ&o똜n¿†‰°´óÜ…{�R/¹c7AKê‡Ög˜ä—ƒ96¿Sˆýr¦õ '×éÎÑbÃ.dWÀJìMA)§¡õóN ;ø$]zêŠÀ¯6:w +Se¸†0…ÞøQ)díäq80¾ä¤ý{˜«É‡ +-(A€h8æàP]DÁìñZó… îùᩌ扲s]µÀ8c¡…ê§\oôw@p$E0IK'§h ¨å m6‚õdŒ?Ç v¢tßJaµuÈ7ëX%V(šÃ?@GK¡=_Ý=+†iêQ[‡§É“¶£{³á‚ÍJ£v~CìØò976NrÆŽéõ0ðµV¡Ý ò=ƒ¹Íað{å +€ªœk"x‰tÆ|hiŸV ²nVp‚ô)¬ßQäÍPéDrš¬¼)›0ùéØÂ1Þ� !½ôÈM�¶,w¹î¶À?À:?‚ÒtVÌFæ‹Aîž•‘梅©:âŠXxg†>T/HÎ1ƒZ\d;ÐôX9¬Ã@Ô&T7ÎóƒÁâ*AŸ u%òœP¦«ÖÓ¶®$rPøj9@^³£žÉz¥aãó$ô‰QCÐOLT}¢ÂËÓöÀÎ +=N�;¿²nϾmÒct +8¡°ëË1–9™#f€2䪋Ƣ¡Ÿ0ÕDgÌ|$&³Ésê&l½ž§Þ0BtpÒÆEög4`N6¶qâypkÁxÅÑ€„ÓUÃæÄ3‹8&‚No…6¾n"kÀÁžJ·êv3®ˆõItZòµæ +A’CEdºïŽqe†Z!‡ŸÑÆ”iS X´«Q8ìóÉZç@x_é{�3ßÀ^`¢Ï¥÷¡C†’Ù8|sÎÉÀ¢qtºØ$¤NØS}¾2x7],ʬ Ù±ø8ìí ù%±•æ@™‹ ‰=Eíá8”ˆf%Oð}þÞì$›G€nÁß0ýb"Œúæ9ŠkÃc7A0”ht*ßÁv“ÌOÄÐ?Š€‹——Þ@@»ÚY±ðÝ�ÇÒÇÀÚ‡tùP.ØP4Œ‡`œèÆN˜¨,üÍä!ìÙbá:îYD¹èŽÃšÈÇqÁÄ‹+YŠ8§Óô/sA½Ú6VœÿΚ…΃© °×¼’Ý8r•ûBÈDÌüŽ)–T£Ô×Í•â•Q£~€¬^LW®¬žÙé$g ÙKíÌåÁ8†[ÚÊ•ŽWÆ5¦ÙIqäMsƒKÂȸw2Ä+¶ˆN……‚äM¢O[ýëc i�“ùä,‡?W¾ò +AšÒsKfQ¦9›ŠÈéÔ.ÞU/¾§1PbÓ8.N›Ê¡XÜÁŽ"gêÔ.SÁ,ȪJ…úåTçÌ7‚ÁñÞs‚˜÷TxuÓb°nÅ©ÖGÅÊÓy vÚD€¶Õá›d}v?loœ +“ÓÉä!” 5›ƒÉiA@ˆ=p€L[" ŸÞ*E.›š‚!³eE8yäª9Oé,xÁ°K³íþ)Ùy”Ezê'w$#aIä|ÆŒBÍq ±Å@ HFÆgTßU¾¬ù¹ç@`[ª9%¡w'‰;â<Føƒ¦“9fƒ�ƒ4'/fà¾SyYÝdæ?¡êùg[5SÒm1Ç!å׿KcôQ×Å÷ᙢŸC\ê´€mV|(w‚ŸCü6裬gA‡¹{‘0ºÀYh1ãóÏ‹3?Z‚wÖÜ»qž@}N6>IØcˆìNŠQæYÒ:~OzGï¾ È8ñïŽ>"C°&Þœo6CñÞpHt¯õaX³Ë•,0ˆ˜n$EDÿ;kW= þ ÁÐ`'™ $¦¸³x„†!=ÞD0�…ž¹`,s�dçû<©=î™Î Š»˜ +5!¡°yæ`ÆDe–u²üé‹"á‰Yl²1£AÓ©[±c!ði–@ÒÒÝÝg6ïVUF_ Žf¢›n~¡¼R·1öû•!úâ±*Þ¢ì"{îî+jÌÅä6mA|3óL§x2…°ªÐ ºwç@ÐÖÐý&•ÅºÇç!‹?8Ab„Dà…2S©¢–FÄo¾4}Âææꈷ³W„IJð¬h¾ÝsŒíagïŽ=aY«¯Î‘žP#(+zaò%ç‰wr ¯Æõ™Ñ=¤væÚÁ[mŽMobZ…º×ŸÅ†œ„Á,eâÈÓ/6ÇÉn;ÆÁ\"]̇}¦{®ø#´57:s6“Uã^4Ó@€xC·ð¯þd2Ç[ÃŽA3a ˜nÕÌ5ËHfg×<Z_á4$2ߟç`é‚1 +¾c.ÓÂ0IQ2\©b®NlÙÀüÚóƒ?Íb¦J2Ü&2 -»†I8.SV§&–¹W Dp8NŒg½11¡œ5æ°_ú¸TÄ~ßäšÄ©^n8¤ëÅ-70Ç9U&‚Ç¥Vr¦ùÂPÌ¡‹M«ˆJ‰ãmŸ@W:Èè±áHÁ†ÀÛ'ë©S‹µ°�f‚Ý1y=®‘þ,}!˜ùœ6�!ÞM<ˆœNn¾5´$vlÃ:]V)N¿DN0èkaŒä>œ|m0X!(iÆ@\&/·Íù¸aH'Û@yæ9Ô‰À;Yö +¤ùØsçUqEýÇ@–¼Äæ9ãRççßd¯Rn|Ó”GÜZX[°Ðî�hÄ!N½Ê“<Œ}?AxŽ`q–®†8œÜ‚ÀñÀѬLšp¡s,’EÉ ‘•Ï£Šã€õ!Bü/(@P9¾ù@d–ÉBóûgj²%~±0ˆO¡¤Âdžқ; +úƒþö!Âs=z?g¼xÈÀ¤a,AÐöhþˆÇþ‚hL‡ï\Ð á3Ÿìr][ës<N„3ÃDŒÀ8aÎcoc`Üûç€m[ZéÆüÎXl7Ã(™ªZãkÇ+C€d ’‚ÎòH¾=çêÌThs¨nîýƒ¹vúÀ Iz7,ÛꃂQbãŠ9!†å6v6–¶ÒN VÏ,ÏAÓæÕ:“×8¦>L7~–0ŠdOMY +f«á?‚L~ð—ALb¨á¯kÑVv,-˜šØrš3g:Š!f~ÚˆÁL±ëôAA"‹[K½ÀŒÓC²Ók6½-àEWÃ,&c§Jd"ì‚£c ˆKõŽÕ¹0t…ÕÁ|2³¶£ú3Kfк{ˆàæÃ%hF¿Ô³j1œ¡ÆpŸ%1zä3¸žÄÄÏ!þé{Jj(bä�MÀO¬"°æ8Wл81Sb³ 컨Çh F6£.--Dð¤Ø\›Ï€ØQŸí'3P£psº¤FêÖÅwÒ”=<\‘xy˜°9£õõMO#i„yÿý\9s¨~Èô¤é61z éÚrE@}Jž4™Kó&ËÈÑqÝN|ƒî"mÃÃ'9Ì83yú"sSÛ8ωÜæ*½‚¢¦šƒëèê®S(³]?Ô›ð A$)$:¥ðÐk(Þ%e¯ iŒa4SGŒÑ15-Þpf�"Ùæ/Ët1=`B®¦qrñÁ¢v(2—NL!G§j ˆ7˜ß+LÃÒ¬d˜n,|Aš–©ôùÆô‰¬œj=äF=sáý9̈ ¨õ=1ÃüHÄ1„³ëâ¦Ì¦£•,¹±Bµè[´ÓÊ#»Í•&IXôèáøA»Ç‘0“üðêã0¤èÅRK[ky‚ð4$¡M„·DMà;˜Sqlú$—a„,‰I´Î8cؤUÓšä1žk{D €pÂTyÓ$šw ¾èÙ“ÅcçóŒZS´êa²‡¦³žcŒR´¢þfEøøé•õ”{ÚÑgt—Qù%-A݇ØaØÒx,‰ñyFõ–PÀt?ˆÑêÿ +xHgßR¥àÚ ”Í>¶ÅÇï+Ä&ŽètG3§ÎEu}‚æ<cºØ +QA™3ãas غØç38Óˆä1‰énj̹XxPÝq ú [@"¾cíË`c¿¥N™ÜñÚ8J Åœèxa÷GF3 +$3OO)N~dò^8ˆ ɳÄ2¦³9ÑfH±Î<d‰.Of•™Ó–Ç«é׃©Å;Z¢ÂL™1?樛 2j' +l;’=OÀþò•»"ìp&98Üq|¿Bfžõ 6©>ÜaåâÌv‚R“Dó¦&~qœœ4C33+%x=_ˆ‘#¯iž}‚XSY,Á+1DGÚ¤!h湡Kñ·Ä÷ð^ ƒÆ*õÛucŽ?‚•œÏ~ÏQ"Eà +nˆáböƒ_ƒ…:ŽÊQµñí½fÄêc ‘,·²O„ÆÒUÃ%T†Ku X,¢syÇO|òšçÑQO¹Ø»@öÌ41n¢Ý_ABV7ý.™wæLÙƨ¿Å§FÊÁ9¤%ˆÄ††š3럽Ö$Þoc¾Ìé4O)>à:XÓ)‹±RîÈ(‡´1³ÄÐÀÀGÎsbÔ£±—ç¢à w À|eò^Ù‰Š,Jž ³Ð+ß ý‘Îe›?‘Ø'‰¯ÍgT1úÝe}øFȲôL|1µôaSÒ =²$qþHÁ«æ8‚ÑÍsò"esíÝÉtüI…‰§ùnç|¾™Iz‰%mØ +š«`ˆ»eÏpS;g¤eÞ2¡µúÏØŽÄ)æTücŠpRGGƒ~®ŠÃΩdà¯`:4¦W6Ïè¥>&Пs:$øÿáÈ΢G,!ª”7D5N;ß$"ÝÇyÁrðU§YÇßbÜ)l晫4]š³ŠÇ;òÉ2åB X€Ô:2õÀ•ð/júÁ@lÕ úXÛpˆ'(4¯ùûãë@ÈTËɱ1üù|ÈWËR�„O¨¿t=æ0Xt‹ÎI`™-ÇeŒÃÜ'V¾Ï¹xÚ.%}££gL”ÅØmØ%#Ç@ #ák «UKÌÆ]a‰ÕòøÄ~Æ õ11ý#œŸSÄVe†£ñ4œG¡vÌ´³ ¥°c³Nx€ ˜T Á¡¢½ ¦;#û#×ûŸ\YS€%Iè@Ô.Dg74™_;R "Ŏ˧�<¤$€@£Q.˜+G¨aï9] gÇ.s’õ)þä 7Då5C{0QŸ™ýñÈÈ&HëÔÞ‘ õÅŽäG Pü\.¦aa\ôãÇ–ï‚Ìãã± Œè&o0P,êr²gÀ*Æ^G¤¥ñÑç‚`½À#<ŸÝˆ<a@ZËî3#=R±Ðø2þd¿&–ª–i¹°™¾D”&ÂÝyI#í8ý“aãÎP¨êÐÙJbìúÜdºI£ÌÀO’·œæDÀNïÂÃ<ƒÉrØË� ת¾¾m•Ò@`O`g›Zˆeñè’ +×ZN)ÓÌCÂSó©�t¤ù +�JìRE¦ ÷ÐÄ<GâÛŽÒ¶D:êý)õ—ß<HôdjnHû®HäÓQÄeäe"jÐ1ëí!Å‹ÁÈîÎD–{E…ã�0ƒÉÖ…ë(VÛÌzOd5Œ4JfO@6[êÌ@ø;µä%Û©HÃZ“Î3K–ýú‘A1<ºFV®ì›†Õ¾„»¹oGý ƒGõ `û'uÜ GsäÕÁÖÝ·÷™7š‚Û@‘1ÙjqÑÙ§Õ$‚`ØÎ<a3î®’§+VM~6DdšÃ)gI˘rÖ<@ÁܳúIŽ…t~nìYí oL¢báà±°tÝ…¶˜›Æðr®Ç0kQŽA^KÇŒ?í&³òÌÓú™¶0Z8O0qÙ|C[å^Œ&j½#àÄ žúf WÞ7eáS›ñ½ÅÐ1å¡Z¶Ü�9U˜ºß(WðuÒI~ÍH£°OîŒvœs+˜ÛŸŠ}ˆ}žfÁË”:s/ãô³¦ÂöR— sÃLÃqí1è›9_ÇK3™B·—�ŠÎõìàÅÁ'¥ÏD8óY Â@MИ‘aaÖ=œmsìX†øÝضô>öá0®äê't´©% b¸§ññœ™æs ˜f¶apþ HtÌ¥¸+Éa—ªi]ZÇ¢N% ãb_QþºYúFJëèßt3U™œJb*˜¡å9 {€‚Þ±wQuiË1¿j‚Ó@Ø0mfƇU™¹CØÕ>[ùŸ x¼º$EŽwf¶=uœ!�¤û˜”¿ Pt!Î,p˜ŒiÒ5¥ ãÛÍ[z~Äb ˆäé—L8í.È€sŽcMþôµB×À@ëÁ⊡%<£·Ã;€¹åšxØFs ªî¸)JåßWžÄ»ž²EI¢<•ÙÁY>Ãd’R™”£všf^‹çü_ØQ³F~>&b)’ÉR†e°EÅ-06.$–J‡j0Üé +Épæ¤ÁØe9ܤɌnu‘Q*Qrž‚VtAõ<9)ëC©Y +RÕ"‘;d‡v·N` ¦pJ0@�4^|Í�HÐhDÝ…„ÕóÏGd‹ã`\³æçcHj«IÊÇ8r ¨²@ŒFf`[ˆÎZ˜8‡ÊdHÖÍ´‡}ü¬DáÌ ikŠEÝpÌ.€á{èv?*-Ç(‰aÔjÅÖ†<BGI”çg*ßU¦j´6òr™#ñ‹þÞnV Ùœd±ŸjE!\dK|ç™ÅÆ=1‚ˆ<|ñTÃ’\ËãxV2HŠÏØ‘8³õp_2„ˆ“w€Fž;Ü—R•íyáœG)ä™®eÆdjXcVçd …µ?GÎf5“Š˜?UZÛW áq˜q´Á�Ydо=*´Ç÷Yd_ÅZ%þFsqãg8ÎŒŽ¹pžqn¯ÉòäGù‰>¦>º;˜X¦þÝ b‚ ¢ˆ6¬éùFž^蘵‚Ã@2û‘BÃ<—¤ÒxxÿiMÖïX†‰m|JÆ…àò÷Ý9 u°ôùœÎbΣ#CàÙHô=ÎÔb?µ�¹®`¿¦ì 2cõócÚVÌ%š1ìȇ£Tg¶AèH‘áœí‘™ Ì"¼®±È—óçT£©QjþTìþ6Ã8 U1FѬ8¥ÑFö£¬ÊVt :ò ƒÓ©>›§ŸÊO™Øã}:§ÑFZ©V¯)ìÇNQÓšì~Öû{ê÷Yîc Þk¨QAÐyŒµ: + "sx5±Y–S~ìIV[™Ÿ ÓXu�Q{TÐc͇ `hÝçSÇ2"I#“áØL#yziè‹aˆ§¤¡HE%tQ׿ñ‰¼rz²)˜4—Ä‚×léávgqZ¤s s÷ŸT*–¾J¹ŒZm£ ÓÁ"¡ÕM €‰ w…oìS3¤Ä‡¾¯’Âa}ÐÐVi¤ËÏú`f7±XõZ©xâ·ˆ÷î$Œâ‡= ÿÅ¡?@±žÊr Â&–¨ÌœÉa: kCJ_ª\âÜ +t§¸h ù‚¬?ªX<Ã,«k èŽ>üVLåÞ µ[¢sÔŒx ±†'4Ò"î9Ýs[qq'Kí®_ú£ácãx#N³œiÃÔ¿çÆ?ñðšéc $GsˆÀ':ª<ÝŽþ®€~„€Ç(³¨Ñ@q¸u/d7ËÇ;CšëPÇæ>êtÞ…Ù'¡ýÀÛôäâC¿ˆÓ€µ>¦ðZ¼×ÔgÑêé협´šËeŽ#Ý/Od´¥¨°Oá ¶hh¡Ž|+ìŸØÓIùúKÒ üÌÈœÑCX4ùH‰óL†kÃ3ÐHáÕ•q8‡ç¡÷#¯A+Ó@J=ç€Ù)vÜgqûZå)ÿ?ko“l;®+iNåŽ Œÿ’Ú¯{ÇQ½œ·øpkG¦U6ÊÒ,íݳ=D-‰"AÀáŽÆ‰ÅƒYTÂ+>_¬HÎM)tu"ÛfK1ŠÎ铇á0½ÔãWÞ¦úƒ:ò=Q7Ä~«Ü?l˜Î¨É}¨2¹Ú¢SÑ-¾J‚5bOŽÈúâå-ÞZG(zå<—ŸÅ<?z<ýäªìïs)s˜7´íˆ}K;ìº@ –|«YÆUÃì=)Zn¦@o¿(˜°)ÿ4*AÉŸ”! +Œeq7HF†ƒ�àà“>™wã!äWY¹úW!zGì€lÏã«¥QÜ^W·?µ)x a2wm€ýa»X†Xl°</BcA%òëA‚¾áû€2$ýÕã4³îÿo°žô7iõ¯5Lˆè&u¢á~ÿê˜Õw +{é—FHóÓ>'x)PäÈ=N+¯%:o2GSægÙB{]½Á=RµÝÛjAñK%‹ßÔ‹¼·%‚Á;á½·ÏçâåqN:U¦@Ðë-³1З[Ú âë"%PIY/j +gNÒé]Y’ü=í¸ +!Aµ–Õ¿!ãÞ´¼~íOn¢¤ÿÔðgï²LSõÎØí;ûÄe‹qìþ4ŠíU‘©ŽÖöÆCoU¦$8÷‹ˆfTç%=ˆÑG¿[ÑüÙ·Ó.-¶=kÛE!Û+ÑÞ$»áy+ÎÓ\¸9ÑÐWO ²gBÑA((Y©ÓïÆhû9û%'»«ìo•ã÷•NhSún5Ç!П·ÔÏHÌ,C¥\b„t?[JŸë¹x‚$GöÒw- +ƒ¹½—¶PÛÛT³4 Oí~ãÒÇã‘ò9ªž …9_þuyØåRxÌŠ`>PŽvå™üÒS½É§<qÚ·‚4bÉç9a…Bõ[ï.d!&Œã6ŒS( D•ž§ö™õ½!�¿AV~Å~2j±‹Dò˜•±F£—~ð^cÞ9"ÞáÉ‘{ê³]ñT }<'•·¿oûŸÑUÇüÙw|÷·r¨|¿ —l-¹hQ›þÑè)|àûcûNË‘ÃEß(t&¬ŸB740Ó€ˆyX9Ý?W!â¼ÒŒ‰qöâˆy¥öbج6^OAâ‰ÉˆÖë‘nÙS ˜q¥–ð÷üA…ô×´ú·Ë^¥Ö3¡ŽÊªÉ‰<Q +$»q…Ñÿ´#ÀüN4ÇíŽÕPEÙgO·žã¸G”¤íïKD:óµ¢Ä„€æT9B˜„âÏû8û¨#3þíBLHÄô?dûDé¥fĈ¨>ö†Ð(ëzŠ—JЗøµð€æ¤àÞÊJ‰“ZŒƒNV‰¢@{¦é°b}„¶\ "?ÀÄ¡¬c¦kÔŠb‹ðŒ»~¡ÜhÕ™15™û¡f2ij'À\Á– Ĥœ”}G€^¢â›˜\_<ýÁì]þùíd«t£ußUA¿Ã^föbÅ¥¤˜ªñqzs‰!I‡[9u¯gSº#†Øð—ÌS£±8Êí£Fš^÷ç¿`¹— +‘ÔG ƒóY".¯Ñ£¤Ör2Ù?yêýšGÖåAP¼¸“îw—ªê™.Ü¡§rœ‚h”µvkÊ¥(JµËÌ/Nšúk’ØýO;•Qql¶cœ¬Ež« ?Ùc�Êý4R‡v¼Ë·€Øg³C!Øé^ãÎÎ�ˆ£ÁÚ¹Ìé!ðË°ÅxOˆÃ}Âí—#<Í”h¿–Ä ô4é¸.ƒè˜- �í¹™ˆ]Þî¾ N ˆ´ý„®‰}A9ásËz›Zó¡¿f”ê¢ +”€¤V8â_Mõ§÷/'ê ¤vçu™™ý)†X¼ò§]kò±êÜjªúŒQád>PW‹Ç¹ÌŽ‚¹ê—¡{w<ïIU‡†?¹þ#®—‚-§Ážl+&{‚¢WqúÇÞXÉ~Ò^µâ›!8úHm*-a4[¿^ò¶1k>AyÜÚ‡rÛ?õÑy¹ÁqwDÔ½`Ö8uÅ@ÿ"&ï“ßÇåzõ²ÚÏ+4ŒÁ.0]ð%ô‡ˆZ´çù~ð}µäߢŽ ‚¸îL•#nå°ÖÆ¿>Êž-U m&Ä6@dDšûa9Z.†è¯ +9±ìÃàŽ†ÓˆÈê»ÕK(—Æîùeÿ$û§*D¤—}ºÐ–tè. 5yT%Úžät;:‰†Àª!hÚBœ¢!&‹.9(óh#�"òÞJ¤„@¿Åü†ðúÞ‰¢É´9!q9 ¡†w+èª}VIR@ÅÄ`¯tQa¾ÚÜ%Urg;]Î%RŽÕçÿÅnÒï9X Ô”ça~!Á¨Ï†óŠÉ7|þ¢ŸÓñ¨7dâc^>2ÜHK5õD u¯Ú¬^ýW¶¶<3äÊ|ÎíÃé>€ì8;‹~åéG¿!íù7ëXžú#è!IéD¤¢÷Ôª±P£¹ýb¾õ˜ÛP!Ÿ~«–õ¦²Æáà0MºAOn-iõ€ää¼åà‹DFã÷ìC%±ä%Nãع¾Ü$¡é½R ØCŠ/ó;2£ ÈëûÓÖ@û‰ÝâžÍ@ÿdàœ„Ž¥`.´"@Hò×BÝ7èJñWÿÒûù1äÞ~Û¡l¤À!z9ß»ÓøY±Ç¦JFÏùÑÈ|ëKm@ h…FñºAô¥_�}¶ögJØÕD)õñ¸ûºÞÍÀר!>AõèÄbßœ“áôö Ë… +ˆýDßý]ô>l»Þ¨çÄ@ ҮЩ¨¬Õâ2h“øÊ©Xº¼-ËhNˆ<ˆw’Ï ân{oEó‚©4»@THËK±·1˜AW!eሽ«ÞRZ´—¥ýÑB¦Ð¨w”€˜ïM¸Þ{Û¢ƒ`^ü¨1Næ.Ûu²b½žš‡Ù~N/´ä{ódÁ.òx犪ü +T†Ømò³×UÒ]Þm´_ì#â0¶ ½–lb*5êñƒ¨4µ2/B\©ýG´˜óh½ù#dævt‚Q½¢é_YÝËww¡[ýf”÷�¯,�(<ø@ø'1”öÏêùÓqBï>• ×<oHþQEgÒþèhä¥Å.Ð<: Ðœœåèаn:¦×@îö¤ƒ6"„sox²=YÅwjÙSGCì›pۘؾ÷òG|õnC4ùG¥˜bÍ:+ÐÅÛ uì>~™^¢Y|$b¤Š!à•“¦A‹ X0oŽ#ùNc“Ž¬Mº;b!`‘x)KÏV1gŒ²lkðe@ˆ™½ß†4·£ŸÊ…±§Òƒ9'’<ñ¹o€5¬§˜ +û°ŸÈhÿûˆ!&ZCƒÒ$~Ž¼žÉ„„„—P÷}\~D�ÕfsfZ»Ã“º–á�f*’4F—R¤!Æ2Þgž-PßOÞÊÖ9Îå/%„#^3DQ¾èíìßÁ†!Ð\‹ÕV?¨“Bz³²ÈüÑçÐ^F`‘=ç@øÈk +9NÇ[M+Z³û^¯4Yh^¡ÈƒÕŽ2µÂ¸žZPJ…"zY×'³ $ø“ ²„j¼Ä8tÿˆT#Z‘}²†À²çn ߈~Z`A<Äëúz2Ú9Ž/¢M?FdXƼ…‘8]fÓ©!*Z&—T]2¸OÌÇÞ%Ù.ÔýóÝ´iuàD¨êËõÃÑ/'ôÜÕ¸o¯®{ $_Ä@tÑP³Í§VÔ¾ïóQäÑ,]:ݹ¸YK Urœ~'AX%µç5‚—9ÅÇjèW~LÐÓ Î}΋(Ë9Wè)û$gâ‹ D¶58Â9ZÍ1›]•e¯}£]á +òÆh%89D£i®zI †NÈA0ó˜üÌ¢¦qX´?üZ¬Pk`T’c‰ä0³×Š“yœèä¨ÙÂSjU·ú:ÏóšÕ@|/ÏQB Å $[½‡@W7qàÔþlÈï[Z÷Ú?šHžx°ƒï'³èú£«ÚÒW+ñÅ.ˬ,ÖP‚}ž+7Ïò'-ù%”Öw\áMæŽ84£D„Zs“õ’܈"q Dd^mzÍýLcC,V7šÕµA½=‘#ÈNºŒ˜ž\v’Òs }ÙG¾/ªNú“ƒõ1î#*Ñ÷ÝΨ?Ô“•šoêøä£[¥ý•Èyžnfò+¿üŒÉrmÍ(ú¸©ì#í š !¼êÑf7%?T"ˆtXã€~P…–�͚ſŸ6š[+ª0]:I •!û(ˆªOÂ@âŽ!ööþÓN(“]1-W}¸pS€h>8M>ê×@圬Oî1þTBÉ×—ZEˆ:owi�J +ÞD»Ið9»÷É"$G ±3xã_ü¢ýV纴yšq|Ã(îæÍH×�œM–éÁ¼BHÆ-Æ¡_ç[çŒé¤è÷Úí裬t¨Û““Æ•¢„úö.WÙΫà‹ç:ØÉ¿™wvÙh’W,ÞœÓÆlŽÓÓ]¦¡^ÿ\:( }J6ÂvªrL¾8Í(”ÍæHŒ²EIÆ/é£Î£©‚Ñ|œp`� +˜.£‡¿óègÏq +UÙKð‘›?ýÍJ›ÜiT§l«ÌÀ{ŠoBþbŒSoKœ�Õ"Š©!ö¢BßâÙ D©‹”<êm¦úŘù„vˆÚ¯øu½è«øiˆ’ë„žu¦vn’Ê©QˆŸ ôÎ5j”ùö}³|Ù(7åüzOxEÆ…ò“ÛÙ\Ywi +Jã)™Ä÷òÌ2Dksý{ò-¹P¢ŽÓ�ˆòÈ÷ÉšôˆÑÊ„+íäo”„ÿcˆ‡®ÞÉ9BÅ»«œÌ©oEšÃæEQ +6•@û)Œ\“'…ò#^˜Ä+ýUš#öAý;,;Ès]Á³&°»qÖ;rµp¿UÌ´Ë<Ö«±j9D¾Æ9Í1ÐOAÞ,f-:c Ÿú§@Ή÷’é¤d¥!˜ÕOó+’bN@»…ê|Ù=“7Ó0jÒ'4áM‘õÊNÀIl$Ý[CìöE¯¶KL°¨“²už@aêç«)²Ä¿$Z!(\1ѽ>ôdä×Ge¼óààDS.�ZϵÂãÎØ>ø¼Åš©h;9hÈ‹ †a\„½zþœ‡<w11�'”n<\=Ù½‚%µïª]v}äYz•rœzùm:è8êÚe:)=m³X)”kˆ-ÁD}äüAh”}Ïå‹<Ѷ:_L\™v`Ú²45WV*c zbÈÎjW%n“v¥ÆA+dϲlÁ›—^_¥dX¼„Òì3¡ö>5ŸÚÕ¼´Y4gŽ…¶<7¯)G?þ”ø÷a§%¡|÷þœ=_mØ2 +Dˆ¥å®:±ß”V›@5·!#±úþÙWw0l)u£8‚®d[µÁ¯žM<1ÎŽ¿~óÞfê°4§êÞf±dÙ±BÂí7m{çJ¦|C¨’ä:kûê.Ÿ_âv÷/û%ÑNJ®ÉœQ%y©‡YDÈÌiœ½a¤cs€Äõ7Ùfÿg×G¶#A‹××P$™—ð>¿/¢ÕòÐõ™ysúqv`í)bC Uwç³qæ¨z†hh¿ö# +ZQy¯ÎDÕ·‰ã ü4Dåxt¹úLkäjŸŠO(Ò,R¯U›d¼W¨.™£)HW€Ns »£xæ_€Ið¦ +Ú&(ËVÄí€+µZ@ØÜ¿2ÇÑë~™ý¯ë甸ð’û¬!ê¯7Áœ¢sÍm)øfªšäoÐÓí"/ïØ»†)<뢙Û$D\Q¢FÃ@µÞS:ŸXÓØ™1**gdƒ£ŠO *æ!M¡ˆÿTÊ,nÃþÔþHÕÔ.jÛ½0ÓW]´®Ÿ8”¤^ïUÑoÞgW—VÏ_´¿ùÙÍ7A%åLÁ‡jÝ—íÿ„8VrBht`«ÑÒõx¶`Û8³LˆþÈ’ÛÐÉç}®†ÑòýÄ…7Òé +DL0ž#po¯Y;©VœüB+‰}BH¼-*ì©ö„SÊr�8[>ßñ0œ&Ãl'ì%1^ݪ»ÝÚë‹aú<uôÀœÓ Üí[z*UëóˆÞ~d&Üq14ôír¯û¡ÿËþ`G^~Ð`ï¶VÐ`ûõzX"fR!bä„`ОùÎ₾äТwÉF‚Æ¡µN× [Ñv™³Á”u©WOzÙêW9�Ôºî&3È9b*¢~JDksA±¸Ö»m\-}ŠFøøÚ±€&á–†¤¨?‘o¡ðqÄÛ¹ìJjh ñG‘cbÆåÜÿE—âé!ö™¯Žvè#òÍg‰€Úo „‚â~'o®p,aïa—'Þom‚ ÁEú|.ìðkþæØëÃåEúkc¿¨×GŠµ .uj!öž+!Yô ÐßTÅØ{Òw›ˆržPFJõú;B<7ôŽ_y¦Ri=Vô# CVÓQÛBä®ÿ˜éR»‰JPK÷“3F¯näF"02™}¡C;œ¨3ŒK®Pô?§Õ4ݪ7«Ñý“K +ãH/¸Ž…/„dÙR(Eˆâ5¹Ì!ªL¤Uã¤C9î3–RÉ0Žc»!ö½ÏK£ +)êÍ[9;оN’jYWŽë5ˆ~åÓq̦B —ñ„HhShl:=®r9ÿ6$é¨g™®[¿¼iA¿ÙÙÎsmè(ª}i¶H¡Õgç©|BˆÛQ¤XÓ‘äŸhýõåÀ·}Ô·fžiK¯lCì'5¢Þlˆý¿êž[¦tˆu8a1»H¿Š-É88‚2Ý:â Ò0Ã5 ÑÛEÐîˆ]ís³p°ì×Y>g™ÊŠ"rÞ¾UuäEǼ|ÿ&y\Cc v$þô{ÂqS3ÛÚFàK–fúc´`ˆâ9ã :jÎ"¿{kç§hBT7:•?¨ 5W°Ó{䶲nI¡Ù¤ã~ö¡Îß[hA4—²’†x°22’êIsýf° p«¸Æa.—t'ÇÒ>C§�-Õ?Ütˆ/ÞBÿ9¥·°KÏòÇÉOaê—ý{�^x(nÏ*¬‹®¸‡ÃòÇZ›U3ÌB®„éž‹xÍö#ÿ1I5. ñ€ áòsòî3[•vH°C¯#wþ0øèl ÌëÓ 6Ô˜Cª`¡€ß~òâùi^ÓQÙßôôd/vÞLüvñß¿k:–<2G4ľX…ÖÐDÆ^ZR†¥úeh9iýÊס…™íq† ìç[±DÌGq¦!4ózUg:!|t3¥±ýÍ_Gtd¦ª³!F2I¡ÒYËúU¦Ó‰Ú—A£ÝŒÃÀ/|eG�ªÑ=´„(á'šã¾É«ƒ)Ì}kâ–6²õ¦g“gR#p ½@œÒ°Æy’ XDO¾zÛ6€*†ÑV Ÿ€#°Už.êˆéE¯LÂã)—¸=E€#ïÙЩ‚áç–@iIøTh;ÎI[!–¾_ãý.™p@!þþÆeö¬Ø“ðÍÍ”GA“û¥I;éŒ q®gp„»ò�]ò] Š!7k &ãÜ?VVÍßd5‚h‰Ó@…þtïlÒeæù2ÄË[¼ë.OÑÄl¡Eö¤Ÿw¸ôša{NŸ2²Íw9ìáÞ§|E +±ë)„!ƒ†…§UŠ„þ`6r‘AÝï \fCÑ«#X“/‰Í†ªe±£DÙl2ëf¥ë–ýJ6>�$&ÞôËì8A¢BÔ»Ò‘5]qtr †2ð;Sd.I½BS,býqfM¹7{:üÔ¨n?ÔˆtoPÞõ‹ÄSõhÇJ*‹R«Üß»#àÝ=î¾%D¶ùä@—| o LbHŽèÙk€è°×0—ÜÝJ³;x¬§m£"È ' rÉ5—ÒÙåÍ‚A½¤[ 13ÉO¿|aB“ÁBHo¥Ê'°)?iûû «rs´ëH«hCtÚz¯•e ¯\ 5Ý©ãNC–+ÊÁ.»¯äüJGHÈÙÖ +Ï:È“UˆàcgÛµš½ï?ÇÅvb27gÖêIv·|§ºŠ–}úÜMëh}Q¼‰rå@·ŸƒöÔIÓWUþ ª!š™b= Å¥ef Ù>ˆzŸŠnä¼[Š§§¸™`ÿu‘Æ#‡s õ¿S .à17ÙÇÕdþ¢~ÜÊÌŸ¼3â^x}{[/ÙŠâ*y‘=Ǿ¯¡fžD‰ñigšB ˜ZO:DÔÔó–Ô{µ½Òù9kCtlI£³4W¡eo|ýèóùßWŠ|æ0%É„úÅhuD¯”#z4¸D(œø¬¥´YÂUBÄø/®Më(æ+ºp„c¸!�˜òfŽdð/å¬*%Ù”’€ò!Ùë' °EÏ yÁ×EV Aƒw9ãX1÷�¤"ŽœWÓÓY¦¹þÌX¡}à?è=Fb#—¹!£ßî]%Ø'·ûÐ@)Ýõ«M”ÓÅçКâ;9N‚ÁrŒ•e;‰h¡àŸ/è¥÷n]nbHÈ•…oÈß4~1ŒäDŒí4.é·b(:k á³—[ Šýd¨…¢ Žé.Öx#3àÏö!칋KôE´ðèÍÐÀ-'P áx¤úù,Ú«<J@yï’ßûH|:¶Ÿ^1š+:,sC¬?½ÍdX÷y{ª<[ÌT’/OXkÑ<1r R…ûaW¥?‹öÛÉ€¤ü´’¢# >"k]ð#üQL$R ½Pů˜”A(>ÄsêZc¾Iš)PÇÖ‚ýhÊüâÊýÍT2>›œpVtÈ÷q+†¢6øÉK_“(õÍÃPvÕ6ÿÍôëXi4W™7ä)·÷Gk9ýl¢2:yaqçÁ6‚“ðh™åiuG¦ŠHÍR©@¨1¸”ž!æ‰Ù…(ÇaDgi¼l>É£í Ì]`4P£_òR/ ®sÄõ†´®4Q#ƒÎkò†mĦNID“ÁyŒC£PÖâ CaôPÔñD㬠‘;†#¸ˆË—Ç@þH4x8%]{än7ž¸J!ý|ê¯ã4-Å8ªÈ—F¸ä·öô¥$˜ºWkƒ« ò.>ãeV´>¨‘øwˆ¾2›iÜ)û{´Š‘« vgþ ‡¾Ø[±PI½·j‚ ûˆî¥S!jë[ Øð..L¡¢ 4ÑqûÒš»Wš&f!JVh5s9ÐÉgµ¢ö±#øïREæ,âõ¤`ç�zÛW y†hë»p‡dò¬8ÂtEÌ+º'âÇ–É–ï²?ÅÙëØx‚ Çm\baãb󂦷!ɺ@¨?ßý4Ñw³.C¼YŸà]Ò +s@¸‡æúÓ#Z"sœ÷.ŸBÂô×f¤!vt².=¸ÆMróHe_½Câ_UK5QWOh?gÆ:‚éMùPû©/©l9bJ³è †G|ùàðli—ŠÓ¸lì*„³]õ|q³™€Æ�‚ió,`sÑçr’ìâüq©�* ;âr[?<w å<ÊDTéVhœÂYÏåÈJ¾‘]†.–-Ýn6XªšâÁ«!Ôº«™ðr°i¬²RMT§ügAëÜI7F\)aˆ,‘%¢ �•Ö"€ ڌק¡ƒÆ::õÁáa–«›èY¦±¿–$‰ÏcöôFÐ@Ø·»‹f0—S•Âó7/1f2Íb òîÿäHïP^zoU +@TG×:·ƒ¬²xá�”ìP»Õ¸y» ŒñWú雀à²T<qÖ{„úzr»!('™%±fe}2‘eHûóúœå¡Q#²O¦Ã¡sÊ•Óñ‹4ºM[Ôƒ=g^ûû-€½xÃV£Ó·’ÔhCÂÒg6=¹ÕÉšºÙRT’DýQ˜PFü—Æ1Þ¨+–Fø-øSÃs*ñˆ’R=†ØiÏÛÃ.„ƒR"×@ÒR»"ä‹gÓ8ÅÐïð%6¢‡\vüd‚º;îßÿw†e @¯ +º®§ÁŸrþI-ØÑö󳲜N`þ|שxëââ!©ƒL6m;¢Ýꚢdþ÷bªbp펙k�†xJ×;†ìu ïÇúÝJoðÊu%B*’9ê£HAýJ€¼ÔÄ0´²£Ïô}§%"ºpj F(•j Øzîž?@t_ï×ü)ùΛ®°¾ü2MæTCdhl=õxï:cqd„c ½ÞÖéç¯/AG6ÎPB.»Ý@ŠÛóŽàˆâDE!J|Iù‹öY´{A"AE¼ÈzX.QùÑAùT`©!zì\ñiÙOÊM<4ªkÝ؉ÂàNMÍ î?΄¢,Jíïœèn³ñ+`^"4ßzxìziw'gCе¸WƳÓò1§‡ˆ½ëfpêÚ@.ç,]ÕÏ�ÉC}úeСPg] òögä(”¨•hœÁñs" .àr0'/‘êÑDÖ®>Ê`±1i~-ã(É^`X°œ†¬_ᬄ©!`‘3{G|9ó¥† ú£´Ì_þàü”÷œ’” ÃzÅWXë6†yàðòõC$8;¹@oÐ$Š©¥%¨¤{º#úÉqm†¨4q6UòŠ1$Í=iNc;«]WQd#Näþâ%u¥Ò<J'Œ÷/:‚=[ˆþÑú–;¥XHDI¼Øp/Ÿ“žER$¾^ '÷$µ9J(ô°Äž#)ˆ$Îá$€x(vµÙë¢Ts¯¦TÝR|ÖÜ”é9Ѐ0íòuš¸»G +ÎVÅ¿¾SRGž=®@èýP¡pEXï%ðUÍ•ðC?e5œ¢¬ƒ_rt™C)tz ws”ˈ:bž†Õ› ö…«Œv äŠzpN!N-³ßî—w=FG~®_ŽÓÓDS¡÷•4q…<Ä©_ŒöTÀ�¡µ«É¹E'ÞåÇjV4_=ú`¦| ð¯óå§TÀ5MöWÝ®cvókœñÑ}LËög¦ú°?þWÅïOŽè©yß-s¯“/˜#ĦŠQ,9Rç¡(ˆ~ànõ›jBh{ͺ”Æb·H/Ì÷È÷@Ü^TÕ»^&‰waéP¢/îfb�çBšÁë·mîtë‡:h¤ð¼Å¬M/ó@¤¼ƒ#îGdG„>‘Óæ"ö<KÏã–q™–ªq‰ðÛ—I#r/é‡xDšò F÷[×A>@„¼ËµOJK˜³Q³[Ä`½½ý()xÂØä÷ˆpÅ»žÁ,ûN¯ˆÜÞAN¸ŒÃ5£\É2 DÕ[)ê2lÔ3,êA@Ày.6f‹ÖéꈂÁ€“cNÑù›Ë›ˆ»(Ÿ Q]ÿ#Äžþ¿œ¬œÃÄk†O³³†}T€^=;Óˆ¼åR߈ýW†Ú°ØZV`‹ýR:´,„‚dvú~ß'?êi +Ï:¾Š RÓg^Õ ”&\$îL:VáGF>‚½§®ØJö{Ÿ6Ê=T¯°¢xå8JžÈ%DqõÒÇ@HËü®‡€Ú<ûˆŽƒö ñ&/Ú&ôCN=®’»¹"÷ˆÍª‡Ñ‚²~»Ìûî´~5‡ºBÓ‘ˆ2@ñ¿¹Uè—@w¤Œ”ˆêóÒ 4Dý"+ñ%`–vÊ/sbJ-P„÷éŒbÏHõu‚|Qøµb8S1µ›ðæ™ÞéÖs †¤MMkÆíâqYt’Ä+§¨@, Šå@{^Ìãx(¤f²`×™§ÃYv™FÂ#¼[Ц¸¿õ'ðÖƒ…>V¿1 +.µÏkêß ßA:œH>³$C“><ÖÀ‚óqäøEl!’^AQ¤F"2U–Ôš‘ÝÜZK- +0}ì~ÿI.¢‹óí€ñÉ°=™þÔ0ðš¾~ty÷,yª¼ÈAì÷®£ÆA…÷ " 8†%2G†à*^„ úáÉ ž;Gmô‚¶úÖc ØÍQb?6—Íx2û›X’äëMŸ»/=0³ÍyKÙö¹g’jþu„ Š(8+kŒÓÞ£^(Œ�F\…ºÿuí©,ã¹XÆ•%IŽSrŸøäL„´N„¤^•w4�oñ–¤îmžµÊ…ÚÐ¥µ×‰;ÅVÓ8ð¨oïäô&61VCÐü4Nz$[Õ"˜ÃÙ¤u¢š†?öŨoýA +òIP; Vëåƒ#×÷ �Ü¢h@dñœÛt”uQý�¥^\f¿¤~ú„~.×Ø+ÔUMý¹†„ÒÜ?áh™9wt×s{cýæ¨A-rÌœýÁ^í…=u½rÙ ‡%ªåiPžÝq8jB¼‡aˆËX8OªÝk úøëeð—»±p“ÙXñÅ/*mÊ“Îõ×éCMxÃW znç¢ù)á(Tã*¬<Q›ÄZéùmƒïaäõ~^jŸY(W2…ÍðNÆÊ(!§[)ÙCâö.SÎ J¤h˜žÝÂM˜y4€ ÁY;¯"ÿÅ–Úÿޣ͢„ŒP´¸Ÿò¢òioîéØÁFoBC n0ÖQVÄéOd& ÄFV]7_w„N_}ð[éѤÜP®R +Z¦ÝJÃïB¥"C{ÏËä4¶$I‹Å‡rYc\ý¤ÉïF@B +žGˆü.c<¶~Zoˆ{ÞTܱ§ä'!Ê‘á6Ä¡_sÍÌküöÈUó9ýõÜÿùá^‚X'ŸÏ…W&ŸPÄ_ÒmsÄó„F`V‘Cª?Ö}€Ô8ðßÀb]Î1Ñ[<T«”ÂÞ~5–ë^5s+´]¶â<<©}f0jãf°øTF‚2)`bíûKlÑ#ª¥p#–Øo"œ¾™ôŽ!(c8RDˆ€ÐUf3èoÈå⸢é^YKn¦Lűêû L9ú|† çØ^¹p!æoö¨…¿zv„"}1.ÁUØgy¶4Š?_"ÊîÙ¢^±œü8mfòŽöw:ÎïlcXú¿/[éš,bY Ëó>ÂHñ¤>Ÿ#Èl˜õã—ˆ®º:Ö&q7i¾C„A½õדù¡Ù3ɆÀ¥n\¥¡ã²’{Õ!pßM̦˜·ne”‡âh+–#ˆæžSlhvHÉ.†)ðµî©¶Òø×K™AjPÑÃ“Ö Ðæá£HÅ}e¢ŒéŒÝ>ºo>Y;:€ú‹yõçhÏëÍ‚ˆrÕÔ¦ª2ž[I²iÑÄ¢+Ãq»¨Gú��¾,ñ–ãïµ+Õ@bÒ}rHÐ~ÔU©çþB\~½BÄòš?‡·î|E t(\~Nkw›"Ûßr9ØÅUu½9bJÑåôWGP8¾~sÏ»L»‘“ÎV n½<@°;¥3ÞÁ©‡U‘|Ÿ¾jCè˜Æ:_K;+‘é3¬VÂg·.S¨HÆÍŽCZVB€JFYêñBÍwùØ*\÷[Ž°Q5³¶,?;û½Íµêt¿ÕMn" SÌÝM'±@´¬Ej ÂV ‘(Dü$cëþ2I#ÃL>Gp~·~â¼ÆE#Ö@ááufe6ùTnmgCpœ~\ªÃ™çü¼%Väc˜ý©“Þ<]c-¬´"C‹ÔÒñÎi¹Õù™—Cqöµë’´(îÃãP8¸ó?dÿê—QD£<×Fì'éÍ™ÿY®,Ø<„©}–P»·?7At¿ª€pTvšŒ!ðb»GQKY”ôú*©„c¬£g"/¹b|¯i¢qŽôÍŒû¥…¦<G{)Wĉ¼b/\%Þ™%u"4Ç„Û± Én#·ÿ×Aƒ /¡¡-!½c¥Ô÷âv[WŸ¾ÿêNV¥» ±#PÞòóУ›éCÔQa5ºmÙ09·;Ú»Û¥Áý߇¼ý8〱ˆûª›Q Z•AðÛ¦^ãHŽÚÿþi;Ðø/‹8¶¨S%ÆaúñvS [}i>½ õýçn÷}h§uDç¹¢§êI¢©â3 N]ðê<N7dc”ƒ I]…LGt·™¶ŒÁF`¸n÷/ŠÔj9/‰Ô~Úá²T¥Ç1®V ’”ˆš]êBœ®P „Ï–Ô´#–/(„†¸²BT™†€Xû>öf‡L9¿g¯=”P +]ß¿ÅúÆ4³¹„ŒI�ໟìþ%;bœ½w‡ŽQ\E€ UÙUè-H6ë>$^kL�H5ßTXÇÙ Pöq(’+)Ñë?go%O8\T!Þ(xøï!9˜+>Е¼7?[(OŸë?†xàÜ]då¸ÄšAâÕáÓˆ¿ÕS4ÒËr +D'l˜€¢á¸u6¢c+æO ãÇ !BÞêÍqˆÚÞ`f9bk \12Ü@œ ∞ÙVGÐÝOŸ5«ÖO4˜EéºnïEÁlÄUÖådçˆ=CnÅDzB÷ª"[.ìÐBû¸j€| ++‘øï¡¡-Ⱦ¨Wî¯à´¯ÑB.ܯçñ×5HybÅ[ä}‹|ò—n †øÓ¬½'£œ±ü£/ADÞêáxæûi\v\Iv¤?1A`4.´Jy^†ðùšag}Ó51‡¡žË@ð1Äo¶‘H½Ìêa¾‚ôó¼‚u3ÊÖ@-ÍË¡•iï’AIì8"«º]²ÔRÖ±^Ù»eFt™§álÄ S»@õ‹B¿Ì#j=ñì¢ìèãï#ç*uU˜mN‡ª9LCñý;ñcÓv×tO=—¤K}nÒßFâ-ç©™ê_æ€c "6´NŒlˆ&_®îôõdˆ@ú}Uú +'ç~/<åè:ÅÃ}nNˆ†5Ä—=B¦k|ØÁx»EÊð`Žƒš{Á„6õ"ës,2ÿcoQ$‚¢ Ø×@üðŸ%Åø4=ãÐŒ)Ç6•Ýø;1냆磻=Ç2GЕPŒª7HÓïr/ Séü|!7h&uÙsw{#H2À>UÄ{36 D ‹fÃrAvŠ&ÐÀ´“6bçíŠU¸DfÖÑ¡By (D•ËcDâÏݦt»õø¢©|PT”F§¨Çœ6lx>¬‡e>‚P®ôm•|éÖ‚C‡ C@ò¹‰™uår¬OõÁà(Ê8U £Úº(•!®Ã9Í4”ÿ5½Ê_!†¹}È2mƒö‘¦ßnž“¢5�D¸{O;ößõ8Zøt3öç†V´gœÛ?Æ8¤â Ž§p½þ#(·éT�É@4ļ<:l ³>ÈOÉXU Öðe‡º—æï4JÖKSϘx¨Ó*]-› +áЄÏm'[‰fVT:‚¼ò¥?ηâê1!Û§Àm¡„ØñSñê”:Ôf]žn´vbOè÷Övçô23]ÅÆ»mŠà³i5Ó@t|ß\¸wÉ®pD òiäij–´bEÀ!ÄçõèΦãë"ÍËI`⺎@{ÓÒñThOS�¨¹QaŒÂôqƒFÉóÎÐU`õ9{Ó¯ÒÜôK©†:ÞðixãÇT„•ÝóXˆòª¡<Æ!Úy_çŠèQ6Ëï±è0Âß›">Åð7!j•{¹ºzN´WL“ý÷#IÐuŒ*D °×ïu{ l€’EçU¤æÑ‚®W'—¡Ûñ)á'D“úŽX5f¹/*\è û8HhUÔî§bˆù‰'¤ç:M€ÊC<]ÑÔªŠ(á‡Dïm$WihY5Ì2ATú?Ê)öo0_3ÅÔö³8ÁW> ²PåfZ?×>Fw0K:ìÏDD‹vùñ‡P/žo„¬›RÅeäŸ÷ËYÒ-¶â7#©éou9ˆë4|B4R'3�ã^‡“.–“¯qôåÖºR½}•@`çü©s,üg÷ÇœT!IwCÝ^}` Pq»ý¢‡y?¿¬ðLÓÇL.ª%9 +j1·Ñ2 Ã×0‘®Kž ¡$f ý-Æ[ÖÏ™ƒÉ™ðã¼è ·ûg ú›v\÷¿m'Íé0¢½±æSÃL$3Lz†¸ç†€bv÷Æáð¦ˆ!öîµ!†7òÖü„ ^ýHÉÙËý>?x}[s.S¥jÜ!¿ÚPºF9Öð1ÚÜT;³~ÅñGÕ)¿Ì4[ëE›p—+Ë‚%²ŸÆ¦sŒªg ¾ÂÛ®‰¼5zè.3ÂT‹Ûñ°¦*yª+ ÜuºËã9â‘èDN…‚6¹ÉT>Â/³¿hò†p�ŸÁpŸ,æôñɤ h”S� }SÓ‹Xçjº1½hn“¥b?%ö4Æ\w¼XÃé$¼íáOšÔŠOúo‡Þy¾'Œ$:’“YÉ(ÍY†x©~Î+q$óÁ‘ɾÙ=”ÞŠ‡þrê[Úþá–±c“K¶œÅt¿…=é|'Ö8$þÝ/S¿º«\ÆŠ9y¯øûA}É—1„QÀòc¯'DŽQÈÖdÏ8(Ó$öš'g¦¶Êgg:Æ ±þ9 RŸ£ˆ`ØO@gøe:ÊóÑx#Z%NG4º.ºÙ~„_ÊRk äôîÏ*%ÂêÖ˜#Ä£~Ùꈿ–Ú±ÿ_$‹b «±J”õøˆÊÂëå\!ÜÇx èðÀŠE”ƒú×åÄÎ2v݃»¦ù^Fgßóã‚㎠¸¸‚4[°%ÃãÔ_Š½E*Æ9ÖHHvõ™ØŸž`IÖznÒ@÷G† +n6ÙˆÊ9V¨îh„œñ%î±C¬#:cˆFÚÑ +‡º•ý•»LÜJy¡Ñ®«½¼fs JËÝÖròu÷nbip—ɹKáÄ; þ‘«ôV¨Û.Æ9|¨G7ã=îú)¨aÌ�¥Ñï„.³’]Å,Z¾r +Ëm”ßuZ?~ÌÏQ ø÷íH&r#Äå[ù+§DšNäñg^ŇÀÌ	» +<Øþ[ÀGç¤è«XÇâ’‰q:ÿx‡0CþÍ~•½X…r"šŸ.ý8LÓ,屓//Y,Ί†9;¥åh¿V)!À\—VuYTYìP÷ÕÄ|Jhö”8€äa·¸PlÛ¨äý²¸7┘F;mði=)*,˜jÆïõ«Ça�Ï0�vvt‚Dd3Þ¹när3ŽqÖ¢æU¡Æ¶L,ý23[$u»í92¶ Ô<,ÙF]jæƒ#¸ìÑn r¿¿‚ãÍs ë¼]ÆëÅ$.û¬—lGy/6Ä{½‹ðaRØ�ÏÅÙ6Äs¨Ž8ÝvCˆ™L'H®–òôųâvI·¾W¦H„JË)ª8J§ +ùŽìfÖ@%Eÿ—@ˆY¸öFn|¡ì±‰ìïoOñÆøûåæèÃNðRwo§íJ,šƒT4ÀèÁ±9ðù‹ÍU¼½t–rÊ÷ä}ÕÓå!/‰ACÔ¤ŠêÁáÕ2—¢RzŸ½¾ŸÊ+HZ[\nXìÎ|L&ÔMnˆ{ú¡ÏŽ8=9‚¢Fx} ]ቄjÚ™ú91%‹ŸNÈë4rñy"“ÿz}ÕŸæ?Âdšgˆrœò‡~vX™àíÌróÈEt??ŽØm]—˜(ž?ᡘQTå[aªÆò«v+íÄ!Hñ}J¸‚â[`ª£3Ξ¨f¿p ëLïa[¤Tâ)HRUŽ.ì³ñù)#²{1µ×èWÕe–R.~•§Ã†³¯!¤ˆuN†ˆNö((å8û„ÙÖѾáä>W�fì°3q¶òby7z«Îé‘ÖJ‰‡h˜rì*´ÑUîŽþTP™ü"]'TSïá5K¯XKŽØa##1¯‹ÉI}tä¥ÀÜÇ“ô7Γn÷rw3’){·¦ù&Æ.›XB¤@òt]q5Íö¼Lýf jzêVʾ»~éƒä¥Ã½\|óbÚ.àI TÇR®½?uhѲ{Æò¬×ÚËbÆ;4¿ÝŽB~½Z–ø¾Æ•e¾M.5Î>bãiA—w1Ý.ûÚ^A ¨L¾5U +Î-R@1�¬ :ksMØc~Ê k¸7nÑ¡Ô£'¥Ä*Gó<ÍVéê<›a˜»¿¡ÈƒûzpûyâøßóDG\¾èÅœ²(?|Ù;Uæ)Ä8B6ã¹18|¿küµj5ÂqŽµVî;ï¡æ¥öru1Sà×Ë•¢Ú¶º´Ê?ÖѺ·“J+(º†‘]&e:t.Û8êI…b'Ü3ßÙDBœ^ D]¿:س:XqìHÕ2ˆjÙP›ùÌ[Añd—HÑ>"•h HR«Aô%â±—Í"+ú�ÜvO è›Õ, D“‡³Æa/ÎÔ¦ƒö»³_1æç2É؈vŸÍ÷ÇBBèr‘9›hf¯Ø«B¡èéÐì!ã~n¿²<…Ö½§&é’†ÈGÛ²“(Æé&\®ÝAä”ýÄd€#Κ€£´d˜›5Ü—!ÇÁ\å:=Ôþüž1|¨TãGö| 9å(ÿk#™ç>·Dît¼9´à·\Á•§8Ÿ&aOˆ +ôþkÂYidup׿<¿f€CC»7‰¾Wù¯y!röù'ôs_ú 1þð”Ñã9^šÅ”%Þænª~áå(ãÁ¦j oÜþ~h&ÌöSP#ÆA\Fi}afM#ßbš+ZŽõƒFH�zœ°ƒ†ËÁáIª®@—x®@êø‰ËP°¿Å(JçÀ.k\Æèåʲÿf›ùõ!ã/ÖÒƒͼ×C2¦œB^åèáЉ`ÚzEe¢ B¿Iýq\;-˜(×ÉY\Z½¡…9Ä-©Sè³{d¢s¯Ï±ü ·þ–6Ðæü-÷tÝÚ[EóÃœëuVˆã6K1E3ƒjD¸®Å8°·ÃšöˆËìAŽýVˆ(Mì"¯L…¹Ýù–©¢EB(GéÑ(':lÂèÒÍüëlOº"è*Ãûpÿã3GT1WôçÇ@#s^š,„ø$Ù«°ý醥#¢ñ<¶]–Qº®ËžVžM)_4æ¯^HÁ¾nµ»4îU¤‡£_KÏêú±¤æ‹ás+ûh‘Bउïj7ªµû~sñðÖü¡’¹xêsehöÁåGÇ -Jú¤_òA½Ô‡aÞδì4Äþ +Ô]ˆ’äW tUvâ0‘%@°�-š£%u:‘ãVÛçõYÔ=Ë¥=!½´n™.µòó·6qh8ìt…a†ÀŸ™’Èy¬#M(s"Ë›€Qh%}ÂëÙ<oßÐc!ß©»í¿‰¯Èº¶kÔ†ïÖºYüó¤B +âfŠâ؆ð~Æ#™Yª$Vó¼M|&C;@g‰2ÄiöÔ8&Ïöb²}‘+ˆÇ™àÖDrª\Òåö{Qø~ž>ÑEJ΃Øki¯—§õ•G¬¨œºîˆ&«è„A¦]ž%…þØKŽ@Js–•úœ%™<Y×ê¬Qj‰÷XÖ3@‚ÑMû.åªànìÔsŒÚˆhA>ÎFñ¼â' W”GŽ&’BõÎ*{ÓÀrD¶Y+,#0Ž¨"„”Ú¥QNòùUšõâ\é&žTŠ)€p%@@K És ”rg/xa—Áù"ѽ¸7ž3ö¿½¢\8,Ç—&FUñÓ7Q ÇXFÔ¿÷½ò²³Gg#jøÆ@¼»ž-×ó¦ù{kªÑ’â!¯ZY‡}Ùþð&A¼4dº=2Äö¤•!N›fD¦ÃOÓvr´§Z:»ƒ€@{L¥ QI )£Îw}Þ©#öiÛõ0ò=Èhf„Z)'ºZQ@×/š3$§¡¾®3ÐñÁÑ@dîÞfH•ûû¿Í Q3íHÛYÂâ¯Ýz /öX3ï”×½ª@ÒŒ}ü*(#~7ì®Q7DectÙÕ@ w÷¸H„¢¦,µûh4“îò€‰–Ì›fˆ"·Õ@´›ƒn6ϳù‹&fç1PI%VCü&¾¡†ÿÆ@¸‚{ßì„J‚YäÜ x*©¾n "tnp“Ø +ÃGÄ#¶kDuÓ`Ïjâ‰p4§öÞrö™–°G·;ãŒî%4’ö V�ÔžC™�m‹‘ƒ¡à.+h,‰ˆ„ˆ8a þ¦#ž+gèˆïÚx©’BÖâªêœ¿P?D]…”®¤»Ý‰’óÒ»ýÚV ²øþÇ{Të¡1ú3ÐkQ¿½#Üá«t-a{•»Øìb5 A ªWÞ×N³Ñ;ð +ƒÏPÝ-MŽêíu&ˆýø¯Àžyé§;‘ãDž¸áx·ÕЋ¦à•Ü±!h'îa +€ð¼ç)k¯æµgq;²‡É 2úcf?wã/ˆF©Øm(…¸ÜFŠµÙÅD(úAÍ»ÓÜ‚IQ§„°'O!~™ò]¶@ì?Í‘Ì/úß¾žrXÈœ]¿}ÜÛ/öd +†_eÀEuu!öB*«NÉF4†€Šø½®ã¨ÚÕ¿�½ßRúÞ%ùyKˆ'ÂûÉðÖVhæ5~Í9�!_†z¼7Kc“f½Ø+%güp—fbÇ"íèv¨QSVÐ~‡Õí~–M·Ñ@ò|óÐ +=ê5DûsäÞ+'ŽIw8IŸ›‰Ú£CÖéfj€HÞ©ßÊËÛ:YECHðêÉç±4½$—>qé�‡pÑÎò¿$V÷Æ@,Ž8!j*_h \M!UoÌŒ„*m=z8D˼ÄÞq†7Å5P.ø-иÔûIü(¤�u™Šï¥¤Œ™WÙQ¹OÅìÃF?-â†È$NŽÓ´X½jî÷çòPX—m#Ô©í+-/õòk±·o–¿S ¦ë…ˆ\üTísê~¨(ìý«]륿Ѱe0Äq« ‹OHh !OÇ®æ%2)xY +9Ùv_ì PféGM�v?pšÏ! Š¬i —¿Ÿ^½Â†¬\Bõ†P_oD‘nV�Úq=Õ8ƒEA>@)2忇`î;'}e‚à[{C`ª¦þ" „ŠàÛ:¨Ë8Êu08½‰.€vÜõœj[ýÃgZäÌN~ +D±JÜ‚ Bâ²q78?ÓÅn‰IyÙ¸Záö)[=ö´?èW•†@ïâ͈8Hú®wÙƒësíY^Ï'³gáÑì„åk\æêÄü”7„¼ŠÎD„ýOØk b«z—®«_…ßéî™&¿px8tµz@H_%ãBÓB +®È+Ð’7Ž_æ4`év‘ÃŒ)äˆ=íj*¹‚ âM}÷bÜËÊ»Žj Û£ëñ¹¤À@ÐcrÄ h,² +D‘M¾"s6&—ŸŸR—@`ìX$#–Låáå8Ÿ +ÅS:Éîÿ®d "}IõÕ·O ×/ƒyåL!ô0‡!ØïNç2»ãæšÚ^ŒÁË1P½¹Õd‹¼ÙÒe§‰[ï‰bF¦šúEëH"Æ@X›|GÐí-‚x’6F½è†íPϼxùÃÊ!ÛÏL$’ÞU¸¨Û ï¢ËÐ+z„e@àQ2gƪÖnh*ìÙ”îÁHdúˆ85´º”‚;†Êͽ$ÉtñqÐA¹4}@Dêñ¤u l qä +²¾§>ž(û#R…ÄÎ’ˆfŠBáø9N¶’ý¤‡®õš&<ÓtAjÚŒƒ8$Àx…õjÿA!ªÏTñÕ2bœõ\Ó=0¾µjjÇ„ñaB‡Çˆ[6Ü�N»Än‹Ügéòé^Â4WyWkOyw†Ø«övþHÂSð°T“ÌÍ'ÔO=éÿ 2Ñ1 Ïù@”GBÀ;ÁâŠàpNW˜IÈúV'r¿8\¾Ñvf ’ûRÜM!›Â›êjØ÷ÙRF—Aûˆú}WÚ€ÜKŽ%—–—h;ŒónÂ&“o/&¬œ>RîÔºþ‰è¸‘$¥åó/3#›=ÌüÈèõïQ?›Þ«wÍÄ?/.^i Ûb€N+¦‚A<Çø^ãôò>Ï}3ñ`ˆñ%MÕéOf€=ûö7ó… 0,îøÈ@¥¦ÕR€Ö13ñ"Ú´’È âr—0tÓ4�bœ¤ô’E_¡ šÞ]@á]E +GH¦Á³¥½Œ Rã°ŽDÑ$@ÒôÞˆ‡=2BŸ@É–=ÇËõ ®’°’?È<ªP„Q¾ñ¥uS*pÿ5Ð[Ïìé¿'í”êF¬?fò“Žu–W³þzPÍVˆÕ?j7ªˆkàýAöWþqsc_sÝ+žÊ÷ºÌÕ럚I'ù‰žK*/T´‚¶b@Áx+ddþ…àfþ Zÿ@¾ØÀ‰+ÿýÿôÿìçÌSe×"üƵ^Ö%—Zÿù_4þAìý’…¬&RûçÙ€ÊÂ>C”Ìâ\§mñ?³c|&÷v?Ï·ÿ› ‰g‡™ªß + Ô�…ruÕeNLæ'3,mWÅå•œ/Z#ChÞÕI†ÔVˆ0ØUÈø|îVÛ1/?øÿMwyA!PÄ1P{nƒÂ�Ýsô™Á7 ÏÜÆôJõÕ<ÌÙ*Z üÔú 0±Ô?™€&¿†¸Lê>§·¾þ’PÞþDoA…¼§†Ïó²®Sp•8|qWŦ#vˆ–~3€òQ$Ýæ¡Ë¨O´Q?ñ¼AêPJ ¢þ0r L"pèD\¤2˜!q¶g Öi·1DÏ^ñŽN(½¢oÊ|xš0i¦oAÍÎkìãÙ�¬/ùàºÂ5Š¤N4N©#@ˆÍÅ«w"þå;b²S…«µ!ö}¿„jF2Äê韬!Gl›Žƒ¤Xüè2ü«ïnŽ¨+Ä0ÑÔ-‘×(·� N¼ï2M±øÙÈSŒpW±ï?:¦õ`°<+.f�´Ú‘7`o}Åâ§q6hïV¢¼¨ëèó+–VŒ®ço‰ Ø]>°8‚ØäÝó :Üó¨‚ô¶‡ãpØ+h(µâŽMC¡2Éß@äʈêÚ¤5‡©¹ûÅ00ÀEDuP‘‡¬¯§ë.e¹ `Á7GÌËCÓ�*¨ø™d¾œ/ŽsÇ=”öÓÖwtÄoƒÁ7}fꜯøÂq&òÛå¦|D€:–ûEu4}íÿ'·4"Zÿliÿý¿Ù÷bÜw�7‹>`/Ÿ>“C@èAìÿ¿ì9w›\Ù2ù“ÊA%ÎBdŸ\Ó2†ŸŽßÏ+8#K•]Ô‰¼h?ÈGs.Lð¾i΂;Ä&ŒýŸý³§ˆNª=Â+ûžR>ŒqPa˜µ»u@¼Œ÷”àøöíá÷Ù"Ã;-<EE™ü¦½D' áÕÿç£ùŸÿ›ççÏÙ|,Zú5wûñ(§©9ÏžóO”OZMšk1;Ó ´~üìÁ$*- +mºj}·0cᙑù8‹+eqõkìoí¡!TÊF:,ZpVóܾ?èÆÚ;²`a BkZ1+#C\oÕ+ì +9Yb¥ ÕˆT2{ân˜8I (<nŠ.#5Îþ +išòi cÇã,¹ÈÇ8>‚ãLäXBiÄŽhŸÃ _&jÓCèÚ/kÝ>v\ãtT ô\‚®9šñtQ)|>ÔÅ™]òòW÷³©ý•Yx"G|‡T+žx¸§Yw´߷æ{”C–g\âÁaÎÖ2ùˆëd ÐðUç–#vÌwTŸÁöXù¡3ª—–}Y†ØãL™|h_™ìï”N{$ƒ@æãÎ;ˆ³—D’t”íÑQÏI5G<!i€õž>͸„ëÎœ©òq /lÆonK¹Ÿ’¸å¢OÑfŽ3•Žð¨”J@Ðê‘G~lÝß(ȳRÓg +T¿}Vðl•ƒ8箨“ƒè¶Gœ%QP%vF0€‰¨Á£Óú*„ê2ó{ô„ÔÄú7(nfpŠÒt%Luñàø}½G>Êâ<oÛ,AþÑ%2¬Ói[×yBœÙ3¦f3›»!@k’þt€´B[^¢¨¥$Çáá-ŽKõ ³ËÕ×ü2çV£LÇïÙ¬s¢ñ²I_Ä—Å›ziðž¦y*=äˆGÆÛy™žŽ† 7*M@Ñ.¥20äÖg Maƒ<z‡ö9#Xw™jbÕCP/¯äú»~±Á•d5ÝŸºâÔݽjÁrïŽ3¬dv‹%賂ô�uÄþ¿ütíwƒÒjþHGPho3D·C’Nr~ŽÉ‘¸^Pêæù²X +à»4ýðù\C\Náøíˆ6Lç£]€²±Æïe ±÷§8ȨÎФ³ç²—Ö¥ˆ×ä‡Ô �žÉ;¢ƒÍyŠ×ª<Èêff•)©î¸™F+L•M<Iž9¸?VƒxÉÙ#¥„zA1Â߸™Ž:´›¨hœg¤qƒ!±Ÿ¼Š!—Žˆqx-¨É;Ô@ûÁN¯‘Å‹LÃß‹F¿òħb�``ø¨oÚýG.ÖA)N©›¹š ÑÆeìz<ÞüAƒ„-ÞVV¡wD+®G˜?µk8îîOc KGÈûû\C$.CÔ`‰ÿÉØOS!³Òœ# +2;çn 9Ðø°mù‹æ1H@4NÎ�<’dëB8Uì|$4ø>¹V;èEÙWC@ôV%Ñô=ÎO1æF1Ç‘„š™©˜=õ¡uº¶QÕÍ€é/,BX¬N2 b)¡«qX?%µ ¡”¯³`<Z|¤Oq\†X”Ä¿pû2ÄuÖ@‹yøóxSK¿ÅeØú¯`�„JWXj]ÊK`îõWƒ6׌…ÚA4‹?ăÙÞÜŸ¾yøC¥7tl@ì¯{ý!îƒPå–QZ‚Üùgåòô*UµSž=bã|sû׳)%Ë_ûÉ©‚|V0÷rºceˆö3èè¯@Ñxï;4ϧf§![CÑßo=LŸ@<ò½Õ@)‰•»"âŽ^Æü<ýß®½#h䎴¨!æÞO&¾žŠ9¨_²ÌB+Wî•JÑK¼—§<Óvò +Ö,ëëÒÎEgˆÇ\©r;)~³ +cÓ@ì \F§† >S¼€ˆÔü–oƒËƒtçû9èÔó±?»/M®a|D%7âY* A×ÿ½l`’NÝàój¶ ð¼Þ>jˆPeÍéMÒLrÉ�öÁœSŠgM ÐÂ;²*&œÜú˜aé ú¦d‰!!°Z’œTÏ+pSxºçù÷ºò‘Æo°[—ÿQe3�«)–¸¬…GI¼@°4ñ ñþ8¼;èUÿÁ'Pšú —|¤’™A~ÈU¦ +q¼Ûc",TʹÌú9³b˜þZkl¾ŸI+µ!hMñé:bOö&ÜAéN_}Öu¿Ìþ¹ÇÍÖPžuÍOhí;¢„j£vxÒT4½ïsy÷Mpáüv'«êóEƒˆ!*å +×2^â!£zÙª ¡j˜5Còg.a¦=ã*£Ößçž\ P•d¿#†‘‚0±`ú¼rÑè@¼Z½áÄó?íeÚÖ +1åîj¨ÓǧhYoÁjË+úèÃÄñuêŒ@;ê A¥ÿhÏ]LÌ\ŽÚ@£¦B! 2=NQF¸qr12€ßŠÂš!šÜÎÝ<ég9„ V†Ò+©ÏŸC(|8ãÅè¡È»þô1D¢”oŸÃéZÖJí�›/8êõ’ÚËÛ"7çEhn\Ž.xÑ)ñFo ´·®#3á þÔw´8\®¹YÞ„äzG÷MÞ2Úl9Ðw7xˆ¨àÍtÊ¢¿q jÅCÐØã2}èý247Àð<ƒ§©30GrÏœŸsë5DÏFhCdÙJ3÷IKå‘ãPãÆxÔÓÅ£1:} Aî"ÌÑò Ý%Ô¿I¾Wè=&.ÒòKuÄüR@!Ç¥ØUN +ЈåŒkHZ¥fÒ²ƒ«Ÿ_…µÐ– „ΧBœ‰q¸ÏßÄ¡Ü!^9¦§Î�úgèqLr À,Pܘpf|»H™=îuŲ¾¯RWüÒòÁ)Ãzû{çßÊu, äk4ƒ›Üã*û£›°ó*èfD �ù¶®zš#Bø¿ç¯áÜvýF~wŠëôdØþhî¦JCP95Ob[nÙÁlG ,nAÈRÅiðî ¬7øeZØsú¬pWˆ$LV!Úó{þ`/ÐXàÐçQ• KôL~ƒE´2œØ-ž’á–7–ωqè |¢Ç?@ûD+›{G<h»CŠøo 4ÀÞíñõŽL°!¢ªpÖlïû\Žh”§Xî…ÊK‹Þ'K!.¼×¾ª#<ˆú<RÑ@ï¼ÜD6õl ?ä´@„Ob‰ö]îACЮþT1ÐÞ¢v„â’b›Òòdˆþ^õdGdéÒ“[ ¹¼§4¬qRþ5Œî¤D†‡Ú&Ìþ� Åœ§‚Å–„„Øu#$<]¨a`hìØýZ–ÓÚ=䃆RÈö[U#ó˜ÅbØœ÷x‘804×’ß<«†Ü"Î ØèÚh}!ö‚XG<0#ÃMÒ]ò§+Çáä!‹1Qùð3•]¦rö~=”©O‚=V°x³:aDsÞé€=8F§¿²cvT›»:› j;ùþÜ6B¬F^x®“B4”ý¯³ÅóÛ¸Œ¯žôy¿Ì‹’NfÉŒ¯Þe·l8¨ûë +Šër¾zw/hŽMÈ’ÙTõË`àçóH<É$ƒÒœiý›®ˆ¦¨´xs»‰TÀ/Í<•å<f_Z=ˆÞÑ„Lõ±×¶²é2šÜÊ,fk¼èÉušäÆq$(ÀÏ +CxG¨¾_¾èM+]aJÄâ>·)êàà-•†È ß BÑ{§:ÛË!ýêKå4uYôF›xñÇ‚üáŽ1ÃÆGèȃ3¤¤/,^:²ˆVǤ×èqÇïŽFÉO„+G,ŒuàåHGå:Wp–?نnj‚«,P;•`:Кd¯ô÷}ø‹&CìCÜß/Ctܾ÷Î"?ÆQtk=\‚‹8ÁÍj³kÒïEÜÙ9x±mwKà@¨ •§s;3éËP¦`|t¼OKˆ#”¦©³uéý„7È)žBÉÞñÚ¼¦-òÑ�á—á·<j…\Ó%oýTó¡©ðñEâ‹¿¿ÑlÙÏ0”‡ïmŒõ¤¨ÕÊo+)0b€µ õ83‰ÿI§Ïg.#z×t™lÐõŸC{âþè8 €\Yð©{\þÅO˜i8Ž>}4Ú¹&LWqcu‘ÞÏ ïr]¢sUõ19Ì–<1@ײ è礬í©Øo€FÄóÀEÖå5�#:$K}Ž½¯j.5˜§¶ðÚÃ…peœÀß˨ïŠXi5HÅå§bìÕÚÙ\زİË@‘×\ Pšpþ.�ZX÷€½<¸“|×îóš +^o;HõGY\æiI ÄÞBùѸúí÷Õ„…¤¤NDm}?~ï²uДS‰_fÜ={Ž`C%WCLr6°7ÄE_Ð@û%î‰NĬzöSøe0ÒJÉXGÔ\VAn_Φ†hq²ÏåÀ´úT¶Œü\ý*´wV5s9e¥0à4Äþn`PýDQ/lŽƒXêãÙÅx{í‘”õËÌzÜñÜu̽mdžA€>¯^pÃp°H×pÑÖŽ ›F1݉&˜–_#RˆÖúÂ+¿PáF.O©éÍŸ»ìÜ”š„¨w¥s² Ñ×*À>ŸJ[Mã°’•zâ¼e¾ç$_Þ?LŠéרÔø¡C¸#ÁU' (‘wÄ(|Òý„C„Aä~÷xýùºñîå*ƒ/š¤o#!D¤×æ Ùkz¥™Üï^:ž³câ™X×9½¦UΦKÛ–š6rœ—S¬qÞãC›WÎéýåõs`áÖþ–šÒC«õŒ7ÐþC¸vÅœ—7Š!H‚õƒB,ûó½eLÎA|Ö�´*$ POUUC¼Eõ³Wˆ’æ‘ŽØ׫ϤmÒfÌw\4t•}`¿&Éñµ,ÅÎ.ÿ<qÜÇ%6Âx¯s?šÈå@‹ÒvØ‚hoy\°wc$¬¢¼¦igDÓÇØ¢x!ö& +GÑtô#5è Sû!ö† ýGì5z‘Zä‡sâ\¡}c�DŸºgObu¦ëŠ|IüPd´iž}^½ÐÅÈ0ÄþF÷›thG@È?%¸Ï +aRyvÄþBšXwÓHf5kªÑ@xxÇÄœ$;l€ýTÜKÔ›¾ÐšA0êÍ9`§èûq Ï$‹c´¥yìÆq@´ÌL:Ý€;tÍCˇ…v4¤Äнï-+Ú9Ò¶ê<3]æ¥0ÑTaàà,"Ö¢#¾úEʘzxªÅ[ÜóX”9N7§6Ú”ôl¿ÊDGBÚ†XGúÃØžxæ?�sßMƒþµþµ.&ŽüŒŸÉì·¿29É(–%ÓAøIã4²t^aöË…cezQêÙa€~ÂÂ;:ûxS.žÓtpv¢d¡qVÖYõPZžó¾q×�ü¯õh~‚F@·ÝÖ}ÖÓu¢A®W€ð¤\ç O˜•%T} ±gGÇAßøO˜Óhñ7¡&Qå¼òÁøD-OnÅe0Z(²‚uD{žÐ3ùìУÄsjª¢ÅŒäb€ÈÓd`ð™,íwfë¡h*ûÏ„õ§3?]&{õ® Æýj•uÄ‘2�ZtTeòÇÞù['§ Cˆ@ýäÀ Á¦¨“j J{ÃOÄsi¢©ÿ+W¦#;Ä!?þÁ«¦5o Öã]÷h|ä¾ +!z 3ˆŠ½Bšë|_÷‹`õš÷ èn̾EoÑ2ŸOÆ)«¡”$ß4J(-ÙeðŽh‡®´#ª?X¯ÙSù£æäëß”ëÉl0̲}|áei Èu‡km/-RÐ3Dý¢+œrñáÜMÜáKzºýOô–ÏÛ?Ò@”>ˆ2mC+ ßH>h >ñÍ^!Fž4Pºk—*+Dˆ\åД]¿TÊ6Ä\»kÓþuhتڃ€[ŽŒ1–Rì9;Ž|* +½«‘ŠôŽ˜xy«\ ®ú‰R®3¬-½XjP +›T ±5ÿ]ègÇ<»ßïh‡qn×@$)ñev%l‰dïµ^OŒéˆ.Æ.ÅD*éšž9ITÛ¯æúØ=¿N@$š“iò½qP¢LÙúZaú)bOÚ_¨b‰î]¡Ëä{tňN…è»RI”¹ˆdoCeKvQç Ñ0›ûŽ{ +Ô€ãyf_šÑ`€}F˜ÞF¥qæQ2þ‹‡o÷8=¥ßi]ý&†@äé•Î#úÓ¢SÄpÏß7º@ôІHý¯‚ áë|J]öHðC ’ ©êNÚé22Àa~ö@›g‘Ž^a ç ‘œC(óªéOf/RGþléž]Ã2{º×h…9rYÖ·.õwÂÎÃE·®eLÏ»Ïpø/š´è8‹"�p½¿y/t;ÙW‰³B€ª<•ü*$ö›Œiñ¤~…#.A!B†9m>á<}U¾¸¢0ï{–‹®ÔݦQû"pˆøÇ?3NŒË{d⽸\´·¡yõ"hG§éõÆÔ㶥=û½®Kþe/Ÿ ¥DžsŠÉ'ǺWƒI 9Ä;¥\çêC0Ä^ÌHª+,óAÂŽg}f=."ó?ZAÊÌËÐE÷8»ÛÔ%Š×!=u4¬ø®=]C‡`ƒÚ¶ë;Å|y~PKN ´@Ì(‘Ĕۧkjp%Ù>hY ¹Å@¬Øo³ÂϨ—‘t ãÆáxG·Ô4¡šg'õäö.´¢?Ne7µ–Ž§*W¨z„V“#~\¨D$‰7U†*ùŠLɤÈòÂAåUiÑU¹²2€Óº^ ½Zj˜Ð=RM;Ò¨–ˆßƒ'=_IX7!CV—I!ÄDà‰ 9úÎÄ"6}={$àJ¨jœ}..Î3ná>1À±ü(,*já׸´Ìæ„]ïåÜD·Ðødõi˜5$˜2qûm>ÝÅ*0o…mŽ\Ys|ÖL~—Ù‡¡¾P¤‹y’Ö\¡ÆHóitgë·Œ,E„æ݇0sÂbß‘»hä3#,¦ÙvŠA¥2íé—‰øµ=«_Ê º•0¸þ¹‹È5Ô/Â#+5ìQ`£ítoÒæ ´C¥7]1 ‚¦T¼…¨Ó5ÊâV°õ0¡LLñ5³áS¥Ÿu)+‚ÀwíöŽh3Ñ NÃ0 ¨†Ä6u„üÞ W¨g[˜!8BuZˆôÑMøŽgYýu…wÄLr „çxZÊ(œÍ#f¯©ù«#e‘0ð)wÒdo|@S&kùŠX«¦º[SgTí*ƒî.ub9b<Á«õqpF®D¸¼·¤?qLžpè`Þ›Õúw^QCÀ9UŠm1›Ð‘ô ]ë†Ù÷¿ŸYqcŠ³$ã¹ r³Op‘A1Ó-«Ñ¤qÑVôh <R8ÔAá°3ΕS£x¹vR¶M‚x`´sÒF˜)0ß?cººx›ƒ¦úEý2ÏéK¢g[¿#Ò05þ^Ó]0†±Ž¯ÊyL,J¢Ë+[{;*©bRœ8‚¼óí™OiafZò+ã¤UEíäüèWbì%£äÉúÁhI ª‡¸ïŸñÇ¥Û¿Le—ž‘PÁ4@“bN¨ù²Ñ÷û´ŸwUÆ0Ï>гÇ%Øú†@K¹žRøìà :[Ë�kqÒ»6d¼ûÔz§qØH‚rI£ùC9«±6ËýegiÏD¶Ædƒ %GŸ†laК@ôI{rÁ{‡ÕO9ÛßázÏ+ žíݽg EݼŽ@´#ö£5ľÎ5\ TóéW£G^&6Þ¥)Ï7’ÊÄÂ$)Ô�{ýˆ J€X¾3ƒ·J )Ä÷u«4eº…GŽ3¥¥ß¼—ÿ˸"ø¹†ô€QoáJÒnª„èçìï]–YËqNx¨§"ÃÛpa¡èø³ý“iñv\—®GÖC´=!RÅõB½÷»Ù +Œ$t•»%3å>¢Bÿù˜mÖkÔK{ÑyºXV<ºZÞšò‹{ÁY—O¸#ts÷ŽBEÛëÄUˆú(ÃU–ÿÐ+ T²“—jtµDX¡[Ùß’L Ak«RY8îˆRDñU3@B |:+÷Þ>²›$uøe›Q_7»Í4›ûˆÜ®ÌG¥+×â´Ùr=Ut¥’¸ˆ~Z«•+¹é¡“îŒCpáJöÚ ÓHÇCR$Ûft iœÓ7U‹\m´Š>ÕþavYúh ÷¶h3Ó ¹Óˆý~1-¾²¨éÀ�dâœpO¶’Ë IÙù#ua˜©êºý}+=Ô›À¡I*•477ír�öô3cÞ<5¢ªÍÔZÒ¯—êW¹È?x`)Ya6V?D¹u—ÝË•Ýë¨Ö9(Êå1ÝR¼Âþ†ûÚY +8:ì ,Lä!ñ¤óÀèìÿ=¼Ö_»�: Þe¡·NzH|;oVŽ3ÄÇò¹�Q.eýhröKQyŠKF<d)ïÂý#óXðò¦ÈH0ç¢âYü=ë–• ÐÞ£]wq¹—O)GY�åÞ–)´ú/QC¬•½¨‡½Ùû�4Îj·:VÚ]^!Ž¿‰!p湉ëô²äßN=åÊ)@û´áä&ÿ�MMw‡CŒxŸUÖ=†`-Œd ¢Qó,å[ç>êWs:ìy®ýfuÖíXŽ‚ä֘׮~Äs %õÐÚwÊ80ž~RQôL·¯ÔбrD«Ïmoˆ×¥–ˆ#ˆ L98›s~“Œð””‚·¿#]sWtz?¨Õ{”²÷"j/õ†ŠÎŸC0d˜Ænº³¢ÿ¢ïê¢Þx‰˜²I0¤Qíïžðkæ :ßSžÁ[d]Â" ¨–W²ÖÌ! +ùÎ D—„p´ï#Õi”þñƒ ü|×jŽÀj-,3®cѲ™<1˜—ã<zV®N¤ótè|”™àrï7×ÑŽ+f+C_yA‘r ”Ê8 ß'”ý±ÄUÈwÓ÷ýÄX8šŽêš—ŽHMêt©Ä©g/„§àç“?æ2ÞâB _ _“@M»ï@„ø}®r”^öª½ z¯Woˆy¹3;âÓ¶îœmš³–ÒÍWĤ%sïº"+yã^ñ÷ÓòbÇ´ÍËÛº‘øØAa¿ƒ¢�-™ÒÛß÷üŒ¤.‚磽¡SËŸé[a€ˆ6.KLÄüK´‘ +”2’~²fhŠ°*r9€Â‘ÛÓH©ÓõŠIœY>Löwè“6@ªØ¹oó3» qµ™,óE æ4RÍÕX“½tâqºðEZ�›ðJæ +ü!<ãP9öüa +H—{d7E”*Ç áÈ[Ó!ƒþ>IÐ?Bàw™%/9CJå0ÂÑ¥–Oóá%cjbòh´5ÄHã]…™Êl†˜ÇXˆ>B4(â;©–vÑã•NvØwN¶åç;…n¢Æzülú:iç˜÷šGÆ8PŸÇ ?ºkÁ^·..Ⱥå A¢MmÙˆˆý˜ÖÒþÓ—A#¤ã~áV<æ«÷‹RƵ¥ZjA‡i!p ¤È6â0R3‡Äû„…x #5Õ96â(ì¢å^`%uÒ0PÔ%ëédO»Ò®nÈOÇ{¶¹–¹<öt�ý½Ï%ÌQ6hÞŠ&¨Hþíð}/Ís(ŽˆóÈ2áˆÅi½·¼Äd{tºÇ23ÒÒuÐþýWR·¡ý}„¹Ÿ#`!„š!ÈC§Q“#º[îõc6ïºl\´cªï$£ºÉ)¿Ý=€pÒuxÕnœ�šúæ:ÇŸ.^˜òkE9[»ÜÇgÐRßÒ§Ë:ûËï'Gµ×{œyòŒì +ÃôÃÐîÞ©ŽàtÊ0Ä݈½àÏË?¡òBÌãÚÿ†y±UË<rˆ'×Âv ‡D¹ÅjœGf>Ì`k墨a“¤_¿üy1α\šÂ³ƒw¨®eô¤¿‡Ü”¼Í*q:…pQožÞu<Åa¤g“#úM¹3üÆý¿›8Ã+3æ.šd ,7ÂÍ;@¬Þ3õÁHžÔ—Ö.Nž–¦Sˆ'Ú_»>² ¢åãjæ^ˆi]ƨäzÞÌAOqúò¿DÆÏ'ÊËRìyø¨b™g®j^‡0D¯äz8äfÎä4쯻ž²7Ò4é˾&#¤áµµA׌ŸMJ"ÂùÏ'?ùá"Á@t_9]Ç6o9LPUÀ�{·wªÙuµý`±ëÊzÝ�Uº¹5‡!„éw¨1ÄÁðaV8:pJ>8Z4NnfßÅÊ<x vò›¬4¶?žXÕk,1á<òEô¨îkM?¨Ó¾'£ û'Ó1©ì&!Yƒkèܸ(yb¼‹Ó0]<ó÷tdN:P|õn•Àì!ÊP-‡ùÒ?:AµK® ]h¿ŸAˆ®€£nø €îÕ¸ÌȇQX]CYe¦æŠ_fèZÓ¯~1¢Ý';–~o‹šUÜ© U¡è§±)…ê{¡…².nÇ~�çˆ â1%ô Ä‘$ŽhEPÒ4@{g¼6U–âÂ'Cˆ6žSÝ¡*‡GÝlÍžäháZî@R–÷7@dþ>ïiÌÜ?÷صâË’n¶Pòþ.¶ +e=CÖÈá :$fîܺR E¡°£0E§Öæ5Ž½¯l_W;hÚ±–„8Ftd™¶@D•AïÈúÜ[u +QÝäõ,>ì;ã-I¶ÙU1ÞþþSÌݧ(ŽG�†¶'=“N4°g sƘ¹;¤K¥(CÌ“sÀùÉXœ~L„±'Ü4Γ‰©!ÐŽJòÓÆÍv F»wÞïëí§<@�Ö.±à ²JôZí´§Ý=\ß„:•d]>0Ž@‘$°ñL©j v5oÂȇnùU=vÝî1n|ñÀ‘3R>?tˆi~¾?öÛ¢Q0¸$ƺ%† ]àf¿ºYïzñ$z<’s ê÷av¶4œÒÂ^%¿á WÈ÷"w¯µ{ D‘{¼³–¨ÿŸO–€1'’ߟ}}À60²sÐ9Ó�ȸ®§m÷ˆ0'‹{—©ø©‡`›&ʉDì9ÒFч©qЖú.Ö0!}U»‡!Ȉ¹’]ü [÷QCÿ9cW¿?¦ÍûÃäÖ%Zo 5Ú±•$ð£÷Âò-?ÝγB©™ä8l'ïû¸#³ôZÒUõ¢Áè8•¾Ã^~áCP†NÔ_RØ+ŸšHS²ã¢í1&;K¹¥9´#º5Ÿj®ÌìÙÒ1¦„CÞ±i´Nš8Dé~ÇL=UC ïpWj8uymă²[TÑþ0‚'Yç÷®SïH]Rq¤eâý¡ž,ÿÍ—ì[^£KÍ@Y§«§õèH*õL/Rü‹¦ô|0µÄ98â>J;â:ýh fépNF€ö+:£ì©A;ŠMÕÆ°Úª š ×&GÌÞêS„£b÷©Ô9¼¼R²>EÕ©Ê&U€“Á׹КóS°#RÐ=ŸÜCÇácyÇ&Py¤äꄹް7Dž¥ýÉ=Ø1r:ÐoK[y Dýþ»¨“+¬…�À¨¯wws0Di‹õ{)‹¥yž7†Se :Çì×|ÑFIñÆa=þz¨OeG1nõ +“ê¡ðtÒó@h“á)=`mFìoˆEÇVªÌ‚b´/Ptùo:Gò«Žï§»y`tàñM¥ »!Ræ!öÞ ][FbŽ€Èu™@¤FCä±R–‰Év)ð«ÀL™œb£ ½9ÎÞÂ(>)O²÷ö>ßöËV3"Þ˜é<£« béòÂñØÞË,ÂäšL¨±rÕÓ8׋ôhQ]0ïü2YœŸ‰ØGP ¡í/'vôˆ_¥úü¦4Ÿ¿šüâPSâÕëÕϹð^;_YµT×ÏT1ú¬¦ë8m4½"—mQ–Øÿ¾›ßE¶Þÿ×»Vthï†Ñy v¼+§ßŠ`¹Ú·Pmm0ÄWèýd¹¾/‚i�ÿ"ÑÒõ~7}ñm÷Ð84Ë.7—5Dÿ·nêÅ$Ÿ’âȘ·¤#öÿü ·9æ¶áÐ=UTñ©Àw¬Œ»=lüâýFdºaa{Yùj¿û³µ+#Rô“‡Zl} 10gºÈûìÝ~NÉB¥å€QkÎÀeo_ê8bï{YÈÂy—Ê4õ¬¿$ZúBêa0Á!¥ûžŠ_ñßç¿û¬w²fŠ¿u?Ý‘åY}ÈÑR5›ðïã¯-Œrb A», + Qrùq[¨YŸ|,©]jÎ9®||:#î‘ûR$ц»ø0’¥9SquöIŒ³ŽPMF=(>Î2Ã4SŒÑx)T•ÌŤÝD@u'OpÚhù4ê}Χdrl-±Ÿ}1Ž°¿ [¿/haØaA‡ú öaÝ] pzò0•ñaL6¤èetg‚–Ž†¨·‘°Ûd«|‘¯~‘9̸ұ.Sì¡!¾¤ÉÆÃHõ”Û{z3‚ _Öé§\”Y‚=)ÍÙzd`Õ‡ˆÿ(ˆ*¥b¯P}8™ÄÄOÞ®÷»ßµûÓä{üö©0ÍɃÂóÈ ÃéoÎ0ú? ø‘=¬íÑ_m€>•åú݈Á†1®6¦›ðãîÄ6œ-h4{Xr¢œ&RzGÃ`kxWm ζ´† õrsj¦ìÚãCƒŽuaêÐ×tù·$äL:ûs4ÚœÏYⱓ—A;”#¬ÞŸW®›åqÙ5¨>×o”ºhEÖ@å jÏÄ:¶ïðýýTÐ-øzb¶;h¨ù.K%dmCؤŸÝásÚmÏ<1JõÈÂG‚Ó}¾-º½„8ƽ†8rCB HÜûÕäŠ-¯ÿC6ãjí5DjëýæõSÚæpYÏœ1Qʾs«xPî3–dZ7³ÇÅ¢|Mˆ!© +Gp¬¯–µJ DÉÓ}™4ÐQéõË<dÙ®Æ^QÜò‡ÛiÇí_&üYé+Ûܳúý¥R¹’Ó‚!öm¥t£#Úq4Ä^RòYbDûmËF—[–@{nK¤¹öÚ“ +:sü¶#Ú0hŠhç™dt. +d`¯³%¨MYÙ;‚/ïY)˜>‰Ø¥b²�”zÛ“`É”5Ï"G˨ۡE:fNá6íOï>„uŽ+œŠÞ,Y곺žä Y³Ö\Þ*"Ð~IOFÖ6¶ÿl§!ö²Ïk–ØQËfg ÆÍK£SqWíl©»4‡ø âa‹kW¡©‚›¯ü0¹~Cz]Ü)Ú‹Àßî“•dÉ4¹Q¸Âѧ‰°—Í ‘Òy¬ïìNRqàPStÍ´)Ü ÷•8BAqî\8$U•ôç36ÞEćrÚ//a'yº-',tÏðûÝîU¥>·€Êôs¾B܇MvÊ"<�Ñu”|—$Zcx€¢ó=¾Å6䛉JB‹æ¶(ç�Þ$Œ—‹J?¡<ö7L¦ü"è•£Î>3êñ8VåëGbÞžAf&_@÷Òú}‡…'mfýù{¸“Ïyª×|«Gû3¢BCô“ +* +w\ Ò'A1©3ÛI8¾B†Ø$õ¨ÑåP©aÔÎ`¯ß)¢Û_Ù×£Ó/¿È;ºÙÓ Í+RÿÕüRï[ž +ÕdiƒÀîzÝÊžØÂãšW£ƒAGGf+U©Š¤‘sD¦Ö«©-A%bøÌþ—6®z%dÓ»†þ¢J&ß¡@d�œ1ëõŸ ÃîpD—pÿ—ˆrD9^Ò½îjËÕú1Š¯®f³ª«œÙ�ýRÁu�Ó8ž¤!öÕÆ{h5Tá´ ä8°:ît[�ýK§LÞ¬y ö‰$dàÅ;9D¦~÷ýFl¢QH&j-PÅBÀù<†hÓ +;<ZÜ+Î`ˆ‚)í¶9íœ?Gk‚:MQ ä;Váº`¯å‘K7Ÿ<Šyž–Pr~ß~lr'œæNö\ÍLïOR9ùO†Ð(jn èBŒî„ˆÆ£×©„] Uïý=ǘ=þÑ»©í¹WsêBƒù‚ u=Õä·ô£ JN…Šˆ›½åÊcMœgC õ+{#CPÝ+ù¼Ú‘±Ü/djÎÀ…ó*©ÄÏß›*vö×v\£ ýâî—y1(IKè�På9©�#Oöd(îlrž AÜn¨�zÊ=k“ã ì|WØÇ'm]?í'–3!zÊü;âeUzR=’Zo?¹÷ÒÒ×Ýw,¿Ì<Öq ëïyg<Ú†žÉ¨?)û”Ñáú{�åúú¸nCûµ³¦.«÷ÈUPå{Ǹ:Oy$ÄGU?!ÇÞ»»Žä^=/³!b†Ç«#ðŸu›;ÝI8)κ÷6o2>u©âøešóO.u|¿ È´HQ‚? +VR‘¼NÜ7Ζ}°ã»(÷†`©éÂ>!oøé!Þß—Œ[õ(4WtQh ÌyœÂü Ó8ùLM–·wZlC*‰¸I¸8(ó7eÖ±„~€ìiÁë+·fî>~gaÀLi¨IÈüFè5Ú?ú¬^'ƒ=Í_þi2jü=U¨k *®1P‡#{j×n¹§ÉÞ?¥âaˆè\Ty÷;ì8ÃŽG^çÿ/{ïÖkË’\ç½èÿ°_P‚µYYYU™E?QXŽe›2-†!tJnž&šM ú÷Ž1FDÖ\sw/ŠE-HϞߪ¬k^"#ƨ+ÂŽãâèBƒ"–¥U‚ÍrÊÅíEô÷‘{ŒN££²—)¬G‚ý÷Z^…RÓýàbQPؼ2tug’fö·KY!òí ‡Ô”~åâ9G(Ÿn[ßj3U–œÀÕBèJQô»kŽ0¤Xáöp¥yLµ[ˆ*Ìl(ƒ8ê’¹_Ä™Ü"´Ñ]Û4;‹—røäk“…éßéÚÛØEËÓ,5“q6?ÌÄÄñ¼JI¹2“V4`âUŽ§gî5-ãÕΙÒ:™1r‘î–˜çRZ…ª<y5Ê>Ô·8V§-5„ˆÿ¹T^#"”XDŒ¡ç»N"D¢‡@¹FäZ{Bþf²«º_•×‘÷¸J\AÔ*¦þ.ˆ-½‘HŸgæºN6¯0{vlë3xz +j'WÇ_®;ÃÈ3ŸôbÚåô�ïè +Iìˆ(‡p„·´]¹…Dʳ'QÖ3N lU )$äâU Á–ì1<_H2›\ž€@Ogw;óõJˆ†Â’Š ˆ6bfCКŸtddkPtâx +Üúv=µhüw5ãÔvýNö +€òÖ&È–*ªŸa½úÃ[â€yŽ‰ v¹Wmøÿî^膬ó²QßÕãÕºijwÔ,íI9j:ql©F)õ|l_]_»Bd”™~Å›�ˆ-´yû¥0äÝOƒÂ¶I¯ÿJØT UœA'ƒZ=IÏñ"Ôçðªfm᧎ÅTÆ?’=–ì@PÊo‹½'2é·T~0â‚‚¢TA”sb´^0c³ß”fcCФè-fª°pú;+¯‰ó;¦HÜÏJzLñûbEí¶¸(¸K(½Èâ0ÖEŒŒý¨P¯øµmÄ® +·¦†P1f÷¿e‘2©Fé€8Òì]§à#*K‚°—ùòtèSDÕͪ¡CÑÙ4èERX"ÙFjAlîªÕ@˜}.±j¨ôÝ~ÙЪèL&ç?q›¯Ë2š€uîJ•tàxÖÁãåðjæ¼Ï]Õ¥‘]\Ôml¶\% x„ii·j ÐÉ@}D’Û±-ßí4øŒÛ˜TÊø‹€²RÔaƒØÛs )Š¯†`Yôëí‰÷”©r�곕>úø!#K#Åè‡Ké r¯4ÕFB\/Õ¹*Íl®ë®\I{yF[ˆ0ÓK„绳6p÷¿!Ÿ,Â#!Zâ6A»>4ƒÒ~léΉ1±GÊ“A²=ô©²²å€{Á¼p#<åfõ¢€l<C>G(^“Q‘àÊÏWï´Æú³³+öNVw3•¹¸|èNOzþ9p”û›ˆ½˜Ù÷l+ò2éb¶°;h=Ž#‚ÐL!Óæ/]û)cºÌh�€B2ýÚvZoQš¶"z8lô¸bˆv ð°éÇR¶è”^í¥† Ê0v13Bá:ß{“Ì£3%û1äqT CµtÔTÓ‡Á>R_ÜPÙöØtb™A¥M¹l8„¥®Èˆ¹Fwã€}3Ï)EËÒÖxå†OQ—§Cj4{=¢;éj(¼·4»ÄZÿ½|ˆö¥Ñ<‹„ Î(h&dò±tË j‰é”< +¯9 kºë‰`ƒhB +q-vÇF›ôU2è† +Šw<gB1¬œ?é=§¹(·o¿lì€BG¨„†`WmóîÒ‚°/=B¦ƒ!r;Ît +Æ–i(XSg×+\fW}ÌÊ¿Sk*×Áº•LUì¨Ú©3âÜ”ZÀé�ú"%_êlζ=ÍX;G"¹4Bº?÷ô÷<LºUÑŸv}5RSCÈÊíKj8打MÅa.ùŠ:•Æ<¥øðaÝ0Þ¤p/£H=ìAhØåL%»÷{©äýÅAößøÎSÕÑ $0B^à 2ë¶,&�â9&*˜3su6ó~Tò¡°`HÝ'sCƒu,Îm¨ ²?ÜLŒèm-¤vbHØ?:_l˜H{@¬w”t@H«[^½Š³Û+º¯–†èÛdçì„'‘WFo·ÙâX…ÒK16t Ý4q6Ö)ÛžÕ£ÖXCíãÉ ÐMçŒ]ЮWoËæÕöš×d‘À7Y³kHÚiÑÇ[ƒ”ªHël‰ú°ÀN:ÄÙ Aé~HÒ½;¤…p“·5IB½ïPÜÝЛ– +ˆÓ(˜>/éÖuô<K–õ7Èâ+{œÍŽäÓ¥ªŠÂG¯5„:‘°±NhxL8òG8ƒŽS]€„h2?;ßáß +ÙÙü…qÙ£žžë%9ÎÝ(°„ï_:´aÜRöÅ Y`êê®/ÿQ¬G¬•SñÁ)i£{øuÁ·Pê~Ö (¨[ÓNL¬‰Ç=œ_‘zØÛš@=¡>"“ëÆó›9u6âru®Êöv+{½«¬þúšB8£Î-IC„$«o»û¥`È8@s[äA`Rkc+\Ø0¿éÒ²0ëÀ½¬üö/!õÏ +ý€Ò¢‘‡Y„tt˜Ñi4š‡aTÿúò»Á†JUÓúrëU:ûッòó—›TÊË3¤5–>:[b¥ÕBÑ+ [µL|rèìRÕüŽ,ÕJ1ÿ‚·‘Z=b öÒ‹ßåÍlMûï«bG\Q-ï-¦ sËJÎëi÷DbçVb;ê”ñªAé”:•Î€X7®@‡KÛ,‡ìE¤aÜ]Ü‚´@vª?W¨;qÁ95]×.¸²v5‚jÁØ©¹(!ûÂ÷|ˆ%;Ï×;p19ä$qK‹øÁeχˆÙBÔútAWmX9!-›ˆj‚XÒE%Ï;ƒ³U¡9ˆ©Úϼq5èÍ…”–ül‚¸rù#"bjè€yé—;¡üŠ|û+gFç‹ZùƒÀ$93•ƒ@‚¶QNdŠ^ì\!´¨†àâ%›gAesmì#íɉêÔXmå‚°»ÈY|6Tu¼ì±L;1`7rÈR„-´NV•:ÁZ}óÈèÛj^:‘󩳡¡9f<Aœr~VC¸½³ú0Ø�É›„\Lª®,öƒ÷KB¥Ý;xi™¥€h9Á ;ü\¢’XôÔ®¦¥ÿ”C%ïŠ +hFE×wôjAœ«<‹v…eC?ÜÕ`ÇÛé˳€âNã7ìXF~’¾Ãv–°C¼¯Í=P«ÂÊl¡Î[Йž�Aô1)++â‘Ä•åæ”FºÚAuÜ B£ÇºÙ‰¨3©ƒLVÅW*U™¿ß#ï°¡\‹TüËßoé÷9é=Ò'Dp»õœ$`©v4®œÈº˜lHŽÇSwµ³.§ß`o>6½�w™Aúïð2zjü~0É>„ò м↠ËÈ€ò_-èœMŽ $ÆM=5 :K©èyŒÜ¢t…¯ú]'&|8ÓĨ"'î4»Ôm…‘h©ÐB^ѽÏê” 'Œ}¯@w{ †e$¤kq@jO½°}g6Ô +¥€4WØâ|O$© •¡�ȘS¼Œ(éÁ&SrA º;SäÄ¡A™ÀÈ!¹¾JÄÍO&ˆyîóv"µº·v¢[§‡.ÈþëŠÍU5”)]å<æDËÉÁAÂ3âcŽê„õõÒë!‘VæyE)Ñï„f¤llèÈ•¾‚.%Ê‚P½ª>±Ý¾ÕˆÅåKg·$§Ìaêfs%ƒA ˜Än„…ð'¿ Œ*g÷}PžëºÅv0ØÖ1æé +á²æn{ŽqXµžWÔjÖuG¥V6´_kÍ$ 2Îä4ꡆnJwÇØ…Ð;‚8áLDex5dÀQV^‘Šø°Är“}›€ðL”½;€-ĨaåƒóY›þ#dê¡Ô¬LH@¡¥êæá*ô'µ„õF¡úCfÓN”7¥ÎUžº›.È&à¶cÞÐU•±NªOÕëoÓÆðfÚHœÐ©ÏH£N5„rÕøÌÉ ÜHñæ¾³ÏÕÙLq‹xIÈíß—™"jVd÷¬v–U +¦‚¦•oòûa ÍÁ™.ï‹ÝµT]bÒ Š³}ÌۙذgCP‘@¹-Úâ0 +e(ÚdtÝ äçŒKæd—§ô0›½BÕLÔ@‚ý©y¾bÊ~ Äb(ĘJt¡ªª¼u0� ¿lˆŠuzö}“žÀ"ÝîD& éö¯É5jÛyU`îPÔ àl‚¸×L8'JË܉ó¬Ùeö%ÞܳRCIK·4'.7R=´/ê„Íj@ÇK{ÙÃEóÑë¥$ëÑ–ø»CØŸ’5¡=ýAì«S¶5 ¢Ríýg ¾žÙŠÝêC]¹Cv^]YÖ ð5lUqb¤1ØÏ]òñ`¹ôuªÜZð„bÙ±ÿlƒÛ]"N@=tÓT#¥Í†¯£&¨Ø’°‚ZA(G)È¡†¹ÜÃåè7țג⾯Ê3wž°ø$0%+IU‡^'·øv6&õ9pø×¼×ty±›ÙIÜ[è8©Ï°¾(•ÕNV +L]5jYà(NÆÄvñ`bJ/¢ 0rìÒ‚€,Ó™éë€Øµ²ÞÅÆ"ÓÇ|X2<ß5x6h)&�7ÿÑckáÅ…# %íß qdÃ.bºŸÏˆðFSìÑ(@âú•kä&¼tj½FÏ“s`n×Æ)<©› :Žf“€~Ú¹LQÕ€´ê 3gN%FÈâK-´!9Q„/œÊBÞû°{ :ƒúÂÊw&œS»7ìAŸgÊ*€èKqAäÜ›wDriï‘Å·ò`™“åÄœ÷q˵µcß8W·‘K*K‚X"6lh15ÕÙ™æÅ{‹;0°Üá‰[,6Š+ºkï\ǘežmyD7TvÖB´Š;�YËÚÙá1mÎGxEð#bf) l܆fr6çå–+#¢1²ñ|'’s(Mâf‰R6—2}AôS*Ml¨W²üÆ—]Ö^Ë7»nG¨åÛ€3pÅc†+ÍïéA‚ #M¬‚õlªætÖþm㦠t1.Õš8‘ö˜zÿ;S]˜câÐ]VË„·£_è˜3^”ò xŠÑƒ¨Pµcº¶µI sà2Åu¢_ +Ã$qÝgÈ›:¶ï'oþ²‘Ÿí o1êFyº‡[Ô„»Ž¦Céí ¢—ÿºóäƨ:T¼;GUn:t#ùRäСRo¥ëÀÎ(;œhë4�¤¿ïL¤s¦og~zÊÍqÂNNk4 +â„ÑÕjUWÀ]‹kµ#mÃC¯v†ÇýG¢|'Í։m\Þaúrï¡SÏ{‚»¡íy5dHguH0õ¡ùQŽg|ÄâBîÄþ˜D÷K¾ô5³ë|°:P6ªCt©øü{•ˆ¬SÞ«G8w4€¸Ž,QC#í›xÿÏÅ,Þ‰‰yÕ&ƒ(gà lI»”H°ÿÔh̆ÎM"Îê[NÌõèââDîñkPDiEHdÇ©P÷O‰ Úq)] EMcëãk¦´2äfïSO;v(d§&¯»S %…ù;*ÕÎ8jÙNèN-'Vå¬ ÎÜ« bÑLàŠ˜k[†»HµVï6¢tìîý(99Ò$ìšÜ׈A~}I‘qc‰]µEò– + ]Y!æ·mé50PLÜ ë£–³GÕÇŠ¤W¥Š² bÔ×ÇmIß¡ÎÇîõä²&ˆ¬ã×Ë#‚ø¼rîªssâzäÁ€°×¶÷úÌ 3fx›ŠˆoËå*¼$âÅû‹½lÙ;ñÐÚ–y}EÌJÅI´ a;°è†8ÓžÚÜ•ÈíÌåÛÀ•,a øœY|L™œ£&²ŽmßAÿ 7ì:¶Ó‹2ˆÈ-oÁcÿ(ˆÅ±A )9âz€ÒfñˆÃÜ‹ð{0eÑþpo‚5â›^Y˜Ø%Iöh„?AjšæÉ÷f‹ävhƒ±c¿è¹¢¹ŒfÉpßT鎎¹)njèDöL†›íž—ã¥wNØ9/=¿{I-qAúÚv%ÞK5„7°åž‚CÞŠI�¦ éÈKâ¬p‰ Ú×ÍÝEö¡^1£¡^¨óØ–ûk+<¢ô3‹†[’ßòv"ÒâÚ¨ÛÏêef:t©F]BÃrT +ÌNŒ–¡&eÆèŒ+TkÒzÂ>SíÜgÚbÿóª€ÊDJ]6ˆ®®éö’{Ê@ðݹ²ÏF%˜ ×ÅØ ”FqÌ0CÚô aKfÿaç1ÜÀžKÍ–£a«†03ßÓOЈÒ#îÝ/n³Ã-ÒUÍFµnaëq?DvÚK3»äÜØÀ’ûvjRÚ±ªýçýe-Ô–Ël“€ÈÏãÂ^‹¼aœ¨Še˜PƎз/œad�G9ÿª±,Z2Ãœ€Ÿ}E§@À!”ÛŸN(ü…© 1l6„Dõ6qÚßÚ’»àD8Ønucw¼³ìÃœ¸6Ú™5Þ9>?É;‡²æ´ ‚ÿéT1§+¿‚HE&ž +U+Fžì.ó®ì·!i°õªì„�Ue¨À>|.O rB濯û@ñûhégÆfŽSìÏ!›ºVüÐ-K¶X¡‹°kôÌbÊÍ]W|«²-Ÿ*D·µ«´/c¿JtcõZ`Bõ‘¶p<$‚`Q¡æãDÝ׵̒yRAØ]mt[%1I'9ÑíÅ6x"G?*‘)Þÿ.¯ŠÁ†ì¿¯*—öÌãõ×&bÞ}è`õpF£š¶Õ¾Ê yzjÆѺJÄ›äPd~°5.±!]3cŒ Õ=+O3½G™›ÑïðÖÎ÷þ@!ė³ ˆ§JL7 ŽÌ·pS j£¾ Ä[o³ ´×všeèãDEŒÔt1Bi–÷qT˜:UkÄUª< RÛ¹®HN™3€57Js#"ŠÒêu7ÄÝ|¹Vojè¾sŽ¦†ÎG5ÐÀi§8Q‹±VåµqµP)K#Û $Vš[ƒ¤óä£Mq)$‹ØúG’îJÐ@Yø#•CDïÕBKE$ +Ã8L?µ«ÇÛj“…ºñJc¾¼ìc‚˜HÐhË\š�e<N(Tî^±‰?¦YL% +‚R‘�ÃÛ|ïú' ÌîZ°¹}{,SEæZê1†{j %o}#•vɽ6ìòÃD'Š¸ƒ8X*[Ï×sp—WPùµ;q jæÛ:ß31/5"뼇ˆ”}ˆFÆ…ùRÚÀ˜JßNX7zît\‚ Îç!9ƒÚäHvš+ŠvÎmO¹Ç[L)”Éì‘áEAkz‰]˜M´âCÄ<ã}jÙŽ’gsú5 ©LÉt'0¶WÊ'ÊÙ2Z +Ÿ0¹Xð hµG!Q6t?Df�á²~3ˆœ¼«!ä`o]ÜX$ŸÕFV1°!ì§îr·hB®&Ê©œHûaM‘ tTâf)›"`A¤4m¾ +nXÂl.È,-ˆœÀäêÜ&Ë´@ H2V$$ ƒJ¥CâÚj{Œó82’Ö`&mûA^*¶ØBùec3/Ù¿ àõB×F¶³ãÆ£8P{TØ<³'í©¼Ä˜Ûmm.•¤Àþ` ì6dH +BÍÀBgN&ƒ¹5fÆ·—Žï|‘qNÜ'eòµ8AÉsÛ™§Ú³ç]I £ØNðÕÄ¢•êÄÈ(¡ØS)û4ò?Q+ý:ŸR;Xnì9÷íŽE‰Se+©¥õ�¦%ÜqȆV!wôœ-i�(D)ÉÅ’áù5ƒ¦¼¼ì€¥EzmiœÇ¶Ø÷TBO~ø”µuå¾»a!gYN€w×:†{ÉŽ¨xne©’>Œ/ÔzŠÉÔÆ‹„Õ.frQž"ÂyfÏ…½¶/Àe_èì©–7Â0Kº +’îÐÆtòn˜‚Jú»Â»g>kí +ì»U‡ÎXS°3Æ·1ªèà ^Ĵצ 1Ý›ŠLJ~«!äÒn™IfP[ä3†û˜<D@\¡ >¶ë̲·S»lÈ齎³‹™÷[Yñû’Ùç�>?¹e9R“±<d¤ÕxéC½ð/?×Uì^:ÑœÖZ:)H9íx°ø¾4†ÅFÔ¡ƒ–{ZQX‡xȬ,sܵŽ$A÷°9`<'~Ç ‰ëÙÌ=HP9X#<v–™Qb>ê'NdÅé ÛÔ“µ¾lZöìha{µ×8±oRÕæ©àiS‘Ši˜‚çF5d°íŽ¬2µwè¶,þñnÜÃ\HSdÅK¶ÔœuY7ŒèVÈ +®%‡ê9Í=žZtÖHCa©ßü´Öc,3&›´1†ní}ýÑsRäÂcoÁب<Hâ^‹S0n”Úç¹Ò&þ:¯jçÄÊ\@@ËžÐÊóKò;ÂJ ˆy§ãj{Y¢©¡¹ÜÍ€‘¹±¹½PùØqÜ[§<³±¹œûØ.Î|Šh…ªíÔ’8Ûoµlê‚°×|›Y¦(Ô3*›Í‰‘jèDÆç%~ݺu<Ý1æâ +<¼0ù»÷ÃT¼Ì¸~VCÈL©J=‡T ‡Aøõ’&‰Á|òNâªÌ3U¬Â†ÚjblY#WÃc÷¡ÂeN ¥ž² NX×$m +¾/UÞ�[5!Í¡3PƒÈÍ®# î1€‰SMˆP™˜Ò?jäÈ\!¾ˆ)Ý•ìt=Ênƒè[c´2ˆ‰kë2êqœ—´ÕP_AãÒ$<ˆ—=¬¼æRv?V•Ø Þ5l;6Y¡„àøÈ°ï…4Í}dþdùÜ™ks)K_óë]öIÕ%ØXYÆd¥žPt•0‚m›Ô]HT KzA(Ï )5µ³¨#’ÁXÎL¦ž+üoë͇xi”0ÄÂ$\¹7$Tý˜ùj˜Lž[%:dÿk-é.ü ¶òöÛo)¶à�B;…ÈH¤“b¶SQÌH#Ñ8ÌH:Ý–»œ…@ÈqÌ-çØ0<>¯ò¶�„.l®;ÕHøÊ ]`KJê»Ddžï”=é"îCùÑj¨÷®a‘P?Õ ÇaÎŒé0‹‘€®L"Ójf6„Ý+�Á*˜úQÆ +53%œÆ½±‡|¤m&ˆ)/'½º6™°3>"L)Ý3E�@ƒà‘·kLzÓ‚®¦|(ž¶�§¥ñõ™a„5í‘6Eñ;–ƒ¬v¢gÝýNJ]cíÅF.Î�wn8á1´¸'á‚N|ëLñuC(=CÐjñ¬-eÎAD±¾úò ƒ„FEdQ]ƒ»?Ã=J"iïЀ—‰È•©MíÖ6A]šøqÃu:É“ ulDÐv‰Á‘`ððª†z—º} ;Ôo f²«»´ƒ8JËÎ û:(Ê›•Žú;j+H%@â²+r-ÇKº?ˆÞ%ñr¡|G½q6g·‘8F^6„ _>èArq"%ê05×b£8韰dݳ!ȹŸëeÛ7Ó¤³‡A0„FD:ÌTB=ñœÌ!¡™Ï9|Aã›Ü¥›áqcÐgÍ5z‹µLhŽòÔº%gÓØÓŸªˆgCH²'?`Búˆ~ѨƒÎï^~X±ƒw¶Ü+ƒ°yNì ħ6J¨“ç«®¯gùºÍ{0Õ]ÂÚ(–ãÜ|ðlV¤xÚH]Úoz¦hûXÏ;ÛY™*POÕSˆUŒÊš Qâ¾%ýNíŠï> ý…õñuH…`4#ìk +듸‘¶—®! lå¥6öw„ y¦´Mj wzLeê€x¸ú:‘‚µÐ–GLÄ«ïZ½…”ßÒ·çŽÒ•‘ªv™ø‚ro욨’F:›Ñ¿.gÿÌïÖr}†ÃáwÐ^7ëð0KýÎ!ì~Ú”ádóØ¿Ö¼QºÃ]‘nÆí¢%»Ø Ò1 <àà€5 8Ûy/{gq6€N˜•ÄTß¡Ü«è<w!¸iO(U¥¯h_s·¹iØ»"NœgºÐqpÝ‚8„`˱' ¬}«³‰\£q)Ç%oiG¸INÄA`‹C;ÝNìy™A¬â]<DðjmPU‰|'è,³É€²‚ ±-gÏó( ÑR •gãs÷µ¬u÷šj5w;}t6Mššjkr:èÄáFŠ±ÍéĥʃIâšgú‡9‘|ÎF™ŽØaÈ®EôHºJׄ ÅlI\µøÑ+ü–ÍÜœõ6Óå.‹N„½wŠ©:…jAt•`À*¡×™íìH`ä&¡y²žG9 »£cv_5n@‘<s9ƒ8ú¤tÈîˆG +tºÖÛÏ¡]q'æ̲6¿÷_ûZ‚ê?#´¶LªÀY0Wc>!/FÊè—ñQ…‰"ÔqM2^®—�ê¨1Ç×a욯0XàTàƒ·Å²b…:•ÉL§Ì€&$"ÂM(ã² +c7ÿ}™PŽe‘~Ù̱•$V@vžr "MIy(Â^¡?Kâ83YH í-¢‚Ùí;c=-bû$Ò¼F„u”Ì[#AéXÞŽÙŽÝmªt¡"‹µJNÄ\:»ÒËuBÖ3õ%xk ÔÚAQå%Á‡ÄfcIB¡†ø™5Cì'_G^ œ|Ôag+KB3ù½©8ð²¼3ˆ°ZìåaS íâ8€í +>ˆl&“oyÅ3#AjgV–‘ˆô ⮲Å�ª²Yí\šbêÎN ëÆåP'*€“k¡‹Í\!ôSx'*Å¡ÚYì‹Z#HÀ3Ç2ðž0IÚkËÕ]KžK¶38Úëù`]EWN¤ B/{KS�Ä€B¦d£œ€ñGÕÄ<NN‘ -a]'ÐKÔ ›è)i†nZìè %ÉzßnQ6ܲV^÷ß^¬N1&KjO£’s‚HÿÅêañ¾]j›…vâ¶î‚zA €;F$*}‡„ªuêŠf[rª<ˆ8ÌÌ¥~¢!Ÿýf]öVk»+Nìµ¹ÐU¹«)ÈÄÉ¥[×a Êu$‰’MÇ Ü‡vLKi¼1,mÌ‘aÂPJÒ(mMß*ʃ•è„a‹´¼wë%»áÒwOÏ!`_•œ)˜Œ€ðÞ×tª¯%‡õ%°ëlû*�TŒp7+�d¶åk†!¨öƒ(½ÆlO¥ó€YRx”˜ÙD§ ¥�Ô³¶zá:6e·Z8B[î¾=†És±—ôÑó£Ã–Ô*‰´âß¿¶Éi¨iøïØIÜÓ•¥å¼thæNgÇ’´âÄ]ÚÂAœ‹Yõ‘ÚpèJqBûõèù#$ÀÒ"Ûé7€¢S'_ƒÒþ¨v° u7*$840!åöK¥>’‘µ™íf%m«7^¤ +®eCˆS"С3ãûs {Ží0ëgEn�6¨¦Ê‹ÈR{ÎHíãbúÈqŠ<Ï|Ðm”6~(¡®0 +;_¼ piš£^$²ŸñU±(Ë9ðØc™±D§ƒh¥sDx˜¯c]Çj`R / d®KßÍ ;P“¹ÇPŽDYÓq•SO6´Lœ€Àp16'âg{‹2¶`hÁÚuÁSÐ|:kÄ%[ÉÞø4YØy˜»fåAÀB:¦Ÿ(¨ÞzdoNy ߸#ôÚøVÛ}?½‹g‹¼¤rbÙòâ –´>ĵdK•íÈ·]ŸÏ,kƒ�àvIí¥�TúuªsIPs6„¹B\8b|„β* )ÃáÑ€}7û͸Ü&܈äw,Ç—e±]úvúzniósžpõôà B5>Ÿeÿ[dæÑž*2õ”,'Ô‘Kû3A¬ÙNèã¢/ö‹$FÕdCܸX‡îÐ<‡4ùHÈjB—|× +=„U$ñ‡`{ùœéÂ(œf@Çû’6¦è-.ˆ; ˆ#4†‚(á—<Áë¡®9¢Ê¯G3‘¥·‹@yۨξŒ”ÞB»½ž¼Ä«]*¥>£³²#HìåíÄ(k´ Ž©ª†¤•9BØ7â¼›³AN5teÎ ô¥Ë„³q"²õ¥3Å™ee—C,`ò:'œÁc3bo;‹€D0CIóÔêœãÙ + ³âÒ\/o„µÕÝæØtÁ~çd~nü 3ÐzÕ.¹9M¾&H°T±eËÅŒê>1+Æ œ# +«¡¬€vB{·;ï9ö#3ëʼn^r°NŒe’ÄÛ•~zµE Æ!{&ÔÉça°/!Å{'lx+‡× Ôî÷êfÛ±í™5™ e΂îè2–жqvY¾GT>ÓØ:KUpNØ©j"ÛY“º:Ê9ˆ™[L$T[®zp™ïíÄD–ݲ„Rè–áF È\¸d�#«Í@ÿ‘E^)7O¢m)3í Eg »vùHE‘ŽNØij!\¢L*†t¢þj‡³Ê|¯Ñ1h³:ˆEaÔ(Ól£…Þ2 +vPh¹ä³2 iHçЪ÷TÉc#ŒÓz™AI…&ä$WZ”š0÷à> «”E‚È!˜÷ËTwbo¡,¦Îñšxyè„ù̬ð�¦¸!âa>¸+ÅÉýež¿îØ1‚}a6tAv ne’¤c7QîA`‡›o$à9{¬Ø~§7'G9¦yF¢›4ž×*;Þ%Av¼:E;±#ýú¹„>\Êí„Î…UÄ$RHš„â\Š¡¯9³€É‰³¤Þ²!ë²ôÂ!úËhʃ‚l$èžZ˜ä~ƒb¤°ãJÉq'o¾1¡&ºrQMhÏ¢fÝ×r‚Õ§®HÓ@ÍfJkᨆ¦rxëîsJ8‡ãœõ•Ü¥Eí€çì͘ùBN}ÊI¨U¹Òê9åéÂ¥~[æê°QÌ„~¼ùœNfÏ2ã±õÚ½ŸRÑpF|R¼q"͆×"Zïĵ+ÿŠ„|¨Ö†$Qpé|oMwùî6¹jæ!„Þ¯¶Ãs³׮žjLb누Ò}Ù8±³¨NëKl÷\ë„^sTq1ñfV‡êýó-*<Ì^¹UA,U$Î*¦vbñJ͆”ÅÅJFÇ4çÀÆ õ…D 9f™û¨GØ¥Õá„«æJ@¬³ÑíW9ia¯\jÒ;‡{&®‘8· +2;1™×ª!i;äÝÒ“×ùb»¬Ó•º�yx8ÑÝ”75²dCÐãÚB÷*¤lƳæQ¤¤Êªƒ]c‰Ú ÂFœHr©fÖ´"g&"‘Q‘å�lB™ùì�*kb5H€eÇš?aËôe»ö¨å"[9dËN®_o "mu½•¹'âÎˈÓ(¥‡Aƒ n¼?L©sÕ9,rI%w« \ž.îzfCÖçÎM¥Ô ÅÃXý•`q‹:ÓA™€ÙYš+íÐo‹úÜ€Î\Ï Õ0u;ê?öÚoGy?“܃å+ËÕœ;çÉ<—ªŽŒk“°Ž4ÖV"®®-2‹@÷£*Ë¡Az½’èV;“Ë‚€óCƒÀª4n?‰»r ƒ˜{“úo6´ŒL„ÎtpÅ«kH}‡ÙóãÞb÷«¤:I#U_z¦‹oŒ}ØéçÄ>û¹,dö‘u ¼¢óÈm™³V¯Â ‰{yö93íYÉ+(„*±ß ðôk%s¬‚Ò$ …ûßÙÐY‰’ÍÞ\¾#<ymg´tÇ®Lè²ó)žKÑX$”»D0(¦¨A0—ê#u”ƒ¦êM„Ô;uA\e~†8ï¹v>Ãîk¦¼ƒÜ‹Œç~z³œ¤;±ìÝíãRNʉ4ıš*e“€ "Ì +omΥφç@fÖa]=€³!…¼8™Î“ú–»/¾LÌÔ#Á8µLÈ£ÁG˜íØP}.„¤€ÆÃP™W#rˆ!ÀtHN¶Ë4{[nܵk°3ËÑ”˜b_óÞ—8f§#p®/ì¥W\ç 1Ó&µÚÁÃuV@vÀ‹.Ì$fš¸’¸yEÐC¬ôØá6qYg©†Î»hšáâqHzáKÈQµGZ£ŒˆûZ¦È5íraȆl¾çÑCcöa6<5á +ÂÖÓ)—ÄÌ’ä PŽÃ<€l§ÉY$óí’ÖÉj¾„—J3FDNÍ«³¡s™—ö¹Ê©øÏWhPk{º3«ƒæB1ÆêœáÐèªÖ$t§ 3µ—ÃS¹¡Cß(ˆíºøméVVÉlHZ<™{ñr p5¶‹~Ö¥432â}Aþ¨Úœí4ÔZ³:–»òbâ0ÒÌÑDõDU`äÝ—õªÐô»¨µ• •<· ëF;eœÀf +ÀœX“W0B]kŒYëkÙ¯ƒ›ÈN‰`l†©Êƒ�X<¥¯ná•Îâ• ¤o +’ÂÙË÷jç*‹Ì€T$ÃÁÛˆóˆ½xÞ6T)‡wŽ.Ⱥˆ¹WdãÈE~Íæ—dvoLþ®X„ñûi˜©Îo„ooôƒ¸›6KIÜ[jHdC¬¬WÏC½ãŠUžUÏkÞQÍh¬Öûi߄Τ’âRVuÓãE5”.²'#ìšZAT± x‚1{>™ù€ì.¹uÖcÖ»2!¥ÐÄÐÎ@=ÅŠëe¨E o]/#YÆÃK>D jÜ=‘¥$¿ˆ�PI=ª‚Û¡«‚¶aç†DòHæ“N3û¦J£Å„¡²%ÄÈʨ æ:i´;U:IÈ<’¯jNìÔ=v™ ÉR7Ž7[½ +÷µdƒX¬eœèKa³}0í—Ÿc@«¦ƒ¸RÝä-HcÄç’â-'æbUwŠòÓX…ðÖÙ§$ÆÝ–™4´íT*-…c.‰0-°lHjÉ|/OfSÉ£/iÌçׇZD6 ¤îˆ«ilí¤BŸt!]‡)áp +¼ëÙßÈdz6›³Ô/szˆ”|”Ãçr#k$µì:±›¢øŽk-i6„Á¬8WîÄiÊHäšL@ Žž "î}ɹ>]§köñHY;áÅ”’å³µéb‰â÷‘=£¤_²VÊ ¶R\Í`ñºn¹¯¹£F”‹Xmºtb' A[A*½Î†°C«Ò€ìüε÷A¿ÇŽÄ’Mbp“ÀÈ"¦j"”{ÅÛd‰ËêÚ)GI8q/ΘAÜyþN ÷I›ÙPª†òtoˆ»/Ù½'T ½&/®ÍɼV^«;Å›üƒH¢°‹8OWÊÄ9SC¼ê>GÆò)ajööS ;ØOÉvè0w2Žb3êpªS>fY§±—Gd°fð¬µN»ó¨?N”2_@Ë݉†K +×cÞLâ\2ðA Å3<õÔΩ4iÎ`ª÷.Á=ŽIÎl{ m u¬´’èÛ½j¸:´—„V@GY´‘U‘ë„,H5R½]놦w¹© Iƒ– +èÁ%8 ey:Ú£ÇÄßÞÛ~HKÉ ›jºÈãÒN:MðAÃ@AEŠAØaRŸÀ ¼ÿ½t&'{9—@J½ª¡kW-,¡‘{%<Ìu&C'f*“YÝìÀš:šíŒœ2j‡4qТ€}OF²Ó>UçÂYðâ¹”(©žs`lv?Kv[¹V:1Ò¨]„*ñ{jNU+3Òµ0¥U¹J'Êon©82xŠ°—dìZ¾ãèó™Öó¶±î3.ý&_{º§âsAP>;{¦k©qs Æɳ¡½ßëve°)¯B0¬ï"žûɨ´€·bHñ€€d˜¤ñ²!äÆQñ8 ÅH€/U# +éB’Fw¦ðÊ/by…³!ÄJjÔ¡‘ŽN:Œ=Å63u�ïNêÅ¡t!.�‘EÕ˜]P ÙGõd°Á¶„ÛND]³×‰¾S¯-‰3²Ôሣ?6k\ïj[Ò Qjža™ Æ"AíÄÀ2`Ë|f”ãÃÖ6ƒÚÖH!xyì‹’e¼Cƒ'ó×ZA¨rßYÏD¢Ž\WF9;t×r" xÑtˆ„MŒ–)Æõób•8‰Áì"~ ¶Öf]y½s#ýx{¡»¡ªcGªb˜/1`Ô^šØaÓÂýYŒ”‰dŠ¦k®. të•zÚpêz‹(ͼ .ÊÔ¿enP0ø +—šÄèK&Ù ³Ê@3ˆ;fŒüÈnëgO€²Ä—�¯V´Í*]ôœ‘Þ²e’¶Øü¡oÊÂÜlÈš=e|åÐ%×P.v"¥*çt7ï0?"q—w¹N¯†°¨UYpmTäaγê«N•Š¤`ÅíÛI¡À zfV;W<:ž;Å'$€RûÑ ÄÁYðCbtBá„%!n¦#²gĺ-ǽæ@ë‰ý„€¹g¦Œ]Pr¸Â|.™R³od°0”‹W6x.)mƒ2Óõ„í5Ü'ü¸íÛMlhù.RÊI~p/¤†AX-J¬4ˆEòÃB…º- Ù”rÔ²ìÚ÷Eã¼½Ï +®Ûøx!#vSÆ�r¸Ê¸Ì‰³å�©v0•¿–œæ;šT€äaªhƒöTfí¢<±ì±¸i²tÚPÚÀϦg!ò¡Ã(¹ˆoÊj¯:_ºwaOožê”³ÓyÒÒañ•DDñ;g²ú–Qî ]*Ö;×+' YË·<¤šk yÛË|ÞÓú¤ÇáÄŽøµQzdĤ‹ C}F9¨^î’äÁ’R¶j$ÆR["õ×ÛÒÐ"õéÒ�%”çDåÜ×^OËz*ˆ³’ä«ês Ab[B3³«yçΣ¬…I0*¬w‹0ÕågC0ÏÚjÉ{AVÒ*$æ6öZòâ¥ÈB€ 2ï˜wVxíLãÙ L6º1‹íMöÅÝ•¨ùÆPóß‘ZÊ°q6ƒ ü}Jʸ2üßÕ)L™©ò¥Ä–¼<ÖI3•é˜=-«¡ÑÖÜL픀 ÃܶXª-›—¾Ìê×’ PˆÞKN< ”×'„¯è®Ä#2HâTW¯Båw’BC{Èàk[Yì‘è™lœ’㈨ˆ)*´\”2åÚP<ó0Mö¨<_M*·%XÁ©oÆX¼8R‘ÏwB°ƒjÛ$®òãvõ[wÎ"Zú¨¿…»òë´>‡k.z/¤ <"•w +‘ò•zÈ;S‹Ü1³YD™£W;W™^8d“mr’(wè .ÖnªÇE¤¼‡o6‰y¤Û_6Ô)CÄåõ…ÍÕÓí^uÿQ1äYñ„à0Ý×¢—™7RäÂ&ƒ£=–àøîRõÚ™,‚m:J™Y(ÝR‰m_„XÂw6ˆ«ÉlèðÎŽ£:„¥d]‡±¯dï™»9J»%‰[%ú¡g¨lõŸ +f5 wâÄ›[»ükõ–7Å&�ÓÖ:f;%„Ahì©ÑGâ¢m¯xñ1¡;šéŠªÏ† ”:[Nq1k¾$*JÂîÃRÃËÙÈœÕØ{ÃvOæîNd˜u¹s™)èDúÿPiÄGŽ5«oT(-Ï„žò‡Æ>µ…°ô Wê ‚3ja+Rf=#÷Jy_Ð饛K;ëXDô–– Ù¬£¸}1^@8™ëÀ' ƒ£q…Uj�C[° ¹Íͤjg¦f@óÎ`l²Aåˆ7°åÑ #ZÈ@ì"šôŒ—ÞǺƵn¼æ€BÏ«W°®ˆ¹Š"K'7Øj(Å’ -r'$&ŠHraŸi£Ù¹Þ…”©â]91®qÛ0²Õ¶”ᕼS›rœäÛ‚U|Yõ.qH‘í\ÒàòÕ# á®*#uDÌ´˜)×ei|‡FEîØ#Ž’›° Izè*ŒL³nEÌù!¢Â{>«+\ÈyÍZ°üdœšíš H‹7ʈ˜*b±§®†Î#Dªx{¯´Í9t˜Zý;ꑶìƒàpËÏ5·—Ú½44SJµA¬©gdûZmö8KhOÄ=–D•Î‡ £Cv»iÚN(³3ÕËdxî|Ý$À„ýÅ’<P‹CùÌ¥¡ž³ã€ö§šöŠûš4<ªÆDW{ÒEdc`ëdõ #TÞ#É×€s#Ëöøˆ¬£áþ‘Þ–6ûš£#æÁ¬·N 4|6ͲﺶìAÌ5…OÃN%,†ƒ(krGšþUC¥BHÚ.›näÉbè�ùM{%¬\\Úd6ÝÀîªj«¥µy‰Æ¿s[öÙp;’CÈ\e5ª©‰7B×;ù€ö1kÚˆE]›Ï[¾EhÛ°÷,ò¨Rø.dõ¤W3ˆVvæ" í2rÛ¹$tÖõôWT!C¨Ã¡jÎñ-ûÌû#¼ h¶³ö1lœ¤]p~"}“O »þY•C´'\/Ñ^Îx‚èâ^µ˜oˆ^¦*P¼šÃóbcp,í¼BÐóŠ ,ÑœYi2ýÕ_jrßA7Õ`tû—ˆkKlëÄ>wùCUC¯Ðùnƒ53pNcsÝË6¿Ø:ë%yÿ#d]ÈXëß*ºý&±¸~»¡Å¬ŠÄ2ÂC!Ö^ãÊ°}ùùE õwß½'Pΰh[|<ÇŒ$gþÈèo¹§Tiß:Ì ºR¿%ê»>¾ÝÐ*ŠY@ðñ5ºP{¸l»½!5ݯµºõ ´8¡~‹°;ÓZ¦ß¾!2Ef|ûûZë^>~åtRnÕÂfÛ/k¿wP >“Êy|“Àðú(SøØ·ìï;Ñ‹ªÿÙS#]èdÁòÒ?û|d’¯™,ïˆsmä÷¸lvÌ"oPF=6=?Ž„wæQgC/£éJÄQ6ï!5h&ü~ä^¹¿EÌ›ëHø2Ó€wÅFô·“•ÀùƤ &„P–]Ñ7H¾ÿ½Ÿ(|;u»³ð1}xNí[º¼HR"¾ôç>ÌXñ¢åffÍX_!›ÛTE{;5F\s‹@f.žÓk(RBlmè9Q·©ê|G>LöátWnOï0»ÊÈȲªx,=”æ±/SùçòEn…y»²g£LÔ¥Oð½ñœ?#4w®åV[ð˜×¦çÛÝC¹–}ϵ!rwçZý÷a} 5ãû^‚®åJ=EHÌk]S¼¬vb…¾zî&_%2)âð2ÈmYS?W݈É2à» /ëw,û¾ì&Û¥m•ø¥Ì™àðE¨ ˆ¶„ˆíĶ- Ô^RY^C¶Ò²×ó,Ñ6#BsE%-Ø/9uÐjè`±‰È²¼Úr{˜'9aßÓµî¹-’¥$ƽIê[Ñ hÑw ;Šx•^e‘ÏE?5€Êý\‚A/á-ˆXßû’C÷Aa°`ÕÊ‚GÞ„O©ZYÍ<£~ˆäfF#¤EhG*ÏØâ}¥Ôtz‰Rf¯Ÿïìa¼*¿Ÿ©ø)€š¼šë£äÁ‡˜+Re®{јCÜö¡Mz§Tin½Dv.0 †”wɘ@l˜å4Âßz|.3¶8Zn¢:±ÖsÖ^ÁG(Us¿Ë`›vß4…„Â’qè�\]Rùø‚8Õ‘ q $2½y@Üo*@ž©Ä¥d ¤ +6 +z�@Jåºõ÷LY‘†:õeÏ"® +%Hž¦TˆÚyùÄTû´Gd¾¾$ãGõVìÂ\nûiÓÿHzÉ¿ÜÔóQ¤þ’RJÌâ®”ò%1Ì%}Oå‘Û"Ut&y‘ÜÿØ´ÀºX +5í¹dJy?³– ˆŽê¡%eMM âü ³ùR\�¨¤˜t˜Š¨10O(õ¸—*'Ðå]]‹g¹ÄKÎF=kÕ(<ª..÷ã<FˆLhd°�Õ=Wõ‡ýP6’Cøð–ìÃ.»ô¦vNX,YBUôÙE¤g¶s”…3™2§-`ÄåÊ7ár¹ˆC•AAü6c5ô[!º´lØ2—Pö†~í¥ë3Ý¥%\Œ°áÍÍà¹}Ýö%¾0÷£B×fÞH ÞÓ™éš_±ekK››pŽÁ6I”¦aÞ‘e�`f!1C¿²Ž½y›båfð„3Ð1(ãÝ!˜utóæbI +B™ ’„‹Šp C0ãñ}\X�ÑÁ0O¦ô2ĸ¯X|ÙàCRV·‹ì{|M9H!×Ê–íô :Q¤Pï%¶Â¾Ó¦èK¨_ÝèÓ=Ţʃšr×ÝÝ\D— ÌÙ}¢Þ’m:_ûÞtnA h&Å'l:‚æS hØ°ÃvfT—çG¬ÇPÉ»Ö=*‰ÐhM–W¥üóm±ÃÚ×Î�M@rºÇü^ÅŠ‚@b%°‚X$P‚X9Ô½íJ +$”Êïñ*À/²lrA@`ó`°Ë ĸSSÛ ÔHÄL7¢Rc¤Q9´œg8×\N:‹ðª$a?¥ª¹]¹gC …\y„twÉÒƒÀZlÒ=<{Êg€@^Iº†qËõ<2Äúø#²F‚éOV‚@ÇS ¾Qè5S²Ï‰½2þƒØ÷{,:ºýÕС2q‰Ã 'ic-ˆHSŠ¼Ö³ô)ñ'{B5dGhý\Þ:XDÜô¢`Û4u#0ÓU+ˆº³'â†vyU�Ê›Ðã èiOÇ{æ?°ÎWªNø +~7Õ8t&ù"fÕn8dc°þ*–ŒŽ<ÒTéŽD,uåµìNϱg�jK‰”RÊ~»R]¯xûísÙ!Ü8Ò{@ )(ïS|‡ëÕæ©éºšÄu§´¥xOB>O3oV~y•Mé²Åùbleo˜eêˆQ). pbîp¦-zÉÙƒæ6yE5—^xâÄ‘– +$–ZaCÞÙP:Bqáz¨ÕŠŸ#§Õ$–<J'Jj…/‚ͬ¼s”€CPØå8êR}å‘ᄽ'—Î>ˆùŒÐ›½,ØåH•)´à+˜åÐ’&愽)6¬,°1í‹~ÝN¿¼DX¶Zض*9Ü!Zîq²°ë ¸o-ku5Ps ¼Þûk= {c#ýîäÉbN ½{'¤Üâ?¢_V) ~<‡ +wx7Î!ÔÔßdóŒêó×J½8 +:YÕ;p-yQà™¨4߉‘6CÙÎj{PŠžólmvGù æj•ÕÝ€zŸéÑèÀþÌ‹r¨#u¿z|d•»:ë,·T_w&˜LÝ âLã²�JÑWí@+™ŸµÎöÒd%zÈTŒÊϳGÉË;1Æ ®.Ïd¨ò¤å+½r!áŸÓìûÏm’«‚Øoè Né_¨ô-ò›fVwèBêY bÙ¹@o;Rc�&ž/C)Äy7–+jR†m<ŒÍSÐ{dÇvëñpÊÚPÛ|2‹3ˆ—-@C™ª^rè('° ¤Uvç%›îDGü†¥¡AXß½îþBÎ,¥Ë‚™uKJ©]W‹®Y–X§�‹1Êd‘ImÙfG)ÜfÐÓŒÄ#ñÄ (Ê-_é+é|êò³B-F„*ÅȉGƒ6o\{Ø +[1ŽÌŽUCZ9‡î”èŒÃàG +ý$O·$€ +ñÐpèv<Œ¶.è6vÝr™u¨*câ0Ðîˆr•ƒ^NWѪR€DEÔM¦ÌÂͤœ°OûÑÞè»Öžv[å“�Ø׺€Õ¿Ù4Þ?»t«‚%Ž²zIS‘¬¹Ÿ †•h™ÒÜQa‘æÅH©J3U'f“I_¨•È¾ÚÙƒH[~É5T+èðhÇFBïh¬ƒ± „=ruúp¯Ìý zy%“à|ë¼²!ôÓ®æMA>ÕM/'lòÛr³À ñSL‰žú‚“„½«Ã²C˜Ìªà% ’rb5΢/r’:ØT⨢€Ž¢ÐUЪ+î»8qBªtVŒáN—B^2"‹4à™ Üö\63Ruš>xäs.*³Xýð0)fÅcØynÀ!.EÔtõÂhWÿåŽ/"T%xå”J»’eAØ4,w°éÂ\[œÁΦ2þ:×ø€‹¦ØfõM‹³|�«O\�#eÔ¶"3í \wžx%¨¶¦sz#ÙŠ=óÚë¼XŽ(CÐœâú›ÐÝU;ïÄ‘B†A—ˆœóTìrÓE aVrôårì^áÉ{ÄaÚU6àAÀs‡ƒ¥Ûò^1*EQ m0Q‰C³’^@`kJ&£$P+H ú „Þs +7@‰³¨I/ƒJ$!·d*©�„2կػ¦Ê�Pû¯vƒH9Åj»¡›k5ß‚lP£H‚生áDaùò+d?§¨ÚÐÒ#~¾uüŠùïˆÕH÷bŒêÄŽ~YÁœ§k¨FPszZ8Ô3§1ÓRàO‡TÓ–k+#ŽùìÚîôdÌž�ƒöŒy— +d—|çÐÔõ”ø¾µ. ÂN^šñF´§Ù#B¢}Oýš€Î0˜€*�ô€Œ5¡sBzt~÷@ü}”~)„ÌB¤¤Ô–Ð3ˆÚþÒé6<#z—8ѳ‘ľÄìÙ}Ÿ¾Ne4Å¡³wšp8aŸÒ‚fMÄT^ T3©¯°8QªûÌ凒þ=‹ ÖAWŽ· ò#ŽgØÁ6•$8q<ËGÚ/ú ª¡3íœâ0¶Nújƒ(¹³� Ú¬BV†<àr¶ƒ0L¨]æPñæ"¶ spöù ~‚ö +Öj1þ’´gr”+A6¤üŠø]AM¶ô„MŠKNt•°í$† Žô“V½/êËÎ\Çòã5T¾³ÖzËKMõÁå<Ê·5›Á´çÜ;Ãõa‘L§§8 +þDRø ä(ZlHÝrç„.ž›QÝ™2Δ:~·;ÜS Æ?ëp•Q5D‚4òØ1ñ¹rãP¹˜8Qzæ|0ÃZç‡;„VÒËÛ „ {‰è�Bê/ƒpÙ§Ô2¡„ Õ祔-'öÅ»DÊeu>aÄú.*þ¨¡u=åè\ìÆï%¿.¢l}1[sbQÃa3 vO©:ûy^dÀ®`QžåÙÂ[«#Ü÷ «ÇK6 +Ü(ìkœ‚ýùËÃ!7´šóÝ&¹cfDÛSD}7ÖM#þë9s\bƒBVœHí€xvwMsR'¼¼fm/x„¾Nœ@²“œØ ˆKÅ'J#8‚Zw“,¤Cû½îÁ`3£L‚°n?‹f:4î°§—ÛÄ ä‘yd‡œŒJa™ƒ‡ÙÛ²ÞqÂ:_éq€(ñn³œÛÔ&÷©œëƒRÜN\˜âíLêsfe’w5ÄžGÍ•ÔÐ)»Š–ÞÐ"!¯^Î8Aœ²¢hAUSƒ(eŒòµcÝ3¦ÔÎP"‚Ð^Ë%)ˆ»fKN4ø)äž^ƒ“¼k ¹Á{º±¢™÷eßDÈ©L™ð . +³!ô‡*¡a_Z•²¡Gü, ¨�ÏW#lOµ© ªZ7·Dj"„Ê€À‘E”bÃá,„tpòDp5Ìu¥í§\Ђ˜§t)Ô}vô2á;=#ø&¬µ¾ø:…ÚûÇïØÔ‡6*ÕuÙ¬D[ÅÊüw;¨²L°"ån‚¨Ä• ¨¢™¡u-)ÕЪÍ$(v6t œ‘±N˜§GÆD™ZÄ®Þî^-ÈÕ½V6û ü}@þŠÔá ´¤»† +ô(Ž—íÚW[¾ ¤øز!lý@'N?œÔ¦êH°þþÒFaãÆ4ğ蛪S™{&š°!Ìý[šdsG¹Â:±¸µ:p÷u+�¢Ð‚q÷—w,¸uh.NAN Ýf—j§ÊhñˆÎs™¡íÕ¥!dLL::ƒ>1ÂŽñ{îúôB»xÏ ”^$AL}±j=еv\Ð`¾kÍ{`–#óÌ l ÂÜïx!kÏ \^,J®E?ß¡Ep”PéÛ‘¨üÇ.³ à!ïŸhkkØõ@5ÖÆÜ/0;Ù•Ú�þ]Ù®�ÚU#Ø<ä¢d¦ø<W+Cg0777G*'à››ÂÞA\¹Uˆ{}é{õ–š šÐ–°³«M†~|JŠ¶°sâ»Ø6ôvÅØŽ-;ÒëPíŒòK#´æÌ‚(˜)"……H`ñÅ$ˆ%F Ù}Lo½€ªô3ÃŒ¥¡aýaˆ�Û2²�n¨h¦ïûrºk�.쩳ö+xÅÈ6ȉcÉâ@>b ÂÈ(Õ#g¤'¥ûo—²ì0ƒ€¼]äaK§:+„–‚‡Æ¢ÍR\LæâalÉÒÁXnÙVÇ©=!5¤ù¾øýJå˜øBì¾Î=ÅwA0ÅËbk†=jc5jK1Ul‚¼ã=2ô€U¶†¦-îõAôŒaC˜ò§HTþ«Ú! y*‚ÈÁ±…;�DC§l@T„þÉNØTU£. çÏòp&…ÂÄÜeJb¼+¨¹Ý•Þá’bPj‚qÉqYí`à,%Gƒ:(®=÷:z¸«;JŠ©M‚í43܉³<óÔÐYþbÁ\ñ0³®¯B€" ÓÝ`wÞÌ{âî«:2 ªÏ䊬CE4mÖA؈Ò6퀱bcÃ4›Kh/›&o™²1Ö¼‡úôl1Ý8î‚i1n@Êæ°O9Mƒœ(kålgCëæ`°gß‘ù•h›2[B—!hÃœº‡Î@|)î› TÆ.> vgFî@¨!€cÜgfÝ9� ‰=íÊ:šö-§ä!ÜyWæ¼Y4À‰—Öñ×ü »d> J…ò•jçi–-žc—–`,Édh†±©ŸŒ—·®ÑYR1ÐÕÓAa\³rmÙ¡3gtb5}rÀf”¦u�å—ŒaèöR3÷ƒÍ•ôrŠ¹¤ßÀy„RîÒ‹ž‚°Ð”î45Ä(ÏQzI¼m;.Üî bKµt03á6¥6Ù9³fÖ ät†€©Ú¥H꫃T eý¤Iƒ¾á12²ÁßWÛÇ XO—+S\ï¾$b–˜î®‚†½Ìũ݉ôÀÖŬeµƒçˆ]‰)Î�V#ä ØUèz¬gŸÇ2Nö&È®Íúóªuƒböи½Øwîè¶Ùg1RÑ€LZ2xË.…6Ó µ/q~@�”œ´o{ˆ™bi¸“F[6‹ÒR™Š¯¡ µßw ؼ:¤B‰JjÙTY…AÔb‡€ug†4ᨮ©/·ÎeÀØ!û‡€Î^.p ìérD +bØ„¡BPIE* ÈÉK>Å ŸG,•uA73gbf…qÏÞLÊ®‘˜i&D”ÝkÁwÀ»/¦š`Ž¼ÛP͆ã(]+Z]ò±è:a_¿M¦iãÄ…œ¢õ[FîP&7‰Ébü Ш伃˜)gÄ®X[K‚Ñž*šì¨L£a©?ã¦ÄбÃàBosC ”ú!~˜ËĦh‘¨·?T§U" Ì&˜üGÑîïw,Cî<Bºj¨¬È{-ÈMÀ¹…4ˆç–À/ÿ%ˆ}ÜéKl +cÈR3ÐÀLo¼``ršÓ^E&¨-‰ò]$fÿUCðnz¼+÷˜ë,n¤³3E°y—l¤sùæ@œ(k¥ò€º0%ÜdV§¹2Aå„} ±>S·Ì�>ü€à¼¸ÑÚ Íì_]%Á¦Ø¬&›ûW$ 7åŒö/—”Lqã|ÏwkYþ…YQS“Œ—Â,4ô;«·¢Êë:°õ¸ØÊ5Nö*¯‚NرcþÂw!.Øìî)7à2bÂÄ3mE‘ñØBkú:ñ5nvƒGÏp!æ’=p]È™±G.¡S;㎀ØÜB¬'ƒBX¨~æ:ÆþµÜSEKËìëò¤ºÔ;°³wm¹òÎÀíª=+BKyæ+w1¾šXR.|÷¶#ª$$ëyG¾Ôg‚öo17q(ä¸S†?ÿLy2òF[NƆy怰¡-qâËKRíR´Ðo0¸‘Î?y2˼ '”’ÔA L¨)L„¶#I¬>!¯Ç`C;²ß¥oDèPµÑŠ,àÊâW2ÏšgNÈ ÷ÌvšÍ«ò ë Æoïý›£j@6®)"cÆÈGia{= +Jœ€Îʽm™ºrÂhË:EA6„·È +¢qåÞî<Lú¹9±Ùû´g:O#/‘ ª¦h‚ôßq¾¨À3£ùNäž@˜T׿¨nÌ€lÆzÇ=!1@>ðÙÂíR€B�$ŽEö?&ÇlyçP·$ò^.{:`yð‘€çg:a/zG]2¬SòPCmYÛ Ê[‰Ö&‘~ÝA\šhI\ +Ô³!¤dia&¨ž™£Rš‰¨ÞÙãÞÂc¶wÕà÷N—¬È?Dª—~…â€ü¾ôZtѨËb²ëåEbžaïÅšråÄ…Ì’¡aàC‡¥ð5 ´˜SŒ¬' +"+ÍAX¶eAˆ{Ù‹thlrÔ½‘{Ëo6¥Ó’Dˆ¡Kr{¸J +âä›yEXˆÓ©ëH(広ÈZó=‰Tä±=$ŒƒÐ<8ßä�4%\êSnEN<Œƒ°.¶”ƒ€îâ–±D'®ìCÕKìKî‰5³Ñr½Ì¨E´óŽ\ü +Ä==é Ay>„ †Æ�xY\áÀ>õ³'“A°>j‹HœØ6¤ï¦]=sJÉã†ÏúŽr,»BJ0> ‘Sm9:e(ì2a !YK=È¡2ÞgSi†¥7¨’Wº>ª{všž+ÖÈ<z6sbU·ŠP¥à9ÑuÛ„Ýpé‹;‘·?ß(/†ŸØ¾™^&”"äA ¿¿×÷Šš\ ;1S¬.Qvj¨6ªd'°ù7¥¨ƒ°'O{W'6ÔÜ´q +✋={@›Dô¾ È;¤RiÁ•åû(ÌÍ<æ P™¡TW‡ªp'ƒ\åÐqs"}ôFæîË�뼓™ƒ$¨gT½Râ.és%4äUCâéòóžÈêêlUÀ·œEZåÙ •.ˆV#l)ÙãĆ}êó‰@jÉ\&°qoeqL(ßf'æ}^¥}„‰(qs.£¶òäU;Øý’Þ3!s¢â·ˆý ¥ ÿ@ît“¢§ÂR4„¨õ¾„ŽLu%nÒ™‘ëÅ ¶¬wJ"ÅžÔÐÙ—”eg”3yÅQv˜9Qs<€ªQþ†9€%G’(b6ƒÿY5äÝZ98¡‰x.çRÍ.Ö,Šy—½¼ |ËcÏåܱ˜-ça4C‹£À>Ï«j•¾÷ ¯Ú^'Ò¿Jí`Ó`ÈãŽÐž’^NÌUT†D +ÿ±¿t?—-sfxÀŽÅ°#{îL%à›€µ¿˜$Ž´@ö…=Bâ©ò„=g¦³¡kÂ9/kRBS�7r&£û|ØùcŽŸ“>hJ0–˜ÍÀ©þˆ¤ kùð?6âs«=ˆ½)çß ¤y”IleýɆì*th ÝZó:…²þŠDº 9P9ÙŽê7f¶ƒý„*@uèÌ!݉–K½¼ ë –öÆÚKAñ�Fê�²›X[J&²™”GQ@Ð)Í<ÌVýz³=«‚À÷’¼=UmºÕ¬hpä˽ž�nÉ4€xÉ(Ñ·Ì[e;»´)®©år<;'Psxå®P+ Û#\¬Ï¨ÞkÉnT;ØU +21»”›üwk‘;SºœÞS4D»Ó«5‰#}�ØLCÒ×e“b" Ö2KÝhöfW‹¡\RDH$/§U=ï-Œ®»–ÐHxBÐe}ks_0Þ”mΪr#¡Ê‰ìá`(ž*Ú„fê~:1î“5©ÙPÙµa*;ãíÈ›b3†G” +>©L@UÇ{Nü; +¡ÇUs h;J1„Ýû-³´H<¼zf,” +¯N ´¨j€œ(E'#Žè$ú²›íö¿¥!@èJ;y'°Åª”ZS +U lvÞ—rY' ϼ-ƒ6ß×-¹€rëÏ X»Ý,$$a7fÓN`éžúŽ$ÎE³Ï!TX)K›ug<X¦¦*¤ˆu>-æýÈ\eÂ]vn'‘Ô‚|)–-…œ>ö:aȪdu¢4àœ81s±SȺ<˜àL×þΖ'Cö×"ဃù¹>.ýé?DîP«!ÈOÜó\zë{ŽÐöˆ£X缨(Å°Fo”UQ +endstream endobj 83 0 obj <</Length 65536>>stream +‰2R;ÝÞì{]#‚ËÓx£0I>¶,Ès"—áNÀW"-ŒH\DzÝæ=![ð_K·p^©4âÄuç¶cßíPÝô˜; fzß–RgrÅêG阿LwBjqã 4ËÂÅlçÎJ6T[Bí Dz(æõÜY}àÄâ2÷‘PC¥Ù£+²©tîh€@æE);8Ñ2‚�æ-,ÃQC97Ò„Ä¥S–<Ø€²ê%¤N¬9×ñ{äˆðÍÞÓ¤÷ÊajÍ–7.öLrà¡Êa/ìA¥Õ<D©=:Qªj œ³*±œ¹PóM‰A\)ÄØ`cîùò²]ç²Nêè’d;‘€>Ólg—<²¢¸x‚']«œ°Aú|Îò‚â%€H̸R$Ή‘é¡lhƒô`åaÓ ã¶<*ÉDêqâHÃÅ"Xû’wnÛY-ßrveÏü¦Y¥¶(æÅí ¦¤ðŒð¥Ö-KXÐU^7lú6CBB\kìqL:ÏGÇ“>™-M#ŽìFf´fCÈŒõäŒ\ÎÜÎP|1—¼¨õˆ•©c£îç–íX¯Ãœ¶31[Ò–!ŠNDÐb‡u„-¾™ö8YFT_\»ÊÊ!º×îšA©js¼ì HTý£¦´iºKù„k‰—“9(ä·ÓË’lÔæ™@ç÷êËÆòNªhÒë¦î*Íæuœ4š%Áâî„}µ%\„tS4¤î½)Aá‰Ä£ £í1æTƒ…V‡èž&‹6DÜJ[R3˜—JA“ÐèêWA@9ª]y}‡qßΞçR驧ïäJK]% #"â|íÂæ% q¶Ž‹ª}/o÷^ÂkYgkwa_ïƒ8à‚pΣö>%Sá¿"t¾Q{)~…*Ø +`´§”Špã0Øf°' ú'Ç=0žÖeƒ-c{ gÚ²z"$ŸÙ¸ùóÄkÝz¾$s¼Ùˆ +,K]$ùÒч -ZX ùœUCÌŽ©UÙ‘ص›çÄ¡Ý™@ø6åxºÛ+—䮎ˆF »°Vc‡=M%Î8]ªª�bBß¡6Á¡î#‚¼ q¶¶Hši€ûž8‚@NXÇÊb75´ +Tʘˆ6«j—�K¥b´#‘‘Ù%Pj§‹kŠ Ô‘tbW=§M³j郰w?fåI\Y�†Ojº„²Ê߉±¨DŠÍ°'<e™B£]¶¡šæ‘*bPWýSË=KýÔø©Áû¹R¿¦æ%º¹Ý‘ýÿ}PA³ú“ÉàEôIÖ…T„#‰SjæX̉eOæ2T#"³2€,V•Âq+¹Z m[x�n9˜B)•Ž¹ &„gû#n2í…æ&¶ç#¥4ˆÔ°cC³ü8 +ÂÓÒµ!ªz”ª›:·+#à ¼çžõJ¨!ØÜœ²¢ ”%˜ PŽµËîZ +¨´G‰oKõ÷úaäÖ¤©àÒ¾ž‹±t®Žû¢ñV•Wb‹ñ û¼ÆUóª6°›ÒULJGX‹P ”-£Y›Ê½Ó²6ßl»|}:ûGÈ * ó[¿Ë˜r9dh0»Õ(ÈÜk~´¯=cî¸*ëÌ{ÒS"͉ÚðË3U±a¾§õúâä‰EÜGd,Í6¿EP(ªz¥»¼Øê¤S‚˜½¦lÙ ÉJ,w.ëK@>Ð6%…€r\³Ê×:ך"â—˜UÖ¡,®¨ÀWÞÊWü•`C=]òþ#‡0³ä P.Uȼqg +ï8±úî‰P(8Û±ÁeÜòá&D´xoaÅeo„íÞˆ‹É$Yõ±@hX.p?² ¦ìÅ››•*b»!$x0ò‚Üû»?kZ«e’Šù_ûAÈêÝa®ãÄ®è}ÿà•-Yä„;–Ô»á<z©$”5ÚN¬wC²NØKi^Ë)ž– ÁCkì{Õ™¨1Çì¬^}Ý5\¶ƒ,çTë´wj:/Þ(©ÞâDGêUSíIK’³!¤ñ0}à#„µ3äiõ–hp›K™ø· Á`èe¥å 8pbjã…?u”¢ž$±:ïJKƒëJä•Žl&ôˆj®qÛ Ûã¡úï[¿´1úž˜U¹$Øz¸«”ÛBro;Ôóí±þy%PúH«Þ‘ ¥èi T9È·ìÞð^/{Gp/X‚—¸ïm+ µÈ d[*çHÄ-ee'¬¦‘Œ„B™F£¿; +!ãñj?‰k±qo2DdC¸â,Wý�9zé-Bß}qt±·ŠU`8<îùX(ݵk²!”»µÇžûú3æKû½f…¾‚Ö¼dW?�¡ù½-I£ÏŸQÖØ©KF¿šX„Ÿ>BN¤(AÍþ^YTÔªçcCX\ôëZwv^o•çÖç+ð[KÔÎo…¾û$ô?ûƒüg?ûû¿ÿÿû£?ùõoþù?ÿÍ¿úéû_ÿç/ìÿ¶þ×?ú׿úÍŸþðó_ýú?üâËÿø™ß÷Á÷)KöôÚ—?úÓ¾ÿå—?üþÇ?þãñË_þøWýÃÿñ¿üáÇÿ~óâùW?ýæ…øW?ýø›¿ÿåÿþ7ßÿâ×ßÿ$Ô:…Û³Í}°²·ûÝÁÿÙ?ýæ‡_ÿ_ü“í-ó§¿úÍ÷¸ˆ?ùéßÿò‡ßJþo?þð/~úÅÊ}æÿí¿øÍÐIÛ-žËeço9ç?ÿ]gòo~óý¯³ž‹íŸþêWŽöË_ýüÿýO?þµ¨ÿ)~ÿîÇÿøÿùßÿŽõý¯¿ÿË¿æÏëÿ£/ôg?ýøó_ýÂÚúõ?ýûù/¿ÿé¿üá×ÿúû¿üÖÑõÏø?ûƒûËþ£/þoãdÿä¯âòþ9þ?™c d·æ.£ed›¢ªå/ßc×ý+zÛ0Š¢`hCØŽ�Èž1âü +]T{ ’??1�[ã…ø9š:':O¤pbÙˆŽé;;<¸¦›aZsóãÉ|$^¯*šú€Í¯˜@uè\ùx2ü˜”·Ý½žWõJxSoÏ+öñ¿žÌï~VÞÔOŸêTÞþÃÍnæԿï6þûê6Ú—?ü“Ÿ~õÓ—c^Ñ}l_þ䇟ýÁ߬ÿÌùRÉ°¹·þeÂú–6FŽÚ™7óERü¾l_Üï š;¤þ Æ@ð×½àšlZg .°c7̦*ãËŸÿ³?˜ã«—— _þ‰Í-¿bM„ýR„>Ñc[.²iÃGê»·”}ð°d…Ô&tKA}lðSЛöþB7îÇ-ü+Ü⎛¥÷…¹¨?µµÛ†· ³Rl@[ÿãÿ‚ðöšlDÏü&^~«l"í·îúÔ¿à&ŽéêåÜè·‰WoÔtÜÅÑa•`]–L’?Rß½§.{äK]øwï[üõ¦ÅOQ(<½¿îµç¾ùö2//OFÕ<ÞîõñÞµø9êM‹Ÿ¢ì2m>y7{ +”é|{™ç‰ dŒ¸ƒÚ7žæ;êã¼kñsÔ›?Eá27”(ô¶…Ué7žæq~]½¿q¸wÔ›xÓâç¨7—ù)ê/üÔÃ…½ú(§y™ê»”ñýþ2ßP/à€€ÜÎ%ö–Ÿ£<KÇ®Š1ôïÞŸý稷éÔ7nÙ„Â:¹QÇù;ö„Þß°ÝÝ +aCåïOìsÔ›?½¿Ä}º¢ ËÉ¿q‰/ÐûKìêí¶8‘]ñþ¼>G½ið3ÐûKìãkê !&ûþ_©÷yìž–¹ËXüý™}Žz×⧨÷—yL2Kõýe¾Rï/ól_!%{ß¾qÿ3ûô®½OQ¸Èý«Í[šRDüÄvø©o‡tÞ_ä+õ‹¼(½Ÿ’ü;Qÿ-rþØ™#õgô•zsožöç¨7÷þS¦;ÄÌñ•"ái¿¾ñŠ ÈdŽÅœó¾¡>ÞŒw-~ŽúØâç(Ìa]Ù¨—\ßÛË´Û ½Þ;†ß7ú†úxïZüõ±ÅÏQt¿!÷¿Qéíe^—KŽ_”‹îßhô õñÞµø9êc‹Ÿ£ì2'–ÇÈUÂäÛË狸õûFßP/à]‹Ÿ£>¶ø9ê/j9¬æíUÎãëD^¿1‘û¾Í7Ô…ç~S¯Õ©¥Z‹QÇü<õæ^¼iñ¿˜úûoñãÿôæÎzû°;=W#‘¿|{#^©oÜ®Bδ£;ïožØï†Þµ÷èí%ö‰u²ÝÚ<¿¿ÄWêý%Ú‡äM7jÁwüþÄ>½kï3ÐÛK´I:ldO2ã_©÷—ØÝÖèœ7M_ߟØg wí}z{‰í†Ì}Kšøý%¾Rï/q÷,@U_õoœØg wí}z‰cï.ñãºúuÀ:…êHüÞRãóÔÇÛ“ÿôæÜ?ý×Þ„íËæˆýò›ïüÿÖöÈþ«Ÿþã÷¿üñïƒøËŸÿ³_ýú§~ýügôÿØ:-Ì"ùƵîA,ºîlüµ×k“£¶.Vöeóbö{Cújövës¾q^Ï]ŸOŸÙŸþêo~ú…ýð¼Û·ñëøÓïñãßüõãJ>Ao—›ö·þãçuýÿ¼ØÉò-Šö[ÅŸÿÝÚÜÿV7÷o÷àö¿Ë£ø]'¶nÏÅ75 âžãòØýÌf]þíßã.ÿ§öÌì’?µkö–{³%ö®ÙObo[ý;ìkÿ¾'þ}Oüûžø÷=ñßWO¬Ä‰~ôLœø«ÿÉÛ—?ý{O/ø4‹¿ßíÿýùþÙœ +CôÐýŸ¾ô/ÿË—ÿ:ª©§åLÿòÿl_~ñ3%TÅhð`hÔXÔ¢‹Ú· eX-ÜW¾@þ§ß2„óþÏÿΟÞÊç3ü³e@á4®jãU5»Œ¶á:ü´[·grí°7„àÏe't Ç=`½á™à´ÿÉþÕv ¢b{ëo°ïÞbm»Üë8! +Ö}LüØæç¨wMþw1º"Bp‚XÐëþV×ùÿÛèÚ>;ºÚBù+t5w8vïý÷£ë?”Ñõ÷ƒëï\—Oê€ÛÄ?üÁuIBü_ÿ[Œ©Òpí·¯;ü¬¡Ó*п|ÁàoCQ�“ï Óè»!WC¸–~L-þ@üÜ××åЇ,ç§ò†x¹"4ôÚ»û}v¯aFÖõ‡S±^qƒ’$ŽæÛ+z%~î{i/7æúxs_Oåw?£ŸÿCJÇüP3’—|ž;Ô±5åé 3T¼ý�9qœW‹êÊëD;·´IƸ6=P™\K¨z}„@À90«ß³Ï&cðJ€‚ŒÚ/™ ôùr¦Í7u¡’Ý”ÈpaÇs!67øÈj7¸S¦¡í¦¨›Ô¡DŒ°ÊAL•×¹Ž=dŽÔôZèÛÕ}‘,Aå,ïÃÎ QYsä=è«{ª‘š vZZÖÝ=ßCÀÄm±$|Àl^êe À!Â>¼|6¬»Â ¯Þ8Ã|>s†Àò\Ÿ Ì@áˆDj÷]uc{˜euåY‹–— mÖ‡E!:µæ¼¦V?«’8~ßp²»+N¡Jp´Ò‘Wgˆ{Ô³'ÔN·Éüâ@©ÕiPbç +â ÷r&vv~êÙN‡1=-‡ ÙÕ†nf¦-…‡"¦u2›AÕ~ëñÚäïÇta553ïÔͳ•Ne\$kQ—¯ý†2gÔíqÂòíá$¢ÿΆHTLO5H‚?8¿8Œõ+³yדïcê¢:�m…yOÐï'Ëv¶òL*HV€ ðÙØ8dÝY[üÙdÔ ýÅ~wÒQ(ÊTCkW˜'´ÙwÛö¸ÿö¡ì“¦×β®p_¾u§=æ$h{Ú³{êT#n Ñn<N×Þ ï&�Õ68I€GHÏ$àÖä=8ÛjöÝBé !|,önÆ‚øv +]!WD-džI7~»Ýà9‰]†åj1º:_¼§PðÃœ÷Rž,†l7Ç©Ø÷…^êeyŒ ‡¾òÝÆ<l„øN>€4r�µQÏ£„Æ‚°Ûqì47Aõ|ì´íÞí±Á(è8¬§¼cM^a ‘�µSã]zÄÕ]Vf&Á®«cŒ+@ÙƒµB( $O€¥- $™à„Ô‚Ëy=0†²ìÌvVAÖèåR£N4”¶‡Ph6^mn\ö»ôf¨3é60Ùû“oÂâÞZ¬ÕmðŽÎí +"¨rì�–Ýëw{º?s5Ó¯™)N„®)ã\'ü[]Ý&Ÿ ’û¡o6ªlŠÐÜñDüaà窆v¨žÐb#¡¦™‡ðÅ°‹±CÕa¬[tqî ônoÇnTø^zõq{O—%sºú•+~ØΔc@ Úh¦Á¬,tÅò ZwvbR3È9Þ¶¥Jf1KÅzHo¸n‰C>ÌA”Ènžê1`Pg7)BAŸ +Á¡NÞcq˜ ⇋!%Ñ/‰Š¢€&ê"DlT8UC8ÆÒ Ù}Úc,pÊçÏa +2°¡ÄÙdv“¯ÄUñäs´ÛúŽnb[T»»qDÜLⶱ…¬ŒÅ¸™ lœ†ŒPè=‰ØÑÙ G‰ a„O‡œ„§·q˜a#ñÕïIØR{Lا;[ˆ%`‹�ŒÙ\oÃm%ï\ÎA€2½tþGªà‰Ä+Æ´ø¼-#4ÚÁÌÊ–Ln •7Îfö‘ñ íµ·ç8Ýo; ë¿ ¬�Ä··I Ñ8ÛAÞ,ÌI®âO8ÁR¡Åa`êi”�‹!MÏ3Ám}ymíWŽº ÍÕ6Ú2}²Ù»‹bú‹0¡~1úê68†ö l-fÃÀô sPuˆa—ÍØ;aS[*é‹ ìíØ´·ºgGhU³Ô†Ëy¸¾–^ Á3„©uwázî~HíŒ#t’MÍ B"|ÏóÀ¬´Câ^@þÖFx ÙûæËÅ8»}ç"¹DA ìœs¬ÓyA¥·¨†°X£mBº qtªö¹£ëOë†qñ bnBƒãÒHíÀ¨ÁåùÌy¶½Ð´Ü£Ø$H¶IØ#G¿€M16_gly=¤1ìËÎf¬'µNãP^NÝ&'`²¾»AYÞ7,!Ü Ñ „õíÆù'”„}biÆ슰·#œ +Ñÿ4N÷¡~Mâ‰YОɵlèÀä* H�¡ÛŒ‰iÞ8”³w¸+ÅalH7Ž"}‚€:Oh©ä#Äwëª3j2šÚº YOk³þšm¾½C3ßwÙN/ì+ÎNÒͱ£TÝÞ¨læ€;f¨¶±ùg¼é@_m£>¦<úÖxg»Íd.”¡—¬vv؈RÙQP“ì¤î¹“XIàÍ…#DöfË@.‰M5³j(z@k¼/ŠÃÀ± ÂewvüÇF9ºx)m ±ÚUuŠ€É¹}fùnÃWT¾>„ ¾»>§Æ>RYv#ÅNž]S. ˆÍÞžQóyˆ§V¼…B20Qˆ+jGù˜@²àÆùüŒ×“"" `Új>ïå#0‚p“`(ïGÙ$Œ…ÉËH¡-È&žl¢rŸ9tØtˆo +ÁMënj²å¹.–¢ ì:^âZý’ `ð³é®/ÕE@¾çʉ¬ñÒ³ZŒý ŒÞýeÐY¥QKÞÕ£‹uå=Ì.Ÿ²õ $»s9Œ ^£YE>A<¸±ïq˜=gÙÐ!Ýú ìÛ=@8óÆÛçﺌÙ.†aÃ<xÇÁW&ÎwB„Ÿ~IÀ•äˆ™ÕÀ•m,2`{¬£ÔŒœÂÒ5‘cÀ\$%ÐZ¾Ö%MN¥•}·ÍLDhVxe;ÈŒ’Ñ€ ô2è€ý06ÙÏÙ¼Äؽï ÂV°v±ái/⤤±‚ÔõK CõÓõÒâ0öPmÜÎ`öŠ‘Žéyïw,çQ¶pfCèD¶¨ ÍŽõdóý3MƒÁ&4˜vÙÔ÷Œ3$Ý¡ÝöZwÛšE¸³‘Ýy›Ö=Ö²{ÞÎ8Ì ó#hè#[Ý€kë|Ì¡iŠ±-›AÔÀ·Ž²WÙañÙaÞùÅL>ôNX‡ Ǻu.ïÁ-ø ¨ÇF‘øýýÉEsªèEC'lž¡C,ƒBÔ,®ÊZ„Í.ímÙŽ¹L`Å¢Ý}+Db¡ây'ÑTtåĦàcF²3VŸïöÃZ=>â08ÑÔ %aã¬kâÇKyœ45[!¢A§ÕÕбK¶“NØÓ㸕¦l6-ßH4ì#ÐX´ílÊ•½i‡þ# m°õƒ,¶þ|/“�ô +wx×8QÂôu:6PC±ÿ²„¢ +tvEÀìK<ùîg¿nŸLß.Å®à‚)I|›$°f™KL ÂÈ,Ƥ@P‡êôŒp5\à¥A˜ Ùâévoë ì–È +EĈØÜ–„w“[‚ V l‹ýçx×`冣Aìð€Üו*zõ¤qaÎVê£lvÑÝ.8zn»“ŒdÏÝ°„Àj$GÀú듶\9 ²aªµ›ƒ7Öîvq˜ÕæšD©…:aãðõŒÂk÷|“lû£Ïm2xÐ!<â0x=m#B`¾i“½ 2à ì¤Þg>!lõçÒ;ç1Ð8VKòíÑ4áp¢2Ž#7¢ºÙÏa LvA6Ó)ZtÿêOéªÖ Ó?•Ÿ;Ý’@~”›ê ‘z"XãZŸ„ìÓ´×òŒ0å[Hì’ÌZþىأÞÏ=€V¦è ¯~Àß/ÛÙP4F õAs˜´äK:2—6uóÇÖ"à¿ŠŠ<=¢s¿fA-¹3ƒ…¤”, {SWàkYYˆ‘ènk1ÿxy´g;˜òÝçÞ¢¬[cr—;¦uo©+ìà…WsÞ¹ŒM©!è´Ð'!f]5<“ù±ÂóÁºéí@Qu»ÂºŒ�ÌرÌ:²»OŠÍû¿aæ(ƒ(̹ÎÇÇÇ +Çj' N{ `>§G SÑ½Ü �Á)•‚°ú¸å¦¡¶^D‡—܈9ÉåFg¾h9³!»g8å|ål}ñ²ËÕ`÷ ç‘ HšÚ¾".š³à.®¶EÀ~ûBj¨‰ëªOÙøa (Œí,2’h¸ÍbÓÞ¤ð‚'äˆ`«!yŠ]uÕ0O¤Éë².„Z«tëQeï�¶¦öÿFÂfÜ—× +ªd±Ü0õÝ4µlǶ/äˆ \xØ4Âav£ .ˆÖÒŠöÎáh–wRñˆenËûbã‡M©fcC鬟UÆ?ï¯ó[Üän]ì5«•íuŠkÿ¥U°¦C|ÀM8/»Ñ}S›ýð}Ç=k‚7V/ÌS³4ÊVã(vÞ͵š(4lzÛE1‚'íÜß"._–m9óAw ÃÏð”_;Òwlý:û–vQÜÑ$Äv`Óá6ëZíΖ;4 ë:šÏqgžï®f§Ð|.oB¬‘ÂÊ�[ÜìT n‹ß[»[%Äa0m‹^.Ÿ€}‹µŸæD;åÇ“ØGXN¨¡ËªXìçAh¼{lÙ ˆ$në�Ò0ïÜrKôÿcíܱ-Éqd;•A,þÝ]nµÆñ´ž¿ÚÜ0�ä‰R_µÐ+óZ’Ç$̬lçùB_‘1%2;Öz&ê4oºj€ªûUk˜½k½±:â YaCp‡VWÎĶHø<ä«·/+_)2ÅTWüt«¿ï¢ºÍuß!8}àÏ™¯Ó³B˜8çáž„£¡ƒ¦{Ïëz,ÒyÝNÁûu÷ØÂVØš*ÿ;¢c&·‡ˆEn_œv7ÐÀ0U£LJ²¥>W|ÞRC`RÓ ¸ó§BÿQù#¦I‡âÄ@”üä,� Q$ùÌC3…*~uB”}âÝ/Øbÿ6§Ø…ö}(d@à‰5ÃbŒ©´R’cù‡F¹v/Ø AÅÎõ¹–¢UN„½ÂO¶¬†eÖ«QøîÞ÷"ÝTÌH»wn?´KØ>°iLÏG-3“½×0—kk"Ü Vˆ#¥S6ä@ôõû€(yË÷íÉÛÂiÆßeÿ‹p‹KDõD!xóÓmÉx8ñ™ÅáÜL••`þÚ²ïD¦Lç^ÊöHÞЯJw!‚ýs"€iÓ÷P&g®ýaQŒþ$íõBýÄXáño(8£;&Dá-2ƒv„ì¬Fíó Ò_å6?wJ^°*îä úïZJŠÔøcºä}ÍEEì8óVþÝ£|mL4ÃY,âÎÁíçIÄɾ£˜çä×a›í[e!*†f;y&mÞ�•®Œî 6v`1Gf÷æåpŸ�ŠücØiíÃ*Y¨n׃¥&ÌÏY'™‹aV}†FŽ¸;u5O£Å$‰³î@é–b}s‰c5{Lå?‹ÝÃöyí ž±ÃvÍù·%õó;âÙñɸâ„Ù½žvíA®8¦û«½ƒøÐ>*Òt+³X˜l¿N8bŸE0s"r_¯s4$ÎÑTAÚدWË%at×6°¿7œ9äçOÝaÒ[éÓì/{¯iîå x\=ød¼d²w(‘«í€•KK?„©ë˜æìÄOššú¯$î~äÿ‚F4ñ*+ãæR¢€Ô).ø+׌H>u®“ð"5HLD€8Æwåá+ÞÔ²•±aøï1Ÿ¿BF¨V«Æî Ç€¢Û}FïI÷Ú/&þo'¹G=Ó†ØÁ¬;iÅ3ìÇžÇVó3®@‚f§AûD{õÐOuPÿÂWÆD& +ò÷îÈôÁçZO±,cã]ìÚÉb7r¢‰ï©|Īñ|eê÷Žvö‰#úF”po2DSªÏ|ƒÁ™wóL„Ò•ƒ8`)aÖ¼0aö¸Š‰²XTåk³“AË1ÞVašˆl?÷ú¿ŸÉ‡§–>×½’P�àfåºÐÂP¼ ÃwïÀ'¹A@¬«‘Q~ëº6N.ÏÄ¢ì™9ñ>+XÞ!â¶ÏÖ÷²¿æ,÷–tðy਄9h`8G².éç’ÿw_Ù¼ V#ehˆ½Ë¢žrH&ߣX-'‚:·Wáz=€½ 1B ÁÃyI§M®bïN&KõÕ}ö·l¬ÅxŸö×òPMøòaú¹¹\‚X@öק+ÚëO9; ñë^¸ÍjÄ^Æﮘ.J9Û°Ü!Øò̳S·žŽËå4‚Rì‰8§CÇâî›Erγc.˜¼íŸ8f¯&ÅÉ*8*9[ýüLææ"Yõ½“ÂË~3>‰Á>9QQ ÖÌ ”¬ûalÐÐÜçž½ð…8‚ö“ö³üSȲ,hlEƒ|ZÜÄÚAÔ¸S ‘K®Ï5ûã6â» óÂR²F¾O™å÷‰u/‚³]û‚$¯O1ðýÖo¶›GîÕYwÎÂ+Ù7Ç+GJA©•˜hpêø þI¶˜ ”îqf“1Gìc€\…àLò»[í“èü¡€îØæx +T~8ßû@RÈx*O瀽LìhÛËléûÐë\ŽØïµÙŽçêóßÔY¸Žœª¥Iö¯Ýëdû´L‚=q¿ÞŽ{w1dŽt\Ùzx§¤“êáYJðݬU5ÌþZª¹:�p˜¨·ŸŒ^ñéþiçóìµ~¿†zÔb% +ö ZPÎõ8·…�‹Æ:ÝZj<{1åÿå&{õ¿æ|Ýfø·å ;gŸêL['£PH™Ÿ¶ó'ÞªBÝ G1O¡|³Â +¥«OÇ@VEþá9b¯‹{ûTúõ¶Ï „Ùܵ3Q¥Çm@¸^9Œ²ÒÝß„Š©íTö(œ¬ž+D“AwËtAKIÇ4øúÎ*F´ƒÈO<im>ƒ¥[Üþ—Ňʷ6ð="•Ð÷z÷Ÿý}f쟈-(I¢Rµœu<(E˜ÝSf4¸ËcW¢¶’ŸõCð¤ÕuEîjUÒ0ì¹µ\j%Kçö;.d3ÜåéM§*MDÊK•ñLqté¤Ø¿“0ËßÉ£Ãú¹€~®™WÙ~]NÔ©oYE<§ºådÕ0œö—ÈI nöÐ`b:¿E3ÍèÀÛágLôî˜ws‘}³J¯'ÐIf.·©„Ç•ªZvÞu7ܪ‰¨$_kò@ûþz¨_ÍCoÞ³B±F6CòiÈÊç-'Mkáà…7&¯ˆ7¾¬S¸Ù»þ¢ƒcæ£B¡™Ã©‰ Ù”*á@PgR™Ûë*°8‚µ*Ø1F›Äs˜ÂÁ¶+“ÕÙÙv´}Ù1b{Ôå(ÄÞêj¹E}ÔT3sû<ÖíI°læ6æjïé9¥×‰áÜ¡®æaïܾû·ïMmœyœì§ó +í^¿ŽB‡�¸`ÎϤK"wž†ÒÂ?ôc è%=>®’/Á(p_ÙæòùŽØ{¦ÎAí×]Á±¯¢JNLÔyÛÖÕ6D+ëXR,5T—}d>•¨Bò[1|V.x-€5†+~õyöçzj"V£˜c7ϱÑpÄþ¼Gñô~AG©ãebëUgNγOyJiDí³ô ëAcíº_QQõ1¼€¤Gµ«Ø?ç3Ü¿Šã|f²ø‘¿Y¨}v‡Ÿåȵdh°ŽKÀU>€Ía™¢–Cl¹,ãäÓ´ÉK{ÿY¡0i€ýÐËO»O¡—Iô!è˜N„qÙØÓî¨Rá�ÄMikÊ]™ÂíŽ78`€†²>}㥒gä-Kà8‚�ø#ýóÔÛRÞA{õŒ¸!ö7»”±ŒOl/;µf›¥,²vRv�ÔJTÄ<óS•_·ƒ‚ö©Û¿·½½¶•ëðv•Œ à·ÂD–ðõPÉŒ¸ƒÊd¯×O;ëï¤ù.»yn¹vC@pYóJø[îÔ+1Q2ŠÎ¯XhDq¡£ß¥ô"¾" +Áeȼ5É‹}›,¨Ô<l7{°vʸsy2¶¢”d÷xåöŠh½ú%EÉt\”S‚íH8ÅDx0p +M›”U¶Ù‘!9 2¯7·àÐ"é�‹jßØyìÙÀßrè*ÍÚ~*Ó¬üK"ÄOýt‚Pó ’B£³r4ÖOˆ¯òJÖ“^ÆØý”ÞJ´ü4 ‹LžVyUX¼LµÏî®"nI‡Î?r–ý0ÊIn<?û.m1µA¨+rHqv¹8(Lz”… ~_“'öA·¦¥§b‚ýrP ~´ïúÚk²Þ‚g^͉ nµu!vxõ)®Î_2Œq5³5ÉÎæä7¼®c Dè8y5̾¶oR(·4Cð4,[oÎs íPéöyv±Ø•}1V7ÕÚ×0—˼#hÐÚOÇDfë +ECЫÐ;&âC-KfÏz(é«5‰ïÇ!‰€IP¢ù˜ÞêM‚±\ÅDÓ$Iz”= D\mu&è*I !ö+Y_?¤Xkè~¿¬ë!4FЗïT {é<#§-Ý®‰¨Õí—ÁoýO9-ì@;ð0û]GìØ—–€ÓeE¾•dåev«Ðf€1Ô¾¯ÝN� +Ý»©É䇣z\ÐçUÈb3SnØ‚A‘b|¬1‚šuò3ÛÞ‰ªü,ŒDîUó>C쫃µb"cÝ]YR1ˆ¥‚5‰|';bÀ^–bÀnß—øÄÔÞ›À9Â<+m Ž¸I®¡_sß—$ªbáaoå,¤Ø¯¦:C?eŸˆ�Ó»¥r¢A^ΊU†ÀÄ‹€z™Œóïeö@4š]è7ÎyFõEû\u$±üçÒ~¸ŽùäGD¿‚RÅBʽî<ïˆ7™–>Ñ>c^J†‰„¹F)dU)ê]NÁ%êCûhHN[äš@¸‚LR؈Øöký¹ñœé,t¶“!:µé'C°;(ì˜ZZÔ·°ŸÞOªe +�wëˆÅ'Se!ò¼ÖÇÔ7žÓÜ +ÉìURrÄõÀy°f¨xãêþ4’T€žˆ¹4Î)bá[nlCì§ùÏÞƒãùÌœ¨®[ Å@^]>LÆ+%tôØ;gˆ÷Ë,n +᪷»øD/ò‘mä*l£ðg4Ì|Žg‚Ç?F¢bfeƒ6ùù]g;ÄZ4kț┠+«ÛßÃb3±wÒà‘~€ØˆA^MŽ˜è¡õþɤ¨ö–Äb¾Ùh‡Tuò…˜d2ʽ<í/‚[C'æ9Y‡¸s•´pí!Ó„ö~¼ô¾Ò¢FF"_îýà –ž-²>OÂ@×uãîb‡?ÊWÊWO +Ù¬ž4—!z$cs¢YN_¹ƒè 4f°†éÏ©è9b?SY눆Ž]犼µ)S>2–Xc˜}&ìŸÉ—Ø0TœK÷³â(Ñœ0tëfüýìòñÐ;XØï#ÅEñ$±×»8óîïÃÃHÄ€OP¼Þ·é5儼 ýÂîG´ã¼ "¹áæ¦B_S,C”h=/‰ØÃ:õÒQ0¨Î`‚ ÏÚC²îBôèô�eRÃì +ž„à#nÞ›E›ÜƒÛµ.ÀàÑ°±r“¤{½,ðˆ$óÌua¯XnZK)÷f°ÀN`ÎÓß·ŽÆþ(ŒûDSfÍœ¿@5ô3„X„@Wܲ¥œÔE¥hïßë|¯{åÞÿ#«9QI—ˆ Ã)6qÞäB:òl/<Î)5Ä|ïã¨!öÆv™§ðø\„Ê0•dÌÞ×´tBïDJ’�÷±W+gôÆÝ'ܦ⛳ԓqÈrš‚¿¸;"A»càÇ´rJlf5»Š‰ñSR— EA˜R¯“}|L}«…„Ðx#ÝiˆÑþ‰õ”™Ï›0±×‰ýçë‚ +Å–ŸÀžŒa±Ö1½O–¼_)†ÙSFž:žÞdo3Œ1¦µh^Âô;²MsÌàeCž§)¦|Y¤ÁÑã1ó�_šî^!ö!¾í¥¿‰àxÌk›õãÅ î•©aZ‰3i"à[RÑ�tŽ‰e`óRå©Ö@èÓ ÿ°w£`¶‚2{õƒÕUºÊ7a/ûu¯pðÌÍØXïTN¡yHRˆtòŠ¬é>¶GB:ßÛA’k‡C�ûb°Vïcæ/A$L‚S1O©Ùl >ªÎšeðGÖÓveˆ2½ßÈ�Ä`¤_2RàØXåó<Hì€ð±ö#FèªAæªxbG¸Y3]äISÇ)ü%ñ¿Cˆ™‡ã«BÓò× Ò8,1ÙI™´Å‹Ðu&¯"²í£u¹û5 AØï«PýÚáÏýw,M–À+éûc&Ÿœ¼/Ì„ •£Ã&pŠHLœ‰²*’rW‡ŽUHB Ÿãr‹†¬?¡÷SHªì%ƒÑSìÎ'¢eäs÷º�íÛPGHΰø¬a_ÔH„·N+ÞãìvÁûQOÿALÔQ`yë<û]…&bk‰†áü}ÖôªóŸQ¡¼Ÿ·|‚÷Z´+Ÿ„C~GÄ9!Ý6úEöëy;C´äûyΛgŠ ï%£P 4¬"uv»" ”U>'ßÔD»~þ%#¾c[zÑâU"KÔEjˆy + I¦Š”£°¬¿p£m¾7oŸOĈNÚšõÀäï%ÿJ–þ>å—^ªã€ŠiK*ü¥'1©+߀œA9y�è$ÓԼƓúi`ƒä»†4λzt9m*˜ëÈ +BµÜaßw=?–e|u½tÐtµ‚ÅÈÓ{½ÞWšO`ʨóø(Ppu¤j@Ïu´ÏF¶"wï£w4Z4æ¡Ûåk.;�f±º´íw¶‘ôJUˆÕ<u&)¹šÍ†ô3ÔÐjJdü¤÷s𚮲¿Ï÷s7Í +t,߆èľûó{jÎS‰Ë•œ%þ÷<¶ C#IÛoק:‹!^—xÒDˆ(•S?4ÄþL‹5”ÅDï +D¤PÄq†·r¶¿_ +žÅzÎ-¡ºdú-�†ËxæKûÐßës÷lB³¥w¢Û8®Ÿ»Ïm¦«éó$6·CbP9 õ¨K~(³N?0:Âô+ŒñãyMþZ¾êÈc³WƒÄöÑó+®%qäšA2÷ôâè(&{‚©Hõý‚€Ö®/(ùßArŸ{N’²¥³÷c"4öÚÞ©ë›ÇqHÞ¯³xzܧñdÇÄþd¾à*;â(ÄD8ÇëýóC»†\îG®@ÐNüésQÅ1ð¡!ˆæîpNä�—/�ÔNŸ +„8?Bí1'”çåÙ5CptötGì÷Z¡4&šLüûLÿÂÅÔ0H÷.ô-#óM\Aáí)Ž ¯ü{sÑD—DNDÌf¤¥‘¿¦¸î´žÑ^ÂéÏýN4HC=í5ϧ‰ |ï':-§âˆ}â‚øD¤Š«K”:fÁÛ›¹�ŠM¨ó8{ßj:1¡$åê½Jh„ªëþÌÃKELÃÔàük(GŒÄAÇ«Bp¶ˆª{ د-sìók,~KAòK=úüý¹ü]€J®ª—†€}qú/Ñß»qÈ@ì£?¿¶Ð!'©W�÷5O²™ôè«7CˆMü‘x(®~Æè‹iŽT?äEòÉKÙ °ÿV¯E„+eô�‘©5jíóåû©S~yò}1Á…:4TÕßÚcôwg9Gø .S¡ùšŸ‘»ƒõ@¨—3†yœÔ´°”ÐËÓÉãá¢=Vhi()5PÀ+~ëQ7½¹ü~Ln±å@4ý)D5@5)Ñj*uµ¢vGΛUêH„8¹ ´Nô"½sÅ@NfõÝŒ_êõFÐâCOU‚LI_Îü)RêäVÆD4¯ñœÍêµëLkôqM”£äD;4Ÿˆn@Û69<Éã�Þ‘YZÎS\(õ¼H Àd×B¹ƒš¼™Û³få}vÆÝŽŠ=ÀK¹Î˜èíÇY‰¬À¢‰}>fGþª· QáS<Š$$¦wöeN×ÖÖ•oÁ^,YQúIz¬t×ÖËD‡Ç×Ô2]´¯é¶îÏa.ŠBñ&í8dG#8‘ÇDˆ”ŒC!5ÐÞ-ÝvÉH~W‚׈(aħÈ.ˆIäaâùSà³>YXDÍzŒûžíÇþ4Ýü½I¥•Û$§)¬k"$aæ‘4ÄøѱôRWEá*¶üŽi5U/oCDó¶'ý”ýÙ^[y›9Ñå·8˜‹í¿—¦yÜ숵�!ÊO·ƒ!F +ÛùDã„Òñkp'év´³aHcíÍâ;A2PЖ¿Ù¬ˆO&f°x™üVÎ3Érôª;‰†l$V?! n¦‹! ‹*Ò «|DtÈVÒ(þî™ æOAÌ:£þ·óoPO¯Ó-[‰}"ÔDÆOáÉéý*Ò ¤aIÙÿpÅ©J3'ÛvŠ ž÷a™ˆb¾Þ g †AÞÁèT‘* ¿úJ:Ü�‡^õ$Àõhò‚å‚ûtÇ'ñ¸öž8:é!>zʦýtKŠObþ(숮!54B»Ý‡©ö¥Ô"gûc¬&Ò‚Òr=Â@x¤Ús¢B9JÕÛïËOE3ŽÌUu’ådù +éBÔ@LöÔúœ¢2vyH„\‘í)† ß'ßL:¬Ö -Äûy½r%¢³Ö—³üЗãTáx]8¯:taßöЖiÜáø½Ö<¢R0òÓGqD³ÔäqŸˆÛâ²*ùk®ÆC1»–ˆ‚´1™!fôãǶÅˉ8IÛmˆH{¯k,JÆîlhíÁ7œ!e€Êý·ãµ!&rpÙz%1Hbø£IÂÏ1!Ñ4 +�½ÜóÑ!PþøîÔý3å¼qhxgH¼ +µ³Žw•ü¬§y«y�ª+ÀÛíþ¥ð#ä³ÙædÇóÆh* ?Ë:™8–e«p@¥¹Ž+›„üû–Do� ŠµûלýnÒÌþp•¯†)ʺd`Dæc_Ä +ŒLfÏYÚþðËq!90'JM<â¨Jís4}f†Ø!Ðwt A´8¤žjˆ½x}’«ò�V̉öš^ö¼úé"Áªá ÔPË/rŸÄ«K…?fÄ@SõYãžH;Ÿû2ˆ»ô©j[”§4qñÌ$´µwýø˜è<×�A:¬j4Ñ)ƒ=/ +mý2äùàxW²\®Šóà+“òF†Y˜ú Cb£@c)!àˆyZá@Àz~Z´ÂBÊî%cFŠh¬ÏC/$ºÿ¼hÓ–ëW¡ýѽ7š¼ƒ!(cºE 8ìu@œ=êê§88Ðó3z¶0ÄÍ~—ä½û§²±!ö~ŸB8ŽH}¦˜€'”¿„ÜLç]¶a*$(ʦ¹¯’.AÏuét÷Ð1¾ÃNZßc"XgJsÄ<<Ó'• ãÝJ÷é¢9Eü„_ÂÔëîˆIÑÉžd%®V«öwY"ÐuØA`nçÉAþLoÔZïý†ôî²7ÅO˼ÞUÑtÜðY°Éès]°W9€mˆ†®A¹v]`Ö㊆ ðNÇÁž^ÿõ‰&ÇnbýdŽt +;J(šGüå:Î%÷÷ç ±ã7XE‡þ³?îeyö‹á_È *tèO ó«1fˆúe¶B›3EÖÍU={1M S¯øÈ:*¾ŸM ÆÍûrÄL+Cì;Ô%Z;Ý}9MÖ‹Öã#£ÅhG˜ÖÙ`ά¡ïäˆbëó‰î •€q䊰,õ΋R�Þ¥¤4ýºø)ôeḡ2ÖPe°P5ÇÆ'+[ �áiã +†€ZoìÜx¡°^š.k +b‘ÙõžGìË“ JND¿ïcù‘˜hÒ̯—Ý{õÚ7§ÞT‡'̲á‘Q꼘`œòÕ¾˜QC‹`’ÉÈ“€íQæÌ”jiçK–;ù,—mâáïµ1GDcY¾í¿ÒÔkªô4L?šâ¨W½`Y©·¤ª�T¦›Î1u·×{™”v' è)žÇïÀ;H±8þuDD ±}ïã$ý&)î‘£ØñHX+¨O?j²à£…+Œ! íHQÏ<RËçOïÙðA_ÜûöbMFì›Ýν´>W½ ª2šhUYu[Òõœ¤é*°^#åD{1tÛ0C0,+úÂ@@°[¯%dÉþÃúàêÔl–ótZRNÚXö}|M¾P¸b„E!ÚÖƒE]±pÏÓË˾O^γWŠÎô6l/q9¡¡hð|%ç¼Ú(àZïHÌ3(žÓÔ%o8ÃÌ/TÑ@w]¹>gcéCRy^G ]´Â`Cã†Ö ôË<I òÜ{×E#£±E�˜JÕè•Bd&3ÒÄèk—Ÿb^ôèø1 Ó´â_⤎<ÜP.èýØÏ‚´¶ÖùKöÛeÆE5ç!_úx¥ÂA<œOýŽ +~RAåó©N…Ö‚ky„ç; âøm>Q{B‘*>!†-³§UŽöÎù[tn¦AòZ>Äûuµ:^æ°ä‚5WòÕ¦E¤ye›ê +ÓÒ0p…Ÿ‹´ßèÎnÍT%� rêµöDÔ”añy.Aϸ½t0«¤aXŸ´bÇÖ(7GÀrF˜$Üa^ï³JNtH± ZÅëDè4¥åìO.*¶D÷©—iLƒîÛBl×@oš€Í {åØ«Fµ� +U¥þSðG¿I}Õy9$1ö¢pQ´ö§‘�¨•…Š£Jši3™fYì@¸’ßõ¥Â‰[`‚«£Q*©ðþ’‰d³êÀÝó¿ïmý‹'v¤ö3œe©£½Æûy +¾¶olA¨ÙïemáaæåM'_ðLÉièØ^ϵñ$öÛFÜðç?=Ø9›bŸHzœyAÌñœ[ü\LÒÉ ke&õ ¢Å„uLûCÈRÍ×$åì¾Dpn3û,G”^îF“KA"'Ú°{§Ž� ¸ãlg§¯_òta?ª¦õ ÄCî]k¦%©;Ò'2W·Ô ó{ô²PôÚ‹šGÅPº¡¿Ž€§2–ÞbΈéc¢}H‘›A¼•8^7× 4Ä~"Xh¬Èïb¡û¹z�:Üãü~ðZõw0æAö7†éa¼·åÃ@1WE ±œ¬»Ž³”UÎ)ÞQoˆ†žRÊ ‚¬#]“ø5ä’¼áß®épvŠVòÙu2ÍR<‹Ÿ2ªû6ÅDÅÕ;²dFªcj&*�Dœì5’‡²2@½Uýðñwe b7/r«.qê*‘š&ól1þJD£u=’iƒ’Y~É~‘8Õ\!2øß¿¦…z_õaº6Ö!\…Uˆ)e\ô’›h¬ƒx †±KND5æ“«Ûõ.5ò𜠮n·ì�þn¥¢œ§¡…nr3„ÖŒ´› q*ñYaÑ»mB +H=Ê¿¹i *–ç¥nE¢LÙaF*áG=^Øq`è´ƒ€¦ÓjÕ¡¬Ó„˜":Ð<göª1GƒZuEÁLçRúzÛ‰Þïª×#›,ÿ§P,M‰Y´;ýŽ²¸øeÕ?Ÿ—eI"›ñª`+_‚F³†µãwË|Íò«ËIO”·Ì×#ó ÑšUL´?—¡6ÐæÒA¥žß;þ‘¾ÐÏ8™+&â`ªŽNŸ§X„2C¾S˜°#Ó(+;ÞHήu4BEú°“o§…|ûD·¾ížq?2Êp5»òàÿ’†¤aã"èZ-îí3³ ÝœÉÖµPâS2u†<W„ü5MÌQvxDó¶NK½„ÆFdb@`¤-Ç/!öçû„2žEF±Þ6㌚}µo ;Fã™b…la#Zžãbn*¢Ãw˜8[…��ä{‘ré+çpî[\‚¢çØÑÈᓽV4ç´ #d#:w蚤fcÆDìš8e—jϩ̢ןsžü‹}¬AÓÞJ,ûUº¿"Œ‚ÑÞéçŠJÖDâ+z8Óš8cb½’Š�’¶íC‘´¢ÛWÓì¥wþ6³Ž4wÁ×"¥/£¤#1äßCµXˆý!ÞvªºÓ óš†FWIÁÎ'®-Us”r±)耂 ð¥zc¬ÛNµ"pØö&ÿ#é¶<DtAs \åïÅÆõ£yr¨ý½“/#�óNß¿ÛZ5™Æ@Á‰PÑhÉpuø0ÿ¤×M0ÔW5GLZB?]ˆÅ™˜ˆ|¢š>‡ƒxQ¢û‰ÉÛú0D_¯!‚¹§(?¦e5r"xÖþµ¨D^ï?áÕÐ —G/JƒW¼fˆ™§ª×T)n¥@âW šTSgj ¨4Wo¤Æ/Äý„¨Þ´Ôs˜Ë)Ûp'd†ˆùFÓ'š·Ù±TˆWá�D2E2´öxÛˆ”JÄ^ƒùy?OTqn:®ªâ§JV°˜‚éþ>ZH·€x¹¼{±¹N§ØƒÄQ÷*a1E÷/+!HDÑ‘¯tf¹ÝagñÙ1®~�!̺}Ìœ‡8ú¹”JºXK > +R££dçÜî-Ž0±”Ó@hžÃÕc¢ÓÛíW=žì™Ÿi›ÌËPÀ>Gº—¹aÔµú´q)#ìyýÛâbß[ñ‘}С.-ÄÅâsM^º“BÔé-æqã80ûñ9&úõn3}9ÍÒ(†¸ÌÊ[}“äóÊuYRïj1ÜÌŸs"Eõ1-¢Ó(PE �e·¡6!xœÞ:âÏb¯œfMùdç ;$à A2óÈimDg• üðé aÇ”¢|Žà_ç*'ª´öI.@¸RˆånÎ]ÝŸ…x!!¢à€p‰ XèãF! ²¥Ádæy¼“E¿ö¡hð…¢&€Å¾Y#Â�Ö~†uHï.k?³tÚ’écûÃ'§<žû$´|ãq–t†~Ž ¯w}™ä¢I`d…á˜èânƒÑÇ>fí÷ÐFÁZø'L†XÅœ_Bੇ‚µgE'ïˆiÈ3cÓí2ŠÂWZòu†˜?îdžXÉ‹b/¾®€4>è鎉øæ†Çí½åJã¿€ >e•ùˆ°Z쪇á‹w6úM¹5|"Ëʸ{E†/ïËö[Ç“ã´ÁR¯7ý#!þ‰o›)Ëé�húº¦t ÷kåAi¾©>àâw‚\Ô{±íe¼°èy8Ï´P4KŠ Aœq<]@”ÓÚ(Äþº¯t4R.Ó’Ê&XâOl™ÅÍ´«/¥Å¨Žo +çà)ùòE`Äe�VÒÕÛYõ”§’Šš§ÔA¤¦ÜûMz÷ÜRËtCéŠz0붎 éÂX9Q.pâ^žxú†J1‘SÄ̞ʧ5c6J°éãžLozñ©ZGI?>€\çÙ_\61#w%E>.¦y¨Ê/~¤÷‚!0€DÀ¬åDè`^%eŠ ž¶5 +vk¦åud½ú' %!j¤bÉ>&g3ç¡%¼^§‡F¶³IЂ _KIÿ[yÿkkð¡ˆmèqêÖÍŒýpíóÐ^Ö/ +§4‚0Ä„Ù‘‚ðÏ_;F»„4DôZ™ ^ZŽÝœÛI¥¨;ýZwîå…T¤çþwú+óŸÃ±ë€ÛXÀ`žkmqFC¦Ía+ËK Yùx„±©mf�x6O;@Ìg2Áó 10ÎVV?Wã\f€NÅ š ¥�øIbê§Å{Ò½ÜÕCã¸N»œ½Ä1 EÇ|`:}|2]°(Š„õ9‚“ŽÛ[‚¦Nw" +Dc$VlŠHL„íÈçIM!x{æá²\>vºmûbÝ|¦Äõ„&Mýr¢½2•è ¨ˆ›ë+Íõä¬z*ì™$[@Ð&#ó"ÿÄn€ùyó†@H“zžÕA3%†xù +ç©ñRçZÑ0d:ð”Ÿö»4‰N`5'š4l؃ažâÑm×0ž<íPxÈíÛÓ}Ñàýâq'tκdºÖÊG4a=A‚îÆtZ¬)�)nªû!*9ün!Ä1vtÄH±˜gHät¿"ì—Š• ¸EfAØœ]XÑxi¸¬jz¡³#"•š¨2õË¢Ô@¤Œ×¥P¡J†*8“}}d;©‚ÉjT|ÍFs¾™.Ÿ«©ôhjó‰àp8C=AÑ ¦ßK»òe€‚Š7Ì‚»Ö¼ÕRˆ}yÍêŠ9Ï^Í»<_9\Ð%è„æ ±fWº@?ÎÛ]Ÿù{_‹Z fÁcŸ¨R`¿5°ö×ó óÀéÛ†;Ro +POMT/×OGªÈ"ä<“ôÉÅ_#Í2ÝkK£ìÐ,dóU Í&†èfV)‘)G8« å¢ÊHqº¨X×9ÿEÃÐïÞÕD!ÀóZ'C\1šré$íˆ?Ÿ†ì--ÖÙ(UQ”Ÿ*=jˆåû²39[Ù¡š'Gq\°ýÞÓ0yìæ Ãa]â±30nyV´V‹Ïý‹‚†³ùu²É_µÌ†e‡”å=×›ö¢heuA›}A„H÷¸)ÄCDyïvÐVÛR;cLDuR¾†iº•W4Ì ŠˆÞuñÎ3¾†h¹ÅÄeÞ}Òªô]Ù4ÓyÙKŠ†¡Wûf,QCLIcìVV/Þ~i‘“×c"Sž£í=RùVêZn;iè¨Rö—r/û#Ôm¹ÀɲÀ´pDƒ¬`|ߪ uÂ\QÊ�V «Í”Y… ¡ÝMu;´¬(”󘕕í) "KoÇ0æ¥qÜ—@)!X{û¸ö˜i.õêò‰`™›\]ybøx²!Ñ03ì|Q 5ZКt7 oÄÞmNa.Ê ¡ú>Ú}ÚM3£[ :rŒõíãYÑEùu⺌çèÓ`б7þ#¼ÃBÄÉß^CàFU®Ä ©xV”§®w¡njbJ"Á?†ôŠc"„9ìøoå@ŒÌ˜ ½ +ƒž`kWl”BÅÏÕ-àóŠ(ˆt‹fÏD¬Æý犈MÜ~�ýfõ¦™TkaûxAx›“+âSEÖZUÃXåh–š\õ áa¹Z CÙáj@Û€žhpˆ»›àV¨ë횇v®ŸßϾ ºŒœeA¬c4Òqįcš—Ó]€‚È»”« « äXæÅG„u0À~\ìÂÈm®™QÏÃÚù©_HW ‘娜¦ˆ©ê÷qƒö^u Ì<‰ƒ–kžhÿú ½Ç¦| w‘öÛÆãˆþCpzt¡aG(÷^ÂÊìu{À{,ªa5îÂ]…b¶÷ç8{[GÉšl0ßqËòK~ª” +Ê]÷©LÕ¤vÕ‡)ëHŽ’gÅ4Í-…XäçžCù#<‰äs΃ÎíÒš "q1 Å5±Ð¨XIëH�öÊ6O·5¤"S®iyrx|_«sÅñ¶€ŸfÊïïI‡’ÀH#œYj¹Ô°+/†t©ò‚Ìê©f¿»ûNAUÛ~/ïMŠå&MZjýÆUäü-rzc’ÛÅhsÈÛCÔâIÓ‰.ˆŠÏƘì¥#8d¹Òƒ!x?ßvhòUí_k²©1Q¡y=|G§Ý/}Åó˨JÎûå“÷%95Ä@{B0æ ó׫AÏ’Î[¢£ô׋…ºw…cTB;€WëMcUú2Çѱ†Æ3=á®aî¸3À;¶Šëµµ'_“ìŒAâiŸŽ5a™¤Ò4ïí |*̹HÃ`Œ·×ëó©ò†yc‹¶Ï%ºjÕµoÜi2t5œ…=cê‰ØMi1EÉò¶f±'sCàµ*.Ž á³X2Ñ'¢^ÒòÌÜ«š«œ€J½.QîßÚáwXY@9®÷yÒ0U^n–‘ŒiàrûBî˜è)|5ÊÈ/˜'N–ÒLDDp¯ïÒJ°?²¸Bwän£˜¥†À”ænªœØºK†À黵9Ãâá]Α ëú#6ÄgWÔÅæÃ,YÜ¥ön†oèîbïÁh€fRÚ^u+àœ(OÉ¥‘Eº¢|…”€Žt:¹®î¼†øukáÞìk ü�ëšÉ3¥tï'°a`Ñþ|ªø”™MË£¿›åúR×eƒÈÌŽ`v +”,Æ *F®Õ0¤‘:ÉCóÑEЫÀAnÜ]ä�«vȼžeœ÷÷žhG7Å=ø¤”òb":åÜ<]4©1ሚóyè¨ã$B0LϦºÎi%>T³/õœ‹aX™C”ŒdFNÓ×O!Œ—é“£2½rû<Ñ$¡ÕS<ä1 u™|¯‡_Y©3ß·ý7:²É´˜¬>WfQÆ?Œ2:B‡qŮ؋6dsÆ@¢ŒnØœˆÿþ»‚uö$è"Š‚Ìšäxã÷r"âRRi¯\ˆÔ\MH§µpOñ‰ºy�`w£ôLBú(ÅõÛ{Ž‚n• býÑüÎѼÜRc1Í¯Ý ýÓªÒfå¹÷’$æ\ŽxªQñ9€ÌÐQÂ|;Wl®ÖÉé È=ʪÆA¸ÌÄ4pS˜Uˆò|?mÇôeºDwÞ8ô|~F·AÖKèD@79Y˜ý›hWó“!pppšš#ò»õ*¯/H³¿™H+mÐt‚±Ö„}_¼»¹&ψ§ùßÛ¥§¿ÃÇDɾ䃊ôÜR&¿-;ݸú†ÓÀ7ŽlÐ'ãC,”¶ûéÙc¯çTŠ¸vLT©ˆ/° ”öb>‘·k¦8xÁسë`-À?Ø…h:ÌTbžæy§ˆÑ,[}Ets£=ÜRD¡yn=¢%,îôþŠŽà#5ãõF(Ú§é·RG@Ã,6È+ž·vˆéýBÔ7 %AjPœ1Q:ßúÒP1‡R2 AÙÉ+êŽ rk™Ž[˜ ÊÕ \G†‹øDÖN¸°š:xq¦ÿÑi#íÝF¿±¾ÀY8º®‘…JÀ1§«ïjàä츆w2bÿƒú¦ó’92"˜¯8{Zõ÷&@ îdN„ç•ô…ã¾p¸f ³¯Œšg¨æjzž päR{x VºËú<É©¦ P!ÐHN[¦gn<M“ïŠ#¨N£Vub[3ÓØdŠr"ŽðRÏlš(´67W¥‹[Eù°†&§!XGo¦ØFÀUÒ5&*¤nŒÚ §fªîbëÎ}ðæc§^ýÎQóÂR�fA¹Dà3I½;ê…¥îΙâLâoQ™ÙE1Ö/•‚c±IƒÅD í<Ú§güš}_»2‚dA¿„×)wz¹IW´£mcŽ‚Õû›1O¨˜ˆM™g±;é݆ìb0ù”ç=žFø~«mññ~¡†$ÖJ+Ü@«Ô¿>–¸î}“'&/ýD¦:&a˜Qp_êÊ‹‰pBò,k P÷lå´`?€G(Dá<¯ÂÙ ±±îççI‹hÒ)èõ¡¯Âô´3ÄÀQ@Ž{† €lbø÷Œù3wÿòΡïÖofù Z_¯m[«¨QýxÁ0¢4©8bL—á9F‰¦ô˜¨¹_9ˆ¬÷¢ÃUˆŽ•ïgŵ.ÜÂ-ÕO©œÑÞïzˆ—oLT)~”ï +~P}qƒœß—øFèË›Ù?ì÷ª› ÷@t¯ÌçúSó“.1Ñãôj嶾úgÃ+Ö¬íRˆ¥°ƒr�ÿYÏ—Ž«i㳆ç²VzÔ¡0._‘sÁÎIrÒÔ§<\qÈ"¨ów‘ò-4$éâ¢þÇ»[ãd¢¶ùö—ÆÛJ©yÈ: ñ^Ý +ÖnüyÚúû³V/ØP#Â?~̓޿è’}îe¿æÿèÿí=)µÒ +—úå:"§]cFýù_T=ÊjY˜©aîÇ>©{Qèªá“2`9µf¢ôÕ�èLѿ觟-‚£˜r¦ÿcóPá!™èá…aÜLëÕ4K÷¯ k<CØ›0ìToˆõÓ +S¾€Ð4p%{‘ÆÄš³ù0õ?)XåJõ(YŒa´ý”5©ÑJú¾Ä0©˜Ýÿì@SCpV³NiGDu#ïœõ’4gæ1åÄèCBa¿é–[±ZëVRôP›Æ}šF›À/ƒoN3XjÔðëN#4l ä¨8‚&ÖY¦‰@`Œôz¿©#Võ£CLCÚ5ºV…Asf˜ ¿F)ÖÊN PÃúPÕÕå wÕsAXý§š™½O49rIÙÓÌútp³S0ˆ`A#liÕÿ¾ŸÏ÷†C²ý}DGBNsÙcèÈŸeÂ4ÌDnÁÒñCøñ’žbà‰?3ÌVË—w¨«ÆÓö‘˜´5Fˆð‰.‰ .õÄ™!hY¢Z8¢?"ìæ[ûÅ@ìÃÝ[ýÞÞS¿Ñ‡aßÒ“×O¡¨ŠÔ°'2†åþWs·iŸ(ºáÝÒÎ@qºÖï…oýú02·3‰!æ]O7*Xi»c V6˜äøk|bqâðƒ�ªÞcˆÏÖϾʱôi0¹ +i€q¦)š#è¡„A2ý;Ñ”!jãÎ@„pr®{9î^«ðïåxõ%þÚË�€êн° I“ÐMR@àC\SoZ ^ž$S¨¨ÙÝïJsnh‰EjßpÍQÂGÔ¶‚®n\usÉ®¬³|±Úî@}„š�øÊ+, QàWŠe€èÐ(q9¤{pž_^Ž±³\v"@Ψ™>Ì’ª¢TT#óV_Éÿ~3cPP8¿ùx +E¯*Ú„ƒh–÷—Å´ºvŠ\½[Ϻ!•Ýß%²än”žaà¡u€¨xšE‰†©ä@k”׆åY! +Óò)À`Q«Î}5�â ’Ð<Öw2ƒôÛÙ@ÐÃ_åq¢ÛB ½Úæ›ÇÂYéœ\‡èŽ¦§åª}Ê=°a¼¦e f´b¼B°¥ø¿!. +!öôô´ëÊÆDûw—’"õÃNÉiÿkJÖnSèˆÅN®”„!p\‰�!`ž8I8&:’}#@®®¢ÍŽš\«à}`‰ØwŽs‘kO‰Ý£„p`É•gñ„zf:À aM7ˆ^lêñ<-¹1‚–õ/0„6½ÈßÑ·T÷mÎÂÚR£t€èÀ�1/qG´W—þCf#ˆŠÚ¼¤¼œÁõééZa´ñšL‚!è£;Å(û;©Kˆú#“¢þòIYÒ.a Ôåê[|$”í|ã;µÑæš�H¬Áq=^8Ó›)bž Íâ0ü á9`îýyCp&µ*js�M¯2›`ñÎlRÔ箾 ¡´C&¡øaÛs@†X ifC¸>–Þ7’lnQú::ì-¿oûr÷'gÓh%"«˜uZÏÂUüÝjp$ݤߚïu(¼»ð“FüQ%'f™!¢ñF¯ +Á¦oþ"tvSqac¢a|³ëö7ŽI"‡Ú(eD5´ú/!G¦‡ 0kqgG”'ì󅃚Uý1ȹ¾ÄѸY<¯ˆÊ¾´¯s9âÁJ4Ú"@P†$•×ì`Ç ó)á'Ð_2—�1‡Õ×ð•”ïà +XI5ìÊ:Næ<ÅM´ò‘N^³Qo½QþŽƒ–ø{ï²(1BI SŸKudZ*«›•|¹5ÊJwÛîÊ矷+‚€.X\*JˆI_••s"Xù‡cÛeƒ"{BŒÒž´I3RõbÇþësyK!º7,ÖsEô÷îçî§@{IAñÿñu¿Âj©Õ×͆v øãAÑb+7ñµ×jHR;êšÍO¤ŽÔ?5Ìþùf,¨¢[ßεJÒ‚€à(!hø1¾w‚]ËÚbš_Û„n†Xûz«+Áˆ¨…@Æt_BÎCÃÇÑNô•—n¾{SæF†t9!+×nˆ}<þŠ +3†à{‡nùœnNvcÉT3'Úûí3S³ãýVb‡4�%QÏÂ8€É+&ïF ãNa-ôºY‹¡ š55õrAqõ¦5†x\ AO¹)ƒ:"$pó·²×ô.-'B˜½g'G§‹6Iž‡'Í+b÷wÿ½“‘ CÛîbY/:ò~4ìfØ>ë1¹y’Æ:*f¸°ÈòQŠ»·75?C¼tT†Ÿˆ’Ú+1Ïóc9ÕÆß‚®©W}@Ãî댤–Lå¢bo/êȘ9…žýÉ°ö×ܤ„(·j<ˆN (÷gCDR]çCt\³Þ@òÈl¨+è¦öa# öPóÁaÒ³zYÖÝ"g”Qݾ3&JQÕ–Á¯•EÃK>ÙxCtß—A–JÚ1ý}óZN'rjágç ó/W±7af#Ž‰K†V%n]2¬‰sÔí&j’Ý1 œZéÃõÀô+1Äiш_[à{y*ÞÔ†ä¦5meFifÒµÇÚÃ=ÊV[{Ä·¸""¼Wb» ¨ÑsŠñÌn&T(vd4µhøÏm8š¹A½{”Nóf¬ý®OOˆãˆë«iHgÏwåDPÚ¼6Åö›jÛkh?—(¹øï,>“~ÒÆJÝñ´£ŽÂöPSŸ©ö! +±£Š/ë‘\„é&)R`Ý<=Ž¨«ÿ$eqeŒŽ†˜h¯#Ë5iQŽâ’#Îqø/¯vˆ$Wæ3Bm0SÕÃ&YÊD‚¼¹ÎôBP“S‘=pW_³ƒŽ‰¢¡8oI%r3Fð›È¹>ä{®ì#]Gc½ÿ-HÛÍ(s»íò¢Ž‰([¶/›1 Ô$’¢¤‘™¼a1Êß÷'ÄQãó'´Ðè¦áÔcšcÜ”Ó "~<f�‘j[’Û5Ä|ʪ;¢}áßk€á¼‡�ªi÷ç<‡Í?÷¸Dkl3Gæ h‚ø)%tZ…S‰%ç©T–hv„Yåøô>µ“ +„ë-V§Hî}yT b³5²=3Íêc!Þ·ú³îg!ö>5Mfk8‚òÛ÷˜«—!¸�É@8 ½î¹œ‹›Å´YâuÂù°ÎÓ(s*{AÒPÐw$¢�BÞo~†pQ‹7>PLÔ±Bs%rè£~Õa�úˆd>¤¿“iúL+X�tØGVÛ ±Ï#ÒY1Í ýã׺èYñÕ”üã<zŠÝzŽkób"xk +¦ß{ÄE%j˜ÈZ®á rÜè…Øöç±(Ó%ô„Óž!hƒˆwÝ-IwäDPÙïÝù%‚ WoC ÷ÞìEð‰&goÜÑ9�fkˆqŒ¦c"l„¾^\;Û@œ±²@®£\6 –nÅxφ _éX0b4Å9çŠðî9Æ…€jd<|*ƒ#h³3ñÊ ðš™?êЛ‹™ôw2çsùß…†b!¦%)%h<ä*7Ìmú>ë@¡ƒ–öP½šM _ äåA Ý0Œ_±üÎazâÔ†À[¥-ü.cbÇíøZ WãÕõß»·˜W;^Õ0PÛyÁk¼ÿ”$¼âä½\a±¿^'5ÆD8Ò¿™³„àÄðžCT‰g2ë:=Åh”Uó4ßà3kž0ÐÙ÷ߌ$s¢B±-0¨˜q]S£ôõxàˆùé=mè¡X÷¸ _„ÔÀÌÅt¯‚|¦Ófˆ•òWƒ‘M0ó6‚ƒT¦/âÒ¦Žô˜ˆ‹C'Ï«·T¾/zÂ4Ì;o.´!¢Ÿu8ÿúÔ¨ÁÖëÉŒ˜c:§óáûöåFÃÏ‹º±o´æ<~…TµHr“À„ºDœª^ãŽ%$"¨bæÔqa�3¼”i�h›rˆy(‹R< 8ïú 5LÁKì{ÜÁ¯Óºü¦îˆý4P»Šêˆ'ŠŽyãˆ6öB×K6i ³`Q*!ZÔbZ özÛÆç!Ø0®\½n-Ú8E :yç&‚VüƒêˆuéêÆÑ„5§:ãÑ`èWÓ|5Ä ÖT¢DÜ ÊXÌӉ׉É\MÒ0ûr»ûÉÁ}[˜),=Ì.>˜ôB9¦%Ïã‚èÞцd7@@Ñ.ˆˆzb¹^š™gƒÈÖxEQ�*ŽË²0ؾ—<2/ÑUÞ}~èµM`wÈ…‡"ØÅK2ÝÓÙ¦Ç<û(†/´w§t8+XȾ�DG#ÍW !ö„gÜôŠ(oQÒi„àäjª3ÉÑ ý6ÝAÒ!…úš€ÅÉ›ªgàÌØMûÑ�XðÖT—¡ícœ‚˜B†˜þ~÷!ö–ïµ]LÉ%�ëEª†ˆ(.b~¨>%:¬bX·GÎÒ@¤…Iûøå@ S«u\SU欆À¢èÔLA”×ôþkæ-8<å$ÐÀáj¨rl8oß{ò ´`Wë!lùùøMAGéyÞû͆‘Mãq¯éÁ…ãuXÏq2ð‘Ý^h¬àlˆ#Gá7—å:è$1t�Ó‰Ž + ß6LÏRä_sŸBãÕ‡ð–®h-Š¡»ÇÚâ®k)á¥V„ïèxt™7éQ£•VŽg$4ŠiX:bG {Ãp!DC vP̧)&BvRßHƒ‡èõ¨9ãV× pÄ.·#®"µ�ˆêt;cÅ<v:Æä›b%±s¼‡ðjïæ”GÒp*Hf~¬¼C½«[OñìC=ì1Øç +êñÁëá‹gˆ•°_ +({Žt&ñLK-A!0}ÐÒ’ÑÇ.iÐ O%©VŒŒh3÷¼ 涼ÒîÑN×´!hxæ©~[–ØžâŠð=¤€AbœØÆõ®@”$ƒ wœá9=<‰°ªÐDÜøÓN*Ûj“U;¤šW…Л¶7ÛœLûóóÞBuY®—Ek\m1Lé×jZ_?×G4¹b>F(ШNêIiÊé÷í½á¢]¼¶€¸ÍŒÊ»Ùì®›»7r7Ýlâi_øènDÿDÔ|r¢N§×µÒÑQ°/rZÀ!¢Œ{°Ù»`bå B`¾ÕÒ)Ö@4`¾×[GÏÝR¿¸õ[nE�./é` _rù @ÖTÎq1ÏC·\M1o@äZä’£aØžÔé4ê"“¡¸Ìîà IztžÓYˆƒîk‘D¿»u5çd LGÀŠŸQ3æÍW +!¦ÑÌTqÑfçë%Òž ^V‰‰Z–«b˜ÎR0b»2ý;Ä<Wä"¡æñ¯r¢r +3ŠÒ8=Åà‡tYñfÄÍÊR¡ÛõxDI"ç#Ÿ‡_w‘¹�¡Ÿðz‡·YsõÙnttUM‡Þpï°doR(ÜGV<R%sç3߉vc!¨p¯•Z~÷m]¦ãkˆë°‹cswÔ˜Öì!|r;ÉÒý¾4þ–NÕ* <Oò à‘¼Émî7—æˉñ,ÏÉð]Áú½Ý¨}ÂE‘}] PÅhñφXî}¢iöêiJÐ+Sš4>Lx®GˆŠ¦,|ý—pN™f(¿„>$4.2äî¡‘'4Nk’Èõr#èú³^ò©>¢½tG ¦W«ûÒ‚ Âk1Q¯Añ‰öa¡¸s”ö± +ÔŒì²O±RâòªÖ*2Ý>ë¯äórR+¥tºµ×0JÂ#suá…¼(ÖŸ¦“BÀ½Ui0& +ÏŽÜ‹ñA}¼Ä²`BŒcé$De‘‚ˆþü3ûßïjŸˆè'VŠ8¢cÞ¡zö÷ÚŒ‚×W㪃t?Q#_šˆýAsÊiHÄíÝuù€´ç&åуÓDt_Øˈ緅èXŸ¬Ó”ŽEüÅѵ 7Ì9⋧*ö(}Á ät®-¤…3êëLFWš]þ2yï´ñ”b"TáÏ×þŽt—/§ýgÙûo;½vBpvI'¿nݺdݬõÐçi8ðH`(~)ÃOÛ¢!V:”Ç/1´"!Ô!ëì殎Þ.±˜Çøfï©•ÓvúÒÈ]Uñêíp3|Tt\e[ˆ½u¼ +lbþ¯0þˆw“qj>Ï3"D#» +]¦Å“ÞeJû€ý£ŽqŸÇ,œß7Sëî)2�°ñœú׃]¡ŽaG‡CsÙó¨¬NwžÍp®ƒ^BÉ&‰$“W:´¡ÿ€X°_ùùõpâ‹ý#&â”Ú®z–)ýÕ7â|/П/’¸6Ü«6ìIk¤©à¸ÜÍñ,çiÇÀWî›KÐó÷Jí§™$¥ +íÝ&ú&Ëôæ!#«.êå\cLS¾“7@Ȥ¢åç‘g¡:²²ïä€S¿Æ9RÍ[IL_Sþg9ÑÓâD]D³zÏ<–Y|ˆA?÷:�@|<>!Ú!òÇ<$±z1.¢ƒ*š\Ý|¦ aºW×îSø‹záâëï‘’žÇµ$ŸÍ~û;?Ñsäú HV†Ôµ0?|ù1Ó$Ã0>Þ…x³)wïõgÜëÏì{ÿ‚…Ó|¼Ù^BÀ…F‹ åH`=*ÇíûÎâqÚ|Žpª†é$OӯÅÏt¢uDîó9ŽòbП+ªæÐ=óŠ×>ˆÁ*Ìãƒ}”—ÔÖuÓéú„(دqXñc³!æyÍ?¹´§½ªàÈèz÷ Ȭ¸^©œÚ¡¡šæ›! +¢S’#%ÓW2ñ<€é}ò]e<Ù¢€f±‰pÊ ÄuøA9k¦å2dZ>œÅDƒÎû+]¿#ºž<UCœ8ÁïÜOo4òõr9õ/žœg‘¦ND"ö‘˜‹t™§$ ?Â%Cp˜Ì¹ÞÀŽå‰Ç»ïc"ã—IÜÀoýÒ´Ø>íÖátÄœw_+òëÇÞ²]1ÑãŽlq"ÅÙü1s«+‹zsb¡3á±½ëyËâþT?ODø¿_•!]é3Ô»n¼o,jÃÉdÛ×»?¨M¯²NÔgâ_BÂõQ§–n`9 Qé]5ž§R£ŠS¥–AÏ’sfþ^76A?ÜåøÅûœ³C#APÇņ›):ä_eݹî¯y£ë{øÍêÒÇ4Í –¤ÍEÁª4¥_«v„ŸÑTôÉêº?¤?æhFö£3u)‹k"»A‡œYG¾Ò7ºñ©O'=À\8ƒbˆž2‰15 + ÑÒèÊŸ1Á·¼»ÎD?di0Lúg:‘«ÄícBôõ›Ql7‰²ŸZïL¸$兩áµ6Ó€¨Óšøšéç*FµÿZøðý‘î®!t2[¼×ì%mûäHq²Øë2¾ñB‡’±£F²6¥rè�’kW·±²éÄ ž6ð½Dñ6§á †N½œg»w($h¡¢Ù]G ÆÒ^µh6âþÅóÛûM•ñÔ—Ó`âà³’c³„«'ÞNY]ð»”z®Æ +b¿!ˆ®gÞ” Ž¼J9|FÄ,P‡¸öL¤áªyHøD¨ÇÚn?úS|05æyè;–½™uS¾nc¸½l$|øe¤ãÈ…áUyú{¨Ç„x¤?>ìxZØ\·žz@\`ÌC¤dë + 1]ܯ§ÀXK]}ˆ«û¸BðŒßÃÉ›èa‹‘{]§ãdf ÚR˜Þï?!”{ÉàçÚ„÷jNEæ§$&"ÔÄw2Q_“[!Š“-= 3°‡®QUìÝÑMÛ&>¬.HІe¹ÙsÐÜ;nJ +Ùߥ·&�@PF³Èô×ã&Yñe/Qz¦þÈZ¢³}è7ÃÊÊ–ëð_KõË“™BÐÆ걪´M¼Ù[Yý"EŸˆàÛíÐüƽTn]Æ/µÂlùAïáR…Û8£1"q5__ÖrÑt"],„ðéPòã“Ð0ž¤^çeÛGÔ +D8åŽs"8>oúÁvh;,ë2á3DÏ|ÿ).ƒ¢ÁˆO2Š1Oˆ¿ÇDtÁÌçzÔÍta‚ù +�ñÛJ@ÖpÓö—4÷‰Üžª&‘jÄáÈ©V<vo_/¨¾õ¹"8¢~„¸¹‡Ns&¢s³´ÓâbŒ¤z÷‰ˆC™V?ázY£ƒ®ýsÍ‹”·¢ÇD!È,Üï/9=Nå~b¥ÉæW]•ÀÒkb0„«8G!|Ð*5]J1æ¡>֯Ğß(·DM(2ï=7<+´|З†#8”÷Z >*»ÆD±óÆB´Ö¹»6HA°|ohåuš2Ý»’„€¹PÕä:|ÄÌiȺKí(†!‘âòφ +BLD1öcñõ´œ½cp`U|L4¼¡5/¨¦»FiVý<Ô²˜bcjߌô‡Ã:t\ª~áóÐlO&9ô/ÍŸþar,SÚ%³ý£2ÄCËWš‚hä«TxŽ‰0\+Öç%,ôó®Ã(·à¨`æ¹Óû7„ÌGNÃ>¿®£{?×è_EóIÛJ!ö›Âj뱄ÉbÕÓ[ÂdBÕ’áè{×øØ=ˆ»füܽ2.£ÇéCîÊ +Å‘:úhÛ{@k÷¸ã_JùÈÎœpþÉÙ««îMsíqù‡øY…jïúÂÆz¸\ˆ—1õOÆD¨WOÔP9.ò•7g¯u…®ð;ªg¾±R4%ȘBPN~Mg>'‚»÷9§S ØÜ‘Ô^¨8‰^ÿ)Ýe£I IHgŸ[GÏ"z‘b[ÂÌÖ<— 'syÂߥÃa!ñ«Þ-C ä‚BXä$ðŸ¬q ñ‰ž/ÏÉ1Lä|•,c‘ߧò$ a¿ú¤HŒ#á{ôŒÇuØó±[ :{¶ªÐÀiéAÃæýáÜ Š3Û_ÿ%©>Sâ·A蜈1^wJØ"éñÝÖŸ}•sDèv¢#‰bƒV$úO33®<„bçPE©å»?Vcâ׫y‹5Z^S騲¿bšÅ0VEÄ×hMŽyÖ—wÇ4ùS…9Üt7<ó—²d^ØyKÚ?ƒ°Êßý"àõçË .ÇTg‹Ì&4 +[L¿8t嬷5Ê:Q G@Ì("²ÇDˆÿéHà „ˆÆ/¦‹ÒŠÎýB7N—!puE4! rüP—hÙçè-é€ö,ˆ89gÛd]÷&žžÁÒÐ)Çþžë\7£1“ØÈ'„ºÜ>}šà¸0OzœÚßÊËWÖº_ŽzB°$*_Ct·{hùfÏsŠ}´W<KI);ãöôö·ïK½€ +SôUŸÿ”ç#-lb9QñJµ@{y":]Ó‡á3¶f`¥v§Úáð¿ëÇ>4e¹¼xLTÒ@:~žL Ïn]ጠ+‚§8’.Wƒ]¢y¨¢U¾sF«×ëâñ¡ûÀtZuEƒôhO)*4FXÎÞtçî0èiPr3æÙÇ^Dc{¾¹p½3ÓW›ôSIP�„ãÝäÉ�$½Ô®í?u!ÀØ~öo~X¹KP(0Eû<™LgZá–|Áùê¨ZÆaÚ•ÌìÉ�r¿L/b"Óóx’º‡y) …åñWŽÏωu'ûUðîMC¼F™²§êüÝ=Yëót\GÖávdùù0x{iËnÌÈß¡kWi‡yòÅ;Iaf:É3æ¡2ñ6µÒ DýißI?W»#µU§|aº›¾!fM=ò”¼ÔÃó ‘î q+Q†#3¯äÍPû=[nˆÁ{1$GfˆªÞÚíˆØuI(*ˆ¤; ª÷{ÑõM†:麋P³A»4íK°›"Íy|¹WIÌCl) +Љæ4ÒÔïU߃ÏémzùÛúe[Ãècùмq¼Œ0üÆaªf~½ èS®çÞèË!ÓÑE>/Ý”nìŠt툉:»÷8¤lüfäñ¤ã*J’DÖv|vÄ>oÍÊÇ°ÐßíNòcH=&Bÿö®;\Сl"šB´T#�jÎï0©g†Ç�ˆÔÃÌbšÁ¦Ò©@íV°²£9¿µíªbïŽVL nv¥¡8•Ñt§+iõu*ŠFœ7®C<L‚ðD3�²ˆ?Ëf£aIÓܶ½æ oDcCð¬GÍ÷¶^ j\.‡YÐéDka3”»P¡œ �Í£ãjˆ½R ©Qé¼èåË2‡Ó(Ö@K^Þ#”sð‘Öï9ËdMÚ–1ÃΗ‰_Sä©Z³ô•Ñ=‚ÒOO;-Œ=Ûõ„AÒInYJÓþrEGݺÍì4G ͱÓ6AÕßÝŽ„{³'ŸwFn—̘P}|ý¨'�ŽÔÞÓ+DñÎN/[˜Î×7Ócbµ(µÁ â%züC¼¹<ë׶ï¨eñ<Q!iŽ¸Šm1¹¡»ï‘Îõ,× +Á”Æ, µíf 1ÿÉÆA•16÷JuAJKT¢ý¹X÷4g†ßX°±ÅUŸ5„D»ž7ò+öfŠ¢Þs"¢¤›ûA÷º´º¦Fù‘Sïº èâ wÒÌ9L�–#K¦qçIpAƒ\$Çmŧûì¹…@Ì‘[˜Jÿ]ñºú¡(&‚.udæ%"Üâ…lÔ9÷wW\Ø`_6KóBÑ °É3÷ø|<h¢÷Í0ÔeÔ†ç?ªÃººE)r¬æ2¨ßOѢۣȞGæü^!ôìMv¦ºeô]˜@oC±½*Ó^Ìáe–û-y=¸~QÓ¨eö׆yÒ¸»ÄO¡xåvBD/œï¦²Á¯0‚e¼ééÑ*¿4ØW[½y’³XM³X©¦'ÄD#†öé''úç,Åž7ܘT£ì»z™Œ‚8¶wBxœêR8#–ŠyÐpÝ*aö2(k}?{çYX¤8H³[¯¯@Œ"Ü៞_öž�A¦'jŒÄ Z)�Gàhõ$·Äº”)Èx"íÛ²»¯q\윱¿öä·7tü.ºe1‹Ûbr¸€Ò|ömv¼[Î3Jäh!í;Ss""VyLûï¥g+jM†hŸýÖr†á5!Pò_B^¸šMá}‡ÎXÄøSija™í«F¡Ì´_¥<ñ쇺Bº`)±P*—&ˆKdÂçöÃ×'wM%h^È&V’AYÁ‚¡Ù³]ÐÑQCªaý¨þ›Ú’…üÔR_¡ÿ–NÙxYPÃÌ–94G +п\méæ¯7ã@‰a«˜æ‹�Wcºú•ƒX�ÜÁX´¦F•YÄï"ð*Ð7ÿ1¿øÒÑÄЬ¡7í¬*L{éHE¹Eñ^WA õñR#ö±É—™g:´83Ö¦ƒØ¦rj¹éÓB°dèˆà(ÂW[7D¸ÏM9ÑiŒ ;³Y4ëÅ%õR²D´e¿n•(!öÇ`½6A£ŸKëhŒ‰(ñªyƯ¨¢;ÚÜ£úÍëI“ýfÅ¥Fâ„Ae¿é ó¶áD½˜‡ÄS=‰+ –Ê…þk©+Ýu}9ÐÇ)‚ž/-dtÿªS%$èž2=¥5'5ëݶ|×k~À1« â×P¢S5ó€ë̃ÃÛwØHš?a¹˜Ø¯¹åXïñ£�UŽ,Nt'C;ë¡Nóš8ŸCÁŠ‘Îg[£ ÑÇoí¶ÑU¯ˆ×ÐÒŸÐÏ@Þî:>ÿ¸W`7Dæ"å"CÔšYîÚç¥Cš’¾ì}ÚÑI÷þÓ\²÷»7ßrh9ÔpÝéKó˜¬Lè› ¨»`âA85¼sìÝc’°y=Ôd7âh5±»\ÌV+ÝKFO>>÷™ž4’8ŸJQŽ@ŒDݧ1MW2Æânü‘óŒyÚ©¬9bÑz¿–ËJÑzŠ¨cO2fåD(^ò´UZêƒ{ÀRÙö¸—Þ1o›“œâŠa%p°tånÜ0£ÕЋÏ+úWç§B”+&¡¡²\ÂHiïNQÆR@%.9äÂ3™Mÿ1FáÈ…w›Rc‰h”A³Än¿`r>K}•P ,W÷Hµï¹[àÈÈ5ü=͵jü;dgæÕÊN·’{JùõðZ—S¡¬4+ÑÄuÙæ<Di¤O_öC~¢ÎIcò\á¸$DºgvGPÖuÉ]!8¯õK.³ !,Ý„Ä@<´CËÊáöÃ<ýða4Àâá¤=€În¯óìÈpÏ\ó(ËZFm³xÛk²ï2´s¥&¦÷ ¡É6¯ZÐOÏCLÄ'÷žT* +õ”,v�ìweƒ+âQ9Að‘C[÷ú$œéý_T¿jâ[Ýð˜Û1äÃK`wÓï[™›tDÇoÐVì?sü¥¹„Ãå›k>é)™—øD€¸#Ǭ›S<6 ÊÆ‚Ôk¥5 n‹iìZòHˆçÇ¡¯›Å{5j„§}!„üôÓØQÍ[fUÆÄóTpĪ‘wb„C€'8å9»iåDü˜ïÒ««¶ WSÓ0½«¯:z2 PÑêar$†h!b¯mÉ癈jhx— +´o~:Ú(&!iÞ) +ìÀd™GŠ_ú”?¢“+& +–•‹P¢òñ(ëfT¯p–ú<qû! +ºë¢{P¯\áÄ<z7݉p(PÆcâ²™ø}•¦»"ŸÙ-hÊ‹-J9¤…ÐF6;‰!C©aÐ a”Ð’ì@mELVGw혇ØâµO ‹;×ÄÈR[Ë%%X~÷§`¡§!`dõ[9²šŽÞó¤¶- *A]” .ˆ†1ë¿ïMâmå QWC šsÜYA p9ÓÕ¥ê}šXìæÈÈb_á}HVPÝü.Â{Gˆþ†••ßdiäKSs"Sw«Š hd-¿t=QÞT7¹ú[•¸–E3óó]óp}ܺ€M7+ê˜Ø1CT÷êõ{[¦'r¼Ö�æeŽ©¶ÆñV6Äá§ÏlÙ«–˜m5MÞœ+#`þåv®.yç–'Û2KLÆ7(ɆÆwT2D¹–P!8ÎÜL²¹‘ÒωÜô.?WJuís—!h¡®'…BƒžÊ/n-y§»kŒÀ4j£1 BèfNîÍ]Ýë�‡¿Ú’¥Ðý9‚Èüu*ÙF@9ú¡=¼¿ÑÓëÑÁ6{‘R…@…ä¬ +m°y}Ϥ¼k4ââ†Î©ï¾Å4áêû´³p#Æ;n±?z„ÈPU3F’ððF!&*æÚ,@YâáÇ%›u,ø/?Öy¤fü‚^Nù®×fˆþc? ¢"·jNB´Eôº·{UwɤsA|ª¡âh ÆÓ«Žz!à]¬r3Š‡k6ô«'ƒ|A¯‰’ãó@¥{ŵõ»‹EuYiCp9~``ƒE§Š~Z4åÒ爎 ø|£Ç@Mµ Õ’süFèƒØ‘5Ù{Ix¢¬,íõõ"êÁží¢—"r©OYJQ½)þsiÛ÷p 9§>j° EýUpÒhN€Œi(™?l@Qkïzhjí’Þ.°·æ©Óv+¿#CêEOü]ù€xïc†6 ß®r±dLDi§œöwl¬›”zÀQÌØÈPŽÆ‰ËZ;¾”û4ÌŒÇ f?‹ø]�Æ'€ÊÁ›Ú{>k¸—p»_2¢(î²f€öº»gQÎØÁM=(ÈÝÍZ^5ZŽ“\ +ˆ5܅„xÆ0jþ^ÈÞ_|d}Ô1ê1r£Jãž’Ž3ìkbšÆ›´ßY½èQƒió3qÙ8âAU{¬ŒWÓ‘Æn@œ¯ƒ ƒë„ìúè+m&3þY[óєְÞGd¸Eù‰e‡Dh¹.'b'÷ßë x/v´úL÷’霘XÙ–g¨ J"Bn¼tÏÑBnz-®¯1mS¤J¡ß’j’QÕ‹°ƒ6¬ŽZáYl÷14ãeKxOÇS† áêzÄHN}Nâá59ï@,âýo…ÏøÕó†Î£¦¦pP‡UÁ>°…¬â¤7Šæ¸û-KkÒŠ¢7 ,—öín‘¡'¨Úw{J°n˜$ø¤3Ûs‹QÐÃ"ÙÔž“†ÁHÄúò¢÷ëùNR‚¼ÌþÉR4€«É”…ýdu„§ýK¨ƒ²zWø×qÕŒ¤ÞÜ:l‹b#÷‰cv¶Ä¦:x†xSÝÀ—/ähÍC8¿¡½ù}òçk1 +¼åð¯±þéF£¯òúÂWÙò�Q€/fÀ~IKBÂe^|MûžZumyð1ž¯7–B î8b_mt‰‰°Æž.!PÏv ÓX,Óaç‚0•°;F}[l4¥Gfä^‡!ò’K$ FÂXæA&D¡¬j +11—Ý»§ä3]¿¡YŠáí®š¬‰ð&^î"hÿÃÛ¥ÁiL£Ü)K�7c7O2�4R¯7rƒ Lÿí~ål!-RªúÞ²k gîÑ‚ÕÅ‘ý—Œ÷ÓÆ™Þ$ží‘ÅDÈõ›˜ICXíÃ>”鶂DÙì¸C@ÄÀÊk~1F;B>’w{™¨^™�DÚÔšíåf¥¼]Ï ‘µ +Û†xW”nC°Î{]%'z¨‰¤í< w¤…‚!<CêEßø»Oê³"}4;‡KoND7 ‚Jbò"ºí6CìcÌJáW°¸=¬tÑâwn]ûéT¥âçg(ß; ˆ<pãpºœÈëwŽcòÍ¥ˆšM]¹æ<'Š-â/7ú«‹„òô“4ÛžfOÔoÍöÍd�`¯$Ö„–g®^ ðf§Êžæ†€BóB4êK:[Ã4þU’4ˆJ¾Æ +9Ñ|Ž˜’&ÒŠ5c¨ý®ü8†@0{ k-µ”�ñÀ8m@è1Õ4Ìıòœ¿?*ŠßiîÝì4÷º†5Ý—ÑSë"'BüV%q¿lX†oèuø!/ Ãû“<€ålŒóÅÓBfi¼óˆö=ÛÿYŠ6YGJXˆâ¦añRR|Qg¯~É>7ýNi:±Nþ9ÔÇß +L«X‚øÕ³kv>J3!qÝ-Fcžô©¡bá=è† íéÈ í›·áñyÐúð¥C”%ÃQ7&ª] Ô?3ªÖ0¿LJœïðýZzçØ!^™ +ùÒÑïùUeà\€« Ë‘4j²²qˆÝ1òbM¡B·îƒg•·\&²‡wýFÓ)öaÖº[^šMˆTI±¼'Ô|Œv<´cؼrŽðw®™f¶óGAô}§½Hˆ½Û½ó¦4웤ºœà‘6T5 sª÷⃗茿º÷ˆˆ©‰ˆ‘pQoÿ'ýŠaˆ†5·2ă˜µCÅ0-ý^Cì^§ó¡FÈÄ"÷¼¾Ç“®l€Ú¹S†Àµö±Ï,®ˆbɵÐÁåmÇ.Ä~1úïBGj"•D5'/¨¼#OUr\˜Z„ ù³àü|™p�BLÈ¥BDZÝk† Xø¤ ˆÑãš!0ŒMŽU³x4[|"ê´˜±»D" ZõLÏFo‹=Îag.PXöÁ°è<yYíiän[3ÐB½±§4Ž.`4½«:‚J•ª®!èÎbâ›»ûu=Ø´>Q³8ÐõU}ô JÒ@\®_†è?Šü *Ë Öà˜vÀ^Ôj,{ƒàÐ@zH£PJo‡Xo‡ÓÓ„(4ÉÅ DøõsãHw¯þå6‚¥KH*Ø0üPjrΆ�Ážé˜âó¾Hï9¾g[©Nˆåê½b{;OC [þˆhÙG°A´’ç1C |ºk@P¦‰0?Ö†ê•÷W£Fû8ˆñý†°ï£#†åh„Š¿¯•/âáä‘ÃÉ‹4óL¬aXƽ ˆq v€ gÛAµ^ŸoNDG½ ++�QììîõÂ- ¼àÓ×y±ªa]¡g™Sß¼XÔ€^êWi¸ è½:¥ áJ¼Ë·ÂZ«âÌnßü%{CŸžhÊyÖr=Àü1a«Jj˜™)Z¿sÄNp„÷ŒˆZed×Þˆ‰ð,¢9(q}"Ñ!ÎòB”»â£c¿ë?Í}±sRèŸäÇ#ŠðX8>Jkr@p%9©}õ×U{@PqS‚Ž]³A@1ÎÖÚyÅA�ˆ¨ˆ(Û ŠéLH°Ò¼5ìûè@-¼„˜cúè£:ï}ƒ3&Ðé?�N z_à2P·TyÀp«ö³jãÒ»W°îµ@Í×dUPÔøyŒè6!dàrDFß(AðôîÑi¶/yC¤^lFc‡KÞ½‚ á±ø +’Xk.H;6Ù=úD”I¤Ê;fL4iKÊšm¤ïU@1(›Ñk8A_}ú›€ óYŽß cÂá—ô¨Û°i˜ùf‡—#®J›´[gÓDc©GÄ„˜bŠ»G̾nœ^<9J¬ý]ä¥fë8làå‡V$ï‚Vè—lž&Ñr¢_§@@Œ)C C›¡¬üeA†ˆÚŒß7ü‹\ÿÅÿ“—>£ØÂ5t ›-®)´!í1]d3Cì¥j<µD +Š<p´òû××tÚM±+&zL'uº8: œ-,K¯û†ÚDMiNƒ!(Ò—!"ó—ܯ·åäDw;¦@Ð1_qT a¦T#œ†@PqÖ$Ä^ -¾RDMmñœèêA1º@ÑRc€ %çRºW+ºÃeO-ýþK°ê«žyÈå~jÙwruû•z|”b5×ëC,ãûDýÑ3Ä›hÙ™¼ùÅX=xI>Öi&ØéDì +³†ÀÃ>_… íöÍŒL?UÞ3,%´‰GN·m^agQÌP¥5Û–šÒª#ÈUG/Žá}¸ÔcŽÜ÷ŠûÀyy,ÔÔÚƒê¿Kjb¤ŒÍŒªf~îgÍ°ÉŒ‰HÆ·yšçîÈ¢‘C…Õƒý~”Q“{eˆ×2Ñ%[7ˆbÐsÈ{€¨öÜ6·¯qÄþþ`+Y®Å”‚q3K0OLp¸rw»/'B\õæ«þàç»Çô×i^¾2»Áуj?¯ONÄê\¿š)X©´ÈÈGDsÁ›8 ñrìEDlXCpÆ +6¬é(šëm»Söðþˆö'÷Wé"E¦#ØY©»ˆ0ñ@ºØ[Aú@à—½Ž¶- ÷œ«‚Bˆ+ÙT•ÿÄuçÜæV6 *ɇ�7N\‡œÈm<2÷àBê¤ê°íÛf”«g¨Ížó*ÙàC…+çÁH«¿w>"jéKöÒ 0xçÉÇs:•¯ÊÐÂxÇl#½$ÿàûÈç<tázºÂAÿPS²Åê[ïrg!žñ…9%�Ž”å;ébL´HûX„σàÂìCTu@ƒ6§Óû†°è¼!ÖÜäcž¢Ñ,QјÑÖÏÕýîŠëú… àžrUcjLTÉû8 ä/ŠßY¶¶¦ªu΃̉ü*ückúª4ÌXk„úÁu ýEC ±R0óc̃$×tû˜K#ˆ¨ï°î{d³ßbmHhA!÷+ªOÖ¹±ƒña3ôÁœ–\g&5<°äÔà®ÏkOÚ°¯’´Ï—ŸV•yâ姅äëGÒ½îw}áÁ©ç5)ÝÄ3/›ô |bà íiYÇ;ì…ÌÌqv oþ¹× + <ý^;§€äÆÏ»½?kús2jÁôâ¹!J ßµœçÖ\0й¦4Ö}˜}¢&êê#ÕÃ/K¬qA(Gчµp¦Š—ŽÆb.úFL(_ +BþˆèIjÈkt½òÄ{¯,¥!!€éw4†¡HÇ!ÁwÒ±ÕŽšqÍ•XÒ<ôZY¤Âsô|*Õh–h\Db¯g+ ø2'1Gùs–÷9„•ä„àU÷'–vÀCi|H¸¾”¿Ý$>9hÅÛMÈ¥Œ¾GÂ&¸,²éˆ‚Äþ2}°\é)‚‘ÔòÝ5¨ç)^T é“mzb¡£(*P�p¸€êä#;jbÄ<èÉÍž^²€zM^[t«Ë‚ DºMꥫ¼\oŠ€ ü¼ggÅ\öâè7³Úêá‘*Ää�€x£<RMzìzÓ{w„ŸyOé†òµÈUÕw_nڼʵ§Ù&µlñ´™EÐ^¶îUGGdÖ7ß8<©÷?2a¹¿o¾÷œAçÏ[B¡ +ä)xXe9¢ÞÍN Ÿ‰{®‘ìb¢_J@/äTb6 SàæÞ+.x´{Xø„8½ü`÷U¯OLĽf:„ÚW'½Pôgñ¹e3ˆÐËóÈ>5º¢è‰°ã|þf~é±”áÉ]é#ç‘0n²ßQl¸hÑ�&vCc3Û™Aü[#z¬E~œI×-…*Dùì„…>£ïÀ€¡š†„^÷‰ÈH¡ïåÝü€:Ÿ/z.…³’þòï5€êôŒ%¯ <æ +Aèäê4š–¹§²ãzðí¾Èïiª9çƒuäã@ÈóeÐBjùQÖ!f /Çü>Ð…øtü1�¹ÍÒÂïÀ »–˜öl¤|œC âc,¿™óÐ +ì¥}‘€¶ú¿CI4Š˜ó[}—lsûcÍ£&f ·U{NÄ’"MŸ*oP…ˆÚC|©˜Qï…à¨Ü’3bO³0‚]çù@à=º€È‹íeüÑ1…¤=i”Ò#/)g†é™ÈÝ?¯ë$‚hGÝ'"emyˆÈû äŽj÷¼}—ô]U„ëfû«¿¨ ’ò\ø,Ø¢îópÚf»>‹ö_‚>Ø^’´²×˜ìÊ‚õžn¶sÁb"8×.š+ +uMìl¿%ÚA°êy£»{ãsŸ4!(5NR2™Ð„Úº—×ìDâþÔ»"v#EB E‚ÿY‘žZ¡e\®9ºI¿y Úà*¢güTêUÁJd?;)‚n†#“"vsç¦GÀ“Ý ØA‚*¿†)’?lߊaøâLî@¯ý«?ç|ú(”Æ˾2ôs3Óª}1ùZ/2¼o5¹ý•«KÅ�`õúf2sÑ6áθ9 +_2zuÊʹ£.kñíó0ˆ°gŠmpeß'¯å¬}óÇÌû¶Œ’†ž`è´6}F=eŽÚ²º#0°ÞèüEUúAg±3XL´÷ lž8.íu›…)N¢Ûž¦—¿w,@ó¹"6CTÒïÕ”Uaít°‚)N(9J£Ï\Bà îÞÊænG ꪡh,žvp+•V‰hY÷®<! bcíü“B‰†HG$g¡:‚ÄÓÙçpz{Ã5æAðµû£Ì#ðh\tY×ø!ˆ"….Ú�o±•¸';¶CxT+dÌ3.ÃvÄ3(†¸½C„ÀÕ[å ÁBµÒ…e#x±¤Úy.ˆýíaTˆœÜa²Ä”gA2-qÉ¡¡ +aírs¿œˆ¬äqDCª<mS‹o.¨ãVZ?GL79õ›ò¦ÂHÞ¹áøëssÕ] BƒØ þœÉg»æŽpNÆw81¸eÎj"x93„“ËH«Ç>ßòô1¦|ÙJkeB†Ç"ãÆpDÉè$'ÚÇõt_3§õj H®+¢®Ž ™ût)çmŽâóÞ”'lH:Ü`ÁùD”[o“ƒ¦KZa .ªûk(¤-½`€¼�r÷×; —!zUc^É£®Hò_Áqf!Š +³ß[r¨á#mˆy-#† ²zýÈn\�˜9í÷d\MtBìe=ïË'aA”‘_ ƒ45Nå$ÇÿÉoþDñIœ†Oét®€¸lýð§u¿òT$¬Á'ç¥U¾â²ž€‚»æ´£oItßÜÙJý8Áwz/;p®8¼.(ä…Ž…«@¸)ù‹:ÆÏéŸ5x5‘DÀ#!ÈØþº¿æa©Ïõ�L¸h+*Å3wø¹´ßÿ¼ù{Mî/⎺/œ€«à¦–1Ñ ×P6Eí•é~™ §G�€•ðH`û%ÓÙ7Çkki®-Mîãì·&–§uÄ'BµÆZ'Ó0¡x„¥ºO„ó%T§<¼¾„Ùö!*dñ9â#òZôvø…[h8®a#°›x!1Oñ Ù¡´8Ý“öc.øtÙŽåúò†X?mþ ŽàYN”JÄ#&X•{_„0 kµµS‡‚!h=šÛ °níÇlÐþÑÎDUí$ž qªªÓÚ&Kö÷¡ìv´{Ñ,ӣ熺ßyN›Ð|ŽÊ9¸ôÇ™ÍñÀ}¿MP[ˆâ^¯¨0ôZ÷ÏYÝŸÍ3&BŒJ@Ÿ¨ìÝu UU7 ›f�ˆ€Ì[”ûÅ«Õ§lÆœÉX“@*ö6g@¸Yk·ÿ\4ÖÌKÁïÔû©qêVÕªdUcÐÉjŽqÛ8”Ýö7`ÐDw¯*dœØ@[bµíxîÿ;›díu9oå®à†HŠú{ZëðÌûŸšO&�ê=åwwDGWüD½E‚@"s† VÔpÖÇNIæªq8²òFôéÃb…81_Y¥9©ÏàÉ~žñkNÖÐÏÒC§Žf9ºŠ×‘^€.\ªiwm¾úUßX’âQ‡#ò¸¥q„þPtyµ¶…Àúß$`š¢Úú*¨éo +™h8öÞ™ÓB#²½ç§^GöŸçY.žaÔm=ƒîwm\ê2÷sac9‚äˆuú3<Ùaß)#V r†¤rD›¹ù+CR´N¾ÕèIŸÂ·HOÌĹ'?c˜(·oÆ^'iøËìçªF‹xèUâ8r\1$Êòp\!hÝPqnÌÜsÒ>#Ç9±V?7Û{m¨XF¹eVˆµÈ#ˆ2cYb)¿è“OÊ~wA:|v’T«j¸8reT{ p÷ü‘yˆ3StÁç@"� üÝÜ$Ÿãµ©ª¶’ã æ\k<ÔP£›L—abtŽ²#XŽOè! ñìTî2öÎqàWüĵçÇýÔW¡šx“V;éÛ+�kÕzw#ÝÚúÆ}×¼FEÒ]õñ“Õ¼ÜFҡнøM€ž4G‹¯tÊÆQÑÒ®\M7RBO/YBÎJk1Éj× ¼c ¡œ§ý3'BlŽ9™TN+ýʧÿ®=¬}LÓäÖŒng÷Œ@àázÒÈ Eh»K×@ðˆû‡p€‹7[÷ÌyK·Óù-òÈãÉMæüÅw$ã[:Ü?YyÔ™t›‚z"ì0Õ»ç/•ÝÆÞžè“-ASSV“AÊÀ‚*9UC®!÷¨³AvðýNÎÊG ù€UÜÑV÷Ú9j}ËwÅV'…ÅSeæúE3¥EÎœº Ž”åv|–³¯â 0é.×ÇÐ÷)Úz¾EŒÐÒ_4‚Omb÷:+£DóÍoˆvRaKCp�ù—±‰®p¢_ü¬q˜ÿ!ÂbÄÑЊ5�hÑòné€ !šô[eHu‘f-“6@AÅ÷Sûèûú29ÛšÄ5«óÄI x—7ˆõ¯B¶3ÆA‘OÄŠÄÏÝÄïç¶öÈ!e“d¥Ÿ„mQá3‚ãôY~¼ è{¸}"ËøÛÞ©p==%¨àŸsÚPü®°ÆêZ&{¦é4ºÑ€¬†òÐë%åz¹ÉÊg€hHN‹¸µ·1fvŸ‘5h¹ÎѺó»ìqZ9s jÕǧ‚ÌÇ_-ÀB@‘ßîŽ è‹¸ÛoÜI ]8H¹?âä@¤p^yäÅeèËh(þÅ{æšw+É`D'-œî&U×åJ—5A¢i,¤ŸÁ¦POÉ%dHø8ÕÕ¶9 úMùÊä}HV»¸Â5Sª´Æ¡X÷%�ôi‡bKìæp0Pd?èJm!¨×¨ˆSSNΔ +1ý_É6ƃ; xTï Dq…ŽÈ¶O†–CzËÞò"óÓ}†ùÍõ†H(\ ßQŽ»Ãz¥d +Acññ9N Ö×óþÙ:ù‰÷C½Âæå}ì3—¡¡ðIM(;‰’Ôïß¾„Xwñ#&‡cpÿhŒ�¢Å0ÚT…8"W½´q¨ýÞ¯ˆ-²ô‘‰§¡¦[,†è£IS +™‰XÆâ2L�Ž(LM{s†ˆ+:Xã|ÎS¶j¬îÝR >軎ð“"ç5?5UˆD7Žf·ýðè•ÖXoé#¾6¡H¬ qseh¤‘˜‰Ëp8=vÚàõ“І’zØy ‚üçK1•n(ªß3cOh2²ˆQxM +.ù÷ðå9ξæ™^J�2¥4öûþ Øêæ'íÇ´CL.TÈv»ï¤QmDóz `¶«ÚYm³0ñ[5sážð¦_®>¥ÚÞs ŽóMĵXýÉQ/ùè#p ušn§OÏF°—ýH…#}e@odî=ÛŽGþ�šw¹ãƒ‚ºU€r’âZFÀ—wëe¼!ïk�-óaç‘Ã`»c¡’ÀP±±F\äxÃø6^3žyoZfèwص\… ŸÐ%¤‡^‚G–1Ôºs1¥Òؾ%ÕÑRÁé�b«QÅžµ¢ß™èÄ´ ÄÁ„ùÒøˆ mïž¾dƒžà×Þ¿Ã$›hÕú4V‘ÓYñçß+çÖDÙè¾*ØNþÅàª%÷a/²'ÝBæuÅD¤ŠÖÎýyRÇ0ö³A•é÷úºþ 2m`éédsj(û_—ˆQ‡¸^Fà6[¡¨8ý³äü6'h-¬S¤ï¸Ì×ZÀ +¶dÿÆßÚxvŠÞ|íÀ9†iffòoµûñvö6Ù6¨åÛØÇ‹Eǵ#’Ò5±ðQJ¦‘¾€‡Eîð©#R4˜¯�Û«Çñ±¶qÁa?¾³…6ƒ÷Küíh´¯.Ã&|±@¤¨‰´°˜Ÿç{|Aàå̶ˆõhj]É_tÐùfí#pT½SxGÊ"t{>8Bž+¢I$,Ø*ô"~^{ô§@žŽäý‹)²œ©i‚öß×}yBðï3æ0ü[q] “2Å4R&Ô˜»|!@ mvFÕˆF_í¶P„dÙÖiZ $Cd\é‰Mþ§ÞQÁ¿ƒ{�‚§¤óüTCO•$|îO¬Õ¯,|’m€Hàû„þ·è÷Ha;`kß‚tQßyB3¤ek Ç»Áí3NÖÊÓ-‰8àF÷”‘ ð›Àä[fY9IããÜçåN{ò!=à¸Û³4â=C`ξ0”CuÜ�(MáÅ”ãìÌ[Žs=Î) ¾„²ÙíM€c$éþ”\∇†ºÎ÷@-Ï.ùähgy½ñäÖ5V0œf¤BL¤Á¤”dDŽ2NÂvå»Î&!º¯E¯Î’XsçñazªÍõö+‚jYÊ“Q(±žÙOPŒÞÊæ·—A÷üÃhGì|ý–Œ@0<Mñ§||*êº?Üb…À骱ÿÔEÄÇ’Oˆ3R$”¸WµN*¨Uñ«—'¹@§dVFÞ.´ìía²ÄÚ¢÷ç„NgŽ]]ã,µÐ()‹É<éÛÓÀs›äƒôt³dÔ‘xÎë +‘E™¼ÆÚPQß\kZeˆè¢·gÓu¬Ô)5bC9ÊuìuTÛH†òl+¿•,â•’© T¨\kn“œ+9;Ǥ¨L´gü@¬gŸÙ,!lUžky+—òhMÚv”ý äN¥çõ–XÄ(¬Ñqeg:!2ÕóÍVN÷è7Hï'$æ>Ç:‚騃ÇýR$N_#fºŸ‚•ðù¤½U±WÛ¿èx,´’Ò�DK$ºó£&…ðò2=ÚtœÞå�×®hPLÄøIJ¸ÿ6æ”ZšOuë맙º,r;FåÈ…;ýL‹:¼ÎÒx`‰På8õ¥Åé$Ï܈:>Ú4oÚ®Gˆh@‹wØ)[Îï;¤g‹ixW)4>ù01è2™ø¶2û›î•¥×ìBà;gÿ5ïXió¤úÖpÍ>Ô@ \Vîq™5U…¥¡``C«+cÍ,=¡!d7¨êþ$vÞߤ7Í3G×/ð/jc‹q~È ]D›Z¼å“%ƒ¾Àzgú§Ú[€ÐÄû®?Ç_Eý3ÕŒè!~Ð +ÑÍãDTYµs¯÷g£ÃÐn€%‹:쨒hÃ��7ÄÇrXªc~V»%Ùø?Ü,8zkZŽ´¦Ô)Á÷l„ÁóþQ£Àî&:CâÉá–oÄÌ!î/ðÃðŠôß?)9js¾L§ñ’œºëNn«Äon´Ÿ••Ò‰¯yÖ9éíÎ2g÷ +´†°}•c·Fúï'%n7¤€ðÓ“öèBPzÔZâa†¨½aýi_ËSÕ>îç¶Ów"v§‚7:}·Ç¡qpò©5g(«¹%ˆÖ…YTdëVdðÝøžƒYˆ+C…øÉÒy¤Ás ¾¯ goOõ¸L˜×Uï¾!%õnÀÀþOöŒÁ×ÇÚ\ ÐU‘�1üÚÔ+—ùÕ“YmXtÐ_õx”Î +4LXä0ð*Ä«Êi‹Ñ�+r¿â*kŒ·ØõÈ)càÂNHËï(¾zc·`luL!ße+‚$M•gI|d`Z¬g".r·=*{ðÓsØZ!`MÖ8ôµA¦È5NI™µ·¦kÉÀ¿à@.‚`ú^ŸlO€cY¥¦…˜Ù S+<¿ûGüŠxïÎŽ@#Ñö{Njµ¬ƒ8>Öó hð´d~ D*õ´Ð`·DXé�€ôí«‚¡“þoFPöº>~ùXjÊ7šuwÊN×€S�ÊqMõò@„Wr¦ÄÂi£}Ž\aè<S“Ó tß<œð†Bqýèg_"µÇøU|IQCuÇæ@(V§S#ÅÒQ‘¨ U¨î~rd™ÆõnA¶C¾_.˜ç@°…ç¼ÓÙÖ'Ndú2ø´EÅʈñÆ‹ÜüõwÁQ›ÞÏYãà¤Ý?a éÑR](λ½šÕõOY\Ýæs¾8®ºiŽƒ,&ìÕ3~ ¶E,]}óÑBníÀ°9ÄP;¥òì–†'FeJoç8 +Ï oƒ(K +Oƒ¶NKÄÝó¤câÆABÄ6fQ +a5Î&SZ:3èAí+Ë ¡îHdqsNS:ç4b-d¡<^ó7£"‘ëÞñü¯Œèdð{¼d!~¬S,}ööú3&×_ÖîZ~Úø�Qú\µkÓ.f�TüÂHK�XñEN@qïrH”ÔiÒî¼ +oË)Ÿ + Õ%~ ‚=ù¦/,Ç -!/ÅB\™HËq:fé-M}2¿íÊ”µ ßÐì2šlz°8*ß?è¢Üô#=ðqBÌ·ƒqëZ6˜;NGÿ§(EÜ›42 -ˆ¬™ P‚Ê>ÍÒ?¶Ž™3Õþ›DßË*Ô7‡“'riu¥ìB×GJ†'èÅBäô[D¯ú,‰Œ@”wŽ3àP”ÇACüâ!ÌðUè]B6cæ;‚ÚïéÉÔ( Î$€ÈœQI»võ¬X'nÁ´>Jú9YvêH"ÝÍÎ¹Þ …ØÞÙ9•¦{Þ +*qrÒzm×ñË•Å]"%K<ʃ“ûë6ª…¾—çGK6#u:¡bt=©‹ è;µ)b~íé…€Wbµ(ÅMÔkô6!Xˆ6)®^ µ4œ‘âLFZL¦„8šä8عº‡e$ƺ$=û¡’g%Þ´<ÌÜ#íÇK®T4„ ê¹Ì¶ô\4(Æ““ßs36¡^fÿ *nÜÍ¡Ívt¾RoT1]•œ$õ§0â¦Ä}ß«ÞˆN–!DË%+ý9ÉàiSôÏÚ¶þÝßÌúȹ›÷_ä½îÛúëKj/¨¹×kx)T¡öuÌ~;ðÚ©Š-4÷ÞÈMžBàe~\f{ên&zdìü*¹ó£N,˜¡ÉªDwc +9!ûß ÿŸ†Œí}”öH»þ»m·ýóh@[€}˜Ö&D€™Î²ÿ†û±0!qS?æ\]/Mµ×qÑÚÚø÷K©å}"-¹¡(¶MnRdì¬å‰q„·‡7@clyæÄÚAXѪˀLzD@ôR€ÐŒëUà üa æ'}¬œ‡%ÀÏ §!p.ÝÎÇàòðï=ˆÊ}«qà…®{±1Ð@ËAëÀÛ¥,÷xqy#$Ž”°4öïÍJY㬎"…[R")ò¼i²qŒ”ÍR±CˆMR5 õñháÃ4wáÖ@kÝÙmUkA\fS§&sä˜wÈåC!BˆsxtVÕ±è’ù“š-kþw!æ ¿(¼Çd`][úû jMìT/èDÊêM?ƒHP¼áûrPËÈ'?ºA:»¹GÂÓ>©Ñ>žövA(}"Z\æ¤1äÝš¥HiÌ3¼&©Aöèv€¸ÞíW5ƒdÄtE§¸ÿœj…íñ÷–hXg€X1Ñú¯%ÊfÄœ–ͯa˜&W‘Š›šGs{SŸò¢¿Óû@�ÊâéQ�KM‡ùÔôÙ¾pdj,õV<´ƒXÀ«í"æ}~Èí³Lq}”¸Œ˜iuSQƒô[×Ó ØÑ—AŽ"2¿Œ~Ž’´«ÏHm'‚SóE}§šXDÆÈÙ„Iy;â2hd…–U Њ):–‚r]5â@Ø]Ëf£¡ 2,L"ÐÎÙº³´x€„Ït-©±7;<…ˆñ–Pííã>óEÓÄŽˆW›×g[µ…�t¸D)ܽþ;â +9áf7IkÕQ±;<�œ>±É,ÂpÉßÓ-ÍZ%²†‘,«Ðnm€ã„TÃ|Ö² òSø…¸R‹(Ëœ¼Ì +•û«âÂÿ(š„XÛùõ5…[uaàf‹ka˜ýÊŒÄU�ô)â2âù•/#¦¥©â²%ƒ¡DëÛÁãfJz!á.ÐMÓC…ÿ1S•ç 'KðÅ÷;*?FtN“èR×@»¯:žíBr؉«\yÞš`E÷!(#hƒ{3o'NÓ= 9å '•>šìtèåWkB\¾H*Îá>z±±¬zdL(Ê«ÊiÏGk–½<ñi;¢%w†XßB¾LVýGÔ!\]1ÿ–S³SÎq)€©/è ¹ös_¦·°F¸â2d'ϱg%ʦHÓåÖMÊñ m¨ºFvÆç8ɯò¹PŽá”ÝCbŠÚpfLôŸê«@ôbZ÷»Ç%ˆ©úÇHmAÈÖ.%HçÚ+.rê1F¬³@/î'7Ê*ª¢¥/E=6²gk´•¢@ª4|æ-âì7gNï…v5).!®ÊzÄï¡ñ²‡IZ´fÚë~“7A-xä#.#ï±PgždЉ… ÃVjÁBìP;ÙOîþ ÓSÄ-®²¦$†ÎÔ7Y–¼h’öHl£´žU·ÕfË’µà9Ó•wЀ"Ô?Žd4yEvzwXZÖ3¡öpMž>RþÖH +�Žy4ä^‡N™cè#c/D™1clS˜@X¶È§c!òè[ÕSÊž¼ÊÏ‹nߣ‰f;:) vnS3‚<¼Ü;ÏB°}¼î`5ôðÔˆµe¸Ê²™!¦–W!•"u•øÉÉþ–°’%MpÖ@tÃR!dPƒÙRa_ÆÎaÕ—·²¦ÍåV½@C-ULÙ¿¨Žxpfï™ÂhP¶"ºi)FòŒ¬?ÚÀp¸‰ö²F–a +eëd«LÖÐÀ>CWIŠæ¡ÓgÄó)£ÑYÞs§†’7sDL#×Ør–}¢ãù0‚9Û0�y`R–cN'ub±}4—œñ« ´g³«AP¹ƒêlÄÚ<BÜ2dl=`„:õL'Ä©!©1ä@t½§P…Ah©‚†Å�!4ü÷æ’îŒ)ÙR§öˆí…Îè +òâVÓ O ‡þú[[¼+ò`n×t"hxÓnΈ™Mƒ9 +ÝK1‰ÚyŸA ( ù>§ê §xC7 M¢Ð@Íé7dÜ yzüJŽ¹ÇÂV ýfÓôôõeÐ~Šþk¨[Ç;�WP|bÖbº¤ùš4SôPÐz m?Š’C·(·¬ý¡o+Ŀžž ¬kÆN S¹JÊ…ðÝYÚ&k]I[åý’yx-#I®°³·<Ål´øE4Ô?"cÓQÐêüïyÊzÊÊB`ôA\™ËEuSºsœÙÃÖ"˜ï´“ù¹zŠÞ,;Ñß.Û2{)JOnÒ¹ÿçȶèhl²æxj30‚ÄC69Aµ'd¤…X¡$Óê…˜©vY¬ÜhÏ9wÊü̵(!ð—¸5p¢‚¡D|s„Wס9Ð ½àzöGD:Ó†^-¡ÜÝåÜ×dÍ1QdO¥òu;ZÒø$`s ª¦Æ@É·Õ)â2oÊXÇÇ(^ß[$ä)ƒí‡¾µµæÕá{mÇpV÷Œ§;¨ Ÿ(ÍxõqúÌaèÄÝŠ8 ‚ÂhŽf±žÙã>ô”c„øn“7¬ï#ãÜr¨9ã:†–ƒ5€•§TÈ… ½Î\åE©)‚â£Üžé×.w{8+ÅÌ�v®|0! ˆ½ßfvvÿû*Gõö߶ä+¥À¬oWZ"HÜF;W;wå#jxõ º94$®ŸO!®G{—¿ SnžW(² +.åqDK2ohõM÷ +À:¥ÂFjp4:SµÖƒP~Ö.ò9:7!§/DKg›#úäÙb š:2ËbPø6«íKˆŽwud)QR–x I><º‡™5±!úÃ5oáC„\¸/sV.V'ù6÷2kÀ·ª±v™ˆ{Èóh½Á«—MHュ°Ð°€U9°úŽ¶è×U÷>w¯!>ì¥Ên6Í8ÂÈØ—yà^^áw%Lºy+O+Ä8É J >KŒƒ‘øÛ%r›WY³í c #0œØ‘*ŸÏ1kÑ`ˆüqTh‘ã¤gVžW5%?m¶+‚ÁÏ1[®…`©tøÁ!%úÜ¡lG7,nª>j%¢jÿÂt‰s*.€Üm°Aî’Žwÿµ«ºù#” Óq«B_¬¾ÜRCT 4n‚ß%ÄõñY4‚=é–†h Þ^ºSì ׂÈåk‹|Zž˜ ۶߂ú¢Ü_ã3ãÌyY§<^у¿Õí¾I¨‹Hmó&!çÌ«ÄÑÐãv_Yª…Od“-p¥†‚í<Úèû O4Eí¾åèÙ0ß.GÓX\Hq‡Ä“ÚßÏxöÄ%E‡BP47o°ŸgÏ'µNSbjæ0ªÆ£ª¡1]Ùð£Ü*ÄúŒŸ×â”BP‡.«á&/ŒÂ²–×ÎÏNµ&§4±Þpš'^¿pŠ¸2á�‰j~Ív¤~~RŒxa”ÇhŽ“»¹Éܛݷ[r×9÷×}²QÓ³ˆg÷Œà¨ ÃÃ~?´Ÿ–ô”@YUËӱ˳Owô…¬…ÝØBRØܧ|´á‚Ð¥65Ys†®,Çv]o6ºˆ='Ÿòl `¿>z°OTÒ12¯ôÍoì´ÊŒòf�Öuß-ŽDÞ.üŽ´¡BÔš»òϪs•K@Ãn•Y‚§5JEÚˆë©hJŒŸÅVÉg±–nðuÞ¬&:Jñä@ŸŽJ#"¶¸#¸©ÖÒBŽŸL)ºD÷È[á€L.£Hßëõõ0|Œ(™üŒ6R_†•éM’fÄçñîùøƒÊÅq¾›¦ ÞOüÜ®ŒûˆÐÈžP‰~¨¾ûăé箃€rõùÙ?àÒâ—´ÍpñY‰åµ¢cÒ½ ¾L¥Qs“!U»“–Ñz7çOòÅtF-²‚¾Ô‘ÕÍÅ…cxõŒËœ¥h€+“¾\A¦pÔ�Dpe2r”×ìH‘—AòÎD£étÜL2ßú9ðo(Òg~D¤ññc2›~†Fr<7Ú/ ËGÒ´ýðôÁât¦2>ãd>«µ×ÅÊèm!¡œÓ…’gƒIabBÅvGË÷£ÅÏG/ƒW0¯î;£ävݦ]1æPW`,ORÑÿ´ƒâ”ÜJI<T \O0àE4¦¶¯à§Jç,Çèu¨é*Š§Š”‘^DEe‡ò9á×t©¡ª±3ÊæÉ;ܨ[š³QGüˆTîîÓÁ«vaꙈb‰Ô@èà—J“9>0t7›DÛ!»1!ã‡þÄŠ&¥�G Hÿ¶¯3W‡Ž¢%9P™$7_m§÷ +:£0¸t¾ �Ó¢‡ïµ�hx’ÿÏQ¤Ï„Þùó&ĉõ ±nB¹ÏøºXMÂPò�ñÀŽ2ä¢ú†SbC>¾ô«B×Åž`¾ +ý"EÓ2¢‚#$¥à²R Öƒ>å™Y7ÒtˆÎ\t”‰hÕiÂ[éÑÚo‡te&³„`õ–j¬Ä—|¯+5æ8”ŒËÓ] }ú8!„ÈÌåŽw#ŽÊ<‘«]KÝÆ´è÷ý‚(˜¼Q²2ˆ–%BxþTÊ.„eך?Ñ|+?9ñ‹R)ÍYí¯”W"(Ê»E¨ñSøëI?»Ø…7OÛ‰Ò{IC%;ÊcœNKÅ·ÀxÍ,Üw³Ó|]Ÿ%c}j‘öïAXìc/ç—dk¢©"Zë£í:sÆQF¾·» Ùö“£DÏ‹¹q»šf–Ã-GõL>R29ŽJS=$¡›œ)Öwyžé´Û™%;!ºÒ4ìž@éo„ �h‚ÀQÝÃ@¼jƒŒçæYáêTHÝŒ@ †\qHïßãY è„}?BçLµ÷?!¨Ód“ÁÂs f¡ËÐr>Ji^lt¶ˆUµùöèhrXkÑ󕸦•®Gl• ôöBÚ&X¢ƒ=‹úÒ;óÅN½âE‘p„XïOÙG©‡—G§Å@ˆýîò-¿ûSJÐnÖ¶`RZÜ ÔþŠÐyØF TöÖ³îiï¾·„(¯]e‘�O,ºP{ÞÍoKWG;æœÙ},D§fÓSÔ í9Ç8ôAû§7‡Àån/t'bå‡Òú1ï>5¸@`yJ@ ãŽÞù¨ä&óAl#|"`Aa3ê±ñ¥#‹U Dw:^ nij=Ø!£¡.ÇaçaÃÊ FBÃï¬CìFÓ³ëσŠyjÀwOÙΗ”åR‹È>7ð ÃöÑpÒ»“¢_ÿ"Ú„¸¢‘5vMŽ3ÐÐ+Zÿgœj:)jòñ•"ˆ˜õ,ýi¶1rö»r!Òz1‚µßÄÆ”œÏýï5Šv¥¾ëðëœD-©L1ל]KØøœiÖ-‚g·ÈE.ï‰8Bç¿Z“®‹¬ò1Ÿ~4g\å+ÃdÄowzÿ5ù�2£Rõ†ÔI»RFW&GMFÑ—ÁÊ®•Pˆq£jΖd½Ÿ´!*#}÷©uX9UdS®8Ìr²Žv7!Ö7÷„´7Éõž™~ZùÖ'¥¦Àçb¹³µ©‰L¬b"F=„8Óé1Æ!‰Ç)ˆk¤„ÅòÜ:Šâ’B†ªò ÃN×É͇ÍW9Ízñ4k¾ƒÀÓù¨.4! øìN¼ÖcS%&â¬G¤Ÿ³S€·Ö(äWœþ8ênÖýW§1 B™L�hè‚ÈÆSTWü;ðC£$ ¦ì?jyµ¼PÃü9õ’uøÓÁñH-‰uòVEEåÐÎ’‹7²:’«ÝƒMy§Pî_߯�ØëÞÇæF)Q~Hj+näýÊÖ±¢Àhhúç8/ßDØ`¨LbþùŸ"ÞûHÇÔ@ÀöæÍN¨\”£ ³ +?ÑÚ8N?׎ÜÑcÍù#„âöä qÊqˆìQuõ¢üþJ4:žîù‘¡É®*2- úC”E(^g(²ñ{”¢T{Rô9ú+ü’ònà*·’Ó¤d÷àøn`àþ²¤($¶ìrGÙáç:¨ØØç²ÈÄ?sÂ=?’¹Ð„@õ䎜¹næÅó)ûµN¿zIÑVÂ958] ú»Ÿ[ž(ë}?e ÷‡¢ Ýh…£F åâÿßäñ¿þ' î¹Ú¿_¯ŽQG¤5%9üü]lí¨PÒºû¸asB…BáÄ=*Ï +dÏ0cÊ 5³a `×_ÖÎo3Á ùñ•EfÈÐõä +ïìZ,êóñœ%ÏÒN7¹¨•.v>çw|iÆÁpVÅ;Æ¢Ð^m ØW$‹º¿5éS€øÕÞ”u3Ï·mR û•ÚˆšM…¸^ì)N…ϘÐa¯#Æycw‘[Äõ_»G0T?$ý#A÷³SuF|: +ô÷5Õк9£š-È.¥-¦WTŒ‹pþOr£è‡½±0Ï#žËkœáÜ–ãÀ;CuCrDÂÀAÉ‘Ù+a§\öz PŠP„ï„cú[‹¥+ëõƒþ_ "lñ2b¶p²%ãePÃÕ^·ïQ5&¢‹q Žõ\Úk>9ª÷7:L9ÖÂú#äJãnˆ÷¶ A¬X¸=y7Ót ej¨@b\a}‚€MÀþÖgø€ø-€w úšÈu77óM’¶@"˜—š¸šœIÃ8¤è«!‚Š}ö0 ÔÜH¸W‚†k_—ïÞ>áGLÕºBÖˆp´´}™P™µÜ€ˆŠË<,™^<êi1r ‡f»Ñõ˜Á§úÔðè~ÛœŽ‚4�ë<¢dkIº¥H´ãqÔÔ[•ç +1ÑqãК"¡â#žíï¡ßyæ@P-RÚœHPÕâ ±Ž‘‘*þ:³7ø/Í7×$y¨jà+ßÏ`‘ç%·b/Õ8t¼ÈcªžËÁ—#jd\&éºOLÌ›¤¶UAAe?¹ÄF<œ¶èn¨ž3•âWc¸òAI~WÀƒæŒÛ‹ã~×vÕÛ⬠Ȁ¬¹iå!d6ÀüH´°k„ë‚AäØ\ãõÀ›Ç‘&’€˜È–ÓóÅȉTe$ „èd¶M �qÖ2ÝÄSíÝíB¹Ñ_µÕ�EГdÎ#81Å'.}¤:ýhè*£µÅÓe³Ú¼Äæ–{ˆmVþ܇‚ü¼—Y„Œv'wZ\DÞ¼—]<òBZÊ]Ý +ÚxJmAK,Æ +Þµ8m-eýÛµöõ™ÒÀZ’Ä® +]°Ds3g+M·³–ˆÁpãˆRvg~Œ!ðrïaЄŠlc@XF§¼|H3?ß+’…k¢ñH7‹#—(ŠÅêj5ër?Ìý͇rfÝ*z¶}"&*¤zúB¼p5ÁF".C´¾ä@÷-™@tåʧÇÿ†ªisÚ¼ˆý™g±Ó†ù›¡µG¥.âõÜÊËæÝõizÜqú¦2eă“-·+�.‹öoÉ—ŒòM¤Ür +AGjå*‘ùÓ—y~<ù„XŸãóâ,òD¼"2îDhmÔ‚`2ZØÜs½¤Ìý`íFÍÍÊ…ØÜ4Óʺ{·â¾“Oý -Üßµ…6ü=q‰hR5ˆJ®/ä|=è}œ!œˆ�ᛕSaàŸ-qâÅ~θ +ßÿa/“DP°Íí+ý©3˜ñ’ú èöæV„M›6€ˆM’ÎÖrŠv1€˜ÙÈŸtdu#Ц=¾»/jsˆ¢OnEQU¸w0{Bpig…'¥û]4¾÷C²4Ð#Qf�‹HO3ÝWž6œñëCøzϯß2û@uá‚ìYäš„à)P€î«ç8…IW ó*¬iönñUÖ¦°%n˜#]ÈŒ Áö$€œ5éֻƹ˜i«„dzUD|•7|?U@¢Qt"ú6‚:Qi´pPEÛÂ<ÐêìÍæ@JXºÌús«E›¿³Jþ,Ææ³wÚÑç„kÄJK¼V <¡§ä^}ÒB·´Oãã¡2ŒªEˆ÷›‰â¢lýº^³šqŠU FšØT—…@tž´“'BÌ'ŒaG–‘VMÓrÅ4éF™ò0æTÅ@çn(ñXk.,²Ý±~´ˆ%˜Š8â#=8Pœj™¬qPy³-É ÑN•ñŒÙ…0ý鄉ßC7ôOLK·pë÷àƒŠgù£GÏ÷ˆ«Ð¼áb Q{ØZÚ4R¿+äЉÚy„ˆ=l…·=7ñª²d.}ï)òˆõMŠÆ\÷ïñCÕµ@ÂÖ«q¨Û<7Ç=Ž¼ª7Ôó‡cLh»7UìÌ–!ÐuÏwt#–ÙÕ¶0ô‘ä2âÞt1#Xˆm }q @ÛVy¨˜°o›º$‹t¼tôœºˆ¶Ô‘nìGÖY &=%Wõš‚¸ßÍ ô@¦Î^åâÓRòàUgR…Š0ˆnÖÒÛQÑÄ“i|¢ÐÞì܈qø¹ë…D€@7 ä+ÐVÏ›:ÑabÍ>ø‘Ž1B¬EŪ³šdqÞ ÚDÝ]\_…òá›ýŽ ³«“} xÚók’ÞM•ö?è3YbOõæDÁœ„‘ažÖÞ“–Øé7Ô×æM“y+]¦Þ+0QojbŒÞ9P#» +·ú2ø€Í,(qY£ÝFL¦ÒáF#™ROnÍë«Ü$„9Öáu§²¦TŸ,EwrmšX|pˆ8Þ|(—štDÎËq†ìkREÝ LäFêË ×;$,?HküHŸ;tí''Ј” ®9ÇÁa+ûDMñ‘–³/C2Ö=·9ëÚ)z¶ln“dclU^!ãTÑxwÙ6Aq^ +gºŒî7Äò€nàsI•¤�T{œ±Œq°äÜ\nØ×£™¯§ÂZH^- ÇÈËЯ_•°œŸP`0à8ÒÌ,Ç!ü½>'QE=컿‡¬EÔÕ1 Y‰]ˆs°‰ ¼ÓqØÊðâ³)…Dmóz:éÿظÌ|>dÕWáRô³T¯Jeß[SaBJJ! +ƒàù¯Í¿Ås¡K±©bËKÓ‰Þr²)ŒfÄZ_ÍÈÉh¸[u´>Rz·s0éìU-t‚\*î×A%´Ó…ôäÜæÖ_qŽk„„viÉ ú\\ÿO€è”©b°@ë¿É6N�UµË/>eµ;¼2]íÙ¡) +,x𑵯›!Ss¤y–AÔ+ Ëë*/ M6‰<Ř«‰S~sï¦=Ft9ä=o¹HHl¸Ä#%M_fÆêYóHtFûFÀÛœ±" NàF ††e D3Fò'D+j~r+–{²Ok½â²Òù5âcÁì¿“ñQdÖ¦ ñ»ïkÄãgý¡u[“ŸOŒ‚øN#ñÏ#8¦'�l“u(ã?‘_«Qø9¡¥Ÿ ý†ˆÖW¡1?-½A-QFܘ¡¥¸äLúªHf›�•¿‡·÷øx¶;•q Æ9å¡‚‚P„X =ˆöQ®”m^ÏŸùXŠ5/ì>_…ò+§3êYPÿ©l!÷Ù-ždb·*Q×@Díö4ŠËô×.‰ÒOeüNÅq‡Û’u¼N¶…À|½hX‡ñŠx;kªb ˆˆˆØŸy "dæc~"ƒÖ˹-…XQ/’Œ§Ø‹>vV1käIÆ–F9m÷ßÕ¦)wò¶¸]höBÏ«@;Hzèp”D†0ÁÔ)¹Â?GJàD¹¾Ãµ1ëúªÛ]C9Dôk–Ós-¥ôžÑõ›.Bïv[NãùU TˆmÉ_"´×8�A +z¤†œ’Ú+*©¯ò³¨àµÇ‹Žn]r_&r؆Ø9Ì3–§ÝE¡Ô…Êk1%¹m! ^èç]ù‚g$OW€Ò¾XîFŒnâ£ÆG÷±™YãÜðoÌ8U°eZ{íl£çfE¬úá‰óŠÉŠ9m8y7jö„DêOí"Cp† ¥Ti¨¶ÔŽÛÚ¹Ä,{Ó8¸ú*$ÒÖÉbß ªÃ™Á1âë>jD5nÖ@5w3â@+*ø¾ÌۋƾµÏXÅqÏ#\Œ˜é›P¼ª’oú%DÇâ+wZ_&½"G”S°,Ë+!Æ×׈ðóÙ%’ª†½©†s,õh’Œ½.Ó8Çy#^ªÍÙ.{æZßçÞÄŠÛ÷”üZv¦,@h∾y—aÙ‹½[Å7θ”™xU5 çSEZ»Ì¼`_ff\¼ÅŽËœ,ùœ7Å^éͯ ¼#^K=:>dø-u/…cYù*háô”Q5€=ZA“°ð»š6[^âbÂ�¦æÇjŸ +PX#:ž¾P'ØeÇ‹¦¨‡}ðˆüÎC‘æ©OìQ.\ÙŽ X“SÙO‡PÊÀ- WY'óßà”J´ðV’—E0ò#1ì "é×Üöo½w½rÌkŸØ}iô©Jm�h½Xá¨ßs©Ã’u7thš¥ÊêË÷ªcæÃ'ñÖÙ•ãN®Ò6çÏÈ·)ÿZ³š8aF«ÛHGxÎϾٽ!L €o¶þÑô D©º«xJ~šŽŽ;ý7]Ð?_†ÎÃýú¾È@Õ4Ml„ Ì¢å`AïìûaØ 7Ý„Se õ÷ +jžAt2:íË<Pì^œ‘pFÁªÇï}ßTžÎŸƒÝ׺ѣç$ÀïØB‹Á7•-úg3dÄwÈŠ¤Îía91ŒÐ…à =r’©B¹éHþŒø“i( xªó”Ó•z’óÓ4¶(¬Lô[s‘×^‘¥»ù,ææ#>u:Ï^>Êzp̵I;)qéH¦J©$dßuäÊ5ýj¼ÇvJ£\Úð%"¾ÍPò,ÒÀË™DâÂúüÿ_!ØO›DÄ@'ûÔ<C}Ç ,;ååîËÜDEÑ-fDƒŸ(Í@¬»J„@pN:Ð)ªÞâ|J)¾Þº†Ž-e¿ø;M’&õWL÷F—ËE<xôÖCU#ǘҥyÝ ‚]Ô×ýcæ„%’û•ˆµ¢¾–‚òÁ2"ü©˜¤Ÿ�™Ü-<ó}®“d$¦Ç§Cþ›LBWº!¿°‹uïB Yᦨhâ^—cúµÛ-Yïüæ!ˆ{ô—û +I7’xÛéÀºÞÔhãD˜ê³�0fT{ãnŸOiÓ¾ÃGì!X®ÏïYMˆª#¥e"ɈÒújY:|™þ'à”«NRf… �ÿD—èK<Ò¬®=)zƒhc UU×õ›³ÀP…"± ´A<|qê�Š_4YK™ýsÿ"XñAèJœn®7<›µÉ]¶/"ß[l ëOÁA^"¤]4a@ã𥌚v?_ª–²P½6�xûô÷‹–•OAeXA„»5Ìúvé–¤A0à%èw[V©ù•MÌÁ¤sb@Ù¥äG6uÜ×KÌqÐÉk’"9ón¡QrÞvœ¸}ß“ŽA¬ä¬„ ÷þóy•¿> Y€fÅ-AT‹×[‹çÂû¼íì‘Oö`§f6xÊm1ûÜ^ÐFOÉHvé0¬_3]Š°W¹Á®9zAŠ |°þ¡rq®®~-„™åbFñ|‘ˆô©æôeà_tI9œ‰ÀâA~F0ý¬çÞAÁæTz=‚�ä†ä¼Ì…Š]•©XlO5ОA+èБèVë1åõ°ßÊi£y+e S�Ba Ÿz‘¤ Eån¾ +!õ—‚…Ø}à +„à[¾L!À}üfÒž–Ö51ÅçX·ò8—öHÜ´ºuA ½àr±ï¤s`á-?")upTõt¯W$%ºJª#'Uô¡2×RÊ 9-T^A™ÉÔ€ôòœ¡‚"´ ä»léÇP—Ï»AcX#7AV:œ | ›ô’Ë¢gŸN"H&¤\¦'ŽgŸ`h™ÑBÏeŠîVY]†—f¬ñ1’¡ÑãV°žx³Y/H^÷çERXæ½ôd)w”Aÿ�ßÜõ?Ub’Y}£ØðÆ<¡ ˜lÇ“KÉ«)¬Ö>¶ m³4!Úó1v‚|ah* 1à3¥d¬· ‡Èzrô¬+ÔMT]¯¾¿øPÏq¼"ª†÷%½äGlܘ¿y½õ5ïQåºóO²Õ ¬”ãŒûýCê£õÍ~%Ž+Öd6#…‡’¶þ§†¡ûlÍËY¥Dšo]ýàÈÿpz—µ‚Û‰…@Üâ[kç$ôÉúÒ>9¡™(˜¥¬GÞ^/N'¹ACƒd”ðZÑÃÍ<pÿnr z±È®Ix:@“òF–IžtÓnuTÍßäy#h’–j>|dV`èlÖC:t†Zs€å²Å•/³Pã¦ôð&�ÝBwø "l6ªqÁ¢S†(‡y8W£2rØlâÑÒ#§ÎqÛquÆ1só%¨{lýÔ >³3ÄpõÒä0!eçê›Åü8ïÍ�’¬(}Ä„äkËƆDì 2‡aRŒÓý~ÁZƒxìÔàZâ_¯Ú™jà š®1;²¨qóHËׇÉm«²J5u«²„y^Án¸® 6A3ÄMÙýæ£Ô÷i ›{í!Œ»Ûµ¹v]e"Lã*Wr.3 ”�õÚ3šë1¤ ¦{¿B s�“£>Õ¶p 5�P-ä�¥L +‰O’Óø~àê·áAé”÷›¥7Í…±ŠÈ_žìz†6HQÍ¢Ù 0ÝXóÒ=¿FMG±É¦<äì¯óèçD(ºWªvZËþ]úÑ!„‹û%—ÐÊC +Jq:¢¿óÛCªªS©Ë—-t‹f«LT?_OŠ¡¬vÞnÃ4f½0×óULP»Ü[/ùȼå[Qg¼²Ì ¬ATÖ÷e¨P·Z�²b—õ•1ÙnÉ•%á¥}•Øb >Þ®¡›š (¸–á‘EòoNÞy‚RƸØ(«ˆ9쟫NðÎPZ€:€åùó*kM<²æ #6}Yós”©AŒ2¶KÞ,ÉR»^ë2èäà'X$D"xÏG¸@ 6ÙCœØ3�ȹ^ÊqP‘{C51@7_yg1ÕFGB¸ÍÌÇ î-'ä¿ÃGæ0_Ó�¥„!ì‰+PôïÍS}/ R^ö'ð<ù8,D×@½©Æá„ÛqoùrÖñ=wgD¢#rZê³ïä$Âþ~¤²M-Å)£ÀÒ·Þ†1Éÿ>}ªŒGšJÁWÉ@?5j™”V+7Õ¨®ÓÅ‘ˆ€ðˆÇB<wK>пgREÀ+«vÒ³ùì¨ä¥ÒÇ)P²<ªL†˜.ó§ˆZœMKüLˆ‰@´Ûb=Ö7¤ÆAD‡Ï’Ɇð% ÖǽW{'“ñh“E¬ŸœÂ;¬šëó¡_GŒÇÁÊ+ÅÍ’�7‚¾0ÌÃë²UGŠ$ +Äy\û¡‚€Ò¾9SÎÚñüä` §ÂK 8…2=ª +‘ŸNª'ù€æ6Bž–K),LãZJùÖVÄr¦ë½Ù^žKÙë•OŒàꄲ@p«ç•¥¥GáÀºEŒôŽ3‚ƒ6žÉ5`x¾×]ü„ZŠþ¸ZrÄó¡ÌêvDlì‡í- )ËãÞÃ<_·ƒ¨Œ²õ‚Uìu\ÁȘžCJdB|Š99œj´:sZÒÎ7f»!k††™€/RM_#Ê8fÓ~°¡LöéKÀâˆýòhß×¼ÓÓ åêÂEÞ,ÄQnAÁ£®ƒøÜqïToXE¿ïn¨Œˆ– ¥´+Î[tÅNǘ3~§ÔukÍùÎ+‘èxÎK@íw1ñÞÏë ê?¶e%«ªkFlù‘±Ê‹5Òõ„�²‚Âkçv½ú:°a"§Ô?¿YºMC²�Šïüì—¸®ÍMé[!NmáÜ*¹†uŽêÖ]®^K£Sƒ(©¬)4¦/‡zÝÏçNÈâ¯w3ì9ß]•h´:å~Õ8oeófúÌÎ]žB¨…å°Ú¾¶Œ‚ྦྷ0·t1#š¬¢se|ˆƒÜð†`ø2Ù¸½ß•s»ëQ¾Ú >#<ÎqvÒØ0@xkÝâAˆÈ5ŽlÐ")ºAà£Fw%^ÛÅ/Èq:Ô²`ŸˆÒJ§Ô—Iù•ú€pvB:vÅ`FàƒòíŠAª™rµ":>Ÿ{ÿh²ÈPä8„§ˆjdz½t¢hKÂEV•»óƒ‚×øt•P(žØU2@Ô§Ä×ÐeDH™¡/oÄ +xLkö+DìÄ.§G!ÈÁX¹4:{jßÆt¡¬<iü"’óý4éà…<Oáø¡öôS]¢ïîûl D«Ö}ì-FA)ìËî;i‡D'yS˜Hß·€¸w¤ª§0=¥B#�‰’-–¾¯2J›5î–Ñ®mÕoH”ùL&Ù}¦J;ôí;#PRŸûíË A œeF=h€XÿΈòF:ArbŠÆŸí~Õ;Lµ©lœ.C—öá(+/{êH¯$¢Ëm§µúEœ:ܾT!!€ðëí_4¥ZÔvªÑYe¦Ñ„IS&EBÄp(âÔäÞ«i¤qTŒ�QW¡f«:©>æ þAÄ©Vä$×&{öšÛH††jJÞ.ÏŽCŠÜ%&nïuÂl–uÄÿ¤ï’ÙRT“ fan"Ý” 4Þlºñ't‘c¹,íˆ'ë—~²”Ö-6+?„ñtߎ +mmn¹´1»[V½†¡ÉûŽ±ù�h~]þžý¨W\ßک߇}©[ÕQ «<ÐûíÚoèÞ¹ó¼_åÀ¨Gx&d“Ruñ8Wàƒ¢¼Sô cq£½s$ˆM¸±R…<wUÚäŒ`‘µè@pzU¥tÄ*òíà$—Fâæ‘/³Ê1ˆ^³ëX„üuj«4$DmÜUã`>ÕÏO— +•—µûv_¿ì,•€ ê<±ƒ#J1,#w&xšÕjU€¿+¿Ždæ4ªÒ+^REYGBV¾D¨*ënÕ+�rÀÈ +3\`ß·>Ö†]„ôO4È ñ¢»ö]\:ûŽ>W�¯ùïNäа>½'4í„ét$ìä.E:6+Ú•|‘“´ÂuFèI +1ûš�îÎ%îj C–ÆÌÚ+A[ˆ¸ÄB`ã0SüVV4KóñΟJO‚òúW9ÎúïGæ™´9ʺJSì)ÄþÅÉ€ÚGHħåaýŽèüÊKtd›ˆ/s±¸¾ŸžCÀqZ!W¨<ßÂ5äGTó»Æyh&»í„˜³ +3Bà3*âv¹}ÌH{¼B$1b©®$€ŸlœŒ]KÄ缄Wº` ¼Olc�$_¿!æõca!.N\$´ö8b"¡¢kºo‹@÷PÊqû{oä³á_,jßñ‘* #;‰3VŽÿ„Òi¥:›T;"jž ªç·–COÅA‰[!Ö4o*媢]¶ÑS?†ûŽÏÓ]%–…¸Í63½$Œ¸‰úîV¤eÞÄÔ¹è!ÍœúÑQ¸ç`pú~¥‚ð!=I,vXÈ€¿4nüõ ‘ƒÏqPÁ±CŒ’�‘68TqâĵPfëñ¸îK]^F‰—毜ù?5NÞècºu¨mŸAÐ~¾L=Î}/%"6M!Þ§d4A—$Þ‰¹7•ÁéèM)&ñeN¢ßÐzÛ$+Ô •ñz 2+9w…HÁ7I(Öœ›¼!ÇÀñ®-ŒêO‘Œí:ûa9¯,!îÃêYb§I‰Â+ùåˆò¯Ò"gª¶&ä(ÝAuu±^�¢|8SþÉô6ÎS!O"ú´°ÏSãLU<BªQ ðè¾ÊN3(�'’1Ò1a~òΔìÂ3föÚäPô¦î¼ADø´|xj³\Ãqâ®û aHÈ÷Zû.Òtô¯¬9ŸV´í½ +³Xò»â[€hÒqÙ^ág»CNãÔbì)pøh‚„‹ úúû¹pÒÁï¡û¹péïGØÇ7< ÇZ�‰à«ÓÑ%zQ‡Ë””òõonê2hÏh¼ÄuÈþŒB ¹Ø>Aý¡ë•ƒ7úè!¥}NéÉ +Q‘Qô(®föºñë¸ Ä³u$s t£ÊèÎ Ý·=3VÕB!{pÖòѹ³ZÍf÷µ c¤®ÿ‡ƒ[Xøä'b]ÛC\!Î;Eº€Þ!³aèy€v5ëVé!°ôwCnöÃ$¥3ý‚à~ϸ[(ÖÏÜ;"üŽ÷¡Ýˆ5?/ÊMõ©>ŸN¸†ÃÒü®,H?g‡¸¯Ò·í`"¢ðeŒøªz +Ð1DDýöªqâ„^Dû{…× j_åΆ»#_ÒÛÖa1âÙÝ@‰ ðsÿ âŠ5Š‰Û5† GlC˜Ñ¨F=~ŽÖ/ +UÓ<}Ô¥ˆ¬¹/YåäbJyŠØâZåAÓëÂBÀ‚=>±)}³i»kD„Ì-«KI×fëá5<ø¼›µ®ß²é‰ûÝb¨#ý°À¦îÀG.ÅZ€Š°Yãµ?Ñö¡U:´¶„ Õñ~w´›£rŸÑQG<¡ÝŸà"ÝDO8h +„z5åû'ØTQ¤½8ó~·)G!$ý^1éP•úi’!Cѽª`8'ˆNõ‡š?ÖóýÃcQ²¿©Ñַ‡>ïO†–„mÚë<P«ÂDqGúìŠ!?{võMy Éà>aõe@Øì1³Û^‹=œ<ÿcœýšo£’Ƨsz'¢¨}!8W¤>¦š]*™ -ç+}pPF: ï³ÒGôÌç"µ'ˆö1:Ûo´·b-W'Á™¿×‹ÈÏ^E Ô¬æP=$ÅrË˦¯ÿÓØ£ä2ŽoF‚“›©ÀöÿâkC†¤ 飺r—a†AÄë,5f4(í;|ls2¯Üä’£{.çµ5FÖ8dË›½MÄùNôödüÉLÆb¥Õ0„@æàjûlp §À)õ~rg•8÷ÓS@Z URÕû¡Ë ©†Á™4ˆ…˜$8é3bFüô0S\‰ìk=8b½ÖÁ䋳˜/2áRK´1‡ANO§Â¸‘Û• "RàÝÛÃþ †‘DfôŽtrž¶N”kG$’a¿î0ñ|“A“¡Ï«¨÷óFA¼~§qékøçSÎ1v}«¿û6§ÛJEßÖ׃JÎ9ﳇ¹`µÝÙšþ:"Á +A¸;1Üè… áàÞW!I¿DPTƒ@DØ·µ‡À›‚oJŒÄ +×»K%²QZ΃½ƒvÓu¨=rub;IÖStÒý=ˆ¸nù}™+Ô juBHê÷eÄíÊÖpØ\ÿÅZÏõ¥;:¢ï–²³.ƒ†â–®bmfë²RÆÏסVÙ);åIä ZÇ££7a·êâ,å»üE3õ¼%ºr!.–Ôë¡–æÝ(%YL>y7'Õ[ Aªï[³„"²IF¼¤Èøq!+–;+íàÖÎü+GÊ¡.CÚê¹í÷n�æ:òûÉõõ¿èµäPCű‡c•rÑX?&Mfb ³!¯.ƒVH¶F1nѦUÑDÉ^3cm:.ç@ŒMÞùÍ“:¢«¨½‘`’ÙÄ·dŸ³¾øYï¼ôØ;Ç~Õ8JܬWãÐ)õ³J!T-e/ƒ·§’òqTÞŸpK9Ÿoæ5¦$9†5»oû*[Ó1·tó™?‡µì²™EÏk9RÀ”û*{yžIÒA£¿¯‚Ïõ¡Ö"‚ƒæ,&÷F6}WÈ ^Çþ[ãà˜œÞvbö<”‘|ñóšE©\ˆrÅ‚’¹²ÅµŸr +u©ó'¿tÀ/"ËNx-ÄOøÅ/B8ÚÍ…þÊ®)5á-õs -™âØ9ÐE#‹Jkñ¢;ýøÑJ-ÄŠ‚—Ÿ·AöþÊèû~¿zɾòW\b „.Qi,–û‘M)Ýõ¹¡¶ñ3t$Œ€3.â‚çÂMÑíî[²€¦.|Yeq9{?‹¤s~Óìq¹®cÁ<†"5‡ýŽx’d.¹N +Ai<es +\Y²Ð‰/Zk…ÀÖྲྀÐîÅš%æGGŠp»AAôÝÓZW ÊoíÃ7a£2<cÒÁ*ÑËÞ¢õúõ(g¾"ÚˆÏö!@cuÈi‡±‡$ºûZ‚`ÈŽÓ—A„6yúF¬Ã'„¸Jj¹“Æßw/gC—ËyÝg‰ÛBÅ "F‘¤“Žµp¨²ÑNˆlŸN:ÞŽj:Ösœ¾gÙ® Ä¿Öbk ƃ[ÿgcÔ*Œ¸SF?Ï:â2¬¹îúˆ UH*{ä’Œ'·/óþ!p`ªòÜÁmXÄÌeÅ™8šZJÙóçòVž~&”I†s”ZRÔ€ú–#äÿu>%œI¦ZÀŸ:î£Ú¿j3´P-ôUÖN|õ4?ŠZ(^ +A±Ï¸ù‹ÅΖjzŽ³V„j-d$™_=8JjtÑ|_4güD¼³J]aM¥ÏiŸv×nïŒea¹Óæ1p7€ÆeNBÚð,%Œ~FâA]`³Œ‹hA¬Ú‘‡7.ÌÁa/´A@À×¾ln¿HŒ‹>P?Ü®üñGa‡Rðzòؘäêàz¾";d¡<à÷íË Y,ÓáLýˆ#i³V#ÞùkaA.ÿ¡½¿5ç8âž_ÍWm½Cþ>~Gô³ÞîñÉßL ?yÌ8‰ŽŸcK.BÇþEÃMš2êDÊ÷¡Ìã\bêçZk±ûF…¸©_ÍÝ’up’ädÔ*n¤Õßû:‚xë²1µ¥J£³è‚óÇ~òHîJIu./”[iTä@'¢ +ïóDìˆ)vˆÓçË Ò¨>vm¿B±½¼ô]o‰B!:a±‚hÒë;WKm€ä"VDaxs¿.‘%£7Ê‚¬±7W!h„µ*B4Õƒ"ðºÌ +¥P¦ˆû]ßæ5Ë]Z?(GÆÊ€˜Ú+Þö‘nš�ߟzGôá¯-÷þ€Î;L¾üøÆ#˜¿ÒŠm…Œ qvo® Ƭ³z„½Õ§[M ^dh!àQl!UB¨‚Ä@šð-'K#8îÒ\5Ð QÔØáÄ=ðeÈÅá3ë [äˆ- Ä-FÌùAfÉ.Ô8Ðn†›³ƒ§5©…@} ³qˆ}¬Qxc)¡(DØTŒ»Önœså EÌ·JÚüeH‚àDäÅÞˆI +ªåñF…¬Ú‰”‹`y$h›Zˆû¼¢!©h;1 +â¢iŒŠç]ÁÃiõjÐ(+^’@ÚJn È +ZÈÚˆaöxÐ}„8àZð9æ@„ߟ¾@œ¶Ô—Á¼'â¹DÐV/¦×û‚dO[ª1 ôÀ±sE€Öqf q3ýžwO!ÈþÜ#™R4EQÉ?#X(áYæ8ï΃çíÒ¤D릥¤¯àVä8tÀJÁà„<@f„¸Bp—n„näÖs)¼©ç®_tø‘£¢‘)Yu hƒóL‚Ó½Éy PæŠîŽ¨¡—–¼¯@¼øˆf‡ #c„ȶ’Dp„a:+„H¤–ÏxǃPÏ»A‰,/§S}?t–™ÛBž,úÐX‘Ã’5J§câDŒC홶ÁJY¿*%…8in€»iÄúZãDÚÑ0•žG„ +cXÆfÔI•Æð‰G#¨ +…gš¨EY=s$"õ±k A¸ãÜtL©jTštÔÀ¢ÿI�´f~ÐB0¸Þá¥øþU&®‘Ùp û®÷*ÄZœÂ”ýLDÞi<NÏ©aòÙÌlWž:z ÄJzåÈÕ…ËÕsÆâµE-A¸³‰Æj!V”“ 9Ðœ!õ–ãä)ðpnƒ]ˆà¤DÊ^ˆW†X©øOÈ}0×vøŽ«Æ¡¥Ÿ)³}¹1é³#hœÐo"85Øn@ˆ½ æK^§S0›âJÞüÂ<;JIudµ×gäç_² ÎU`ý’Ú~ ÆGš*$³ìL±gΓtlQW!æùík"ƒ#?[’XÉø ¹Yë××£ãð+Ï*ç +ÂŒ•–tDpÞïnNèÙ–¢Ÿí·$€NóÂÌp…NR1´ű„iîŽÏÕˆ1•|õñ¬®Ñˆ4e¬]Ã{ºk€(BžVb Œ¾i&…Ø5!^)ntûš(´\´k û@ʾš1jxŒÞÁ¾€ªõ6¹Ã 8ƒ¸ c-Sr:BŒ# +5;ø5RÓЈzN\…„Ï&é�ÜÒtB p»•(AhqEcÿ çÙ–$B¬ØêƒB¬-)ªòù“!ì.±ð~g´DøxÞÇ@¨}úÚj‘ò\xð9J£•6¤»|hMë„cÔGvVȾ*¦Ü¬Pwš^Lâ2d"GJº +±¶|µòz½EÔƒÓ¼l!ˆ–Þ:„Ó–f³GL",š{¼PnMU“øPìÔ–`�vm3Í{ø;¼í.W–…0#E¸[‚Ò*©ù*$j93z:û|kpœ!ùiD“¢"'ñˆœ3ä»HY° +ûèL>W8Ю=á°“h÷Yí‚B4È‘ë¸÷Ô@f}¤_èEÿò¢O¾È(©!Î;¨-FPf&ïD4+T·ý‹~ù¸€ž«Žé >iŸDì^k#h{9Ž”âÄŒ2í8:iPR@1zòPÂðŠà< +ˆ DÃúí¶œ¥§¸½ê…ÏèÊ‚A“»#Jg<o.X€!¯Òés&b9ÕFÈU*4æÚCà±–‰©so‚p”$‹æ'78x™x}%‚Š‘S½BTƒpÆÑئ³Úöct�WòT œ‹`HùM£Uôéæ»ÜšO]s^ý/ëȨêÂÄã¸ÒÁL9jTÙg¨]2²9L[AX™è$›«…*BÇ‚{qtøÔŽA ý·‚£Qì/²—o¥ü4pû&?êË\=âV§µ‚gƉX Þ³À® ±è¥Îõ&ö’6Š\ÔH`/¾Q\”§ Ñðļ“@)™š²ŒQsÅ#y–éë£_Áç!îE¤¶¾¢ô"M×ý“§$׋f‚ZÃúª'J^ÊÇ(™TahpR5ÊWYŸ˜)°u'½¿gòÞ¡æ>!¨—?ˆp‰°È‡Ñ3r:R,Mæ^ÆèÍxFÚn1áSÊH\,·œãÎ[Ä»Ø ï Ž ¤]ë{GJkZ|\ˆúgÙç AxIp]ˆíëÜqX>»*ºä½¾’J€/,tãlz“tµx“§‰žæ°Ô +»äü<Ì3͘ñz¥4šäxa”ù„ +ë«Lâšð7—KÊJž”o}’´ª|·æyÞó) žµ2_…ôÙQÅ ˜xÜ…¸Œä2Ï"ß +ù©Æ(7^#ÅÏ LÍ_ä<ªc�Ôìfƒ(<lus!Š®^ã\„Uð(ûbœgT—ô.½¡q*íàÛòTo'ÊëõÖY(ú”Gt™Fõèrj5ùM‚Ÿû\Ù¨‚$ð€(Xã¬1·"™0§„KngâoäIbäDÈŽ ©ÛRˆõÌ£e'†ƒ. ×ä@/–,Ç”Eg×Äõ&s#J%-AýC}ÇÜ_a!FÏ~§ˆ +iß0ID›è´>hH¬±–•‡&ß@À¤%¼rGÜ–ð{ ¨l›Ø+/d-ÜŽ} Ze3R¾¢A·’˜Œ ß÷=~SLÂç”4šIÐv‚¢Ö™zEmÆi�Z z&à°TJ…X·ª)[r saV'M`륻r{‡•ÚC5%ŽÝÃ"DKRf ´žìû]´9AIÄúƒ9D¹+““Ê`BUÊ…&ŽÅdªª$‚#thåV…r[ÛeãõI’w…XÏŽ^{ è™3LÞ„˜ZmÚ]ÃPŒîŸlÍÃZ…ÆfT‡±b‹ù„î׋<ŒÜ+XU‡ž÷ÓõÑ”záTÙZTmõú;!²(=áð€š¼ÚiŒX{‡e·Ô‚@Éâ‘óz ó«¯,Þ¼*î +°+yØ‘ØC�õA›q< á|è"¢ôW™2‰yàse‘K¤qÂ?Fð}éýå^/g}Ý-Z¢ä~³f#ºˆ…A¢=á°û8«:¨b>²œ�AëùMøc�~hÜDÈ)å„{$Ö¥{ÉŒ¬TFO+c·P¸äË°D§ÖY îôßoúoòÏ3jü5 ÐÛîýSõ…ü¤D‰—2pW˜<A2üˆ<¾j;gW;]<„߯G6„9;ߧ|-Pùÿé2jqó´‰èGøQT¦8‰’U»²5+Â4x{â4JãK8)²Ê߉m,xé¿#eÅѬ· +™®¹òç`ÛIÓ°·nŠ}aV€+Â�Ž€Þ3Âô‡Öˆ3(�)¯Weê™÷r‹ÎÆzû2ú,Þ÷Ì>!Ej/€Ð˜å/ây@óES㮚4.ž3ÔÖG‚§:1Ž„@Kýgu»%;ŒT7âak°Âv $Xš€àÔ"®…ñýÑìçþ°IA¬8‰‹§ÒرKýÎ'Úõ{8$n»Œ‡{cƒ ¡Åk>•íŸoý–ŽÈÈs*u‚Ѐ¼3~^5}ƒV¶ÎgËá2òh ʦ*Áçk÷(DËžˆzô0Êš–æˆ +âkA¼ÌØex!NJ›åñwI[‚5Æ$FXÐú™™XJí£È^>NÂG>üö…n±û?X;‡XLÞ®Z{m‚¬ÖÇÀZxe>€Æ8ƒŒ¾™¢y»qq>‹4zH©f’l!z)– Qª)¹/ê<ò5«'÷G1Y á&mŽB0GiÙˆô/ãÄ'9P:@«3žç;¥@ë.Î[uÔ™ ùxi£‚À,¤e +ɨîð|6‘0lú|�îà +'kᡃ6ÛYå©õ9ad7å§-²Íš˜‰ ò:¥À-Ô§ §rÄi+‚ƒ²9þ\G9ã’wå@4䮈,z„8£e>"ƒvIˆÆ6¦iDíþB€v.J—Ñaø ¥~#Ö*”fl#ÖEÏ™÷ +³.Êx9ε»òãvqŸÚï<¡V„ØÕêU;.4Šp'6‚4O›³rWTí ï0²ˆ2æn)tSé&ètÛ|fTNïg‚$ÛáÄ_ .št1-¬_tsŒ¸Ç&øp,Y»£Û¥„à%=í &©hP<l +FˆÍWiómê°7!éî¨xäc™¬›V½(<„Û ÈHc¢R¯¬™'Ì$ ½J깡óSýXoAÇ7(e¶:L¶œÙ?×>Þ¢xH|Gç®J̓°—ÑkfÓÌy;šOm*þÇ?‡½ÿ„g0—è Š4V‰gfÎ@ ÅÂ;ªó=ü·®=ò777fOwÉ.ô-Ž À²~d¥s-Q‡uë²pΤ'G"å…†ip”¼@ppšD*„xY*/Û +‰6öaòÙ¼IÇdzÙÿ'ü�b NŠOè¯Ä@êÁ#!!hZÜ]!ò x±‹·g"Ð&ŸêúûÑ0ÊdÕã±Pƒlã›—á|ÝÏÐÂõtHêù¹óë_L‰³çšý~sZ‚vã»x¼}kƒH퇧å4‚Oÿ{¤[Ÿ6¥6e+sœ“ú}Y1„P3,~þð~·‹/�3¯’æBñAß]”¥$F…¢ûçˆró¤-˜{÷7K²†;WlÒôYç�AS˃œQ¿ó÷ä°,UñÂÂ(:gÞI$t¢ù;»ïòV8ÚLœ•A‹ŸÃÌC’tÞ¤çUãƒ]ÓÄ 7 6 _ÆÐâ@Ø{"Ž±$È]ºjõà(‰tMÔ̆¶÷±ùÖû•Gj–Xa±á—yˆü¥u%D‡§œ~DQí1k"ï:¤¯¯½7_åš©¹3€B?ùê@ ‹ê>Áºíºí,Ç9%‚ò)cߢpäRã’º<k‚pîEc½—{FZ"ðs¼¾ÝÅÕ+N2¸>Õ!ãÄ2¨ oIÈ +wN¹¼œ¶Ø[Bë:ªÚië¨þÝ1%w·&ëáä +‰²F~þ¬ E»úAÏžéYðI×y~ŽJx+rÖx÷Zk-eòMsy¾¯B\QY¨U£[RKoD‚æ-[.iCÄ:ö/zž¯Å ä,f£ËäCIJࣹYW€þ£R%ÄÑ È>ƃ-äJb¾P¦i~ž¾ŒØCã3ÎM›}$˜K>´[ÌqímU¥8mÉË=b2‡Äc|êXÇÞ�4ú²«ÆdhEÕƒ…I¶S\2ÎÝò-?ïÜbhä鶙óeʨ$ƒN™ê 5â#×Ë—©@ªÎæë&)a_[\PÛ´Uóî‘éjÏkÖãø”‘µ4K"nå 1ŠþëÁ¯hÐK:RŽ†g†W[Á—̈ë˜5Ÿàys1“‚;;þêxýƒíoõÕé—$g®„$�)†="t}g‰`ÓÁí>ºiûì½<ygzjdét96ˆåsÛ’Ì$rjtp¨?ú`kâ'ûÿØ-Q¸ÆýÜ�¡ègÝ—™ ÆwË—YäW*O¹¬Ó²Y +ž ؃ÏKÉ°Ct¨x$smzrw†„žLP!`þ\m“Œb¢÷Žø‚’€g?I®`ëÑŠsneÖŽŒ„iƒçJD§]MªÇˆñ7 §:ŸIôç|Ž¢0~·Ðz¤¸+„ŒÕU¹A+ïvA½n\Ÿ£¾SZÄW ¢ïŠR=MÔPxð¡9CJºt®û'wÊAã¬7úÅ´ªÔÉ¡¯ÅçJ~Ðñìˆã2²|¿ÔÁ›ˆ#çX Ömx«Ê[³fînŒ3²é¢ÒJM:%¶D‚ õízÏRêÁàdx®œ%R•§Hү̇j “öºæŒ}€É…ö +Åx±Î³ªôÀ³Âúóò+£½Ôß GèPS±Ü«iY¨èq±Âõ¯¾”vs¦@ðQõ¹ó'jýÃcyÖ8“–à Ë$a°ÛJ¹Íê!½’¿iu¿/ +ä®#2‡O~4å8×m1Ò¢Œ43[•ï[9}€à5£Ã=ý ]$ ÂÝ hñákÑs LùS`|:{+‡‘¦þÑøi4<RßÄp™m†´åÑL6jf«ºÝ‚ÈcŒ,vèè¾ +§¸P¢ ÀE•˜¹k�ë·Ùû NNéaƒ&!–a̸•›ž8fÜ,^pc»8Aöp²‡ñÓí.À¬¯ú9ÒíRáÌs‰6ücÈæ½o®‰ö˜Kžø[É–,£•ÞÁ°Y s³[Þ20L‹}&âaI§@øa5½<êÑ}F“} äa½=ÇÈ$Q‚7ïv½õ7ÕR� ®s•þ†<Bÿúâ#‹4'<@$eù¢jœ«ÕRbRªëËÈ=ôCÅ„ãÞ-=ãpt-µW³ðFPé곧bY·ŒôB¿\NAcN@“Hëý1.ÿ&o=ß „=?ŸøX‚õù@ÍDðÉ1E‹°íˆq`„!†:[¾¡‡AîÏFÜæõŸq¢èÃ1¦q ÄÁ;ZٴŠ¯¦B·#ÔsYWB`b!ФۺjB\˜!¼)'(ö*U#±TšÀž7.ýKªº‰ü(ÿ²“ 1µÈlfïÍ|{)µYÑ„Õ?U¨¬jnlÒh|SÑ=„ªPõ÷1j‘\o…&¨¼×ÂCÈâÿu/·Ì¤UP@ô?åy`(¤[äÇ>0æ@hBÑ£ÑjÁÖr]i~šŸ1-%2ðUÒκÏB|è8 žÝ™ˆ)ÿ¯sÖ·Š(kr[óñ¯óÖPÏO¾õáŽþ|†‡ÅŒ?¯Gló‘·èÉQºú{ÊT¤GK1D8Õ’~åϵJ1¨x~û6YÍÎþ‘�mVr–Måõæý¢º‡üËô|CJ‘;z˺IÊþEh±„&Z¾ŸÿŠy dTŠs«ãñã¢7Lvž'ÔSòñCÁ—ü®Ÿ,ézÐ=„.[àB8îúEŒK’.KB,$«QKÐeäCô|ô£ÆåîG#ÜæO—#"ªC%„èŒ-&³=7óÅjkþ‚>=Š XßéZÛôK<Ÿ°èÊzéNˆs?9äõQÀ«£*U§Ô‚2ˆ¹6^ºAŠO×PÎÛïšÌú*jL£Qi]÷–âUŒ³~ß,¥a#øHúÀ„,Þê\A`}TÐm¥±.îG6ù‚¹<„±)V!¢hbû Hž4ȱœSî“£~ÍÙœjöëѶ¾� MN>q ‡èù~ª'¢º1y*»¦G[7ö,ª.æ8R†m)#Ð…Õ‡åè@ Lr–g¥ƒÌ?½jF¬Eñã$‚óôàQÔšÀú…¾r¥:±ÒA{W¼X!Øþ1¤©pÎ9ùקžÙšä4ò´œK4åÉ2íØûΑBr!‡Y»w» n燡ÇÇ•&ëPò÷É6îÞ{¬:§¶õMÝ.‡Æ˜®áìÔeÈ‘ü +$€¸¾Òõ-‚Zƒ…ÊîDŸ™S3þt"‘³$•uű1žÓçù“„†�qÇrr]ÅöX�¶rÉ…Õ8·YÌÇÁ¨ìü1 Ž±ë‹ú +/>åxnïÖƨK poëŒ'äsw“ÊØýTRÞ—AÚà.{!Fe„89Ÿ»H†FÍI~åÚ›lÛµžÞÅåg+Üz n˜Rå.DÇþH%`!ži®W8PÇñ¬õ@ì&½«žÛÝ5ʽó!hoZ.‚ˆ®ßMiF@§—saÆ‚Ôô"ÚÍN$dŽj ^GÆéÃÂ)Ç•S’i°ÖÃÉ ægZPæ6¤$7ÌØq§B±@ëãQêL/zÍ›c¦”\ ¢ÉëðÚÓ•ë–§V.”h%‡’añ³ŠÑH<Ásõe0¾Øz ào=͉NoÎýÈF0qš]s3Ò–µm²ŒÄLgMz5({"`ýÙcð!Ä~FÅÛ:9ov=ÌõÉ tQ‘<D/yWˆß )Có/ƒ}*Pï›·"µ^h”·²T*ÈÉ= /9ЋnקãRéit,qþaÛ•¾9*Ðü1u´ð²ì[Ji s šogø$èÜB£ HŠ½%bû+@Äü(cÜîÞk‹`º%}¶»ñÈ°RÅ× ]ˆ·,:ò©¹J:oBp¼uF~fHì6ÓXr i~Éïñmòzh·@48j¡Æ+ríÓÑÛ®Æ}Ï=Ðõg=EhXYõÁ&{úwŠ9r$B¢ê”k¼nœouZä[>èÙÀX»Þ1'Éš"¥#ÈÿÞQ�Òúªë8!¡™dÂ7.IµDÆwu}ä@âº|’vôSÏ0žõehãùy´c'&]DCýa1YP}@ »UðÓÉ»>*å½�ú ùÐuüÖ:¨qX¶óo¦7&3ðÂÃ6ÆA¿mÝÐæ¨Þ°¬™ãt©ÑP `ݨPjÄ:%¬ãÅ,ZŽh-÷¶VË‚¨=Ï»ÛGn1AºØG¾L©Y"®BQlõô¿‰õ~ΑœH¨€§Ý 4n;v%HGZj[¾Ìó~×Ìín\1‚Ê2E†:yñú0FG=:Hà?ÍQè!½a¹>(ûZ¿"þõ9¾aNõ¯)%9½1¢'‡A †sD—C“êìoÄ-k±¦&o#8^ß͈$„lÊf½#$ÖÂ".Ì!U/+o‚`“à »Rg2Wâ{EåbžßíjEú$—®±WÔ‡óÛ +!/j–ýÃÉ#Œ4GFl‰ó +~«ß&#È"…FEı°]¡ Ÿôˆø½zhïUíô¬y—üœOXç—,¥ò‹Ê0ép–ãPúöHcˆðkDá‡jw®Z^XåóìÔšKšúß½÷øŸp[=97æ«FÝÜ#$1ƒÍùú2¼âg÷$-�o$$¢ ˆ’@ NüÛÏÿä*¥uh(®ìò¥äµki‡nÂ"Ûü9Cìl–”ÎØsè|j_…†ÛhéÇz¶°„"! Ätbµg“¢¤I:¼Göt‡Öox +±Noýžu¡ÓwÌÁÖo§ø=ÜÉ·=Ë„äD�sžÜQâ¢9Q©$¼× +¢ÖÒO-oº±.�oÄL‰Êšû°nlÍQãÐA9ahÁë_å‰Zkíx¨¤Éýƒ)ÅôŸƒ<½:®aXôÜ ‘/ˆ³æáã‹.ƒ°âO?+ÿßAHÕ½hzj~Ï’ýIkÆš 4¸Ýã»È±|ö « qI±>-~„HÍ¥ÇTE7LJIˆä8/í_r‹ÐÓvÎ`h3%™<!äcÌ@°Ø"h˜}5·úl‡4cr sX. K‚>øÊ:Lˆ‚¸µ$ ù{òZ¿CèógK$§JÛžÚTÙ>î“Q¯½÷K—é·sC„ïµ®»1¥äY"} °Ë0$âîEJ¯Ä'œxâå'̔۞ +39¥0Né¡brû¨A‘x”M®ø”cÚØoÔe`ɵۙQ¨J¾”²f>3¥„xÏh Ìa Ø„`ƒ¶ÚGQ -%$DÇÃòøŸxZ\€#ƒúrN„ ÕjZ‹6Å;›Ž¡q<,[‚>mýyý«ÊWï4¤Ä@dmß2±b„gâþEôGõOO¤G|òxþ4,M: +1Õ 2|–¡O€ýû³$“£a]n•ù¡·ÿ˜Ûª�Ð:@ÔŠôöà8 ¥úÈŠÌQ“ɼ—9:Í}̃xÛ|©ˆ\õÖ�T?^Oé<lkw&b\RÖòasŸ#¿*è°^¸Î’k˧%í¸ÉFR«+†§ÁhkêÐß~ð=Î+ &¸Å¹qÄ©µV¹9«¯¨©ñ×¹-?7ÒÔx»¤ºÔ6”ªrÕ†:®©˜’£õh[ÿ +Ñú[6Z€@l¹äËû¥òÖ¹LkFôë&Dçj Bý-bˆŽËŽžè~>d„\ñ DÂWê<z¨Bˆn¸?ÃFû!¾õžXõZK/Óª£]$2te¦ÄR]†ÞIñ +€©äy|N¬lÌkáÇ–©Æሴåé"¸è:?ñd�6AON 5b8”í7gOÊÆgEŒôGÈX¨ˆý·<~º$â2½´ÛG"(³?É‘3úZÙ€ Õ‰õ© +kêµ- +D—áÝ^Ž7Ô}ºÎ1ç6D™ò³Å šÜ +M’•c ¨f·=·1 ég4ê€@äÁ +pù›W”Ÿ‘y£¼ˆ)vjŸ5ÎZgîwn9ή7åƒÓÒ“*Û}EEÂè`/æÐþÉÐP4¨¶p¤”Ñô¥z^ñ–¥¹œÇõŒÆ½ØA\öJ_<?F\0=2uÃùÓŠmÌD>)†Mʵ#¥ED»H#¾Ì‰Ôâ·|Mà)}M¿"|IÝ”DÀÑ–ÆJª5k?’Ú`[ÿ†¹Šë黇.ƒB>^÷Aq²u¡ò˜¢7âÎ+v¼ve€/“šÈ'ø×ÖÀ&áÜcx=ß7@Ô4!XmP7ÍÖJ’”(fÐU„—_�uLÄÑ¡õUˆ#×;’n +¿£Û©)Æ¡Œl€3©sTë½0ö91˜\§µþ¯—ú‘Ä©jó4'ï$Úº¢Ð’(kª%×@0"¾L,¨�Oh‰ø20¾$5gÍ‹@>$Œ º¾ÞW…þb³uºzŒùðTà9 :ú9£.ÛŠÊÀ®z±¸\ÎGâMMoŸÒùSª"Zo±e¨@ˆ…CšË zýùÁ춸v ~Ì„ÀFÁYžˆ<òW±�AZ’jwP/N~�Ýáu‚£l;7äd×Óu ;âÔ*a‡zG„û/žga‘YÏÛ%ts/KÏŸŒÀø9EŠ¢Ž^=ç.9œ ö¦N*¢IàÀ,w§{ A쾆|rRòUFÐßо¬î‹•ü†¬QiM’šU‡(P²f}™¿dêõEÑR>g,>3ñÙ$à~«¼×8¨~ŒAãB3b¤Q\O×1}#¼twø–Ó{Ϫ›?u››Ä`§‰ëy7\x+BôeH|Få%]×o|E/JÏGîãP~WÄ‘.¹ºƒ-oúåƒÁ·8 $ãpRà½~Ì¡s ÈŽkUºrX8J?ÅÞSk7”¥8MRÌ}¿MþÈã„åÛkÀz$Ĥq¬“2]W0ÊχȷSó’ „žðéËÉÝVB¤iWô(W}—P6ÏùYÕ@Õösä@_Ô,§™+¡aäu*ñ|ñëç#Ò¿îÕ;*§vAL¢OsTÕ ŒË¼"0Qº$¦zî¸ +GÏùá]O)ÉûÑbê�‹±N×£:«Ehs<Dg;÷7ÿŹ¿1L5äùƒ¨M®™ÑãöãÇBˆ«æ<’ +ÉP€dÞáòG÷U8ïÉU'¿f¥¾6ÿbRƒ0!åÊ{¥Âõô«òH1ŽÃÖ`u•~˜íÄѱ瞱 :5Ïå0Ä6ã¾Ğ”oE. +Sznϧr¡JÝB +�yô¨R!¥ÎõÕ™§&D…T=ïäá\5 ÉÕ8sº (7˜RJ<_þ=hlˆV˜Áç¡é]¯¾™Õ=ñxHwºDÌìÏ©q°úžÔÙƶuCüvžîëÈù„šÈÉŠežéZø‚;©&m*%ür˜¯›U r¯ˆkÌ?ñ8ß4ÁƇÀÛbA6G±¤‘$YŽðwCkZFšjøHƹjÊÆð›±}©y%Õm™<éDÄa´jxkÅ|*#™ ²Ýðeþ*ߪ-cåûõƒEôò6‹6çÁ°Ù@ª>ºGÄyáúI~˾TkÔâ;¥äèyàP{áø¼aš2i|ëûõÊýn9›Ö¶v„€„Úú½ôRd¦�kíu³X¾^–VÀ=\‡—n·\GoyÃU»…Çz–¨ˆcV³Ú¨ë>Ük!�ÌÄ34!c¨IæΨsšÝ3}Òç#"}ó±ànÄÄptg§@Щ*ŠgŽÃ§Èfòý@Ùíp ØèÝŸ=´ç"AäÐaÏÊÃNqØ=®ÃOýrv×ýݸ¯{[®½IÜò[XÀ€83e6›�²'*§Ööƒ8‹ËÛhÌ‘ïYîuvu߈ŠçG‚éÚuQ¦:"Üû:FD!TÌ0!šä¸Þê‘üAO‹ê%!A{ö{%†ÛÎV€ànÝÄÙtä&Äõ7ˆ¦nô+r5lq48œçž++º|ÕÊY3›÷¹–�Ÿ°D +7LçÛ¿ÐLdQ^ýìä›öS'k²{±—Ðuö+—F Á!àÝR[×Vu}|™°Whµ£Â*Âní �R.è!exNôËãŒÎŽ·oMíª®Ò*-hGÅ<¬^¤Á¦¸ºB´Ñ]•†ò^ÙÃÔ9˜¡=)¢8fõ·48òUÎ#RˆylÐF–»Ýü²¿Ÿê|s?5ÌÎ`µA£”l„¯‚òÏP#ú™ˆcZ¬Î�©;J;,ž›èiN]æ8DEô«¹ø’¿yØö!-‚O;I&éy›‚Žoæ…˜‘–¬çÖ?í ¢_ËCB\E”ŒÇOM:Z¨ Ã6>³DévØ”(¨–ú�!Í0 5ê2Tâì‘M4,«ŽHndƽï74ݸ3k1…Ù7"™ï2ù +B/rè½Ãdó+Ë7MïYªF(¥‡Â`óÈot–ÛŽ|–i0uÓÉÒ=TÃÜ=&,7Ñ`ü +9ýPUhI ¿Õ);•±æTíGdÿ"ˆj!±"IJ°úMÄ¡°T˜ X˜Hù$·ƒ¼z†æ…´Vhnä”êû +\…xQ‰ôá:˜C¸XæÒó-ôbÛLÊt=Èšr~ƒ4wI‡ÏÛ‡œuÿã·I*±°TïŒÀŒù£€Œýóº}Î8õ‹0Ä„6_Œ.~±Ãˆ0ûÚ¦t¹Ëè@°Ö°é“¢&³¸ DöÒ¿oŠrÎþÕ%@p€4»Ž™ÿ 'ĵßîC$Õ=sŽ=Ô:¾Ù瑧†?¼"+7ÜŸ?òfæq¤o`Ü=•H ì‡wb{‰…$@WºúÎhWpË´³VÅüLÀD¸è¨TÚ%Ù‹aÙ +endstream endobj 84 0 obj <</Length 65536>>stream +ÄÄ¢V‘çL kײ‹¤_"mÁ¼è7ûœ>jÒûç@–[ŸEV5¯SzÕ,&^ŸÞò¯Íw=µí_‘&&¯TÌŒ:1;¿tB¬¹òMV†²¼– _¥ºsÙ†o”æTBÜ‘ÿªÔÕ‰ñÞï2¸þÓ{ȸçÃÅêÈÒ™ØS‚CµÃ£(ŸÒL¡âÒó%ª\$‘Ïþ: U‘}¿²ø+öß%ïOYM‰«ø7F\¡žm42gç€øV „D³³Óü¢Pª‚£—Sȼ–CÍî]ºR°+Ò±®q&¸õ‹(M>¿äeˆ”ÍÛŽåç[ñ‹ …+Ý`[ —Ò>|#üØÍ(¤Õ8—äüX¸òqz‰#XÝúˆ8›_3îáÕ·ÂîBÐïr“.©(d}m>Håv·žú~ÿ/co“m½Í#éökšÃ7/‰âo»º9Žìåü»Å€Ü¯í[×=û„Em‰"A ãRi)ÀâÈ7ÀÌ-4Îퟵê¢z1.“°w³ßÀº?\1Ô_4b½ºªui2OGtêùô–å5¬ÕÙ¼+r º€|ÅýôE›‚]†³áp¦eD.׬üV,:.-þ~È4±…TH¿cGh K/D=ià@°¡ Dí�-‰É%í&€=üÊ)÷ѬÕÖqt#É&<¾b%òh?‹Û=G\ Tü^–bnÉ×¾LÚN_ÉG'èñ2mÑe`ñ´+•s³Ñ1 ½#ŠT5 +³_fPŒ]ôþR +íx®“n—éð‚†÷fa| Iž´Í´Pœ×@˜˜XèÝ´cüÁ=ƒÙO¿Ê‹…ïUãT°¿\k/ž\²û®“`³ë9OŽìÉCª‡öÇëÁá8â«6+…—†¸••º5*¨õÎ^¸5jí€^³Ôõdóž*d§¬1 žKê¯B`‘¾ˆÍ‘™òh~¯»àæ›Jz§uÿ»n-5Ç/˜Ó†øiçùÈß0Ÿmè‹äþ]Ìü,k„¨LpÂx²A¯ß + Ì»nâL ^J·î[ D^“ÄP +2#XC!7r +#ü�N´mm5ìâÚ@8—V–éXÞ¥³ÌdèeÑ EmøÅJ}yi¾ùþ²¿+Ñü’xÿh'`‘¥x²½…o²¨}œI?.ñÉ0²<´¹xÐä,ñ™Ÿ>~ÃÍÁáô¶ë@ûb”hZé-"zpVÀ Ž’Ý tÇy¥r&ÌÓMOwS`¿ðEº½%‚ö¼þžaïõ{ýœcÞ[TD©2`}—"ÞÛ=9mh^nÔ× ~Ä)ËÖ0öÐ!9úª¬4$lš” è0ýmG KÉâqåŽÓKF¸rH¼;B FÚvB]~/¯‰ÿÐKt^¢ u¢r¸§1[¯V¤‹¨v”–ÛH€hM1Ÿ_fL:=ºOyò°ÈŠò®˜oE…j%âk¦hœJ÷ðçµhÂÇkÝöÚÜý"ÓÜHJGz´Ö1ÆÑV³î·zbDã{~X‘„¬kÑZ•l–þXÒq~jœÆ@²úy|]™ÎõÍ>ʪïéXÃÏ‘{ÿ~™N§ëL›µþdEÄ¿!œÅŒoÛó^tŸì1Îþ¶ß¯;º–[ðL¿úó´kg¥ÒzRØšüÐ{IW?ñäPIâĚɀ}Tàîü,ú?{Gv7s;øý~2ðxm©íÛ$yç¥Ô§ý1ïò(…,"ªGçs?i¿:“^á�çR+Œð‡6'9E2ÈBÇ84 ÂsŽ)ø¼îæ`—Á—«¨3ÎÍlš]_ÆžËU…Äp)K«šÆ@ò·Îî"z·Mðu- 4N”›ˆâg +ŸfÁzKPAnM"B™æk2IzrÍ,W ˆÐJ•Vs(@á8R«/ÜhMxµö‰4hƒð ÆI½,ÛøÐ4¤$2‚ø¼–©L¤!Šz ñ§íO(.?3ÛÐs@–-µHAËEÂV:¹ö«§â‰™€„?G4?H§IC€šXÏ |™nóÄl©Åc¹M÷1ês›*5듳Å|:n¼ûCÇC!&£ÿ)w"œ’üÏÇKáwzªDít# QŽÀrCÀ*5U– •á %zELî Ê‹rÂð«lͲA™§Ï¾¡<‹šg‹™Üû$Æ´ä`=Ï—hAËçšjq ÍDÓ½ÐvÏRb*#ªê*Ù¬\á èN÷Zi?ôœqx–ØÊqÜä[ürµ°èòk°8q8T$•žb9”G÷±Œ ·R#¬“êc>Xôç â&Eº™f:š~,[„r«—#·YŽu$\&12ˆ×ÝÁr þ“ÜÐã¡Ào{8Œù@$?’‹¨\ áf…DCLSW<véVC³ØìÍqèüELPŽ¥R*$8<ÉôjÌsį†§Û–åó¼É;þ%ΩGÂH D*øÌ7dD~(eû_SûÐpÏo?«f-ùe™FqDOb=ŠX XVØ´mî$1ª¾?3Δ(þWvùbê‚4Ê›1¼´pìægAQ7paELwíìN;˜~÷ðÜcÜ 1T»CMdãNB¿ +Çy»öÜó0$¦�ý,,ºc.#ä×óf¨Ug\|‚Ä9´ê2œM¯®¸œD“0'ÀrΚ\£¡Ì4Õ +ˆDð{)Ÿ`póQŽ+Ä øüU# ¤_;�²MfWBÐ=Ùiº1á{.—_@Ÿ„Wu™Fo"£úáˆ7Äâ¡@—(f%–qX6yÄš ÇÛ•õƒ8ê˜{Ô•‰CýÌDô‚,E¢ÈQµ“Ôì9Ð2úÃÈð³YŽª›øœ.³¬G~†Ñ�rnW7ƒÖ{eiáŠ0Ö@$mD¹Dbk»ðËì§ÏËç×v’=¦¯ ‚dÙñ5^O±»ÏIG …ÿôÙ#8í’ZÓ@ݳù£È=¦dc!ðÚßËþ†Qêèk3„&gÔB`—†TÜÍâ4Øú=X»ö¹€°ß ²à¸w'Ø%/T‘Ñí¿æu¯‰#ÅWj_ö÷½$¥ºþŽZìW·Â»–;tôÄ<ªAèN¬„ZÉ ÅÊj4±WùSKšùá›øóþ‚ç°uŠ–a¾N‹A'¹ǺR=+äeh4÷ž~B_Äb®ò…¼²#h?+ÇÍœKâʹ�˜†¡“âÛoK¦¶þ5r¬ÅÖºd¢ +«:“?3›-èíp÷õIQX—q‰ø,ÉýŸÍžó?BVÔ.õpiŠÿ±/nðQ‹Kh <Tÿo&‹õ‘"†@¤²Ñô˜_�qÌp‹Å¸™ EÅ3x‰yÕ|¯{A”ö3+±H‰aŠ $Ep†²óB‘¯”! pc(Ð ¡7òRÐ<ýfªõÁ™—¦?™~™¨'ɾ/zï‹LÁÇ念։¼’‡»oA›v¥3¬…»ÈÚ™¸“j#àH(Û¬ÉA¢gåµî¸M-µWÿ?@ûnþ{ã5ËþµäL¿ß_èfb?i%ÿc tY½‹×.6L‚¤MO1w~<žæåwý +Ñ™Çz3ªé’dv5ý¹Ìú#ì®ÍiÏooò‚§¨û#œôŽW„ÎÃàf >³7ÚêV‚}ñ]’VèÑÂ3à!@P3-EÖ¬-º/tþeÛV„õÜŒj3‘ oüv{š¸v7-ñþ]>é“•aG({ÅƘ£‹&ሎú@5©ÄÿŒ‘ãና^n›L솯܃Bxâ™ ¢rdÊÿºŒ3"|¦ë2.®ˆº†« ô(ý¥m%óR×Çñµ«„š¸øÓ§^Ww—ÀHä€@~Ä|£ZŽƒÇü›%9yŽÔ>^à þn–/~Ꜣ[€(G‡ËÿƒÆ,»ÿ½„®! NK`ÜJAx¯·_¾Dó¸«Þ�"„Ë-8[ÌAmBñs+X[C)òÙ†ñ—:—6hYB‚ú÷°Ëì™kæKÜëñ)¬e|˜ZTèDªˆHÚb‰qàÎb‰âa´j j]å¨Óý8óobÉw²V!ö쯯ÊÐQÏùT˜þC—]šHÌ!>”,): ÚîR€Ì›5Ãæ0=”à4q $ñ‹ôî8^Ë4�)äÇŽR†ÖËoäÖ@LQ‚FŽ3]à=7‹œR� öÞ¸[2@`ëçªCŽ€EØS: Äb=…M™/)Wç˜+@„,îdèV¸7âÕ‰<“ù±èÎ<’ç~(f£é8=Gf `c h/–Ó‰Ý~ú½?M¿ˆ€EÜ|G,ÿ󃇨žV´WnWðz¿Â¦TyÿãˆFËoðì ÁÓWC¤úš>‚oVFýÍ_„눷úÕx0”½eworëG^ ++˜g8‚ÿá°Î@˜r9é?çMÛD@¤»^ïÍ5Dõ™ùwâ¿Ñ|·w¾’!à™’’YG·àsÉ|N„ ÒËèì;¢Ê8ÿ +Vš©%€ FUî!…˜§“T@‹»ÉU¶ }”…¼#v´7ü¼²sƾ¢_ýQ�Ni/ÇùYD\ïùZ¿Š¤Üó"H€6[ýï.hšO >òF*ª:dÝX“Š——§aý£~„Ù>Á"rí§5’˜†°”+¥É…¹G TM*eŠý™½Þ˜°ØöyƒÂ„#Šú"à ©cbå×{ä4—üÍÃëh¶{ý$Jf½ìf˜üT!¨TJSOˆ »tÂgŽBÁ”b¦ˆ¢¶!˜¤¢Ò;di~G¬ð¦Ñ_øÒ!dÑÚã2Îg}â>Xq2Ê5êÇb¥ã¯ A“L–! Áé]¢1Ðoò—zȱ³/Ü�&Ô…iIfôù†•§#yãËq†ÄѽÜ@Ñc¡qP¾xÓÝHò8}ª`WõžŠYÇ{Ùo¤NÂn^´3À›A‚Ö +%ŽLA½‹Î™G‘S1û§õ„µŸ¨}Ô)J@„¯ñpü2éUb ºSÜöIˆ½Ê¬%{É+fù “Ý›‘!Šw[8«® Ÿ•d—ÈÑç‡Ó¸¿"6³P‰ ñ?ÖøGç`ýú�åé¯ê2§È+¬â¾+Ä’Ž€¦‰Ó½*_Î41[” }.Ö©ªÜtcÍþÈc ÌAÖß]þ±îÖ^´¿‘1KD{WOÕ…¢¨#ÔßN¶�&®N›p�åøe¬¾xrXî¢Ö~=¹ýù<-;IY5·sˆH)œ`ÜÞÞ×maQB9áÓ½WÚˆÂ_§# +·eˆÔMÿÏ´LýçsÊ'‡»É¢%»µˆ”v0©`«ürA„ˆo‡;$Æ1â + žPÖxW$hžLW\ÔG±KÒxóÆcášÎøÝ™ëèSµÇÛ5äèžÎb€Ç\Ì÷ü ñ‚<í¢Õ’sÏ”W¥#’¼ðé^Ñ»i±¿9ú–ÝŽÔzCp„¼ÔäOy°^êY–iàFºgG!¬r3Z|ñŸeCo]Ö@è AP_g :èwÀˆÿ’!ŽÆª^@RÐíLèˆOz±(Ó7³ã×pyÍÆ7ACè¬×@ðŸÞlØÇÒ-åA&R|É@ ÅãN+1*×;‰û5fÈ4î‡!hÈî‘ßÜ�üâ›HÊ�.Á9Í…Žï>ÕÖÜ!ÐøàMä~õq”FoCG Ûå©h,~¦åíˆZÏÉù3îá™q äZ¹~TX¤Ï¢R’£h•Ÿ!š ¡qu¨Z’ùÂ, 8ÏÁËür( ;{h¢3úÓ ä ÄzBÛtNôš‘M53zÑc:ÆŒ9ÐlË_¬âv™{—'ÁhHÇ%‰oº‚‘ i þGpkÔé~•Z²3 ƒD4FÏ ;-…§é€}"*ä0^ñè²ÒÄ67LSÐ/3ÓŸ1ÆÁTÈ£_ŒOlõú®“Ü&ök¹ŽêdòÎü=´¦À&y}Œã$ñ‚íh!¤&ÄÊ#™#h:¿ëõ¾âùÓøAF6N6D•vxîQüiJ’¥O=yšÏþƒkðç@™*×13Ã:Ž†˜*WGȆ¹œ!†ûª#õˆ@Ð}@Ãf¦ÒyZÝi,šr4¨ñ^¦‡ÚxûF;”Þ4å¼ç1ÅCG|áîO…_"ý1<É(g‹6<&¡äˆ…käí§‹Ÿ!!½—G´4Ë‹k gqØW¢v7!LŸIvî³ÃòƒhAîÔË©ñpÓÕ”GüáRW¡î3¾Xõ€ôE—\|ЈJA=˜…]ëšÑœè•'¾"tò‹K˜ƒ ·$Ä8õÒ+q틬úÚ2É÷´C83ýE8ø³eV„=§3ZmÎÂhìW°18ÿ¡4à;Âñµ(øp�ym"ÍÊ%-¢šáÔUêæ-ãEMLr.¥°8¯èx6Ä®Æ1´Ÿ&³Æ¹×8¾ 8àOQ±žÓˆ¨àå\>B€8Ðá³å±ÒRS½îÚæ3G Ÿ_’v`¼VæÉŽ|æàÄ=—ýÜi\Šù#`D™&`;à€´Øû8F7 hpχ‡FW½Ç™‚´ýH¿ž‡IĪѦdˆ*W¯Uƒ`ÒÂÓΔ܇NöG8ˆr¯U³t>™7Í@,”›\ÛÉ©î¦u¿sz>¿™añð]ñƒîZsù0Ÿ7׬)\”üjC¼¿14tÒLoÃe¾–jg€àA¼^.3éÂSQCGØߥŽ£v=šÆ©8Äo C!è»’³õ^ûtBÍäêN3ÄLÑGC gÜRá¦y‹æL@„oÚDŸ®agAøõÏ4%\؈vÓ1ù‰ +¶ÏR39ÂNãµßBûi± ?·ì—ø +†6eF0Aåpd׈-…ùÕ!õÕ(díß²W7ðòËLÒðɱßJ/ú;þ¿^ ÐcƒÙ‡»À—E‡Kõ_ë +Mnpºêò,=Žýó˜êÚi‚—W¡ÿäN½#©Äƒƒ&ʵgN„j¿‰™þ<fSg€T.‰dgí§Gäz©S*ðïöÀÁi™!ZÂ0àSÐKìdr~*_FˆÖ°¼!Ü[.S甑Hµ¡Gã "v)b[žM3DF#®‚Ž¬§Îð¹û\®úfÐñ¨ãðÙ6jáT‚+…O¸Ž.Õ]t¨|î‘7D«2±TBˆ¥wÿ —Ñ"» +„@–[ÙeÆiöÐìµ·TM(C˜%õUO;G‹‘3ûÑÀf€0Ð)ÚÈ"b8K“}1¨(z–†½ü»:f@ ¤ñú,#Ûºž.Ív;Ò°C„!eÞ,{{CwÛþŽ^ÐwÌŠÀÀåÔÙs˜™Þ«ñ•qèn"Øâú0PÒ¥'£h„= M¶oh;®Ö1ñ}WÖꃲ¨¢ŸžGÅCÝâü2¿íë ÒÛ^$GF9Õüvèo1Êìî¤÷[Oxæ—!9.! дƒ‘“ÐÃâø9t§ehœÌÎÄ!DÂ&A`ˆïCÐFêr÷C°Ó”÷T«I£oT½N°?OŽ™2h¡½úñ÷Ç¡].·ñä`¿v”wËÿ]s…$õ–Ü9+)`°Šq³eûî)‹JFõc…#^d‚]ÔWò FÕ†ììy¾P³%Bã—a}Ay0Þ¨-V>±å18: ý²sA×”5,å8$;cLº‹®B¦WîB@(öf)GЬ2A®Ä6 +s1çB%›óµC\°Œ-ÎÉ;œ±«¼UKpbA»€gRQB 6¨éÏ{Jc Ÿ©Ë¼âìè +n~ÛײyŸáFö†À¯zÕS‰«¤’!èɨ´ +ÃúZD¤a¼3Ÿ +&Ú¯ò"©‹á#}Ž@ÊiY¨¢wØi^¨÷z½çàS/÷k@yÎöËЮÔo\fpdsÑ:C”?AÕºE—I +ä@GfPïåÜЫ6Í‘ß6™dBôâÌ«ÈW$’÷À´.ç@R—O^é$ˆ:fƒjˆ£®É€ÞRÈ‘wz >eë3ù‹OD5¥»®ˆÁyò•{Nø;úü|öœ‡;¨fú³r±Xäsª˜„^DãðJyWÑê„Þµ?˜.É‚(Ëyÿýñ1?‹”FÞ¬¹ÜyKn„z† ôë”S©PY©Yß+Ò?œ§ +¡‰,×Þ8‘;B¬–ºQJ_lw‘Œ;™?ˆÎÁ4ðË ”è§ó@TT‰9(”WÝ®N‚?m™1-“?æ¤æp]¹hõ.3îŇ»£_´ÿM.PqI X®´À™üGnà“e@¢ŽXÖýDú(¥aÔÄÇ;Ca#H_è¼™fÞëð~cn¦¦7°B•Zã@VÒ˜r€¬¹U«Q?̇ÿT>(1 +.-$¦3Üó F»Õ% ±Þvu°ƒ@êÇc! Q¸m šýv„®“(c1õÛ‘OÝíþæ1³<•‚Êf*;KGÈE¼çìGÉßÏ�ù‹öqê½äGÁ+ »i µ[eÊŽÎúôÏ2„ºcÞXþQ8Äç§eaƒ&ÿ½Ô“)Àž<fd^-AŽ6Oˆ¶îàzP<ÎâxD¢Oˆ/úâòÉ1—~8*øaR¥ÐÉ®Rú)%›ùKè‘b‡HqŠqðq ±à¬>QÚÌÈ9# +šqÎc¸c`<úÔdDÌ£¾ÅMèZä3´†ûˆ@Õ¡öêC÷À½:—@£¥¢¢¼í~˜Ó ñ‘ÍC[y=Þ?Ñ^ý5@åó¬¸ózà\DIOOuG¨²:‚ã.bB0ˆH2½Ø;†‘ ¢‹_†&šN†€¾ˆ ?ºi&Ƴgêj?ÊNȗ᥮4‹îççž4°W•?\ÄO8º¶H™jß×;â÷Ô#ŽhÏýýi¿‚çn”ú¢R35GŸH{©’Ï&9ß ¤ˆÑ§Ii² +çÆe–NoÞ +‡ÁbLt uz[6£gÆÊΤâk=ÉÃ|»v&òË e›jw°“ß®_3…LÎ@ +ÇáÍÖ+kö´i•õäˆÝüs3?±Þ»1»[uÆÉ«‘úä¬öäZº?ÎQëÐ)ÞGØÜ—¥ç‚ŽjEÁú0VEtn‚Øﴉƨ'G=‚3âÌt-F‘ òqÓ:\ �£úæ4\Ik,ȉTžH êÞÏT@©á½ÄV4!¥ èã—!À¢ äQ€Ö|ª‘VqXcÇèéóa†bzDðáú7(ë½~8f²µÊâM3dGüÉnôV·„ŠÐ¬ÁÙô‰"Ûù2³p¿]‰CfÅ ²êpvuìÌ gqGø¯Ý9“(ŒuÝ}ü˜„âôf]Ý,�|"`ÕŽô´–ieäsƒ@SÝœ.ž +›ÓiøÔ&ôǪÖ4ÍÔÈÿ2‘Ñ´l™ú0ãË€%M›ÎÕö™’Êâž!˜tËU|…Àíµºäµ!о;\Äå1=£a'P,â£Ø_…^�7ÅMWµBÑ6#².Àe0r¸„F!@w•ŸºDC* `êlKÄ]ib;'yr‹iáhzËÚ8$¢–[âyrô-|Ù† }Ws!÷y»—Œ)’cüž}ûÔåö³‚Jå{ÝÉþPé0ö—ãxŸÊXQ¬DŠ2*òH~½\YR?¹©’`t¿ûMRµ„É߬¨‘öÿ®ÔX¬åq‘B€Ø¯ +MI<Ñü°cÝôu³ûÀvó±?‘RjŽ2l#=l2𢧷Ö.Coe4Î:“/µ«;ùDC9ˆScD§'…ÜcÐi¦á2¦S÷¹Ó‹Òð¯ÆºóÓÚ„Àß3®WLåÇôÁ2å;ÇÓ9q¢5«ßè/1¬=µ�©§»—¾¿P- žA&bLmÈenbýâ¬-…;¿ +~³ÖëþÈnE©‰?ÚȦ':¼ÉÐm5Lœ‘#-¡{Ÿ<‘’ð‹`ºð]´*Z îf +ª™rS‘@ÏôÅ8ÐaûLå@#e·k1D +ˆÅ©WŸíBйÒjV«‘ûsÜHJk™hÔÄ`>>žY"7Wê î)SÜd‘çáØ.‰ý†d±c Yj4w½Øwã—Ù/Ï´ùÑë}æúÍËÓ4ç|‚Ûò‡;fF¦œ»©ˆåó¥6KçÅÔà¢VôŽ’©rð¹Ðf¸Ž[Ü+íq¢:Å8ÄÌ7!ž÷ƒÿóð}CŸÔ9Â1Yˆÿ‰‰•¨ #„'+ôl@] +/9Ð~‡¡(,ñ(éÍ°™k1êû\ì4Aéßµçbˆ¸VŒ°Hlø±bÓnõšgU¨u•eó(3 m!E&”TRÛº“Ï$§ã1µq(þ ÁdŒN‰›ëé*ãGDq¯«‹©;âOªéæ u·í¨Sr7½Wæ暘o hF¤ƒaþËÏs‚"K3Ëëf®ß +“ÂâóCk4'å~&äH}{†ø¬Ož^b'½åòQ1óûå¥m›·5Åûe +Œ¼ëÔ…ÍǤm`ùìçX§›%¹‰8y˯•{Ý÷â…;°J6kN]¦…r¸B,ܬØÐü7Su•ª‚nš°÷÷(D…â$Ó×ÆxNúEVmLy¹x÷•!ð»RÏ]�èñ‡9ÃÔì¢)áÓ²æQB‡®é½£ +QB~Igî í‘õ#ÎætÒåÊ–ãxÓâ ¯6(ºF|æ’+y¬‹µÄF›pšÆ¶ôn6[f“ñsVh/ÃSê} 8–YFÎ~δCu‘»Õ%„…N¤òÉq{nþ!R³È>á¼î—‰æˆxüÕÚÏ>k'6€™Æ½¡ c–WqºÛ f~¨ ¼Z<àUÏ…Üh ŽP§MFÚTî8÷¬7rÝ ÁWÝšó-.3ÃpÄþ®ÿ^ȈòQ'~þœÅ·ÉyïU'Â2õç1®t…ö4óO3DËT˜.³çÄFnØûŒŽ@6GaTŠQòÞ¶óc5k˜>NOÂÜbçõµîw^I¯ðRôl.I|‹ƒNÉ3w)ï±×+Ä5*ø±Œ›fFb]�cŶˆDI‡ÿ’=œdàÈ´šP©n†“Xœ¢sd]…¡H,I´!–Cä"ú¥3ùŸ½hœÄ*¾g{¾×1äŠL¢,sèfÅ£–4]FŽR‘²¡¦Úpñ]^¡#îúÍ|STßádLÑXüÌߥÚRÃ6ÔSÞ‘¹5‹íËü¼siÑŶ‡ª'5'!è“%¸|ò®Æïß#~ö¯žò>Ís³•�æÁ-ëPô.#ÅŠÞlŽ#ÑXìn/ûûþìÕè¦ûXÞgRÅÅ3Qëå>zöô0ØïýÎÏáù>§-’u 9cCüIü7íbÑ¢…øšž\^£ÓLöü8æ(1[ôž‘™@ãmzÞ“ÂQVC!ˆº¯!—yk;h ½Ç@t+µŸŸM! +ºß‚LŒË-¼LAåãÕ\AÒã7 ³“ ’-¹×äj¥¤ïo�^,j¯Ø›&ª8ïL.ÖǤš§jÐå¾ugüé#†ÚÛ\|Ò8í—³È.½fæäŸ4ï{sy1“_áGg‚/%¾A žAªË£Gúèfnæ>úd+ˆ»¡Øù¶+Å=ÉvénŽRuœ‘^ ÙwóZç¿5Š¼²¬ã[m@ËrðgÅç¶ÐqýjYü×ÿOÐï›®Mü½¤c…€Æ0×,ÕöSþÓ~€8ì¢vŠÝºg=™I–ý—@Ô?‰”â„Ž.©)e‚`øâ²BÓ%NØœþ &ø…ÿÇúÔI¢³vU˔˩š[iM˜.R¶oe¿—6_ʬ4A†T侺ֿŒÜ9]ê¶Ú|8{êÓ^yµF[Q9&m̾;V87Ý܈(óÀêÁ‰7ExíÁ!5lCGáQ¢§¡›¡kïãS€¦9NZÛ¬_¦§À—h¿&“Þð}ÊÓŠŽÐ®@Å@«d:ÅA#$‡_f©Žh‰w.åKˆE%[ìÁ™’^‰öÿ4ÞlÿqЊ*/çƒjºqö5Qã˜ëuÛ¸‘?j!®aÆ.D +ùøƒÁ!‚výæäϦèýe^Ð@/Æ›/gy7äâJðÖD Îß|,¸³q(0�½W²Ðr�9µðt4Ĥyý1K߸™ÛíÇ0‹D¸UfâV 'ŒðRƒ–Õ Ü¦:ùÒÓ‹†ÀYâD†h÷ædˆö¼çÁ4ï{ræƒ&¢8ôþè2wJÂaŠð 0D +ñ?"SGá¹æüKt¼ˆøÃèýË/Ñu&Š'B°÷yhÊ/<Dõ\,+ûSï ÐKFNýµž]ÅÏ_üVtõ<é<Åö@„†ð—ÃLé’ZÆ@C®µUãP°¬QõAŽ£‡lIuØûFhö³®œ³",÷¦Q‘ÆAK&Áq‘‚á¸<ƒ AÄâ‡E!P°ôÍ/]Ü5$Ç¡R§P)(´žÙeºkJ^kŽ7ÕÕ)š+iFŽ¨ÎRÎ\ ÷yŽV‹(4ºäê„°â„ç‚ñyû[™B A`ºt3}†šcÔ/Þš ûʨÏt‚&ßû£ú4æ'Ä‹žˆv?‰ýÆ@tgla Ä2—Ieñ¸¾m?Ø:�s—ªÆ°ö»F{ŒƒMš‚.5ò«°pæðËXFÖ#kû»¸¢ì[þ÷¬oiX¶6ËKÎAØ-_Ÿ¡‰´—×åƒÐ×ýŠ«°{˜¢¦J½TV0ãH•Ã4·Âb©Ä½DX¼áˆ}~2m˜ph€ì¾åL!3”ì]CÐO€ÙZ;gg¨!80f«&ÁyÞHÀº’#Zs³é˜H|prØÌQ¨†[‘íÕ\âœP¬û]—Ù+y5œ˜mˆˆ7û‘z°ì=šƒl¥IÝ}9Ò0+t<A̽ƒ ·Eçp‰×W%qC°^ïU&’ÃÚØg!”?S©ŸšNë4}qÄÈ… ƒéK¶…}f#–Ñ_žzv†ýú€yC@%Uú¸úq®q¸{d³¸#R XÔ>]Ó9JϘ¾Û«Øj/—ˆüF±ÁþN¡Çœ†]ñd-Én5—œØ؇ŒƒÐ1…¥ƒhDæÅ9:B¸˜Š›ƒXý Ú‡Q-5ÐåÉ~s2ke ÖƒªH./u`ï6U²ê1Î;<Åîª+‘+kœ}ÜzLõ/VÀ5H/“Iÿ„è¡Õ×`»sÝЈÝ? +‡“¹ŸÖ7R¨û¾®EmœZ-ÕG+¿†ŒSÖãå$;ÂÅ8)ù〰ˆÓ²F¦•!xñp¤VÄ€ëégG¨ª{ÚžÍ4¸ ÂßÃé:8Öúµ(+ìuÕÉþ†XïQ®1ÄGO‰ËŸÆ8{KÀÌIÇ6Í”Ó7Äx$Lã ÈûÂû ?W¸zèl_®¢ø8y”ñÄÍÀe¶2»=î)û`tçוv4*’yšÞæÙ¨[™å3P¡É¯šÃ«®ÂÑF�Šl25©Qœý>%$!íák1Xê®o€jVóý2ê… xa¼°ŸÆB@G¢Â÷Šó„% +ÚëhÃÂV¼æ¤q‚ók”+C°69ë9⨛:gÀ¨S;Â)6ÏÊÀŠÎµ¹èƒ.ïÂøŽè2PÔ±o¥§òô7ÄîŠíFé'Â&µª¤6K£4jŠ«öê2Å$`¥jê‚æÈé�zæ‹Š&@èŒîüzÆç!ÖcÚ÷.k´2¿/y}g=&ñ¶¯êüGLòhê«6DöÎåÞ]Xš–òˆk¹:Œ‘Ĉפ[®Ä]ÖØ¥»ãùÊÏ;’Á=÷1dÉý¬˜¹íôúƽ´#˜½Ž[i±ÆEÿå¬,S~ÈòÀNŒoÎ[˜, Èuž%›ÆõöÿÄ÷òÔ¡©ÐE‰Ø + +)}'àƒ Ó’Eh$S%ž :U¦X�f±¹V\!‡³].{.Ã(DMºw Èh¹ qŽ³è??) Tñ:oð‹ÛÅ|;‰† TüðÞñ¾È‘æ¬ë!ÒÏù…Ü+±nXrôs+=]Æ‹KÚS¹J–t‰ÐÈKÀ‚BXuq:2ëÒ}6ñŽ„x*%Ï}x4—Ò˜ü˜À·.y.C³r1DCsʧJã¤+i®þm(ºrŸ“ÿcç a?ª9îFty¢¢“ALì/úc›Ž®h¨…°äZIwÓ²ì†`ÂG-Ÿ=ï…ø½„y‘ß@(o,;,ùHˆzø'®Ë¬rxr† ,§n0! ñj4̸œ/{h‰ZîpÉwÝ Tñko¹¾·Ú<@ÀAP¯^ò #hJÓT²®oËL& A{¿¢y%?X,¿²ºB\ÆغÙ-{h¤]ÿ"D*¢¹‘mÀ ÄM>\ m•=ô é³ÔÓÞ¼• +m!Ê¿JÁ¼•$ŠÚQ³ýUž¤êj¬ö] GÐ÷kDœ%ÍEA€4:æ2ø»ÁãÉmP/5»]ÕªÄÂqÉb] ÇŽ˜R–8…ÊUŸÂ ‚ãÝÃ~ºë 1ÚlCùÆ8C`»ôéù£h, +}îFãNÛ²`Ôê"?ž@@6á´Ü…8õ!bož9hÇžbГ£Å ñ“7æË.¬2èP»{éVf*lúô§f‡"gîÎT?¥Ž<•>²sž¬©˜‘íDŠâ0p^³ƒÈhºˆˆÓA!ç®o»/%� 1y�x¼û@XÌ·½ÁzƒÖÿ›ÉÌŽ¾ò1[4%e;àç'€õÚ“Ò0úRÀÖÇz)KG¡!ØÅ_:½›—±†#¸¬ißä‹œa+VßérE—YXODæ™nPcZw;³%ÂvÜïd¸MŒœ†¢½§£õƒxký¿xûžº³Ê…€ÞNq ‡C>¯åKŽ“àZy^ÑÕPõ×U°ÔˆVQCì¯Ïˆ’Náö›@`îMQOr•'6¨=O´úeªéJ;É(÷L†M„=9”ØßÑ0íÁü¢ió†¡1”ðºJì5.R']CÀˆ’Œ|ÝÅz§s tFznø€fTƒ4P£Z~A PNuŽ‡Ü^=÷ë0F»E²Uõ<8‹>¢óÏ@¦Žh'7]†þêtDÌ!ò¬®wˆ„gž© ‘Ogň6‰o‚º²Ë@h²ðŸo#"l)ã!+æöX¹Ù›éÜÓ¯©0ÐOœÍ¹ÏŽ@gU@Ž ãâYMCÌ”$Ö͵Œ·ŽÄxLL +ŸÒõÔe¤îç'FĪ¬Â¢Ø³Ñs�ôY¢x駂j ¸¨¼-äk<=¤q8½›B6´²û/Ð"s+ð&ýñ{°HÛiGý~•\‚'~<Ûÿ’hBjç±Í¢sà}3êßãúÑ”m¿G2ˆ öYöÁˆÚÎŒ~ÅP±°£7ÑèMçhM¨#CHM(Äh£aPBó~Òj«˜Yœ”ÐÑŒ”“ +¼Ú’3º„Óæc•]†ì«©¹•@X;µìš*BÉÁcŸ¿ðXœã„ÖU‰@2”¾ƒùexÅsÉòá#å3N}-ÓñBìlGÉ 2P×ñVÛ⇴tùµb Ð'ùâ25¥Â„KD—{÷äL¼è)ËR6/3L¸A•(œtgx`úßW2¶¡çZ PÉäTÓÄfµå{ÕwË•é2aª7òšà˜I| ‘ûj\ƒë¥Êm a½×_¬ÿû"ó™júm=¶éBÐ10?»Œ#ê{Ô†¼ÁsLŽº´÷Ç*i}¥« Åø8åÒþŽFÞ$ðÅGš!ÈÉê+†Ù«·\cõßO~%¿Ê°N¾|!`úÄÜóF2Äݧ\ä8d¹¿mþYñíßî—¡}e†8¾#Ð(òÐØ©jª{ý¨tš…êùA{Ç{ÓÑ@œ0ö£‹ª‹Bm¢+ÚC(ŒÉÔâ8ÃGwÈ”†0/—#›c ŠÉ<æ2ýÑeâÙ’GýÆ@ãõÕ¨ÆÐ`7ñŽX¨Å,¡Ïƒ©ÇÒà?Ž¨aæ¶è‘Eÿ!…”ñu+4î©a³%’³Ú+UÈPð2ÕjŒƒ<I‚Z�U ¯4ýÁÙtÄä5rñˆU1haš©%í�öƒÌÉ7T¾ˆ…ìÜá¤êRãÒî¢5ç8TùFH¦H³êyEâ;_Ù~=¸›ÛaÝщëFƒ–ç=R9Ž¹IÈíÂ0ô†ö;ëž�_·HXÀ¥ÔjÍèå*À5˜UG—4b®gZÒ0tF›†®B=:úû QZJV;bI{=fÎgÅçeŽChliȘP¸GHÛÞ/So•?CŒO +¯#BM7vg“þ”yyŒÃ’<B«Ì SH¯«óŸ‘µÁñ¥½>š 4–ïšL˜S;ãéh(½«óK=áÆ +7'þª5Wð1³ÝXãÀ±¸Ã¨sG(Úå8^Àš ™°÷ŠQúòf÷'F AQý=ÚÂtx„r¾Ò!C/r7¼†Táu§ËV£â;¶#fÈ}h"¡ÆV]ÁöÄ»»bšÛ3Ñ�d^\+5ÆHf¼„„¸¥Î 11=¸iÔ¨ç,7˜�Dc9¶Þt»;´jïuZâ4ˆ¡å¯ AíiZ‰žüBÒéöëÉqÚÕY3@(ü"t™¤iéõ n&b!º„¶cIY)rÖƒýXŽ±“f|Îþù¼§Eħ5ý+’|.BÜoC úâú)1Pè.¿½Vôh¼¯^x‘xΰV(<ÃѼô<B8<Þ= 2vÍè×lבjÏ_ùx|E?jSgå ¯¨O¬\m‡÷É@·¬o9P9}í/´8-Þ/S(›dF¸™|ie—27DTÆÞDÌ.½¹3„øõ¼‘"EûÙ†Xõ‹œÛür͆º´WöilG|) B ¾Wç@{ÎùJªO¾’…ý¼F—¹öA”cF+Ä3WK•C‚-ë1P}TP×ÇV1]šnçì—7ÃÊÅr^œñè\1®œ’Kœ +–Ëö3šÑvê Îõ+X¶íqž³Ým]¢yŽ iýM"ˆ…Á]·^‰h¯4oT= „&=‹Ì³Ž~,•Ç„`§='ð0 ÎW3¥Eõ=žHí¾SM8"íygè*Ék‹«XsÇ>ªý úvZôÖbà¦dÊ^gœÛÁ@+œuu™c@¯ËÚM9€“©Tô‹÷"õ‘Zðú¡Æ6S9ôݸJW§Ž1¨wð‘ãÚS†xöˆ7*”ëÌz”]PeÿŽÖ½á—™T£SÝk¥§š#nËdïríhûKú< õØiº.›Î/Ät%u鈽;¤xŽ!*ì>{9Т›,ÌQ´gº7êQ/_Ü„ÓÕàì|œmA@ƒôè(Ç¡NÍ rUkÂ=G©2!¨sÛéº +!K¸Hט^UsöçæÚ[²bRÑ”¿¿ƒ«…µ!Ðb¾¶ˆ=†™,E¸@Lÿ…ËCM ¹tÐ t±8M}Î~M)"ôRÕ\lˆ»Ú+Dœs ò®ÓÑb 2Ÿ0ñqÄ‘Ôs�„�9$¹à´kžqÈ@ê/6ІW¿âsyˆÌ‘T¨æ{SFëJˆ×,æŸ\q¡çÇ *B2Ì D¥c½20Ätaëœþ¦4:ìÑ9¢îo!¥ïC®Cý=“®þ0 $7$§¿Ž%† çú¶§NÉ~ìÅVnì ýjÇÑqÆ™—ù°È³™XŽ_„æå>,³Ì¢K¯°™vYÍà“1ÑVbÉqÒK26zâ®ìì3ÄxÓµÒ�T¤±*€ÄDbï]¹^MŽÓ)b÷“<E·³'±fÆBxŽ8b¬«ÞL(Š¶øEg ™¢ŒZÇ<D‡zZãZŸÊÑóQ<‡X]ŠíÆ@x:øµ<óöÓ{¦è˜¦†HÑÍþ};]ž†À•f#/Ât<'§Ðnθ#¾´Sâ}ížß˜rDÅÑU(í6NÜÈ0¶½Jkh:Síy"¸Ç£´«Þˆ vt©ŒZð‘Î +FÝíóúyEHu;;8n—\ÙÛ}ˆ¤†ßzJ¨-[ Š^á’ëJ>Y#·Ã¤-ù‚èÀ®_r`�áw!_/G|Öê÷ÄÞìÓ4¥ÄOû%ÆAÅzYï‡j´Ÿé³ŸûÕêq‘p™Š‡ÂfjG¬0ÄÐ/¦Óû“^BŒ#+…Œ`÷ÙšòP–X)55.éJt)'¥t¥HG¼Ú´s Î$AsU3’Cž~£w[Óž$ŠåÝñh¡¢'¡õdm.§(.0ÝG&žc�5•Ä>Õàu÷<uIP뉰k¸uÄ8?LŒ%D¯Q`ÈJœ!\g1ûûÐÙgdº¹yƒ–3ks”©Y«£·n䆨Å|âÎC¡ybÊ$˧…ÉØl!jUæ™õVí0qŒµðk>í³«*Ó5Ÿzøb —Mtó?C„øê9²rBîH¡€ý¬Zî—áv% .Ä é¾¢PeÍþÉÆj‹PV„³9Ð +ç=˜#µòÅef»ƒ=Øb—3ðù~4Qß[>|)‹-ân:ªˆ8U=s[O¢ˆVEф„r(85Ñ\s ¨öwÈiùÉ0.óFÚ?¢xçÜW!öÖQ¬]<ž +n>£3ÌŽáRnȸ\á±|:E퇓ÿ'Ž#f> ³/º_³ŸEc ysç ƒN>y=bÒ»Û‘!0'®#ŽO×ö=(Ø8gèŒsôçZ,3#i–ìµõº¡Ð„“É*ýäýþÌw"g¶K<çÉz½fv8âvQ3ZV¢ñ;b†´WD‰ã¹w¡àwÇêé2sÅ?Ì߆À+OËÓÅ~l&.›)*ú‡™ÛÑD,Ð>ƒvjV³éA'LÙÍ/Ö±Žš˜ý%QªF(,Ox¸¸8ïIˆñ[á†þV<‘ý«Ü“›¦Ä[ÆŒU¤²Yµ€‰\ƒ_Ãw+wk½h +œˆŸ¦� /EVõôp�Ó‰Ú/Ã-K& &œ—}7ÄTã©bàŽW,b9ñ·’óí/¦œ¨U¯Ù¡#¢QÉ$š°DóÒ½ÒwæٙܫЃԺãàO¶ì¼ ËŒ#9g€9ë½É“ø9ê0ÏYª÷Æ‘›Hö£ÅL@GX5l¢tSn›ú9ÅbÏ–åS +ôûqðÝ¿g˜æÊ'KtšŽºŠg£ÎƒEwúb©!ŽÞ^„!öa(Z"c îf=ÿÄ@R°3ÒAþ œ©M¨‘"Ž xÍ GD=ïh¸Ð[„a˜}‡t.Cä"ƨ+—,Cp™Ùn‚þ\ÛÎ’K[ÊZIÂ4Ž’ž#~(Äí."k–¯+–gÊá뻼.ÃñÁÎYªxQŸÿ9Tí¨x!¹(~+ÁÒ¥æn€à$Œóäöó()¶d \ŸÆ/z¨¹ÆÃß½utÕ1`Û÷ÑŠŸ ¢§û´[†~PI>.¹—5ƒk lø'gK•K.žúeým ’ÔΑÖevŒì"Þq™Ìk¶ä*q}wÖh“|\ˆI{>…®½Þ~–wéß«<7’N£H¬?©>£wÄiQ’ ¤„ +¿ÖÅ¥ü¨.³P?}suùU(¡,h Þ/ìv«ÝÄ@{)pŒ»ÙáŸÐt•ýɧ”°i!šÔä¦j“C†àû6–ȉae;2y‚ãý¸^"€=êÕyk�øŒÇ)ÄklŒÃ눨žWÐñ×ä¦Ò$]¦ç>.,kyw9B 9o9œ Àc ĥ߳êK%9÷Ö¯‚°›S„â*ùP¤cõƒ¾r$:ÐýšcÉù=T€~2PØébÄÑCWAÆ!äô A „1¨Rþhþ¸|µÖäqcc˜GUƒŒyŒÑ]‘XÅZJÆâëV!ês—Œíëî?9lcVï?¹º:b?ÕÂÀ†ØŸ¤öGDóClÍ(¹JÇ4÷U2 X‰5ƒðt´¯Š#Ù3¬&rÜO0…™… $›w/Ëè-\LŸ�-)h"Ñ@ht›¥}\†óéMM9·½rö6S�„4r“¢?8„ÉøE?ˆôí+U+½»Pµ3†ÀwŽ�ùÁç÷ìðGg¿›y$" 4 ¶y‚!¨è¾÷¢Æ-¶ +äàO¬;PF +ŠédÅ¢gTk€=wšL“4¹A]vHaØýÈFZ§ç$.¸ m 3m^³&1‚Ê‘¯éhø©aÄcV™Ã¦|òiÃ:wö â:šÍà™ýë CYý?±”'³ÒÈ«PîsÓŽ~Øã¯ëžž÷ƒµÉ‚¨ðÆÛù"8rÄ÷˼àõ„¼íRÛ5úO1õˆˆ¢÷’X˜¥ÃN«DK+6A\‹G ìzeܬÐ"ï¡gXöxF£= š'®xèÐ6%êç±h @ÿU]âìÑäŸq¨Œ\åÓÉIÕ]¾–.cEÏ/‰T“9/‰A¸á{}LÑl¤*n>7Šö¥‡;Æë"Qär]lÔqäÕ‰j’ºxì#Ø«OÔŽà/ÅqðC¬æ�j¼¡¼×ñëm8…R§3D±ÅàðBbÉ=îWª;ŽAÕWN9öwäÞ¯vœY”[‹’øïfÆ¢KÕ\)í=ÃÀw©W¡TT³LÊwÁa‰8}@ÈK6#®ÑiÉnw3ôWû‡@gVÓé#¥gK¶&=mh]Ìeñrbß>¯9Pj†@JP'Š’wÁ5däÂ3¿+~wdçðn0§ü +4•US¿¸´¹¾“,øõý6œÑ1™&3-¾3ØÔIà 30µ ý¢†eéµôOD8•â"$ÇãÑánâ=íg2P‹Ò1ôOA˜Ó‹æ‰Ô‹)»™Rµ=G¬'XÇBÌ?{·Ñ:ò�çùs@xG3Ã|‚&ºwFìEõ†h5ZWz„ô¥ãJÛS®ÐkÜ_º½eë ]Ú…B4È¥NûrÄêÑYï�hÓÒ0Šq”ʬñùšÔ®†áT3Í{OS¯„‹ÝO|7¯–þ†FΙ™3N»…Ø�½´AÔcé¡Ç‚ªäp…ɇ߫W…®¸tØ"ñ\óß>Ò¹:ÐjÜ!ÏÇøÑTðÆŠkw0’€íµçšý²$d¢êªž:bþg&Ì’=oŸ`ˆ\Qß{å'´WÃ=Ï£[¾‡f @+Âò7 ´L^ÿœUyø¼\,sÈ<á®a€aÎ6äæíÌD Ò^Ƴ‡úŒ#ð<ê¢Ò€`Cwµ^EȉðrÄ@ó)a¨Eb%µÃØ¿gXt¸àI>äIcá†bèî,o\£‘FméÙf Sw;üeÓÊQÛ›RR_ßÇj%ÙñÞ²Ì h; ü³êùAoÉʳ@{Í Gh× âê$þºAŽÕò…yÜ¥t¸@E;‘úúÎ–ï ±#‚¹7Z¼Ë¿³ID³ÌðÎÓ¿ži\öV½7¬HX_º² È7¥°7¤_w™ŠöMÝç‚~–Ï5½/!©o KW×®˜%KÄrBÏ�œöŽê�è®Ï[‹ìØ™h"¯ýe}~Òah?Ž2XþOˆfy¯ÜC–Q3×ݯ¼AZ¥#â£//$ûÔ±L°.»5ÿ?¡eaâ+x§Ø9àâdí1‰/oh¿›i”L=¹èŨp¿ŸlÊ#Ê÷I>é‚Äù ”t}Ež]; XIŸuTgú9#v#tý"Ò¿Òß^ãšoØ1bk,Á‘bk5i×HPM´Ö]ï&«ß%¤ø4³€ºè»¡Á¨ÿ2“Ø#=¬Ëì×vt-Z6––$Ή@Ö]ÍZ˜ Ï°õž µzŠ²Â»Æ¹báÙ攕èÀøA”(ôw*·ë Åeƒô©²·fÂUéJlïW¾B½_ŽTÆÍ×}pRF©ÐwHKnpkb |ÚL4XãP1ŠmL\jé%Ì«jüH $\ûsóÐ-sîª×8$®î:|Ûöe¨Ki"ð\úÕÚËyªˆÈàˆ"<ñ~êJÞv„9Ýo@ó¦“ju™ï˜‹à%P ´ÔL‘HRQú‚†XÊ¡pîÏ;ºsY{kv2n\¾:²¸ÿÖy$[¤<rüj¿!ã¬ÛÙ@ÓéQ3¦áÖrªùa¼ó,[p„ø\ü!¿ ´_-O95úy}AÌtÙ‡ë23_BTÚ7ŸLwšÖºE,'ô¹>ND;D¹‰óô¯í5v5µbâÓjøc×›~¶X»|늰(—V_`¢±YÞxwè2dNÛ Ö(”—EU7ˆŸ†BB‡ÎŸ1çÞ‰‚-òotDù¥s-š}ZB|ø¢£ü:~ŸçÑQ¹4ëÇœØβ(¹µÒ»)‡A!&J`-3„x¥ÑÄÉÊžšÝ$œ¢ûݱÐ%Æ ¢žÆGìï½\|ˆEx]«Éœä:{ë�Æk(OìEÒÄšËä‹-zp¡äáÇò‘=^›ºÆYîLñô"Z=À�æÓ zñÏø÷/Þ Q³«5ÇH}×'Ÿ‘ó_õ†HV®+Õ…Rb¬BÿèGäcß:§«Qž6Ìc$î·ÿ…T%]`î5‚‡MHí{/ˆ×Ó¼%¾3üOO3ˆï4xÅ@õÛ/0›¸Uʪ¹í{S«•P�:öË#[e0ú|zÒpAŒ)gœl#‰q–ì'Eœ\ˆUØ(fèËs²o2uAмüÀ¯EÝõ(¸E¶.ƒÆ]B@àØe=PzEí˜c²½‰öžWD¡a¹p–c(}Xh¯©}é +ðgL-Ž "aJ±?ºQîÈ9ç× cèQ¼Þ2·@Õb‰;ãD•ÈùûéÏÖßÑâË* ˆz9Ì^†NO( D¾Ó*Ëýñq,E®?å�WE;¯¯Lâ(ê{¹®SïŽÛ]:P¶õÐ ¶ö·÷œÔØÖz³t‘œ2ÝÈ ù‘GÈñlw,á—p+ ZT!Ö¬e¹>§*ÐËÝôX‚J×S‚^ùÖ“3ÏGñ¡ƒ`Ù¿$Éô‹p¢™©ê¹ÀÛ½ûÙÇÊqyñ®™'ê-1[°$r*¢>TÈïGgrdò6pÄhÒqÕ½^g ŽNÆhÏ õgûeåh¥1«${õŠˆá•¯wÄ><R ÌÖÞ wš;oÚ^i¤Q�”Ìð°çí—]ø B=½]uÍä” +´·YËÉÚLÀRg–7ÉÄòèUÓͺ>fL÷ cTãÐ>ítÚbÉæ¸Å>80‘:'ìé½ ‹÷5ñš%@“üMÓ³ïÔo¬Å°Ÿq ¹$•\(wÑev,}Že B;Â1¤)\¼VaÁ¹rLŒúÕsCŸªiè*,Í#²ß Èu÷”$Þˆ½ س˦_mJ’ˆ†ú†…<„ŠžË^Z[„Ž•„®ŸLüëõ>MmʆßÛîqØGªƒ‚ég?qÄK:þÚ)È G<Qn¦"ÜLd ýȤm{ËIP˜Ë]= ö$ðwjKÔ†ÇÚq¦\‰¥x¼Sæ†*äRg«)¢£<•2½h½mÞûå4å¯[ñ²§º ôÌe½èˆËįÔéDÓîê3Qä·tæ$Ï/Óˆ`¾'ÝA^ª$"ºíâ'G§A×½È陀ˆ2õÿÆG„B‰s 5Ð^Ò‚-¹±’†AþÞC—v‰ŸÌ~eä›Þ{A‘•Þ4eN/ÄþPƒ%,DåqŽx*dG˜Î0ªÏ@+ÄMT‰1Ö_F}‹¥éï#:ô‹ ô”Qÿøù^MÜ€B¯hÿ/PÏ_M¨>ïøÁ†é™Èm¥oˆoFe$š’*×ó§áxïI›Ä]#Ñs� ˆÂGÕ¢°cóã�nü³êq¨4ЗºXÑÛe„1NWóµ!`Tpe=ÙŽdªGleÌÒŸuV…4ŸÓ>^IþgQbWEè‰ó!pd{¯]õ¥+3rÔ1 +ÍÊ~ºîRìÒS¡o΄îâ*lB“Ó§þþ½û‰À¤Q¹\"ñÇ딿c'SÜ0ů°OŠêÔ³V/ôãy‡à§´z>ה˯EgƒølJx¡€¨ï!,b†é˜�ô÷…�€«§9Çù¼ûÛ+D2zbÁ‘!õ[@°\_“Öïx®EçE¹ŠÈ’!làµ.(eÅPëQ+¢óЋ”Ø[‘¿')[9^Ô’kHâ‚™G{ÒeÈ:$~ÏŽvŠ·/‘lzM‚‰s–$rœT•PY¡J®ËtŸÅGl™ ½ñéø²#øëºYìGðs8A6ô]ùqäÝ\Š`†øž´;‚]"jHb¾ã½7–íbåœ\Üö +SQ*tÄÆ «/_;]¥~óhê‚(Ç•ÜY6 +Dª—aT¹¯†^a¦ó«½R¢£|'¼j~LÊÇ”]Æå<¶úªPO]¾NŽÐ`œû +çŸòfíc’ô$ñŸû}úûÂ4æ^¹ëGžý8õyUóšTŠ—Hª�í¨-;B)ÌXUÊsi—å8{ñ<Í߀rEÔ“c‡>vP i)¬£³¼ÑÑ¢ÖÃó¥¶mA@…7ºF|¨—rEÕÂM}`Íš‡¢¯t¬}P9«N»Å Aüò¯'*–ŸÚ8ÀQƬ9V�\B?Ÿ¥Äî9®9½çZ€¢èÚ€TN?°ô[û—Ö;BTlºLxðŒƒ[kr +�µëºŒipžµ nÃ(!$á”Pn‹èæ@QÁ¨ñ‹<ŽëRéƒe)Ó\`Ò¬f–9šÔ#;µì€‹„]¹´ÙpÕP¢²:{^ë2mèy€¨aL£[Á¨÷/bCC™Ø✙`6¦o¸A©h¨ËŒ8êMS_GP«›äǃÆë+#›fe )´’-zÏÄ 5Õ�|?^CxÌ«íZ‘E+‚½ï¹V7ØGùPy =•}Üøî³Éì6¤éã#ÝKÝÕ“‚b©Y/®3©€ëlClþyI^W9Nn°>8Öà_g¦˜„œïÀ9™žÊµ€*ô +ü2{U’†n ˆÕúá´`®³O±`ÞýÈÏ@µ^µ-@ýŒ—«û]ÙУûí¼,cIé##Ý÷]!WYÈÊ¢–ª ¢°/†=ª#¨·|O&}‹¼ù4Î<˜q¼;•æbœýCg=®‚Nõ>†Ï¼JQ¢8ïäîO¿Õ£ãç È"Ùûfo G|»›Æ.I"4PuÍS}ã�ÐYtGvÌr„ +@ðÂû®Î8ÔŠ{4LêœRV`e¢Oå,¶®}$DºEÅLþ‡4þ5Lù.WU0°¨¼3ZWÁ$klÁ"míÏÚpË%Y$Dj}´3P¿í +�Õ.ñ&=VçãU�¢ÛGìÅøÍna}µ(ãæ@ª±åžùg÷A¿¨pXÑľGyDÏ–,SMYa/{4í§g ò¹@>˜Å×ìÖ¦ºL•—JìBTO?ñ{ñ£! +íß·G‰I¥Ys0= +WSW9)!°):isë#ÔCÙÏé²ç@$&6: 6@é9"Nkú‘¤%æ$m›¡€ê§ó×u/Ï0ˆM)tÇ$©®²?ºãIb¼Ys)“bfOfCOSŠál~ˆíÇbn*|þn:—##¸›xî£ãYtßÄ[>|i “+¼â÷"áûøRÌ,ê‡N<I9ÙƒÂNö%¿·%:)&±&¦+êçÀt:â ”¾Õ<©€††pbßrÜßl{ŽÇ jõ£„ì6ýž¢Èé´ÂŒÂ©!šÊçÚÃ#ƒÊe€ˆuC +¹u|t‡ìÃ(E‡?OÜ ¢øêüpDôx(´E[¢4k”½ÆñWb>²gËeåЮæ+�—©:¹`êwSÆ}‡Ë>œa ¬]A±Ò\ çÖBÂS+åÇymá$Ñ7¨ç†XÚ+Ùˆ>£zE=Ø2Ó%uú›¤qu+•üÆ—RËÆdÞ«[Q³ñ8ó§Z—ÒŸ„ÐͤÍH¼8½ŸÓ‘¯'ÛƒôªÍŽ8ñù5†Ù ´Æ†ºÏ:GG¤u/ÃH«…´¬#öL»¤Z9Eî}1̈DK|†œþ+ºæ:éÒAåÐ +E8¾ËjÅ$Û_O¾Ñ–;~òU{Ó¸¥sAÓr)]s·lÁ‹)DýúÅÑ‹ñô@\©Ï(íz5+ñ𔚷.cüÃèÝqq΄ Š-Æ�Òur-‰qNÊIŸóöžmY4)l ‡Á +¢›Ã82BBć«cŒÀ<ä@h¦T %ër=f ¢ùàȦ½)ÎN¦·†2¬�¯)hctJ«B»¼8QQðB¯.ƒÔ•yþF; +†ØßõÕi†~ÄBŒ`ðSÓý ·cë�"Yzlƒâs5.!ÛÄÈ…‡7t”r:z*„ÌÞ‚¬ßÃÑò½b+ÔA<vÔõ?±+ù)£—üVg{äÛœÓzüù¨"¹/c~©Pò/—I;ü·Üë”í4¤"óN#üî·_ÿ£sºÊ~ÄÌÏ& QDe‹=êï”é úº„zô\ j'Óeh´ÊmøÎA¢t.¡™ÖÖç»–8Èpô˜Ö$ó˜žø3O"\îî)ç€qÒ™ ¨Ü¿c¢`»cœå¸5ô8»BU×r´eÀ°$Ó�ë2µÁ]Õ•õÂÚ;Ÿ´_Ì bï´õt’ Ü.t=ÓËÕ<h¬!@ÏíJ|9‚äg3ókTßSí¢H~ä×eÒ¬‡sbÃJk]ˆéhµG/Ûh_Í ¦1ªy°ûÊÉ¢â€sõIÇ/Kª3î“¥[Íd1Æ^à/ÚŽœ-î%+TÊqJ%!^˜’%ôI‘Vý`}«5äX8pžZ ò§j-I„ K^¦+‰¿¨œÎ|!ð?»òV;> ½È¨•9= WÚjo¦Ìòz0Ø í/óJ[Õ] ëñîãŒp§…•8<ó:ÍžU[©ƒâá±~éõyºùp‚nÑn)DZN½g Ú…”ѳ¥@Ö”š¯ª<eŠ¦(W á|‚… JÝ]°Î‚ðݽ¡`ˆXí°¡‹ì¥ª¦¡�€ï½uç኿ Êâº9ÝŠÇ ¸›X턳ÛãëH•´'î–3ÜÉÑ{‚©³GˆºQçÁÕ ñ ";îùñ¸~·¶ÇâMÛ!Zj¿ +Á¡Í{gÎ@ÝÜÓ“æ‘äÓ®¯Ë ˆgZòšQ(6 Y]”¤éñ‹ÎUG {ÒÍGë”–‹štª¾Y¬ýð”ÑCtd˜("Ñ{4c@pŽÂ¾ø”Q C‹Ú4Â,Ãìq\hús¦îRµ“¦Œàó +AG‚þ¹êR³uÿ‚}œÓän?Úê Ž±ý§tRQx]ºÿŒãRày"f‡)Ý÷%]eÎ˯ćâ?AÓ²ác©,“#èEî·îöò]/m¸ãRR8¾TîŠeÒÍeåiéšb²RÿTS‰Š÷aûZu-VZfF®ËTŽidZ… g|Ù‰™c¼ÿpãì[+Ï8Sœšù_c»µEePÏÅ0SKDKæ„DG'‚ò©½êD†åŠM+±¢Û~™½ã·~ŦJ~S^Yˆ%;ÝJŒ§@üÝ¿vêó€÷3YáwŽjÝjN×Kéé8þíE}ßU¶€^é4ë3P?ŒJ.ç“Ž#šn?VÜNœHªWŽ�1¹QXAWüè7ÁŸüäæÏe¯‹!™¢‹ì«ª@*À—B½K’?ˆ½0Nåbœù#²h¿+eèçÐÁÖ¯:gƒÖqõ#™#ïùã°PXgÆynÙ¹$bµV鈚3~»ÜÆÉŽf. I…\²�hûXÏ84§EŇ\#tVa]&i^úÅæˆaÍ�ñ“ÔþA "³ÉˆÃY=ë6 Ì,+;B¾±n[ÏçÏ䧳ä½b`Bœ/ÜVb :ü¼ãLw¹ œ„w%x›Ëšq:†T¨#(KJØ(úÜ`&²OdýöþwÒmÜ|Ä +±—ŸÏq+{;†”™ÙìÆ=‘ïÏAØëùç©ËH 6ß�ëô~n!f(Úê7Dtt?ŸjÍGׂ–K¸€Q±Bë[Óòc¡k×�‘ì%– Gx44Ï2W‰p[; z)y,ÙèL†Ï3ý‰y÷!‘¶9!-ŸPÇAq ÞκÔUBZ—;sÖ”âu¹ú£Î)œt–äæUzÍTãêsýuQ5º4:ƒËŹJ·Ì Ó¢R¿Ê'ÝÓÏ“£fcIÐå@.Á“¹0NßÑ„ï—A¾Ä‹õúÍœ:¯F ž™… ùžç¤;í¬1¥èFç3îªUÂ#—æ[A @~¶ŽØëšg¬õpéά¤Ú5Jo.Æà˜8Ö**¡'²ýcôé8¢s>Eé֫匳ƒ®£±ˆsü^RDÓŸ¬Xý»BwdÇzIW2º—[¶Z9€^isâ8s§Ø£Ôhù²]ã±Wi{¯Òá°§œ4"Œ R˜<c{¾©æ•½FÔWŒ?¯ÇRÜ®±G‘·ÁÜ~×+“€÷‡„×Æñ/<ãìÝ:“×rµk½¡Û–Ũ>¸Uj B›O³^‰ˆ(Z·ã‘Y|«g dT%'¼ÄKEê_<¼ˆßt‹l‘[†‡sm#3c&-.¤^¿7܆AÌ–ö/Bäç D´ÏÍ3ÈÙ Bwr¨Üâ”»çé0F7õ D:Wh*\sO´z¢ÚuM¤:îê2?¾& •T©ÑMIP%Ýö6´¿Ic +õ3Pÿ\Û.0Û5_ ÒnY…þÙŒ¹§ÿÄOÚ¬¾zQ™;,—8Sá#ß²¤€.¶—¿t•ƒmü”y+{ˆ·¼B jjpg*ì‡ßŽv7 )Wz•#÷GºÊÑîÞˆ—£•Ù è'ï›°îûˆp_ص“Á€qÊ«!ík‰6ý"zu$+„œ +£ÎK³ßód{.d€ýð~Âïï:‰@î!¶žÁ¨à¹2«ÊCøÊu:Q Ÿiõ¤|‰xPÔ@á£é³ÃZ‹’.³ç`ˆb:¢ð|5æ:Ä/Ž.;\r_¾}ÔiD8*«G ˜zhàݶÈÓ H²1Â:£^Š ô„·rçÚáÖ»Š²Î•þÅÞN#¤ÉÅ}G¨„5$ÍÁÃ%Rtªã’˜TË’2ŽøqÊ‘1”ÿ½ßòüt«‡)g˜‹`JôZfã ¥”éX‚ ºgÄ~½>,¾š¯&YšïZâö’ÖGYýîõr‡"RCúµ{A¸ñ“#®¯QƒÒ¯å…~?HPóŠ·ÏèÓh‰jothQ¿]wŸHûv(š4Ê–%7MGP³ïÏŠ°õ:2DË)!£ÆeêJŽBàß#!fÈ+ ñq?ŒæÚ=ÐÎS-•‰¤ ²gÖudêj˜i艋YÚ}[ôfxy"š +ôã=BÆÛkT«ù`V.ƒB@Š»—õ}æ¼nηó¥Î/BI梫v:¶<Š‹ÄdÑc¡ñøiZˆtŽ‹¡³×úÚÎâdæk4º‘³»t26ž½vÄ òµA"kK¦ëK®Q’t¹~MŒòÅEz¼Š¬«Œç‡ðºgä~Eí +]G=)·A¹iØ"y35»v2H~ßÅèÃé‡K* %oâ„@„î±~±÷2jí™^"<Q<è£ë÷?BÜþP à³·"m„üï¡<sM7ˆOîZ«wˆ¬„©½Ä´·Òu´ ;rèhêšô‡Ô~¯*‡9wïH8áî=ÆùÊÈßT’ÊΣªnf×ãî«"M']Í%°¢ä89™âvIfÊ“Bû·³¦sd,N“¾ãÞ€T¯qÒÕa „Yúi»øÏ°ÕeÖÎÚÞÇ1$›Ò²9§¶ýP?œ!MÁ#Z©ä´xÍø«¾¦°¬"µcÐÞ¸ÖWÑcZ?þ]ÝLDŸ˜û9P¤êµ_,Ï©;âó,Kì—øý$Ù+5]™6Áò'ÇŸHÊ9ñ=ï`>œt™ŠC]ËN=ä7ÃÙO$‰.y+`.ò@]×÷3 ;µ+ ;)í©k‘×Ô_ƒ¢y¸K6z9·1Ð,ui8ؽWTW‘‡>CŠÞîÎÓ€ÊùÍ‹&(þH1’Fý\ÅS”âà†è™q´]wi'õ^ + ªvÐ:P{[¯É�Å(ôGþ¬ikAbÒDß‘]q„“iµ|ª|q öžbÒgœ½ŠÝå%]Æ]^‚iýÃÑFÐôä(/·ŽÆy%þŒ£F¬ƒ´Á_ï™»oþjco¡W"7Bz�}ŠyÂ)]‡çÔØ÷¦^¾»ÍÁC“ÉŠ–ënsÔx»“~… wTÚY0L.ä-ãØ£N(4õ¹&¿Ñ[ã¹Ù¹±£ÿgwû;Ë·œí(ãu›øó‚Þg¤ŸÊ|õ™ïß;XøL8‚#‰}Sˆ¨ÚÅi,¹Î=ÔzÙ4ts1P¡Bíõìd~Æ”Œªªe6ûúã$̺ŒÓ3Nv®hÀI¨PÑ[ü JÏéÒG;2©ÉÖ8¢ÝúPÝTÄ«´/Î@Ò¯‹íin‘‚âñGÍÃrp3ˆ¥‚VÈ2}²j±#—Â;rËg šQ/=^Óïe¢NßUt÷éà“Ö½s7ˆ2²Ý0¥ñû©rê¢U9Ò"LÚŒ¹…˜.i;rÉÓ35Ðþ˜¾·ô/´ÉWêC9PyoÅ«Žxäž{‰øbÒqž»ªÃ²KÇ€ X›çTÎG %Ž3Øæî¶iô÷ê¥Ò<_wÏ4g—úIéEtéY.¹Èž'WŽ¡§chBŸR€ùÓ8€—G@±h¸ÜLìðk÷SßÛÒYHìí8;ð]Î<æ�Äøv²ÝÔ~‚o:LP|¬øß;û„ŸkrŒqŽLBѽ̬47>#'ÅC£›éR<±ÏŠM.šãf:ïLi–ž€ˆ€bSn@o:zN4„bÂrú©êG•ö*tÒÒO¯õÇÅ@_’ý‹@¤½X«ËüøOvëÞwR‘èi‡ÈLJ–õˆ}Ì,Ù‰¦wUM£}‡`*Ä‹èÅ!œï=_U‘7®|³ï}g r‡HçÒ AW¹JHŽ «h'¸§Æº¿„¡!y¾žX}Cý€úh˜é2v¬=q•:¤ÏÑ¥çꬷƖîžgœ>é=&&ìØtÝpĈNBÝ.&Mœ"â¼ó§3d–ãs‚!EkሔïÈYY(YÚ.+}¿ãÍõ.¯9G5îj†…veÛ¼§QSiO÷‹RÒþÏCŽP âl©›…ʳ77þ§hÿ:OõiÝàRVÈnØVS—N-øejšÜj*ÎÎ(’çè£sy*jè‰ç»À„`ÅúSJ›PèÝÞ,ã§Æ´zó-º +ªeX©[— ª˜»–"Ý“4Ä%ö6~[«vË<_¿å*ÝB{ÝW/$+]Å+ŵq €VhÈ/ÐTÕ\ 2î^Yg˜ýŒœë©°'A$ðtïß³»e.c +�órÑ9(ZÁ댳'ó¼A{;â‚B÷ÖîŽøx÷Í;ÑF+î~1Øñ8Z=L¢¹ª¯NAD¨?DT<V˜YѺ8¦B@ž¬?%€–lñ`0j™fM¦†H.ýA¶È|˜?I“»ð¼Áç7ûBX2›•â÷”)ž…î™D`ìq#ßûÓÓ…è‹æ¼‡…ï¢Ìƒ܋\²Î[S2&[ä&†gØQ©åfgR©ˆ>óvrÚ‹� +©8pQÊÛû,Ûlé’ð`4±™(T!L"üŒÓ‹[T*‡6a²í§YÐÆvRÓêDæ[âÑ¢ ÞßÉðeg¶“¥aÿ’Dgf±M\†¾þÃ[ØÛù³š‹&qÛw”Ç[ØŸq~Ší_½LñHÛf¦gUsBW<JØqÃÅ~˜Øw/ûOç[¦Œü@ÐsõÅ/³ÿwó#° h—ˆñÊÈ‹cŽ·Æ8èIõKâkQAŽžp!\¯0²èë¼ã¨´4¦¬Ùžé±¤KªÿSàÚ®$"eð[L/ý§½ ²·%Ýߘ*4ÚÝ<EÖ+È9Ê]ßi"AU|¸ÎVÜîw\ ñršj4ÓêrÆ8† öŸŠù½\f_ŒSÇh!VXvÑÔ€gMDÓ槨’.y<_èø:íí9éG‚s}¼Úƒö Ò¤Ò"6¢f¸$R"n»ëŽ¢8Ä2s½-¥˜aT|}žˆ°"hˆo0©ÎăM†šz´éÕqÈ)R}é¡ÿ´'|ó ˜êfqÂ!†™úyñËrzž@¢¿ +§‘"!êOâú²}2¦>þÅëÈ´¬Ï©v¶ü÷°$ þṽ²‘h㇋�8Ï®f€¡=&î$=£Î0¯"šW¡$¸® aùZ!Ðc'`•0¼rÀß|H'›¿œÆ‹@ŸÌKüœÇrŽ¬m®b… +(™ÀåÙê’œo¹r5M\mÌ#åñš+±ˆë÷ÂMÝ#ÌãMEçèÊ\!ÎØ%žI%Lz“½î*°J5k'„»÷zéþ¤¥@°@žÔ÷ÑÖM-ÚïvÏø—Å(jS\À¸-Ã[s cÃè zjºeb -®'‰.'”/=ûÎDaÒ£Ç)º„s ìíÔ<è¨sjhóÌÌí Ÿä¨@pÜî±£î#”î‹ÐŽáGÜÊþtn&,Ä÷·®s˜‚Ãóå©bÈù1Rݸ”‡ûéËóô´TÙ$Fæu÷:å6ݱžc³Ì“ +Z{£‹è&\q¶)!LqÆYõV=[8¢_í;pQ)üĦL±iк“G +$øÞ+¥û36¾†,-¦Ö®p–†wK.LLXtÍT°Ã¨‹øµ¦Ñ÷ÆåÜ�¨{'BLS8>^Í ¢Í+îdb¿#ª¹øc‹@¤»„àˆpy„SG'—zg“aåÂó-ß2µŽ 'pÖl~' Õ¢3Pö énøT]ç'úBÃ_ó ›vì8HÌ¢$¯mW¥\¿eØ,%4À9ÐS‰Ë`<ñ†…,ˆWreñ‰‘‹éÜÃÎßÆRø·JJPîÎxG¡ k{;,±’…¸Õ¬A”€F½“0ׂ+'¸Þ’ã‡ûŸJ-Ј€?Lä3Ç´ÜÑçaç øg$سw£>V²}Üæ¦"B‹âÔwLf)ÏÕ2âÐ Ï@ãÖç4:-"ŽËÔ%-=!æh—G +uùv=º‚¶§7×`’¯×&NÞ9zÏ0ò°y ‚€ENBDS€n…Ý{øñãh8ËþÑ/*®°>£œÍŽ£ðu® ª‡¤~ ?—}+Ê0.3âÀ’O„ùß”TªHÍÇ Ä+y³'– ‹wévÖçGš!�:ãúCæ†ÅÕ´‚vNïàD³}È—Kš½þÎ@C:q¿üWÕe^¹*tÝ/]ÊÏ$å¶sTÐÍVŽJv¦?‹÷b×wQ +>8;+Ñ@ôKd�į…(8·M´i;X‚óßûõ‹Šëix¤hSÎ~Š_´gmb¾ì‚€< cõ¨´À÷½½45_ãØ>©´ O½²Ñ!íK3Ìl‹—ÈQük*შ#ôÍrœ¯¸G_Ñ7ÒH%Œ”.¡ÆåW¿§¥Ip¼!ú½RyľÏP!?ÉÀ<¾‘þèôYã*+ýr€—Ái*F\Güýœ®Ž«—‚î£KtYH%Š… vû¤:¢Ã€~RûŠìÉ¥b¤å5nñ ¡aò35^P{Ý€úÕÂ*°<‡¨£ê²QA2Ë58Ï@¸%éHè ?°)Ê_Äö‹„œ–Û!°À~VÖ2‡}7——9â¡@fês2e‘Õˆ_ŒåÉÞ³mõÓLñ(xüå-Œbaê:DäaJßhÎ'ﶫտèÓPØ>³) +ÄT X¿˜º +êë^|öÇ^uRv÷ñº2¹#†q¹Ä´A@ú^çuØuBD¿ós $=&Ïe”¾á|ah0O›h|͘ÅØi ïd\vÙ� ?Û÷rÍí½îºH€Žo“’Ó¦™ZÞwiÑK5}„Qð¬‰éŒC_}K@d®Áy™¤ÏÂxA¼þ,±/ËCFFn˜†7ÒÔÈ—_I²èƒSOY0/3e.Ö… OéÇáÿSB’û z¨^¿(\E Ó':m}m¥™Ä'Ä·ÿ[ò…ßØ{i´¬ü=LЪôXöâðüD6è(Þ;hÊòyb„¯ŠÚa§qnÆ ù¯ÅL€æçüZ{^>ëiÂ{o".yû¿îuÂçãÑ>þ:”eñDzY#ˆb‡žT�ØuÝLý"tlKg VõHKØ~pt%ch—é¯)+¸<×ẻDHo± +MʹÉ×@· + æ²Íæ|tÒuÓ2ø"RÚah@Æ¥FDBHÜ›M°ë½©3)P¶ÑÄeö³r-N½8 +GžO÷KàÄxR®øôõEä¡N¶!~ÑXÂ}È•8~Ì̤@ªztâEæó¹|v $½Þ¼•ÉF?Í ¸ÙæäD!¦Oö'®AFPØ3:Jt„xÍÃõ*A¥£Ô£…n=þÙîöÐQØ˪·DçËŠ‰(ý ˆ>jþ‰Ëìð"ô¯0u¿eÝFðÔ–Ö~2SÙðkœ`³Óéîÿæ¹Ù?þžŽÑ ¸y@ çÅ«¯%º{Ú (gójÞˆžìG¼x£‰¬@·Ÿf$r ÆͺßN7UIiñþ$ŸEÓ 3D‘�A?W@œ3ÌŸ˜EˆKÄ”wtÍ7ø½·BÙ? ^j„÷ƒ[RŸÖ[&Ârçóxþñ¯%.Óà깊ô¿ FÖ7súcR+}˜}ÁQðËô7„ôŸü€Â3L{óÃvXyã½úT¬y°EŽ%+[š@@®§µù´‚T7¡¾úe„܈¤NôF¤Íþïú7z+¿ŠÐ-Û!Ž&wG8„˜ÿMßçüæ?”²Ý ìèOPœÇü·Ë`OüüÌ–?QwRÿu +_ËÚó~¯-iB½7j«þyÇ—Ö”óÜ¿åßÿõϨÁñï÷HAŸEôàý‚¦9¸ÿëOÅñ¬^‡óB„7á¿üeÕ÷ù‰Uþ†!T¾TIþ6‰JAá÷;ÿQZÐÿu.²Þ„Lë¿]¦Ú¹:eVþ 1¦ØaÿúuŠéèA·3E~?t¬œñ/ËÇ.cýëbaÒï^…ø×QÊ”¥àøw¥KNÿºüZe&îعÿ±ˆtEû)·ým¥†WlG|ÿ¬ùr£uH”Ù,¹ñº^ô¿!>%G{ÿ× +9Ï9åúc#Ä~SÆÿ¶—Æj™ÿºáâlNsròþ¶o£üžžšÿ‚àtò™TÒ5ÐoœQRý.ÝŸ¡J!”éWÇùŸ“ÕN*?;ûªÚÝü%ÿå"+¨d9Êoä[6ÈÀ×0¿1 ²R¼2Û+ÿ1ŽÄ€!È'ÿ°"ç:o_ëŸ „¹]ÍåŸ#c±}g®´ÄÖûØ€Ù0²nï€ÿDét±ÄÉöŸ#ý½ùu©Éåüž +ƘϯÌàßΨº„(è?Ÿ]Ýô?¬½»ÎŸDƒÙüÔ;“Î_^¿É#ÝïI«Ð@H‡Bþà?Žs·È¢ÁN¾Î|¿CòJؾþãá’+䦟™‡ÂßC,§ì1:ã|ó´¬ZhËYf..ƒ»ûÂ6¯„ÓßNÜ”ý§R´×@¿g÷²×zôzÐe‘c•ÅŽÿ¼½ý?Áæü3ƒ@×Ö-¡“f¸}EªôE¤8ÿHg”¿±Ò—Ôçå âre;ý¦V>|_]@2s/Òá ozS· ðôìm�QÃ<úJ=þ‘ú,fæ‘9Ðo6é£}Ãs‘Ÿ™ëÒǽìÜi ?ÒZ¬8OÎeZ+x@þT0]|?iTñ\ ¨!ý&3þ–ï³jµÇ8ãöŽ Ø;ûþÌ)R›!}ËOü-;ù½ËwêÉ_F±P~º×ƒFº…á�~é{^£üæZ?d0|?Ê‹¼3|×$Gcíì‰øÉèn„{=óNc Ä„S&ñqü‘–ß¿b‡.¨à€ú¦¹„\ìø7I÷'ˆ¤<ÂÌêÿÊúoýŽöÊ@Ðu…½´Å‘6õ€6€^`ºL²¯ª’:_§øØZô _)ê_ú0 £ND\ó2Ez&rÀ'�®F`;Sÿ—í¨²X]3…ž°£66Lm)l¹„a|÷ +Áܳ¦ˆ‹à}Ó·Á Ñ'¹+ü0ÀAÐ×`¨'üvtÈ1µî^x1þf£ƒAü§”ìdúå³øh"b‰ŸCg©35… ƒ˜õÅ¿JX\EÈibnºç¿töÝ&ð{7›U4"V„ ‰·W°zóÓP�†]î»YüÄÔïÈ-—ÊR¹Õþè\&´DOÐííب¹!HÔÑBk§ +±$Ëwä¿Ã°êÁ‹ï{$ý6ѹ?Ô}±Âîeô,44$¬½=ša¼X–åÄ–Š»'‚^×'["9É>]m,|�)÷=þ2éÒÛÓ-9ŠÁ&èfÅú±Ÿ?úÑ0ayÃü@ö¢ñßõÐÙZŽùÀþhÔ¯êÿùŸÿý¿:«”Žõßòþ•,Ýa€Yˆ/dFù-à*JàüOŸÈ÷C1�&¥O[»7ãÄ>VpÒÖ_Ñ6=cúþ"Ð}F–KùJH%m5T]êÉuä ”Rû›ýþ:^•¶¾ƒ°î¯GM˱£EàÅ´0Â.—ˆ¼ÖàL±ú£»ä¤‹¡çnìÇï†>‚–¾j†Ø*ŽgV±gë{ˆ“Âd(ónø®:Olq7~ +“웎‡¥÷‘?ª’~4aÜ.Š_T?ïp ¯L!}ðHÅAør½¦¯Ë\|/Gd’=µ1ÐÒ“5Ÿï¯Bsjý¢a±|P°µÙFù‹“‹'1ÙdÚôŸñéú¾•º¿–‡iú6FÔúj€z¨ÛóÝ ’E;ÈœNº3P™ÑZhcF¹é5*CTöm¶¦Ï•L…݈ N1›a S¤äºt|[{Ùk@J&¨Ënå©— +"?´ÏC¸‹HF\ˆ9ïº×½Py·ì³ul9hÍOUB¿™ý6²™WOÏE¶=9÷þ•]kzÙåä~¬ïÃ8 7L¬0á¶î7Cžg'1›ót3^€mE EÙ” †ddƒ âóF®ÄséV�ÍuëÈ-y36†ŸôìCÄiTº™N@lL·˜W°?~ೡöOÀóVš¨†`-·ù)ŸÉP‹ƒ#ö“f©À@ N\÷˜ÉA«d¹ËáúßÁ¤5̽Mñ-R@ýÌ^ú—nWs@Pžq3µ4…öTÜï×5A°.è†6„ôý÷àÀØ£oÀÿNƒ–3ub˜FÓ¸ŒçT›¬èu™‹Òë€ÃâïC]wù9ú-ãàµF¾r% ûä†O¬e™^‹/Úq$AgEki¨¿fɪ’dCÂåC–>wÑà8â"8 +¢FSˆ+«$Dhú}1$×Ù ô–:þç@ÀÆ¡'×¢U�m,Z7‡Ã¹ç~®ÃdTÔà¯að><´z]½ Žø^ˆp‘sÄ=Nk(öóas : _€ +Ç–ÏÕ_ó¦{d6§[ÙÇyïËÑ;,(�và0«½+—–=6®·¢Ê¨CöþòE“<jŽï@¤e Ä\²èØÖÃO “ê÷Ë*hÒ§5™Q¨•ñŠh\Ú”…@rqõz¶4f1fZ~*4š€ÕÄÆý*ßae"ØøUˆhÓ÷1Ì.ÌèÕ9ˆ¿÷ÒáÅ@-™v™½ðè¯æ b€½l7gÒ;�óó>zâøFTkŠq<Çóë &ŠŽß.làP‚ž?‰·¾ftey¥™ ÎÖ)Mˆ·,N‹_†Ãõ´.™@d‡ŸŠ÷ea¾!ˆË _–üVa=WQŠâk7sD¤¸´• béc;ârþ‹ïƒN$ +Sì䈵Ú×·ˆúYʘ½&%±o½Ý-Sz‘ ‚¦Òn ö.·ŸæQ,7ªsÆg,:RF†@œÊ{S_!Ž ¹ð`1ê›1Pù¢·!šçi–ìñè ž·×›m� /rïAƒÄrÝXCïµ<Ä‚@¯"ö]%/Ìn´BÝÔ/ƒ÷‡÷ýév÷ú#E±êˆÚ/ã�GÌ °å@ÈBÔ›5P¥5ᨌCì�EdJGìï)4„„ ’cÝ·9©#ó×Ë0Žµº]»ÿËÞûôì’$×}{üwc€Ìfåߪ¢W´(@‚LA½23-²áa1lÙð·wþ"âDæso9{aÀ”@Îô{º²žª¬ÌȈ缥î b„š|ïPh +aYÏ*k_Éu±ÃîPÜËëWY‡ÑÖ±Vò7N/†`ÑŽN@4¤É9…ïÚvÐZÉGŒ—1«#î¹·œŽO9Úäû-;#GÈï¬å@âŽ^¯@7‡ƒ×ƒbÈWMròœÀÜÜÄGžp;Z3´„ú¶Ñr(»[Ö+²£QD6Ù;Ç…À»7´® A+‰:©|y5ä¹WÑ:J�È¿¦È¥úcí6줆 ñœ�Á2†à³Z¡ŒHa€Ö›Yù5ÇG—Rõˬ_23yìŒJ¢a½˜×¸²OÛ©PDP¿s€^ºdá—™OjC‚ÿLÂËš±¦× +N½ŒèˆŠÅ¶kDåÎSW5@I&Š61RÝ.5¦¥ºý7c>Bi?4{î:JÛÝ*q•º +A\.™ïZW†¸Ó®Ï|>kwzËþEoªòj úš=DŠ7ðœl† õQë>§,„ÄTî@¸Ûò•·RXgÖ¿1gÍÆÉj0š'žñ6@«Ÿ'ñÌÇÐvC”³gÝ7•Ýf‡jCëÉÕw´LàÕ×í=·¯–$jÆ+»5@àG+nøƒCÏe†Ê¼jFÉßC2'âG£ÆÜ›Åà~ô\¼r—Á°æöv_G †ÕF.¨¨ìp¾·•Æ¡é(¼>‚Ál’¸~•V‡¬W€Š7€}=X7kë×þ9åTê5PHÁk{À}¼9s]ã<ÛÛ +{ØÇ×Lm²GmA)í\t"ÂçpÝ!�Moq` @Á¥Ž^ÌÃÁÿNw©7Ti„¨,Ž¥1Ÿâ²#q)ábòßòÁ¡¡riœ5@ñü\Ž‹@”a(ßî¡8¡”P¥ÒZJ-‚„Eņ¸N÷,C`1ý’È%áÁ>â9ùû°Ð5ij%ÁA7uÄĶ»î jÜ뙩M”ŒXp15 L°”®#ÔÚh¥‡ ';òWVo_³ã‰pªx^÷ËÓ ³Ê@‘¨òg¡úô½éšPtز8‚0}ý¢ý÷µãlÎ3.ݲ¥×C8©V5dqî7„ ±v²Ûz:‡#îWåŠhH€·”ˆ*ãu~ëz=œ0”7Õ„¤/»»ã‹#ÜóÉ(‚$ثƃITWwõbW÷¦€Û/cô„ +l†ÀÄ·YG”w…¤ï•Q5’,ˆ¸ç@‚îÌÞa~dß)¹ƒwkž —ÛèŽÈ´®~3T‰µcUÕ4�-¾fƒ˜J6(øef°/rΡé hiq+ãhëp*ƒ‘¬Ñ@‡ +€p( z�O–ôÌK<$ÕȤ”K´@;‚îày'Ðé9ï ‡³wUáÛá™à+¶¨RôVdJ²Õ+âÈE>ýòÛ6ÔAHŒ„±(¤YR[ÝdÚm‘~!…¹ùOw* Ãá/i_†A!È•‡ü"emš†àkh„âj!b½ŸŠ6WžŠ“²áš +$þºùXñŠïpäˆãžÍ„2Ä£Áìö,{2‡Lã2§Ã˜!Æ8Ä Qy··Hb~fì 7àV.Ýh0Ø1»>Þ-L(Rû”´ôŸ¡üsº‹¢¨¬£QÈâw,5]òwÙ.t˜ÂÕ–IÔž.*naˆõáÞons3É´öW(.ý#UJû —ÆkdWÚÝjÆŒª¢ºdˆ¬9ûŸ~>·Î WçR0\4 D¨SL-˜¿ãQ;®c*âlôìÚ¡F.U/úïc¢'‡¡ gR†Zhn2ëßxfhó§q(íe?ñ¼µ9�èÊïæY G'u`PA#ð÷QÒmQË ò£R%wá™LB áöX¡æ8(¡œ¹{tx.³U‹5B”!8÷¸�×Mw‰H°pûîšã ìè5ÝÌ^óˬšÄ2¤g”x~›ÐbüEŸíÐm u®omçò^ÄÖht}ŠßîZ%áµìiBf~…«8Í@´ÒŽ¹rZ˜³#iN“‹5Éjxä4NŧÉeãvM&Å3-† uc- +ch`Ä·”=ž2÷™>~aO’ì#.3‡h0Uˆª@,´HÜÂ_ßGŽÖ€úèWJÞˆ†²^ šEˆž¤Ž ËÑ5”u³IÍÞ¿fiš²8ٲǻ¾A\4éʇƄT;‡3Цw:€šÇy†kþYÖ>ï õÅÓ›mžP PŽtÇÛ¯-ñe:ô«ü¨ ÀÀí +Dh|u$|c‹ˆÍ~g ãïë§Ø¼a>ÄC ¡ ÷ÚÃT–x+6è^ðj‡pâOŸüD%‰`€Ó븘‡T ³ø +éþ•î‡ôÈe’äO¤©a]ý¨@ÎÕå°t9sBc÷àî`æ—p¤o5ÌÄ—Ï«†aëŠVG¿ + +Ã!aÙÕ*%ŽhÙ㌖þ"9Îúu{Çá>·»Îª.:¼£{”Õkm#S¤/œ6zr >9÷{ˆ—hâ»ÃL&í2t<Ia3I:Ïk8ââÕ$ƒÜ½SQˆ¾Î„ᥟs\f½Ôzì¹oœ.œí‚ð.E°m-oSilž†‰ãÂKýÑDú}ÇDÑèký,cžÒ¶%ô(ÖþTØuˆÉH>F⎫„Ø£ª¥A�|)G:ÐXêI24 +’&æ8ë;l!5ªGFNŒ«ð§¡2RÚ·@¬ÅµG(èÐh³[;±ªd3\?4@ø³W;)úejF›Mââ¾o¥cçÂÜ:²îÐÇ.GÄòÇ&JÄ>‡„ØÆ`zŒþ–g‹¹q›ù±J[«+v"Ì8×lìÙ8wi…ÒÚc½\áˆKR5úÉPjãÔ«Ný:Øg+âm¢úe(Û0ö\@P{ŒÊƒ!®ðKñ ÄqÖÑ@H&¥¸·ƒž½hSÀÏ—Ìå ?ã¢ÂÊåÅkxúMj‚` ö« �¾’>r¹ÒkšÚ·!hïÚ¾, &+Åö@ƒ‡³ØïG íú«�q¶[ ˜`DHÅ˃nÓAðD-[»¸˜#4â®0c�¤ÝBÂo¦§#¥ÑE Ä@Ôvük…Üä´>ÿž AñÚ»"°¾‰ 9 JÐ2ǹ§H2ñNYCp6álሠ¯ÅTU ‘íE?6‹-G#ZAc„#A3thâ2ÔhT57À+—“ mÝçQÞ;Æ¡FŠœñ‚*1‰;-›NµA]ìÄ+n£Œó雦ÆîÃü«O§‚ÎÎ옇Ž~}¾CIn-0®'÷¿ªkÎOÎ*H^ã‚öï:9‚×Qž÷[д“g•“_†ü%ªwFSžƒF”Ë,ïˆö웟6Í0õ*—l3ëÏšŠÆüsb*˜ó¡ +ô*°uĀä,³!ÜqAeG¬ÿÚ²–oW‚-žF6PçK*áÑá ô >~‘ä|V€ ƒ8œ6ÍÒVvKEˆ#¡á¶ýƒ´–˜(ò:¢—$/áþñ$èá²DT8�Îñ5ýŒ0ͽx„‡”@‚Ì7Â.VËÄ2©Dmˆ‚—ÿdë'uéÁéÆî4PcÏ2:Uéõ&>a¼GJ´ÝøÚ +æ0í2�GÆt%qDúT8¿ÈÉ~÷ÄÓ¥›vÖ¬=9hØ-FÊ@3ÕÁ¹™Á¦™ºþ€×ÇTdjÌüÅ—`íÖòtYˆíȹv²É²ZCjØ&‚X?H_—݃ÔÅÕ¾ù÷örƒ€m2ÄŽ¡ŸÔóì ÃTÕyGPÓqŽŽ#t"ñíÍ™QŠ{¡Æ™f½‰q9´;îå9F€ÈcwìÛ‡‘6gѱ×ä\ñiub$¼àWö¸|]ºÔ…„aIöFÇ@<³«'S7iXëË£î©@¨Þ¢únÓÒ ýmõ!»JGÛs´p¯v�•aECPF™æô Ç?_é:ä8h +¦Èi€¡¼cÍìÙÚZònÑý3Æb +^b.9‚˜ÜºlcŽ(¯ås® dÝúcž*kö@ F}yÒrO #¢2ïƒ~&”û&ß#•ó l ì(òË~ˆw +QÚøHÁ:"=´b g[S¼ñÈ% 1ÌrAÌ%CäéÑ·GRpAôIÑ )9,ÎT]¬€~™òöž¢xãÃD²%uj/EMcÛð|½À P'‹l>†`CðÓA^+aS»q•ÜW⯎³\ÏJè¤w#öôˆOúžÉ/³c +Ø4¼m¬õÒV(ãµÍ@4>µf¦·ÓØqx›ËcÌkºl!`µÇ¬Mø¶3DÜ,¯Ë%ó±ßål¤õ\ŽwGD©û¤‚š²e´A6¹ÉÅÏ@8O¸¬æÝ—7iøeg†|2ž× q=[’\ˆ<ÀÅ@(]†›y^†B0]õþ‹ê8¤gñ¤Û!*•¦ ¨8b¯×os ’*vôFo²>Êú€+ã2ØŽ¸Òä"=èà§(Ö÷”«Zr A+åŽí˜Šž>ЖéúÉ<ÙÏœ¼…Tã3ίšÒƒ)çWÍX9kSP~ÐL.*cQ³MåM!ð¬˜}úß×£õïhjêÂ[óS’ßKpáî7ŽR_ü^ˆÛd’ ‘øQ¯Kžb»ÉëÁ—1&|uD‰xÅ“ †UÞq7|Aâ™%ˆ‡7q04¦í;½èˆÛHrw�‚«êg6Àñ7›Äç6KÃì‘0 br·þð¶|Á¾ÝןŠÏnjÜ#Øn-P}[7Q Tª|kõƒøÍ[’á}xùôa�¯ø‘ÀÎÿ\]õ@<ꟉQÖÝ®½¦†Š¯ƒ z¬¹ìW¡s½j»w�üV€ ‘ö¨ùc&ôV „;&<Hö:GPŽ(gÎÕJòùS#Kè]:W^cífÕ31Ð0šlàôb§Fðo—Áæ¾’)·Y¬.Þ@ì!?vñõé&ÊöʶAdñàÅe²\ÕÁÒcu3C¬ðèÈs„»FyÐú²×–PâyipZÿšÉÙRð s½ÎÐÃý@ÔBºì~jG¤2³B öHAˆ³7Û‚`c ¶—Š20Œ÷±W¤ ½«<ÇY[ÅÚ³ÿá4G’Æ(èC@Ká–[ñg[u6sÛ|Nž.Õ@Wvºä@ÔÀÌaÂ/ó!-úÁ8‘âúP¼ Ä{G³ttQ[oÙcd **æüé—A$ݵO‹A«þ1ãqÓÜ')¯Ÿ2¾Djãðƒ Òõæz ð©]åæ£çUv1¾h>‡7ôGÑ J‡¸v ÚåæJ¯#8R^õˆ + +3kŠ,²ƒÊys"s]aì¶7ªó2qÝRv^#‚š¦}ȼL +xP¬'p·½Ì™t¥û mUÊ FoÓ0tÍO·‚‰YC¸ g Ø-úq#ÔæÖ¡´ûa!Æö#G9Pè´¼™í3kˆ†“ʹÙxæÜãïpbì…–¼:rE“í ¹ö@˜;Â2“º6"Øéþ“©‚_õ\¶Ñk›ýj º¤7«Ä@%Ê’þƒFâÎý}¬/ƒ2Ã|qnLXÕ0vG¯9NÑell��¸{¯;''R³”ð™ ½ñk¯N¨y™¥D¾!èízÈ“Åv}ÿfjnXh3»a‹æâfˆlòÏ)·Îÿ‡¨ºƒÔ_4üÓÏ@´÷ë|!èhãT綽°#Þ·¯ÈÊà @ƒ<“ÑJ ÐÖ2ÉRzëàÊ^£Â`ˆ>;ªM¶ÁäªÈ<²èP %ü/Ž˜¯„ÊÑX(¾®ŠÔ°=Ï[êÁ ·x¿¢õw—Q·]fÅkJ¦#vW8T¤·?ª!Ö*§&Œ´%P„i#tÖ €˜È|EMuÄPMËkþibJ:_ã`en{b~˜‹ï0ÄöÒÖOÆìªdöUõÃ�3øªzpúÈŽC+ç`ïl~••˜Ìó9âV}Ù7vwýœÛ»7>‚á šÝî8¾qŒaÌ‘·ûFÅx)í:%�(ñ®Ð§a¢Õ»íŸCËÔôpÏ�|øÄn‰Pìm�Êl^xÒ·±«^9Ì8í„ü¡)ûøe¶iŽ +çÙf²ÒØ×ÍA¹d”°tÒóD‘aýh¿Ýu>‰@zßÉÖ\stö"ö°!²]%ÂCzÊÈAkêÈè�t%° �©eq +Àº§ZSõÛÐmß;G™¸^|Ä¿w¸AÜ—@´(ê=A©¢ªJæˆÇ{÷@õº£‚ßLプÅì2°øHܻ։#¨^Óu!k°çôda?Dsf´Þ³«ÍÜì MAË4&µÞ43Ý�jš¬: ~ñÆ1Ð:ÙM?SéýÀù$yW!o±;`¤þéù+#+͆À\È(§áãšÊy‚Á‚ŽAÌbãþÊ4>]dC$C*ãt^£ÜhœNmá#¦$Ü ±$« Ôó|VcÏmŽ^[´¿7±š5J=œÞ´vP²¢þù!îÛ±þŸ61ÉŒXõTs–v[Ìs .‚M.’k«4÷¢÷[¯CL+¯/¿Žà¿ÇÆ~¦,ETØì9Þö7Aœhäö÷SvÖ96®&†æ€ò^ÁaMÀ +J»ì‹ô!ÏaÎ^Ål�PîziEÕÚÝ qáïû±AUr™ÆLÌýgý—Ï@%Á,ñŠÆrõp×x¶à‹#q*1¼—6—Zól»R×@k2È%W B¦Þú† ¶þB-üË÷`b,D£�2_yP9I´!5T57C¿öÝЗbá¸Ìƒ[ß¹Yš‚Ĭr„õíÁ׸.íÒ@kÎrÇobÖ²è‚C~•¢ÀCF%ÿeæÁ6·q9AzAEC„hdׄ2RóbܵAÔŸ)(øe ´§1p Ðá1î’!FçâÏ [xrœVÓ 9A)jcˆõŠ €¬ˆÀf2 1�Þ´ aîÝ|š˜.Z•Ü@ô¼_!ûÿvå41qD‘‚PŽõ÷½Ó-Pj¢d5On¢Ëré† 1Å×å<ÖIŒ“žÉÔÇ@ðTnœƒÚ©fCL B–¼ž‚ol†P¥(óâÈÊ…NE§ÍÞ™)×EaÞ/³þ©‹|ÖD@aŠ!Ú§ùT Öªá'ÙèÓ€ÐA°vçÅ/ãºQç+¢Íº#Ä�$‚üÌ–€gº×pÓ8ØGx[aìWÙùXh(&ò¢C·¿äO숗&XL{4P:Ä·«8Ö4( 9ÐËÓÌz1\Ûg/*D¹f\Øs ma¥_D8V2æ¤ +ª.d<k.LOâÍQù„¨È 9h <˜ë.<;¨Å‰>.SâØÚËF„qž#†>ª²iH¨R'§n2Yü¡Š¼ÔΆÖCš�e¥íaèˆú)ù‹*²·j8 Ðà7¾~ÜÍÆçã#¢ƒ‡gîç$T†ˆ:ä•õ¢^L²üA»t·/ƒ<3 Âþ¦ç-—ŽÌ”͵Ž¸-ºvJ»n:¢šêíÿû2»¯Ã´Ê]g€ÀÞ»«9$®æº;_Šà„TC4NÍóÌ¥‘¿\¤Ú/£ŽÖ½¯®´",sõyξåÓò{½$Òä<0ÿbæ’~b4ï2Ôì–ÔŽG +œ‘ú£Óºx%Ö,Ç7X«=TLƒï¸Ø_íJje^„ìÔ4ߺ¨lðlp×^ZèÛ-–Šq*¤Â²%¼´Y¶Ž ~ù-&ÿ0‰ùá˜tORä.¾3bº{êOs›ôÎå¼3Ø»CÂ:–1”i.k pÄ],ky,–i‡R|D’|즅—Z÷ˬ©ýzcr߈^ݸÔXQd7 Žn#ƒ|Êžf„+ ßí4N+y•È‰ùzš‘xÍß™ qBMµdƒèÜtJT\£cP›4GÔ{ãïm;kçß[¨7ä0ÆËÂ+ZÿáBi—™©™•ßéúnŒ=‡Váælì@¼%x„1e¼àóçÝ®ùÎà† T˜šXÀ’Àlsàå½Ñp¹BZS5 +…þY?¦,Ôj'áƒÀŒôþ¨Ü¢³Êâ´ƒµÒŠ‰Ö}ŠæëˆÀiß½¹Õ4Çý"ˆ5Öû&;ö\,¶þíP‹x>¾búR·Œa +¼¡kó 4ÛØ8ìçdì4®y7´!nã¶'62-c;ÀhDjrÏXȤX|2Ѥ†¼þ±åBsŽvC´>G´Ëå‚4Li0ñ‚içX—/Ä̈ z)E€&…óøºTÔü±>Xëà×0m·æ¯é¡×ä+â +[¯>LŒ;æ•X¥PÊÙˆÜâct«‡÷Fë‹@œáŒöwYc{ßãÐrç¼(CÈà¸Wè7,ò+Í<sNh=lFÁ‚›ð¯g†–ÏjTAßÏmejßÙÕçl g2™g¡Š8¸ý»-mš+*¡°`€¤Ðå¡æPâˆqVt?,ÀÞ±<Û¼‹¢úejf±ó±(é9AÙ·…Rú…Öj_“ÈQ9¯y,vÜL°Zývaã-†xî¢ìêáhm&—¦îêþ~^&¡NmÙ÷ËŸ8pŒjöYö§3¡-DUO¢Pà"bKüì]Écwübˆû›’ÂêLNuÿoû…Xàút9Ðú|ÇšÉ;ü2”ŸúìÌ1¡(F�h炤ÐäuÄðDÊ])9³AÑÌî—¡ï··“¡TžEÝê—†Ømm%î½–UÁWP&± Z_ 7¤¢¡}4ÏÃÀšk,6‘æ¦öt}R4â9ºB ÄqfÈ×ÀA„fNÁ¦¢jR"Ö·ÝZ0~ø¸†+^g„ÓÒ¯5Ž2ìóÇ)i ÓbZH~jX[êÕpØŸ×V´ |üÏý:üä ´ÞÏž B�[çiÛtY\LL.Ó,«ŸAHÖMµÍAS(#!6hÅÚ#"ªè);Hniœ[¯_g Ät �93ã‰ñlF¼ä1C±ö˜‘k½¤äáÛ-ý %œóçDÉ+3<´ ÜV´;¦$ˆý*x;Äš’�o’÷“„ÅäµT©äå‡ÚIÑËÁC˜iz#v>¿ íhÀÄÃáÂËT.SˆÌMiîý9 s°Ac¥ñ«Pë™D°ñc"å,¤·îˆ#$:ªZ +Úç³ÇE{à$hWA)'„Àó©Á{!°ò·ƒAv0ò‰Ü4èáÚœãTý“Œ âJ½Dâ¸@a{Coj#œãªzG"`ÅË“Ó †*WÙ9Š=LÿEìeŸÌ<Üõ×b»j»•ÐTÏÔ#n È~_-‚¼‹,š“8¨äŸì€Ë Pç\YätÝ—§HÄþ˜”|Oh½ÛU¾j¿w�#f…nb³uÙ¿GYï=õVƙmC’øˆñq3û;ÕwŸþû笓nWg0 ’».¹_3õ(ׄ7Ä´OfyTunÚJо.mZ6åJõDÁ9šÙ ÿÈ:NÚ;ˆh¿pfŒXZì`O3o:‰ð©YÑšg×…‘ÅyF@ÞW‰uæuÇ¥3ØÄ6Á…4ŒIw”1IÔÒ 2üž«xvÓ‰m€à¨[†éíÇfB}<kÛ!èéTâ4Dç‚g•¯&Ko:¢¢"ñTöšz¤9N‘cßWAkýi¿Ê…åÇÇÉÇËÝö€XQʽýAW꬚l<ó^v†oϬåâ«Ã¿—èÑÄ;î5„ùàî²Ý$v©_ºlï³ú±þ\ÂSkß +‡7Û4ºa·tfAR\ÃËÄpjÛ)Bg7C “ý™§bϜ挖áõ™8X §Žú“£ +•òÈ?|… XòhIÅÏ…@tòh‰º>œQÔÕõbÊgãk4ëvŽ@Ü& –¿è«vö¯@†(˜´§¤ž#ޣNjöj$SΔåˆ:gƒ9ÛÙ’jÒгÔëøð/vµjœô«?ôßþôOþÍùÓ?Yÿÿøßþò¯ÿóßüøëŸüÝOßÿþÿúòWöÏÎðå/ÿãï~þÛ~ý»ßÿæ‡ß|ùÿ˜¿WS¼A¸…¶¶›¿üÛ¾ÿí—?ûþÇ¿ú«÷ÛßþøOÿüÃ_ýÕ¿ÿáÇ¿ÿ‡ŸÿÜÿù?ýüâ?üôãÏ?~ÿÛÿå¿ÿ›ßÿ“ $ˆÌþÍ<¬Ú/^ûßþðÓÏ?üþãúEÌßþîçïùýÓßÿö‡ùŸ~üáßýô›÷GýÀÿúão~þÝôš1þb^úþ…›þ»íVþóÏßÿþçófÖÕþçßýýöw¿þßÿÏÿY¨ÿÉÿþ«ÿþó?|ÿO\ëûßÿÿ>ÿå?ÿò—ÿå§ý»ß¬±~ÿãOÿÍ¿ùï¿ÿé7¿ýá÷ÿñûüCW×?æý韼_þìÏ¿üÝõ›ýëòŸ÷7üÙØâ#AC‡oo!µø�Vp~e’Žtô˜C©D¿w òe…”«ïfÒà×þÆ�Xäþ â×5ÖSòšyÏ~ ÝÇ|ÂÖpÏ·7óˆ¯~•õ ¬6οˆýpò¾|{3úš›9oüÒ¯úaC}ûx¾†}ûˆ¿¾™ý]ÙP?ýQ«Ê/þƒÿw×uîùÿ×ÿOåËŸýõO¿ûéË:ûúq}ùëþôOþûúøe¯¨ÖˆíËÅ¡ô¦÷1Õ—²Þ9Öœ+¨„úåZÿì6Gñ›¬«õOв®&°WæÁˆ1“©Ü_þîû?ý“ofÿ_ôò©S¬`»>3!û‡ÔI«õ/ýÂJõ£~ÇÉšó\>?êo!ëSûfqøõÍ +óííüäëßÅXß šIÜF’l+ ývú‹v}çŠ\+f#³ñ¿ëȯM +ä«ô êÛÇüÍíüïë× ùœú7ÿÝþÓ?1éþ†ùÕHÞÞhçQ•kV࣌)(eyΓüÊÐý휲××Éüš6‹Ö}جšÔ?a~}¸éW£cEÒ6iô0ITã!H¢•ÐóÚﺔA( Éô[HD›8Êzݺü¡UÊ{AtøCWª¼âöǃ'*}O¢8¸1Ñ•�üe„ç‘]ó„JY궧Ö|䨄ÊÏýÈa+ñ-"†¢ü[¼¸Îº¹M¥ç]ôMÿmM‘*ñTjÙ‡Q(g)ÿ-Ê /äô-È›}É@.s¤.õ-$ƺtƒ¤ÛõöðÔ5ÈPÿð~›˜�FzÚ ² ¤Rÿ-DcQóV«·PÅÅ2œ±pE%”¹$@ rÿøŸtbüÂH q‰MBJTðÆ)P5“Ëq¥ý}"€å†‘¥ìsÜN4_–7ÇZgΤ|‹2ºÀê d$Ë $Ø¥.ȼD¬Œ±(UÓìöMo-gƒÜ|Uv|ÍObªöh€\°)Tî‘p9ò&Ôᬻ_W¢D1+~!<8Š-NmCø–LMÄ TC$Npá ·C¡üˆ´#eL¡Jd<o»ßT8'æC¾wÕÈ 3äÌÛq7<½fÎŒ›Nx®‰ê]‰ƒ´í—Ýäbr$¼Cº +òÞžÜα.|¦«·5½-»ûk§X[\$$cºk¹!îC€EWÌ‹iÂZ•ÚV‚¼·5^ûD¸Fô¡€¤Ê·#Z‹ù~å+²½ƒ¢¢¡Bz¾Kîý¡—¿uò™cd÷õä¡Üì¯öU†%{I“ÇXÄqášoâ¡óÒÏY3ûþjMyRÓÃ!h“Uçˆ&ÄÒú欱êp¥u–=¡Þ[=ƒÀ’#¼_ÖZ9ÅÀAŸÒlf ™ó=¤ÓXb¨ž~t{ £ó§¸®§AÂ0Ór|‚Œ|îlÁDKŠâ&¾¢±Îª³P¡ì^üRF\ëI€%dgì€4õ¤´üéÏ•â‘«ñX¯Øšð~¡{`²V$ýÉ1ÕXþ$`‚i¤m%صf¸•°ýñp0 ‚>Ë„<)ﵪlHsÚÞKª)ð§ù•J~¡IÒãÍñ‚´¨úø@-‰ÑŠc† qÃ{}ÇV~š0ei‰Z" ‚]„›C +Q·¨fwê91È»t{~[Ôämž¨¬Öû…Æ‹A˜ÛÞ +"—¿ÏõÔÀ™7¼¾éÂj,ÊRÊï +ådíJÜj1 Hzø½P±÷võ|„èG—/Æâ*áý¶QÑ“ùø‚°>ã>?÷6´HS¤zËÅäHŸ ñɳ׌‹Þ‡×‰âBI²*V‚Âë¶f«ü]ú¤«,ªëMFB éYÆñ±ˆn_!ö—ãN +6Yr#.ïéí„È“úqcÅ´"‚SϱÛiÑ„¨Q“¯ê¥™¡\!3ùé´€ºYäÏ‚\],†B¯8|¢ò¢?¥ƒ °ÝÝdX_©skÛ.ì•WÁvx8·]caìÖž‰Ñ�póÒ¦æ(�&åˆÁßöõTž»q^#m‰–üí‡6'j_žlH’²BsêšµãÚïs[¹i,Œ�×`Þ\.T +…÷ut³Âv Ö¢* hƒT‘§3ÆvOaULC•bZ>æ'‹Qv¡I€²Ï ÙŠÈñ¬î{yóÇ8“ùÐmwÉÙ…~Ox$ÕGòıþÌ›Ô PEÖ6!·ŸÏ®–cq2\Ó½¯DAùŠ23×`^±uzĽ题¹ ˆ`Ìð‚n¼*Ýx˜µeO[_a ²^¯„z²ÂŠhÏ1H‡zî)[Ic—‡`ÆS38g±6•‹÷\ ðíðMˆËu�éœÿ´òº[É¥Éh+ô…:)T…Ói§F¿®&¢^ 2’«‚Ÿèä« +^y˜\h(Î)êæ#<ìŠ RCykìhN6‘Wáȯs‚Yó…¶pÏÕ¯¶ñ{ïC¤¾iá“…XÏ:FæH4yÜ~3Ä�˜¶^;¦&‚ëá_ ‘:=Aî˜.вD† @Ýì‚ §iÏÜåIã%!†Œƒ§FZk(Þþ1 +5ƒÆãSºõĘ„¬ÃžÅæþAL¯±>®²Ž» +i5Vî4û]áöŠA¡æ5O•+Çq¬#b*å *º ov|j,$é7ØKû¡IW·pØ݈m•hõ‹X yZP0rÁ€ê›õx¡Æ%-7ƒp²1›ÏüÖF£oÖ>=þä1òÃ>(X#Ÿ¬…z{Š¡cÓ»˜ãWUø¡0ÿQlgWh„€2jIa@mtIõ&j½)çõùujóBÊØßalŽpJ×ß73ÀB ?Ì´QWVR£Áøñûæ´òUÝæ1¤ÿca°p{ÏÆâàÚêÔ!½Âžöõ·ú…jÆÀ9BÁ%zNšÉ…–4'd¶!6cñ›"¡™wçÆl©l) Aôe”?AxÂfEë?}íjë˜áÇà„1¾åP,ŵۅyÓòÁIœ*9)Fw•§#A6Ä|ŽöYAV@å~U9Ô•úô‰š×ÞöHDä!Þiß/—CPÍ2Œ y²W?Fº“ŸWó—{SÞ‹-þFïX»bBÆ%‡TƒÀ¡“B” Û1McíöÖ|£XË«ñ¹aE,o?…CöBÝÇÂj8Öú„Ý 1Öz×ø88³"ï6R ²DÌ#´ÂPÎvª„ÏsÒüñꈧ¡àIZáëÝ($híœìú&k¬¶kþºuhoÇÙ€co¸³å0ã&vBeZË/DPý‘Ë„å]W€¬=BcUˆ>#@Ρh{µïL%ßÝ£!ÿE¨Ê‚#×?´»2È¥|è•7Ü(þ;8ÆZ—,ѸêáéKíÍí&‹Y.OD‡œ A‚<1ÿKŽµ"`å…]v‘æRï4 +Jýž6H¡øQÜH- [äQcÑ7Œ@¦„B¦5óìÖÏÈXkq™˜œ‚L4-/rÇv¿.µÈf¶2à%oKCDߧұ^»ÈM#m+ÑB*ÄšÿåLj±ð²–Ù™G(Ìoßár»ÍìÃ*kõºÉ·Æ¢è¶Î×± ³O· >ÆXÆÓ´Ê;ÂsÕ=ŠýeÕ¾ "%|_-èõfÍ„”–•4Åêâ†=Q:¤ú#øIÇÊ€0{îÌ“¬‡¹¦ÁüX‰ÆïCdˆýc¬‡eƒA¼gÄE—‚бäï´öÌTfÝ ¾žc•÷«j_¥ÿÌ]ü:é+^÷uî.Åp DØ1˜¿}@Ö|”‘Ke¦ g‘ÊV÷_‚ "v’Ñ™Ë©Ý õ<S×4T/9á±W6ºY³üÐlS +QP +õ�câd‚ÃuªD凮ïx7ëɱ2Po*Zú…Pã{\K'!áwáÛ>F[µÐ!TO´k,´«C˜P¨ðWž½°î½>Þ{;Î ò<™¢JÈz…ÅŽ|1à)Û ¦axç„öNµ| +â÷â‘ÁäTK~êÝQsx>ç!kÂYŽ C!ê@x'-oIH§)À[ûB,èµ-Ö¯±h. âDa¤nš‰µì E^,ÌÔ'·¯’ ÑøPGŽEpçüô|¾Æþkò?ã#¼o¤®<²àðHÞQåŒa5‰k"-öšfŽEåñÍ !ÉúÝå\WÅÍW'¶b4O‰ûs(µ—·|„“îéB]E8Gò&á^ÄdkX„î82RYË£åXêRk-Vk¯ˆ“²Pó‘¤Að4pKY-à½f_§CXRB•*!*åǵÞUȆå¯G—*Ø~!¼˜F=Žl½í™!à·³4Í‹¶½ãÈšQ_œAžD)ã¯Ä×{‡øH@ÖJŽÄ RãÝ“y�ÿlzŽÕÑ€ÏÎUZL¯ß7HSÆ,þŽ`X Úßë7±rx_íÔàš³ßDË”0i”¼ßÚÀ‘Gµ]*ö–T4Äe1ú®H†FÁF#W†OXŽôF˜ä!ØD;-¼ô£×]ÿþô2Mfí¥ÍõŒsbî–^»*[¯ H…½ô˜»}BjZ¡;„ÎóÉœSίbKp…LŒEA®<‘J T‹tq|Ã4NŸãNÈ<|²klçÓ=:÷÷GŒÙ²gRï!7Ày\@ºúÍö.ÙÜùF15PAcKÊ5¹]‰}¤ÀÖ¼>¶hscxòêU=!kãý(©ÎòÞ_ðÈ7*xÌ¹Ê ´»¼®'�„–I_dî#ÞÀ¿vÊ8tÝpJãÌkK +¾ÅûÂUïLö\ÉZAŸWÂÑ(Œ/j(Œ/Kyt‰ëÐå.2E@jXãûv;¬æ:U¬îº«>bÿ×#Á¿�©'ãœ&ÃŽ`ÿð®)Ð2ײb1[Þoßj E׺õŒ$ˆM¯ºú!*õœ~ +Hˆ>Ä´ak#fë'dMs™ËÆP(ß®£+ô¥‘(§äE™¬ÎW¤¸:ƒª>!ÈpgβÇê÷ûU²n&Émú…JZÅë!C§¼"™„Ûm’ŒHUýP‹Å $+IÎD=EVP™î}fÓ€XÁlh±°³Eà5¥ZB¢ô‹QyO…Ã@ubâ¦ËΟ¢–t? !lº•˜21ðx?ÆBräoóžµPúágФ=_wÕäî5ˆèO;l¸CâéÊÃÏ0y÷†è!ÕÄCìsw|]‚¬£Æ52ÔA¬0Êß 2÷Ë'ÈS®îymÈ2é2ÄS¾^oò!*atMCq)!œÇí„›C²9nrmó+v‘A9ýÁó°!çw£11f–2pu©¹Zc]MuzëÒÚ‰,£À1*ÝIQÐ˸òS'*kœ„<¦ü{Ì‹5‰q\p•@¥ë»¿ŠÞÕâ .!W§(„ÄŒò‰‚l;UDMÈß¾N1¶ºá+Æí!w„äÁÐD½[BPõ?ãÁ¬xlY‡9º_hÆpBŠ ¥§Û‡A¨ù; B3c“E²Ì«¢¶S=÷!ÔÃcm~Ø$Ø=¬©ó6$Ý“œIá*!Zæy¿”OŠSc$êÓ™ê áX_ `"W7†È[šÝ~7äR% z„> Æú6µüÊ9:xrçxnÒéšXaOCadáv-A.¸»ƒYjõ +õ–&w@ƒàáØ>O6ù7Ü/ ‚û”ÌÆ‚éÙS?²@Ük),;ÏØ®ˆðm¤ +\2Ñ +«¦ŒúZ@ÖéÅ?Ç„È8·ëEÄ$ºóBÛQÀ.DŽ¸‰w^BÓá5¦xЖZ22tBâå…{¶·-Î<i^kv|´™¤B“c�›Û¤è +ôöÈÕé‚ÏŠM^楚õ6—¬êÃ!çsm~Xö‚ÛŸï#F¬ØY×1Õz]>WHôoã„Z-ÈŠ:Ü‚È!ð¢UQ +H‘åXͱXCxW(ô¼º‘`Xê©š9XIMÉ æ4–>É«DÎa3r;|œ;ü–„–c69Ì<¬Ãoè:ú®ÅÙ˜àó ¦hBgö(¨Â¸á –ý"Šk\ƒo~JÂ:Ǻ_Y<÷ÆÐÐì¢ø.ÆkŒ…6Ñ:B¡š–a#»<wŠªa#âµhôMkûm¼9Ö¡ò ZÂBÆ!¤ìõ•^;ÞjÓÑÁ‡‚X»¾ó +ˆºîœ†§eR¢ÞRÃçÓ ¨Îö÷ãv¨ xúË!˜À³eÌŸµ–ªçãŽxZKŸ¢@=õv@[ WüÆñèL°’,é$«„WÞ±kþXŽ1Æ"©çî3¹^¶ËM,¯cÁfCMs? &´LøÔÀ;cD¦!ˆ"}€PúÆí·+´\‹b™·¾Ó™5?"9öózPÇ»ma/ëœ(ñЦ«éåXï#E ù…H*È÷( s¼›“K¯?þØÙ8b¦Þ—†ª[I¨§¤ÌAÈðH(R‹ügAx{%Bõ²>Yžý[ª1fÓU6|,¼âk Å€@H=ƒlÃâ¼JÚŒåÕ’dªü;ø«~¡˜H"Hˆ§‹¨gˆ€ëˆt×õ“`‡Ü†„îÆ(I¸Ä$¬è®»HµžOw—'²hÁ¥çÿäUntd«k¬ÞEåÊçCôª¼.ä‰x®MÚByHÊuùh^ðεÒHh®|°ã!ýŒ£&«…z¥D¿*Ý“bã›î¢¾„ºDhŒÄX…6Ãnæ"y!´ é"¯+ A‚NÙɘ�ôíÖ¨‘Pßv^Öo?NEv¼äfâJ@æ#1nÝn@’¿JEÔˆåêMƒ-¶ö£ÐS‚ag±Ì®"æOЬ4B¬ÿÁ†i§i²Æ*.%üìU<T¤eýBlÔå:ºÛ49½d—¬»ZOº;IÕ&}Ãè9¹VsfVÎ}Ã;i§{&½FÙQê![Æ$Üá2±"å‚/U@½Zf6Ç‚Óy½bâ&bËã!™ôYîCâPý êyäI–;Û•’x'îNmOþðMøsÈàœwvqqLðŒÿØcu·ÆÜœðæŽ*Ñ(¤nqA8ÿßÙ[ÕÌzÙç~×}TØb¬µúq"š»Û‹,ã8ÊûénvD<w*qùX:Õ}š€.Z* +5²»9Ë#@Ó5D#óÞ`N£s»{Ú½Ó33|‡uƒwø¥æ#¼¯çëÅÝÃ:�5à¹IÊpÀáÞ h"2¼ q§…ͽDÞ)LËr¨ýýmñnG²€`ät%w•ª4éå±»}×sH…†PžrÕ\ï6"æ†óÏp×J-ƒ/QITü2Øgo×ç H$}öúdäÕ¨¶jÍxç6"0Òœn§×þÆâåµ°¯°*LÃq|n1?â–(v È«G‰Í ,¨ÇLäóÕa¹2“‰ÈÄÔ +kµŠô¢hΡ#á6É¡[H©ê!óÉ^ã=Ø#=›E[ɱÌ%çˆ ¶Ð«¡!¹Æ'ä–o€C péG„Êï}Ò·Zýš½Å) _Èl_½UΛŃTì Öe²ÐÔ±·{vo6 ¬ÌÕ_è š|Únz]Ï +žÝƒÒ¼%m/!·ÜKGHöæ”ÍŽ¡à²m^÷ƒ,„Eý–N›žA}Q»èwCv§„aï’¼z;§ïf ÈGs•A.Ú¯ãxë?2ýƒø¬‹‰iVöŠKÉfèÛfƒöˆLU^ƒd‹EÂÞóŽÌ©Px$íwT&˜¯ª +ùTyCP–ŽBY¼½†�Ì÷ù즺ÚIq^™U?–b(l³5B(j0Š¦·h +Ö'6Ä ¿ÔV.E +#Xo?ÛȳrÞ2ý2áOe¨\nä•O0ÔÓ#ð$5²žð8˜ô*§¸Æ¢ä£ØNæmHÈCÍʵ†RÃ3edþLéÞ·SN•V«ÛÀž ›x†q÷ˆeG?k-¤ámç?áÛöÑÂEÀQ®j(ün>ò*œ½Ì8bÂE;�m†>t…”Y3Í«¡Š®¥4;é+RˆvÏL½ô-¦QFÉzk„µ!Üí ÒžÜBf̈"9ô÷kÒêé 7}a fÅ_½®õ4³£Ç•poÒëê´ª9Ó5†Â›…€`–ýãì4¨#×ˬ¶T’Àþ³Œ»„bJªTô5µcTN÷¯hŽrïŠ÷Nïe‘ª{@ÒlÔ(G“›ñ^g3Z¨8\…\[°k “Ÿw§Íf@zK_iƒLØÎ%DÆ–û÷nÊ«Ø÷« Âü[kÂ�Òa·Z±³‰MäÞ2ž©‘éïÑ„J—5,ƒ`üççz}5ëåPävq¦ó%JBns¬µù=ÄøVöÓ‚á…ä¨ÁHÑÓ]yØx1—c`†'Q‘͉ŽBM/ÚFÆÌ6Ò|d}-Í)È=Ã×Ö¿=üJØ5â¡í>‚Ü“CšÏç ¤ì6Æ€<ë%8Ðge€ÏžF2"ó–OŒE[s²™Õ¶=‘A({›õP"øÙœ¬šlœÁ-㪗žÝÚ«®_ey²P™OéûìßÃ:3—©Li@ÞíÉc‰ýÙ ¶¢Ð+µ%A²w\‡¢§æS`‹G”"Ah¨ Å‚(§ÞþÊ}Âi·Ô¶o@B.#ªQtð4úÔg¾Ï÷ðXÑPëÁàž³›¢°«-GÆnÛ ' ¸¿‡M¯1îóWáºG/Šû6ó5KÈ{¤ãÖóþ(pø:Kd… +èíÐ}ma3»>5V™_)ߌ+…çc¬w®„t¨'“ªÂ¸&HZ ëZðìg￈üw|£¨û¤ ôì‡cªA82)E73ˆ9V%çt!'×ö$«´„ìÌAé£3®x“äíÚ+!MIÞÒCáá@ÃËNԸ׎U¨íC’eÀy?ò[èxMÕiËñ³ÆÚÙ=Âàfˆ“€’îM½dÕj|ôú’ò¬éÉ€wP9"j:(ˆ¸ŽbÁˆ0.¶-{µÊ6QëÑø³îŸ"ê™j[‹ÍúÏ®ç“#a*ŠºBÙ¾”Ã(³v܃€ÜIhø,5®–éòWq8ÿÌ8’q.Î=±Ózs(–ô:¸»f@Þ~´“”¡¿gX°vëugÍk1î -ˆ`B•ÛkF-†ZRôø'žXÈA¤A¯§Ü¡_…‡“}sVö×K—BÏX©"ƒ¬d~P=ñ—pڀNjV×(@BÄKHŒEÛ-•h¡îtZ3Èú¨]u'Œ85«® _1?d]Dc;:Ý8åH!#bF.¬ú¹``¿Ö?úè}•Ô$Eu\Õkñ÷õ|v‘ïŠÊÏ(gQbÀ]{K_˜òg¼3F¸´Æ ñìFÉñ ¼V(k9ªî®>®—>!úì]aë‹ÜÚÞ&ÆQ?sëüÇw°|re‹NC™\!ó¢Ælˆž’ÎÒ=£Cu×LÁ®sXp„îÇ®oý¸Ê¼õì È…™o„Ÿ¹SH? txATw|K¼&“Åü²ETDDötõ´j?G–.šy$1ŒßðFs‹ ý ¥‡œ0A> óUó BÓŽ+ä…žËã&¯ +âHt¿²{ H˜¬æ^LŸ½ïsQ¤ã:äjt +bðh×ûŠ±NA$QžCînÐÊîÂ5ÇÊ Q è:MôKù…j:Á$æröì#o#S§¼avÒÚIsº w„HÞ³D}9XÑÊ}~¥´¶ÏÝ“Žºý¶uýCѾ˜cO97QXFo*â:¢(ažÓïhÖuHÁ…p¸I@¤a‘D±m%¼?Øy-^€lMÉÛYË»‚>ÖMçš<¬B5jX1SnF„ê©¿b£\ç(µí +ÄšN༂ÀWoN6ÐXê®Ï0“Û B‹~3¢.ÈúÛ›-ÉÂóÑD•»©)9ÆÂ#yýÐãâÐÒBkÆ/4HxŸ¸¹Ó°þÓÙù“4î–´»Ì±`ƒ8!j +UæÉK»0Muß•‘:ká ÁJ䦔léÓ™æ1ÄÌ÷m‡BÓ¤Q(ËmQ=!G;A(M?'q¡[ÅsÕÙyÊξ›&F×�ÑŽèÆ÷û wѧt§cF@ã͇¼B‹<ºPä,<R#<rˆ-0A£‚cí¾Èœá㔳‚f¯Õ¼ÎdŒß3Mn—ºFòDIÞ@ëÌ…áT8®V]0Ï5ÖgýÒºÃ4ÙÞæ¬ «Â �ЫZ«ÛÝËQµ³0®È¢ÄXZ—Ójµf÷%ó ¬‰kÙÙ©*ØýÈ?\PÂ:jC¦Û*eCNtë<ÖŽæ²I+à!J‰âªç#B·’Æqõý¹Â_-…îDANOZû‚ÐCç€ x7Ý¿Ã õ Ýd;åXÈݾuËGÌÀóÜqE<5e[´¬,<mA†°œ0HGÜòf$PÐ3΄å¼%\Ôã:ë!<ñ$Åo¯—}ç%„ÿ�…P´+wéÞ¤#ä–^‘N]¿ÚMçõ&î7Ž³œ\ªI§btTDiíx=« jŠö¡$ÎDa<-t€Œ¯š™çc:Ú®ê ‡'ÏžÈO¶Èc€""»ÇµËZóx]b$"OÝ`@Ö½^ƒ¬ûÊÙ-²6ÇÔý~½Ì½ÈkÄÊ ‚>ÛØÛ„@!¯†Ø5Õú‡nN¿îù²`JFc@¢èKT‹6lýÃJÈ^²nM,Ah<âÔåËâ,~Ùz¥Û:×Â!M8tj΄ÐØ6£OÙk»¦à´3rè.D4‘Ó\^œ†Pm¿?ƒÀÓ£ æ¨Y_Zé0 >ò%YPfRi\ɼ#Z4B >É-%$âeû;ù‚fì·Wß´\pà/‚¥ èqkÖiM·M¤û=GïΊŸ˜ó×u0KAqÚ2æ–Nm&R@.RYë»ÍÀ’¥äÙoAÈ=®P˜/?ÇR¾Ž?ßôìЩ18÷0¶3ÑT¸a +RßЖ +Hƒ´ñÜêï{kòbù9UUi(ÒÆè—A¿òCe†5›²Â‰Å+yšT5"u’TäYèr=9Ý7ɼì¢*w+=õÌ ÂnòÑ×rèu”*«‘yÏGIÄ/D4²‚Í'Þ4H•ƒ²7º¯#xŽëª[:Pë‡ÞÒ°«H¸RÕp姀túÂ;Ø °°á”Ý"‘ÑÐ&jåÅå°òT{¬˜Å´É~¶!¡0V²?Í Ò£6*ˆ¸A¹(7¼Þ`« G*bVWõfQ|5pû]4Å®54’È!YîeÍwê¼>rn2Äu/€(+¢N‹L¸V%ZŠ\¹å Gs‹î i-¸³‹,6Ç»?覸÷º‡!î²íx±Bà8Ë;„l”9»j]'?<DÑ×Pô+§¨MYð¡Ã,qfA2°wÍ]rP jKa®±ÜJüÈs#÷ ÆeP*bž]ú‡Ê¨ys–]¼)™‹wcm?ÄHÜÖ¤Îé·„?2#éÜã~îäkâ—u¢÷ƒ›ªø1[¢<éí‡ÔŠ”ç-·ÎèÁ!ÅæPõ}ù¤}Êx +Ûð“p‹Zd*U„Rl™}ó›hÜ‚Î@[“‰’äíä0ç;Í7k‘;žÎÚÞ)D'3Â&yRâ)C…†‡ÏSÄÂLJÌ$Úür¨ ªÅQ863Ñlr¢P¸Ïbk™#ù„ï))õM²¦Ìäá„xȧŠnzím¡>àƒìÏn’µ¸nÄ«ï¸\wT÷`ºÈV,½ãíÍÍ.- ëÛî;ÇØ:Hœ9ÝûøZ!ÿA Ûb8pQü‡wâ}õ=ŽçÆòAó¡ÏñøëüU+œ…¾ó ˜DlÙ7ƒàüá¾½ ‰`"&jã£ñª·&7Cµ¶^húGY:Š‘ªzdrÖ +Œè|ƒ =þ¡‰½¢¡5¿Z*ˆ(„À[’˜×oÙ- cW‡¤‹ ù<=Èfz¡=;ÐògU*çÙ²WòØÁqÄ9¤ZÖgÔ êX¿{‘¢H@¨ŸÚJ†¢Y«´-F÷Œô˜oq¡b_àN» zûJ—Ô táë–aãŒ3Ö¤¥°|8#¦ãØÿp’ˆSŒ¾›AF8ƒ(q½röü%† +†Å§Ê3Nƒ\‘xËïALÒibw@ž7ʯ3![ò'ÆZKÃ3û)ß…ü}–8§„n/ºiN#Ók‰ ØÂF\ÆL3ëCñtB?G7”MuÆÜRSM2žò›Ü®:2”Uh qÁGÉÌâœ_qUÿ–â±±ðÝQôdÜ]A AÂgoË‹D·ï@šð7vù‡µÚÕjÚŒWi§*Ù‹ò§w%‡´là-‚ à¬åŠÖ{n\„n2W²‘Ù©! ˆZÑýNd‡$âqÃÎ;hy:äÂ÷U¶ ª_…úÈÇ°bñ.Adm´;"|›4ò˺ù§¬@å*ç%Èzª®Ãäz +34”«K3êl È#6»f;ÝMë[³ÝP?=9D¾8ÝÔUß…LÎW +úQö*ˆ<¤å«‚ÓZ>|HçíÎN ¬)Óí‚Ìm„±x肼I½ÖXbÀχ¾d5eÄVïÁg›¤ˆ÷¹ùÆ ‚Ë^M©—41¥4Ö–×DäˆDÒó +f@8¥Ëw +,AoòÐäÑS—Ð(hð§ÆíÍ#ýM* +Ž+ð"¼î9ÎàE¯‹Ÿ¼nîèK$¹¯|„ëŸ û?6ÿò…þ. @$Vž5¿uì^“çnJD/¯ÍÏKî¹Õ_Ÿñ;f5ø=BÄÞ£›{¸¿.>ï÷PutÍêód¹úªXó#& Îy‘A§r0›Ð I18·b(Ö»H›aÚÓ5µ¨Ç@чCü“&ÏÜx R™¥¡?#È;%2í™9h}¨½ì‘5½IÃdž’¿S|žjíu„™Ôi«V¸¯Spý†ª=_Ñ`¯H¨NùVZkšêÉ{ø.É4e@ÖuyA8zëiÕÊ‘wèÛå…žàò\æÔ^pütq`íÏ+”aƒþÜ2Éœã¬)¾˜G(ˆFvô‡óö›ëf²„’ŒåF^†[ÙDÙêD¯qšÇ NÙ¶’ku"aºí8„]Øìb-»ÍõÔŠkßt£üY}+R4¡ÂH'².¤ÔØÝ[ú[ÜØÝÑoöLØ”x¥ÜäYó}Nµæ€âôZ]ç¦wh—¬2Þç½Ã¤¢v¥c®´/‚¬7õxЩ±Rx¿Š›ù-aƒ¬'<ãʹ³ùÊ´4_.2 ij)ØŠ¼Èmy …ÌEMo¢aýºòB 9~ @Œˆ…ô½ÂÛ¡µ<˜C1T¥ÉÊö‚œ©ÐåiŠ´ùïÏéˆåçT”4~^§´².ª Å}¦Jð@í‘ùó‰QÛ¶d|n JK‡F„á À3Ç¢h¨þ¦@‰¨3ãCâ_·dÔ Š-bÇ_[Ã…<óî¸�e'åk{ˆ‘¼P[•žÀ3q-u{¡÷©,BÜÎ)¶—åîUÔEÙtGtè¿®€êZtïuaH> hS…°GB°—uGÒ +j;½±]y=:UZ3ÍÜjÌÃÐÓl|%iÄÑ…rDfFN šËïS2Ðê—›kl^Í»åKn*]íÝ ñ !êCÀˆ¤‚ôu@)™ƒ&ÌF¼ Ÿ0ÀT±]' œêÞTׯ<cå´ë[1jã¸$§Qâaøäßé‚4,¨ŽãºeœcöÀ¹aÞÖ0@hrÚfI +lcÏ“ µöÔº@A!ÜŸ×úšÌ¯ÝqA„ôc;ż%ê}ÜŒ û…m8ãÎPeATB½f@Ⱦ›QMÈ +áûPä±bW*”R†UÑ@¿ì÷…Ͳ&W½¼¦ûí›a¾šžœ†à#‰¨¯‹üýˆ^k¿ÐqæâP +3¤»r¸’p«Ìæ–j úÜší"Rwí¿Lë{÷B¬I‹fó}ç,,CFE¾õŒ§ ,V%÷F>p€$w)¢€Ò§2HËnâ„Pòq‚¡ÆÚlb¡ˆÓÞHö¤qž%~×=ww¯Õ©nmZ:¼çÝÐ=?ê·ƒùGâ •A=Ù|êµeΣuÛ¬*;EƒPk'¥Iº¡ÖX@0[ÆÁY[³€Òñƒ (Ú=ÏÖ#¸Í œîf_™Üí0øbÊ¥µëüŒ9+öþ/}¦H¿ý}°w¸«P<[™›¡tq%…Ä']¦šÄÕz¡cóS˜ÒÅ)>~è¤z¯“O´ o›ò|Á%¸@¤lþ5r(úíçáð·PíJI›_9Š: [yG0´#.1ëfI%½;zj&®îÛ!ôÝPÉËà¯k¢´½èá¤æ(©º¿zYžA|7„’‹u„,ßnê²ê`i¬Ú¶×£H•ô}z¤u~ðÐͿὂb›v风½´é_ÆX¦nQ‰Bp¶©nCq¾fc`@ŠTŸ€˜‹ûLµ# ôd 6ßlÐ žwÑIƒ¬8µg/„þ|è4‹£|•Ý&¤FŠì5–Ÿa5ô«+™‘A æŽ]¼[.~&££á¤+¥€lš·ÆâYóòmùxÐßCdCTéBjÀv,ÚÎ}îhºÒ|ÉVM¿ÂÅ[U¿ûL³;�5ÇCúÞÎñ…Ò„ñá?¡.„>ì´—»Ø]pׇeÃXSøðhyRd�¡û3§×‰I‚ÐÙáŠ÷YˆâÔÀ‰â¸ŸSR'.Äw¤zà°âºoY/©Yí:8¨×ˤp¦>,Ô&dS¤±Ê!mºÝËQ3½ ¸/„i0Gf¶Â±Ô®×Ú®ªb).qJ)ùâ×9È !¦|wCÅ‚¬ÉøT?}ÅX÷u˜CxðÆo9áù)AÂ=ÕÙÜÉÒbeÛÜGL¢y°ÄWÇÞqtËý*@ìîïQf¢ü,IÕùn†ìøQ™ Ñ°Õã<-È+gCDÖ*Ä#ºr·Ù"ñÛ‰û>÷Ø»%º·;¡IŒAž!NÜ)xWÙå|ÇŽZm@ÊòW¥GH§„+ |dï¸w8©ÿð{múÊi“Bë~+‚êa„@g*IüR !˜_¨ÚáE†Þ Kà°äHëöÆ)µlÜ»"z‰APió NJsÄ:†àÔ7Ï…tÌCoQCá1î²N +[M[\GbJ¡Ïüꔫ†úrBz.>Ôš~ùÅWŽD¡›»÷к£Ÿò s˜âè§O|z°'FÅ×xÍy<@Øš:;dbrh„n¦»&%¶›üµPÚ[éØV³áÂhï¡À +EÛ0ƒ‰±àÜ)]iÑE.ðü°X8ƒ†¯k¡š¤•_¡ÐR‰5..D¸¸•îm‹ã³”«¬i0v²OžlÌö¡ +•¢!ôZw¿´Aàò»˜–Gƒ¬1S¨7 X:}¤i9Ôðåìónš')¤|öRÚ>}#ÆHcå›R@îâ‚>&°õqúãák(ÙÌ0yÉÐvwF½|gY©GMrd͆CHæ”°d,Cmõ±D=i³ +�ëÆÛ“ÐÌ)û;ä3^…#ïÓäqj}5›l€Ðcê¥F]èPpr›sK¹ 8T?Ç¢7zF…Q¦2¿rÔºnWN0PóŠ†äî?íyb{É6¿é¯„é0+¼,þèŽn8'W¶–zèyª¦CÊS¶€COzƒ ¯6 )Ÿ,§‹†””ô],«Õú¨Ê¤‰9âG—‚Zb‰*q,Ha±FøÎ3…˜bG5V9lå„j3¹šá£wÙyßÙÔÈ€lëxAÆzh·Æ"»¶È7ª7 Ð%÷¾V¿Ïù(ð�!Ãû†àŸA*-YçÂŽÔÚÇûB-¾Þ©Ic¨µ«éÉ!èv9$3ö÷˵ºeÇ“#Òhwåë§oÝùe¼ß!ƒ5£M ÐO•_6ÈM –6LãÐy¢ÚP,²3”ú +Õ)ùûéÁ!=ü@.Åq¨¹Ðu@RDPð‘]ƒŸõicêM³ˆê*={!ÒI¯<*S1Kúž´c + + +c×XðX£¨¡²«nø…`az`‘#sæ>¡Ä6sëa{r,:tz¦p@‘ÊçÑ œ·ÖZ1yM³¬µ0Ì dû£«" kˆœSɱʰê&võ¦ƒp²sUDçkD6Ÿ]A4W³·ÙˇâcˆÇð½³ëÜæZ+VC<¡|X|$„Êä=æôvu!š +ßD=náƦãuÎp©7½ +ª_²Uq^pÎ` ÈּϞ…ÔPv‚Ë@¯òï> 5·ƒï‰ZÍý·ÿpZþdGˆ—Ò.H³%49Aý²äuƇ±¸Cö¶í{=ÌXd²>{ñ|b¬ìPÄ-R.ô\ ÔÙž™B…$ +åÔà,�ÁËHvJYÞ2:ŽBéÊdt¡èÜÏ糦…‘=Ãíà ·tÊJ@>âf‡ìkŒ…oz÷£”%,½! BÓö“ºd@N>¬AÌÝžœ@˜Ü²"ªaûxM¦¢¿çB¤² ‹ò :î~‡È/N7—+Ê"IÛêýèG1¨¤3€\F }B; DŸîÏÃ1k.Zê3GZ{ÂiÍh¨±{u…ºSªÕ—Î=Š*ŽhùASº¬ÅVÂ2Þ%vCå"XZ îtÙöçw]ê}ÎG¬X“ªÕ‚@q‚–6=›õº/WTÑtçÄ:Úv11ÔKOMÎeþ+Õç·ìiñVó´¹lèà=]C"y¶g…ÀjÖ̞̈úéý:X¸©óÃ!i.Û»CJö#ë*…ß°~ EcÉà ¨šÂö(IUȨnëëkîZ=Tœ7Ä¡LCÑã׶UùNòÁ.õa¡%m€ôÅçö8„¶“Ö¤ÂZLÞÄ„ö¾°x ‘´&PÊâÅP$O»ë´ ²þ®Öƒ Îæ¯E™d;bj@÷±òE»OéM×+€ùÁ~8jßÁz1ÄàüPuÖ"áÈ +áˆ~ì}µ‹+È(†hT8pÖ‰ È‘?{L Az« ¢^ükæH©7.:<w(öØuÖž'FÚ+Çð8Úuøn¿Oçó›GÏ‹P$™"õé–ã4Tû9ƒy+iÑ!@êj'ÓX¬ÁâÊ8Š5_¤ý»ZH3顆ëõ�!Õ‚0^°{ òô÷°[sÔ +(¥Aã(Ò61 ñðy•¯ 1žlÖ2&:Ñd-ÈÛ„ÖÔîrZw}q^݉[nôeWñ˜€Ü|1Å…ßBraE„‘�aü¾Ó…ÏPtd¯½4m¨î¼}-§Ä¯tû2·FºC(ãFKi@ ?Ç´Œ±º«¿¨G™¬DÙ44»Ðúä]6ÙÕ×(uÖ<.xÃ]Û²¤I€¬ÅÝmË›‚w“¢Þ^ÜuÁ3È}°\z}FévÖ¤©çDÅ!%}?|K ++<çüÅõ‰–AØÏ9Ök‘|ñ-UÁ,9€:É+v FZKeößj}âõ9„VŸªBˆAç]ªÕ!h"Ï´áRB>>*Œ ÊæµfÔÚ‰ÍÌÂ.s¦lE(ƒìúµC…Œ€´ÃiQc 8×± ¬ðç<j\h}žÍ;díb¯kAúÛ*¨Ä¸Ø”ž_à;³«ÉP%gõ¤½¹Ä!,p=zÞtñ0ÄE6ë½Dµ‚ÐÎÑïf(x n _u«ä'6‡¦œ1ézvÆ Ûw^ï- +5·ajJzÌ´K\nXäשœ°ýV¤ÂAUr¹à«[ãáówç&ê&uåÍúíxÁu#ä!ÉÉEÓtk( +rœž$d³pÌé9ÖÚÁW8èý[JŽoñ!)Ž‚CT–‰o"mHºJÔßn¨BßבÝ#ª©ónúì7y¢ëÊí˜P´¼.U©ÛÁ¹8,½4ÌZzÂXÔHºHõAâ•QY@^?Å\þIÜ,»ÔƒòiÕm Èó[ÐTQTÒ²†.ê¦Èa`r¨‡dÄåXÄÅn"˜ŠPÐìzøŽñx?ÞÕMá0ºú{8…kÖP3L£.¥KÞͼðçG“¾!EÁ²‡.?€€bõ{†Óë÷”“i(ä^òWzŸèˆÐ¶Fr!èði÷ÐFsOuÁ7j¶àiî"4)üH|ÉPʸÄá©u-oG~‡úzã9‚¦å{ÎR†‚ìÇœ0qàr¹§£ÈÍÏè!0\³IE‡HN!N²t5WoËŸuhÈäX¬Øíãg‘‰{o¯BÜR6¹Æ ³¦<¡Ah˜é½„eºzúKcÑÖÔýúç¾ßT¸±¡Ú �Ä¢ÑÂïýè¹(˜í]YïÌ‘h¨;¿*Ø�ïfAgDȬͼлð;í@0’P@è#>X‘ ,—³[~AqþמìÛN2>¼CžÓ7bÓB9 ”Ž¦:GááãbB® åˆT”ÒP‡M·#8Ŗ癕FB¥ÒHV]÷3G ÔbiÖÏ:Ò³:=úÛjœQC2 Iì4ê6Pò4Mý:D)» $éó~”µî!E!P æIZ?ªˆI‹îô¿]€1=ªà9¤”pÅó°�IrEŠ4ÈÍÂr‰hœ0·íÛ +RO°+ /÷±TƒÆ:JÉaCò@Ú>ük¨“ë TgŽpšàp¾jU ÈaÉd-oFéÈ?´ÔíocAŽl¸4îaáãB_bÓ‰Ð&:ÁƒB–L!þ(·í%9V£jÖL>ŒÝ}ùó¡bEñ¼¯ P\¥åa¾D‘`2T’É×u½0k‚m䨓Õj‡áÇýgIï"Ì4‘„F»#*|ÂCÉ¡d7[4W+ CQX B¯ô]ÛúQ!â –ì¡KllÛCbô.iuCÍ*¦¬óçLQ#°™O’3'Ú‘¢~㡯‹†³W +m";cÆæÒg‡ÈÐñ%gw„Œô!Ò<(•_ £kv÷+IíCš›sfˆÊ7b’BºÎü¬þ ¹¥BhÓK*½ƒbû¹ÒIÚ@»…Õ�”ñê¯Oæ›Cè +láeö]ç[j ˜ñݵQÃBo6Jž.¡lK¤1}mÜï. +®G½V—÷•°’AÞ]ìÐHHÍì>PåÃ5ÞK»[Ë ïðÿ‡ôùôwkVa;}>"'DÕË!;UŒpÔyßýÈ\™dˆÿD-AbLj¡·E‚=‡wã•‹„ôæ.êý8òò}Ò‹(u ƒLRÔ� òéahgžíÙ†º0Û5ÚsÌ@$CìI tÁ~|Ääp4ÝCCìV ÅÔ_ß'Kgß3&F#›³žÙ5S„ÿèlyDMn˜ú†y1}7 ¡÷è Í9…60rÊ9dN…’~!¼SÉ>^qpæ“–+’EÒvh vëPÞŒk¨A!*m,íÜÑÇ´ºÓdHß”ô tˆÜ^ó*”ùk9k,õŽzÂõ+¼R!N©z‡t£å!û†ÇE¤È‘ÏxŠ›ÃÇHý,¯¨Loöyf\}Î.¾_'>tßCíƒÀÅ= + $q AECäGÝ”8¼éÞ/TSëG÷üÂZ¹àÆfÕ•`®ÄX•/‡¼ŽB€Ò¯s…Ñ@Ë뼩˜ýÅ/Âs§B’¡ÊÝÅ0Ÿfˆ€ +â©.–hˆ~g¿K jMo‡@¼sëMAp —+‹†bålV~ÔP8¾¸a®ÿ¨F1¶EUd@Öì?ÞUKyEýn’ØEæ»BøùóèÂ㉠Ñ×:¶`ó¾“@äÇ:Þ¨¦+eNÞÛ«Ì!ÅqÕ“D0¡gÀèwÝE±ÿ®õ|¢+½$„Å!š¸ B-M®†AJ²ºJ«Æº`K%P”¢º×Ó@¬™'CÞë ^)øxì‰ +^Ïƃ ß‘•“ªP作>&_¨g—ýBœó¶z=ºëÃ%- íéµ+‘¥±j$À2Ø“¯fœ¤èÆ/R¬Äáfn‹Ðµ#í€/ «˜1MYØÕ%ïõ +„þ*8¥Œvž&aŒ:8R(‰ÞYßÀÎþ‡.c<CÁÂÚ~)†zâÃz÷ë…G×c�˜¢ug×Æ</7nz 76•í¬àRèãö-Ð ja.Yg©I{?žj¢l™C°çò¿nég”\0º&ùÜA/9Í0ÈZ d&î_M{ƒÆŸ¤‡q6€æXTË.“&ªB¥ÌëZǪ¸—Â8ZÈ›„ƒ qq¨‹pÂ!k½ãê«ïjrß®,P.i¾ë³ËÊy矛û}#{ˆ§\jô«Xo£.—c‘4¨&¡_•”,Zl3S]L±Wƒ°Øžü¹q-}žc](šÆJä(Câ’�¡up~d^îÔ�ó²× ´ŽÂ˜ k?Bu^c‘¼Ê"i °…Ùü¥±×®Çü~V ©[ò©\GWØØcaGå2[qGî2EÄ@†"ã›@ ‚¡^ ¨¯ß. ëÔ¶,1Ù¸HNkAus„?뺚 ÙšYkë±â!X—ñ®aÖ7¢i€0—‘šAØCç¹Ó¦Žk¤MLG(ºë‡©3'ëh`�ÖÝ3D7„I^q!\³ç×!›†è4ú§¬ß’¦9 ó@éÍQ…¯´çyìB;ô»ów!6øŽá†8@(>V€LXÔæTäI®d-sÉ×7P«j ˆëpˆH96¿Î–>‰«l +¤®ÂY5] ÕÞÜÛ…Y^]ù…Ö@ï¹,³œ¾o¨Ý„^<Œó²{’ñjùÇ¢T™±*ú´&¸YƒCŽTŒCB°Tok½„ŽÞz‚Dê*i¨üÖ/ µÖ¢G3Ê 4¡;0òB‡ž’CŠjyy•G©£’Ÿ1?)mÒµBˆYÁÑÊ8aý!ØUŒí5…8ŠUNúàýaL^iwwI~Õ¯¢ ¹F‰Û%&îš‘)aeÈÕŽùùúÞß`ÏŽ&ÿŠž°OùÂ}‹ºVŒss4ñ§ú«ÿ'Aÿm=íAÝx›/\·ŽÃí.òŽ"ÚMECÕSgwAnF÷K‡ÐJ^¤†í±ê…ëÇ!+Æ·ªÖÿÖÆ¢2Ej3bQ).FbÌ¢¯tŽìF5 JÙ%È|Ħ¢ÍTÏ·ÐâÇ…�Ñ‹Yk¿NÙ§Û€ ¨K<ɤ1ÌÕMr^Ž’§¸+¨Iõ-¾à@•¢>ÍñÅ!ÈH4™y„ìÜôƒ˜CZt;ê ¢¬5C<ǺMS=: ˆ³” dV¹ˆÇ=šCúyRìÆqU–«ç˨ô¹½+,@=OœqäB.yµöo”ׂ!Øãê.þà úÕ›f÷€¤[lq¦îL¥¯qº°—\ ‚púQ¢[³‡=YŒµAX4ê7Ô!„`zdž=ºñ-Ò & ë}½¼È ¦¼* +“ìb-jÅ:ž,>ÃÐ ó,ÝÎS"•S}îpÈyÔí˜ÿãIåCµd‚Æ3Ä•Ëõ94VÛÕ‚¨þjI3Å’€‰¶>PèŠ]Â: +!\-@ p(:xAý;}‚ê‚©†Îu¤N:uÖÞVåoj(øÛïêmªØ;>¯`‚t±iŸ€Œ“-`CØFc}P۩ܘªÁ¦·%Ž ¿n½%ƒÐ~†GË}¢f«1ÒÚ˜i&Ž†:ö'ê•ö…AŽž‡°/U€ôÖTc ZÓíuŒŽù0P±µA±þx¸ÿ�ÁP³nñsG±'«ÌPwô¶'.„fÆ+'önIv7œë‚P×{ÓØ (Üɮф£ou™¸1åí2È!ËÁ= ½n32ƒ¨æÒ¯jAÄÌ°¡à©Þ’.Å¥(Á2¬0•²Ÿ€òíµƒ@RkI¯ÉüU9Ñâ‘@ÁéQ_0†Ó›ÒÉ£jàRF†Ø1¹zuYrü(?"NHKÌ@>ðç.ªäÕV²>Ë5eƒ/lÃdÓÇ21Óˆèäø +¿«ZKb²â’²ñtfl^T1Ú³ÈøD.ÖLJ>fÔã5Ú+SR‡”,â¼ÐI<6ÈZ¥ä'š{zϱRRJ+YËž¤ážë7šPO@Ü•Æ5‚‹}Ôèâ‚^ÝÒX[ñ±µ É×æ&íL,¸þ]6~>ñaa~ò`Æri«¡ú«¸ w"|ØãÈ�ÞÜ4 2 /ÖÁZ]†ƒ³3„…ŽQÎäï”eÞ0(Ñ8,³5íõ†vGü¤ÃÚ1&΃<¡xKt™ÅAƒ¼»(ª± ;I|ÕQ°ˆ%Ãn +á'ëhý;QK›)šYÝ’UŸÔÛanpÏѳŠ‚gx;«È8-¥Ó†Yåa[M.àz¶ÛÝ3†pÒwרŠ™ÐÕâBœ{ 0‰È«G†Ùë*ÁÕÕݬ)þщe(t–º÷þ*vãéöWÙá8"íþ<jŸ¦åSVvrxZª¥Í…?@ãõú¢oÔ¹ÃÊ4 x«„þ‰!PópMYëZ ß6r·"qçz@ÞÐÝíüLkVðÛR¢Nz?‚Àa +q „Ê€BÂ7Øè1ű÷xs["ëwãœðó£S¯V«• +Œ—DÆ‚mÒéÍe(~µø×Â2(´Ò‚`÷µ¿`ÙZÒî²–‰žM'A¾ü(Þƒj›O¨‡û+<ƒ §peŽ¹›¦§þBy¯wÏÄëZÏMS¡ê +¹|[0C¼ÌS9õl´¬²ÐZHjèô«¿©¿k ³‹ÜA”Ñ‚žë×AjË#¦x8=å2cåpWícëzá™o^rÿÊ{Þ!ýÊÆ…€¨Ï<>>Êw·ä7bv´b) +UyªÞÉœÔÖÆ÷õbý¤™A±C ¬G—¨Cè/^|懾Ïä2èÃ}¿ +Îq½Ü{áAòQ/¬CÎJ³Aè±Ra7 °7BûZC}:~t³aÊ–I«”[l×î+lêä`ï;G‚Œà4VÿÐ÷1uÛ½ómï +»L?Ô÷€°À³AHny$C=š£ê…ouþ=^R<býHDƒOœ2ÄC>èrkHŠ•:5“„êhÍ‹ÈóцltdCˆÌ!R]Φ±H½Ö«RÉf™þ¹ä>Çá{Ð'”ryR’Àƒ& +p?Ãw ‘Ú µV@¬F#…칎Þh×¹†ÛdÕGµ7_*×_ êŠ0A;«÷{ŸR)©Ãp ”˜D±cÎ5FT²r*•„pÖÄL.A¨²µré¨õ=bs5"WBèõ¦)¡C®ÓÛÀ k“˜#Ãi‚ÞÑ·Êeÿn›ðÝcP8Ãg¡ð7Pµnú´A MP^{"í@¿™ÚƱ>\wž€°ô\‘±ÏEAÅ“þá{EƒnǪì:sÇIKö ¶¹cÕ§Q` eªuËð¯=í7ƒ*ÜÝ#2iDZú¦0ÙÛ¬{/Yv¾¡¼y7FåÖ§1Èn‚)‚¬²b`ŠZÞcLϼd¥”°¡kú_]Ñ@®¹yã@6CèÞÒ‘¢?ȳÿA5žG]0ºç‡Î˜0³rHÃô±†4•gbd»Mûš‹.®d„ógñ ÔÕ¨¯ò~cŒÃË!~às€aŒÊKÖÒˆO•PmÕ÷xÌëæ¯è ö鵶Cv±7ìe»É{ÎiÄèCÕè- _µGÚÍ"b¹2,¹¶W@v·«ßëóŠiD'ëÆå–7K>AšgFÏ®8C¥oH¤`9€Q²‚¢Ð“$—‘éN¾^ÌMŽ'Øáø†‘]ˆümÚe;dý&cñEÎ^¦ßk`ðld±”cQ~o6É‚šc;xÄå’ò{8Y ÀÕ亦’ò,j0©óùUvºm Ô-…L-ðVÆ�Ud]¥ ÛIWß[È ÙÚé‚›"â¤k·¡0 fƒ Ðe +ÕÍï¦qñUéÃòôëÓ´ÚP¨Kíé Xô¢[Ò/´d‚l…R_¾Êa¢Z„ê<Òûœ §Y çf3wW´¿+XLŠÈˆè”?¯}ff¼3høW²"‡óž†ÂMÖôx4¿ ÅÑÀ`á«VcŒC ;_¢õ©˜Ö!ôRÎâT(ÕplW€âÁÜ!ÆêÑ}énp|J‚%¼zR €Ü™ÒÈìó„îùEfßxÐq!>ÌÙiIKŒÿrôF“í˜1W¾ÇXØóÊW¨5Õ#È÷šxY÷q•Sfî¯i}p¹ê<=ÕNóâ¡õ¹£?çaŸjCc‘Xï€Ag̹ó;0„HˆEz~†\µb¤&Æ©C E¦›f™|A…eûŽu:#›žbNæQµ=>AÁÊywê…\ÍZÚ%¼ ¢}†ÔQŠ‹CŒ#:ö>TG]îs¹\í–¡qHÝ<>‡níΖ ;ÝqŒ‚~.õ’cGí®†zðqI# Á—QI¦?BŽ©3;_€Ü¯lbY¡×§`—±(.ÇtnB¾FaAzG&jiyW}¡„®b—!d„RzæÝ7ù~Ž¤:~x=xìqÓÀG’ ¤ŸŽ‡ø'9¸ßºQ½WSc!Á=“€î¦iÜó)ï´Ð_pH“j °ç‹^«‰Œå¹ì²wl*nM1,NÊ}daÕ)‘^d⥨ }¥¤`(X7éUn(Z:Gnú|ÆI$‚ÌûÚ*h^SX‰×EK;8h($ühv×w³8 C¨À Ð7gz§�yÊ¡‚„ö?•FBóh8ÈæXÑ™sñG!_y “ÅXé'?˜b"×5AÔ8GHjý°›Ä¡…ô‘/qÓké,Î?ÔXôšÏ +"+Ú.È ’=ÒÜ%Æ"Z‰P(¦OÇ-Èv%/øÑõ«RFÃÝÊu£Ü”ó1sfÚ²5‚'V|ÕÏR(ìmC`KJm)퇬]ãE8Å»€ Ü”á +-ô>wl¹PëwùÙÔ_)`&ááN"Ñ{aBF3Û* ‚ ËÁקúywöý1Û‘ÈÌù…v“i,*kãk“C:’E¦ço‹œøák»¡vÌÁyµo_…›=6¶çà:Ý‚œì,ƒÔÔlÔHuk?èÁSÃ-®@4ì\/7@qÍE·(|â´ƒNä‡í`6Tb¨º››â›à¥[=¦xÎiB¶G± +²LO‘|âÀr)%=€À†u‘ + +Š÷NÄkxØ¢æìâG]ÙÖM&*lUŸ¸Åƒ:M<Øi¦K½ÆB|y«¤Š†Íý+–%RAÔmBïú˜Î"ðóÊpgºÈ“瞨¾½' AßêÚ×3‡><–šÛÈ:Áƒg$'rÓøT?æ:ŒöPZÑ…p•M!�ƒ\:qÄYQ2r=€qº äÂç^ñ>Ìz-(nJ˜c¬ôFd¤I§ ãay‹øJ2ϵƒOj3}¹™)šüBíˆ#-Õ³ËDW¸–€@·z·b´¡*n—ÇÇŽBÍâ|ï=• Hè t½R²ïˆœ)½Eqù•a›†²S(ýÚOlÙPæ«+cÆ„‡cy´ðwÓÝÃú|‡{xBÂ5îo�¬s(rt÷qTx)x§g¤AfFÔñ« +ç×ØÒ™‚Þ’²o{Î µá×,3Ý3›NæQG¥¶Z1pÿ,>¯£~aµ§º›Ý¼£º®OÖ/leˆ6³ø]î°qçFKöžÐ(tÐ@TîîJK¡CÂrŸ¶‚.³å4 į÷¥�ì…›jQq™JkèŽÀhdÀV9sNÍÌÔ?&r=O4”úEóy³i6v’fBÞ*oŸîUR[ÛÇk¾¬çñÏMca|D3mø–‚j(ÔGL³–&ñZïè:0d¬PíÈö}-9ü«z¬„H·ßÊax÷s»YŸÈn 1Ô2ºpÄs«¹‡Z«ëZÇŽ9Ø×aËXñ‰.È©²Ñ‘Eà&")èëÖZ@ÊúO4®ÆP÷“ªà1‘Õ}¬<¨®·÷N% ÑO£¯¯ÁŽÝ%½'ÎL‹ˆ%¡ÒüïÑlc‘wAhu™á'¤örë„óÑá0e(~û˜²cõ’ý ƵAjVÚâBcÈäôAŒBŸ¾CNb™Æºv1)P4G‹àýzB¯XœãBq bÓëšdŒzÂÃ¯í¥ž²ê>,ÔÃÚÈMWtÆd¶ÏˆæEǪ֓ñÙ]„zvg¸C¨ÞÏ™ ¨Ò¶È×…ekìKr¸Æ‚j|’ßÖŠ¸m“QùÛÜÔªadáE…fÜ™çà†¿òÌ<Rwm¢{Ý;Ûˆ²Ü£¶R»ÍÖ’Äz*kQÛ*1Ò:àÛ‰,¾ãíS]tR@ÒµDkoLxt»BA0†ºÙ§n?`ä¡bmÙcqú&òw³Ö™îb5IØf‘¶/ T„ÒgÚ/Ä’ÿ±¦æ–Ÿf™J)úß‚uQHÑ ä`çÁô§5c[M„ +aDÐA.Iž¬ƒ7Üí* /Í2QøÕXg*(-§=T.X&yÊ}dΓ ÑŒ7ó¦(.µ° Rj¬žB4Ú³^ +^Âò‡×w�d �Ììˆ9žìU ‘"¾6ϳàâfLÉ)P§ò’AX€ÃÔSýy8öÞ$Õ Ä;Óï0‡" ™Qzý×O‘F£'âhxf Oݸ›ÙøŽ7èÁW=IÍënÑ$ÊŽ-PdjcÁõë@‰Ù[ Õ ƒBÁ³£ËÞs·Uç±ñíÀj*‰ñ*VÄ…Ž¿öÊ{Ù[ 7…—É)].ÏçöU€Q¡ŠPâ¨Bé¦í¥½Â‰Ü„3 õ8Ü8„¤pJ’ÉËæ U¹&ÅÛba¸CíÚ/´I(ºë¢Y4²>ÆÇc"]%3ÉWNB8*·,‘…ÛâùoƒPãбÉ!R=Ž¬¬y“šo2zø5–5äYÆ9æu£¦&OCp,ï÷ÿÍØÙ$Û®ãÆz*Á ý”Ôv÷Žãõ<ÿ®ù™ ×ö‹°«cWí<â’D‘ Èt]AÛcmp ¬¯K«é’Ì´Šžuå΄"×0Né!Ï=Ê®Èüým±®;ß%eù燄AåæÓê% |L`™?Ë¡5²ü7|Û3ûôl8Á¹êPCÍ•Ú^=@,uÎ’3ÈÓHΉ L¥Ïz(@žÏ¾ýRê‡ß¸†B>mó<ÕKÑ)/4¿òS¾zÆÈŸ¾[U£Õ³/g /§„e±›¨‹´«UÔ2ÇÌçƒKסðYˆ]®ÚÓm¯8!héÒ4ÿl±ûAí>" Ê)Î#ëà4 >ßÚn€ì…ú€°#¸k6!½<ðP‚Ò&4há ©Ó·¹ïÈÈÈo¨2Hsn9½bæQm%”ÀW]¢ˆT”“ø€&sPÓ}p¾vB) 0fçM}µVŽõ}ž5|^œoÓTIþh¨›lnù΀xපg4±uà‚SêSÔHsc™3º©ç .IÏ:’„ئ2!ì-2ˆë3õi$âZ Nꥋ„e2¼z˜õåÇ�dnjsù¢Aëž2˜Ôÿ#![»Iõ‹œo…(C;«ÿcê”tM³B %Õ‘Ù^Vi´2ml„uH™…«]‹»¨×î +ø(Ø:ÈÐ#üícBE¨1h@®ráýj,ÄŸÓ´PPw<ê,»pCB¦Ws@è]º,FÞ£vgìAB3=æüq]Áµs;p¢Ôü~(Ÿ{íª®‚`ˆ¶õ!ñÃÂßñüÿÕìYC±ù½_ Ð\cfDóTWÀŲs>e³d–)õï±8YG1ňæWf¢Ngåœ ¹CØJò]B¨Ög´›³'Ë(" G%¶VD» +á (6‹M�9è¤TbBÞ¥#‚ŽD‡ˆ8i8ºv5ÔàˆÔŠŠÃà ‰\1è @·¥¾tÄðæX‰+õ¬éuAn¬$—Uo X©{-N$ÍSHR‹îÅT“›ê)H‹¤l•K{^Ë x(J÷aþ(œ‘Ìz ÈMG¨Z®òÉON߸Êã-_8-ZWÉ {¨¦9 gÁÕÅLÓ8ö¹kÓ:Ièw+Ž&„jZ¯à†åæ EÿH6³œŸPR|òO&ÿT¼àDÐ-–±UÞ÷¯¯-‹ „ºìu«oøÇâ1Q$`í`–açLþüŒO6)'ã2oÈA[ .ŒW¥Šóù™R“BÍc€xb-¯s/…gA,¡nÌ‹ÃH9%¾™hä5åØ·ÛÊ +ÔjýÈ)ؾ*„èU°•ÅL@HÔåà<!›QmFæϾÓ.þ¨3áóQbÔéf¾µ&‚ªeÄ>úR@�R6Z•Û‚6ã"åsESXÿê\wQõSJB–”¢n‹Ó5¹Æz:œ½û2ˆA³ ¯„Ú<éòB¤Äîò˜,ÆX5¢Øtß%~D ÇbÛ̓Tk +*Œš/ºmGþïž“Òª™Q•¯*# 7ùMŸlW²ì…‚¥‘e> q({$¤¦nAHP=Õ0äýµñkãvªåõ\R²�×¹/ëLLí>ÒÝÌz)-ÂN ]šé$\æBÔX ™K¾R¬‚Ÿ,€ +rç[à@úfǧ±æÎÖe¨'ˆ.í͇ҧ1O[mV@žoóm�‚ÃpK⨠ìÒ©b§¹ +Ÿe稱;u'¤d‰õçNrª’ß_Lø¥rd+}y(>Ø·Ì•U·ŠÞ:3£…áý´øk‘7᫶1Ç¢á¨?Û{Ïï)’ÃìKóÈŸ‹0wœ¥Ôä³Yûz]R*={í\y¹OîÝ!½®¯bKØ +!ýé>+>³Õ±KÌ™mjPÑèNF% +Öªœ ªî*$6†Ì™Ásmݸ% ÎUØ‚w´ú˜…šýÏB.!…-}¡ +_ÈYCüV˜FêJM%‰9ðŒ"¶ôÕÉ-Ÿ‘µH¾â… òÜñîµG¾©ýU´xýµÀhBfè²zÛmyÇö«ÒJ©]âÀK!Ôîäï‹’¿dN3¥¤”qÚD…ªãr¢®OjW¾Ð3tCYÙ¹ð„Eû:{ƒVÿ<>§Çê•ôUªE§ªàŸ½LpzøÎ7,sÌ@\QÅ5ÍÒ ¶à ÈÄlŽ=|‹«JCÑ—å潩ïýíó&¿CŽn6CÄÛÊg|’‡hË©7ÆF¿L•tô¬¶¡è‘¹Wž‘pqüz1ªY|½€ Y<Jp:‘ãÜ +<Wo¡è9÷S5§Ôù¾)Š—%è9KµQ“±í3ÑÃÆy/SÆ„<¾ÔQôoFË$ØÔú1û Zê¯LÄI[Aø¬;”¡Ú6óXQ%ß⧆¦˜óg¹ô¢¯ó‚Ä¢ª +¹!øÝOžuô�çV=29X0_@(i}E&䌑LÅ“~^uÒ Avqœ€t"ø‚s“ °Ç‚Ñø©”Ÿ¨½Åïâ»çØ™MN ™ØŸîEd&ž²LMÈœ$¨3l¥NÖ"ŽÊK‘{Î0S<Ä®8Àáƒ9ƒ«ºæÂÑk~Êé] ß»# b:Y5§¿Ý3ñÒ™ÇE!h5ÈÓÖäT p ñ†Wgc‰Ùç&Ì@Q¿m +ŸÁ¿HˆÛœ¢‰äÒ„ö‰R:ÄGA&Îl€‡"ê„íæ2ä—MX8 ÜÀ¶ /–ˆØAœï'íò’A̪sžD>ØéÖ Ù¬¶Ã8ÖÍuÀ sòò²¥0Õsß>I¹ªš3g¶7O!¨30¾ìZÚ Ä¾Ü4òH|by$Ë?ÍѶs¼{Æ'îÝKûŒŽhÍ=wžgži©Ô]Á'¤Vøº»Ñ]¤£<é$»P ;ô¾›Žjú:çóôë»HŽ¬Ë …@é|ÑbsâbÁ#¨E°}G…¯ !ÛCj‰ä—¶E3Î’O-sü*ÞC.XdK_hnrbÓ궸ŸËÇZ1Ùk»q1ï‹öYTlWù¯@aýÚRêscêÒ«e`~‘üäÈOè"sµ#>ÊR¬Gšßez:ªºqÑõ~Eî=YàJÜ"!nŒÒæ•öíÃRn)íÓ8 <·Ü®}tx@æ…øºÃÄZùE®åxUfMê ßþƒfšg=ÖQ&íþEð’Úâr ýN¼oOa ¥¥ÆÔq)NurssZß-g¥ÆŠö„œ=z¥Z•Ó}B84—‚{“�‹‹yÒB|l¯ýðc]Só/Zl¹†Þn=„÷ä-¢ÛBþn«d³j&Û¦ÏqìÅ32»‹8‹>¤a«äNy“ Èy[AßùKÅ-®X¦Q:Ɇ@sYÉ)ãNÈ—ÏÏ‘x®ˆÔlíéŠÊX†~ )‰ñâ{ »mtËuȃÞõ›o(’KêeߪœôÙÍ}Pö# Þ—ãîؘÍtæ’°£©Pžk „'3G‹¬S6™/ÙVVÀ_fK›Ò9Ô%¼P{>zâä4+}×ðJ³é<~š3²õú$‹ Åÿ#‹ PÏ®ËùŒ„ìÎsë@M&?.¡HY+žÏ1-öêÙE¾º„|ðŸÏµ’åXVÁQûYžHÄáö¥U·ùßÖošèïV¢ŒoáØ4¹Îkì„í(�Êžd¬ù~‘)hpM)Ä;Õ%ó:<?Û^r›Œ}BpD\ú8Qµ`YN*àdS^§o–¯õ½WχeÉ} ôù«Ò),E£¾Ú€œAB9Î ÌôŸ" u»oy™„ùÛ^³G ¹ÁÖ-™â¨KÊÐBܬÈÏÎçÃê³Ôs…úÑN‚8¨k asos@°$ÿJ$Ç—òPÕ:uFÿÕž<½OŸ}äRkmË ×m„‘I«mƒ"3Ê¡ÑcQ\¿“².Ô²SÈ™qnzA‚B•w8¹'\@«qåmž+‹cÕ柘¹¬ìåAÓ(;î`ÒØ^÷u8-¾aÜ"6z¾aNË^O V¯oca ÛÅÒO‰4'ÝÑtDg‰<6éˆà*Uzªfû„Ü$|ÔS¤§gó=r—á®(Ff"ÄÜžO‰‰ BG¦å�<;ÂGÃφBŠó%y!ÔC¥t9®…šu[s‘É1UZˆK½{ +Ò}lr 0T°^¡VŒwV>X1o•]iu]G¹í5C3a5£‚ÂÇAB'y¡y¶…iÔj¥Ü¼;î„ô?‰Á¹û|-ÓÃ}Ýòý!šâ\úY×ãÚ@{h ûGËt}°Îï@:œ¯¼í_ñD¡²¹^n|„¬–úùä&‘ݳ滨ìÁÅ<Vw‰BpÑŠB…xvÇeXý6U© †^kóKÈq¿#!_)¤]5tÑ,Bë'žŸJy!*É?Ó4Uõš›-Œztwx-E¶î|6ë;P/eÙ› vØk1ĘŠÝ¹?Aúý-9¿Ÿ2‡Ý£’’Šõãg5…‘[Ž¼¡ñó9Ò|éÍ—3ԛݯÓ!]Ïçð«Æ†É˲Oã)6 3÷ýlÕxb6JàUI8VK¢wâç×yªùî •1 (dÙ¡¦‹àtP]:wVé[Äõ-¹žãÇÄ!!èܤ´FÍö¿g¶ûY,Ÿ|‚ó$sn½Qß–ø|ó—ÍFw.¢ôÞK2ÿÁüy™b9¿©8ðÇxœ:…ååœ7^Õ®Š›ÞùËþÐÑä�WLÑ7ù¿BÿïS'«pMÐŒRXÍ�šÞ½Sb.^¬‡ú:M*¿äÔ#($GX¤‘%„…È…º•×RÝ}ãlt<´4r×ïýÛ.GîX2pu™MùMs.cAÆôU`£Œ{£°ÐjkÓ#½ÎwyåuŽs¥Ô€àç;w˧tR¬PP�ìimKçò}ÔX¶ùꈨßjàÁ[tÙS¹Àí¥v’̽œ éwŠ,a¥ƒTëÈ*¢ÑæÁ–B6^)=A*#•!È\‘éÚèss‡¸+6…Ǻ{þ‡V•ùª6eÍ€\„·g7•¶™õéŽÀÐòZúÁ§ÈÛ±íy(Î�ó£*nŽ„Ü×TÞ(„軯[$ç–¢*• cH ´ëNŠ«@Ëš/ç ‰‡[‚h‚È8ÙM?½MïêÆöLt_UÝõX«I¨Ë¾«:®èT©ùT¿ùºnñà’Ï C)u‚ÌŒküþ2@÷X”m{œ(ìá>»í$/¶“ðòaòÊ×E„�~®wéFg¯+ډع’h-“Ljú[^‡²Ø^®iœ‰‡½>z﫤¼‚ØUYÒói]‹†€aO+‘˜€¼ÈzÆj䥳¸_Õ�<À_U #¾íXHênìåú‘±,äú:áŠùVCNäD dBÜjæªÑ\û,*6´¶gd@¶p?!0»KÙ% ÐüÛ<€8¯¥<ï¡.¢òxîzWCn%9šGÌ™$ýž|0r! öטCvÔPó ¤Ö«j,€©÷C1‡½Zk×üa¶ÊOow&MÄ»‰èy((6GÉv¥ÀO»y-@¦éá³°2§i«‰J²FR’óP+€Ôe[|d–‘×Á—kiš…Ãçzj>@ˆkómßE\m½[k +^¥W¯`‡ÊÃñ¸2„Ýì•qB¨]ŽfnâÃE5Èa»Ucý +=…Èƺ¶Îÿ#*$„æCÐãÅ€ºóSä„Œcµþz(º³"9á¡pÌþV3btˤï¯î‹´~$;8T\S§ý´ãy¤Ã[!H{¶#g^ˆÑ²¨ —ó-¾w@˜ìǪ¸"sF‰`)!L¤íWBB-™Rˆ ½t1Áá|ÓF‹sSWš X-¿?ê«tHÝ)‚Q(˜Â×ת›Û:Ä5Q 2×›÷•s^@oêé’÷è˜Ntþ·k“†FjÈY§fzÒ[Y’â&VœÌ9ó(%¯€4¦šÕÞ™å¡Ñ{W¦—4»³ôç'¾«>ó‹Y’΂ömTÈRÊØϼõkÙØ‚B;Áv¸9Z¥M‚‰R©wºâ¾ðl{×A¦èç8Š'³Lø@áBårBÎÛ΂¬ð'!Ïq%êa×)?úôf\õÜ«ƒ¦•¨y„D@BrQŽV A©NJ ™‚&wãh„–vUÎ@ñƒ¾R8ü#®•Tódz/ļv”Š8¯�¹¬¦~Âjñ^Õ=ŠêŽxš@ÔT*•Ž´4«ìá+²¤zBˆîKP#tÐŽÛmªë%'r”zhªé¤Ò9@Péwv'„ß›M.ù1ûÆFréÇJy·k¤ÚB±ø)—#»¼Ð_&d/jyý>¿%–úwéÙÕRÅ¿ µoƒØ.¢Ê{x ©k6÷É>öë*am˜ ù±íˆv]¬°{´ +µú¶ƒ*Ø5½M(epÚ£{¸í²6µNEÿj}ÉóE2EÚä¨%Æj5R/úÅWç6_íΘ–·1Ñ%Á¦8Z§ûËj!Á1Ç+H š4„Òú,Ä2‘·ÙÖhÁ‡¢›„Ì™f–Z½)øàßžþé4WË3§2ÂCíÓ‘S×"ú9‹Èê±Èbî–èOßx/‰"kXΨÑå¾yB%„†uÚ(ƒ|SÆ×zȤ[sá5Ôx&M:…úB�<-ðò¡#§~ *%Ÿuþ2h¾ˆ,–î¼›þ¶ÇRƯ2Ø(±ZqW·EˆüÃ1¹(êÄ¡I0O?;hù¹i*Ä ,åè˜ÓH¯’Nêr •·éÔ©NùF%„¼×Þ¸‡¥5"ƒeŸ +úÕù¬•8JJƒ‡fC{T²ÔÛê+ÚC÷Nž2Žàú²ÖH´öôÄÔÓéȦ¶µZ ª…CÅúÐÅàÎ|{HU°åÊ‘!,fsmŽeBó‚ºd´B¡xÙ…¢#Ò!-µDð\Ê?+ ÇȾ†ºkò‡Ôü<ÔÒMY!Ñ¿øþñhý+ïÜ%2÷žíù„·ŸÍ..¤E¾Š±…jÖ +×ÆGú¾—?nŸ\jRÃÃè„É!miEc0öì·iK$5U‹Tª QBiäGôÊÇÇ:jñÃf™s&ÏåÅ‘oAk¨ùÝKICAÿi%¬ dþ«GKA.R8!äÎÀØ“|¼ñpCs]•U¶ÅÔöFK4Þ^"È$¿‹'º‚1Uœ'D#5zJ¹©ÞVP–ã|‰úùí0 +d.œê¤åÙÃÄÇù(Ý9/·}V£r†ðY”}ø<VuU”¹"ë Þ6YôrBK¨šr^°ÌU¯†j‡Giq{$Š÷}kÃìÖžJE ¨Ò´="úªV®/‹§Ðv‚<Öè©'º —Ôu/»Á@\RPõ©™sö\7ûÚh&ÞSNwŽm|ÉÜy(Š¶Ò¬j°TØã*ïF„‰ºG1 €\¬ˆò_dÎ5%@ë¶.æ×|ŸµÆ¡)w µÙç…8ôYW1!ð‹l{çѵâJeßÆÂtÉ•÷DÝæ:]ùÞ䥲ú¶óK¿HTJ‘NèÊÁx¨ù”ý£ÂkÐŽb¹9Ýêø‘×ÿÃÈoë¢ìnµÃ„¸3c„¥¿«Ü*YøÚ×1wJ˜‚æ¼áéð>ûBxÑÿ•Œ[˜¯x#ìµb@Ó|É>µÌøƒ·y¦S@è†M£L½PxÈ?×|¾œnaqBæÞD^åÞÝ; nfÈ댹”fcŸ!3Þ8Nå¢B^pï†eÿjèW^æý‚"k¶a¢®µà+Ô2ÌÞŒ¨µÛаWæñ iVXÑà.G— ›:3²Àüðg*£‡8¿ä·Ž—›«/ò^—½j¤# ¨k*__EM9¿¨¡Ó@\˃CíOÜ9§Ã’ýçÊ-$«£Tr4֜܆Ùî'\ŸÎåñ§i›Î¨O›’ÆJ<<õshðÌãwƒ¬KoüVˆFÒ&òm 9#ȳ‹Íä®Bnrº‡¼3jbÐάœ˜^y¬óPÒ' kj9p†%ÚBê1*‚—¶Ø¤r«[ûþQ^®‰Bµ-ë˜3ÃTÆ=ý¬‡ð$q_ªBb÷ŠµïÃ3!¤¦tà±ÞÍÊ3 3ÚÒŠ/Ä·µ•b@ý}W¦ÞôhÏÏ$ŒßVäµD¥ƒLTBÝ“£M~‘‚ä‘øo@~„Ãsm;÷y¬{“äIÔºý//÷<w½õÍ,þN´“lÀÐUèâyÎp2ª¨7Ëô>QEtÊmÕÔöãšðÐ[†¤åòÞ%\ ŒÝ=T]©õ¼wؤÂwøÀuü¨“W"0©LdhÌR_õwýÈM{$˜t£Ûõ,LéµÆ_@®„e¨î3 7Nå¤.0}ß<åy¬ëOëö<E<·]91‹û\ jÔ¦æ1FJ5‰À¯(6UM÷¹dÓ”utlçªDIEäÒÊ3¿2„í›M©€ Í]-A@PTÙ"j"‰/)¼O µéïê:ïÐÎCüà€ÐéäxBhYÊ¶Ñ‘Í MÔV^ŸðƒËÄOd@§ÏwøkΚ»< YÖŠÌ´ÊæGg؆Ž{Wá…“ÈYþ‘ J +endstream endobj 85 0 obj <</Length 65536>>stream +ÌòÐÓ#Ÿv6òÒá"³ŒÍ Á_ìÈBr_=]Btãìuw“%b@þ;à²ç1JkÍ?˜8ýtÓ¤†¢£UòýšH0=Ùš¯a¾;Ùåy†¢Ö3ŸÐíð‚öÑëôZŸfžeù=]ïˤ\Œ®<Q@~•p¥ë[gl]�y ù´tX]c¡Ÿ¼—³"]kº¼Íf»”{ËÛæS†}í5EöüB÷tžxJ@Í\ç.u¿\ÓÕ…JÝ 7¥Va)m+o¾4LÇ`>ùI]¨ù4S;ñȧG§”lu!„+ª‚þy>]¢³œxkVt„Fvšòcz©düöÍÅíb×M.ócQ>ÏÙ]ê=Ó6˜XÍs¾%žÜ„áUüiðÉ^Xó¦#æ}ò‚\'~rZ$¯çŠÍ+Ðu,%³€ð°ŽóÙY¸˜^0BÈÙd™(?þ79¿ÌHÑ_Å”dq¸‡«ðúéa_'s"„´?f‘÷ö>¯/:W)P8x•%!Þì(´¯|ñËa¥4Ý„€³¶ò6P°îkù?…Áû–÷PÔ©ÞMMïj[úæ +׬Ÿë²Ûyí–Z.!»²ëöá„ÞMq¯±P‘"ý–¦ h—‹ò¤Þ:ª2¥œ—e6 +<»ìÙN¤>c!pRþ‚BÑcø\uÜÅùxœ[JÈ}•AQB’« Jˆ™?kû o“¶(S$§Ó_°UTO‹r€Â6ƒJ¹LÃò–SÍwÊç?ª¹Þ?9Æs› +'dNu'Wó…Þ÷Qt%cî¡8¾Ý)Ž ÐòÞÕuNV…5¤~³�ô-–ߌþzS¶F:èæºuøI3Gß?TT(}3=?²µÎâszQ¯z5²Xt¿ÕÙàÙÌAuº¯wU៱ý¥Î¤€p^Ø›—z>KGßcuš³³é[¨R»÷…Ú÷û†¬Vù«&ä\¿ 'oQÔ<å¶Ñà]zÑA‚cùò�ùvõ $æä7‘0“ߥ…Å׫S +jmeÐ d¶i®³ +6k9NÄùmê�‰àd°SÎAÍßjS+¡æ–0²“,¯óž¥ô'3ÍNqöú1TªÞ3)Cº‘õ{Þf߈êÒ+Y¬øÅg¿9hPkEÇhnÿÔtç¡Õõ¤G Dßým½& Éñض"*«ÒyqÛ—“Mo´>«M +Jo´:€CúÈa‘AÅœ¤®¥2r¬ƒ<TO‰„̙ӤoÕ|4é®RÆI×6Œ +õ©ö¶Òt"|ÒŠ§ÅÓ/¿àD`-î&~µ|P}šÑ®ma‡“¹ìö@¤©Ù㜠ÍN¯§d"ØÏþÄì8=t‘íEíùK#Ñ\!’N"¨ÅºI8´¡îš3\v†ö?ÙÔs[ àIw׉ú@§!»^AúÜ“þïêa*‚fBv1sÞ4'Üñl©õ€,#6_„þî昄 ‚PŽ<‰-½¢j¬e£;§huY5]ÏæÒö-)¢9µŸÕÐ:â·Î\Úgl;ž2ŒE�¿Â$P+ôûºaÑoL-ü!Ër$!$äÒ˜T·N—{% =Ö¯c&¨åÎmÄ¡K+Ô5sܽ–ììp #—üxö/¶$û>BãT¦:œþx7½¤üѬ#g† ¶žI€'!ïífCÝúÑÇÒmëYæõB¬ô6ûÀ0ì#±z̈‰”ã\Bæ}Ï%G1ßÒg×¥5V§g[R n}{¶æ…Z‰)ê–þûë±ævÁ™ëŽ-{‹@`Žgo¡Fü÷[6k±·½à¾[#UNBîG›„˺Õñ�ã¡ÀPJ=‰zdm¥È‹oí½¤Û"È˶Ö\‡“ò0áeâ‚…>wÇšïó1³û@üÒSæ¼âƒD^èÁ5Ú„u[m7òN·”í҂̵øvâ±fàõô-ˆãd±Ÿv&?‚Ûu†x³Ò:\Ç“CÅmvÐör5*“ûªŒ@;ÅÏÈëÀ¨½ÔÆ•å +¯HPy¼„p&ûqÁEuÀ‹p¢®kójˆMõ]q~}Åg –¦½d|«S4|S?{„ëæ‰uŠÏÍÃ�KùYaÇ4è>kÍ]Ú�Ê~¼ÙoYÕx(”EÉ ™%ócNˆþãÓIˆðÁ¼Ãe.híK‘>!(âl[$ˆ02¨‹íŒ´/îñ*òB—D|¾Â±ÛfùŒ9Þ´¬ÕâEkÎã¾BupOªj®ÓO?3š~h%üöòïïÎÌïÀ,‰[Q’Yî†k¹ iþ£SBêH©·Gš;x9\$¤¤~u[WŽGC⳩U·ÕW¶Û·Å}¸³> œ„v±‰ªE‘8Bq}ç~Gú?ÔëêÅÝឨcï4NȺQhàðSåÙKß* ¢^ÒÍ/Êe‡dE¹�¥ +Šæg1’’Iép`V5·sÓ'Ýï»WŠ’C+íå+oMHN«óY>BQÏPy´w5VB�†¯€€ÀbÈÏ?!i3á“7KÓ”MÀù«WˆƒÎœßÕ#Æ+Ù$.,–¹~1œÝïP",!V2'ìE/a8=ﱯÉfAÍAÆýZvUç…æUk‹oj~KùÎ3sˆ±éüÔãDîÛškuKk,úÿvq¼hpžé.3žðŠ:¢ÁËôò6Rº.U©ºÁ¡Æ.…ÿÖxèWî9ÁÚcjñk€ûYŸ}²‡[¡B³Ú± ã‚bÛË´ŠÎÿ¬ÜÎ|¼ˆoöf^Û‡µCJ*‚°cÙùÂcqliïw™¨ü¡\®Œ!—²Ox¶ôË‹¡ ]¸MnV@pUR_cÁ\‰j´ï-žê·ÈœÇ÷µõ”~XD,Ÿz Sa;Ùl§µ:i=È0ØÊE(îJwy!œ²Ö¡÷uéÝZ±BõäÝVžoétµh ‰/¦‹.Ä‘N"óqt¾N'¢æ¥â™`Á¤ˆŸ^úõùµ>å‹oûÞ:‰é–ûɲڸ¯—9î7óZŸi¡UÂGű¤Ñ=b).¦)OVâq9 ɼöäJŸnD€z„°À£*á"rÊ£ÜC<ÖI®ù]üWÒ +ï2r@&E\I¯‚eærÞÄù™¸ +‡#ѵ«6êªÄ¢æì¡Í¼™_ÇzÐ7g1 W'!Iøž_ÄKÖ—Lákƒ%“¿RsÅ ¶ŠüKÖѾ·—Šž ÚÌóÒPÄCÍ#¤å.„â§Å©.ä& éÑùÚVŒ ètZlõû<ÔEóß½4)ð¢9“¹pê ÒSõK¤l~‡ÇCã·”òév4ôX¥K±î¥äöÕk?hùYš;Yî2,²t]`„Æâc½tA}—•u!²}Ïù=ö¡ð‡?|w» +·¥„+ &‡ªÂküÉ.#–ðCÏ ¸}»LåG±M'…åÁ“åÝÛÌ¡.ÿ-i=Ñ+LÃY?ˆÃξÎ3ÖËj®ôѹ¤‹‚ ]•Ü*½ˆA"2\ŠÖvoÚgêDqOî0ºžß·„‚°ß.YŽ%äXì«„~ýÒ9Nãº*V°Îþ»©öû¾Ø^vã ½vÝϺ¡'hy°z,;œÖ§C¾¶oådƒW +$!HºM) ýYÍ2™ƒÒbðX[§PU7Émr¸…׺Ƃ>óÞk¦R݃ƒ·Îµ_~D[`H» 4ØQ™a«Å]ºÆ剿âw´•ƒ*e×F¤hHàù®PUÞE;¾?,Ub‹3j¨Y9¯ ‚~¦4®r²ƒ*á«¡JpÞY'@ígœoŠLÅai²šâžgŸ¤ƒœëj¥ãÉð¦U¥“vr‚¯V÷½‡3h–`BhK¾ñr€T?þNµ}y ðw:wvÁ!PœÒÕ=A0Š^ÉùæuˆßÓíûäBìëÞh8§”ÖÙ}•û[êQj~:ßê¯Õ³mEºñl†±‰ sä5Õ‘�šúñnD£Àá\4_ØF4뺑Y¿sŒ³ +6@ªqå*ìKÑ^L.dßò'Š/¼Ò*#ú”Ÿa_×€HùòJâ!›ç-R[nÈ\¤N‹Ìj,¸1}‰Œƒ¥Ìcá”øeTˆe»?€ ’PbC‰ôõ«w5hÉÿŠòŠlsu„ÿ^®)ƒþu¼W‹¢*øž !¶Ø¶Ç +ëø2½Ñ–¿§ÉØsi±&ÍÆ”ïEæÑg®%—ï¡æÏ7MI¨§šùõ| û¯ G(àNs¹5ÐR™/7dGAvaï'[몮Ñ\Ãïy!ô¡.ùxp]“ie†¦åˆwõé�™Ç‰ÛÕÌ áa“!f¡æ“œÍÌÚS5!h¿ÇOíh¸ +É9Xë+h‚`yJ4Ö×Ífqô€ôÐÙQAf„¡Ú²°ÌÜtŽ–»»š<ÒÖ¦&š]Nà„þ^�¹Ø+³Œh3Ù>B@ÚvªñX,²”ªKoZSQë ñ,5¾„XÒ## ï¯Õ&ÒÃü²tA}‡ëò¶ÂµàJwC¶Æ«„tùëÙ°|¼Ö,ÒPMíªIdåPG :°M¬ïªz?VÛ2ùöªÔ%ç³B*Ú¡ìŒ(b®&›ª€àYRÍaáÓ<!tÇVñ' _ZVd1#³óÍ=€ædOÉþ„Àû9…ݸkZ…í®õŒŸ½d£±îצԧžÏCRí]MÉ2_ÞËDYz"¦5~¦)5Ê×D&Å,]*ÿ æÞùàØ]yðJùb8ꛀÌPGêä¾Ê|Ç…kõGâ+jS^„z겂Ι#ЀÀVMhßgDZgYœéEÀìþn+ø·h.À¼Æí@=¼Ï¢ÊMÒ/²a¹Öóƒ«v„"˜vÇïΆ·Ìð•· msIñ¾^ Km`k8$£8KZ h×=UáÈ"]ø¾V(ßY,ñ×5gx´²_kÐÖð¸aq„äµ÷ÎãÒûŽý“8WÚ?K¯a>Úß(¡ЖJk“C +í –® ¸-FÈl¶»YœÍ•}{ôß_eV桨Jëî…ú‘+‚…Øê&Bî¦ü[€oÕ-Â/þsÒ‡‹ð‘ÿVÊ�³nãŽðv±×ž±‘~Íff•wNmù‘XГ‘Y½ëëBæäÑÏøŸÖ§„„¨XXÎñ£Ì�à‹Sî‘úœk«.=ÂÀl¼öIÈÙ,—‹žC¯ ¡}wI¾ £Í¢ÔHyIŸƒº7^B\)Ž¿:&ÖŠüc—F0Ö¿E/f)E¤i”ù1EO¢ƒƒ•ù²ƒÂ È@šCÅÚ€l!oBZ§ILÝc]K\¨½™$!4T=®¦Új§ºæCâ)Ü´.•Ô„ØDÑðYΰÙÌ Â™ÖB´’µ·CÕ�ð†ôxs$R»“¨>±BR!§>ñN/WJœ YDB}wMl�Zc‘"¸ËÔ½¤ÑóBý½lw-Hû=E@œ~W·®æÂßÙá9¾²u +=¡¦{^ ³=0… gRȤØ�z:½L0®u_Ô+–²ÌÀó�)ÄV‡PN=™Ó—nNœê‰>Ê@`·Ÿø‚vûù±§£P|W¦0kÖ¦‚š¹Yì á§ÔÁèÓ¡AC‘"lR¦ + °ÜÞéüXlŠÎü‘ÓýòÅ}Žá(&/gÅç~I4Q<¿¾ÔƒoZ~Ý °jV'R—´¢x™ÂÝ]½†šQåþ¤PÈ`Ý2{*X!¬—Žƒd¹‹‚î“ûµø<§¤†âèz\ÒøT¯éEàÌGÇ´Ó ˜Ð´oTƒò3Tg±NþMʉŸ5Ûçc™êYÙ�ŠˆeÀz8´ÈtÒÈÛ�ÚÒåm�b\kQÖP„ñ?‘òÜ„8„Ú9 „-sñó“s¸Mô%•äM^jÇ +Ö@ƒ<ì#¾Ñ;¥ñ¹%2ý'3á“圄 ŸùFg¢†¢9ÌĸŠmê*KPì‚¥ï8‚¹UÂÄé%¨WÄÝ7+`eà49^4®¡÷@›Å!¢vNdĈm-ȳͷ€PÀ˜gyŽ°„º…] +öUü +@ÍÍÉöÀ—#WATú;O||v<?¹údNÐdÝ×#„Üpœ§I» ø‚Óu¡#…;¯óõX¶ôjA™ëa ¡Ù¬5EP5Üè¾HHîÄ^´JÐÆ¿ëèxU‡Îá±èÍÌÐÐcmuÚËŠ1íõXì³[×!8Vë’pV{žÆâcµ;bB`¨ÜZ½<Ô|Éö õ>¥©“ˆë7λ°._v‰@n´]n³ƒ®Q+ïPCñQÈà<AkŽÔ‡Óœ\ÒrCO°¿YIÚ§¨BãŸêÝòúá‚4ÔúQn¼$]E›a)ÿðÒ9Ÿr£2—.C{,4]«Ö(h5ï½Ý×\ô8¹ +.Çih¡±8À·rµáùtð/¿bˆÑ| aíkêºÏ-é×DDÅê© ÷ú!›¤Ó…~ŒÓé̖ᙇÂÅêm+S°b…€Ü¬÷-¥ ï{A2 ×¢ÂÀó 9mJWù&ê,öYEЯ6ÛS —ùD‡!Poføj_»6ëùšï4’+ljÚRƒq¡ðõ:K—È\{,Žˆwãv$ø›jZj^`”U†P¼‹µÑòöζö¤kŇ¯�$I…F˜X{¨u׫ä‰Pl´yŽÏë,éfý"”áà0 m,åË„0̱™í +s©¨b„ÈauÑuÎMyB!÷ }6 HJž[òç¢éh#jóîæQ#Ìœlþ–wE_ei‚ÄŽ«¯¹-]¨ÃÚéx¼ç^‹F]¨ÌBYEIú‚×ÀkA°€ˆ¡žça( +ßµ/@<ðÚ4±¾6ÑPßV6È¡TzAà6õ¯tS/ÃëÏ&† ü™œ]ˆJÓ‹@µÛáÄÈmé ™R‹l®2†Ç®Þ±¨;|…Êv)e0q›+J‡¼+ш9ù·¾Ÿ•¸‹BÕá‚ÌK›%4°*zŽ¥¯›ëéгsY!›ë´ÂÐ;&,YJë j[-3 Ì“,ßBåÁ¾£af7û„ ,}ν9ö0ìÃ9PÚ±?Ž®sl\à„üIÈw|yüz )g”º-š”Û\òÔH70*]LqÕ½s#zNÒÌÖº>Ïâ¿Óû§ÊCmFF!°ü&Z9!W-õ‰„Xޤ绖“ŒÇê�ÜËèŪO‰§@À³IS=]g~hx“®'HûÃçG'oä©ÏáHÌ#Í_'éh:Ìé~é2ǧ”îcÈcßAp%ZÍ>@šã{}UQX¶²{¢hͦo[Ëíëq¯ÃrŸ·amõöOhEb�S*V‰¿™¦‰Âïë–N\€¬Dû:ýÓn¯§=awB µwL÷½úæ×P~9ÕùŠ+dScQ§ÌR‘NÇÇU›Q@ºénš¤;qÒ#qx¶= i+ÒÉsøW¨ƒœTRI„Ú'i 11Ú[ÕW…Uø‘©¢§ŸL»7PAˆRå‚á_´÷u•±µ©-?êÈB|«+x²n"6“ëoì-„˜[$ +» KX@0 xË[ Ûn[ªbðPê5w +È&ñ\cáÍr”,.(dkSG?º,Ê”""j™á·M›r›=t@>ï55}ðƒþ{qÃxÖô¡Î‹ãvþ•&ïoÓB€¾¬ãq^þŠ¥+í)t[¬S»®kÛô“›!,{©,&< öºÇjh]k#ñXLî{+YД®ÔC¢+r‘¤f$¥Òýþùü!•<‹ÓÁ#2s Ä÷¨&´DñjT«Êo‹4+ŠµëEÖª¹ã&!Gi‚Dϲ]Õ|‰tBÔïÍ櫼íã{ÅÿþÛo€–ó²²LHc‚ÂXSŠ‚ä¾›Q’·R#5^‰,ðIÇH¯ÜfBÆêZ)—›üõ{]»(V’oõbÄò#{Š&fDÑ´ô•³åþäTowåçæ +] +Þ‰âTæÜyBJÊJ/yñJ~%!œùŸl‚Ä’Âm.•§Çšë¸êV¡Uüvu0 xäØIFô¶rüB1égmZ‚z„ŸmŽª·>¯2g¶-|GØè4É?‚À^)럀ô¬ùNÙh‰Œ¼dp1yêœÆ¥LE8Ñ=bm¡|„ô~Üg2à‚e©´k(·lˆ(긷üÏRL:CاFµ‡´(»ÈØy[ý\n2 ˆáž¢hƒ’èH½œ(,Ï/HçÝ}Ew€ŽÃΩ[¬óß:ZÈtó§K¢æM9vÒ….¶È£R®vlø†4HVþˆã‘Qä]c™×iÚ µªŸˆ%S‹¾iö Y0Ê8 +ÈûJ’®®B\{ïG»WãR3j“¾MȲôÄ‚ êMæ)WªÍç.éj5—¼¹-òUãù¿blQÀÇô=Ì•lä±–Ç"foœhttYêƂÛw”×(6›LÕ䋧Ma®»!DmÈc»dCÒé]¶@Ç଱n +ŽÛÒV‡eòöm5Ó„¬Š[~¸¥ï–žç;¹¾_9džÚò3J<P«µ"jÐî÷Âë”ô-xößSÿ Y=ü†æoöê ¢kïŠaŠRÙî@°æ.»i•2Ó*o+`ѯ<£X[5T}ƒ:± ]vp͇óŸM¨‚×Wì § 8ío´Î;‹ë‚J‚Œ6Æ?‹é—…‹|¹ &‚£ºio¹oµÅ(;߈þê°å‘Ö‘¦…Û•Mw‚ÝÆà óð0^‡ùTð®»tÆÉfþñÇâöìÙy6Izͺyo¼Ÿs‰ L4PÐ]Tîvìš‹@úFϬýä‘·öIØi¿Ôñ—èH}Câ\y‚æœz6»m ÒÜ5Q÷…ÅʸPô¡åú˜ï§¶TvÀ-œ{¥Ò .¢¥¦¶ØñOŠ:ÿÖ 1ΉzÛàТðälÆ’m Þqj¨KÜYÙd%d÷¬ðXE|S2 oi-Î.D-'GÏæùy^rsÓÇE¢Íá¬znëÌê±N7åžþE¼@—Ó2—†¯ŒsG¤Åäbª(Îõæìɵåê”CÝAþBò'A‚[!ঢ¨,€Ì3J¸g*ÑHüOZÛ]‹@Hv@IX\¡›ÈûIeÝB}{ÑòBdëŸm7¡Ïq,÷뀷!v¿(ÊÚý%ßFèô3R=Ü,±Xú¡ +B;Õì¦Fœ„ÌCÂÄ— ÷Ñþô¦A<FQjTé¡UõN]èü‰çèŒ^B¸8 ^V8Ò\F]æßÛñI¢GE,ó1¼„>QIämFY_¨—Ëm2 óssG ¿ã;z€Ý4)Ô\¿ÏÕpA6hNÉ íèu¹[Ì•Ê ™s‰Uʉ +\ ®×.‘‹Jj–P½¶þŒ"bKAM½v˜ý{6I#ÅSþÁ/LŽóýŠ]~SF5*µl&d®+zï† ë»v G}‚¼—žëuÁï[àÃRÐ%Ë’oöóÖãäsCR~Ç7ÁFB Èc=ëPÌħP›1uB–ø j³Œ�ÎíéCî4~G³ÀíØ:Ãjò ©ñ*òÓ‡D¿rÆéà +k@[‚DlrÜ»ì¨AÞóXèF¶SEÚeµùFk6¤ŸÙy@èúÄ¡ªêl´Ëܶ>ôXt†õ”yÈÏPÎ’öù!³Ý¸Ý_>Óó«ÝŸo÷OB™¡éüë±æ¸óÆWp„òýO¿^¤žÝ)xÕvY¼£íƒÂª=ÓÅJnƒmý"Ö™K4q!¥¤ì]ºu*—{N-àwï BfuÈ®nkW +ÂÇwu/ýà4âÑy*!HjÏÐc(V!¾~¤Í]÷TK[ÿnÜ—š1î®d>Éíæë¤ù÷ÌSjÄY‡ÕGx󚊉•¨NÏ‘E”„\ ®õÒ‰«w+ åM2Œž·ÿŸçbñÓe êuh’´Ìe¼â{úÃ$›ŸÁ‹¦GQ{îKlýû'LàÎa ùœ4Ð5ÁRס5¾DUòº·J’âkÙåuº‡ÐÑ:1~Köˆ~5l3+1~“â=Ýìžg¬…1 Ge<t_ä}j%÷XåêWE‘ûXÙsªG´sõ*ì‘èq†1‡§5vχ]ÌŽ$@hí+BRB8Qûåäš ,Ãæ¡DZwuœDNg³Ö 冥Kùr~½[ë9Ãåá±È`ßß"«SA^9ö€°p¦°‡N9Ÿç6q!¾G¹R$UïbUy,&s*#ù=¼K\oBx¥Î ä£Ôª¬>!©P]Û(â«÷ÕbÓ‘”v£@6êµa:fwáY¶ùKN, U¯ï«µôÙ¬…k š«ÔÏq5c®k.òËT^+_ÍóT§B6wè„<¢sµª±æã±(èƼ Zwö¢¡.?=@(ûÕ1=HLÈ +÷ÖXº:n£8q(Á™_Åœxì/ž},ezÒde¾¥_ôî„ èª—4Ÿ!I¸UK(XnÇë³@¨,ÊÒU®#â=8·Ù1ýüÁa5íõ;´!‡SÀA ÊóãBƒÆN"îþ¥šwÇf2ó"42ñ2åš ïŸÐ®ù¼kòƒ¾°Œ^-Ç °ŸÿÌê?e7¢ú0FÏÑPœçl; +~øLÊ/£¬‡.ï?e74þØSe’_ĉnî7óÊÙWøo¡šÂîÿ?êÿÅ >¨I%>Ó.Þ7¡»ò¼ÿ5Q÷?¬çoZQ”µ{Þ2I2;–þ(¾üqïdÃLTðw¥ÍuÆ{AïKæåÜ=Z¨ýe_»»� U!ÄÞƒ©ÜÂIC@$•½ [3"÷ÍÍÏ:u+,M +¢#!3–ßDY¼d’‘·ú*<Rc- +[ ÅÆf©›¼J¼ + ™çL½ª3!å Ë®2¹k(Ú3ú)ëŒ�±f?Köã 7mµ8:$b~ÆÏO'ÍÓám§NjBºDÁ¶»šo†2KöJ'Q÷n·Uû¢`9SïM +tyî¼K9¼£¨ÊϱUŒN£ì¤súBs-v© ÈƤ?’Èú¹ËSÌcµ*¨žFõ¥yˆŸ*e¬“ç×p‹/£¹.igz¾/öÝs«ê˧Q„=Ëéê ú-‹Õ×_½“ yºÜõ{ÙáiÞyé™–0â}ûÊYKåZh?žÓP"À$îZ¶§G(ŽªÄšò°i·îªãö ¤e¢(˜Ûî9!hzˆïiÈ·¬ë2ŸTH|C(RkÓ×XÌœQ<í¾d[>4 ütÍæP3ˆ¢±,½(1pròÒo[秩‹O”(ú–ªíƒü½¾}æäÇÞð‚º×&àê'Îèz¨‹à‘ÁF ÞÆ”+‚˜òÍÅÉD/(Cª@ÌW{›â›j+.Î{( +‡²i‰ºO,ôxZ¹Ö^†ÔÆlÈr/„CÞûç¶ÔL–ò4ú£”7^e2`ÈœaÐ^…IG„_Ÿs[˜=]Çßš(*²ã<ͯ}¹1Þz@oG„ ky|Ñ™š®±ŽD5 ùe#¨ûõŽ«‘æO=)ïùé9>¶Ôüj6ÄÜh¾WòÂé9WëšPï/ô ñBêH¾5›{‘Õ&áuwu�éK»æ‹ðó2•ìÈ>;u!èWyJÑì$ðº>e]™ðò_ðX éO› +!ÏGÒ¨ é–lz AS.9ã‚àrõ¨Ž„-uª±Øž«Ï5PË 7_;QØ‹§x[˜FÍww-[²ã¡WñsR1 7Á«li<2†æµ$Šó{Kâà§ÞùËM•"!øD7 Û&‘“{<>žuRÑ[öZSÝÑ« $ð‚]eshÕhqÇBBçÙMQ<»üyHÀD¨Qª“‰ ÑŸ'Z#Úk+D,^™ZÔP|´÷æ“3¯YÄ2=ŸQàñtÖ”y5ô{GV¢…ÑUP XPR¦^ØCªþúuî¤Kù*þP†òmQ_Å¥„<—<Ç<ÖóZ?ÕgSO9æ7gv3$êF§›Îø +<IO3„ãõÖ|uà¦ìMSÄ”ûÌuñ)œy0NiÏr />iyEsµ‚~IÛBêAíO»]èë/Ãî?ÝS5ß;¶ª*$„΀¡ß)ã€ÌÓl·V£Ç"ºj8Öp§–Úbðy`‚ÌÇ×XIÝš(«=þÅ´÷<áU.qBÍ“òµ\ÐàœUe˜±]w„Öuwµ_RÙ«ªSÞåÅnïýú9�$Ù¢™”Hȳ¨õ¡†`k—„hŸØœVO\3$}Ú„ªjWü}×vοCJ¸ž*h •/ÖÍ¡çw³àê…Ö@´ˆŸWèp Eáä<Ë*‚º·z%›~ Çõ‘&¤ø|†Ø¨g•ôϵ²èùq¤oÇÃ>Aš»…È}€¶9v4,„øŸ‰ª3a®ãl§oJR ÞøÑ5èP/³¶¥½b©§›j£ÆµØ9£¸qmHæ=,�}¡é¸[„䀈î0í¤5¿ÚlÂ)ù‘Þ‘ÇÂóä¸D”Dê®·.ôBZÉ„xBPŽÛ\±Ø{è&¶¶ ø%‹¾ZcA*jËèÒŒÙâË‚>˜ýÃ:š|܆,ë4ø¹Ç:GÍ3ÝIÜV%™£Y!Z’mÖo!¼8ÚA,ئ±È'[_#Q»9l\ˆÃÚaƒ«„Pèý–ÇȼæYáBBVÐQt¾ó§+Qsfün$¬y™§æ…1-²Ð-¬3CÜ'Ïdˆë>ØÕP}5Ùð! òM7rÕ÷0!„t1!\;¾lqÎãÇ0ç„»„dEr{“¨>—Ô»4ÂE½Îƒ“¼[©‰%¤dÁ«¤l3œÂZfKó8ë|£×þ"Ù¡–ú@ ;KZkÌ÷Š4ï‘°bi@“¨9 ŸÌ,ø\cˆíèÅc$ãh T=Aš4² ´*Ž”P”éÞQžÀ³ž ŸçíP*!«ò%H‡äžÏ€07R&}=Á9•ŽT-Ñ$ü4q]- ¨ˆ†`›øÎù«¥j©_×Í—b{¯D]OµKÐõ,“ËøsuigxA:ôt\.Èž ö8”W®àgzœ]qùšž·•µ}ΰ×ç˜ä¨“Bý Þ‘’ÅtÖX-=]›ò)Ór>.×%äÅ5§×‰¿¨kJÂßêXc-piḥRBÖgFÜ-*ÁBô÷IžX¦¤ÈvßK9? „”×Ø ƒ'b€½üE9aßú8 T_âcÓOŽ‡ód6ßþ]¿—6s+VÕPœ–ã‘(›¨ÎütåJœž©(U°CcÂWb„ég9¼ÖX8líŸ0&jDZ‡”í5ÁÛó모܎¶JH®Ý€¦ XÎlka,ÓL{ÌGÁFj˜h¬•Ö¶6‡Ïq€ {âOcu*_Jóš˶‘¹àtÜj HÿÕ:>é.µo »™Ç"˜}zÒ?î…iUpÌÕëÝøîù¾¨õ/Åí€ðÈ ¨Æ‚à)á&¡æâö]ËgB>kÆùB‹,ÈRŒóU*·¾.ÌaËþ,Q©±z^Û‹‹$„—ü†tfÎùyS7';×.˜¦Ïcf†B໢‘]×Ù…z‘¼ÏýËâ)dŸ¾ö‘jB’ +ùj±-/9Ÿ‰_‚ŽQâ€9¥½€¼ïÖê‚H¥Ä€ùγ’(‰®ù$&•7y· üv©â>³¨æ Æù”$PF(”‰¤IpYõ Úšy! +×åèÚÒ&ÜÊj±År{iüä½ÛcÍpPAŒ©Egç$`þÜ¿Í“dÝRqá0<vÏ:Ü·Ûö…b?2zÍë|ÛöŸ¹ËZ:ïmnûi2îÕ8 ±8ð_´\ךöæb^Çáû]s˜˜ªZ¨á´‰_Âü,–»¡GºÈä³ èçàBøÚ9?ªÁ¹Xõ¥ô”ËÉ; 0ôEM¨¡0³Ý÷´—]*Òåì¢#¬ípn7³–ÓX“‚ü$B•îLó©ýRÓµ½KŽ%5w>ÖQ¬oAþˆ‡Qò’”@K—ŽüZÃS›QµõÉÅ¢ž.¾zã$UŸw_Ò7&bâ;-s—ï½²5±®zW„ÚTLAðDŽ+ ·… ápù Ÿ{¹9× 5Rð[#ÑUWjy‰ÚUÎr!,qÔ.ÅÙã›dÖD¼ô¬`Ó>˜]¸™Õˆ((a…‚`y,E"Hkó÷Z$ ²ÒA®>M¦I»jKM±knf-ç¿ÇújƒÑX¸_ù{ÈIik•)&¾¢³ùHz|@Ôx¹YÇÎ7i%b…ÙŒûã“yÆšõY›¦¥1ËÛ6)Ñ“:t&¤ä=\=¡Gü±D<v¸ÖÃ9ßrÎ{ s\}m/¸Ÿ=I , +Ù±ÊÐ'êâE¾.¹®'‰À¹`‹íf¯jMÒ• WÞ‘â5£+eñAßJ_È][—¯Ó³êßiÀ€~9J'¯O§¯qqóG´Ä{$¤ú3iu¡$èòÁgþ$ƒÙ?OehÁ3ˆn§ÿiFèNÄ„Óûûc¶°KvCp-‘:¸ÏÅå!¿{y©åÔ>é(eŵq2Ùµšðh[r<,E#BÍ÷ âSr Ð|ïþ²ÚoNÿ¢ÓŸ°¨‚6‚¼ñ:•$.Pú!ké‚‚ôî4‘!zâ™Çï»U‹@e'âC~v}Éy[D«È]>yeÚ¨‡Ãö:+Òî¢*«Ò›xœ‡u¦Rÿœ®öæ¾öD˜'ò)ÑY;†Å¦OH¥š!Ï{nÝQá>?cYuÃäfÛI‡Ç‹¶õÁ TÇfô¨Æg¾)·ûBè¿%-svu·%äsù¨6Æ"öéžÅ@Ñ ˆ§×&Åóm¦ÑLÈËdº%/Â}BbCøaÝ^!Þ•§H£¨•ŸË¬Ž.l©š€øbÝNk'âÅ㱂Ž¥Ïg‡Q„íu骊$Iʬš2,`ñÕB2gu'BaŽAÖGT¼IòõZ˜–©‰@5]êmÁÕ-ýŸ€Ìµ¶ÝúÒI +HþÓcÍà¨g—QÑQ訟ÜZCc˜jC‚ÔÅó!È“µu¦u2®ÕHÄ–3NRÙ÷,v¬.ôþ©ïpã VÍhåÑAX"‰C¡MM÷¹Ä)¦òofêõo±•.|˜·½w…ÙMöC++'Øm²_ãW ªÎÇYÊn×…nÚÛšò¢u¼éP×Ç]o[üÍó¬ÉÙºá`WSùC§dÛEÈ Ÿ?yÒoÙ¹k!¤ž_~6º wßÕt®+ +ijŸLÑâ·4æ£l·mÕßæoœ$#oiJ6<P©"V¥.¿´Ó¨wl%9‘™;H{!Nþ¼¢˜ amrÓSB<××¼`JHš£ EÁt,7$4o–¹w@NfîÖÁÏÚ2wÞKmáôøÛ|@{ã¥ø̨9™a˜Ofh”ÃB¬±K¤¾@<,ŽòMN„{Mu°¼îÍ·OÐÔÆáDÐ’=ý Kßv2òT>Ic؉$!Ïr„Eìؤ¤™Ú˜ÖÜbˆ†ÉogÝÅ ¼u··0'PtÛY®Bz-IîïWƒöÚš§5–/RKâ`„ÊjäéÖê¨F3\™· +ÒÉ,�šƒã Ú®ï‹v©ë\Âœ¿šƒ ÙZ шuf°‚Cǜٷ[=Ôòé:šÁû»Ž|p?uôÛbŽXõRÚX‹<þ%‹ +_cÍË<¯4mµ[Ü'ÄçS£G@`ommõ( ’–Jy@¾ù¡™bR÷±‹åƒêøK=äÂç›rÁ1 -¶’¸B'yåRÂÃd¾°öC,˜k1—ÅÛuÛ½‰‰¾LÃô£;dÜMÉG©Lòç>Þ#ó?íh[Ýnxq§¯T€Ht+}{õ®„Œe¼šÝ57 óÛ;Ü®á¡h[=SÝ%Q<>D`.:t—)ZÒÏÁ£Rš™â³ïjB¸G»úx,Rçµq5—‹±á(ñqWïaBÞ7é +cÏÇð99¿2cÐP ¼ÇÂ-|:l§¬…·)[n$„šÖn×PÏÍñ’]wûƒœ½‹ÔãàPe@RÍöʪ¥½AqŠc¸—6õj½iVÈüõOöŠ7AP:ûõÿÜ,A›Ç‚ª-Ì¿( +êNh½ä}ãPÑ`® S¾¸@ðͺ¶ö08˜‡ÔºÔmÇâD¬³ŽÙáð?zO03ÈèÂúTÒ^I›Y+ƒƒ¼JylÔQˆŽš•¥�D‚sSôBÌ«¡‡(n4¤o—/Bðûù z(´GtéùÜ>õ({ðƒÌÙ;ÍH'Ò“}Ö™áFÐäN_ÞüÄæ.~¸!2[Èæiÿß‚PPç`{UûŽã€¤P²E·«-ð„¢Ã¯QôÖŽÔSOBΙˆ®ÊrAÉÑæKFÈññâKíÏ‘3<ìNk'$¶Ä½@‰ÒäkçaÙ¥Ï ™Lùƒ`,ﱃ2ø½|±h¥QZÄ~V×’aélŒÜ7Dý`´=¨Ýô§šøAß?ÄCs??/d펖šw^Ô”}|¤kÕã@¿x?»çµgcm€²)åûßûhþóÿÔm“m9ãüg· ¹ëÖ*7þ_q¹›ú%îGðìûÛµ'Ñ]üß@‘¯üÄK6 ð[µ×ÓæÔö WK«¶>’y6eï'¼¦êvôÈA•À~¡žêŠÐ#ÿîœ(x/UlBwoµ{„êvv+´„ÐÇJÀ7ÝvÛz÷ŽÖDeoG6d†³g +~d352Ï‘«M#!Å9ý4Öõk˜¨§zÒã¶ævˆŽ×ü€Ìå[ËÊ•M#�$ZóXÚj¤ñÊû÷ô]mžDÔT8ë:J¥\† rI–,!ßQî† +i‚«I¡ +Ô<§ÍõcˆŒÿ‘¹Žº…„°`Ü:q¾l1Y6€·Çú_P9{H'ÜÇmÁP·kö=ß•GÔ2UMˆõbKüþ‰íñiÇ»&F«#º+ºÇ’•LÔ§cûñù ʦs´¤ÎjK©bj JK²ç#Ò¡×L)‚„È ³:é5ïÏ÷@m"ËþAt¦“Ê(P?Šs@`@Yù>!„+l‘äò~Ñ¥˜âœ¹+t"VÄlÔC!ê«·ÿHæ8õ#2¿œlHÒÏ©¬çá« ›ò°k¬—¾Çô‡÷Ý#ðXÍç@à®ÄAÏ·E”,êD ]ÖLE Yͱ™ÎŠôƒ‚µ7„ÎÁ[š‚¬®ä„À'±ÎIB¾E+ÐXXs´ì'ÖX¨.¾Ç³n냪’}Ô‹u.Ðú¢§Üµ;_…:òwýÜ×GcQ¸ùÍ%³K¤ãÖ…z:…ÓDBìÜ^×1ä2õ:!¯Bõº–ØVÓÝ“U©,á„ÜtÒŒl÷¦J^#!d_®GB:Ù*±‹à¨IóÇc=ë—ßÅçj_¥M�mö¶�î´öVÀ£4>u}Rõ|·nyÿœfņ¨'ª‰+2×$ýž†^žÑ4ëëà ÙM}t¥ôy@¾a‰÷ìHöÖüm§Q/ÖÉù•7®³ê˜‡/s™çSá‘ò*¢÷Ü€ìâÞÑBé0}h³\ÐL®d`ŠÌ·*îÿ‘îf|:†ÜVî¾r– +°ïÈBVNãƒB-LùO¡˜82BÎÁúùç>¹EH@lÏrx ƒ ꘥Ƣ!º %ܵxåºÐÛ“�]/kílisYþ¢|ì¿Þ=ÅgÍõçǧo¢PVub6Ò´2þ9m*®[‚dçiAæ>%ƒ›«Æâ==!B%ó²àþw†¼«ùÄSNÎ]óÝÒ�ê+‡Ü!Ô®Òäý1¯ˆõÓƒw„îUwÄ%„.š¤WÔ÷ ›æŽHÕ÷®vÿä¹ +XÂÖ#M�< 3v—úpdšÓUó/D3žmÍÙ´ÚüÉ*—P‚>–¼}BÒEÜø„p\*Bz¬c˜§èàZJz‚_d`KêÅÿ¦tEroYkA2]*{Êw‡Ûí9³>Q½Î�"ò\• ¥8=äcÛ®Ñ:ô½?ªò¬ ˜JÄφÔ0*^µÌ„,AHA`(_—BŒÀ Þì(ö +2ˆ¹ù¶Ú½59 ²û˜KÉuK™2�ÛN葨î‰:¬ËÌÍpmkißXëØ—“†×Iš®¾F¬Ór 5˜}¢%zGÌ áç£ÈX¹Rdêõ}óÉ—¥@ Ð…ï[³K€^xÓ=Aó³Ú‚ÁÖÊôöH-}a’‹ï.¿ ·]Uê®Ô¶ÒLÔ"Rò÷¹èÌðäKç¤øûƒnx³ùöÔG@8$䆵¸à¶y¢Ì£Ô4qéÏ2X ‘X¹¢Åæn”ÛsøV_ñ6„¸mÊ¥ú'ÛŸD;»|ê¹½~˜Nˆ aûÍ=D߯;iÏíû匛*µG¡TîV¨ÓØ4—}KBF)ù Â*¹Ó×Æ+W ›ç÷ –I …Ù¸ì¢óŠÏ´syPp·•t>TDï5ÛÞ8äP•¨ þd§Y@d‘ì‹2¤‚¬Kç÷TSt¼â.}¡ç¾rщJ¶5iLBqóZz¬¡Â!§<z|•²è¬}d§#û}á;tµÀäYü9A2.<ýsönCAþdgQ«a£‘=k¢:_×W éèwŽdcB`0H?H?–£ ›Ã€§|߬»Q)Àä9ßYMÌ°7¤ä?5Ö‹¼ævâ-¹øF5·ý¡“_»(-äýëu_Kx±+Ã3]¬üØé,Àþs¬ `:6s•/ì} Lˆƒ¨wWÎÂÆl 6Av’g@(LÅNZW¡‹&ú;¿ +B3+2PŸ;Ñs/&K€4E2Çò¸£ ×ëþUýšw%FUÏÅï„~ì3‹º|<ã;9},ZðØû¢nè‘:s«©“?!óiß28ûBÁµÊÌ BˆnK§õ8Ÿ!"åß‚Ìy „~¡ÞJƒhHà +ÒmiWyž~‡e“µþµÛ�!÷êæFAäNé ²ËbMdl ‹fʲ¤”z{’#?Õ˜â¡ì1¯}¿Óô€Êqt + +ò©òX·5¯ºjy*'²+o+N‰Ï'ƒ‡„D§ÃéÔï„0³8aœF¼ö€»Bºu±áA½«š§ët|52›'ˆ¥´Ivü:l?‘ˆë±DÚYCQí¼áZðáp°Ã=›{Í“-kqÔû„âú;!›¶ÆšëÁåZ¡P…¯â5ÒviÌìQþºÔ™½I-!"3Ö~L0?o)ª*ØZ™Ák@ËÂ$ä7ï»It¿†Å ¬'H·ÅsÚxÔêýÑ"G/ø|~RÚH9âfî¦ÓƆ¨ÇëÙ>×»j÷PïJT £îp#Žyñ¯Pðy«À¨bËjƯ£¾õ¥Ì¦ƒ(Æ̲CŹËénEÃh`}Û+£BPv•#oþ#ÇÊ~âC Ÿ%ŸrIMvU éæ:ÕX(‡-Y¡@á;èÂA@º4çüUÌ×IŸÓ:Í- +ÎgK×¼„ôÛ:o5÷…¹�ñÌ|÷?Ä ´,íù¯½àŸ»r!?®ç ¸–#‘ +kóK_‚)‰zÎÍšq‘=E²jû_B0)ëè7Ê«¯¯‚X¦ „úÊùFC¡¨0DôÄj²‡†*ÇáŸñú¾-5:¾‘`ô&¨ÍíK!WAh‡ 6PæÈÆO)+!*×o»(õ¦ïö!ÔÛ-!ÅgÛlÍ0Ž‡/Œˆ+ç)¢UsÅK aCújÁ÷XœÒÐË"‰™¤Ï|@°ðŸç^a<]¢Þ–òçptŸou`½¯¾üZ +êkØ.4ºîÓ +� +3¨…·åš÷Ü×Ëú�«] +3䩤kÝ"Ú÷¶Y”šº’88?8]T¬B¥Èg.Ý•š’= È\’yTÁ÷D¢Zt5°{ûHÍ.¥.-È–ÈyÅÆä‘ÉìYð&D+ÓÖ@͘Y>ù|îev¬Ï´øŠ!ø&è”–â`@Êï·¶·‹|`Né�`çQò93z: F}´ŸÛÓ€5…µ!OˆáÖ4œë{_þÚ´ÑÂñá\³EÙoæSŽŒ¹»ÈR2wm õ+HÃP£æ×åCn:°Â¡^HÜ”ôú+èl_ÊêݶrR¨A›¤›ˆöé²NX)[ŠsúÆïüŒR?î‘Ç@:ªÍÁÖVr˜5îøw1I¶‘j:+b¹ï}çȇ›ë%³’€¨ª¾bæä»yeùéóÕX”X•BðO¦ÚZÌ–ãêÝü¿d14OUzW—ítBæDø-ðôÝP@ÁÊ€ÖU›"cW–#9/!4 4¢äöUh*¤ÆBðñ=·s=!Þ\}Öf¼AGzWá.6ÂQ¹m¤Àˆ>®U‰¬ŠÖF4ª©›Ñ3ã ‹oí‚<–ÐÌ[§\éOC +S{=Cb!?}¡ÆQÓ0/ô•(½Ÿ!VÇU<¿201ógÆsÈ‘¨fвrʳÇÜŸù=•B°ü]Íøhuñ©Ú{¬½tž{(¨ˆq–¨’·ÊE+’aË€t4„·ÂÕ¤ÿ¼?›×XŸóžbsé¼¥FOÑ°t¨@µøÔšñôYU Zï_[ž ²’”÷š¨{˜òBHµ°n†`{öU60{„+sŽé_ÚJ÷ftõz 6º~Ö\~P%}¡ÎøEð5Š«·MžCên¾ˆÄOŸ5è{¿Ÿºä²! «ºm›òvLÏ{‚jñ~ÍhóTk¬ÏXåËDmeŒ@“>âýô>L1W]!H«›Hž×©Ýz€pc—^'(ÂjÉÆŠ{Ö£:Á0$#œÔpÂÆ{G#I3äõBé‘ài–|²—ç +½È]ó2«à …å–ú£ pó¿èÏÕ—7vU(õÑþ]®@HRÇÔ/þˆ†Ûz~Ëv&Ç·³4prý=’=1ßÎw¥ÏiÖ²|¾l`0Š®t5Æwåq‚š¨XÚ y ˆŸmg¢‚²„T—ÕÒ«[IíÐ̲åˆ!Ï"e'd.NŸÎæ‚|§j5ÆúŠD/ºk-LÑR. ·Urõ§è‡ÞÜ9ôÄÞ)$ssÄmïé ¨®VCW3V˜ï%²‹þÉ‹è.»¬¸Ì†¼iäºÝ1Ç|‚Û)²Î_§Æ"—q]φÖÆZxp²š¿h¥ Y·ºÂ¢Çù6ùß&j´E½Èò�5D¼wÕyT—UG@jó® Þzsy$ÍT,¨»É/ÄwÎy¢Ad?b¿!ß°Y�Buê»#ý 7ÚW8‡âOûî„ã€pĘó²9CzÓ£÷)ܪ±èFŸ[Ï÷zuo7[úÑcüIœØÒÂÌ블ͽÿö}íåoÅGL7£F•ãBð×æ…Gšû%ä}~6§‡å~2šë`õºÞÍü[¨ÇFÖ«¡<)%ïDÌP^ ‰ô +m…;43Ž¦²†‚[Ü¢©Ù¯+NVUæy–±¿?þ›iòÉîô÷÷î¤D õ±žÇ*Ð,6Ù<s¼Yu0 …êàY©Ð€P(øù^èäÿö®8P½b”Ó¨Ÿ˜üÁ—I¼õψž\ñ²ÌQ–òU@æé±Ù¾ÌC}[§~¢$˜#±2–÷öà΄À»6fÒs +]{šc~j'jFoª¢éB¨’çû÷œÏ¶’v!Ä¿¤!H*Àn¤"LÂÙs•ý«š§Ö +ã6†Ä6òfó”׊—týsº—9 õÍi ض–i7„>î¯Ê6DžBÚý-áˆ�ÜÖUÉß:c—¹—ýæôÞÓæ.ž<[÷Ï棹輩Æê€Ð³v·šÔ»°Æû>Çn›ˆtmÁk%ʃP|}]<Ôñü•ÂY\<Ê(Ùž¢u„=Âgظ[‚¥%d?Ù™ÖÒ)÷/BnåÎ.9£Ü¼˜'Ç—©Ø¸ Ñgêã ++üR+äz×Ø4ôUõñéIŸW åXô&2ŸSS$!µçÜáx÷]’ŠLÈ]ËßÑÃÆP‚°±è^‚þS2Jk¡ +È+rB1Qè¥"¯±:vÐep¨¾ùdNøåxq_Ç»A|} ä©f“5V+CS_ÉÔ-½Lþ’+•òõ´=Ym¾õ×í_uŒ˜»“ÕQ‡Qe5©Iö—ô¸<çýºX¶¿PDÐ)µ—UØzɚ̹ګ,:QßÉ E‰ÛÑ ã/ÝG (˜ìt‚ I¥Œiòn)£®¶ùÌyè¡Ë*º dñ7v*Æ…ß\a¶ø¾j¤Jq¥uNB¤<V+Õ°|‚NéŸ>¨6º±–·)Ú´Ñwî2A—ÃuÝ9Ú®ª¬QEbÍUcF§:$kž^ÕËýh¨gØjÕ/bvòP(‰¦ˆožÖ¥rBÓX9'¤˜îùkÊKq&oìß]¤´Jš{žÎÍYÇ@4fØÊ¡ƒRš.xΆ>]Ñ`rÏ÷rîÊ? ô‚ íu£Šó¯¡XKÕË)È*(ä¢C/m—Ç"q¹;Ã|hcQˆãRÝûþS鉡5ÿû?AÔWâÝ탪bU"Ü%¸}Z„€åº…ú#!¥)ŽªâIŽ¬¶Ô¡#b#Ï7òÅ‚ôXp¶JØ'PôÆwÑQ\¥0úš¶×6uú3sÇÿöí„ „qìG–¾›òüLTÉ(æÚ„Ø\É%dž³h$„¥»m] +횤|ÖXsxJí:PhÎn5uøÓZžªG5.£"\ÓúÞsûN–�µâ~ȼ.Éö@]õÖËúP¹ïÈ»7CƓ߆ڼ6ÊlÛ&|=Á“ªépK^¢Š©Ÿ}Áqvé:d> ¹ÙäX¸•„ É>”2V}Hc¡¢ ÂgÎôòµC†¼ÊÞ+ ãÜ[€¨Ðº–Ê6²wukúø_Ût'ªúÈò´ÿÛå'ä=(\®\|b›û*TúOª—T‰[üü£ç TQΤÐ+²&ç‹ØèI™æó+E|òUÅc§Áˆ~ŸD¿¶ÛnžóäëSÚZ—Cx‚}IÃÔ|G†ÃBÉ”æöÜΟ!$Žâð~›«¹f<IÜãù¡“¾ø.‹] +õþœìæ2‡%qä9Aë´ÖÁ9Ï™¥ûwÓ±›ºSŒ®Æâ[Ú*‰šGŠ-7Ú;ÏaK÷„|ǵ•ƒ?@jÆ•#›iËUxm‘pnUµý€¤¦åĵ¥«îš$êSvJyo{ïÞ5dßîVèD½ÖÕÊßK¾z>>Èv¾Ðü�–œ?È¥¹gú*ä7tôXH¶}÷©Êœgÿ€°²Òl\Ö0ÿMG¿/4\K> (¿þR:>Û…u"qSJ¥Ùº§rñ_–@iOiûBÌ’6“õãJM +ì2Ó‚^Zô+îZtqšstõX1•ž¾Ï4-†8µMRÉÕz†øÞQ©XG Rîò¥Î¶4)³_X&5wèÅke¨_‚Yõ ÈýÆSÄ™ö#ôˆ ù+éÞìq«‚w (&„Ô§èËC½»³G¢æŠR@è#¦4px…•3ÖÔÙŠPk…µ¸Ï:é�ÃOùqŸ±ŽZ[ÃÁ]šO¹×¼„CŸÕËRŸˆMö8·7þ˜Zî@…ÂkA$îûž49>ص +<ó«ú“~ý`ßÌ8s¬ø-©c#]}öo›Ä'¤o‡Î€ŒêT÷U†UÚ‰··uÕ~òR|¯ÙyäêBå÷±EÔð&P¿’ðv@h–RFŸ±Æ,Uù»êU²u~Xa«,Ÿ€ˆÜ_M@âr@dKéní@Áh<mœ¨y•d><y!éÙþ¦Ÿón,¹„vÒgkH)V^9P߳̑E‹¦‹£@pÑñô6ä}-œd.ËÄ„œ£û5Ö iîÞ8–¬’JÎ\c@Üz_ï‹cL‘Ä2–Iœ%AXJä2â)Tñ¡ŒTg›hاC¬®.'¹@lb†~6Ò ôî(:ëÅêj¸£qäP×úëë"欆·€4Üw·~$,ä¯b‘{,¢î¦|ïsÞþñÃe$%åxµë&d7 d+ j¨Û•²Z É…G9yƒ€ k%Ž‡!s“ýmB࿪;7!µ\õﶥû´× ‚ê·µHQúªÑ? Ýï•1*Y2è9×mA¬ÓÇmÔü¶º2¯!m~my Ïë2kï;$So’Ë#Á¿Hµoç00€¿Å{ÈëÜ%ìŸìÎDˆ{¼Ä)Îc,ËP)Q%ñ™Oég=ßÊF’MY!'Æ|7ïã½EìsÕÔj0~|_õÎï\ Ï2ú«*ÞÁ^9A–‚¾Gj+!/¶ŽûbÐCÅêÜ’ìï¯E@à•×„lTÝm¬Zr•±ì¬±¶Õ‹ ÔÔ¯¡[Näõ$A8Ï]ßpôúyÆ]±{ .âW¸#*Durx¯3iis?®«´ÐXÄ×4ÅC¨Ye+!»¡²Çâ±—hT Úæì=#uÆ !w&�ø©!qûwº”³ÐXDý'R VãÀ bVBóÌ}/æCG@;)¼#ï‹DéØ«2,VkiÝ[cýØHŠvw“deûý£_)¢ú•î6/‚p€pLc½¨•<ˆ0BÙþ*Þ¹·“Š e¥š?çÝ8F‚œ§–Ó»æÆ‹›úÞmÛišÊøýÔæ9°éø€ˆ™T… ³©êÐå–ÿZ4æïèWÛzñRqSSc^µÿpÖ8Ï/ЀÌß›¹™-óPóíÝ؆››DûUJÊŠ20zÇÑ/ 5ÒïeÚ§ý|ãÝ"®mÝÖómc)”ŽqÑ̘ïkûâCæ`ùÊNÈÉ·.Oõô¥ûœcqÞà[¯$4œòeˆ› /Þ•¯óJƒTïóôæãÚjTÂ~žß‰®xÉ~¡{kX@`„u/™ŸÐWl €Ð ·•õºåuÜ…“?ÛTUÆŠYÎiK…¡u<ÄCqUW²©ùRï[cµ]·4QƒÄ$âdTw¤¦×2ÈO85ØÔXP È<Ö\_‡œ„Â<À +¤ÁP³_K£¤Ë0!ã= ˆNŸjÇDJPûëBÖmö:“áöµl@?óB-ý2; +Ȫ:äëÂuæ5û,!m–Ÿº¯v®.�¡èë\<Fä¤úÖjà´Al¶@ŒäØ´(è®ûªð¡ ÞP®\l_%ý\¼!Ä`S´ +RØ«fA›€ì¼•€"ØU¤Et|o]4U‘©¯¼^iORX9[´„<„×j(¥GPr„ÇfYó@YÛך{&ûOqÀXòÖQ=‰ñ½Zò¶Gˆ LùG Uæ^93æêùžIúÕ»àT*â!¾/Ýé„X´¡‹Ó<Öüâ¯ìTÈGÕB +÷¯!è!µTÓ-ó’MdK‘h(ÚâÑá.}± r'Š&aXd@¥y +±Oµ¤¼s<﫱ó|Î0êÝX¢>Lœ×¶Ž%”…íËá[ o DÓ.3 +6á¬õ)q·+U¤zz‹‚æs¨A¡“úüžþÒ|>ÎHÒŽ[NÐ5Çâ� ª)ï¶"0$?¾Û«ú5/DÈëõ[8½®‚S 8¾|¶KHÿLœr 0±éCú¬aÓÛÞJDcß±5tÓÎ5Ö»UúD¯˜)H aïAüh‹Äèç¾7J#)ño—ƒ Ô¼Oô*oÂùõý:§ØK(ómÚ>¿½¡áÐ#¡CÆ’oÐX´ñâôQTý¾í☋`W“‹ïÕmfFåq?-ô½¯Ð#áä”…z—ÄC@*ºª±0Ì8Ö)èyHBJr§&!$®å�¨½GqB*n/†ˆæ•› ³¤å§æý¸(Òër<$,-£>—ö®¼ÇTÂÍÜFšO†ÎÒGB»t8T#‘?Þ¨·vÆJêm ª›º#H9}ÇóC¨‰µjc‡8³Ú5‡±þ³îH½©ŽÆœþ˹.!ãP«¯ïêG76î˪ý±’Õ°qé<ÔãFHéu¨HsÖ@ïêÄ2`ü=Ss˜Oð]œÑŽ7žå|~ÈÙ”:Ÿ Ö_‹¿óNClÀÛÌÞææ »¯Ê¯ÙߢŠ„–µcrK›¤h²»\‚µÎ(‚f ÈA½v +OÙzýYš»·![$ù}ÃÞ +‚|–¦W…èîoð>žM’- ´a~[±½2 ,ÑÏåˆ;Ç(ên úgîŽßÄÇ'&z@`Te¦ sõóÉ4 ïñÛ¥Õ±;éÏêÏ¿@q¡0ILõŽÜéþåñðEßÂ÷ߟ-uÜ) +ÛuÇcQ–DR¸ú:6{¹Bcò+Ë»@À±Ïd ˜ïiòtR%²éù“-"ÃzšÇl#º¢(AT£÷"á÷.ifÇ*óz,”‚Îð~ñÓù p^•?å0@eT¼TÂ^ÌI5ŸßÏ–6÷îžvvëeQà O«*îÌÀÛ= +q!–‚cϱB5zª7? ï4Hîâiº%ÁN£WÔsÎ…œÏ}¥©{)hÍ ÍÍq¬»pß«‹{ ¡jm–;j[A8 O)s¤èxú5\»s;l¼ýþ‘‘…NÕ{YË<QóP,)œ¸B|xh4?:Ôt yåSÆö¸íÍç}ª*¡Áâ&•FÌû•®D�:Tô�õHp÷–Ãø¶–Šœ^çâíê)õœ¼Ðî\kü*(å^ÉwÌs¡ö¥À}"P¦YºXZû\`¨Iþl²„¥=Û^CÞ¡Šz¾ÍoÛ 9+Æš;ÄÜWòRž‹?¯J˜ÿ\Æåq¢ûYZ‘†{ЃëYY˜Daåg½”€ðÆ· +;è‘ɪ%iÇ}¥7c@Z¥Ý[Õh^ßô‰‰¡Ywç…`I9µéêESÞ·Ô¡õ•×X$Ù»Ûj1òG£Æ¹Lò*vÍUðfNü~0ó·ÝµÉj¬sI+øRßÚöÙ;,S8Ñ÷e;¿o܈•…ò}ÁŽÝZÔEƒ#þ¾•˜ù8úZž% ïý[|剢ñT)O´å~5ë¨ÍBßãö{б‹’º¼n÷6ÊxØÒ±¨èñwh?ÕÀ:krj¾_{(ê~ZSh Ìm'‚T5=£ÅÂøœZh·Roq¯x ÁÔLfT»ÄõÉeÛ>³ùt+ùx4!T5H®<íiûBÉqø®lo@Ø*ŸýLÈ UܬȀl°Bìݘù¾VqTbÎß¤´‡LÈœÇ:¬Zq†¿®"M†µ_ÑCéã‘@ó@–ÝO¾Î:ºù:ËÆ"_U'âÚÛƒö~DZȲzù)á-T;ÕŸ ÏßFYAÔ³«´<<—a3jçOåç†-ú“ÖB1n1¤roeè„ŒMÏ0 ÌaÉÏ2_ËÆúÔ€uA¿ôÇ …Ü°ÌîÛí‚ÔïËÇLÇþ·«uS�;š³HýÔãÞú}Ù +>”hoéÃíäžaXëÚæ# TŸëÝ^éçÎöõóót³¾¯¹ò”ÏW@˜>˜„y,Vâ¥ð‚|(‹Ð=®5!K�²ÆzÞRÄŠð™R¹y¡]¯±Ô9Zý2!¤)—‰jBÚ O ¨ž¿¦z‚½#ö6JÈÍè‘Š*Íž€w;7 +9é;LJ5ç @Ôë_x_|XN©ò¶=k<ÑèÝD‘Ô¿xï±ÕX,mî7¥©eÝRö ÿÿ~tæ|}wk!dNÚæ$± £Ík¬† áX »±ëõ¢CˆHMH#æ~to³çã Χ~ºìLGyåRk("§Lúæ±ù9•àŽnú«‚þN·bþD {W:¸FP-Wn7‡ŠÞ´Ó¶gâCÙÆ”ï±!%Ìt'ÄÍ#Î0Ž]«©ÆšÎ.34Ac~Ú>˜ñ3÷Zt~ššæg¼òlíÀs}¨Š#ÈÒãñP´¦ª!õÝÅ™ –™JßÂbìÔQ@nŽ×Ê-Œ{5QÕmÅ› +E~>3t¼MEIHÇâü½\O˜…©È˜÷ÅËëežñcU¨¥$ï´ï¦@ ¾´÷}MpÆ&¹•þv×$Ùºw9¾ê½lŒæg%f;ïuÜß{.ï‹ éz¼"wŠ:rPÑ-‰JE‘¤íÙÄÇ®™Ñø“!ÁkÈ&9öµc?»PŽÉ³¬Ð¿ûzêÜ;Qj±ÑQ +çëu+XB¶¶Þ@ÌŠj„¸àûPDðeB¨bäæN¥ ÎjéŒqÛ ( qìÔÆ¥UÚÕX îôI$EVÎÖCAŸ‡Éêâ}é–z £ÆÜ„.Ç’½õ@œÁ]Ï‚_ ä[½†˜®%ƒ8íþÙù†I<ÛMq‚,‡Z¡Äå†Wo´ EA¨Nwòh°‡à[k,ò:ÉÁ6jîÏ#`@žÊHúÖKWFÜý³!Ã,ª¤€ÆÂÚí§iÀb’Qó]«—ô’u}>A>³Ù<ÖéÄYå18RÏ/;u¶òz~èB¤üŸâ:‚\©öæ´/ä‘ÒÜäÞ¤T=ê¡’ˆ6JÒ": ÃÔv +÷2Dd\3ÀêÚ„´>!3>ñ4ÖâXRëEþb +Ÿ[Û‚¦ãF]Cï½öUCÞE¥ñ@£Âo?Àq.Bz@˜&9¡Cæyÿ[Ñn|zßžª îã—o×*ج”tm“}\(Ô°vÙ?ÄÕÜ1"ÈDüâ9Mȶmj,º`~ZB s]¥Uùƒ»ÂBCæ÷Ö²/>!ãyÈæ‡T‘tÛ§2x¢ÆáæL}9ï=nB^%ó=O=ˆÚç2 »O›ÆúV¢þ2êùÉ0°´¢§Ç’Ë0Á'uŸ›!ž+õ¾_æÌ°—£•zpLxÖ<šÈÕpŒÇ-§™?fï«t ›‹Ç"ï oÇ×(’VQÄ„PÀ8–JO:§ œNî«4‘©—¼²m5¯<yžúE(ãw·^„F«ã8ŠÍ3à·Õ´ÂöóÀpLÃ[)Ë 5Ï4ÎRú:×jÂÈëüÔ³K3# óK®Ó¥ ~Ã}}êܵ…º/iñå· +×]r¡†”ÆúPœjËÊe<›ƒÇšt«Ã‘P['vB^©*ø¶ÄÐ7Ñ1wQSˆ;\Ô¶ª#”èî £æÎ{|ÃŒš„8’®ðC†iÛ‚€P´Û™íãÙdËk,”¾ZJqµ´—òBŒ¼Ë¤N]Gmns9‡´±)Qœ›Çs_ ê°y¸¹„{„òBå!çS4¶r%åŽI’r‡‚ÐÃEÍ‹8újKù}¼ÇU7–zÊoý3dÈó*þ¾–]½p5µï½ +sÚ tIŸ²*`=>{Õ`ñm*cÆÂTÞ…Á õÞ“€ï’øtu+’wý'KúÞ›xp@zûÕ& iݾ¢ktÔUD^^!§ì1²]\ öߌ½K¶Å8®#:•š@Ų¬¯Û¯›ã¨^Í¿û ¹Odª¼›ayÛ²D‘ ÝîüYªŒ–}¢´…± 뺳©ÜSši¡I¡JqÞ ˆ/|µÒ3Qt¹LKûPWY‘¸%݇½ +©®“"g>½îœË¤œYºÿÎÈï.ââ“ +"VY›Ð˪ +Pˆôi™f†=«Èý/$6ž•GMÈ÷ÝéWÓJ'ÄPŸ[¿Œ‰RÂŒë úŸ®‡…U/Ä) ^Þ,ÜØî‘ôr¬Nhnêë¡a´£H%·Èj®dA F™g¤u@–žÑŽ–¦›™ÕöW`UÙJÇÌ4Eâ§H"£¿b¾sEªYÎOf¬?°U~Ip¶€€ì™ù„.GT‡ CÚS;x¡9ªÙ8Ów¸úé#[ñ¿pp&as!Ý¢ZÖ#æÝg|ñŽ +ÖWìïÚ /ZqÕU“½Û>‚)Ü6! +À H±B"-ÈioOÈ}núú82ã¬z¢Þ0~¡»Å.FH±L3È-XÏJc‘•4r¢4õJ¶C@—É"¡‰õ•¯ï®0rj¹ ë‰_cýe0#àÏÌ� %óõàù´€p7 Ræ†ï™ÂÒX/ôŽ[] U,Ú2é¢,ÎŽ _$hßYåQ÷³CªÇXw \îŽ;…òÂY<Ã÷o¾ÎèíSxØ©êûD¥ÙXž‚©m'm¢Jƒ_§;§®/A ã—ÙÄÒÐÍØ|§iZl\«Ã븕¼.ùû+y@ƒœ?•m#ÒÝqw™ÑOBDãXhÃEÅ,ºXУõñ ëc!ù²ª‹Á6žúÊúñ©ä§.*Š3]²/–BÕõ»zÿÉ,4ÁSkC·1Â/;œ2é ª±`'õŽYúì(éâU +%)hßNîɳýʇmÈJô•K<š©Î¦€— 3z 5ÊÍBš£‘#Ï ™�l[éqÉmqˆ™ÚúÌÒZWCAþµ%^˜3¸A û0pÝ B!7}í8YP…Q?ëNš‹ÄëÂÑw0·$TØ/ú”_°ë2¼7$UD,6ìÝ<¯Û‡¡ø*;øëo�&Y~§øÔÇWŒ&¡y"JŒO…ƒR³ñ+Uճà '‘_-µ óeAjð“á¦ÿýN„E”AàStZtF˜ n4vq ÐX¾â[MÝŸ‘Pž‘Þ˜#~| Ÿœ/SêL#,•ÅB>} ç<JŒCÝú®E…䀸’>`þeí§´9½”p}(ØVÛ¥¢‹UFNv¼ÎÀH›bCq2!+¢6§V¯=ßê~2脺ÝÎ&ŸÅ¡NŠt’µ†æÔÛ«{0Ö—oþv{Ü×g-5ŸQé{÷ƒÊò£ #ð ‚_M‡%Aö'¡¤ë.³Ê×ýÌ +[˜‹?Ÿ–§:$œà¬™-.È+ênßåë:¢é^¶=¡„ëÀ%P§Ã‰Aþj[C€.ÙM²FAp%ê“Ó›?½¬kµÕf/óÇÖÓ ³¬¾;†»¯2¡Á]ú9Ëïb¯ô +²£wÇ!ßùÑÞ}‚¾´Ì”„*&‰Á©×+|Y£ö—te±‚àXòn«U .ðoä’…cLÔ¿0ÌÙØa—L ²!ÙQÚ„ÐŒÅÉQÈöä¿Ÿ•Z]%§zWHAØË®7 +JOø±9;ϧúþkhÇzOîk!×ÿj,TàSA´}ƒ'è/ÜY²¾Š‚82Ç…û8ã@Jpù†+k¶˜cØ;$· Ó YÜÂu³Oc¡uQª4Da)ÔÌ‹¡z@!×ü +rÞÐS!DºXAû·¼wR§X ا©£¬)›77-&¡j•û>÷ý‡PuÄN]ç#Ô#²QöB–”>º ié¹`;iò¬Ée +³?†Å=vCG +@ÐiüC'‡WÈS3ç¸ÊkiNð€äŒÌ±Î›_‚P±äZÈtº]•T/¾^æĆyÁkPOš”]`דU«¬s3öÚH`6}’²o¾`´™¼(ŸÆ+@¡ÙR¥2mðõÊóˆÈ!ï’³+LKä|ѥûdô`.ïdäü¨À +îÜÕú u‘T3HöŽðÉã•7s÷4ÊÚ>Ï9ÓÁ<ÿ¸UL; [OÁ Òán›Â3iîCzr'¢[£jƒDOvœÏ„ú¢ÿÜ/d‹™óe¡„Òß,œ{ÕèÑŒ/“k ʯjµXúØ¡;ýg¼›ÆÓøå9Å'. „„Íuˆ™ Ã{ ñb—€§¢ï~ç_\4‡¤”¸AÂnDÑ£apX1*ß®ò5P>}yøЯơÇíšCîx Ž÷xSP¸™5ÒP8ºn±žñ8£æ�ê3ÃÅNt¡?½ð&æ´ôäÝÜ󖬈ZIô;FûB‰n`àð3Lôüdn´¨ÿ¡-Ý‚Ð@‚=Ø»±:kú½ÑÁQÜ0ÛªI‘3Ñ‘ëø Ì #p¤{M[YGË]*öVNûÒ®ç攵3H(ähûØÿn¨ÿ·l7Ì! ®9™ƒô;vi¨¡ ‹sÔ¿—?ƒ?Æ®†‚ä³ÓmôãgÄÕ>»y7 +=BÑK,˜…êÐ<ÿÛüs@“ü*¥ò�§F0P‘ºÏeV QZfîR¥$9c¬¨Gh¡ÕQÍâXc›{Æi¬·0Êx8&I…“µCM,¿_Ô7¹:ásεÍNÜ.ŸÂ_^涿LûĬm™÷_†¶vÍ$$-ã½uzí«»žû«¿bsŒg÷Ö”< 93y†,þ'Ž…¤éO×ÎÆ« +Aƒ¸«RʉÁwä Yƒ ÕGWzBÐ7ùüÄ€`¹¢j§›1CT† bÁ9Á¼Ý¨¯¾*+ä§<Š<G¸÷ª#}Vº«——u”ÈDò…'·C¸I.Aȼø® ôS¯Ù´%û@ð}¸á}ï8i>Q/rdÁïŠp¢YC}(SµÔ°¿(ÒUõÖ¿Vv8‡ a[ÂœcbŸ<t ¢RMn‹(…P~› 0"™Øôë@‡ÏE'„X–+îž^he„TIøÏdòÃmf4.¤× ÷Ù!ä^·|¿fQ«îBFÿiY¿“ÉÞž¾ƒuÒ)Ë 8VZ³";-÷¥D-Z¿(|®#ÖüŠ„•†’{ZÓ…@òOZ‘qAü1߉¸ +Z[Õ¬"oš\U¬À °¨ÎôÕϺC°½Öó⇨|äj cRüÎwd¸.>ýc}ß©–P™††t–™7úå«WŠ¡NŠwy[ë yªNå@ÐFx×àl¨TucLâ ¼,çÃäo·D¤ða齈{áÀ1Cò×!í—{ñßѽ‰GwÓ¾TúÓX»Ø+; +¹ $ø…òGQ¯ÉýÓ!Ï$-;OQÑX½ýqÑ>Oú¹Ø²²éE7 éOræ‡Îõé3¸„£CŒ…•‰Çƒ;Ü.ýBFÚ/6Vý®ûáTÍÀ¯×²;!#s:çºÞJYû¾9TO¼ËÜ.4ä³¢,ÓÉÕ²r_ÓÝŠ¼£þÔÐÕ¡4Qí—†�ýí;}Iq#’+HBh¨›äA¶ûb•÷µ’z¥;zßt73èX/Èèšd÷»E–"º¹>4ÞÕ/`ð¼É|„Æ‚æå]3‚às~Ü’ ‚É^ ÐÈ6<âàûBÜ÷£§#º}üܦ±Îùµ°[f†»< z8¢L€[Ïs÷®öjïúÊž/…ôb +ý œ›i +Ôù/{éÁmŸÔÆ×\~8®3ìqvjj¨êËl"o0(åðƒ–÷÷mÑ·‚8Ji³Õ=ª5ƒ‹3þ]Z¬7KCɼB»ÉAÉen4Ö9E<⃊›u ØR/6CMܬ« u÷º“}äwå Ì[~A`\Éó¿Fé£#$Kß1þOÚFD}³ËœÏdÔx‹ÁÓ_Ú oòùu�0NHƒ¦|ŽÂÖPÚËü‹P¤‘8ŠÆ°×‡Ž²á0]þ,dyx4 77fvíÀÄN½xçÚ:wûi|ÄÙy q†g(è@Z‚òÑ…îÊ0BŽíµŸ°{‡sÞÿ´s$R^¹ç°Í]JcýøR#Ô):‡€€ü´J¿8Ψ6_\9“¦È‚ܽ®º…N]8R+Éqâ¨óðgÁL’m„P¬Ð{ø�é +ø_¦îÞ +’Ï•g jCQª�¾>^ÓÙ‚„NÑq&m/B(0Ž?ÔU îSÀ©MGýóšÙÚ ´’uBz<Œ,ÇJY½œ�î:¾Àñ�_—©ã/¡àß-é¼fjÊ÷:Ëô.Ár®]Ô ÷N|oûÏO™ð ÇìlQ^ë’,"�²ÑÖ;³Ä~záþ1B²Œg((ÿÉ/à€®ÒýÞã…QöOdv…Ä/ßtSµ9 ëüÊÁŸj#c¡EÕÏÁ+þ¶æóGlì€Ø‰$§Ò”žÓPl"‹v&€Ð“EªQ?Ê€@oÀ¥vô³ dJå€ ÐC]½‡ïdˆÆZ…©j(Û) µýB÷ß#C:×…vK¿|!;ASBp4TN™cQˆ4µuO©5óB/šÓ +òYðâ±7 =# y»Î&ñ»¬a·í^£šNœ`–ཿJÒÅ@¬K…}ÿr@± +3нõ;5v(%C8uKuØ®é^ ÓŠû“M¿ù£X�ßØŽ4”õMtÞëŽïB¹C:ˆ ^Q²ÃìsŽýæ¼AÚÜ©ñ +wÀäû‡‡FfØñÂC"€/´‚û({ i÷&á›Aføî¶Aä8jc,P(s@eBËzѼ£”k ¾égÕ|†xdì$íÈ5±Š[ºFZï¯8ÎYâuv6âq æ^ì]ÓyãüØ©s$djî<èÑé|T|o‚°ðÏùqT7Ƚ«S_Bœ¬iÎh T_›«U=× ²°0¬<³Ê]¤ +ˆ"wðËÒ‡³>ûý‰ºO´‡Œ]û§ÁŠaôºÚB‡ê•)‹A@…Â{h–ì¢Eq,H7F™C¨Q[€Œ4‡$œf‡Cæú~8Ñàh5‚]1¥LtÓÌhõkËSئgê™K»Aá÷¥ªÞ£Ç<ñÚ–[PèTw4UI˜Ë/ôþ¡ ðýAô¢ `󯕒[p>ô]1Š7n!©›Ž£Ï;ýB¸BU*E¶‘�9Ù9+ä´s(ø¡ßy4Hˆ8yC)—ŒöþØJÁ:r5YÉøßCª2$@¡Išbg$¥§Rþ(øÏÜ)úD’ÇGVšéˆjg-(‘Ϩ²²@½•ã¢Œ÷g¼Ú!’´_‘=2¼¾¥µž2د ™@±nuWÙ$+ƒCŸõ氛Ѵ«#Rõ òÁ&ʵhQ‰)VBÔYØÎzÖA®>•Ä�Á:}J[úH¹áûDÇçÝ»³ 5uàÄ#jpGŠ¤Ó‚¾¸ +ÉþQ!ö+†frº“B^hýáõæð”Cñý1–ð¥gÂpwµd[^i¸\,±M##²gUŽ=_ñµ„š™G4ÈD…°å‘ee‚‡CAw¶õÿSûkb¨ýÇêã¢BzÃ?œªÕEÈü!‡ Èý‘ƒÏúYµ¤Ä±lß«¦wèǃ\¶‹çt1KxýD1Ò8õ€@b¾”'A�æá6×&»b©vÔ]‡OH‚œÐ(Ž¯'9£¾‹¢KóüX¨¡' ”³ì iÿØ7Pþ‰$N©ö]¸!E8ƒ÷ÍMÒŸ2Üžî)Ýé$lc/ajÁÐSÔ¸DÝsëñûÁ™;Ø‹ÁvRÙo~H‘íbY +QVŠÔ,Q32±—ŸóF£xÒqFÈéwÿpïÆIh±ßøð·ì¢‚ïêïë`ø}ˆ¶<@ðÇL:A\P¢VD ‚§ v& ‚Ê\Ï¢)DúøÑú ³}©‚¢‹`©ªE \¬9»‚ðl¢0ãB¦t{’;åôt<z±§¿$© +"Ò{$4¾ûö³£Mâì*ïB†ËV 1R÷Ô ‰Ç–樂ª§²IÞŠñ÷ÉòB'T•}A�‹¬ œ#i®†D‡ôLR•‰4VJw¤N>߶^Tæ¨ÙÖAp³%tË|håF2õP0Òé;•±Q²í+L¤‚Ÿ) BBîŸj_€ ÓvV‚áä”9DŽu7‚§·"€>4ÚýBx5Utäœ*‹fÒ<Gˆ·‰¦zYƒÎoò´…Aù€`gû궄Ts?!·-MNÝñ*'YÍǵZˆº«jJÖï]ŠÒÃïÍ!!¯Æe"H�õ1VÚbu,æùf©_;*Y€±Tõ|À§¯är¼-tK‡þŒ£~tm�¹ÑùŠnà9U´Æ h3™E˜¯žNŒµKXFÔ8a!n/%a9žÆæÄOö‚ÑÌR;•#€½/‚fH_% ¨;Wr˜KÏ@ tÑJ›¥ÖÎ; ÖŸE÷ÎÇ¢ˆŒŒ6£ä2ºváû'q·ou³¼‚¸ ^È{^"X¤‹‚ä “r}€ Àó}z‚ãËõFý—CÔÝÒÕšyájŸ}Äš1CÆZ3õ~&æ-S€ ·ñû.ÐÌFM€ìlÒä¾qUn4Ö÷ì°.tTèFð½ß•jþ´¿ƒ#ÝFØ5�Ò¢)Wˆ»AËs™CAöo‚«&VïA€¥\@ð Ý}ªÅRøm +q1RCwù¸aézJóÈõ¿%ñùÉé|Ù«ƒyžÆ{™Å,zÁ¨ä”nºd4†Õ#ë÷µSWCA c»"¬Pwº¬9¼Ý‰Êqt«b¡,Ýt€`Îydï¯eÞßn: ÖŸÞ´‹¢3Ã0#yä#Èn…É%ý%'>5Üq¬ƒ8鮪ÁÜ€QˆKÙ…°)þ´›€ŸÒSPœ6WÙºàM4B_Pc-ãÄ.Tø.ûwzÄÃ|è•«@³š�)b ȆîWÙÝ.$OÚ1BÐÚq“ê”õÕ …}‚Drߟ!HÍÊaEý›Ñ…5Ëb‹¦^Ælæ!Ò˾Ÿ=½/´¡Ä¹[¸}�2±Ùç´9o°Ù4Ö<? îXÕSë/E»VUë@øJý…€‚ŠæŽ r9î|™óð®æ÷Á*`" +-R��oüdCx,ŸøâÜáÈ¡*† á4Ôb(´mâ�JÑ>OfºîrúE„ Ûp�<èhàûjñ³ÎÎøÉréíªÊ¨jåÈô¼oxŦÚáÍ@CkŠ%N¹ûO¸{[è©fø¡/5Ìq ò¥S¼ $>rî@Xøh/%äj™g©• e/‘ÝàaŽ¯¾'<@évîA¦ôOg@ +Qc¡ÍŽ>¯@A +äuPsug8~8И^ƒ|›*ù´C¦š‡B·£w›Äë¬rA¸{mûm>Æᩧ^ =„榈9bÖ^×ÂØÔóéPÉ®fVè +r—éæüt!СòSŠìë{+jSÅò÷BŒsü™x÷$É]Áº|×Ï®~¦ŽŒjï¨,}suÜúÑ U6œYºLÁFZwR¤öµQÆ,MñÇ·õNÒb³d´×6P:w©€u豪ôøáà²: +Š÷C±Æi¡:%òù|@$|½®´),pƒÌ·Ô +/u)4ÖBךݒ.Ô ‡~¢¨ÙA®ŠB²;Û!y·TCÝÿ„¨$‡‚Ìݤfؽé–Qæâã¦É—…�*ôhÃØth_…J$8…!n/‘"„ úö«}.<x=ͼ¸.L¹¯˜ÇC”p±žz%ë- aßû#PÕþ±v±éUA°SíÕ!/¾ú]ïüY—p¬¾ôê³Ê#)‡îBd«ï^\c`ÆÂ^ÊÎÛÍú4…h½.x‹- ±îÈ?B³UÈ”ùv²²Õ’Æ÷…?ªi¨mW±f(B½éI…÷ᜮ„Èÿôª¯¤¥3RÖ§¼ñ¦é¨êfÍÐó0ÞŽÞŽúp\ûâT.`älCeDÈäØWÌ!ýãë‡jÒíð+9ôÎXw´.LZø +òõÊ”�ýã×!'Àó©½^c¡? /|HôšÒù… „Ëñˆ.oü™ +rçÿý×v ca11Ž5`…ö¢z*í³’ßÒ…@Àú²Ä<ÀóºgÍ<"ƒb¾(n±c,Ä +ÕR¡¬¹þÞ¡üú©ëGÖßI•¦ +‹Ïð2ú™)9TKÅ<¡¼ËFY†,བ+3ÐJ•ÀÆóëÚä +æ5É0šx*r]Œ'°7WTk”,¿ EM× u—rH´¡E¥µ˜iÂ÷šÒ~¡*Þº¬ž WÿáYUQ„ �æQýŸOØõ´S^©(ê5Ö©ŒV@6ªw=;üï¯tÅXxå&>õ»î7òi¿^Âüï´¤M£þR<¶�^HmÕ½7ÅÆ9x“’“j)ÁäŸúwÞ·ê¡*.ÿ(:Äò¡z ÁD)Rʱ°S¸åù*œy!<õV¬ÂAa{ŽlïOºl2Äк{c8ír®¸ÿBóþNŽwøöó2îÓx‚}aä±Hþd¦¶ÆB?°k9:Ÿ†FŠzPGS„uïÿ5£?nÚFÎ ƒ…ÞèPø/JÍm·ÓŒ 3qѸ«Îý vv‰¡Ô)#T£h%UD ©¨òÞ@R)jðÀ¸Ñʉº®)"C 3¶˜Ì<¯²±0¯r¨ Ÿ`j…Ô^m©/¥ +® HË?»xXÒ¦}X‘ÌŸŸä@ ++Dm¯ô%…J¨ÓŠ 8 c¯’O¨î&-ƒüõöûÐ6‘¾ÆB·tÕ£€fNq +äK¨žTfÂ)¼AÈMºV©çXSÛ]îÿðYAŽ?C Ó–AÍ@7üýù_´!¶ÃöÎ q¼Ó‘V2?ª3@!¦v|GÝ�…é[ï;ÛHø'v·U¦|ô‰=’ûÊ÷®{×)Õ¡Ô[Ì¥î_ôt/þœ¨ SµäƒâKùx ¥—^È)ˆÊÄMñŸ©BØEå§3Cõˆ‹!êç¡!FˆkJ¬$@ƒ•í’œèœ‹<º„&ËF‚@ŠC¶¬€@ÏãÙ4ž<¾çë‚âšN$D¥¥? +X«cy܃°‚ÇQüØ5ôí~S5`œ@düÑñûÑD7È¿âÔn@ö[R×Ë÷¿) $È—It …å¡öÕÂI%4O[ñDW½ÑSꂃ¹nB°N·Ÿƒ+Ðl¿z4Ö'TßO&** ²ÒNÝ 8<ªMˆ ”óIVO‘ÖÆÑ‘µ‘AÐn0ÓêBvÒZ‚v‚ÜrÅÍ«jÒi,G¼f°„êÒ +úüBw½@–*²èrÌåS!V½_cWHáp,ü;`Žg aú„-S“fS;!Å‹Õ ¨T<üÒ]z¯0 ò™Ùn¢&–cvV¥ÔûþÞP '!ƒ”^PBî¼v¶Qìÿpg¸ÇÇRÏ¡SHØ…îRÍ]òªÎé_Eǧ6WÚ}ÐgJ:ÇšáÄ.Ü¡|„ûÐ]™½õE˜ÎÃ!ø÷sÊ9dÒChWCaúÉ ž‘Nòð€F`öñ=§é$HžétÇP“N8ÇÐñ4‘z=ç½~’ñ3UÖ´M®:óþ³2æZÒòWGÏü¯–›Ájb“‰ÜýqÏ=éðBº²Y86Ñωø2èÓP0“VÂT¨)‡õYû/ÌàžtrwgñH81 ¸úTUQ·]Ž€PÅ3Ð H“û—¬p.+– +Ý»«™AÎ×PyFïHBm÷áä¹ëþ?óJÏx¿¥ÏÁží‚ÜÇ°‹n¤YõÞˆÄHÝ´AC¸Ü\ooÈ5Š-ï‡Ðr”TØî½€V£vf5p_\±ÛõxÆòpH}-5ï¹{ÁrwñŸ”ÙOD¥±ðÙôÆfŸ~å掶H0•Ó$-ªùü C~ÿ¬M,O(EÝ°nü°ç¨r“M§hx£ä®ž7ƒ€Fä…¦€lÓ”*§ ¸7ól £*Êbvø…àºús$Ýû—Ï KRøF¦âÆ·ã}çX(¿ÍŽšç—ÏÚ>ºZ/¶ü�¨AŽô>F‡qÿ’' dm½»;¡&ÿ<á½j¦šãó–IA}mú Taü˜:¸[bºC{³®G¸‚jZø_éÇ:¤Wð•þäæÅ•ê0 ªhÌÀ‘ðñ}©Í†lÂ'¯¿â‹S¦¿Ÿ€Ý ür³à·‡À`P/#ÆB÷¯S÷tËüZô:Y€RæG½ß#=ßÑèÑ©É!=Œ}µi¡'RA™á<ès K Æ“ aBn´*lƒÀ²¾~Ã'Z,#€_%¥¦ÇCPM0¨U¬°"¤h]œz—œÓ¼!ô£¼ ÇB|…4Cô‰c:åÓ0ˆ OÔb5vµQ²O¶h5©ùŽ&–ö›}‚tÇÿŸ<˜ tO%!¿Lö_c;B¾_ /´zˆ#±äª-˜ ó€£±öéõ`‚MóÀD¯¤¯h²6óSSvP¯Ý6’«1H¶shžžýS_�ýzûª2Ÿª¬©±Ð¯Æ&a¢Âk#Š=p/kŸ¯"¦~V$á/Ç„DU¤‰}¯Ó}-0Ü•�:ƒ…÷ái® øwtíD;ü]Ð|„1ct0|¨ø?óùy]0`£ä +§!*Ä•o6HjpĦ +!¬¯,7Šï_;dš"«ÁoùéX3÷Oõ{Ë÷æˆ6]nÐ[Q誌nØe#™£lUìÉû#„ÿ#ÓóúYsü´ÎÂ]e:ËB«.ÂÏÿ+w®Q¾@/u}Þ¨oð?DáHºßrlý¤lÄXdíäÓñ»À +^‰0ëÀ+žlAþ¨YêÞùšõ1"ñ^ziP&”ÔXòþѪ +Å7œ›1i‰O6Ä!×M)c<• {êÿE³:$ª¥ýh®è'4ßÞ€,ôg¤¸ùU m4¨$f 4¾JùÌì*z/Û6 í—b]XìÆ‹Íëi;ܶ8JK÷3`Ã¥ÖêlòëD_§-ó¯5×KÙÝ8Jà]U-BþÅ1ÇzW3gìB0PóåG¹A‘–zÄbÕ²“Ì@ªÒ§e¦ï<íê¦a»]h“fPÊ…€È¾”ok‡‡÷4Äl‹ê‡ä¸²øzÐh+Q<òÁozƒ´x>!¤fèƒèîncÑÝ@ó°cÜVËËášap#{ó\kªÑâ¯2Vؽj¬t(ÓÏZ+u1‚ÍÀnA~ í÷ø²ã+Õg@è'ZÒQ‹§¡sI¾|dÃòCO¹IBê‰Æ!àgþ.™ÆKm† +O”îšpÕ`f‹h&ÝSõÄU>¹dÆÔÀrÉõYSþë?Çqè'N¶ûh,x‡¼IiÛ–µÝá+ñB¢‹&cÂEªJ´22q-(yö€´iÊ_Âly™‡ Ê=ìq&*Zø¾`ûjÖò}¤%5‡ >Ý€4ÜKÛŠc¡}¸QŒQ¨ÕCbüL-ýw$ÀýÈ$,Ývmv°]Ë¢P£t£¾åäſö'ôŠ]ãSž èdå[íV·f×ίÓà %>ƒ€’}åÂnXhÙ)iýüé§M¨RÈ€ú~äõ¡ÿkóTý“øÆY+©ª¹—“ÖG¼«"°Ö…==áMé²=óu"yñÕ¥ðÀQÜ…PrÕj¹äX§·Ì9 +jnrŽ7ȯˆ²AVùÓOÑ�ÀßÕ.”qφÎ@,EDuaü=fãà)AÂôÐà‡es¹rAV4¨k¬kØ +Ç\ :z“3ÊØr·`oiRx±`€SràëÒBGÝIúV× B×Á»*ßßØ•7ˆªWü®>4@ë߃fƒŒOŽuÐ[‡¢¾1HG~á”OïÆó?ª""ÖëmP¼~c,È:'B/]bÖ2u€W1Ɇð"¥l¡°w×w‹•Ò%Ï£åâFwfåaÉPUÏ>Ç!É<ípÒWHßP 2!qò¾†Áa<» Ž\;@�9Å¿Ö ò7ŠDò¥uÊWK¶„Bá’$q3©Ó\K@s"´ƒ|±°g¥ïºA<K—¿ +ßÚk„Aëù…È11ì‹>Q5ŠmüQüsIv ƒkÉ‹‡ ”1öë€Ò'©AB,oÁÆ¥e»÷ ºø ŸŽqz>È>É„0T©Ôx¡e¢¤õ8Å£¥C/ö€þB„(·—¿&[%5¡~™ÊЇ…ø>M /"épþùÞ5#ÄýxÃÁâÒ0(Øs/¢Í÷Ëœ +:/]_ò¾•Þp0‘AeË”A:¥Åc«¿÷jE$Ž uæ k°_‡¬�¢\>*’#òÅæ +ÿ�¹ÇX¡_¢Â]aIÒàÃADÎB;…*HĬA¸Û•YŽ!¨3åÁçFþ~D׊„¦®—M‹„¥Yéâ$ˆ¤iËX4šï1w²-Õ“P–HYYÄû9Ï)Èñ‚D]K+í9Í'œá¬>ºÍdc¥]±ùRÊ w[ô/B?k…p¡BaM‹:ò¤• HšRÿ ¿žWrÃ’=˜·×TI3ìâþ¨¨l‡ÀEg… çýõï1Ȧ®ÿ'TñYuÈÎ!¡Ð4‚®ÐÆŒâ%4G¯Çê 6ʾÅP¦4#7‰»“ÿt~�rÀ#ÿ‹eõó{ø¬¦MŸ6FâÕÔ¨ÂjýQèd|$UˆÙí ÷S‡„‡¹¥ëtí®«TESÞêè¡iš‡Ðc +ÍtGDÏù+ÈÝÑJOÂ&\OU²B*<˜Áú˜T&ì8O&G_ˆ†Ý¨9|¬óÈ€þäÈ1*¾¿ ?Ù/$õíRyø +ÞM¡DÛ÷ªóœ$qCÍ–i%Ú^í5 貶ü¶¢ä’E×·jz‚†÷‘n˜°¾r&¤^5gS¡ÃP+ÉóÙ°ÒxHƒsÈO¢í³ä¢7íOAŠ,Ǻ÷zCEOÄ•F”>-À/,”;ƒ€Ÿjc “W›7@Æ¿¨±^ûr+åðI¼–èÛ…QÔ=k¾bïF¯µòé†fõ®µ,ÌJ—U‡Øù%ÙP‘xlZZçxCÂfºòT;È–mf©sê©;…ÝfK,=¼¡½äÉ—7¶Ñp¢Ijd‹»C°ýFÓ¢CZÈÇË·œeÑX2 +Yê8@¡[+2Ç€ ÀÛ�„˜%€pÃDµ×r”*eqÞP[Ò¬ŸPÈã©Jí™f´€ð÷ÀO.’SúÛYõ£±'~mt…4²¾í1ˆ¨¦‰Œ:Mçìtmë!Å¿Š"™ÿ3mšúAHñ‡Ö¹ýƒÏ4γb¬Ãn¼å¿5ä5jΘîÙŒT¶0ðÉÀIç„À þô³Nk¤hqyºŸ ›õVâw!Nƒ|n$(MoUWøA Áãìgê§õù௘"-œýì¯3arX÷xâ:¹/A”FÝ̇Ãå\eJü üfï¸Ï¬És ¨ÌÕ€eèå" ií¥[,¯n7‡ Õ“vO‹÷sWû磡ù +Ôˆ" ïÇjÁ÷ŽXuÑ#ðDÈGEX +¾È×Ô—N§ì!#tË55ÐÕ%¬&Ô„åôÔ{oØŠÛ™CZ:d<*ÚDþ~#Æ)ï'ÁxŸY±/GœÎ®B椦¾Cà€yçÇC5š× Ãùˆc!+ÒD†Ryµ*£1sÃpÃd¤äƒÝ)8ò�©²€p8îÎ’ŸÅÉ´‡” ÞOQšP—o©] †j ³G·Á…LPÕéÌZ<¶o¿%Z¬ß‡uO²;Z”´Ä" ëŸ ³¯ÐojJÔâ" +ÇÞוˆ<MÅ«>¥^ƒô*àÈîLpÁú»¶Œ‰à ¦^ŠãÎþCÝ;ú_¸ÿYÖ(ÜóìÉß½7õ¿ Qž‡o¥ +D–Æ°üÞ×Â3@«ÁýÖï²¢BÈùÏ‚ä&KLà Ÿàd_¹ÝúF¯àóÛWÎä·§¨ð,4�n€ E)?¡ÚvÒ'èÃ'{¶ù BQ,Cß?ÖlOâ^ìFv‰7»CÝÙªÀŠ(t8±7ö?ŽÚHçP^ÛQ $#ü3Ž�Ü¿>.±’77*Øtd+=r_Mo¥ßÂQyŽPáW0t¡¬ýûBÿÇ«¤xÇjðÝ~”J�HtKìó†CßW÷|C÷P)1Hô¯v…E‹TÜ7†ºWé-ʈ5±¤Qùˆ‚¥âDm‘rø)èÜt?h,aã]sÀ+Ie‹^�)WÑý¼É¦¶¿P#{´ ØÒCÚ܇ÌSšÒÓoœcõêvd(5`½~8AIÈÖ-Ðâ;²ÐM°”‘½ˆ`ÖÇAÁ5êý^Ùgñ:é¨ Èé!kä7ªfëA¼K@y[ ªŸ6Q }£lG1HœÒ~‚/Jx/Ín " '=hf¼±:…4Ö’† fs;ŘÈ!ëc¦£ Ò–la1hö;²KúMcÁ>KÌdGAZVÙ@Nî³k¾Êò–3‚CÀþ~f´ø +²Êœ¼D!ôTòÃ!X›"_ƒLü=B4žÍóótĦ`NßP).«_#9ÙͨÞ*¨ß…#‰Ì#ò)O¦ß}±=çÆ÷PgÅI†º¿HµF‡Lti«u¬žjÉ4HHöé³y Y¾GœàÕ‘=¶¢)|I‚¹b^9dÅiˆT»’€Èý@%ZcáGµð5”DËø¾*/[»XÉvÁ!lÍu²–AÂ8L&äXž¢&ûüÓ´¨�Á1Ìoº£(ØÅXú÷L”{NGáç~táÔTÇN ~~GE[¢/QÆ|¿{ggùÝ ^F×þv!«ô§ªßm”Où¯¬/PÏB�~‹7ÀN½ÿQ®/µ÷>;f‹§Ý… +—l^fËùŠ[6Ò´!FÈ}ßPJJæÔXh]æÑŽ¨i&ÿM©ÍiÑá-=¬ßˆoD·ÙBÉ{4~JÂÂPÆèÉŸþ†¦ÿ(ð-W2žhVqHð5P‹Êx€(ùºÜ•f–º\s ‚,®¢A<;÷p_+¹^†Z^ŸlL9ÒD‚>›ÅEµ†ãû,ZƒWBHt^øâ…âÂ.åSƒÊ±Æú-�%=�.wK»9Îö@ŒÓÃ7ÏÝ0[†ñ€”éCmªø{ÿ¿¡PXÏM",–9”3ÄÔ¯Ø+n»º·ÌYd~£X-…KÐÈ…D’ +Ži_jå;$™ï¯CÐs5‡¨&2•äg燡P§ñƒF 2àˆ»ú»ôàâîž:¸;äîŸz}„ôŸM%uÃò¢Ó˜®X€ é˜G„ þô>@°MÏfònAÒÓ!Ycýá6ªìOÉz x¹9Bƒšš\ùîrºƒ²u†ô«È)‘Ȩˆ~w®«ï=•“uÛú»s{@b°.—=2Ì8ɨ5Ž‘Cb‚)”!H³f×ÏøŸ 2¸ñe}èAŸÑêT +}Ø…@sijX&Êÿ2î3È+9Œ®I–>Öy¸¹ÂÕÃP=õS2D¦ÐÑ%SÆ™‹'>B~Ý{µÐ$ÒÀQ¯w†£!~™–€Ôt©Að‚ßzÞ7Wr¿ +gð06vTu1Hkê®k‚è2¾ CJ e<öKgJù +Ç= ƨ‹7úȧç{´ ‚ʸ ^F× ƒyP´ µï"·,nãÛ +àÇ'”<«e‡„Vž~9âç—}s ø1¾Z?ùM5_¾4Ñ6î\騈¥íQï› +†‚”b³'+”D¢¸"\ÈǺ‰~W[S’Œ\RHA’•¼Fµ«šºnŒVI ôKiW @ÍÔD*äÌha•3ã¾¼;ø[v·çC‡@Ø͆Mc…#žÿý>íUÄ| ‚64³œÐr §Öd ˜8OùDQy `@îÜ“Aü¿Ç„(w•`p”´ a ç:ÚAy²iD܃ØQŸC Á½FD)Q´‹3„ÎÐ7“3âÅm¼›5 wù½+éÌã +tMZ0Ù ò÷O7óHªœ?1²GO±Ü}òþ +ž´qÚCÀ0pÉÉÀÒÌ¢kP{ö¥fƒœ°6ÕX±-êv¾q ²4ÇE`ùyz<ì´?ªŠ©" Qº ÏÏ~·‹8ìÒ§ä�b¥ åò?ë-ÑšA ¼Âj=!M,N‰Êí32A©Yv—GRæ¾'¥ñyŒ—.ig©Ô9BÞìÇtR¡Ieÿ$slŒ°°\ÎØáÜQñj>ÖÇÝ:yðFM̼™#‚Ô-JôtСֳ´QRˆEØ!h¸oª+¤9 2ÃTRWQj3cAËHéBç°7ºµ3VmrBZŠÎe º«é*wq ±pŽuWÎTŽBy¨V;$ÓO‚ŒížXü]0¦9ž®rŠÄ›ÆJ$> d‘¥ÚíBº.9wöMžXxóÓK@ÌPÃ}c¨ûÊIÔu +î‚ïͪú/!P:jlŸ5©†â3ô€€þ”Í;#ØÁŽ¢Ñ‹ß2 +{jÐ惬´‚ƒ • fABjëG©˜gª¸Q8dTCà-õmæÍ!Õ +––>w}p‰zŠÄâ¶d`*< +¦!ʹõ™ÀÌ|v::ro¿áOCݯ ±?œ¨ûqÅ3Ü=ý#Hô†y.�®!-Ü ¹’7Æ®ìnúnœ\öý"ú`Oòü塨uw -»4§ê·ŽÔsa +Ìm‹Áç§!°CÝ í7$¡°äx…õ¢x@…ª§/8 <3˹’DG‰Ï(=§ü: ŒŸí'/îwQc×({A—D rŸà;C’Ù Ú%òÓ‚zcƒ<û矢‹Äù>þ¦M‘’KMƒ¼"rœæßøÐ9Ôý_8o¨£¨ÈG^HJŠÏ^°ÊîŽí5ƒÌ%Fƒn'TÇbïG…ËE~U‡ƒ«$ê{.[eƒjAª-â¥&OtÐݬ]ðBTü9•vZ|îÒ¹êaÏô0jà}eaΚºÞöÅ‚Q²ùb( Mh¾)Xmˆ™fñ„T ƒ¬"5à.u¥8! '½!ÒCfPïŒ;¿Ôò»ª¼‘<{ÓÏ*…"Ðë1ƒÉ´-q”=ÈDAã3g…WŠåöˆ>yCt7iÌ=¢¡P\äÌ•Æp¼å¢8Ì¡F(|‚¼™º7Ȅ𗱜]¬–ýIŒ… +©ˆ‚´D'¶%J[–å‚>GM0ƒ)“è¶*ÅDZö*ß)ä…>¹7¤8Òâ® @gô#’”ñ»vX.>i;V�Ñ«’ÿÝ´Y¡�â<R ÖËzŠdˆBÁmº7¨n)3ñ R>˜Ø+™Š‚pÁäÈ|:©Û®ù3œÊTÀÔsÉsƒ~U3\Ò1Æ'ÈPï~³"ô‚0þÙ þªÜ�uÇDúÈÅöÇdž·3øñŸi�¦¸t•Ó£Œ¦±¾¬±¢è¬[,*]?ßôžAF C2ÿ{‘ÅÓef²ý2ë(3ð2pnQ5þÔSëÈØÓ좱`ÉÒJÙ}€o¤V6j_ëeÃ,jIih!ñÚ!ÏF´æÀÑsÓŽz= •y0ß÷@ƒzCÀ!'–Öæ{d)6ÉùÕ·Ý^?œ_¦€Â‘R¬~ƒl¤÷Ý‘†Ú«o4ÁÜõ?–lx´ÝÉΆoé™$û#Or·Uiö£N*ï¾UúPÈ1PömR¥l90ý%¨&!{Ž…®¡ý¼–„W-Ä×~Ãï¼YMD;"%©±V¸ +p¬û½ÞD!ƒlIErA+ÛYrñ¿Ó/<ÛùFw9ñj¬—GÇÈG54²~’´ÚÉ j:yÿœ³:s¨’c•€Œ¨è…åB^Q·änòg{ŽÖ!˼ˆ2ÃÝv‘È×PHJJÅAíüDzPñUN²ò†»C¾7m8òÓ‘ª~%Ë#̺޷Md<ãµ[tÕ8d¡G”Ë°CfiÓXèçÿBEØŠEhúiQ%iš(î¡7{Þ黸ã¾#ˆ‹± ÌŽN¢¨¸*fΨ„P"~©kû +¾šÆlÑ7œYÁLA¶i~½y&¾Gj4¬Y2@HmÊÉ¥ðˆg҂Я±Ð²ú³¢âß +ÅgŒôGæ*—cÜüèé +œXØzÛ*‘vKÉ.ìðaÚÞ{Á70±àÈ–Þ ws?®v.HHöä³›Ù7„zR0Ò ÷×Л_ SH;až/à*åÇPP´sDµ°dÙ5Ô×f°2¸’P–àF©3ømì’§â(p²'iN£,$—I”7zO©c4ÐÏ΃äO|ÆGðc÷«±p€L1[C…•°M •ôTÉ6’A1Ž3Èúòå:ä-y*…nCçòE±µ"2ÁX2$Cß +¡~¦ÄÁUÜ)þ®^<Ï4fÖ'Ùõz¨«ÿÅcFÄ7‡^&J4Öái,üÈ4‰2vÉTg™?ÃrÆkhïŸ9ûãKwÝÈ)Ž¥ãGMÏQa +h‡ÞÞîe]D"Ä»é9%Ð…`ÍJ'"[¥Ä{Lò“å7Ý1(,£G.Â:Oz ’ÿïÇ�XAj¶¡ÓKZŽ„î§çͤuƒûY+ü†q ˆ>Â Û ¡óá͵}°ÁÝ! +r‘(¦®#}GÞò‡~ô§ÎN´Fõº¢~FÿTÚ •¯ý>G}hHîAaj³&4Ï„dEÌ7²yj0ÿV_d …+ç5r~¾\Ñu Ëø†{ÍóÇ3þB ~þÎ'´Ü�>åý9¤òWpëˆ +i›î‚Brˆ Õ8öîâr~þª†„\4ÔD‡i ÚŠ’﹊ú8¤?é‚c´WçË +[®µ}³}I0ª;§2´ªåÉ4Ô³³m0áÉèÔs@} +¥`&`ˆÂÉ/¤× 2ž_š^N+Bì�Òn„À¥çwbL<…¢™Ô,ß¾Avø7Azö¤;RÃÖiÌÆãî×X8¬:ãTcÝewI&êbpHxžs¬Q¥ÛÓ~%X …·àL¿>…¢8–oóQ&„Îùâ í#‚‚éÚÅ!y›ä' µpÔ;Á¨N> ×&¼LyBj?‹A>(lG‡üóïþ à?9+GÍ íBXv>k.ß™”œ°ÛX©žbšÂ%í2ó'¤E×T% ‚y(ÁG‡´’3ÈÚ¤¾w]%(ì‘Š™ˆ¨?×Ù|…zÇ3òÐ5Êùº¬ï 7T?•;è’ñ#‰PÜéùS8]™$c~ÉÐÃn5Oðн8_©¹ªÌ´©Ûº&sŒugKy£XßõJLVCL¤ž$k>P* +I‡ ÐÚêÝô•bAê¿£"(éêR"Õ/¿Ëcm ˜P_•À‹ûØÊr¬™ò?¼bŽ0fvHŠäRøðÙ&Ûèñ‘½d|ÈH `#F݃ÀjFHIÑÄLH•ÝíîÃàˆ”x{BúÒp¬û¡*ÿj_B+Nò™²•m>ÐyÒ¤tȽ[*f +q'rk_iÎAzâÌzVF‹T{¥×ÈjŸ'.ø>×(þÓ†è;ÝÃrö-™K•}/\çÐÜ~ƒRÆrRªŸtÏwÉF5ƒLuÁên`öZT€ WQ‘ ¥øKïaC¬½Nu? *Qü¡g!»··ØêÆ"÷tôæÒ}äZßï–:IÃÓÝÀ†á-‹%â÷QÇÚÀ¶º8Ž€*?ÞVÒ OhÿkŸëÉËà’ïsöW¥<ÞNœ¸› ¡Œ—{ÿ=B5ÍÕ$BÈ•Ü|*¥ñ‹€ dåc–kñÔXPØ¡3”Æú"ôúB ý¨HcÞ⩲¿T@6HêòñŽï$YÁ½ÔXs¥nQ±ûûï‚Æí˜á0Ƚû-uå†&(‹N +dlùHÝû”¾ª4EÊ·bøõ`C~ +¯éëW-¦ªú«‡“Ý0z]¹bàˆzÜ S4ÖÞ%®I¬Ç ìß麈^ à×.ÄWÜÿ5Á‹5ýw^ΈSôYƒìQ8@pV”}¢A>¸€”ùËo””Òþtœl›4jã¤^bx®õÈiØÇo& +ÃÙ3…ÌåëÎ\hæÄQ/ì[OØéîÇ•ÍOšÖú™é'ìy ‚‹ý뚆ÔÓ~:“ªëœ-Ëñ´ÿqȱA‰±@w'ß>Þ×½á{?ä:9JêØzñE™L)2ºŽ·G,WÄЫ <µ¡.a‚ +÷Ï! +L)D\šÞXÔß¡.ÊÜ?B µ¹–PÏo’bÌJ¾ˆ§ŠbfÙÐp +S\#áÛJATCQ}˜É…{fƒÀç“G_ˆ‡d£Cþôp>e¯ËÞ&¨‘ü$»ÐÌ0šV//dy<Û²GTBÞh1ÒÆ…ðTºNú]XD]œ(~Ä›¨³Â#é ‚„uü¬Y›Óþç@s1ôsžì¹]ØwBÀëÉa^X(†v‡,»6,,s'ªðŽúI;]Dˆ]¡#±k(ͤ»™ð¨é•Jº@iÞá³k¨:^hFFNz•â:ˆäÂy$k¡Gä +ë%AGñP„íλoPxS5ð¥&ýÙ%æ2„‘™�,ú°Nâ®® +|bQAïÞ9ÐrÔ.œ]Þ¨õ:s…½ngµ .Šo4þ2ÂsÕ øï\ÖÉ´›îâT¯ë§,]¨ÚK9K¤sB¾®ŸaŸÜ¼C~¬â¬L2u¿ÔQ…û…âx+w2@f4qzºHn¾úY´ƒ5„G†w³5¡èVÄ…–™Ùãùˆè"½×ˆ™X"G”Š#Às’“firHïÉ0G·Jå[¸Ç&d@ßò•Bº«‡Ä<Q¿Œ†ýÛAá ‰BºtÌâ*hjZ¡8œ<|éJ³üv¡iPfÖ“è~«ACò}ŽÆP³þú1ÍE;8ÖÎFâöõ¸Ç!Îí×7Š«” Ð!j�ˆpeãàM_¾ÐèLЋäV´åÊ; rð4�•§4Z„HßuÄ⎸Ñ`_~éUù‰PE/ûë‹øPRòøëÝ©·šAuœ;ì&Í-ÞÌF‹ÓTÞQ±Ü¤�ºDï_÷¨*»k°!…MJÎ…Ü/v»ÔEÞæýÌb‡À‡CÆ Rýø¿éüçÿõ¿îî!üx$Oò?Gƒ.Äg"ζÙþoÓí�·ZEÔm¨;'NJ€þ‡¨Þæ� î•Z0“�AWßë´‚cÄçð‹ðî¨ÿ +A~oS«×5þzÏö?z‹ÿû0ÈAœ?éb·VFµ=ÙÒÓQ¡‚nGwYÃÿÏNˆýx"iسÄi7 ÿc¨û™MEâÐuQØ�KÞqX!W‚hxÖø'樨Ù8ìøºÝ¸¬?*—ŽêȳJk¨Ìô5]h…®›_§…×÷›ÜÊoúE¶8x9Ò†ZwÃ9a%VâÏ 0„T7³CÀ·=®£n{*‚Í([ 5Ï/uhúí¨H"ë?B¡á;¾’‹BQ«wƒÿÇFøˆdK±."dšøxPsCÝt"7i(¬'ÚStCȾ"ëê)¥bƒÜ]{ëh»£òåˆõ¥É©A`è¦(O7Tݪ„¸Ø#Ä÷®Å–±¨¡p"Îod\éd–•³pÈüÙ½�¹ûøË“¸¡pžÚ|±èΈ~‡ÔćCîÿ~xÓá1Œ¾_€¬5 £ùØPýø3·�Ê ›šf|6xóqÅ_G€fé>|Æ zºNÊ‘6jöŸ¯5EÛ,ŸÞNEY"öIY"ÎQ«-!82׫¡õl-ßc¨’œ8gª‚¦A¸?th�ùþÜþ£ž(ôYw2«J†*å2^æE?]·ÊÏX¹ß·JAš²e,=Y‡3Úö KëB@^b%¸ñvPé‰/èT„àl¯P¡ø“<† +s»ÆÝE†&ÛS}›WqUÓ#ȳޯt„j¾ÞEA¢ë õƒD3÷³Úu8‘ÊÄ9„üg&*Upˆº1igÞCB½^·c–nKá„¥ì vDºÊ¶ê¾ÐO>·Žjªî÷áJ–ÎdAþ=êrè ¡%c ÷•ßgº¨Z2È÷½÷ÁÉ µÿÑ E ×¹)uµøô`ûÕhMïˆ"]'~C”I@:ÏDl„œGÒÖŽŠæ\‡€ ªZˆý½v8’tpu¸) éDŽLpÇ@H’«×Qwkß²§qÈÌL°C@ÒyT5ËòRã•Aî|”qÐXr6uTÏ2Cbýý¹Ã4 „ÜMϽç8ÎîѨcݧåÍç|rR‹Yñe÷@çrÈ}^Ÿ¨©œ a·ƒý„âÉôõ}q!€;¯5½ræ@ì#r΄圹±èG)Ž²¯šˆd£á×i¥%É!«Ê�dÑND±âÝ|¾‘Q¬sïÇQÏŽ|6!ÒxÑXÝm†@.¾75Á2?ÙÙÆXoŸ½…$éB‡œ¬³œÓ ‚ÉîW†¸±$3÷ù³îƲß@4Ô]ûå/æûKåsã¹gÒ ²T¾ÔUîn¡znŒ…¸AeOõ°+áu¸¦±§¡žBÇ1Zž“qŽ±^îæèYr ºN†Ø"Ié~±’†™CÖ›z¹—T>Ü!o0Þrœb£è¨T•ç…`c°¤ØløóÔ ÅCÑ!qžË•.ämÊS¨÷³ÐýÓVt×Þ¹-Ó¸O˽æ9Òßi†¶ÃS#mÅ(ïçíf7·ù6|YB´Ã ¦Î” –IÖ+É…+™œc¬»¿öL4Æüû¡wþ<”‘⯆tqïÊŠ¤‰R«-TêéçFlP§šŽrBHÕkd;/¤ßFrˆA_¿Rï†7v¤p²£PävEšÃIö½}‚Ü訶Vr£•¨ºt6‘Ú5V+ ²ŽúÑ»4È¢ƒ(Ï–•oõ¾8ä[:dñ%ÍXn’Õ›Fã'i‡´L@9¤#‚ciÇ 5{=Ç +NTø*Ý�ƒÊ€à½¬Ûð’|EùqÈ}u¬dûëˆÍÞQÜ.…''Ýš©Ôï 1Šä 3méiU_Å P¾>îÑô —™áäV9„°»$êF6'D<Ž¸PH'pŠ•ÙGœÙ_¢u6C…ë +?@PEC¢Ù!ýä>b»ÐgEÝ ÷~7Í“b¬ªgç(P‡wÃèB÷!—M‡§èS"dÜŸ0v¬M÷*:Û#(€†Bi¤äShíò¸òݵ³³Ã ³¼Ë>IpN@åst’¢5R ì%*êep_}•]ØèÃtàœH‡¼È÷Å£Éwøûhs÷^~™a‚ÉöQ0Ó ³6~䨡½rÿ}JY7} ½œ‰BOêUùpa> ³*oi5«âŽû¹¸P¬=ŒB¡ ‚§=ÝP‡8a#iÁPã‘w‰?gÌg±ñÜ!µOÏ à^°áÎ!H0 ËÍf¤îµÄ%{G‘nEŽwºÛϾ%nué/²žh¦vD;;ÍT€õ{wÕZŸd}Æl‡‡fÿ$Ôì¨R·á •€ß1O[ú‚qÓZddý(ÓŽ;0ˆüÎ[Î!ìèóQÛQ8Sçûð.çYh4Ü ÍÒ†˜ap¬Ñï>ŒÕ ¦ +án{ðÒLÂ3{Ê.Sp'gè/U<Ê _iü6Èú`&ž*ƒ@ÁðÀòiüÉ}¤¶½_}šcïø Жœzƒ ã•q…LXðEk}ÜÀl wTè²ðgÝs÷‰þg‡H9X¿¼Td¹"üc¬/¤^‰J5@ΉèoWvÿÆ1GîÕ„„k'¤)‘îÝQfu7TÖoy¡O휺駮(¥–¥K<EŽF!ŒW;¡~µ— ‚ÝòËEâA=ô£90î +‰3ƒÜõÓ¯eJÊ _Z‹êí'ÿ +"óRú1ÔC׾㕆ß-Õ çØ’5pÈ.úºÁö ¦¤î¨ßHØzˆå+’ÂÌŒ<Ò†´yšëÞþî“V)«šrgÞ!QC¥ÿ*€Åà©Ü�ûì]C>ˆ†Ø¥Þ¨¡ Öò–´sGåãS”C˜-SLÔ¿UìPR¬³’Õ«üY¼»RBÁ9ÿ°7ǯsßK*d¢\‡DÀêœ.£Q#Ýmä0… äÅ»ÇH¹s"4™²¡þôDJþÆç7˜¥Û‘ ¿.ÂŽÐÎèà®â¨ö¸Œ'/T,¶’z—ŽXP·±”ã âùX“¸éX°¢VKeÈÏ딩@ ´Ð×ód¶à¬ÈLAFÆÛ1Ö—ºÅŽºW•ž_(Ü9unP§24g)Öí¯¬Ø&¢4cÁVñYe^ìzf"ä¾ÁêNiêÀä†êéàºc¤D\§#Ç +5{ÍT\ƒå0¾‹4dÞ4´Ae¾æ/PGܸà“Ú«†ªg¢î“w‚µ®3`t*{rg%$:„³³«h 8 +úõ:·�ò‰¡ „b@b÷XË!”Öç–Mš“Ž†"¥üø9—ÜT4ª·C&"‘›øÕϵ¿¬«Ûs¦&ð9»p@§¡ˆ?=Èo–ÙyØ™¥lÞ]p&kþœ7"|ëù M¿4Gj÷✄|О‹„qÇ潆t¦Hqà AæÍ}¶~j´& +ÿ¡°_/û|eâÀâq5Zþt(VI#Æ!O6‹ÅXXuÎ#’Jÿ§÷*ìï)ËhâÜÔ†ä·57;äþj'W$è¼ùCË8.TY÷A‹—�(2RÍÈ “Œòv·{ó:AŒ•VKú]…*áÙ½ÄÝÀùƼ‹Ø‰y‘{‰ïGˆËPHÑöÚ +Ý#1ÈŠv~¡oœ˜Q¡où²PR ÆbýUáþÈ”pgå…ð×;U…˜;ÈéŽ8òÅâ//N#AWå“#%@-(Ÿ JÚ5˜1ù<*½ó îSt¯R4Óc,œŒEAvÔ� Ù,)øxPΕ/!7Ú“e¦CТ[’ûD¾ðˆ±pT”李ZÏ\–C¾EMÞôó~œŽ \h¥€ N0¼%VCAìTéÁú¢n$(®}ú$ ÉÜ[ÌÙ8Mgq\£7(‰>ž;Õ[xÒþ‡ ‰ìõBÀFkÒ!åä +È~Ćle¬®DᘬönƒÜ¥ó.¾ž³vÈNÕGüÐWÀ‚.c ……{I6ÙPh©–Ò´C +MÒ!¯dÞ DCÕ qöŠÃþEé$Ýõ~ÊuðBCA|>hg‘Ü !ê岂h¦G«XŒ¾å/QH*|î*äBbÒIãHN¨§Ú!éNÈ•±c¡Ó¢¤F¡IŽXäUŒƒbH‹Á!¨J°héOžbƒìj1Ô@óEË)vW&\Ôdš9G~4È‚m ÓAâ/„ RÅb5Vï}²Ô-ß;ç+NˆuÛ")J„Ü÷òõ2ÁnÌÙ«zX@õçnœ'ëÎÐtUJ‰7ÌíÜeŽ¡·Æ…hÎÔ5~cBôG¤ˆÆJz±c&8\;„—Y_Ýï™#Å8ƒ¨§uˆˆÜÿýø£ÐH»ô—:ª}›¯³û<J3b¢A#ôeC_èÝœ©ÝÂù5OªççXx%8B}ƒÎ çù¨#¢±hÐì²]©ûAÅOɹrʉBµÄjéòYóµ/é©5äF.›óM€èBOæ7ÆÂñš[¢\¡M‘òW8n„<ëÂ"9Óþg¨9ù,gÅ}4éRf¨YJf€´ì·ál/9ÅNÈ%1>ÕÈPÅ÷ÁQh4vzöá…¤@£U®WÙ ‡|™º%ŽGŸÉ”ÄX¨¿ÌrjC¹ì.Ž–2âX`}¿uuê¨i½rþ·…œðP§AŒõ¦h#Q³Ù¿åB°TóÔoo|h|ÌQÐÓÆÕ«ØJŒ•Zю™äU^Ç w‹žî8ߎJÔd^–Ò„€ƒÏºnŒU=ÿÕá2Ñ‚Õ°M²àÈ襇8q/êZh5I³C•*=º£§P()v‚®¡Éà !ä.æ¸^€MIÑÄXè^Sÿ¯¡¤cAÚD§îP¥š³Š§×%ìç8¤Þ ÆšiÎE”øj¯ÆBЪ“®CR$ƒ¯§Æ0ãä~[O—[–ÆZ¨#Ÿœ¡÷ùñ64Èݦššç‚pê˜Ä +³Ñ‡Âþ³ªýúrª»ab)—qËj ÖÝlä—í(Ä_þÀ©UvXkÿá·´Œ-vÒò¨µŠíë«Ø™,'uöLÅXhŸ=£xNè”>ù»Š:"!H»H± ÕIÄ x>.„Ðr¬ûOz´"t³÷ùÒŽ�œ–{�yC¸Ÿ»N„N ÷lÊiøeŠ¨9Iƒ@¨)~•òWžÆÙÕLhƒTI±T–m…Bä,-8‡m‡ »Ès½›â3L"ûÏÙKŽ\¡`ïùþ|:Ð<:SBç…¦î(/ˆO.ˇ“T±˜oË#HOYÑ2ùâBž.‡¿¼Õ>uƒÔú³ÆzÛWÚ„º¹,÷%‹x‡LH¼sI“/ŒDœ.MGBö“ä¢êCÒ˜]߆Z¥›Ý ]]/Ü“±¦¾^[üå7ÀÙ_a¬`={Åhˆ±"ü`bR +ò;9á`FHí5È]ïS T•´±ÆÚ6Ïoå[ì_wƒ(eFêÒhNC=•ˆ•þÎ9Ô)žÝ†B±£3Ä3Èý‚Iâëš >Y-Â×ðP·Vc¡Ý]f™+¬U$ q_z* [ +ú¸¢Xùß÷ªen(;ìhÕ@ñ€ì|<edNñ2à7·#ÖÅÍÞÁܵ˜ J‘ÿF_wò·'å£ uB·“¨p‰ã§úhòŒ³ëúçÊgéw%/F#݇éjÞrG0Ú_ ²ólîŒ\H(ñ·SpØÞÓ/Ycls +ùë7h8ÒÃm˜’¿#$üg8Iïžû…\UŒu°Z!DN²o*¹ù…PQ™¥Äß^8Mº gÆw·±U—¸7TPß|†_(kð¦ÑŠ¹rrç_Y¾öȆ…¼Š¹ó1£r’á:šò{aü ’Ñ0åûw‘_ פݜ#¸A0S¨P4Æ€0Ú´8khÔo²¨Xirá7ëîùÒ,Ø!½.CÑÚ#"aÄaéõà%ij¾ÈVûù‚ É%ø"•RÊú×qº%yF¨ÈÆv^ÍWlFp OYŽñÔ’"$ô™€‹±¬…()-¢rrjaa2Ò<Ù 0AÿHd3*¤‹Aƒ´N5Ö%GÁlÞõ¿Ç·ÚÙ)!æù>¡ŸïèJ͹ק0HðæåÊÏE ´"u~2–Ü…ø>G¶‹r«ŒbâðSª5›(ˆ2ªoÚ![ªyCûuSö‚Óä¥LȃƑ߃1öѧF‚wy¹Ëö’OˆAòõ·[›|„¤`!¨—Sá&Çú²¹™¨¹ÐÊÝc†Ý¨jÖhñ‰zµb¦þ£ñé}$ @Û“N†zÄØÕ…îvñUÖ#T–ÈÖ+Ýá’À§³S’+?® àRÏ|ÐÙ-^¨©F¡±îzý´èa»÷»îVC¡ë~סšb¨ê€èbéjè< +1:äÄÃáXE ×ùm@€BÙzk6ò" ‚5ÔB*”¤Cn°³WîùÐ웎Ð9TZ5žçƒ ª9g2Ö±,&ï×!X!ž¬—C4Ov.nd˜z dùÇݿFÁA—T®`_ñè%d†œœÆ +³C-P½f³ ±ÿð¤qäJQ�@~ܣП“ö¸{h4zuCY:ê=[] ÿ!ªZq8 +°¿]å6$¶¿,ž Éüïèݵ€ÿB‚äk?‚r†:ï›sÞPA”è¼Ð¡U?‚O‡(êµ×ÈNù«‡bo' +T€Òc†F9eäè¡ÃkÀ gGï¿CZYéb,Ôò¹K; +[d+Á'Ú4ÃtÓ È=JÝV…]P¹‰Ïý~$Iˆq"‹•L7J¥¡!Pü®!Â,ºo„ úy¥^@ÍŒ{ZJ.Gü”_S#ŒoP"þ¨Pè.3‚‘÷ŸŸD:Æ’ Šýu¥Â¡!V[EëÐÔ½ªQ i¾»¸è†j>÷’‹CzfjÒaás’x„b 9ù²WÆ’cÇÖ…ÄNæã…þJá7µ—8çšM~€¤²rìl³Ê[U$òC¹½ú"RN©ê$1ÖQšH‚øKFƒ@G>Ok€<EÑ!½¸�r=7$âÃÐX'Mž‰*}¢¼šÙL®ãÒ¤JÏßu´µè¾k…ìÂóBC!C…uR*ºy‹“µAÞ7c.‡èì¡gˆhšZZ-ÇÒ©¹'$‡EZÄ©Ošj˜nÆŸoKŸ'Tšä¤¤±ßŒîG)9¢¬¿p¶7H‡² ûÒ™âˆD^S”ù•36Ô®<Cý¶!oìÏôÌ'!¨´»W!Y’_A@‚ ƒr,ï+ÍyGÏ.h‡Ì™¾f™éîKÈ!}gp†!2—ùHŽUZY…›Vø}pÙmVŒ»Ò@ßSE»vÊÍ:ÆzáìqrÎ4 1=Ùx¡Û?!w€Lœ*ЂíÝ®œÍçîKÂí1VGn?—æÍøÆœ¡½š.Óm.4ñPÍ6Ô] ñÊÑ"—÷ÕgŠ<9 +•>2dxóD¥A@ª|¤kmQh²_opÇÔX?¾Ã†š2¼žˆµtÀ"rŽuˆ}‹ñ¹††{Œ´ÂÝ•(¼P±—×¹ÏwHzÚ X±ÙR¢ýÄú–µÏ³•õ=z÷~]™÷9Š§‰R _Öœ¡NHp¤b ‡ån¸Q ‹Ó$ùí8‹àã7›ò@Ñ[5TÖ½ù›@Ô{]$–ë¼{¤ã�©-¨@å#f# [ÝdÉÙÀ$õD Ö’2®Ù%ñ葾i„D/° Øf¦‹²ÆX{Ë‹ÆS^HK-sãuÐ,¶©_mˆGe�Æ</ó2óÈŸÓEv×µCчKhŽïK d¿<Eȧ|©ž•@@”QëªÆ:u˺GºJétrÈ]²ÙÅÍçwNX–RÕJ4tÄÎ\l™¹¨ûµ°Ò+Í¥×”PU%5œ 2S‡7ÇZà ÿxÏp¯ëìÁàuT‚ãÊŽ>€½B¹‹Þ·Ë¿*‰¤¡ †<TásT;8¤‹Õå´ü0”vÈ«pÓG÷Ncßhr¨ûúÂLØP5QÓ‘CTiÕ½!•¸Þn,…V»A"u–ç,Ðèɪ0GètÍó,pFWÉÍ!²B[„¼au_ž`±ç$*Ö*Æ¿Þë)Ý^yŸ¯47ò_28DËlðƒDÔ‹Bè{é€M×EXd£VГTH¡³åPç“l0PþØ1’lÿö¿£ÍNbiÒBÑ%îÀ³^úiÐdy`¢&c1ÅgÈ¥m©8¤º@q¶#o]þÛËöŸÂ3DR…q8—P>åRã¨YFÇó… ;–…_œ: —ò1T„©ä¨jt°³W|ê2xrös´Œ¢hóšpÒ¤‰WÊmpê<:Mdh,ì!ês¸å«¬¸ k´]w‰ððÐ ±{=ÂR@^Å̯Q ë�!û4¼Î–=© wvËŘïq›çi_ +B»l8 +IË—sJ�a8o”}›¯Žèd¶=Bܨø¥3{5•:ëD'*A&‡¤Ä¥Cà‘ÆyùÂüvn´ ýXÄŒ”–¸m¶öm|Äßy½0å±:'%ž"Ç�¤¤øCͪÓT¡ÅðB1øxî'…‰³‹ ·Q¼$ˆƒ°£¡NKGmxš±×Ä!w¥z"1úÚÛ»³ŸöA£(?¼6)ûCÛ˜k#oCõR +vÈ©„¡×Ö`Yrsºß¨/(Vy‚ÙžÓ½J· +¶‘kR2Å!==bR ‡„ò*_×ZiЙcÉó1ÆB?¶;ðw}'¼Ï Ï3{p R\Ât;oÈiGŒvà^ý1Íû±±'öùt¡þJ@Ú!÷ºò×>„Ëz‘àÈ)Bcm3Ñ#üý·6ÒÆ +úé‡:d¶bUHûQÿ~M–6åõ4Vej; +²iqLECù ¦Z§*DgÖly¶†ø‚ !M#d¤ÀÝ®c9ÉÐ_Zô3�Y››$ó¢!ÑžO¤Ÿï/zã÷šá: :Ž²›% ¾‡ DZ¿ÈÜí<´sºAÅsêã>Pð(–c¡sV†Â†CB‰#¾—´ü”á An Rt"Y¡•Cõêôk¨™R[Ž €x‹ Ÿ¿’#…\›_Ýp`1TY Õp°!²ÑnûPQÇ!wGÜTšáíøÈ•JÀ.|¥œ…ju×tMz^¨WJ «¨:d¦Œ‘C4fæ·pȈ3†£ú+!õ¡ á …>Þýð’Üj{~B™Rc•ŽB¢ÐžæÖ:|@Pû?lmtHÒË!÷è”*^€=“kUrÖû‡Ýê¢è7ý µ´Y7ÐñBtJc-49„hßkšêÐ1^ROAù+´Ç‚Cb(X:äþ®îŠŽ¸Ÿd¸OÅPÞèâA¼ÖñmÁxóÉR‚µ<»Á¯Ç WOã'zORç®0¨£¯:¢Tgq?¯W6my³¦x”š×“”þ÷Ÿdr·“ò.”8GIDL݃´¢ûýu0vŠ074ÄÈ*Zuð+äüa¨”ÜâË’g"ÃtšÂnæY±<úƒj¯E·•þQþªû©?õƒ7#9m u²ÆéÒîìlïhqÔDóúÓ«–½¡ª¸¡`¨<[hm¤1—ª|AtO‘Œé:.ë*`ùh ‹±nhö󆺛â#Ú—CNð²«Ô? wÕѱƒcmì0çáXXÙŒ�TU@‚‹èú©qܿ¿«ðñ>¬n÷g‡ŒÑÃè-š™ûqúeNö?£r²z¸¤á(ÅÆ!wÎe£ç…d{Q–§ì[òÓ)|2£½¡Û�¹W’W!w Nup@¼88V¡zÝ'ÜG=,Á-îýa䥶ž&FѯâOû"|çr_~´<h,d'7Ø¥°G…9š/%UøÓa¿üH†Ç!w%xƒüÈîÁÒŽ¡ŠÄ;98‚ýÖÔ£)°qïËYÙ¡òaw~D(â>Ü÷Œ¯–¶‚Çlµ7H‘]k,wýÜÈÙ!¯4Šx•;ÙN(³h,üÆZPqÆÑ]±=SwwÍœÛúõ°6ò.Kj.€È¹LX¬#9&€ÀSxØfnan?3ÒJÎÙ!¯üüt7Oi±ÓX÷IÜ/B$úFN_ö¢:$f7yÇgêII¾-H‘¬7Éj£vó#“Ð'Üà ÈP#lA9á¡EâÖ|>`.ß«èÉúðÔÛ[¾?°½ûËšÆJRÝ«g*>jT?¥›U$Qù¶fú¸žKN9–aËÜä ˆY‡¬*¯éü*¹!÷ÜÄ(qHvCäãCú>åë{K[/ôÀLä¤F6W&¬¬µ²³†ý{‡&miÛ +ËÞ[ZÑ@”i)„(VµÒP!ø#DVHóÆB]Od}˜U +Y¦;ÑÛZ1E[þp.(ˆöÕêë6¢l‚‹±fÕ~¡5œ¦€¼ä74mhÜžvûè—FHQ5ˆ±ŠÄ9Q³Pƒò6¯Ãóù<ξºóA¢/6ø*%c‰º °Ù*óA 'UŒßŒ½Ÿºà¢:7Êþhö„!ôcáÄAËGae)ÔkdGèeFÈT’Pßʶ,-ÒA)e(¥±¾¸×,69x|ïŸ=ÏHâÀmüÔ?Ìå‚ +¯yNâ7VaŒõÞ2lÈа… ^©t?!•`BÁÊ\D¥ïÜ%[VÀ>:ø!ŠôÅl~Ú;/ÙÙèöqDܼ`÷1S÷Æ!Ô»*ñB>ØÃ8©Ïgôg¡Oö<õܼ’›C`Ž˜9€`qø¥CpÉá/ˆó‡¨ê®Þ]èÆz7 ìlçäLž ŸáY¯kf¡ÔQ-µ@•Ö‘Ÿ(Ž=¸ˆAãÌÉïg¥ƒVТ¤ +ƒiH ’1ýBàX²Î•¢ôüå÷‹.tN@J›LŽõ£§T‡Ÿdr1K;7 m5ÊóB‚³Ä7 +]�Ń9VŠäõ{àøõqp8EúBîÊyÊ;QFý#‡•;5UëŽ&²øÔÄtÈøÂmÚ!wùˆÊšC ká€À…~_9Ö½Ç^R›(>¯ÒOŠ*Ë8o¨_¼p›Þ0ˆp0‡hfÐÇZ5´!ê륵ß/eG=eTdkRú«3˜›¹¯f¨Hc™•ÐÎ÷~WAt±íqwÕI +…~ú}™¬ä~Ù÷¸LlK*c}’³! +UõÊ3‰^RFÔ³‡ŠàË'XmB2âð•#\šjA†‚I˜sx!¬Y]r +€Ô¦CVIQ„už}ˆ¡N>=H%&¹ZX}‡žÐEÜ[1""*ã¯ÂAŒŒï\2ªw³£†µ”Uì m¬4ÍDV'ŸÖŠ.B®qXš–<–b¬=kÍnþx‚9‚”«ØŒÒ½âûV„nÆHÇ&¯¡Ð`® ÑQÚX9Fôþ]³ºN¥î8¢d;¤24T©”€ƒ6¹÷äsªF�r?©Ñ«9j¿ÑÅásäc9Z™Š¡¡ZKãV‡ŒV¹[èùB¸‹t\JÖ agÖs¬¾¹å:ª#M<¡÷<â=€€®]¿†VÍÎ ‚N"$R ½€Ô‘äîˆÔ\¯‚´Ö.xΧÀs jR™Š÷~'=rc ‘1ŽÚCòË�"¥xGG8‡ÀuWíz‰&…CHêÄç¯JMs¡ µ2SláBù£[jÌp.5ÈVK�ï1Z¸÷ÆXr”ÑMT<û…=qr&dŽŸÒ ÔV›³H¹@ª:hë~0z–ï‡<N0T$FIÆÁ¬åQ¨{ rOã®ïžOPe\®Úhòø¢åÑÇéê*„ß×F0 íwHræ5afÕüs¨»Œïz wç„(Jh¡hÛ²×´›ŸþfÑæ`ïßÈ`æ÷3ëUpçÈ»&N™£WH‡`…´êRã÷cx”.GY0Y0¹/GÈž¢ Pj¥w(MFÔÏ‹ÿ¯{x*É!4eÐ8дÌæ§CÍ÷·Ã]�÷'ZÇÇ3+eÊW\xŠh°XÑô +“Oæ8Uç ”ZRBû OýÞúÖ¶nÚ|Ô£BÄ7·s!dÈx9§,¡ÖÊ¥°¦¢¦#^q*4ÚtV%øÏÈÚÝ à_…ÝR“ãB¡€þºÔ05֜řM>>¤lŸB±h¥Ov®€C~»4ÂÉR¢uùP/*KEJþ?œ}`µV– +ˆ +Íñ£®{Q÷ää)[¢ž¯”ÿR'‘�LÓ´¨}vÙ'Oç1–¨š¤˜[M)!‡lAùÚáwf‰Ì¦Þ¤ÏÅ@_ÄÝyþílk…ÇúFÈðòüZj!…¾éHý–›? +<•t&�j¯"¨nHÁçé $çY]è.D®’~De‡8|ŒJd9=áÄ6Yd¦!%Ç;BþÈÀ÷ð-: € Œ6Ãk,°6W(&¿xn!`ëºå›AŸAx¤·^XDb—\Xùq}!Ð*û/õ)!™øA@ú²äi”ÕKŒ‚“÷€Þh%@‹21ƒ¨¸0vH(¢òv°ÇD%Wº¡ŽL�tøò>©)r@ ðÍ[wƒÇpÄowÈŽ* ©ÔÞs¬»…¤2ükÏ ¶FÃÒ…€~(�Dš²w" P/Ä›÷ª`…~¥®V PWпg¦V %ÈT +ôŠ!x,²Iãí,;©9]"Æ‚êWÕcŽi¬¾*†½Ú’2V„ȹ< ’äàŠÍÆKã’T¼Ð®€ü€l¡|ëe†*–9'·ök—<jóõ½8Œì?˜“ž¡ü]Èz·äþ1ät5Ö}ž\÷õ»žr˜pˆ(2ܺ:¡øW÷ýÑ«ä@d`U[¤ºÖ›úû@á4I†/”'6Bæ³jË tãù‰êéÀ–õ‘±ÆBæ4Uüª–½ÑÉPß)ÌÞævÂ!/ôN”Å°=¦jMŒÝºC½™×%š±Åö£9†¾÷4á�ª÷9í6!Û È(ý³1ÔŽJQ°Y-¿ö·¹Ý]h›ºàcˆÑ’M M?)þÆbž?±B½[\ØÅwÞÐîÔ +ÑéZÞ€sC½3ò½8ÔdmŒ5z¨˜; +ùæ7i!,,…¢ëÃ>UöB`Tb#¨Uì¥BŒ6paÝ›k'DqRh)ùÙ?2‹q—CjÔ ±&Ù’"B÷$úéÁ#{Ììï1uá6Gù§‰^f̉f¶èf´ŽG2ÝÖ•8‚üôÃõG`G”ºAî¡ž/³æÀOUgQ7ÌV'7/t§É)©åžG‹aêvL˜åˬ±Ðò5jõ¤1Ç‚êß®!è&G"îÔùÊLŒvû~Zë F)u7@(ö‡Ñ/4Y„›´=Í'=,‘ºwMi—_$´mÈø… ™¼šPÃlPzŠ€ƒ]ÙkF=š84ÒÕÔùˆÂIM«¬Cî{KŒunqÐrH4WtBú~iïþ‘qjã:=XN¡wñud*%Ìó]4Áˆ‡øþp%c¬ I®Uæ/ôÑJ½Ò°bœ¬¡¢×Ÿ`}Ðÿ!¹øì”ã{ØhäkybýYôÑOk¶ß|Âpi9TîuŠ*½ÆPð‚ +µC T¦ Û…`ÇäiÏ!ðk#«‡»ì/@ÔK-ÝS=©#°›G‡B‡`Q,ér$•çï÷pçëO#²Õ¡¹c}p–)l°:œqZ|M”5>C¤»T…$$É7„ÀHxŒªˆxŠÎšUÚJB1ÜaÞÖJ¤ZàýY#‹?0æù©ƒß{ÅgÂ>ÌšCÏ›SðžVŸ§XY¢0v÷IHÈýæ%ÚHz|=ÏâääÞ*á‚ÕeFkŒƒz–Ôþ‡Cš*ºz;³þyIúã¾öþ2úEõ¤þ +“Mnd¼Ð€½jvÝ¿CªM8ùÞgÑË2ˆ�cÓÊ%ÇZÔ½ä xçNþkŽdœ¾œû™†…‚ÎîýDžYœÁÔP ÖE¥Çßl ª _ñw{MYJôYíHØ×$ü¾¿±S/éZ¢ EÖZ‡:dònXˆ’V/9"îà*¾æH°»…8 d×bëH&�ôZóãÃêõÓnŠ>¨ñI+†ú^’%¹`SSnÝ/Tho°c%‘ü8ï—XNäÄ0°`HsI P%®1Tä¤Ä@HƒDÖ •!4iÞID«‡à»Ô×cSÖ¾¨1ÝëÜÈÀIdºÐb¶W¿«¡ç¬ëî·‘§CU¤’wûÚ±k6í ÷‰¼ü^J6ªýr¿ÎS³i÷i¦¬pŒëM¿ëÇ.Ätów¡RÛK×%üק:d —1Ö …EF=™ý‡Ž€?=í¤„×AiŠm—¼c¬¡æcý6õ¢¦'¼Î ‰#Bžù#p‰8‘ýĈÀ T<_×(OÃQ;´G¹ÄÕva‡àGœÚßhrêj³"de²ëGë(L; ·±(uzKò>jtÔX3„‡ z¤:Cb,d•ÇÆK«†ZŽØjûhDÜm¸½éÿp!8°>ÉqºÑÙ ;ÆPèHÙbäm93îÔ¤åéò0Á.Sd„p.|Ù䜫;Úƒ)¹CÔ#£gM±‰øpeŒi%Wo1˜5g,å½-GØRlô@ð]T«VšDT;� ÖžÕ‡>×OýRÉÊ;åË‚ÁPͶ-¶’Vw#ŽVdêC#'ôAÔi…CËŠv% …Ò˜…öšžDh°Œ§'M)¹ A ûÃMáF9Eqv_éPë¨^Z2 ⇴`ãð]A—-é êøÄCÝÑ›¥ø�¡¥ß„C ØW$–Ž·<òrº£õ¡’B@øk¤”±ã)Qî´ÜCUéq¾º»�bCòÑòQ·ƒ¾~\¸ÔW/íwhéUtÇé¡ZiTä~ŽtÅ8bbì±K{ÞÝ{vZ]ÄX0*,”²Çlð¼ÉÊ¥•»©¥y‰Chk¡ù*ÞE¡BE˜Ï마¤¼Î µ@BÀÛC}ÚžŠ£vT@0+®C“ ,IqHöܧ‘Yˆœ ‰’éŸTŸCî¨5?Æ‚>qÉ|Þ�6XüYH+Ì.Cñyå™UeðÈænÉ A™U¨kîͦtGA/1³zæËH÷$ö¿ô=ýüXV�±VVØc(œÿFYß_lú•»ŒS»@ŠÉ‡¾ ´õ´QÃ롫a®wâ²Pwtƒžw|eÍøš¬ç8OšT@uH¶5’κù»a®ý$7ìž½Õô_G#s„à˜îMœ)IÅŸŽé3íd$"S਷¨¢:„"Åñ2ÚGŠa–´2:¶„¿e»ŽN®ªDŸ+º‘CàWdxaÕ¦'‡™IÈD=™¿”c¡ªº\}ƒÓnÎ^ä‹ôó3Š¬Ì},ƒÂÓKc!J}ZÈÞ%ƒš,b W$˜¤@¡–}¿‹Âz„b‹X„ì ø¿‚|”žm„ H”ˆ«ˆl:JŽ_ŠŸ¼ÞüŸB°LˆKätÃ?Ùƒ Ud˜€»ŒKŒ…ËÒKú|yO¾l 2iÎPàO5â†9ÉE[òÀÀƒ§ZV•'ÙƒÞR'tÈÙ³-¼ƒ‰*÷h‡t±±ø˜±wRÒ±Œ>Œ %$Ui5H®½)Ì Äýé!8ìLR‡àÔÄŠEË‘ŠŠ´£@aú€Rã ?h!Á‘LüJç dBÏý§áí¢àMYÞ‰¤nîz±'–Jþƒ>†ªƒpD 9¦Gt“Ò Ô=kîÌ¿ »åƒ™3ÊåÞœÃßF±*ŠC§ç‡µø úœý§åí$H¿9À^‰è-VZ›ê<¬"ÉG~wU{Ì«´[8êþ(6ñÅ#ÜJgo:oÅÜxO2m²¿?êlúÓ¿Üv,m®¬·_yáÞ¾è'E®…ê!Ìö^‡à¿ÿaÍ¢ZSza<;£IËÁ¤T¿¿ÒÿúåhL{Jñ ‡ßÔóŽ±P·+G,±G†&¼Ð k±û©_„„öcÝíÿoïÛš49ŽëÞÿ0/Œ æǺtUuÃOIÙpŒ.E‹¶¨ Wظöb—±�IñÅ¿ÝyòVÕ]ýa‡"f¸ÃR3gºúš••uò- ¥ñ…Â|âÂj 3âÀ1E«ÝND#,cÓ§@ÀÆHâhFéÆ> +>›*s(íɂع ‚6³A˜Ç`üj½7ØtH&jmCaC§Ï¨DPx`¦®4zm5UÈÏ,']$¹†qøŽ!<½t èÆT£fèqèeRf$4 Ž;ÙèË´ª³B@.7/w‹iÖ90mû¸»˜°în fâyú´Fý8 âín€ê>2‚¢Û¥’Áw7¨ÒoÌ/ „^íu fp¿ªäžU‚cEÁÒV–>zÒ‚½iOCÒ<1´sa-F6TqÞi¿¬’LÙʆê!úØûv©‚ƒL æ¦"Ý›>-eG)F¨)ì:W ²sˆ„>™<¸>cWv/â,Ý4T–2°tñ"-£Å~ ó°^ £A@ØÉØðÏq{˜ý™ÄasYµi=ÀSB–ãú–ÍÊSvÙðS”Tá°l;i¸ìxÙÐkxp”@JÎâºïE±J±»k+. @plºV¶“ì²ÛPî8Ä´wJ \ÕÍ>,:A3HÄ^ÝéÕ„¸B_;2Å—*é».Ì€ «{_•RñqLq¨ ‡Þ}ˆ·I^§øTä¡•ã(Û€}y•Š€Žån€å–dz6îfÙ5?€*óÐh¤ˆnÑ+t®ŽµÖ¥;-êÙà“Þö¾Nиé*‚Z`Ã×}DÖ½@èDöh7®½Lh»n2ÛôòM+‰éZ¸Ã€”0J>®àp Ôa °w›Å¿µµRºmöÊvýýiÁשŒ¡œ°@™H{¬1Un½¬2š¨ÚX²åi<[ VßÑØ´î,Ó�i؎몬Öc)q€Ñ +ØGB##”7}¤ 蛼Š&[—dp5Vz}}Ðé´E¥µÀΦõPφÏxÝù·Ò_±d ZŒýëC߈S)|,Áô¤±ïi[z qaÑ)Ö®ô¹Âÿ+IšwN&’ÕKôâ‘^ýÓÐè ÒŠ‰ñ](+Ò˜Œ÷â<ƒ¡Ä ÊixöÐWÓDPˆöÚ7ŠÏ~3¦@vöv€XKÈpU¾³õ6Ólï½`‚ÈRç‘Yˆã†�_]«š!É89þlÑ£MQxžVvS,‹öT‚+“'ÒCW¢�´e?ö±Æ¯*u_}à›K¾é5¥äV›vÙ:®í+"ÔæBM>-fUhPP ¶«S£¾Çf1lŸ'ü)5ÌZßL<‡Êç‚FwYå)Èܽ,aBÓËÖ7¶�É àn=ØÛ·Oöµ€¶m¢©iC¡«u ®\`U“º’ #Â6¨«)Äôõ KéèCeã‰ÚÐîgü(ë)ؼ‡½ “ŒPÈÎð<§í×i{Á*yõF>@àˆnúÖ +¡�àKâÙ},Ü’”’|¬–roUª¡*¤,y…˜Â¦š"Š}ÒAÅGýãB2}"ÛàAeì¸× +,K!~ëq¶¢,gÀfz,{"h¹Î@"RÙ•XÅ—Í3¦•Og.#@DtV!5@ ö]‡Ï·ïAÚYñ¥JQ}é#¥ep!Š·h\Êcµf²ì'“-¹µï!zÓþ£ª§ÙGr=¯EQ]ðÌd¾š1Èú½º#2ʉ©é¬êo…I"Úd…¶¾ ¾ Rüiã#xb1ÌŽ’»]jíÞªY{ß•Ïõ@k—¬H@Ê©‘T!ð²mÈå}—_1xâ$©ªIUºhS¦²Îh4o›ñ²fUt‹Û#¤ ßJ‹Ž6Ö¨¢"¨.¨caÝèû™@àsL¨ îÑ-e +õ¢ìC%—ëôönªC´Â_ õ6x º–ˆÜâ£)^�BùŠjì.ªG"H?â@¬C‹ ؈“Jˆ",’ɯ1§˜f¶ƒ|@6RW`Gˬ›#'ûœUó*Š%zŠªÙ8®}(Õ\õè¶[– Äk+zóhÉ‘Gq@J´ö{К‘2�yù},Í_<ÐÝìnà +1_;P¨{‰�l³n}7ò—=øXÙÛ*ôQå6¬!²ót¼_wÅNÐÐ)Ý1 +7Ã7�|,¤m6…‚ÛÓ÷�âÌ\…ýP +ɺ£í(#¡ÐÇ¢;¿u22tiyXl}Ê*V¯Nn£2 6GèC‡è ?Ï¡¨`I!ë0½x¦w…8Œ{1_ ȻNJÁõ€ÀÃÚ‹a´fóŠÜ&‘!a3!œWì²Ú:4åDn L5î›PÊ·lKQl%Óú*߉Ëþ¢îš—‚<~¨¶ ͼº±…ÍEïfŽÜõ_\Ï™!‹k8ÚI›Ú’þÚV°z¶ô%Ò«³g¤QBÜ÷EPÆ�35ALçPoq€æhš[Ê’F%D@–¡ãÙÇÂv\.=–‚@d\D=P—ûSHÄ(ƒ´¡)²$“öeöEè½ÅÔœ‚8V˃†( º©©ï2VÛnÁ\–}qd™·Þöìc•Q¾1²â…ˆaÕƒ„Ò|‡‘½ßÅE÷x“BÐöÜ”ÍëCAá•ùó‹¢`æanQ––>P|„Yý3ìªÚ:¸jEÖ‘5f[OÐ(5ÓÑu¨¢d›¶ß(¤yª@phUÇ„ikTnI´O%¶j¾T„v@ë‚G⺹"¥».‘A̸IÂ*`Ú/˵üìþÀíÁ÷ñ²hùNßÖUäl¬¸ma‘]%hü¶#b”²¯ý´£Î6*öíœA=¤ß Š‡Þ2@°‡oê$>~p/Có´Åßt±gQê€ÑƒY`£§[P‘ žü3éc¡*çv:@-X—æÎÃ(Ø—\ââáþa¹éÊÔ ÍùA)š13|,ºò<Tôàb§Ž±–B ~q¯Ì9üÎÚQ-A»k[dŸDÿPúXm”ŠÒAUãIv 3JÑëÂw›GÖ{)£Gxd÷ÑàQjgšäéÃñÚD¿Ì2O!à×K=ÔÎf3WF½,ú !·&6í>–6Áø§ÒêÖ†mPærg…�B÷pו2ŽX€ëÙ`Óßé\6I·êq@AIÂZýR<H<† +Þd04Ù”¤ÇŒÚÙûUkðZMf*ø·… ‰e nô@v‚JdûèÕ»T|¤¡N/¨EË–^˜)³ÓX"{˜ç1V¡¡ûp�‚½#óîó±¼;Ù%ÎZø€læN£ˆQ ÷În ¹”j~Š"fsûLb!½$Šä’GŠ +N íÞè5h£e £= i¨®ûP½ÏB@qaùàdŠðHÝ:ó¬ÃŒ£¢²!š! +©]N`Âè6µ¢šx¥ÉK„:«{<R’Bš¨„Ù±**¤âc™µe”â£G©T/† ÄÑ»DAÝÏ,Q²šg«@ ®÷°ß†²B4f)PëÐL ¥û/¯3Ìg™•ôl@÷ð–!*j^´Ú,~Ù´EwlhY⸑P ®¿m¶)Èlö‹º1x;µ’<]‘a¨)ÃÙýí ²Ij¯lÿׇKÔå*îÊ£oX3¢¾>õŠ €ª{rÙb§@’ª;#ûPC >9Ðg:7Ê?A¨üò¼aMPÝJC!¶^ÒY™>³Žž„B©¤4¯$Ñ7?(ƒ)¤Vš€™”AVeMÚé@,FÄ´{¸lM•Ü7Ξx-nÒ)TR4G3ˆqºôÐgõËïCy®¾ ÄóAV´^´B!íTXºÕhÓë;1ú’÷¡ÜßÆÎŽô!fo€DWA´]H¤A¨X!†²<ôí!;--V>¥êÅí¤#$î]{È.k˜4²ºÉQ6Ȩ‹ H]û’©…7wó½ÀŠ$E¬Lõ8P4-[³é¼"y-Upê;�´~Y|KßGBùÂ<E/—3ç¡ ±Zí’!èêT„•¥c¯NY#+š+€žÔ\ñãâWåK{=¬ÌÜNI É,Òílò‘«kï/¢TV2B¤KÝ?s,ç”Ín•ÅS®jŽWQÖ:ø3eZz>Ë*âŽ}Ï¢[6êûE!~ƒ9«¶@tFÕ7�)½ÿ¥5ôŠ‚$®µOù`H¥h¾Í€@÷ÄR"… ƒ4³C@0«:<PÀ3éA "KvÒ&ë¬iåô•™®BFíu@jéR>VËŠ}Ë<‚…LîgZ,tŠÅí%Ìð¸_ÂNc ‰{HÞ<T€ÃEìK¼ù6lêTš˜º™@ZšÿÁ:}ïÔ¨)”èZ˜ƒ²€²l‚"Úà ˆ¶gëÒÊ2Ü×}ypEÁ3Q <©Çåþj¦5öª&0ÞG¡[tXiã…žvKÅè~XƒÃà})}½_ùLI!¸—ÑGôÌi½m]kqK ±«ö°»b…ä h@ÑaµiÖÞC¹“EI(åaÛkíb6 +ïIÔò·¥¯- ø½W>B;ì Ä�ˆø)÷m¯ v”µW¸OqU6ë0TS =ç0Vu•<ªE9,ò¼¬z8ÊiÝ\£P÷¡ ú/ú#ŠwcRñˆû½M/ « Ð)dòAÉJ3¢³ è=ÜF‚bcL+~ +A‘QD8íºÒÒ…*€Ã}¨*MWúYàw6'kgdƒ ˆ,Æ úb`éoy†¬Ã¦s‹ÖƒÉÝVꟽYÏ5±DÄò÷É uP×�„²ò¸î;!ðu¦*©¶¢P‹¬C³úút^¯rnÁØWq‚]WÀB/„¥ûO5ºHD(ÔSæц¶”)Ù¶Õëj£ð‰BÖA2sŽŠwfèÇU ø¡”W™6´{_& };Ø.½¤ÁÓ<²<ýâ6G>eɪ€ª(ðª¾- +a¯:aɸ„u ð ÍQÉq½.z|A£FÏj¶NÒTT1¢ ?Œ.w ˆQWUæç¢`Åæ¢ÈÃPËÖ9Ý‘êiZˆ];Ÿ‹Õ˜P¹NC¿‰ÿŒß°ÊÊî‹ÚÇr ¢Z—tÓù2NïÊkòfx0ìD…Ðô·n"kìC©7…ÕYQU¥KßÜ«cím½ö±ãº·BÚ`e!,¯¬ãXÛjºY@aÇ°´aÇnsΟ~ìËh£¢Ø:'ÁåˇZ»’€ÈHwZ{µ*Äæuçl\ í5B8Ÿwÿ«>H£Á ¾ô» $¡l^…€¬º ¯÷'¯ÖÑl›zø›Åž–‰},'¶é+–QL».Ëæž)úòd¨ Ö‰€˜>²Ah~Üj:™Vº™Þ z—}zŸÞW@z½¯H!°öÚ'Ôçm ÞŒ k½0úû¬xt¡ª¼@Fn~=ÈÅKéM½¸@¨(ìh‹`ž Õ½ƒÈ±ÛŸAùƒ6—VƒhÓ–x˜à‘„‡¡Êb<]A5ÜŠAðÑÁ½Ù T“„4ˆZê7L|ñ¬¨5Úÿ�û9«'(D•-RB;1ÕhPµ·<ê3 žT£û¡Ðê= „‚q74k÷'×G“òÀ¬°LÉ3f]G»¥ËF¹°í΃ë Å•ÇâîÑ®û©ómÁVËÁDŽúXUôqë#‰þ,°yé-ñ‚ÅÅ«AXÁÅlEw÷ÛðFÛ&Ý B]{¡d E à .|°ßØ\ò5ö‚$Íþ}¨„¶ö^¡Ç~âî‘oDy0vº¨xŽópU™~_«/ÈéÞq k¥<Q€4剛sħ1TÒÛ*Û0R„À€¢W8ÞÝœ¼Ø,C2Á $À‘»íª€Ru=i¬3w4ìœÉÓbmh¦,OPÇMl2?ûXGTø¬eL!ÆäÑ÷¯o”û»>Ašhv‰�©<º>uK_ýîؤ¬3,èàÖ:›¯A Óœ÷ ¸_SWøª›øÚEMRI*¯Þ3"§°ÇáœPððiƒš kï)‹ðQÖ�W ð_eKrê�‚£yÙÍVæ¡Éš¨:è +6Iêˆ;ŒuD%Îñx‚˜3³~¢”Á³Î½ÂN ÖqÉÙ>Ö….ÙÁ·í²·J9˜‘Ç@µ;A™»RÿŠÇ|�Íù[Vñ°³ß£ÿÓý8ú(W!·çú^v$ÐùDÁMoFw:‡€ìîHW¯[Ú1Ñ®F ²á¯BRð¬ëcaßB4®¼|:QÏñÀÄoÅ»«o'å‹æ]¯(B©~vN °û•Í™xý«CU^q¼) ?ÐL ï +$†£àjô-¸ +é=× Òª¸KŽå3or<¶È›ÖqÇpŽéª7æ¾Ç¹2zk3L€Œ‡T_ò5åI4!&fc]›Í`]BáhíUÜiæ¤ÜÝßd{œ‡ù7ïx;H/ ÐäžþÅ4ÝÓ×fpíU¸HrQËq¬}Ž‚4»®ºNþHeŽIWFŒû.÷‘Ž ´Ê—AËÎb²Æ§ `ƒo‹ºâè#í“ÉLK7å¦ôzŸ’æÆ rC`Ê|!±Tšuƒöì÷ˆªÐén½!hʲ¡ð@!wè6žrulmÎg2ú]ÞOñ¿îÜÉçղʌàã݃ÓJ|m9HVN뙌}³hôíÓUÞ«¨Õ+‡ì×V^Ö”íÔîjØ÷™ C»êúu¿’Ë5é¦bÏß+ÆŒ¥µÉ7ëÊýê}vI9ì-<¬a3¶“vN€Óz•dïñêCáKé=ª¼ºú|„ +¬ +ÙËï.þéÚ>Okÿ}…€þØÿÀk¶¢(aºñm…®C¡"†tÁjýÞË£i/Pc‡÷iå$Ïôþ>ãØQ0ß©ÚÊ0Ö¾–“!l¢f~Òt·µœ)¾³âZç}#¯ÜàS²ë¥:VŸÀ€G½·[LNe,¸ÄhÑM ë6èFBAß\ä®VÕ Ù@Ñ-í´å*Mr¯'2ÖAïX?™ªŽ…L&5gÎѪ9²¿@PáP{{åMpžÚrXM¥RzãAO×ê‘B¬ë[PcßTrY´²^' ÍNÇé#í뿹ëYwÃòG–v‰°êibìp^hÎH41ª¡bM³pë=ßÙ¥1úX‡Ýƒ%š¸;¯-×Ñ$ãtGµÂTßã»õmí%wÙ™à†Í¸¡u²‹oòPÂŽPܺñ¾ÆÕ¾�¡-Ëû +ú‘€Mw¦Ò¸5 Úq´G(:bïƒÓAÌ9:+ +@6[u^ùž4Õ¢eÙ½<Ëj~_:Ö +™’Q˜a™me`º-êZÝ_Ÿ>Í N»ßêË/™ºBº +@²[p ·pÏð‡p-´ºÖüÔ&àÜSo A–ö*‚Žâ;u½µB‹sE1Ø)\AIÝ}µA|Úõýa‰'l뤈$ùÀ}=¶lð½ÛM!ôöÇæ35öè’‘ý²o êE¿ßZÁæ•õDj`Úê°š:¯ -ÅD¨ c¤JDÒlœE±·A1¸3±ê€uôB[*[uF!t« +3à¬= ™ªî‡ +}tu•sñ±·ö ö¹ôÒnÑõt›ž¶cå{ÃÎKÖÆúvE•#`�ÿ›Ö®Ú—qóÃœ ¼¿¨Þ|õñGµ]œ+Sdk;·KâvkW»e”0alÇj—†LM„uèů+êJ¢éQæ9ID§LŒAMrjÂÖËÛ…•äM÷——/¨@Ó›nÛ¹^ÆÖ8>FÁµû ‘Ìi›d½¡œ@E…ÄMIOX-dеc†D +Y;ÕF™d’xAÅî'¡g„ä«kh3ŠnîJ$ŽÞÑâ6„¡9.u´g +bý&VìH€ç&R +~Føêµ–l(ú;›2ìŒFùdA!\¡3Bå +š_™‰úI6ˆ;xÙeÄl›@í„(˜ÿ£(Âm°üf=ÐÀ€Ó Ò¨©®âG¡L0öíª|IYU¶^Ò\. ŠXent÷§Ø}d¹À– ‚:º5Æ"»ÓY.еƒµpöe£àGlªÞ‚ + §qëÓ€è^e0¿„ŽÈ ` )æ‚Øë,bnpöäÁG·hFÏp,Í"DÏ‡î ¤¢%ßÚ£teçS˜`ÐbŠ³Ø‚dˆeнaH +]j£±ÈÃRP) ¡7îëéø·eë�(@UИñr>m²¦]ÜÄy*°k#Èê½9^ N.å÷á‡ÁdD�[°é *ÈlÕ¢éÙ5p¬£@P‘ò n²_-=×3j ºjV«á&ûA„¡»û …ÅûoU·¾f'T1';EP”ÄÇd]Üfßèé«w„@*¸** +Ì|<ò +¯ +´n)ÙU.¯¼5¹)*»jqÖ™xX¶aš +ÆÏâf}lŸ«B⾺T‚ÖrT.£ Œ·)a¤Iþk„^“Å=r÷â—Zí^¤;CE«À,ÂÜq• C¢Ì!iêïthFÔ‘Dk]ÓQ!´‘2ÆêCõö>ÁhCGZ@½Ñ]ûâΕ«Ž4öõ$a6þ(ÚbNPh†1K>†x(±«BC®5ÇÄ)xÙ ¹+{ëX |x©–Qô½IG'ÉÜÝ´yH‡‚¸A'?p£8ˆ_Ã-îüº5/Ýä¡÷+0Š^§â•dôdWD[KJ)kí ,r”âe2k‰¥÷C2*6ç 2ÂmOíl0ÝmNänsSêªY£òBûk±[´ + +ÑÇt ÷¤ƒ¡aÂ*P¦ŠÄÝ]õ1 †h»=6Öhà (Ø;šëI“¶õhAM!YcZH—t¶±âwž}Œ¢«–—ЂÖo¹·½Ü‚qr“×[ là«õ(di"¶õ·¿Ã\E�´î%S˜v ¤a6 âß÷¶%9dÂ^<,¤÷ÐÆ¡³ë) +ŠÃR˜;ä!g.ú +Yl+É7LoÅfo—APˆÜß>¿¸ü£èÎ,bÛ%ßU€BÿÊ]IÁÌT‚¾Í´¦ ²‚í-Ý'Á¿,¹e+(ª×q䳡˜Ô5×`#, ZW±o†æð²è Úu¡Õ~+[ëŸ(¥è×ö>†4ýË8–Ó´ã&b•²P¥$!P%¼/!}Ú`c#A$É ^&MÄQ!îR$¿§œµ&éÓßgïáÒqÖA±E@ÐÒ¾4¹&Hsoㄵb©äêˆÉ!d‹e†ü*ƒ$• Ì@’°†váÍÜÑíëg·½`Hp¡÷èCAñc1}c è¸ÁÍö‚†]WRc¾“2B1³ÙzN õ°MˆÎm¨üõÒTÁö†$¤Œ ¿ÛbòY>söngEtá+E¤ÞøeÑ‹×ÝïE¬È1¤ ‘DUœ§´V<´c?®Ú²P »Ú±•»9§¡¬Îõœ“éÞÚG³kkaú–šy1Š$ö^ÛX¡t6³ ª¯Lät—iKSöÊ ik/Ï$›p™ÏÄô(£«˜ZI�¡7@K±²°~Z ž¢z.– sRl¨|(Ø›˜d´€ûå®ö3$G'Ed'ÄȺçZpÓ± .–UÍÀÆ +f@í@&»IDÒ’{1H!1ø6 ”9v- Zi>‰:Ö‚‰N/ŠÂ¦£±êRW*W¨1f\Çz€0Œ’ne†€15Zq7>¾*í>z$¶"åÄì½ÉÉ»Â+wëC5EÅD‚Î^•%±±Üã:ª[1€òÿe•¶Eôf8ywðQÓWˆ÷¦ÿQ·äÊöY(ë^D†•{úWóD°emÝaµ0†¸všAÒêÛ‰>VŒrw ð•„¾èÏìºØn#â¨9Àˆêmxþ°ÀÒ$ÒPøª³¹ð2$BÝAåñBSsê¥=$} w^Ì:>3òÒ‹OylŸÆO&#J—fi�ºÅ¹ô°›|ß¡¿ƒ˜½M:HP±gAò(`O¸ªù— (€«¥“|°b°niA ˆaòd6R5¢µO`õ�ØȆ¾â³¤¼‚‡²ÿÎ#ø #]‚5À´5ÝDFÑ›â‚íAó¡ij„¦¤.q Hl<Aiz™H¬B€§®THA…®P!ÇÁšÅ¥{� [×Ô U5Nkÿ |(ð%ªˆ&)ª †,S€lm)Œ¨èlÒˆÏ0úÈ1Ä:†9“Å0éj/† :—Rf%ƒîǪŒFqíH…¦Rê…¤½yWg5[³X\¦ÐÚ<3ˆ5œò¯CÞ“P”ÁºT8‚R¶µº!«lkïAc̮Ƥ“ðÖŒ°(Ü°©¤$ ÈûéÂü‡¢tÜÆD¤Ó%|v›daCN/ߦ‚›Œ° +Q•šB…’ø2N LDÍ8²U¡?|4 ¦&g,*VÍv唎»ØCF..CX@Õ<ál,X¥-Öz/(kÃÊzÒ^hZ£5t¬èŒ{; +=ídFµ6VqÐg1°xø8H«º(?#pfÛDaŸ9ðkUö€‚M›÷è1j0ú–U»„dR…CóùUÀt2衽ŽÖ‚‚ep—:„FU9 +}¢mÐä +ÞQ6N2˜z�ª’«v2 k:ËùBVyÑ.…`Õ3LøÐoÈÆA„óº²_ˆ!Ý—Q^DyHñ¸ô?x¥Gþ +ƒ»TT6P�h¸,·Xá $8FÁdN)¯r÷^©ú¼Q|ØÌ=ƒ!ÁdÁ ðb1«šÓÚªeZ=Ý ž!ž¦Ï»>|'å¶Í2ņ¿¬Š^sµä´ãD¨õQÓdH÷³×[ÌMÊî2žþX7Ä;73´±|AêÝ2 _½,HnlÀäÆkÇͶñ¤ÈsQ¤úPÐMj±Ù jý+o,)±¸±B–¶™¶¡@Lž^~„æ—êV1‰XAa§6ë.9CÔ¨M7Æ�AÄÎCü£5Ï*êU~cŽ¦%@-"ò,þâ@!ç_Û˜!0.axIé 0qÂChe +¸>M··n–¦0‘]`雇¶¦nñ(à~³²74LXcš¥»âØPËЯ("ñ°în¥“ðT+O H4Ç’´äÌ`-úX¿w Õ@ÑϘۀP,1ˆAŒ�žu~ëòdH¶Bl[ûXèB—uŽžQîŽ.tóŽUzhôYÁɦÓy€ï·QXÐ@00E-C'CÖµK®*Ä›¬W…àµíù&…ã-ï,z�¢û&dB_0sæÆbksÀ$nƒQcé†N—W„ÎT¸U‡ŠØ•«Û êän_*‚„¨§¶pvjª5–+Ó/ö@4$ÛX8 ¡¾˜}j +«caXÍÝ€¼Ñ›Æ�Á£3M&´Ö_7+VõŠ²Oý²°‚ôYC 4‹Å¡*H+ˆ¤¦šýË +øöMSHPK³wRîý e4CµŸLsNCèšk2;x†ÄžÓùXå°úl˜ìSµ6–› 'ãV¤ \ÜÑ&J†ŒµI‡üÒZKú�…|*sýq¡>Bﮊ]0ñÌÄëMPŠ"Š8‹BèEXÌÁWÆB»^(ÁDÔ†¤53*§¥ô2�å³”˜Aµ@zÜ Ùzÿ›UÜÎ:Á¨Û@@NEïïºHöævª×ÿ}¤÷N›‰NIi¦€ RGmÔQM"ݬNÎEaiÝ.ô±°Äë’ª((–ºF4`$›§£Öùhi<²ÀíQŠô6Öj/-$*v¯Ö(κˆ4ÌØ µ³}XF£©ðºÝåÁÕÞbaÁ4¦"ßò:Ó_™D´ÄoB殬™!}ØéÛ¬ƒ@Ù‚;ÂAÜ=ýt(Èt† +*v!sR—µ-àê-,ºŠ(ÞZœ)ó%ö’üÅ¡iY½¼0]ëãÙ²›™3$-û (kÊãR E|µ•ôÜUgE”™µÈ³sNžÂfƒx±UÏ&šë¶½0ƒO›Ìl¬€šÜöÀ’îWpøLÁ÷Š¥re&.iU×›¼ MY·Žm(ú‹A&FPuáAfÇ„Û·†POF¹B’u„Õ3~…T»$ ë;±S³•¾ ¤{ ôFÔn ЕÔȲ=8 V—¹³±0Q¹ô<£ÖuâAUð—Ì ¨ö´Û§Òh+k‚P6_ÔßGÇJÈMBOòiîD1ÊM‘má¢_ZQFKPêöCø=lA›YZë8˜æ}‹ÚPÁtДRS0N·,ce!.^}5;"©† $5ÒÆ}ó«{:~‰ºYKN ÐAe]‹G‰ö©—½!³@bpñ)…PÊ¥B«ÕÆe¦Ëºóo‘‰–િÕJ¨\pÿ½õ`D»¤Û6¼7P-Z5ÿ,†‚`õ ŒÝÖU%árCRsèû±¡f‡ œØ†»—p¯EïUT0ëæ!0e¿U@Ä]dº×õÇwbÄ +u¶.ð[ƒõCÈùëæÂÆW§ +St·ØHÌœ]ÐGŽ7›»Ž(‚¬ô¹m«µš3DÚ¨ùâM-h–Ú +$a½¯JüÔj…,S@¬Uõ�æ}ÉÚ:Ä'…ÈGĦ +½\—Hé‚é¡(Ÿ±À‚¶—l¾ŒB§¸Ìä†*ÈÃ`÷ä8=Ά�ÑNùq€ÔÍÌÆ¢AP¢3ïªö^ÅP%yS ¾™’ª@:ŸR]}AyÇ1Èü•4‘—.‚†M@ì0¹0: ›ZCC �ººš!CP˜lÕELãª`[ Œ‚¼¡&¡úH)íC}l“ÈýlS›¹»L*$¯½iƒ!h +¦P(}‰ÝÙ]OOØWÍŠE¹÷´ÐëŠ4Ýv4äN£th¢Oo4ÜHÍA¹Ê'¶AeM°ôYlu»FÐMÁWkEõÖ¸%_á†5ž¦M +ŠxauK€è¶ž{…Ô¾Ã[çÈ4ÈW¯©vBhÏͦWf¨5™¿„œÐ:ô`EÑš’9,Ô si´ÅN@ú£ki¼Ÿ•{F†ÐÉ4¥éÁºh1‘)GÑÚK»P" Ø¥-#ãG ê•ÚæhB•6ÖÒ;没\*\LJZ²šÇ2‹ºÄ±/I ˜Ò:”…!ÒæÔ‚O eÿýà@1™¼@Ð|“ŒÄ%GYe'&fû>›”Ü’¢PX€Y)¾q@@AÀnÐÂméœ=uTRmød´æŽ_‚Šãš[PÝ”!"¨+¼BèžéÖ@vEb„‘‰ ÔÚV6E¥Aû‰!¨ªt¾CàZ¢mZÁâ¾8}™!^ÞŠ>¯.ö (å<=PDز6^…,îø(§ˆt%‰J ѱì%›lŠ +D]#1·JÐü@n‚mêÍ„†‡Í+ª–?£F·¶T˽²î¢½¬ˆ€Ö5ö%(Ç©Zc.Më�YÐ"æ®{€äNô;½Äqë‰A.jPì„òÊ:â/ VtfaDõ +1;í¹dH•Ý’T÷ ¿eyØÿw”Ó„L· !jØ‘§k<æÕ!ÑU²u(x‘¡Ö#^©‚ +]ú™!àÄ×fÈXje·¤úA¯”`kô@6”ëËöÀ@^ÞV¸Ý•C¬Syñ늶|j0£–NgȲu‘…¸´±<шíP3|Uˆª”mñ± ó±–á‹'TPÝlïOè@ú¶æ¾7T1ö£›§Ÿ +‰Zd“IJùò…Y¤ÏýFÛç¬lAuàšQrFÈ�×Ò†ƒ\Dš #P±nrE,Æ]BOÏmàB/ùÚ×ð‚JÎÁ3Tܼs–!´bO½â)ê6I¡Ù³÷�dQ"|²±(Ru½cA•¾ÑÄÐŒܦˆÕIL‰PMõ�†P¤1ï, +% è:‚JîÃÅNȲ? +jÞƒ*¿ƒø¿@dIÂù»„%*Fû@‹öjyy°ƒ¤FÛöÂèÏ::ž·Öz +ÿêÚõR{ ‹{¤&=N«Á±Å&€eÞB +¡8HO)½@bµŠZ@yS<†,N”aˆs£@"ÌUÇ ƒ«’’»û +Ê`=ú@Riøz `>ÕË5‡¡KR J€XýBégÅ•²¹£D®¿ƒE‹gz*ŠqlcŸ!i”,Hr‰}Ý!L4TE•‹É�‚'gÜdƒ`ËY}[RªWâæ%6V·¢ò¨j¢ÊxY²x«‡ï.å0$.#ž!{ß)Fï-ò±è›.ªW-QQF ”VZ—Ó ;¡e…,¾C¯cÁáZå'5}2YÙë7ìØð‰ÑyµŽ Ï(—bcÔÎjYP½cVŠ;ñžCöb%Š(.>.ClwhÅÓ¾w±-ªœ ]¼_T4GØ"’!XÀ†4¤˜uÜò¡èIì—zà|‚•Ê“¢¨àÍ&·ñ@zÊÞšŠVLGѱÐ|mªŠB3¾š)ñø;惪HÀ¨ß7CÜ8ÈÓSúWŽ�PAðWÎPu1ÑX…PŠ`RúW C_¿AdÍ©Œ"FÕîln(TýUí!ôÌ—6Α .«–Š\zÅúJ¶ˆƒ¬j5-@ÁˆWfhP ?1û<xAí‚5ô|…næŠk‚<ÚÃÛ@!fºÜ;·†QÕ`ä@Úæa"^Ø:ÛP"BÜaiPï)AQ|Â5v”º¨Kw§ùÊÏ !mj;ÇkïŠeˆ +} ÏÌö¶!UVs2WõFXoŒA\ºÁ^C£Û(ÞLoŸzZMNI2'¨2f~ÐÛ(\,i£b°òVHJFÕ±PŸ4Cu''9P†¸ðb$v†”ê¹?C°q „{è•46ºŽ…e³÷4jŒMÅ0}„d^EÉndA#ØFJÝ`ÒPas% @"ªk.IÄ64öB:uÇa@¨ZžE±gì Z.4éÙ`ÄŠîîÍX½ÁRS›_AÄVHs»ªÀr&š\£]6†xû‘_yÃLÛó´Ã† #p+tr–¡º²\[èÌP†`—¬ÅG”Úš2ASØf[`†ÈM—ô>]ÿÙ)×AÓ™!É9âvÎh[ÄÁƒ hõMWF43´7кõs¿¨jÝc2GÀ¢nÕwÝGª&Ç/C#ßÉ (¢y;£Ê(‰((¸Ðë."C¡²Þv{ÐVµ—U&ýu:ïŽU}*ãjŠ{c£ ¢ +Y-7ï§3ˆõ ½ÑXر=s¿…ÐàMfA¦(Èà$ÑUcedæ}+LÄÆ%‚n:½×¦F/Ι´¡ÀÞÈ»”ýÌnmeX׫ì±$ÛðH×£³± +4Ì·‹/UÓu¹ƒ ;ºí‡"r1Ó- @YIfªJ|—Å´ñ„V¡ù@Xƒ*g! ´k\tÿ…¥ÅZºV‡AL+Ã&ƒ*‹6{Tîµ’u(Mz÷C”ŒŽ27 ”3`ê¶]t†@¦E}pt¬dW_T”jI tA²í~öÚ@öOˆ¾s£”‹”sdc-ØóSð4BVVC`l´(…€?Q|&AjV!+[¦‰É¨/:V¼ åÞorƒv¾q± +T÷îÞÕ-ÇCFêQ‚íYÄ)’ »&!Pã"KüI„~Wu¬ˆÇ§Ÿ¿£:Ñ!½@î×|WY!qsqddŒºl±±v’,‚ƒFðŠÈ‚<q`1„NÍ,î�¡y¦&¶¬ÓXêÓVÀRÐæCE™«Mp‹•ìâQ%cwWzºQª‡XCtº± Eï†ùQjpcÒö¢™€B#²ñeÁ‹SÊ® kŸê"!‚òŸŽ2§ÀªZÑuÔ7¤éd3ã1ç>–šLEkØ‘QP¯`Ëq¢Ívž¬ä¡Áp/±²Ûz°ÄŒnJ¢:òq°ñÔZÒCé7£ºq+Äý½B1#-Æ/ÄÒÌàÔ†BŘՊB«¸v2>ÒNêgÝÐtÆ+{h¸®FôÔZo6±a$o2Ë‹á(”aˆ´Ì"�ÊÝ£{ô($A(«‡£¬ý³ÏŽ©tƒ"†D(�ŒËKè{.€ %ÈIé +Y´sÌgG¼FÛ@T¨VgH5ÉÑè§Cg†Á'•ÇmÄ„†)§Vˉ>¥ÃìG—Ér 8«D õ&ïØmafż7íT”Ѩåí¿<>.iOfPÞ]Í{ÅU=;ýÂÚ§ÆÝ"ªÈu¤nê²8„V¢úÉ%¨þ£M„+«º®ëXî„ÔÏ9ÝÕ¡›«Tk ^«H±•—CšÍ»~—îçæ×e]IÇ +Îm´È{Å™!ÈTîh“áô +¡,‡×wºDÕ¾Rämƒ~:BC"äÊ:ÍX�ƒ}ËuûÖÆr¡$ãÒ)· Xo´Økµi”ž�Käîý)X/‹\’• ºL)Lõ]_èUå…ÉœÐO'uŠ-C ú¹«¤¥ñó·±<”÷ÅîYÞKðüºè IzùÒ=„ý†ÎåÕ±"v÷óXÌÆ#õ>{†`w;ì´1öý( +fÅVŒ›#(Ú«²« •²/F µvn3Cœ'—þH—Á$tp?Jëmƒ:V€»´ª8J ÑõqŽçþ¶ÁtÉZ³ŒXt¸ÏÅ0»5²¿ åÔÎ>Ô`4Êð*ÕF^éã«ÂtiZàÑ!*TéWû2vÁ7AÑÇ£mÁmhc¥-’A‡ÕZBŽoà÷麳ͷ eQ„C<üV¨uH®ÃnJŸ½‡ËÒt°úÃJkT÷wQè• ( ˜æ÷r —<ïÙDõý'j¯zÃ(Z†¨\#§«tzuZ?¦tËÒS`ŸpVØ1^ö…©ÔÖS¢¨Â\÷ —4ôœ$wƒ{‡PVׄSdcE]‚û¾2|§_¤ŽB ¾ñÆ,º]¯] ]IÎƪ%Zg_sTÖí9¹ƒ`Ötñ4A¨Ñ»ìNÛV] =IKèE2} +G×n¿m·7 gPƒä8YÁËâërÊœ¼†ó¡ûb»JŒ€ŠÖšAßÅEÍq]Ç‹¼Ñ4‰Ahõ +5ŒNTÂÔÝÜÜ ôzVbÈè»uaD2mÛŸ:ÔâÑOh©.ÆÅÈ@m#6ˆéGèXy'é('²úX4©š©Ÿ‚Ы»Ê@ä{ë… gƒu§‡) +endstream endobj 86 0 obj <</Length 6606>>stream +¥dQo±¡roÙôËJ&"' ¤4º×‚B´Z®oJ¬zù¼«M½Ì}(¨�H©Ï‡¢«Êù$AÜ´ö Bk[Ufbt\“ZyÄšè|,4%£* +s¨)3Ÿº{ZØSŠ¾Ã²`ÙvsQ×6–|.þ¸°_¤tfB¸ž®E¸“Ó`„“ mM¡m*_:-è‹G{GŦ_†$¯»ÛíQ6º.é‘Ì™msÄ÷<‚Aú¡Ÿ?{Q8íz" B—¨Ea† -/èû¯«LxY!õ±Zk³’åáÞy-JQ-óæ5PrƵ#"ø™¹Õ'à¦íØ1¤M«µsÿ]ª¸ú÷ë=öaó±èb(4^ˆzªŒÛ&ÂânMknžKd úvahx3E}’;ÚQJ)”Yk_èÌhŠžúR`ì^¤1HÀt™:µ6BÃŒ˜ …傶 2$/=Ý5ˆ©r+$-aOQõmìäeìŠyu(ª[Ò�‚YÈvÆté#ׅ݆`»ˆ +1®[õë‚ÎïÖTJÓP¨DJû CòjÊ~›Áæ`¡py^P5ìV +é9±EK²Åìorÿ¾™0¶gø B‘Mš šú.ïª …ý‘¢šu'(†tC`çôå¨Jl»Ø5@l$ +ÿÆÊ7”†ÊE¡…rs[_…˜,“<,TÅÕ®Ó¯ª3êl,š,›n[v”~JÚ#¤¨,îtH0y|„ê9”A´—ÆC;}åXë²ÎŠßAe/aÄ¥NÉ"ºRߎA_4åP«õ +D9~~Y;Ö³¼!RŽƒ 39¾A— HÈ«„,+»+ƒ=Šæ>°r{P¶”4H-Uw;²¾¹1òeô¡ÒFáÇÜÔeZ+òf€ð·©L™C(á/^»AŽ§{gþ~©ü|ßÏ¢T£EÓAXÈ^àAïÈacõË™²eƒ¥‰Ê¶×qî´5µ UTõR^BL³]“Vй6¾¾ï@¯N[;õS‡ŠæÃÐßÔ¶&—xeÈ^aA &«ÄèuØ>‹*5ø#šÂjzû PôMÚ– ¥9u¿ö&�ìÄ+Šøª«æª¡%}õþn àî. †¢;ª–ÁoE6ׯŠr‡E ’û· ocP¸[ÕUå“‹@’uÈ,× áèî]k{ˆŒ³&Ýôs¦¦ªu:# +8‚LíöãT¨ÛD Hž·ÝŠúC¦Ía# #·ç*#†‚•âZ+€`‡Üë3DGBÔdÕE`¦ã.&ArSíS$$ÖëÐ7�ˆ1È},T¬k3=A%ZqŠCBéjMç†î÷ÚTˆŠÓytÇ#ˆjÙQÁë¡¥âaÍÒà+¿zqRú1=Cl¬Ø=3:ÊùôAC’½Ýç +q7ëÐ2ˆèõv:$F²¥›'(†”î;íZLj¿/C 뾫¡í 6V†̮~~‡©¢3$bšéÙ—ûÖÎUÞWç¨hš@ÀÌj·i3!°õ’GB–s¼{µ.Ä +Ž(†Ds×ôÌr‚ÐB?䱶z6Ö‚ØPë@ù›¢vüzÕeè;®ïìL¶¾t{Gп}üÑ_ýüãèÿ¾÷«}úö›Ÿ¼üâ›—o^?{û‡›Oøgãn~ôwo¾ùüÅoÞ>ñüæ?Ýå÷‰u ãƒæ€o~ôù‹g¯n¾ÿìå'ŸüôÕ«—¿ùúÅ'Ÿü×/¿üõ7?¿ Èg¯¿9 >{ýò›—Ï^ý÷ß>{þöÙkƒRî_/Ì=žüÇ/^óâíÿÔ? §˜Ïß|óWñéë/_½øVä?¼|ñÓ×ÏGÜ®ðŸ^>ÿæ×vÖ”ãÉ“àú9^Núï:•Ÿ}óìí7ãÉÐÑþúÍ›éh¯Þ|ñÿòkCýgùýíËß½øÙ¯ŸýÇzööÙW_ë¯Ç?þÁÍ~þúåožÓXo_¾þrúËÿúìõóW/Þþݳ¯®Ý~Œ|üÑvóýÜüâŸäd?ý\ÞOðÿÌ++K”<Ý&[ž.åƒhÊ?ŵT2áÜ‚®‹ j` BE.§Jºà—XëRz!9?ƒÀG™ _`´²"¼pü äROp%_RâÉÓ&Oèr¼6mÂen£nlc)¥¸™OȃåûXtœ\ÛáÑæÛ4áæ›=ОöúN1æô÷Eh±ðEW‰7ßÿôõ›×7”"J4 7Ÿ¾øø£ßÒ¿\XÉþèZ°ëM€4ÿ)ÉÄʪÞü—9[Ü•Žª:%á’iùM# +Spg¦ŸTùWC=çÏ>þ(Aä„î<JAØ»¡Å-tî«Ó€DýÕ¨n𤪠Cyá†ò7h]nh¥¥\&D¹Ð‰cÑ‚î¨Hˆ„nFºìÐð1ú®h)Õe©Ua0&²Ûz ¡Â~v*âxE<д²?–Ó9Ó[x3ŸÊZ¡™Ê*h?¹¢#M7f:Ìts§Syç3ú‚sŸÊ{¾ã€E ¶hxbmOÿŸ?`Ý!^åež}úÀÖöÜ)~œÁî)‚àY>PÁPEh¨‡Š#ßajóÝŠFÙØS x\¢g6qÊl°²”¼2ærÂô}í&ifSÖ]Ú‚\güßs¢:þ§qfn>¿÷êÓ?ªØ¯Á^ìêÞüþf¹ùÛÓÂJa(íÈZÞü0FœK�·Ý\q1në…wéuº=Ñ¢iau4#dÖm;ïn¨“ÿõ?þýçás¦â›gx[¯}Ðßÿìõïž½zùüüþüÇoÞ¾~ñöÿ€70êÓ¢´A3[þwëœáOÇoñ?4^î_eÿÖFìákƒ1ª·¬_•bºr^û8uç3ûüÍo_?§_ìïE¸6_ÇçÏž¿üí×»+¹:ü)7íþãýuý‰ž§Ø«_η=Š_üic¦?êæþq.ý)â]'6Î'üM¡ù“’ +x^ù“Ý~—ÙÅÿö;Ÿ_ÝÂM¤ŽùâÀŠ+O=Ÿ„¯ÎP)„öšÁQª¹±úä__…MÝÏþÇùŸîöþÜ~>äÉq8Ï çiªˆsź]ÀÛ]Jíؤ½@àMš˜—x®(vtÌ°U|‚º=CÅP1a¢%ýEáçï†:ñOÈn¶ˆ,HgD×xß³E¼ël±PZÁeßtm{š-|¶XŸf‹wÌÃ7µ€õñ(f]|ÜüýŸ¥¶Jǹ¤P™EÁÌ>«Æ/ «?ä¼Í•ktRç '5„ qV[s,ģ2#WtV[)ƒYp›Ñ®3WE"]"hÉÐH@ëøÉgµÕù0ÓÍNåÏèAk«ßùnP\!Å]rF3á{P2yª™ü)ÅÕ³�r +»ŸrR\½¯ rR\½¯0rR\½¯@òïÇü)Y¤èÕÕt¨®N/ã)ûäu¤zL_ÆL™¾±SîÉôžèøÁŸœÎ9ag̨‰æ1ŸÎD™¯ëŒw2ß ù@ÓmžOçÝÏëQ§!“ÚöaG—oËC®Ù2 œä"÷RNÒ‘{*'É=†•÷8)yœd¶;nô¬$O{¾PÏ€îô6·ZP7ÁW° Ó}ƒÿ$,ЂKeÝJÝn`Ø—ÂÒf1×è5ôg”·tA{ò‚ÖÊõ”{r„©ym—Œ4 +”®ÏtúÚ/º@{dl§¬“L£ó>,èé:9HÍè\nõä4¿?af!GzÇ|GŠÈñJN˜&óí˜r¸¡Ói¼ã™<qÕ˜‚BïÌøÔ?¬h4d1w3è^ óÃ<@È a"h<Óž¢Âwž£´vÌQ†Á–ý…%„²~V“£t$TH]A•úÛ‰~Ñ‚V68+ÑëÌÄ5ì·¥P.–ˆ-"Þ=J›î&Å+´µ\A«Uû~ˆ}¸=54Ÿæ°rNsÄÄ|Ao,ÚÌ!•‚}ù%Е]]ån˜ãX·w8Ÿ[žÏå¾ýÕ=eyZ>·Þ¯i¥µ²j“¨J¢7¡h=˜#Õ þ0r9ù¢òŸv=wÇ»½ÓYêoð²ý·º\ }ØÕÄœzWY…/¡4h@wÅ t{ +R~KZØm]žì4Ü@ópwÝwãåó +éÑÊhÎ|_x…a…'鶲ZdiWÎë‰)ò�L‘š’LH›ò·?Š'¦È‘WX®}SïS„fžçT¯ö÷jX´w OTj-‰Z´V\9ÁÝ^Á¸Oǽ+îtÜGAß{oƒòÙû½ ʾžy +Ê¡AÙmi©¾hû“ùz¦íEßéZçÓ#—ý¼¹Èk2òª/ç÷u÷+”öiþ”Ù“îÇ%ÂðjeƒÏõœéžãrÞùŒ:pØ5x7ÔÓý‰éþL•×"ÿÓTy…éþþÏ”G¢û=o»ž±R'È:mLDÒÃÎÃuÚ¾˜²ß�™Oãøû™³y„‰ŸóIÉ£Ç+9á ηc:Èá†N§ñŽgò¨ùc’ÆþAï°\ßw=ç°?H¼8Ùw½ˆ1í»ÞOÌ8Ùw½¨ñÓÃ%gýƒ}ãõ(uvxO¦æHæœ>ˆ™zø°N¹¥Óçyr˜ý~r*GÀ óòˆ™œó‰L4ÐãõœñIçÛ2æpkçSy×óyÔ Æã$¨Ð¡äz†q…þPÑã$˸§ø1%÷ANr{Š!ïqºñ8ÙètèùÆ6½ä¿‘ÿ‹ªF)áKˆm¥KÎ #1³,å²-mÉe]Ð0S;KÞ.[‹+»Û-í\È’Ú\~7zÔðÊ99LÚà8SuúÇé©Lˆ^å:’3çS9Ò;ç+:á‰Î7f:Ìts§Syç3z¢—?0‘”֊ó_?°�3d!wŠg°{Š ` BC=T¡¡*Ž<1ΟÅ=d"S[Ü‘rN‹„—ÀFÉfM .À&+ †¤[UÔXaÔœx RT·–s3uúÉHcŒI®b„_à8.£ÊbF‹$BßòÆÎhe›“¾[¥§ +^΄f”PÌS¨kXiM‚MóRA[w«Àêæî¨ãˆ·w:¯Û#ý$ËktƒñåÔ¼ê m{©¨œÖ,iÞ„Ržx‰iƒñŸPJâRKK¨ÖåΨ㈷w:¯ÛN'/5S¸ZÙ÷¼è1•ÞǺ-GyDöWìHh7ÿ€º=E¤Ð‹”„â}2âÝPg#Þ õD*¿oþ"Ýjv‰¤×r)XžH6RF¹6X€¡ZBà‰”ñGñky¬Œw‘Ê5.Â&2ÑÒ®‘Ê5b+®^ãvÏ°SªøɨwÅ=QÊŸ(å±!¹/Xôûy +É©”ò¸–JùŸ{&óý +æŽq/¥H¬^Ï)â3êÏH÷epžÁ»‹ôgt¢ÐÅ3Õ&ÐTŒ:#M5ù0ǺØ|*3b&áÌ #“g>•#h¾¢RÑ|c¦ÃL7w:•w>£GÍx”dÄ»øömUús>⃅“*ý}‘“*ý}…‘“*ý}’÷˜0ð(ù‰v¤èeúå–L/ã)Íè5Ù'¿Œ3æÃ7vJ4š¾Õ“?ø“Ó™!'´œ5{9O§31„æë:#Í7h>Ðt›çÓy÷ózÔiÈã¤,~ØÑåÛò+¬Å‡('¹È=†”“täƒÊIFraå=NJ'‹ñÃŽ=+)÷®©Kï:½Ï%Ó'M_;ÊœAGÞx)ýÁ²4ÊØOHLu[éó+5.iÙc&1Õ-]*½&Ë]Ö‰Þf]}e][Zà);ŸÊŒ8!ûÌ #gh>•#ïh¾¢Ó|cŽ ùæOåÝÏè‰ùÀì&z>óÿÐÔØÜ)~œÁî)‚|ïWCh¨‡Š"¸GžhOâ»ÏdêÜq A‰1´ºÄ€ìK\)Á§¶$Z ÈO( ¯kªæÈÖŒ)¦šP;Eò]§R]çéN?A"T[»¬!·¶Q·RÚؾ}0³‘coižôm%ìäßá—»Cß¾kìÛ{—Üm±^r‰¤ºÝë:°ZâÐiq8£LMw£Õ*_Ë.0E¡ ‚^îŒ:Žx{§óºí,É–Ò…‚YE,Žm§§ÛV£eyŒË…–C5·º:Ôí)ÊvT3Œ!²žŒx7ÔɈwC=±$Ÿ(9%ç[&Ï'JÎ_%çÝ,I‹‹š_eIZÄVÜv¯x‚;å?žŒ{WÜOò)(?å§ üXƒ²ÚòÖNx’î…ÚŸQŠwªÕœò,gÔ=ð,·½ÖîÚ%½u–²\éth6IÝòÂŽžÑ4W +üôOP·g¨3qÝyÄ»¡ÎF|Sæ“ïÓ”ùÇM™Oïš2¼×Ò½÷hʼo Þ©tÆc=ˆ£Ó.ÂD>&¯3ë´«1æ¸32Ê bf{Î #it>•#ñt¾¢ë|cŽ ùæOåÝÏèQ3Ð%þÃÞ~ù¶}Ús"üƒ…“}Úû +"'û´÷FNöiï+¼Çœ³GI„ÿ°#E§œ…ÃFíô2ž2WOPGšèôeÌdÓyå|Æ[¾Õ“?øùtN 'ÌÎ5QDçÓ™ˆ¦óuqVç4¡æÛ<ΞףNC'þÃŽ.ß–‡\!Â?d@9ÉEî1¤œ¤#÷TN2’{+ïqRò8‰ðvÜèYI|§žïZ)Ïn}ˆtgé›<%¢Î #ós™–e¯KlÖ™=ºJÆ¥ó%Ò:„1ÓP×B+š«¶ek´Ti'‡YPßj^ãFkš³S™'tÍtd}ΧrdŽÎWtBAoÌt˜éæN§òÎgôDd`~ê¶.óÿÀâË—Ü)|œÁî)€@ÊýBöŠ(ˆà>Pyâ±?ʼnïžÆ^ßEcOm¡ï_`e™ô¿(÷^èÁS‡Ÿ$HŸB5*ׄúY4£(ë»ÓO8íÉôé.- ×|f¿ã¥¯ a¶p—ßYéß:öí;µyé{¾@˜>„„cœ³ÎOP'|ò5o—’r)Å”¯}'Ô ŸüçuÛYçô CT•ždFÈ]ÏYçkÎZ|äVzrk<gwŸ Nøä'#Þ u6âPO¬ó'‚ã‡ÃÖ¸>Õ=‘5þ"øï&{X”d6^#[ÀV\¾Fþ>Á’ÉOƽ+î‰tþ“ŸbòSL~¤1¹sÎë çü¡WU‚ïT9åˆÏ¨?G|KË%ÐUäø‘œsÄÅB02·°®Ë²•sÆöŒ:cÏ#Þ õÄâˆ3\þvs–§)î/€#þîÌ3Šæ èÀ‰œ*ì¯rš|ΚSÅ>Ìq×`>•1gБ9ŸÊ‘S9_Ñ 9s¾1Óa¦›;Ê;ŸÑ£&W=JŽ÷½5ñm[˜çï‹ '[˜÷CN¶0ï+ŠœlaÞWyÙT’âýAŠ¾‡Ù{˜Ó»xJÉ<AùÓ‡1³(çuï!súTOtüÞONg†œPgÔÄ}œOgbPÎ×uFÆœoÐ| é6ϧóîçõ¨“ÇÉðþ ƒË·e!WÞON2‘{Œ('ÉÈ=Æ”“|ä£Ê{œ’<N‚÷6zN²Jø¸EÅûÓÏʯè¾Þ>ûË·?ü¡þà¯_|ùò5ÿH +ÙÑ‹Ùñ&•rÓ6ü_¸)øÑí¿~üÑ÷|“~psûš“Ÿ^}qñ··?ÿì'4ÓÉßüŠþ†ÎûÓÏbøÁéWS§þ‹ßã_ñÏ4þã‹ÿÇ£çó7o_¼øùëçoðWü?é~|öúù‹×üì›7oÿà?H7?Âß~ú/õËg_ãÆÒi°cÉ>Üü7ú·ÿsc¥û›þ—póücúåç'›ÚñŒ£æd¬o1Ý‹a#?¥B·”bEZ¶µ5 +‚•·Ž +9éb +)o j²¥÷·R/uI [,[ŠÛ]aÓˆ·w8«ÛÎÉ",³%´æCZwÖ5/-ÖÆB¢_ñ°í²ÑPè7ôž nÏPt oÅH:aÊMãÝs6Ú@9l¬Ø¤#¦…Bf‰×´Ä~_$–£’#ö™®¹M?í‹<À¾eP—P72ËúdËûÎ}‘5l—2AÊC"ÅÔk\‰÷j_ä]t,‹”°.9´âñµÆœëŠ®),X×Ôb\–œO€·ç@ ´…¦ŠDµ +nøŽ°+Ã>ŠÍê§ ü”Ÿ‚ò‡”miVr²å–:}-ö¯ž}A«‰ï}ïo^¾búÑ'7ñãþUX-~SáD÷†ËcAÓÚZJ¤r¯I+—’!¹ÅoZBl!†¼.¥´¹¡Ô¹Ý¬´º»”›QMk†Lÿ¾Ððþ×'¿üåß¼zõì_ß¼å%ûͧo_<ûå/?ûñÏn~òòw/¿¦ÉÿúâÍW_ý–î ž¿øúå—ô›_¿xõ›oùË/ß¼zþâW_ÿúÍï_¼½üæõ—?ø߸®Ï^ñê·Ï_àò>¡‘NÚsuå8ÈÇý¿¾Öµ›y:9„K(¹Òò§5ºw¥xDþüÙ×ô}ѹ|só÷o_Ò3¡þì‹g¯®çFJØùJû{ÿðìËÿøö]3³¿üúÙï^Ü<{ý‘¿¡_Ý|ùöÅ×´z}qƒÁOðGþßûÞOÿžÖ`ÿãk| +endstream endobj 70 0 obj <</Filter/FlateDecode/Length 280>>stream +H‰l‘MN1…÷9Å»ÀxâÄvœ-uU¡Ò@ü,�©eÁõñÌth%%;Šž¿Ø/ãýãn“qs»AÊäVÙË”áôšÆí!ãõ+e4'㮕Lª”‹âôœ^ÒÝ.ÚÇÆ+¬ö sÉ£ÌàbTs‡0Ys)cŠöL-4\:U×5jMÎu»ªÃã +†ª$à\Ø3Áó3ò‚ÚÉ»<}ÌÏO9FjlxOoÙŸ§zØ&#VÆ7;ü!)<6aækÒð‹:èÚ¨²uÑêéZ‡õk<â3…g“jT¤¡…“M;†’E©Kìï¹S×¹ET¨»c0¦^Û¬ª$áµçF7—_Û§�'ge +endstream endobj 69 0 obj <</Filter/FlateDecode/Length 275>>stream +H‰l‘MN1…÷9Å»ÀxâÄ?É–uU¡Ò@P€TXp}<3¥ŠdGöóÛï'ŒÛ)ãævBÊTª"¬ølUñyHãfŸqøŠdkðFÆ\¹U¨R.¡zN/én„qåñÊ£ÌàbTsƒ0Y‹/kQdãÄ+=“ç�—NµiˆœÜåäë,nBª -V0T%ñ‚“[`ÿ¶~ŽÃ0£VXP;µ®OïiNÌ6Zr6¼¥×ÀìN]=l’+ã‚-þ-&aækÒpFít½“²îä"®•Läì‡ßKŒñˆËVŒ%zexlÒµc(Y”ºÄü-w꺔Gu˜1õꋪ’Ä®[v’ˆ\>h—~�Írc§ +endstream endobj 68 0 obj <</Filter/FlateDecode/Length 274>>stream +H‰lQAN1¼çóõÆNl'W +ê©B¥€ +RËïãînK…%;²Æ3öd|\aܬ2îîWH™šDnrÎæ8íÓ¸Þeì¿R†72îàRÈj…*eQœ^Ó[zØÄø8“ñLV2ƒÅ¨äŽÊdR0,uÊ8GHôL–N¥i€œÜ˵¸URu´h˜`(JÕK™ÉþÛýž4fÔ$„K§ÖUðò1ÉŸs¬äl8¤÷ Ù.[=“+ãüe +Z\ÂÌ·LÕjD·žÈìÉ1@û.u¸<âŒg|¦ð,"–ÓI‹ÂÃI׎ArUê5îo¹S×iÄ]HÜ0S/>¡ +U©hÙ©Fç÷ƒ¶éG€�цc8 +endstream endobj 67 0 obj <</Filter/FlateDecode/Length 259>>stream +H‰Œ‘AN1E÷9Å¿Àxâ؉ã-uU¡Ò@P€Ô²àú8¦T¬ªHv”Øï[ßóã +óf•qw¿BÊÔ› b/#6ÃqŸæõ.cÿ2¬Sc‹PSE”KÅñ5½¥‡M´Ïg/°Ú50*üóL–Qœ¤WLjd&—|bBjÑXò´\¢â_W3J±©àiqeü@±Á J»´MÄpqQ/E NÝkÁËg#*“qÃGzé¶7hÿ§2:‡uÌ×Ô邃\XÎÞâcœa¬bs˜6²ê˜JÖJ®SÏN^O-.™<ž“‹Š„´(z¶X”]-s›~�Fk‹ +endstream endobj 66 0 obj <</Filter/FlateDecode/Length 507>>stream +H‰ŒT±nÜ0ÝõüóH‰’¨µ×"Ó!H2d(:µMn¸H:ô÷CÙgYι×€L‘OO$Erw»‡ÝaOðéó¡¦�¶ª¯kÊðöìv7Ï¿AVL\€CÀ$1"ùo?Ý“ûr°ã»‰Œg²¬Ri¨®Yµ’“È(|Á ɘ³œÿaâ"L£Ëj_ìcXQH‚ï/®^ÜQJ1ñ4‹ƒ G©{Á4^óa?ÁNFÐÄcÝ(ªÏ°°T°ùfVä7M>cô¼i +ɲYV¦p6‰Go8s? slŠÓ¢Hè9õQ](¦ìuGšâŸêä£LÔÒœXçÉ8#‡¼„àŠ†+€Q_H´kŸ™V%-5M1•¼Òü¦ecDÇMÍrjögÖ”=lب†f·š +—ß�–ϯ1(*·S—êcœë¹VK^|ìÖÅöëBž_ÈÖ\ +´Q^‘ÄϦÕËYs¤"›&kVÑ-Ë“»ÛKÇ'ëÏ¡ –è—Ž'Æ<¶ÂñLôqtÜ߸éª?à�_Çp¾ü€‹”mÀ1÷í†ãïÇœŸÆÜ«æ‰8ÿ‡Y°øá—c¨ŸÅÄdÓK½‡\!Úƒz²²*–ÏA©`‰ã&-Íû!1–Ún(^@)£˜f™ºwî]€�Í#Î +endstream endobj 65 0 obj <</Filter/FlateDecode/Length 283>>stream +H‰l‘AN1E÷9Å¿ÀxlÇq’-uU¡Ò@P€Ô²àú¸ÓZ‰*Òw”ñ²ÿŒ+Œ›ãî~…ÄÔ<#´éI½â¸OãzÇØ'FmäÒ!9“›¡b-8¾¦·ô° ûx†Éó vÑ€™D2w˜kÆ0׉ÄdµàZÃÖ™jô‹vÊ„¡R6×ÉØŒJihñàŠ!—°*æ2ƒoÌs€€ãÜ©i‘;µ^/Ÿéôá¤1^ÇGzÌöÆ„Oëä$EðÃÿ¨h± ˆ\C‡?ê.˜×ùé9¿C4-Q/uX.±Ñ3¾RD'öµNæŽ ×Ò1([¡n‘EãN½Lžhk¤\1¸PÏujËdjh\Éâåò;·éW€�˜]l` +endstream endobj 64 0 obj <</Filter/FlateDecode/Length 290>>stream +H‰l‘MN1…÷9Å»Àxìĉ“-uU¡Ò@P©eÁõqæ*QE²ŒßûÍø¸Á¸Û0îî7Lµ$x¬±Çb¸Ã¸=0Ž_a•Š4HJTT‘3q̸¼†·ð°sù8Ãd…ÅÔ:F sí0-Ä"X(qƒ +•˜0,yB1I]Ýk×5&ó~‰RÍ.02Ó%Oª”sEõ‹1¤LjKZÀ7:CÀ~¥P¢HjË/¡èÑÇ3)8…wÇìoLø´ ÅÁ7;ü£ªo(¾ùuøÅzí`œ<{Ójöš‡µð•žñÜK?¾ˆ(WòÌ-¶Ü0DÖLMÝ‹ÊZž$Þåù Cjɦ¶D•Ôoþþç>ü0�ûÃlƒ +endstream endobj 61 0 obj <</Filter/FlateDecode/Length 290>>stream +H‰l‘ANÃ@E÷sŠ8öŒ=3ÞRPW*]p�eH-®“&P!4’4ñ±Æû Æ݆qs»Abêµ jÏS çc·Æñ31Z§*)…ª*̈³áüœ^ÒÝ.ìã&+Ì{Œ«GåL+±@r¥Âª¹`Xt&1Ùl³j“øds¦ý’J·04jM]ɬ£ÇEÍŠ‘¶ŒEð?óœ à8‚Z©ç¢8u·Œ§÷4½˜jŒ×¤â-½fÿÏ„ÛTILðÅ©‘Y Eäš:ü`½0_<EÓšõªÃú+=â#E–qb±øT3EÓICfµX6Âèìä6{¢-"ñˆ° +yis[!ÍŠÎ4n~ÿç>}0�9ºlÅ +endstream endobj 47 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 87 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 24 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 48 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 88 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 24 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 49 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 89 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 24 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 50 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 90 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 24 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 51 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 91 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 24 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 91 0 obj <</Filter/FlateDecode/Length 289>>stream +H‰l‘MN1…÷9Å»ÀxâÄŽ-uU¡Ò@P€Ô²àúxf:P ÉÎß'ûe¼ß`Üm2nn7H™¼UDô2Åf8Ó¸=d?S†95îàZ©‰@•rQœŸÓKºÛ…|\`¼Âº{`²ò˜4ÊÌàÒ¨æaj¥b¸ä•I]]tuÒõLõ\:U×™É%ÏBR5x\´‚¡*‰1æTVð? ‡XŒÖÈK4Q;yׂ§÷4=L1Ú3nxK¯ÙÿÓáÃ65âà~A°Ã*ÃcBŽÉ¯¨ÃöÐkËâà)ŠV³×<¬›é)¼Œƒ°¥Ú ›v%‹R—0Ãs§®³&Ê„¸:†ÆÔ«Íe•¤<IÜü~è>}0�H!l¦ +endstream endobj 90 0 obj <</Filter/FlateDecode/Length 288>>stream +H‰d‘MN1…÷9Å»ÀxbÇùÛRPW*]p�eH-®Ï›éTª"Ù‘óüÉ~7w›ˆ»û B”V›M±TœaÜ"Žß!¢6)Ú¡)IqGÎ-ãüÞÂÃŽíã¦+,éDéÎØÛ„ò"QjERìp•b Ã’gPmSC¶>ŹG©”«uI-S_¥V_òÜ×\2µ…bR¯†%-Ü›iN`…GQŠ4SGêdÃËg˜¦ÈÙª|„wBö·ã=mCÍŠ8v¸r(n§Üú +:üQd^{gïN6¯yX/Üç_>òpm\?º¢Òßš;‹ž¥;h±KÏse&•?;•žê,Kâæh±Š³òÿ•ûð+À�çKkœ +endstream endobj 89 0 obj <</Filter/FlateDecode/Length 392>>stream +H‰¤SÉj1½û+ô£HòªkÓ(„’æÐ]m!í¡¿_y<ÉL–CCð2Ò[ü°gs˜-ç7·sp„â#Ørc„¯W7[¬ ^¿ä‚‰Øæ F$±®g÷Òê4–¼u–Vº[ù¬Iq“b¨ŸÑïl¢Šƒ”°ˆxŒ¤`óáj¡Ž©`„w÷f\«ú¸p 92ü@€¥ýØÂ.&Ũ*S²n`[׈ðŒœn@ø‘EëÑöîáÊ ²ŠfQ˜ŽGçÏÈ"6š|>v,F3tž>v®Æm9[ðû¹Û/,ø'ø´Ž‘ù½B‡†SW÷Ó°XFá匣§èŒ#©ÂÿÍ^¥4µ{á‚ålbœÀëùÉ#jNÐ,½/Âb×ütÞ¸ŽfcEØ8ð¶£ÚØ–ÃÿUArÀ¶µ6Ѷ¥B=K núx¤=ž¿¥yH@ÔNf¦d‹² +¦ÌJ±;«±‡ˆ&ô¡V…0–¾Ëc�…2Ëk|Ë+÷+À�¹ÛÓe +endstream endobj 88 0 obj <</Filter/FlateDecode/Length 374>>stream +H‰¤SKNÃ@ÝÏ)|8¶ç¿¥ JH +]p€ +ZU€Ô²àúxfÒ&UYP¡Höxâ÷ží8ýÓúÕ‚àî~†0j“"·¦_® ¶_† &œÅàx$Ž¯æM_Òt¯ŽS»X)mßDxò</M@ößà`{0u•BÀ$ì)£ÏY`óQqÅv!¡‡w³6ƒxœÃ,#ÇßP‘Q²ÓcƒÚ\:œ¬ö9ÑDd‘0g/µE)|Æ3t–5Øi—ƒ9˜©ÿ“ïNÄ|jÆ^i. +¾I‰jý»ÚÁ0#a è…#¤+–JÒ)K„ÿ{ƒÎ¼Ôö½/UJWÄæë¾=æ s˜œ×ªt u媗s¸1Œ9L ÂJyF·ˆJb;Ž÷#jÆ&c ™M²…4"¨’”¡Í7YÚ&ÿm’\FWúw> ¸>%d]îNÈ©ŠÓJ’nlöâ¼Ãœ’¾BŸj–E'Et:éÇÌ��º$»« +endstream endobj 87 0 obj <</Filter/FlateDecode/Length 359>>stream +H‰¤SKN1Ýç¾Àxl'ÎgKA]U¨tÁ*(B€,¸>N2L§**4RÇ~~~Žg¼]Á¸Y\]¯ÀŠW°5¤ºªÂÇÁëÁáÓœ9Cʹ�{Á=¨"‰E=¸ÇË[dî®›%;w*†úÝ]DV†/°±‹gpï¶QM1bNÀTPKØ¿ºê©ë3*¼¸Û.ž‘S_‰QŠi;ƒ$da…DXŠO§bÑZ0ÁàÙŽO&Å ®Š4u!Ìûðs0¹÷ðf'B.à VâS+rY&KDk}>ËÑR-Çÿʼ€cYfJ›”…àd4¾œV,)Â0µ‚ljŒ°í2›{7pÄTâ1@Ø2ÎènQ ìÇé~B-²ÉdXd§ì&MjIj¿–3*}FÿÖÄY~dc(š3²=÷ ŒÅú0d›Ç¢ ÙÐÞîD5·(AdJ¬[Ç_fë¾�ß]µz +endstream endobj 42 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 92 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 23 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 43 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 93 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 23 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 44 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 94 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 23 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 45 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 95 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 23 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 46 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 96 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 23 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 96 0 obj <</Filter/FlateDecode/Length 364>>stream +H‰¤SKN1Ýç¾ÀxlçãdKA•*Tºà�PU€DYp}œÌ´3¥*4Rì$~~ÏŽ§X@¿ZÜÜ.ÀæäÁÖ,uM +‡W×/7¯_Ž@3&.ÀÞc +bD’‡g÷b—4›á<œß,m?ðHõ{\º„¾!À +öà>Í´Df©TT0–"°}o¸ºv)c„7·qk'p?‡yFVSp SF)ÑÜ7AYXA KñzÎ#*tžÍÝY=uS¥GÛ«ù >,boIΤ]ÁCMæ® KeIEòEŽ–¢k9þ/õ +ž¹Ôá]m`fE«Q±€/—UG,š ˜›*7{ïßvë:N¨ör§aL¾œðã–jèè7#°âäv;ð[!ÔÒÔÎÍÇV†±ý[;¹ö¯6AÕcôbÎÈlú…‚±“’m:KlUAieaÌ-Êc�™ƒµlú‹ÖîG€�uó·Ï +endstream endobj 95 0 obj <</Filter/FlateDecode/Length 380>>stream +H‰´SËNÃ@¼ïWøâØÞ÷•€*!U¨ôÀTÐ +$ÊßÇ»›6)å@(’÷93ö¬Ó?Ð/‚›Ûa +4&)1D8lM¿Xl? [‹Á9ð:p‚óyÑý˜t•§C$¾Þ-•¶o"<Š@ù& {†/p°†W¸ó¡Óª!`a`ÊèsؼUl‰]HèaoÖf5CXFŽ.ü‚ˆŒ’½N„Ð'§:ËSOD'ælã¹®(…Ï¡SìÞì´FMÁLÖÇî8Qžà]5W-•œ-–Mçe_!Nµ ]-iîK@/b!]pTŠ®rüSþWˆÏó¿¤?’¨{ìÀæK[<æ s˜jÚú êßÏqc:µ N'ÂÊy‚·•‹m:¶ôjmK!TYŠ¯óî—Öý3›‹‘ÅlE{:ƒO ™5y!§*NSIÚåÙWH¶Ú-º%R:»^²èÄA¢¨MgÿâÊ|0�ºŒÅE +endstream endobj 94 0 obj <</Filter/FlateDecode/Length 24606>>stream +H‰ŒWÛª]¹|ß_±~`/Kûkœ00a2ù�“±æƇó÷©ê.su†ã]µÔµ¤¾|øÛÇãçéøÓŸ?·tÎ^üÆ¿}ß¾Ü>üôK:¾üû–ŽtäRÎ^ëÑð_žÇ·Þ~?&ÐzúØÎd->þåÔ~#YFþûûO·~æ–ÿõøtäã·ÃŽ¿·?ðÓ-½ŸÓ`$§u¶µìøüà²ü{ïólÇï·_n??“(ùÌ£¾'1òi«âgˆ¤sÌÊ&þsrŸOzÆ™Íð_:×*ã¥]ƒŠ¶ÎqÜKÆϯØ#\¸=…fÿß?‡ÿ‚Íî±}úûÿÚLg«0…_õì£àgÁâ'”ÏY`°wxw.ß}%ñ+•;W3w8¬c}?Ûè°´-ø›ÏÚ:õÕÓÆàp¬Ä8Ú›çÀ:`XX„4�Æ¢õYŽï7‡Í¡ÍX›†î¾¸Çb«´¶Ÿáša÷®ð +ú6á6–`é肼. ƹò ÑÎœÂÙTF¬(V|;m™ˆÜ‚˜{÷ãD? +UG®^9ÑEl}Ifvþ¶5¶¤|È›{Eq)ßF(φćœérÝF¿‡ï=`l’o’o[¾ÉŸÖ\ îïPæë’|‘·uË›jÞDNàG¼ÅãÕ‰>ÞlÁƒê'Š”ñp³~ò~`]”/Ì;wÅ|âxE5™Ÿx©NDÜ︖eÍM¼Â½ˆØØÏuüoøÙ—{ÐHÉ·.¢»@k/al!_‹–[ ùZÚE¼€°^0ä³ÊYò9_aZ‚´û$÷Ë’úd!^V½‡RŸrÀ@®±–+„kyEHÀFÙÄêµ{¡^›%¦ï]Ñ-¦ÝÃùÖ†|–ý¾ígyØßࣶƒ¥XZÓÝ) +'_ŽÃñÊù¶½I&¢†¼Ð£akä€Z^e?ò‰¹å…Ý^dÂp\0ħ‚µß†M…çè°¼„Û¼ŽÛÆÖ¯«Æcr¢„}½$+~sMÁl»¯§`¦§Æ}Ë›¸éV¤<O‰_ĈÇo6=9t„íe®x¼•qºµuV<ô‡[Aam³z–áæ×™YÚTZáݯŠ˜Mð‹òWÛ9«»”Ö¿ZüYÝ ]Œ¿÷:PqLE<ÓºX“± y.J؃+Óë9±õµ »‡Yp¼Ðg_ÍGGbëN8,ïÃ-_6Q$_ì"Ê<‚àðB!Î ;‘%nr°ÏQ ëV/(qéó+L"ËzÝáÉùÁWçDv•IÔ@²W¶Ô.BâÒWºˆ—°!¶%‹ÜÒ9ô³ p¤¿ÍvïA©³¹å�[>_áÐnH‡òΚä÷}È¡¿Iw«¢™º–?#Âœ…¼üv5…?´Õʳ·3N4·ÝSQÃÛyõ<ohõ‡ß.t\ˆúÃ¥È"x}ñ}44 <b>8áG‚„™5µÜ#<ùpKU[#™i³ð%·cÛLØÒ÷[žñ¨1ªN›p"Þh”¬HÌ<ô +×3ÈbL¸4Ð�"O›EDxå@ÆNÄ\÷¶Ä‰~/` X‹ä»ä³ÄûØø$]^Ò7©oégY û¤ÔY™‘ùÖŒ'·Xkã)Mx(]}ýW&ØY‚ÊÈ´l¾ú +!ÖIdØî·öŽ¤™§?–„Ca/•æZàVc‚§ÚÙÅ3O28•„þò.qíò¼oèþ°\>v®D•nÁk‡þŽ`ŸËxcP:7ì—¯i2H$àPöV»xU¹3}#›^[@ôÆ1?`T¢*ª4î²z†pd‹i¦2¨¸ŸËÛÚ†3ìþ0¯ÁŠ4T Æã%+>T$zzù»ã»]!º0,ñA`ÔÌ^Ù{4qEŠÃ"O… wß‹–#<ƒíÖ†˜}�Æùö?øŒ +˜jþágcÝ}xú\ž}ÆÀÉYâµð¯·Ÿ¤L”ÓÄ¿.|ûrûS/gÜ|dÖkÃŒ6™/ðÜ8ö&ó茣ÀfÄúXoŸÿ}_ßH¯ÂL'‘¼RâÛŠK†¶ó/1.ôêq`ûçW‚\™ÏÞl9yúäUï³b'ŒÉˆ·"¯¥î‘dx3sfÏ#ž_³å/èÎÇL-Ò†MÐA}$–¿{t#Ž‹DÙýˆxNÁ*ñ*}>8a"¶B“Û+¬]Ä+øÝ¿ç-°w“eƒš‹àh—<Š$¦ä“ä‹ôþÀa(´B¼M5¤ÛЖk,ï’n¡¬m(ë>-Šù¦ý1t„òžv í‚!_e¾+\΋xÊ~·-¯Íú€tÂMÂKÔˆñÉ#3îËÖ*²õxv鑦Š¿¹;ò¡+¸dVÞ.$«â¹Ï¨ó$@tþPZ™ÌPðý»'ºü²'ÌgfÞx5’ëIŸ,ÒÚÌ~í×9[<„îå‡IÉË€•„UÂSXAçÀºÏáa¤ÈгúyfÔ./YH7=ª Û!¿s•UÄhÊ<>¬QÅ“5¤Ä€rѼƒàTQûòÕ[Ô>¶8+GÅÌH–P„’Yk”ÌäÍ×øaIíbLÌxÃDëä×í¾àç`‹Dfn UKfÞƒåLÃ\vm‰Y•¸]D–kk¾a®5)>½Íä‹q|¡Gÿîª3Û¹ªè²¤²Ï&¦1â1…»BPG³«£\L`¹•¥3"Þñ>Qo–Š?ŠÀ²ÙÛ…·„lZÙ6»6j±ÑÚä'³—cm4ò•3’¸T´í@OÎÈ-Ÿ@ƒéx«Ø:äf©Ûè&Ú¥B„Ü,ëÂ:!“zùi²RµUS¸iݱÂ]¯#Êëb¤#o#d²ü¨:¢¬à´")žmßëšäFÓf÷åkáFYûn7ÊÚ:ö½/ûúµ%m%¢Q¦T\W¥LÁujE:{l¤ì»'¸¯ÒØ'Pz¿ih²¢G^šT̸ŽeŸû¼tTmõzÀE¸¯FÉy‘B#³¢4(XdBƒMµÞ¹jj“= +ë’°%¦+£›œáZ&šƒ›œSïâm”0üá ˆìtìk)¼œsx¿5Òéèþ¤±¾[ÑNà›O›h«kèA[TXÃéσ:È{T/Ô±Iÿ‹yº ƒá±Çx™Æ’/ËV†Y›ë@jçÜ‹ziïÙàb^vJL]q»+§åÎõè†PËJ‹I3.™½]ÞY>Ùëò%GuCÁi%âR¼ÿ3ó<ö»ˆü†)ÁD œ‘”?Kà!X·€?gš¿;{£¿ÍžäZÈZŠ.“b–hcÏâES^ó¼ªdæ0†rmq@MxmQáˌǀ£_4Ž&»“<iÐü_ÆË&É’Âû<Å»@µ!þ9Omz‘µM³¹ý w/ÈÎi›Uð $@! 0Ûuû×oWö?ˆ«äoŸûið˜îz¿ì‡`£dß³§ŸI7�Ûo†ÅÛ¨áwçý<Ÿm{Ü5²o~›öÒä’}'ðÿ`~Té°ù²ëN«‰;Ë3ßDZðé—ùåõË_—U¯Œá¾ÜO½9oœ}3±×°ëfYÿx3m{kx]Á…Ç×?=ý›þÆŽáà°£‹ïh“’dSri=¬e¦$&i$ù?žm}çeÞÒ|=;éï-¹w‡=†¯M¿,ï*îÐ:eöÎÜ.,['#ePò‡L˜~˜È“8 WÙ‰´iâx9Ô'°íëØ×à´½Õ˜Ì+Å^ü ?Ò6öèÐ øý=` « îN––9˜rÜ!÷ÚLˆxj6G¡Š_èZ£ »Ð.äNý]êО~c B¯<õÊS¯H[Å¡—n0ïb$A¦Þ]¯¯|ãEü)»ûlOÈ¿1С7žz£>Á.½qëõçÐ&#hkµê£'\‹6GÙÒ° Ø.vãEy&Vl‡ È°yjòóÁ‹ãå'ò£-WáN¾q¬ÀO ÝHòÿµõŸŒ1ÔbfÆPkëÆþÐlå l3¢Z- o¸°ÍäQ%HÆìQÙ¼±:”'°Í_ÚÒ„Úp:=ñ¢yðvƒÏPûAèõy£¦tÅøÉÞWÒF“uÚ“AsÊ÷ä±…7Y{Y¾×óF{2Î<H« +XbÖÔ]¯¬uã·Þú6TT ’Gj‘qvìÐëÆ»·ß½}ÜXÓH±{[Až˜¼à냷b!LÊãåî-ßzËî +CòŒ(ñ˜X%·@èÙºñîUì7–÷4y'h Ó×#¢ëeÕàƒõÂq÷Ž»WA~ð[ot`ÛS3‡§™ï¹Õ@¨Õqc»°|Ãrá{âÝkw¯µÇšL‹È€€¦½TžháÞÀ»wÞ½³^8¾a¾PEã ]¨Ò[O«Š©ªvXí7æK»ñîÕÑu°\hßð¢t«>!zãEóê¸{ÇÝÛó¿¡Ê-Êhz;Í!ãÚ¼[û8H]s´Ê‘ùE|dùÈìÈì-Cãï}÷°Ê( > +ór¿S«Ggùkî‹ð¯±¸^û5ëM¿‘íG™§ÇÜõÙcsñ®²oú8Ðù„°×âue··ã7øÁжÕE5¯_D¨•AìÚ Ô«MhÒ+À]Éo@ Â…û·ÔÌ+CÅ{dò•[xû¸×Qp¢üþØ4„Å»¼ä; 9¬ß±~3q`(ÛÍÛ} +Õû&¦®„û“•&û¾ÇJû…TH™F3ì8qà*ë •\ÿhß™ëßoàaWð8ÝmãTþûxàë{[‹Ð(®bÿcδ÷7ø.qˆÜeѾ·™ÝäXÔ3wãOqp¤³pÜ:’ìI®åG¸7¿\<`ÂßwЕÐh<«å(hDÿ £/ÚX‚¿1®sæ9Ð×°ªÞˆØe§ý‰ÅwZŸYF„œìŸmŽj47]Ѹ•Á(›àÔ|¦’žÚ´Òä‚Ò�”À\q£.‘JhVFó`ÀúÉŠudÎVá}†lFè,=y8棹b×™siì)p>Ã2#øã2†ù``æ"ÍøÛdæ˜YËH4™'ÕdYaÔf¼)Ç~ar°}¯}€/ôqÓH@Z¯wÛ÷Ðç_LgÅÊ ™95�וŠÖ@.µ¬3Ãs2 Ä2laæÉ6fV“Î2$ÍÌÌ ´U5°13CÁVd‚fæ>mÒ±]“OLά1dÍ&½èÐÀ©§|ÀŒ2dJֹçÁ�í3Î…°LÛ€}æ”_•hÈ~£ýÍ5ÚG=? q€WnYØ™’Ö5®j C§©#ÌWÎÕa¾rýŒëÎ5áf¬!E;óÕz\$¶Éì5œ#=sU1ˆÁd6doçéc:G:3Û*,2³ ™Ýyà˜2»3³yÀΘæ¦P" ³»qÈìÎ4·"Ç1³M™Ýyè2»3Íý*é ‹R3‘·ÑDï‰S©¬v�ËØâ–Qç:k©uÖ‹Z8YÆÆ'0Ÿ -N`œàà@ßø÷1ÓÒbl6æZBh((‰—pZ5&^Bâ5žUI‰w]ß›“IјŽ éغú0-ã9)bZfà7(˜‰XŽ×öŸ”ŽÙ7ŸÀeŒ¡Üãà¢1éÒñgÐþ¹`x›˜ŽW²¤tl•îír}aoÃP¦Aª�F£_Ì¡Çc'ֵƘKºæ4]*’–8IÂø�á•zÁå×ý ljwn¯òøHæ1X®ü¥¾úoÛ kJu§;rYÕ+ÝÆÁeá}š÷âÕÿZTl{?×+â÷‡%^ñö×ïÐ>Ú¾À °§Ú'x‘wMÞäçø¦m÷ ¸òÚöôÚ^ìYÞiû²`5ïõÄítøe[ÞýB¾mäLAÝÃ}5XÕ~Õì_²ÿÙx³Àªß£>ÂÂx©�.a¿±†~Šô›Ø^Ê4ÖL8¤}=´³åu¡¬"ªU‚öºPÚšÝb´8˜K0^V¢\“ÂWG¾’ÀoÀ)¤¯Ú†¯Žàø*ÏÙýð¤.ån4)7Û³ð¢ž:‚êEºî`&Va¨‹#ÌPú à^Òu]«ïáº#uy®i¹²&G¶ê!È¡Ž—+ÿ£ŒÕp]px.˜[òc½¨„ãŽ`¼~Â|PÃC srkÉFÑxf¬MŽÎôÄAþä!7Ÿ>‚P—Ÿé§¡[øõŽ¾‰!9äf%ÈŸSDôCðy¸_©?Úi…§‚¹Ñi¿>.9³Ð.œáÈ#GÎ"·~°Üêô³Ÿ¯J¹ #œ *A:ý6»°ß~;‚¨sH ¿É9mÝ=—ÚM #ª±¹%WVîæ çZò\¬-¸Dª}³ä:EøA…$®‰û„ZÃQw6%, o?¾Šv‚‹9õu¡†Wbž1<ýMXnŒÑbÓVzépmeMgk¤Ç[C??IiÜØB=5Ô—Ò'½ŠÂ5Á*[‡¹Wíž:‚êYnö`&a¨‹ÇõtŽ×jF½1\úü£k³2×…5ôCPB?Ï1x~¼ñø.íõNá™-ùî'é7Õ£CÐcm!à¯ÑÖª=©¨Rž¯H?-Ž“· ÝýšHÿ0â58G¼ÌëòpyãÑÝÐô÷ióõñðÂòFÆÓ^,âÿâ<ó_¾Ë%Ir¢û9E^ ËÄ@òN3Û1ëÛOHpwÐU³IË÷$þ�b ¥×ɨÅSx~ŽX §<¸^ÑÓó€È¨Ö·s(mØ3²9xŸŸß ƒ8ÙÓÓÈ;G#¯È!TÇF2 +<³<’êØxÂNw&M‚I“ˆ¤¡bÝNF&M‚Ç×ߪ[ÂÉÈú‚Àr‰+£××-?[y7w¤} ¢e䑈²päŸ+!ßcû #u˜JgæÈL9^FÄÅîEÆA‚i[¨ì5"öši[(ìµ?¡Õ×£ˆj[È—í°¤—A wâÌÈ!ýwÄ‹à+V~ ]ÈIpj`춵žQq PÒÄÏ7ùÎÈÈ µÇäH3Ñ(ïŽô4²»#û÷J¼LÁãmwtNìÙ<OzŒ=¹‡¯Sx~Ž±þÉ|RhJDÔ6òM(T$(x·ØHrÇt‰+£VGù!åŸÏàßÿJ¢¥çøêm„¾qëHðÄ“@ªuìDâ¥\Q0W䘩šM\ 5 ³$áù9†é@fI‚³ï(‚3€–‘I’`’(¦7;#·†/ÏÇ >kÇÌŠ„¢J1sƒÈʉ$Oí ÞŸ%°à Ùü†ÙÁ‡L83*úÏô0ôŒ½¯<G+ÆqäÝ·«¹”Wx~>;°óu +dN"Nƒû:¸2N¶§l?!~¾)®¼/›SL67ˆþ“0Q_lNÅ:Ðâ+Áß„÷í•"áΨþ),?ÇtŠ¦`B\ŽÑ;@Ë8ØžBÉÑc—ã;ÞÏJÄX’ñuºoò!~¾)vô‹ÎÖÌDGñ›ñÅDü ùŠ•ŸGbú�j®,ê ;&ûÔhžŸGÑu2/ƼH¬Ô vûý‹)y‘`s0öH_À•Q‹¥Pf(âý(’Ž="Tf(¸Å:ª".¢/&ê<$p6â6×1:©'B[ v)æ9P0Ú,\¦DË ‚P!ü2¾‚Ë”ÀÔ0üÕ²u`;ÌјaÏØØb³"‡AD‰ -#ÏA‰žŸE½´¥µRh¶#7@oÈæ`×d),½ïèmµX^„_ÅàÌÈý@ÁïÝ+b½ˆeÜEÜd– 9^Ž"iØB.]‚U"e1;0QçÁ!ÁÀK ÊEJlLœ7ÓÄì9}bÏÈÈS\ÌÜD¡\ˆqfdä)Ø:êä:ˆÑ3²H%Ô> +åÚ±Á…;#O" C \Àu2*yüÆÌp¹‚OÁä8‚E‰y°Jžìßo[êIõV¹[ƒˆ‰ +=#Ã.ÁæQs׈0 WFî‰^ÛÇûQ’¾ÌB]‚I“ˆ¤Ùü-ªä%u +ÑAÉx•¼DV†¢ärˆ<ÙÑ~£ÌQ¬Ÿ„èn•< +6£È…HÞ*úÜ3Kë9è83j>¾K{õ`9¸Ú82Ú-*Épeäþ•àZ$Òû¸Öxòð”`!RÆÖDÄV赊^ÛÇû3•-Ôr(¸±$zndAúŠJ°°%FnÃk]X$Ô‚•µqynü°ó(¤+…Glœ…+’±õÃN‚u#1ª Gz6ò)\™ ‰^ÛÇû‘›Ü +N M‡¢åA‘›/³“I¡ßn˜€WFV‡‹âR�"ÊS83rãB,$˜ÁzF~$4!|}…èn• +åB'‘„§pÔ‚ \¢°*¢ôç=z'C¶ï—-²¿‡<Ådn$F=õ0£¸v”ê}E‡,'‰VDèïÜYÞšDÓ”'DDÿOÈr ¸Niñpßè{F~h!ü¬ÜÞq¼Ñ•ˆQÌ*Fê¿yö²?ðÒz(z©½#¨P(:%Vê%x€Ê�„îu^EîaÆúI xp:äQ¸·FWQÎÞY¿ÜŠ…õKätˆH¯pdÔd!t-“˜UôÔÃÕ¾ÑÎÉÚ±ÜÞtÞQà¼;¸3ò@‘Ð’!Ö®ÂS+²u&ç…Î;‰Y…¦l?ßd;#+T¢—æ:Ö$¢B-#+”B, «‚›Èpª wFŘ¢—öúêJ`Æh5c +6ë’$¡7b#L\“„;£fLÑK{[ˆÉ>eLøú¡‚‰žš–ñ«aTûj@”Á+0E T¯˜UôÔ¥µÀØ8sr¦Æö…ǪÂSc`ç�]3¦˜Un;õØ0Þ `x)®UEÏbÍÉ 0ÆprHŠÒ|[½Šè0¶ÚX•v +Ö…ï*z¦9-ˆ¨3áÌ88$?X¯E¼«Þè4ˆ^Ûw«¢0¡à: P{ˆëT1‹ÈØO¡£ˆ…GfÝ·î™yÇsôF;WØ:w®„•öÞŠ°UE/‚_•Ý:–L´Œ¬ +Õ„„UQ¸¯*4§uµÍPÌÒ\I—°"2¶ãUÄVi82ò€£ØŠ!Å,b*¬ŠV„{È„GFM +âM=Å(âM=…UÑŠ^…bé?ß7ˆyÌIŒÒ¼*f…ßäR”)]gU_À™Q%±5'ŠYEá7»ˆ7»£«ZÕë l¹ +ð›\ŠV„¾ó½}É%F…[µÕQ¯:ê?ú¸°°ûL¾~s2ê< Ðœ ÞüQÌ* +ëú&Ñ‹ðÚÄë¨VGµ:ªžuÔ7C£Ž:꨽Žª»VGÑZ"D¨Ü‘[feŽÜo…•<gÜV8·•rÎWá‘ÙÊt¬L§?ËpåíQze¶½¬®L¶•É•ÖW„v•P®í…s÷kíÂy±ËËóËúe展áæ)\¦[‚·F}ž±—áz}ž1~er¬63¶|^¬«l™u*Ê>ô•Î¬¸Îû ¹~Ùüú6_Ÿß{ëûÂp=?ÚÏßùù÷§ÿÃù.p‹V„Y½ˆ™.9×ó»ïÿáü¾f]ÏϺ#È“A^÷Gs|qdÞüϯynŸkgû韟,öÊ£}þŽ‡öžOÓñ)Š¿úý¿—2Ÿ»ë_=‚jŸ›Bh~þ?ϒΧå}`}xôàûÅcñÿg·ÛsL?4W¼¹€v?\ôtºÐp¢ÓÅwŸ‡'àsÛýÐÆx½ŒÒýÇ?_8tÛêhyÝ¿U><„ÿ~]}>×7aaŸ·nrPGSÌè)Ç›ÑõýîlÏÿëuЊ–s€1ê4ð3ê\ ùÐaT~AûùïóŒã<Ïbòk9S°%~¦€Ì¬h‹ø®õŒ²AnÑöŧéÁ¨þDé`Xšë MÉ?ÿ€Eˆ1ˆÝóiÂù™õÿè.›4×RˆÎkoõ>ƒ~¸w==©Aõ´×ß&t„í|™#;@ @ nª£,T¶ƒKÜx#ÄÎâñ®YÎS¨½½1Ü QíÃ;ÚbšÊŠB—äFã:ø…®i@ßEh62!È;„ð¢®aC(Iq7fñÔiúƧè÷Ov‚ĸXÊчBšl¬$Ùß2…êÂ_XŒÓ?‡aK(†($JÙ>Ëtáô%`=Diáæ!J‹Ó< „¬‡H|A×A²m(FW;£—âò×ëÞºî+*ËÖõ“ y‹j˜ÞãàŸQ1ÛLeìä¥æµÏ4y ¹®² ^š]ߢÄFkûä½åÒ¶ÕíÍià©Yÿ l›‚&a›âŽÊfÂÖÜ€C׃ km+²(p¦Ø¢À™°ESÊ3)ˆ5ØöF{=N‰ËD3 ë~ðF^Ò3HÏD«3ÄNIÍì…m(v$r£æ×hFšd¡tg’ÕéEÇÓE$oTi’¸)©™Ù³PmÓ0%¡ÒJx&!MKñb"OõMƒüÁš´w€ÿycÉY¦Ý)5ÅýÂÇ„þ§BÒiÂá$‰–Ó’ÈI;’²wSÐäz¥ åØdÙSÚi”£EÕ=šåÐRK£boT¶ø¦YH;íÑ‹«Q7¹4 +ÒƱ³ÄÓZhs¬%àQ÷i“ª³±VPï[•ÃúåÖJò3nv"CãÖZN@¾½‹‘¯J;#]°ÉUÁ6R2.œº¼ÛJŒ‹ÂમÌÈ-%³…½6ERDÛx#œHR4$ÕH¤ö1%©F) $ÕQKÿ@í’+¦‹äŠÉÑTõ2$b¶Ø—®Ì¨ž!Õ0ªg(½ô„Ó¨¦¡§n${£æ�§Õö$Õ3žçßM‘‘ßQ%ÁCZiÔÌ@+iå‰ 4K»Û(ÝíE€mQ@#…C˜‘Ã!4’8|a‹ß;9]e¨sÒv,n[´Ÿ©ÙöR¶?Ú&qcû-Óú‡?—&¹5K!;¨l ‰)&'Tõ0ø‘ÒQ %-¦(ÌF—^fEÁ©…!¥uÒ;ôµäõ˜-^§8 Ã!ií$•ÝN%µŸnóÙAeÛN5‰Ï!î-ƒøµNHl²jT[P^ï Hy½ùIyýؾi퉷Ë2…ëCô¨Ü!õtÖ[SÔ´¾ø´¾ÐÂzkŠT×)Ý¡.Õ[DÊäêEAùŠã·øe‚ÄyqÚMG^\_š/$>ë�™®v#zhZG\ñvÄÅ/=>Äå+â)"..awÔÅ/Å‹FÂvGköoj´]qPÙ6Ý'̈́‘šíZ¦/¸TœNb³.Sè‹Õ"W p„Çl[„¨Qû,¶½Ïæf €Cúè ™p5Ò/T¶qPÙB@õ h&\õ Фýxd‹*¹*ÀOh`˾’ü@i\B³çÊ”Fñ ·D‘+®kôÁë 4�Þ+Ñ—4±Ñÿ4‹Is îŠòëu $lDÁ¥ÆAj7b[ƒD? šà õ]}oDï,·¤:Å#è|â–ìvIî™Lv¥}Nh)î™T¶ð—Èî.¡�ä‘QÄÆÕ¾~x7Ô—0F§™-:=¼…N÷¹_ïãeU{ìj¼Q‚ +cWñ²½Áõf’t0IT’&J^ünþ#Û<8ÕR§’$€I‡’Ø]Hªß.TŸ”e“½(P¢ UJ:m“*í¯ƒB¢ÐÛ–%HB“4à_Q›âRÍgR¡MB“ä˜!4/\@’¦.1yÓ¦lM^žQÙ2ÖÁZK[köäeš6y{Æ×dRh6þPÊ)“wjz¨™í³L{®QvöÇÂFBÍSRKŒt}aÿõ'º’mC1¸Ú‰�ÔùHM*‹‘ÉÙTíÈê·¡n`qû+s¯¥JNÔ…àM½Î…àMŠæBð6Þnntj<_Âú=Ô¼\¿Ÿû®'Í[`é£áŸ¿þžÏ¿û<¡Ï’ÿþõw</ò90¿¾ãøP—ü˜;gâ¹mA}óøï}Æ'ª¾àÿ+¼_‘RæÞó«à^,?÷¯ïà8°Ì÷žEÅŠ™êà†´6¶3PÜl0àZ0/`m7{»Uëת£Ë×ÂÁ¾ž 'Ð +‚ÌJ¨Z°<ÛB‘YÙ»‚½ÛÕëÇø€[¤ö@pºgÈþýh¾Îž¿åògX¸Œý¹$ÒÕ,ã4Ò‡=0qµtSÁIÞT°uÞ¯QÓX/E6/.fË÷k ÷‹ZÐÛeÁÞŽXæºÏ@ïÛZ:ŒÔbëçV‡¨qjyßíU§ë›½¼`﫾²×÷†Š•´T°ü‡ãÑgDãZÝ}Wðz¶b焪4IÈè;¹Ê±äÙg%EŽ�¶÷ág Ö +O–÷Ç .`ÇîÁö£Bõ3Äo£Ø<Ú—îY”‰ìû€à\_!æíîªyÞëVr¶õÁB�3®,cž`NÂü> 8¿‡ÑëÁuÞ§*¶×3äAɘ“<ÑJ·à}¦ÙäØÖ'{¨å<±,1 +g{¯í¬aÇÑæ¨õœµ”"Ö,©ˆÉæ}Ôƒ‹ÝôŸ æ8‹º‡FEmà*xîúæ`àÖy æàŽc?ç’‚xôö÷WXË¥níA*5T—;ìo~È率:†> £`;Ê6Ÿg@çð~Ÿ©õ‹0äUí¸O¿¼q^„i•wôMÑv*\ÜÐk€çäÁ‚ÒÇýÅW°¶ë _Ñë_‚ߢ>*—¥~æDæºÚü5 8?a{æB#uߎT6"*wŸÛð]Òë& íÀ2Ÿ½Áû€`ïŸãÀZ?šJìýøKÉÿ€µ{ß1¾ª[òaÀ";Ƙ÷@]á'"KV·ZŽì¯*"þh_u°Gûê“ ëëQ—öŽen$ÃzèÒºA]»`…}Ñæv'£}XUtí]U4]ƒ'c¼þUUâé¼ñfÅPÞU…ÁÞ5 ¤åu¾ƒ8ŸÖ愮ꄥ}Âvm®£Äý ¯Ë:ÚÛªùöUöu·ù<‚ã'XæŽ÷Š2}ǪdäéêdÔ˜UÝ´‘§âÚ:.m]q°û¶¯KÇ¥zm³ø„~`™ÏÞŽÌ2*ØdÿòFžvwj$êò:)õJíó† >ÈoDNˆ_ï½GûŠš‡¹×AFoÖ™ÒYÛ…Ù:«Oú¥Uµtvêtõœ:DMz r8¯^¿ +Â.HIaYU>ÿ€íînsø³ù;XÈêÙiZõrvV6Œ1ÇWuDsµ'/â½ÌÎÚª¯³“´êúì$ír;³W²}Õ1sˆ9A¬:ÒÏÔ9ËÎÎÑÚšoUJ“Jº!Öö9ëÒ¦Ù)º:*D©RtRJW½ëéy`YwÎÖWÖìŒmØ®;*]$ îÈþOw¹%W’Â@tG%Þì©¿'bv?.2ln÷üù€n )Òä¢(hVÿ‚öD‡;›J\jiÛè—ÿØ +wI¤pÞ_øæ]'yŒ‚Êd" +*"w¢4Ásö%”8H|ûÄó¹°™›Û" d¸Oú@„ __üÞ|*<n ¶J¬º4§ÄK ,Ç\<P4Ƴ˜ÛÈ>,Ñ¥G?,ÐDg~:ᤚ/7’lžüÒ —v2f¢¢ÙT¿¢ºáG¿è +OÇ&ߥð+ú7’©Þrà ¹T•‰7Ÿ‹\*J#Eù1p°ý©J#¹ªâWsiå šùf•Á‚|ñ_Í»ŠÅ?7i›…³¯Âϵ1wž?p^sà Ë$£âgnöågrɸwEÆ$8AŒIøÕT3V.c|¼r;œZF$lu_ÏȃޘŒI<dFO̓$Ó¶Nð³Ivªðìy#©á-’jK¢ÃÅg¡Ï‚B8L‘©yè$ Sar:‰lÍC'iJF'i®ÊC'‘Ëyè$r9¤Q:IS!f½‘dÔ…¯©cßèY–B#ÑJü²¯®²ÐHz!ºäÀÁ¸ÑDUè$]e “€=ÑádÓZè$`$*¼¾ô¬<¨¿k§ŸèßSTšƒjîçz mœf€½zü>/Ù¯‡Þ ·õØä¾èp’i«eßè3ÀŽ=4ù¯‡núPÆ$¼äÀA’I%IÑ4ù¯‡æ:5ߦwÈ`=4Щ0XÏ7¿„Æ䷚Ǥ,Ü°‡æ’‹²°°'“½eñŸgÙõצu¼RzÑ›|…öbOt8¿ßš¯7:QFƒ/Ð9^¿8Lçx[‹Ný¶Œk¢Ã½Ç·/½xCj}V$ùŽD‡›“ûbzÁÒ>1 ÷©ØÚ)ÚßÚ˜}üÚìµoí´ó5mñ˾>‚ ~dl¥'¿Ôöäâ:ථCã×:B:Çæ€i[…h¹QPw +Ï)ñ~T"w‰ý‚[¬F•È]âE‡›U2wDrqÜ5ÞƒäRMJMtxñ€jrS‹’¸kìGy£7Ê¥w×ðMqÓØaŒDG›U7Dg +Šâ¦q¾ZUƒªÊSî…ªb85Y–׋'xm’MÍÿC‡“{ižT[‰Ÿ}ZBÝΩUu¼ƒ]hbƒoicÝH8ë=zJeY#ãå7ý\ÎúËݲèweÝVù;pЙª¾ÝÉÔ¯9p°ÜHjßðÕH§ã󉬲´žÛõ3œt*:IFÑzUmÔÞBg£(½©n6‰&ªˆÒ›ªXœº©Š¿qDö»)7Âoº,è¼QEûƒÓë/nš 7$Ò›ª†Ò›ª‚ÐÛ"œ½¨*Qntj–‚ÖµR¤ÞU„Þƒhçî*ʪ»,1÷óõ‰ûÙÈ\|Ìç9—?74]/ò·Gœü’ßåó$¾8í‡xªù~#‰á%záCû@ìÃEœÈ}hÈ$÷$¼åÀA6º„‘èpó9À‰àAçâÛ~ÕõÌNÔ?U%Ä>)"rŸ*[ÿ+qšˆ}ªhˆ}ªFH}RÄ>U4Äz—snÖÂÑ:È.© ïºìäD첋Onjgþ"´Î·»>Í›.w9Q:îr¢u¹Ë‰ÖAow9yÖå>'b—½œH}q‘«üäDr¾Ã>xóêžS=ûý}b!¼çÀA×EïÐà1¥…ríÕ`Çú@Rûüo¤ZË@íÒó@ë\ÜÜuszM>£ÞuH½Ë ®îÞ„¿ÙT„søþóÍç߇%¿töú§çÅ™¨èP¹Î›þ›‘ê™kà`Už¾~Ì{è?´çÃHùz˃$S}z$:ܬzµ}£SS–6àCþmk¢£]U¹ÇÑâF“õ0êʃަ¼ä¨=Ñáü^U«õFR“_*äRÊLTtaŸ*Ú'öD‡³3U-ü9_®¨‰ +/®¨Ÿ‰ +|&òŸã™7z1…Â<-.TažšèpÒ©2?¡o— sÛ÷̃„/aOt8ɶæãÂå}ùôµà‹B8ídr·}ÕªæÇ¿^4Y‰kØç̃äêBr ÂKŒM‘n"ïÛiò¶Aâm;B‘·íÜädå4-œ^"oÛY +æ¶Ó+¾~kÀ;‘½ít¹ÙNwhd£?ÈÞö6ÿnÖN‘¬‚Ñ–±£²¯¯Å :ÐD®Ø9ppÝè¥uŽ0zôReP;šìÜìoþ“Ð+n¶£Ø®#C±Ê„ YÈãÈÎväi4øüÚÞ9ppÞ8>Ãù}Õ|½±$:œÜ§Â ½Êû6‰÷mkÜó$–èpÒMÍÇ…HïÛæʃdß‘èp§ó×êEN…ùåžÊ7ô)óÛÐ礊cÜódRäl„—8¢PÌr£5É7ž÷©*öžèp²kkŸXÎ.ÃÛª³Ë£6‰él<£2¥Æß‘µ—]9YÖ† ‹)-ÖÉÍ øæ—ôÒNôâ„wêé~QƒëÌrÇ µÑ3f¹=+:µÌr{F¢Ãɦª!pd.bEÓrË•7Xn¹"ñ=÷<Bv¶/9p0.DâØåÊ+,;]-ñ4ƒC•*Ï–#QáxÈSWË;щ0ÕOpÈ|c¶D…æU•j|„O´Z!kZmlCV´¶–èpïMÞ´ÚØ‚6²œh9ppÜH2N´¶8H2hD‡›u‚eÝ8]H®J”v£sQ¿±.“:Q?°–`ÈÇV0Ñ™ +E´èB>¶F¹‘Ìœè³sà ÉTćdñ©9ð[|ð”±l>·„3ñü¾l>¸5ßol‰÷ꫦã'YTu-UÈÚþ^J-„÷8èU\.TAX_¿5ÀÚÎ}*~¾B²øŠÆêlßýñ4å÷›’èüòûäŸtN´¨`”(ÇXè2·AxɃqãG4Bô42lºè®MÂù½®ÂK¢ÃÍ*cÙ7:—[@AvÚUé:q>Õ9dØUâ›ÐF¹ø%|ŽÉEÉÑ|sAw2Æ]|qyÖ3Ñá$Wýô%’‹"J9gfO …b£M÷‹œhÁ‘ç*’Ù T"³hdø2Ää÷Kó¨èÁ¼–ŽÄ@/ŽoÛ"ª¡‡ýaÈ}†ýa`N9NOÛ†Ìgô‘¨hÄ*7½ÝXN¶s}‚$ómÞI™ÓoÔ! ^Ìéég@;E® ‰""ש"#W\\ä*+ÈÕÑ9øç$Z]*)Oæ¢âˆU®8P+È·¨!ú\ª1M–_ Vyèàxe™µb©#W®ç猑¨pä*ȉï÷|»‘Ü®âƒOÅ$&ü 0|ïÃC%£û–D‡›O!ôùßå–d;ªÑ©ô*ÌÛžSõïèÙ·QæRm*Îí?/!¤`È^èÅQÏÞ‹ H¬…{MC )öCüRåM9ëÕ{QÎàH´»¢I—³Aß<z/_¶UâËÅœ¸Œ÷‘†@ÇÑø5ÑîÅ)ÜŸïD¹wÂIâ>N$Š÷š†Àr¢ ÁÛ“†@bIñ6íNIÜÚ‰5ÑîbÉæú…© ¹«yû‰…æ.ߪ7¯o¬ª§ÜUîDy§A—õÿÐîfi–Ë؃|=®®3Ù<á qW¡Ç÷6Ô4šä}ÿ ¼ýäÌv"5áH´{?Û‰Õ…Iò^DѼîYåÄ}¤!°ŸH¬…{IC IÎ;QÞóW;±aO´{;Ûˉ¿¼)_©BõšìÜHoâÚ” j¹)Ôr#Cãh¦”›§r êDSFz?±%ÚhJI?¨±*ôaœ'2SDí6%ˆÚmÊ@K’w}Žfj¹Iqj·!¹ïbï<Š×T!û:{]Š×ƒüŠ®ü\â·iî4Zó.•®‘èþV±Kj,‰r7†F7%Ê"Ýì¼8Â_ì'²²÷’†@QÌûþ!ùúo“V¯*n’{¢½½ªØ®/–“äMåÇ^qH¬Ž{OC`;Ñ«Ìœƒ`hê“…MáJ”»/ñl'º$§ðÇÂÑ¥ñ<ˆk| jHqŠ‰v÷J5jßd@rJ*%Üâ #M4çŸJ ¥?¥9…?îG3—ö”ä\Ú“QúS’Sú`K´;Ñ´²v•>QœÒžÒ˜Ú‰†5y÷°²É½ËÐ~UÓêE/Ièv](îGu¶Ä1‘ÞœK‚s.€=ÑîD“âœFƒõ^Ï!pH¨{OC ¡¦°&Úýhæ`ˆ*}q%Ê› X·°%Ú…=j?(C;™‹£Aƒùm9Ò]p®iøš,øâ\ˆ ó"íM8íÞÏv¯ë–ä<îo24fÎ…[ àT¸IçÂ-É9À–hwkxKòqçÂâ< +nÉÆÉ�ÒÉ9n¥„ç<(™“à‘Æ>hU4o% ¹ãiJå?hΓvÏü‘¨<Ø4çd `‹ýAtŽ†G*s6€#Ñî„“Ì¥žH0Tç<x$3`Éá#™9@CRåçsúXh—+bú`hÑáÅa¬Âžh÷z¶;ÌåÑ“ä}ßGóM¬.‰v'ÚP{;±$ÚÝÙ˜ëˇÐ\# ýDbݸ—4lÌ¥ æä̹Ò8Ot0D÷Ñ ÷üô{¡¡O‚Vðö¿B¶;TQ +|0´BŠF;ÛËÑÉQ_iœFrÔ[]9jO¢Ü£++¿q$Ú¡”Ÿ‰&rTg¾e`<É^Û‰ ¡7¸ö!K^ÉA™i':PeèRÓh’¦×“(o—z¶K»Ð?'ójg;±”*ŸgúxžÏöAÁëÍ8ž™hw–¶ÔÞN¬‰v7G]Œû®DyßD{Ô>Nl‰vw´¦æO Ü©©A}¿†o<šR:(h#Ýœ„AI{| +ôÄ[ǽ§!Ñ%2²4TÍÉOÏn0]é:êT)ÿº£ßi\'2;„ë= ]s¥fYJÿll¤ÝAÁò¯;(YÚé,U)Ø^q/g»I¢Ö;QÞuíÄÒÔ(çÎÄ)hÚ‰¥Ô$ySÓ]ŸŠG¢Ý‰¦ŒüÆ’(wŠº+#×}âL´;á” J¬‰vw¸XY§¢M5œ¢Î¥=\ ¢ I¾Ø[&Jv8 K;’õâ<Ñ÷–†Àràz~¹ï½ÆÀ½§!Ñ#i"NZ§ˆãŽü/´û8ÛÑ)’Ö)âá,tnÞ× a)b͆ÝmòT'i¡„'i¡j§AÍ‚žÌ$/ܯAý©Í)í¨Lá²µ4–M(ImN†«$JR›SJþFbyûwnÛ)¥)M`OqF¾_ì':s¡6›ÂŒóâJ”7¥Iû8Ñ¡VŽ¦a£!j£Q‰Ë)kܵ´Ï?cǽ¥!uD†…ºœÐF¡ÒN°ùíÎp¡K㾌 +´–/:Cü-ödc”Ø„š¬Rãº{ êÎ+õÖÒ¹s@‹z£ÄHVwî»[KíãD&ÃR{²ºs©ÝZzN׈;kç»Y<ãÇ~k”èѼY{߇Dcóë·±×Az#›ûA:Þ’úÅ¥lMÜ3üá6öïƒt\-úÇ= ²?ùƒý4DïÊÓ?låôÖO§¯ëÎÏdõ¦Ùu÷®QÕ¼ØO,ÆFÿduˆ‚¨>n«ÑQG²ºûÄU‰¿8Od2>7j¯iPÿÆr¢Dj['Ή¯¦ÁýÅ‘èê]MH}™{qó/ì‰v/G»Ó®¼Zf¢ÜÓÐÔ>ÿ‰vcèRnZ#ÇÅ‹æצãêýY&1xñšèÁù{a*Õû³ø¨Ð•òâ8Ñò{R|nƒú“dý ’Z9þ@ +I®7ýÍZ-9=oÐâ“ {ƒW£Þ«…‡õÅ‘¨Þi¨ý7†ûåbëVêZòT´¡|uÞiêNÓ5<½nMý"M¬ô¢6YêEžž<é±}‘'^Ûyê.Æ«3¡Øeyéïb¼ÈS_ô7Gñ]ä ¤Õµx±ÍöQ¾ßÌ}_C/¢¬^v§á[÷·;ÈPÜ©õ°Û<©A+£‡Ý6$«;Jï;v£•ÞÃl¬‰êŽÒ³»?±+q#ý5{„ÕKï5p¸ìe¼è÷P_ýöЗÝo¿+¶á[÷ßïŠåÀEÿÛý?êï‡Hü +l´Öë&©;b/gê抱¿&]ƒMÀÁè:§QBÙîÈ£GžªÿE†Ð××܇A™_å²Ð=ðŠä-ßwÝe|-=¿W¬fðó0ÞËiËÿ}³û÷ÛûoK[ö¿dw}piz,½Üö‰PzÁ/^ûÞyQW}†o¦ Í=†y˜»yåXî£É²·Up53f1ãÇròÜ×K¹Lï쟷ᮂG…ÅðièýÂÿ©ÝkÞißèïm±ÑÖë~ÄûùÒíÕ>ê[f„°òNCl®mP¯}±n\FMn“þý‡îÞMZ{TØFÖþa8ÐÑj¢Ý1x5Å(¡=ÕÛ¨ÐÓmõD¼§×½·ü£-P‘¦—ÙÐ- ÏÑÞwþ7[…®uMËе®éejSnƒ×¥=ùh¯lƒ'c¨ wOÔyØÃjx¬%ì^Ù¨i wÿ}=.¥Zj÷Z6\÷jžF¯æÑì»ã?ëćþÉ?T>¿/"µÇ©Únc?‘½ÙV\'’Òæp…u¤ÁãƒZVkƇA»±I×Q+¦\·›ÚA¤¨záÞ÷Õ+õ¾¯^IEQíhv!Ôi¬x´ÌDÇòª{5 @f^mp>wŸ°;L騹‹8ÙìŲM*Ŭœ^ÖiÕ)òËR,¢_žÞÒbµ˜ËRÜ$íòäoj²—çž••Iyy1®«ù.£l×QˆNåLàÞƒ„`NÝ¿½VÏþÅì*ÇI羿ìC!PI~Húô׶¹üÇž}.:YõB]¿)¿;H³N5fgÂ~þúC³5YN¿öv4¿ï?$VÄlZëõâæ®7´Ø)±Mõúcü¼!b§´7‹R´ÙD ”ð®6U[× ›ªˆÔ¤ñºêc‹î×èÐp#RU›ª@¶ô©«¶ÔüFM'ñy©•üÔüF+q¹<¦™ªÔ{¡·¢¢ÖœkSU•Åª®µÒ[ý-VU•'Téj³ûEw²Ýó}R‚®œI ZñùñIIRV$áô†â£ÂÙŸyû/ÏŨ õ»Ê•Ñ.¯x±µ©¬v¥ˆÊjWŽ¨Šö÷VU´;ÃT7;C—¼ëVšUÊ®¹m«Rö+CüÊT»2¤Kw–rZ¥ŽwôWÝì]‹k£ñNNvÕÅNvÕ¾~±?38¤«b×ÓgzýÁzª~]ù¢b×Ó‘¸þÀŠTì>ÑaVµëÊ ¦#ZK[×pÿÁñèùA>´oÆÚ¦RëЮ®Ôºýñ†lSU¸—•Ú&…nª(÷ILU„»ÙýAá퇴©2©jú]ãÃy ªtqSE2èÒ¦ªb\¥æúcýüTÖ•Êb¸¿(ÕÁ8¦ÿ øw©Å¡T÷¢¥ç“:éŽÿð¼éÉsÉ¡×R) dÔôºÌ5%&>™÷ÿ„ÍóI=ŦTè‚bSºRËÃ_Ü1µ§àú–êATšÜ“É»c9°rçXËúä[°ôY’´ë%ïÎGy¸þÐû¬H¢—Ì9Ív}RyñŸI×_E7É’Ã$I^J<[‘¥TLº¾Rn%M^)³r^¯û…%÷…¿t;m×б/ɯµN|9ž·êü£?OfçN¨öÝêÿ¢)ÿu´}¹© 8Žßé“Ž¨ïKú÷æ3a; ;i1:®õ¤³¸÷] +x÷¬þð_ðÜf¢àÕ³ë8)ôª9õj±ÐYO +hA,“~Uxü¼Ó¿<EÃy1ž$@ÑdÍšh6óê¼ês7›Ñ0Ùú`ÑYPóLâ®Ý,ø¼T“êßéYŸt@|ÛÎ]ÍŸ¼x³;jû;àIí€êôßøNÒß[¬Ê1¯`É£y¢‹7!áiè;¢yöÒTžy//þBûL—×ìÈãfÀ¦¡§¥Ç.ó†ô£;aÈ}V@ƒE}ä—ÂÍ ^I*ô*ËøŒ/Fb}Fr·×@n…AĸÙkL%ƒ‰ê4©EÀ¸æ«$�må€é!ùž”K¿ŠýsåW!†+¿ø²}ã;!g“Ƭ OäM$,Aˆ‚u˜8ÛÅӵřHñûñ€NW}’–|á>ÙÓvNJãa¾Ó W¢itñ4 –9_yRWv™?¹ý|!ö.h‡a×ÿ“tn|'4ôfÒؾ9ž¢0:„";íÅì¼×7‹Þôâ»ÁxR:/¾qPôÓgÌËƹƒE/–%¼˜ƒÈŸí?|'¶>ʤ¹Xv²ÙÁv¸…Q¬3~3›ö…ýâ~,$ÛYH(ôØ2ßIçBà"0û!Á[Ûq]õojPÿ ˜+8BÀÌ‚%àÐsan±ÇB‚ß@sþ|¡nÒXf¢ä¹}/’Ûv˜ƒ‡íIèEvÇw’Æç@eþB!ÊcQK¾$‹&¿Ñæl¹MCûi,jS3¡6BÛ·Äqºb1ŸÃûÂ}ŽÂNýJÌæ:„ÄnŽÁ<¤7‚ŽX +Xb6t‰»Õ<ôâMÈ+µ‰g¥NèÆ7švŽí¡†ëbŽôO„ŒÑaö3âñ“æS»pCŸ¤¡&¢zÈ b-í: 3QÂ\>Éç‹×Ð%%VÓ¤«iÍ×si]êÜQ%VÓ(x©‡„�siÍY†¡4ª¡‰]N"éÒ˜xM£&^Ó(~‰×´î à.bxQ}c±Œ>í…`JÏx°êžˆêÑÜ^ãâ;-¨™4–ݳbË:°ŒVÝcÙMÅÏ*“Æ¢¶Š§Džk«iµ˜D£ÃMÛi,j鰖ѨtËhn±¦Ñè±.’‚2i,j—4 –R§ÄYJ¤m4jÛÀ&>ix¬ÞE¦Ñhë¦Ñ‡ÇŠµh}#.ÒIur¹“Ùƒ–¤?Ý¡9 +ÊÉH�µÉ"N¥A;Óuÿ>ˆiš_èM3¡½ðùã É?¿§4ídÒà:™47™C[¡š7ÞÀ§€ÁõТh El8f$èE`vçGC1¸Î-)Ä*‘ñºî®q`w*y +0¿“4–ESó¢6%u®™Ú +%s`w +žÁ1Àí:5s`oûò$ô¸h®?gÿf$Ø(½SwaTôø–û +ÞåbMî,R'çëA(—¤ßxÒÉã¢ê«{,ÒWð”PÒ¤Öcš4V\<Ei}‘²ˆ£gR¬7ÈâÂzÃY\Xo<46 |#ÀŠ÷·àI-h‹ó¾à¼A“Ê5ŒÃ +°Þ á«é)!Àjã(³i¬7p‡Âz£yè�Q€×Õ³pÚókScÑÇ'êEã,TìÂkIÔÂhÃ5ùbvñF×XÄÚI +ã ’³°ÚàFýR€¢®vðÓ Å®`>37ð½xñ&ÖÑP–qß\|Y€`PþU" Íxà�M%(ŠÖÁaà1|‚Xx @ëÄŽKb‹êEÎÓö‡Ã7 s(<l……FaàA«QxöùY©±bYo„Øò!à-|ºàžAãQÊÛéÜxñ&ÔÊvLÎNÝÌÉÎpô˜Zí �É¡$A…ÇåPXxÈ¡ôpÜÁ!ÀÂCŽ„Fѯú´°ó|°>vž2(Ì<ýÍp1›¦?͇LÈ +¶TJZѹ¦<‡ÝôÇn-ÈfL„«OÔBlf¡@Ó"À_-EaH>ô¬ß~kSóqÀ{SóTgR>Ò餀$ˤ€”ŠRgRM²k,zz,R)¿]b88Ä €dbíº³&$i]&å#ݺLz÷-ŠZ²bR?Ò7vRAè1.@zR÷uRN§šMOy‘ò‘9<}XÕ¤€$݉éŠØ¡5Kw2)'iãš”ŒÄªtóGÞÁ³ÒÇ'¶5©&‰oMÊG–‡ +@59éž"¯´$‚øîQ²ù4©‰áLºïäKgkL_ÓЫh7qc‚øÌk^ðm3©, +%•%Ý M*K.-*âÊ0ëò¡´$†3)&I4)%ç'©Æ¢Çé½=ëxø€¨,ã¡%EÄŽ:3ì?“J3ðŸI´@S/Z�¥eЙˆ3…f¥føþî²K²4ÅaèVz›?ï©ž'¢w? G¢2«gÞ®âòaa°dWZ ÑLkÕÆZ&ZõÀ¶¹N€_¯þÁÆ8Æ”êù-âw*=Jô9ÿ˜®1CΆ›L©nr¦N%© äOB£¿œ?JYeC©LºšÍ#žÝ·Â;™´.[AW±•;þV)À¤2rª…8W‘<¤~ã'ÓcÏÆQ¦”™´@™Žr§Îƒ`;�?ìeJYð—I´q—i¶BwŸÂQ&Jò2[8Ì‚:RRøËt×S˜Êd*,e",™sGƒ`K×SÌt×£lò_€–2Ýõ<LL,e"B…¥Lw=…©LºžÂRæVØíÇ�Lp˜Y¢�Yw=ºlšà/ÓSYá)‹‚+\cÑË6±>ú²@Ë_ +C–mЎ–Ea‹iê!._8³šÖv01™3ÚQ¸ÄrgSÌ«)(êXÈŠGAXÿB]ᵟù‹¥8Ì¢)f!+…Ã,77Õõ-„8³Üܳ™Â`îTuìòQØ":¥mý(p½ofÑܳÜÜ<?f!A…ÅœùJkaÛ¶HPa)«? +ࡨ°Ev‡åîƶ8ÌBt +‹YÂb¢SXŒ +‡YÂEμÃ+f@Y’ýÉáë=Íßø'ú‡ùv¹<0ƒ;SüÔ/Ã4°’9¨hPÏÜÀR|cјƱ¤FÞ#Y´)…,‰�6r&…})*¤ FtiMJ€Ô£|g6`)z²™~ŠÂßR#ß7µµéMŠ·»¥'<†ýô„‹ÚÒR¶%(B¾5Þ^þ_¿nèúûƒ‡Üþ H!9šmy-4¦Í#+¿Jr0´’飢A“9éüÃ#%_z(ÉÂÅB6»â ;Í�¹õAðKbà §ŸÖZø%'Ã46)Á36òð… ÙÙ›¸=óAúÏ»s,ä¶ÉÁu8~G‚ß {̾3,åt´¿.fãALå6´ßÃà*·k=ˆ/'að”=W¹më7ÄÓÀcNcªµPœŠJ'·„ì·T Ä\¤O9])Kñ‘Ó\rЮÕì‹uìÍY0ŽÓ]ê[aí?Ý)Ʊ‘–ƒ¡´É ¶Ýßó‡là#·ƒ<²åôá·K<ˆjü@~)øÈm‚l‰dëQ¸doó÷…p‡ÛÞ ï‹;Üîb_¼â4pZ{9ݦí â–°ŽzªaÌiæñ4°•zª¡¥eT©ø\±øJI3˜TJšÁ¤Rá+c8© ¦çdT©'øSi£ýÀ5ýhŒùW+I-vTO2°£ÛN”ÿ™�v¤—`@žñ¦zò‚;•ôo*énTO_ŒîÒ_.î¤×‡5•Ô3ª§.ØÏif(:¨$(ØÏm_~£éÄ€J‚‚ÿÜ¥þ†ÀÔýµð½¿†ªòÑ´Z^JÂŒFEŠÑ°™Zo[-mµ~ òÚ2>>0Ð¥4|¦Ð’‡:²Ö’†íÜ.ã Øní[«IÃvJ²V“† oH¸N½Š†'•Žú—§˜Lô8Ð ø†8âq£q _k…p‚8â)ºqM\k7Xë¢öè¹œÔ Œû€â„ǨƵm-ÕZb&l•‡œÖ„-ï%!0Èe¤¥Â¢�õ؆K4¦uØÆþÌ Ã> ÚùUivéÜv¦êu(%ùë@-Ÿv:Û¹#R4 Ð]Eƒ"m@I²ípRŒÐ‡‡`?`7|/ƒ” …-HÓ‡N +…®ô!mÂuºÞ&\%FÜÊ„ù’ y ÉTN9!;°ØÁ|µÈõ69É"¨¾#]îËïbÁ~Óˆë[pwm,Èî®»^ÐÝÚ˜0’Ž£ý¾…ÑÖÆ �+Ë÷·!ˆÇµ !)džÐS‹M:é<þD°uçÑöeK¾öåÚTd{ƒü0ム+À±ª|¬ +0'©K¯Ñ„´ê ¿cm;~ È5̘£t›¢@ïmA$:ô ú7¨3§ÄGÿNÄÝsĪ*F €·•øÀíKµ~a—ÚrtéJF7Ñ8Fƒ^7yc….ÊH[scèLCI‚Âm(ÇCìµÔ‡(@v< +ÂP€ÏàCdHÂÿÓˆdÜMçjôS5¤#pª£Z¿©"0$ÞÈÇŽš!0¤†vÔè,:«µ€<ÔvûÞ¶¤f"0 ¶BÛ'5&(1é,jî,â¹G‡,]÷Cf€;5ô!p§FkñàUî¥(—û)-°¢ +q/àkÁ«ÎÃçZðª@¯ +4á¡ð·ì¥Ú¬BY…›ˆ‡I Öº&¬+ÜDðrBš ÀQð®x²€?EÈÀ‡ +ZƒÀŸBB€?ýþB©(B +½|k!˜ÜŒ%ª]=8TÈe +fŠÀƒBÅçÄ+ga‚`A¡rÆrÎe±T²«�ßa@ç2´’û¥-,(TÛF&€A`A¡âƀ╳±¢BN ° “S…ýä„ ¤ß~¸8R,§O +U¾Qp¤x•'îx‚Á]†ŠÀ’B:€#…‡ŠÄyë_`(Þ(‰õåýPúSRÞ‰÷å(yÒzxó/KQ.Á·+裘ºGA8ÓÅMxòg‚ØãI‰ñdc[#m;Ao_(4‰Fâ.‰æ¡ÖIù&î’¡—›8H~•5Ÿ¢¥Ésxˆ, UéÖ>Ñ‚Lí¼@ñ9KTER²É;KJI—¬!ä•B#ÎÒ$íÄ4â~q¢ì~8ÆŠÉY:çÄŠÒ¥ŸX‘ÈpL|)]ú‰åPЈˆgJ„Ä—’ÚÈ°&%_JJ?q¢œN-N”S1…àŽ/¥K?q¦œ +*Drñ¥tñ+C‹ LT¹òòĉ’ZO¼%±n¥Öçb¾É¯šä½á©šÄ/²æH߈–<§6Þßù`ýÕa]Š]ôW”Æ°Õ‡À<úÇÙÃ=úWMB~u0I1â(xK·á>¬¡‹á&NÓm¸‰½ôpøã(_zÈñ—®ŠÅQºÔQÈï{é*_ì¥'gÁNz:IXHÏeF0L…ÁO¿ýŠrºJôÿ!… Š—èª;\¡¿b2¶pácåd4ÉÇèSŒ¾á‹H]rÇ2ºkëáÁ¿ì;‰ô¹½–[üz4¿À0\Ú~ë& %èK/»7a™ZgBéÔSÇ(:msÇ(ú+LŒ¢o…!…6χ9�óJ§o%ðA…=ÆŠVuûª!9Â`:%ÜCÿ9GÊø8GXÊøh_!Ž‚½ŒÉc!Ãq§,FŒ?0‘Ö_ÿ¹ÿ˜º w1Òùä8{HkÔ½Âé{C|QÿŽö†Ð‡†/» +ª£¨Ãga¼ýÎ0D±Ã$hû çCd!`x˜|˜‡…P{) ›`Õûéhªÿ¡J@ÔÇôÛAÔÇ«„|¨ñ±´û¾R@ºÇò-£ÁC}zòážíþŽ¸q$u”)‚9ù]8õÔi{ø†/ +ÜÔùù/Ýe’$KnÑ}Ÿâ_@eÎÓ›^H[™éöÊ »Gù»W•¯€ &2ä»`¾:ÞwóõBx¡»ñ¡®'Ü B�ÿ03½ÉžÝ®ÜÀ³Û›JS”ã mgmc„ºÞh#Ô;MÁFüÄÐt¼Ã&†¦kÈ?ܶÕê"Ê¡Á“¾øMÜþr Gõ:1÷a™˜e®œ_Îöš˜Jþ¿)@p_2bø‡æÙ6ÒÙ0²<ŸmàUÒ0|JZB´å°Ð¶ElÓídEðË‹à¾UH!Í•Ó¸hÖA 4.…{ œ1ƒÂà-Fh˜Â †aŒÐ“´!´ËMà®j}¢C|bFF‡]L¶xJòËoÂÁ1÷B³X‹Š'†[L!ö™ÐÅlÌâ‡tLº`‰Šâ ÊÂïÚwí‹Éš¢3šøŸI'ÂK50q'¦f°Úñx‹†£1R~¤ð¾a¥ñƘE/^òÙ„$;ÆF¶üßT .ú²ØªOé:ؽ)¢.ü̲ŸC¦ðúÊiâ!~Sûõ?¬Â<ïÄÕì˜Q99Xƒ%1Y³"1„_º™ròËoJ<n}ÅH;:;ñUõÐ<ˆ–±/lŽ®OLGÏ×ŦB>«þš;X¹D_—bˆÇP™âËu¸jØ—@5ÞÏ/†*Š²pm9^…nutE¹‚*Î_;!¨è¼&MSÑ@0Š!>à +Oš —,nŠã¥ P©p±'"7¡Òð)ô¥ãéQ¬<=*Õdv¸ßßYþsáw?Ô:¨1¼2skâß¼*+îï”›&fëûÅo*„wMüë.`Ê›C·C¹ˆû)ê?fòQÌŽ`J'¨@ˬéJy¸ýú¦�¢Dœu{Ì*‰®³êq·®ƒYÞ÷ˆ¿Cb éa’GÂp*ˆ_þèÚõsõužŸÞîÄO»{ûCë/~ <uŽ+d|ê³c~ÚúcsàOsøM×µøé~×é_\¿®_ÿùã_Ÿý>pÝ꟟Ÿt??óùÙ¾ÿý„C??{<?¿ÿßÿ~ŠF?_¿îõõ£ëÇ\0‚n.14îɳqî|GwãØùn£}ç:ÖknlW;x÷ÇìX·C¿õƒõ~è÷cý~àl|¬Ÿx¸7yܵ‹ÍبD+ôæ]]…ZíàØ9õ<Öë@ßxWn×<xw¦™½ŽÒ¬mDÝŽƒ5K1tÛ<8vî~pí<ýq¬+ ûÓü’jnu\÷CU9xØwÎc=õ²ƒÇÁ›o•ñ˜¾uµÂ„n¿jgëçÎ;w;˜ö–‹]B +|SÛ8u•"ñlçÎ~¬kmºÏB„½ÃÄÐUŽÄyà<¸v.{oVB‚†[+a ÝqõƒuõÍÃqp¾v.ÀCk롪.ª*{ÏÇ›ñƒ Ë+‚ÝÇ 7fßíôà.ÌTax¯71m¦mbŠ¡µsŽƒuâ:Éà5#ê"lÅ´‡Û¼ÚÁqp¾¬MÛ€ÄÙ7ÍÅPm΃kçþ˜[Dí"lÅÂ6Î’9úÁqp½é$îÄY3ygÁôvð<8Å7)µ"ØŽC7ûÁq0ý^ÿž;4LWˆ—ª_v°Lùå‘+Í ,ÓÎKÎتÎëõá6¦üsv«(E°ÍIklNçtýr½µÇˆ�+Û‡¡È$?8w”ðøÔ–†»�f¹gc¯¹çμ&¿¼ãÄ%á,MóØèTìÄ;ïËtl,˜0Q‰–åà}ØØ[ayp½µC5@M[¼+{)ºÜÞÚìT}fo±['8_¿\;sy ö©hˆ`™ïÍÆÎ ¾n¾Lù%ìaQˆ`‹=ÜØ*ó`ʯ ‡5)0ÅÉÝØÁ³/8ŒAÉw(s˜lP¦,y>è;Rx™O¦—ÄôvVt²=;+–3è‹_û%ûó7‚)vgg&[òË8>Ô’*Jl1¿]GâmKiö¯ˆ–X£ù T™Þ/‡x7ž Á“ÝYƒ¹ó¦œŒ•ƒº¦8Í»K5ßÒµérœwÖ`r6tÖ\]ÏúMTM�·áH-6{ç-åûá8XÁ)fŸÐ 0ÌnfT‹—0D‘h¼…‹OâÁŠ+öù`‰¯gI×›(Ê ++öù`E/Á‡]¸€ûvPÁó>X`ÅÉýeÊã@¬Qˆ`+…På·…Ùô8u±8Ç”j‰¡ËdRšï5`E•ö]eë;oç!^Dí8èÏ%Ë r·¡i¬^w.LE‰Ï/S¡áëÈtÌ/Nâj(D0ÄžžFÕés£¶´}ƒ&‚)ôÙ¨Ê{ûÞá¦zS ÊkhvªÆ¦ÊTß…wS‰ ËLÏA]æšÒ̵ˆ§Q™é©À1בc®Eô¡k¢¥iœsåÙ˜uí0ÏÆ—ÂêÚü{^u`¬Šýw².æªãëq€;“kìcg2/0_¥`L½7‹ ËÄ;³iþfêEcWåpÿªæ[šw¹ˆ–X Æ&wV‚1÷Þ!]obæ•`̼³Œ¹÷é| ±ŒÃÞYÆéé±uYïzg)4Ž�_9iì`)ð!àÌ|ã“Â×|h66¢)ÕC· ôÔ¢*KÈ‹ª|4`–E¬ü4æ2ãÆ\cܘ¯ßx…ª±E!‚-f“«¼¹EôBAf.CAf6a ‰PŒ™ËPyCŽËêÌe0ȹ¹³•#!ÑF¹3™Á(w¦3Vãv6T™KíÚHÐkí%É/»4Pˆ¨˜b¨ò^ÈÕ/—q®wf#¦ÎgU2LùHìË|ˆ¦ºÌŽVwâ> +Ó‘ +QáÈ%8Šñ]{éŽÞb‡o1ƒXéz“áÅÑ5ø™V]ƒ£¸¤éA•ºlæâèL¥Ùs5@)‚nB•P+S£ÏBDÕ‡¡Ëï®ZÑȲ]8."j—\Æ([וýLÿCC´d'Jß.ú8¯xKoª¨|ÓkeÚCÕ\¼ˆN¬îÍDÐmMÝF[éبDÐí&†.^φVšÝ7JuÉ…Õú{‚ìhïÕ16‚‡,NgÕï(Χø&”çCpŸµêŒ*KÕQœ¶*÷³5<ÅÖÅÐÄõ`ªñ¦.€*#ªERÇÓÄû/ò³Ærò!„a[äƒMPˆ¨šbèrAÂÎúò0пÖYMA{óMس ‹ úåƒqœž®71Åóâ7¨‰(;¶Õx–þOw¹ä8vÃPtîUxq?ýÅi*6‚eA:ÒûÄÒ¹×e»+¨AùàQº$%J”Rv'üáÌHC⬠š& 3C‡xgs>ñ> …Jnr?ð +ó&2Ò4MæÛØ|iœDûb/¾íëúWnoÈ“Á‹ì‰¯pÀSÜõ=öhöÒj i*…±f¨·'´ŒnÄ)<hH‡ùº™…«¯XT Ʋ»ÂâaÖXÍ…ne¦ 0·võëmpkW¿ØÆjo+ÀEeSÓDUc?xSþŒ^«æM8< N¦xâErh>–Z‹I Z¦á@µ6á@yŽ PÊqMä@i,Wd½po‡ôÚšÇö•»grJ>â,pÁ¶APóÐif¬†î„¥¢‰¥ˆgRRRiæO¨Ca[dv8Óý‰¬ô%öÍÌúúLÕ$[D2qr‚ÎLœì¨™•ZÎÈ™÷¶ÐñNr¡Û´š7i$9hqÚ4oŠG’wNAOæMˆàzG£8 ì©Å›Ð,ù…d‹fa&ž³„QL؉÷Égaó&©…)gGêâMR’-:8Hßl —ÕY˜a^$ÈÏ€ehš‰Þ¦³[íw:/N‡œé…dÉ4-óµ=‚Ø×[=BaÂÖ.ðUµÚðˆÆo¶nÛfÞ$USå¶a[éìEð´Ö§i r)æMˆ¢¡2¶œø³“"Uq' Õ€)Çÿì…ù‰ìÎA• +Q«ŽM±ªäŽH +TÇÝ)P%w¢Vw¢Twç@•¬‰æ# 8¼ºqƒÐ:Îá} BD2¬´ +w8]šD=ž€¸†S0$ŠªjQúŽÎ£›7I„¨Šm:Eû7’“(Uо½3=ÒäÌÎ*a®Oç@eLQg±è˜†dˆš®vj#†D¼¶|…5×v¿¨æ ¡Yhˆ&WpÑÀL÷3CÎ]¥QÏŸIˆf[<ŠÎ×þDÓ$Ûxüªi Òª•n˜ª,ˆL{1¶;÷ú6?~ï)âÐò¢Œƒø«¨BÎ�@ÄÌ=~'äg€þoñ"MDˆÔN@•(1WÙcm&ÙJ†X8L˜:0€H‰où‰Pt“T8o"0z¤Âa©ÚvšÉ”({2aÚ%JØ]"„Ù»I¶’!ì>Ÿˆ\ºc*#™7¡‚ï”|¸g*\Ý‹I¶Ý$[D陊€0§4Ùo’h!lC¶AuþÈ8EGS¸¯ƒŽ†™Šö_=’ù +³Œt4•Òº’JaGQ~k22”ò š–š$4!MŠK¨<Ã`Èœ4%5‹„ZêP¸¬oB±Ö’Tv²U,•(‹D¥ê—þ¦ªìL’œ¶•Lðu>µÚUÉ£z¥l’†6×w4ÂT¹ºÝ©\ßA»s'ÂlLU“MÏ˪ª¤‰y%Éxýºqþ’>•d·ófœçƾS7ɺKHT‘ÝÎs+mÊ+U¶\¶ÑUü¿¤ÅoÚÅSOĘî2|M6íPZ›;M¨˜˜[û•[´én°n>xu¶òÈÍô©Í^¤›ù\ÜiƆv>ø÷ÇéïÓ·ÓûéׯoçÓ—ßÞÎ_¾¾åóÏ¿Üèýôïé8§R.ý¶Åüÿ'ÿøþçé÷ó?§t^ßÿ:¥#x¶9/iÏù¨rœGìMw“Ž—¶|Éù¸¬s3+»\ç1nU1–Õ7z?ý'À�æpçç +endstream endobj 93 0 obj <</Filter/FlateDecode/Length 377>>stream +H‰´SKNÃ@ÝÏ)|8¶g<Ÿ-UBªPé‚TÐ +eÁõqfÒ&UYЊä±'ö³ß‹Ó?, _-nnàsô`6Ë`c‚ÃÎõË ÁîË°÷C�µƒ3žÝ‹Ý§lQ™^*’h{y·2ؾ5á± ÏãÒEdeø†�+`x{pŸæÖN#f`*¨¥lßké`»˜QáÍmÜzVà9ý¥"1J æ¶ÂXiNÖhN8 YŒ\",ŧó¾bZ0AçÙܽQ´Ü¤Ìñ쎎ÉðÖ3$…¹5ÈXÓ9ë+šS%´¯”æ:°DTáù£BtãŸæ¿¢ù|þKøóO’l“Å—KYKŠÐÌulÛ[ÛÅzÊ)ܺŽ#¦¢S‚°Ažª[DCbsÇû±j†&c`™ei¬ +2¨:_}i«ÿ7©yqàÏ +†AsFf^(X›`£d[ò¢µÆÒ2 +ÙZˆj®iƒÈ”0˜^Ó¿¸v?�4‹Å€ +endstream endobj 92 0 obj <</Filter/FlateDecode/Length 381>>stream +H‰´SËN1¼ç+üëÚÎûJAHH*=ð¨ ~ŸIvËnUp@+%öÆž±ÇÉêzM«ÍZèì|MN¸$OX‹µ5ezt«ËÐã‡Rï9…@›z¿wøŸ¼:F‹ãáÅ°«‘D'jßÍ¥K¬Qé“mH鉌®È½ÁìL”ÓL*•cFw/=·C*éÙíÜv‘á•5‡Ÿ2²²Õ�sL6_[‡mô9ãdV3ʵú|Lk@ˆ•3 ^aîÑ"*p³2‡}8á–^A©±‘ÅЈ› ]Ëq׿ç–Þξ7´TA-q4Ì£œ`tˆ¡cüSù _Ö +<ŒZ4’¯§²D®9Ñ0ÌV6† +ö¾Û·{çMœkœL9aî‡ôÉ•:ÙÓÉ”¸�´ÉAèÈ:º2eHGiÂ./¿—ÿwjkS²I A +«R,mCù&,•\ò{ +¢ðVð–3hXz˜ç`ŠdPl~Œ[÷%À�ñ¾Å© +endstream endobj 37 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 97 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 22 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 38 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 98 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 22 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 39 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 99 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 22 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 40 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 100 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 22 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 41 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 101 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 22 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 101 0 obj <</Filter/FlateDecode/Length 386>>stream +H‰´SËn1¼ë+øK“”¨ÇµN €Q$9ô‚6AÐHrèïw$mì5|I…‰Ü%g†cîîÛžv‡½Ð—«=áš#á¬ÖÏ\èõ1ìnî…ß‚ÆÈ9%r\ZéõGø‰ç¥"k§—Îb>_^�»›$º’PÿÝÝ„ÌêJ)Ñ”žÉè+…„ƒ‰ræjV{kF¿Go?—\ÙéW¸·›Ž¨¬.;Š²5G8[„[˜°¥†Sæœ'œÂjZ¨ ÅrÎk€ðÆ…–¨Ÿ0#$„“5ï÷òÀ‡ïôœ>8={çŒ[ [ÎÇþ¹ŒžÆH[Ô2»™R½ÀËÀøOú?A¾Õ þ—h-±]ÚâÜJ¦%q²±¸ØšqÛ1}‹f.Øc) Ý3“^8ÃõùÚµA³5A夜©¬2@º«ÛÝ·¹û³Z»}~u|Å!¦VV…x“š)KÞ|ô Ì9õÙ̺£,r²DU +'øuúoÃ?�+GÅÊ +endstream endobj 100 0 obj <</Filter/FlateDecode/Length 380>>stream +H‰´SËNÄ0¼ç+üõÚÎûÊ‚V8ðX!@ü>“¤Ð]–P¥Ä©=Ï´Y¯iµY¯É —ä k±¶¦L¯÷nuz%tÿæ„„Ô{N!PĦ…^oÝÞç‚S]’‘ÅâHžlÐv5Ht&¡ö\žºÄ•Þ)І”ÈèŒÜÂÎD)q1SR©k5ºyêضN©p¤Gwå.v^YsH? ²²Õ€p@„k)P(àÇ:t.}2«AOFYõyŸ×Ð"VÎ4yE¸…FŒàk>÷é3€×ôÎ88ýàôÍlÙ—ýr邶]Ò®j‰£áû”ƒ½ÅÔ{üÓü ßÿ°ýþ'ɘEùzhKäšMK?.üû¾ß¸Iç—Œ)'_¿ðóQZéÏ™Øpö'ÔÞq”"½M³v÷ظ�¿ó[›—ÍÍÙ×L0ˆU!À$€&`–‚?½ÆŽAY`õikfö2ÏÁÉ`Úr#/܇��©"Æ£ +endstream endobj 99 0 obj <</Filter/FlateDecode/Length 380>>stream +H‰´SËN1¼ç+üëµ½y8W +ª„T¡ÒP*H”¿“l»[•C9 •’8±g<“lÿ°€~µ ¸¹]€#Ô8€*eŒ ¯®_n^¿Fï!ØÄ +‡g÷bûI-ÊÓa@’ÐïVÛ7I |K‘Ã7xXÃ܃û´ee‚QÅH˜2†œ¶ïµ¶Œ]T°w·žUŒœüo‰Q²·e+!¸,[˜µ¨œP²ˆMv’‡tÎ*2&è`ïv¦Ðp“1ǹ;.Ì…'ø0FÖB$—Q‹~2Ít®ùÜTÕ쪞¹ ,ÑXô¢"t⺿žzÞüøùm$k„#ùÒ’€9Eè<jíÙ.Ô^aån]ÇSS‚°Ažª[D%±-Çý±j†&c`™²…4VP)–ν´GÏ\L,úYÕ#y† ŠÌÖ¼7o¨½îj¥ ¦ÒŸHµ®¤ èŃRBo~MáÚý0�hŸÄA +endstream endobj 98 0 obj <</Filter/FlateDecode/Length 406>>stream +H‰ÄSËr1¼û+ô£•dù¡k6TN[Ô’‚P) *äÀïÓž™Ì‡.–m©[-Ù:¼?Òátº¹=R¶\«·±–B?Óáî^èñ% µÎUƒ4·š©CȧôHw’ÕåT2"ûâzwóaÉ£Kžç4BÐÅN— @é{z&!âH¥s+Ô‹6zø–†c¬–YK�‹ˆæäÊ‘3M«]ÍCš*¤†mþž¹×º¡×£ òŸ“Ž¬ôá.U(ý$§.žè?©Ä_¡íÚ^ÔÊÝ,Ò[Þ+˜w‘ºD¸YÐ~ų¾ò4V3á¿b©†ÜhÊ:+Ý‘ëF¼þ÷2Ô*ÓBýw‚? FÐNÀ¿a÷Ù—¾îBÃïÓJ9þ¨£p´ŠžrŸÿ© í‹Ñ¸ñšZ¹EÙü¦àÛ°Ëi¼åº]ïWÐ5çF¹d\Ž²BdfmØ–-ƒu~ÓhmÕ[ hÁµ`o +™âÈâÒ}(3Ä¢rvT–[°™Ïa™».=·Ý ŸÓ/�ÕV×U +endstream endobj 97 0 obj <</Filter/FlateDecode/Length 486>>stream +H‰œT9r1Ìù +|`°x€Lµv)ÚrøS²H®’øûn’sìʨ”†ÝM\søv¤ÃéèéîË‘œç’a-ÚÖlôöä÷žžþ8OV8K% sŒ”{Môöè~â£ßýؤÿ×hCD†È«Û¯®û´�úA¿Ý+ uJÒ¾$¥bœªÍ/]ëÅ 'S’ʵ&’Â!& +‰…ÂòjÍ.U-«m‰«—iÆÑ"g÷ï=wvßâÞß3¨hækÞ1i`Iç) +× ÄA¸ÙË>»~Ø?<oŽÑ©* ýS†CZ¨Æ¹]vPZ;¬"ˆJtzt +àÔ=ºyžái²A¦NVÂMi ¸ÕãUßïݸù—"èFŠJD¹,ìj™¯¶€ï:{¨w_¯Rm¨”2âÄ+–Ü"A%sEìA`Œz}Û>5†‡+†Và¤bTÞSt† F7µ?Ž¼T¾ÑkèÇ1=¡þúÖ2ÒÉ> j£ï6_2:tõ«€nƒ«u×r\üèŠkczÃôb´hKÁå€ëðó‡F\ZÖZì1eÖhµb¯ô*/)YHSäZÐÃÁ*«Æ~-pÄ©xÌp°‹ÎÙý`�nÛðò +endstream endobj 32 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 102 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 21 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 33 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 103 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 21 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 34 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 104 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 21 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 35 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 105 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 21 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 36 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 106 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 21 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 106 0 obj <</Filter/FlateDecode/Length 391>>stream +H‰ÄS¹N1íóþñƱ'-¢Z¡…‚@B€ü>/3Ã0ˆ†&—ß•ks¶¥ÍnéèxK!rÒLhÍ{›3½Ü†ÍéE¤ÛWÍÈ+i$šØ‹QÎP×áõZ)Î%¥¬@Ö©t²ƒøf²’Éê9t(0ýè‡H—ôžI I¬ì9+Uã,NW¡z›”%7pp#nª4Œý2½ +CAÔ¦K½*×Rö<@Þ!ð>Hw¥óÓP�z#£îéŸRuád»@¶Ï¥pMpF€X]× ³Qú!Pœ%I&ÜšJ87vTF³~ñpÏ¿§ÿœXRáœð„êW‘?Œ+û¿0×ÎÓ=⯶àxd‰´}ÛBææ'ÇÕ2î/:}épeRØ[YÖ“@m¡N³~aóp^ŸIZ‹âä7Mã̈£H?õçIÓçÙÿêû,[/‡&d©±¹ e4¸à†q +y¤[±¦Þ8%aʆQΦ¾úÌûð.À� Ò1 +endstream endobj 105 0 obj <</Filter/FlateDecode/Length 466>>stream +H‰œT;r1íy +\`!ü€ld\i2Š‹@“8…;E®ŸGr?ZE…'Í�ùþ{ør¤ÃéèéáÓ‘œç’á[´}³Ñû³;<>yzþí<Yá,•$Î1RJì5Ñûw÷—~³ã2ìŸO ='2œ¼¹íérN‹�Ð7úåÞH¨S’ö%e*Æ©ªÒåµûzuÂÉ”¤r‰¤pˆ‰BbCè¡°…¼h—*‹–E·ÄuÁ™q4dŒG?í¹sû–õAÎ\´¥™c¬yaÒÀ’*ä) +×\[Üôù¼¸Ã‹»A¬T¾Gʃ´Dsˆ‹”ƒÖ«È9iËšëtcye™ö„«§Ë(À½Q}}tãåŠt¢;%*ÍB=× +µÊÀV[Â`ß †–ˆ‘yô!î�¹–rˆ£1ÿƒl ÿ´Ã·>&U¡rKÐñS'¸ëùãÈkÏwF +c—£ {õŸ0œ–Q5.}-ЇÔEE“%³a|—{t´®àYms´ÈóÍŒÛÓ®¬ÃéPýãØêp½Ê:Vùü¡e–VºV�³À)$ŠZ±v‚@}„—ˆPŠG)R‡˜)k6XeÕØŸŽŠÇ¾»úµœÝ_�Ÿìˆ +endstream endobj 104 0 obj <</Filter/FlateDecode/Length 491>>stream +H‰œT9n\1íÿ)xÏm'«A0q‘§° Ø)rý<IñØ.7Ié=®ÒáÛ‘§c ›/Gš—d„µh[S¦—ûép{èþÏ(NRIÌ8¹SŒ4ÒËÏéÃnÇ&eØ¿ž@{Nd8yžö«ë>¯@?èiz&¡NIZ8/T2ǪJ—ÇîëqŽYI*×I +›'²È¡[ályÕ.S¬,ZW=G®AVdÎìÙÁx™~#Þsg-ï=†”¸¨¢‰ÝkÚƒ˜ÕXb…<»pµ– œƒpÓûn _„Õð°ÄFz4 L0HK5sjTC7eÓÒa@VÁ²e;¿±<ÀÒ uƒÌׄ›§Ë(ÀGC0¢ú~;›ÉéD”¨8Ú•m¯P«lµ%|ÓÙcA¹ÙMvö'£S±Ð¿bI-t2#1¸t‹]Z˜ÚšÜZŒŸ¡kô¤;¾u<ª•·?w‚Wá|ùÚóût®«ƒ¾¹8Y}—†:'ÔšKN(ŽMêªb4$qÆЯç*àÛ°Ck³·ˆ‹}]sn”ÃãPÃÜ +òúýëxÿçÿú¤Õ°e_1¼’+¹V¼TA˜ÁáÅJ ¨Cìjh1L–+«z¿eìJÀÇo°GçéŸ��’[ö€ +endstream endobj 103 0 obj <</Filter/FlateDecode/Length 26087>>stream +H‰ŒWKŽd·Ü×)Þê ÿŸF†VÃöÂhHš…ڀƀŒ¾½#2ƒ¬®ê[›îŠxÌ“ÉÌ䧿~>>}ùŽ~ü|\Â9Z>ðw$þmýøöëåÓOÿǯÿ¾„£³ÅyÄœÏVÊQëR=¾ý|ùÃÇ¿8œÿ˨ýäF¢ùýr[ºþ_×ýóø×å÷#¦òH㣣Ÿu¦t¼¼š©×K<kOGœçœõˆãÌ¥¹žžçqöÜz¹ÔyÆ4îõœ!.ÉÞÏÒ4¾\¾ÂÝ¿™öÀmß\hí Š©¥ÌvsâšòëÄïk‰çÌq(ÜXÿ_.Äo—‰*˜7PÙ@DnµŸçtfì†bÀ®RMÇuïöúÀüæ^äz¯p[zñ�<Ë÷êï?]|åŽr|9ž„hœVÏ·12à&7üƒiï£Poàß>Æ}¨;N*á_Àá”;-;ÁIvl,â§NëlæìíïŸTÎZ …îó'Ÿn(ž#ã¡ L>'ÂqgÜÉ8kl\\R2_b‚ñÂ@ÖÞxdÁRîãYj§¾r¦Þ™ç¸Äí1U a`Q?@è“ÆG>þ¸¬Óðµ§HÜlq󟋆´6[N'ì½Òžh¦k^c –öƦ§³eÅŒô5Õ3÷5äî+rʶ\B±:1Ö +nLjvª†L!½2¢mÂŃŒhüæp„ ˜pšRŽ°˜p²-_<ÔÀm,BæÎë=,‚Mªä·Â*‹Õ¶“ÊúžÊ|Yfy\–|–…âòÚ^Ɇ’´•$ñ$oS%áGt}‘uâþ@ß.i½b'ëÊóC§‚Ìk¦™C-Áë@.FxܯÈÊ<ç"„ÇqÞìkË"´º%ÇcB}E„,–ÜœHyuÏ`ÙðÅ–G™ŒIòQ[ÀÂ0iaºxžR$žgÙ„A©Ñ¡# _˼rá’7q+n0 ɧ®ÍæÜE¸5cÃ*e0é{S8sÒŠæaÙÐå£ì·e?ÊÃöÿ/äÊÙT‡„ƒ¼«K[H"Ši.Û_šK :Ôò¢Ãñî„ä…-Ó‚Ý¡bYä`ŠÆÊn/$–?}iH‹Åì”ß¼¸„UþêüS»t‘:ØŠ~òÍf©Æ-véMt¿ž) »¿ ay¸Î¸m}hmžA|½ ¯vŸTÎÜ-<˜oØ|pïëš,k&*G«Þ J=‚Áev¨’íž\1_5»¢“ë +«ƒT8 !è¬7 Ыš9E'šˆÔæ"„‡0/ +‰¥â=a0?‡‰¼ˆ,ùœ6a0 +&‡¹8kÄr8ÉÁz<ArͲЩ+k7¼EF4ˆ/.åZÉ’rÎ’ŒDXWÇyE'Èd¡Á|¥µÃ 6—®³‹(‡Á¥,;\ÒÑ¥Ù©H²Îf½ˆgPêÒXòy’—44®h¥æPÞ!Ú.¿’%ºþ*ýÑŽ’ÝÐ`ÐfoÄÚnr…qZtªÂïÚ8§:Œ2«ˆäÙn3 .QÅÀôp=Þ.xÃtK=E¨e¯—¼ˆàz¶Éã«y®}6~¼ÀÓ¤3r@·MÝñ`Âä¢Á6"ËbæE®Ç2™9/´Ú-Ѩ1ÙPZ|ð+ê}�++Jö ›–Ã4�Gÿ샜Y„¯· F‡Ñ¡1ˆ1%o}ˆ&¢Ï Ìà —o’o}á'Hº¬E!oB_ÒÂÍ‹^#œ +PRÂðjOªá!ÖÖñö¨‰‡4ì=£ÅCáŒ4MKæœíTD¡}åxÔ¦±Ó¡À6KÚ+jf´ù¦œ˜¿åBv_àǹ+>•Æ9›e’Á)È«‘J\€:;î'ÌgØ?rã‚)Q'Û½ëéG°Ïi%= qÖ{š}+K²3Gæ³u•+«w±G%߀„²™ØSeV§BgІé¢Îd/«¨i¥"6Z¡F ê�‘‡ºnÇ9¼¨àE*:WàiÇ–Áüpÿ»á» +Éc´qµwÅ;/Zën>•U6)¾æx,¼Ù^´ñ阴7Ü·Ÿ×gpæÀðÏ耥åÝçüî3ÞKÍ|xþOB>¿þòÿߺ‘ý:á5_§VO®öØýóoÝîñµ§"]D9²i?8ëä”ÛY®ßcäól~\ëçW{É~f°âÉLÿ‹àE±= b°ûaƒÈ㧫æe„VìÃ^h–ds²ãà•ko�$D´þ¾tÔ‚;ØßÈ£l›C’³ÄÝÜÔf`¶ÅìLÊXŽO㽚¶e³Á׋=¦’åâˆæí<Guÿm8â@×9ŽàÒŒ\6Ó™ ¦8ƒšc¥YÒ¼J°‹ÙèQxûÙœ˜Ã±ZmÉVæØ·2/ $Gc-\8Ñœq¢YðÞÉ%ÊÜøíÂ^8 rT«z0K›V¯Zõa»›Ñ«gDÂ9”ÏR¼|k|\ÃRkuΆMgÊfñ›VˆhK¤L1]LàS�̈s3®fØÌjLobÊfÖšv8NÂݱ69¬-:#;iÛiî‡"ƒY0 Gá¼Th#¯í„ºÖŒÅhƒ#o3²ŽaDÖ’²w“µ?Ýð’Ñn²Ì”½›äMg¬Ó ©?ÚNM›QŒêöDç3êÞP”å*ËðÒº=‘kuï7ÈL¦°yÑvX—ŠæñHV-œ©Ïž¡ayÑÜ2KÇÜ:6apKÃ…—†•‡=. £mƱvÂ\3\6^:äEß;Yf´‘>¿‹¥¢/‰¶Tô¾ÇË-m¥×—…§c9¶Ã³®ÃØÛ]ù?¶ó24äl•kCŽÔõ}V‰c®K©Ža]˜Î¥A!u)X—eÊhßÁÛ‰Ü7³t,C2ž‚r!¹NÒÒ »4CZtufP(âZ!Ñ·5·Š0D,tÇ?¶¡|›¼§Ä:Fºã:†jÜÌRQm¤ÅƒÈó1YrùkÅÓ;6GÝÕâÐoøã-£=Ž¨½Å‹}ovJXoïNüŸª¸˜¯š×¡ø4Þíñ6l +Õ°sÍÞÅ›®w:‹§>ß9ÍO(,_¦Èì…¬sT1×k\ªIÆT1>6÷Øð¶+cÌÓ–¾ Ä8NÂ]8¥#IëVQ%Ò·cTfLÝLߌc)é2[çÆ2Ó´]¿‡ŒãúoO»Æv£ËìÐî†v?¤bHÅ\*†ü²‰?úäoX!žÚéÜ~Ï%áC’“™3K)þÎHç´\´çN¼?WX“Ëô,ë†j�†{qËÕ߆=[Ð9 +µd@‰W;c2O]ðœ+,ƒkj–ßHA¶`¼³ì€¦ØQâú ÀaŒ2¦ˆqË`,Ì`ú&ÚÑ…¥”5Öp^ß-fÆL1c©rÄOß9r["?¬“KíYö-a™‘•ÿÒ].¹’8íÇ(b™Â|£ÆÒ«jÜlT5žôf_öÞ†‘™ºÒ øe™˜áeDd3"-¸m^&–Ý6–›:ó<ÂF“X¯¹l4 «“:MƇ¹mdFº-4J¨¬õj~'óž=–½—§g\=vóΕO)!“øˆôoÉr7+3 ÊØwbñ%ßt¸ûcÁ—ö|ŒÒ*)–ÒžWqs±G^å2HÔÍÇ¥ðù‰2l{ûÃ!ñŒw¿“¦'·›(ÞGŠ'„ØcÑ/9ö¸TOëð»¬ut?#MVüËÛd¬–ýýbGG¶†O…”úÛÀ;öx +yåÌEˆ#°QG¼#s¼nƒ™ñòeGÛ“ºÖJàvPÁmÇ×(À»¦w(V݃u^Ø…ýÎŽ¾'Ð)ß·ÇñÉœ²g=ù�dÀ¬Þ19>–úlÌ�ÖV›tïVýušè̬Ҝ?xѱ¦[’®Ž{`_ú1í¿øÃbn0ï¶;¾^¶2‹o¿¼TË° R±sýé=ö¾ôSQ¼"DIœd5ï(ȦtCn|EGþìèì»c°c¾‰óÂAƒ(`‡¶/ ³„x%æ@%–ÞWGèOz}öt¬xýf¦\K £ÝñM†êÂ…µÛÕde¨^}¬˜5;;'/&V˜XÍ>€&«H¬N½þõ²¯b³²È’ÿï6ò¿¿þû–w²?y÷n‹e%¹˜5;Õü|y¿ÿ7s|Aàý‰ÉåŸ(.(nÑoç«ÖJJ.Çfô‡Òek[¤?b +#œŽ/ÞùÿšŽz³ÚÜL]¼þ\óñÏž¾×Ü&SñA›m±¢±7ÛWÆ=á[Bª}û•8Þù�¯\ 3y,¼à«”Ä×Ê<Â]þl{`ÂçUú.6w»ÕÀs²mÙbP|;%¾h‰JÀ^м�‚Vu¾¤#‡–8HRn“/ãH!ˆÍÕŽ6¥ð<¹ð›‘’¶¬€îÐBP¡×='‰Ðã¤ì“ép@^�½*¡WN½rê•Ðã"ô"¡—7H€Ï¯§€L½]OçXèÐNȧޚz¨ñۧ쫮kyÔ†œcþö±~éõ¹Œ<ç¢.ÙúÑ1*UŽˆo5/ ((çØïÚ+§½rÊŧ‚‹lîoläK-_jrªI¨u€,€Ú&¨=rÌjeâ›à:~Oü†šo³ß!@Pï:Ú±9–˜n-˜?Ÿí!7t[ccå„K®žC%” +`µ!…A˜þ-Ÿ’¹œÀ6· nóD¨ÉïÉÚQOÆeäRzÄpþ¸Éë&ýñy¡Áú^Þ^KOaPIÛ!—Ÿv»tÚ¥ÓX™4« ¥H®Ä*YŸÑÄSC™—^¹õÊ©WN½øz‰ÉQy9òH”…ÒH·^ÒK/qs§Qy ÄÇH̪2uá°ž¢ù€që[¯Ï?Fê§h‰T#ÄWMÌ×¢}!ôôÔÓ£Ýú¥öà^{KœOËäúžž˜¥ê mlÆù”˜Û¥´Ë¡e‘°¾g˜É·žÌ?Fêg|‰òGˆ´K, e}mž‰%zy}`‚žz9νÐËq¸m¬7æÃP?Æy×¼>/PŽÜÜø1š:ívm·Zí7¶O£+ !Èz•×wcÅÊ+€…÷¨Ü£ò1ºÈÚëóúå2]j2õÆ{tÜ££=v? –‡µMúFèÅ…saÔÇra»GÛ6åOËçʞЫ·Ïr[-÷h¾ã](x!r‚µ +ÅW#Íú4wk<ãíOoz±Wi¶§Y»õè…o¼ñc’Qâ&O™<wk÷Éÿ¼ìeæû*£Àü|æ²ÚÝÍ·Já·ÛŠÌwý^½éçj×nÓvvønœ¼,ÚÛ 7"G> +å=y=´¶#O¢fV'Õ¼¡V:Q!ª„ +¨ ½Ô+@{XMÞ&èíj¤-ñ +Rí½ÙÞîcÅÁw[7‰÷·‚³ïÇ˨ò#¨àìsh³q¬¿€™Ø!Êvó¶B¡ZãØ€ÉJè€g¥…ýBû }ΰèsv‹eâÈt×`2Ó¾í0Æ_;Õr]x€Þ@AÎ̾²ÛX8¡«J±MO»À¯ô”c~…® +æ%4^b^"/øÇÇ'Ý[Ÿ4"|µOœeºðO !H# cšØÜkÓûjù¹VphB¤wâÀ˜÷Lž57:B¹‚BôeïÞÐFyÊ=èÀ0f«º€‚Ø0Fgž•®FÁ@ÁدmJ5úíðÛ8Ôá·ÑQo!ÈwÌø�ÁJ‹ +‹5à˜i’[X,tÐ`äZŒ4éL¡Ü°†L¡Œé³¿ÆÇË\Ý +ÇL¦ˆ%ÌŒ)Ó™[9ÒsXÇá˜É”+¦’EL™#È™ÎÊŽ™@¹ÄN:FÎ|�£ˆŒìBÇH .aŽ™M9Lt–*ÈF|¿Dß\©Dû+à…°Ÿ¸Ú³dz:P¾1„–ø¼tÒ‘pA7êû‚Œ>±òF:$š<Úc´Xçs‚E&N Ày¤‚u¡g‚@Yr”ˆCæÄÛðÜbb¬‚°ž™Eõ@Y%@¹/9¯Ü2Ã3ç)ƒ_L™é~·#ÒN>GBÚªÒÂdnKçÎW&±t¥*é”i,HUeªúýz´CL[þ „�•Ð WC°2ŽJoŠE©ô…J€»†Õ +M6Ø/¾aÉYüNJÁ@d‘Te‰p ÃÇQª¬‚£TY$¤ÆÖZˆÙ°Lê‚ò�–8J•5C*Ö”5CP3”g®DÍPÖ^P6 ‰¹P3TVe‘¨Ê"(Êš±€QDÍPÈ~Óv cÔ•ðr\ŽLÏlcåÓ\�9ÉX A1QV‰br £@eQ‰b¢,&’T +×Ön“ž…žt`Òo ÉG˜í‚ÔoÌÔ4¹„Æô·@ÁJ¤‘B@„<ÆÓ¹EÞFsÜmH±°$œâMcLPCp£cÀ‘~�3!ñÛ¡`6®DŠz°‘cã†Ñcyৎ¨X*EciH=<³¤Ï¿ A’°8$”ÆûrŠJÑ*+ÿ Èrp—nLЄC½1OR\Nüh¢Äîb%$[cÒ$$Tcž¤¸ÅèÀÕ¶ìúc$l=&JBBµDë9æÉÜpürU‘Fé*!‹¸Àu*Ccµã 8qnUß6qƒ¬~X8*Æ„àß²úvp`û¾?!©hwØ÷ýàÀ©dÚ¡¢ß']7[šëaúã%‰ûV +~¾šÝî;ØÏx’íX3ò›”‘Ù}�‘.ûîÓýü&— {Âj¶WÙÀ›qZ²ëW¿[˜œÙñºË%Ù‘X·‚ó· +À!þÉ=õØÞ½[BžSÝžÝÌ*P$�’uûß×?³ùΪýýŸkðÛ%¾í¾³~D‰øoû–ø¬ûâgÆ®x‰Fü€Ëë‡jöéŸ/N¢-†¢+¢½µ ï™ÄRxGŒWBâ™MQ8ü> +ŸˆõJØIÕ[¹³P/n0r7¨ÜY8wß÷ã×?ßL¿¤Ô‰c¥³ÿû?IÄÒg-%ÒB‰œ K72ZäµÌ£x‰øˆ¥ŽÉOeÒBá$r0_!£‘×ï?JITÅKÄû¤µGY¬¢Å`q¬u‘Höƒq)úÿBÛT6‹ÈÄ"±l¡•G(±‹L×Xš1öË"Ïnq…“hÁÈh,½(±ŽG¼ÉyfÃ,ýV‡ÿˆ?YDr#üÍ~)µâùúPU´ˆLì +–„[o¡Žß ©0¶Œ +7uø|a$d°ªßÄŸ$&™˜ą̀¼ZèäØÁrIÖ8Õ…û XðK@×ZÅÊÔ!Ó×…QÒCb5U1â8úßHÃ~¿¸ÿÞo'Vþ=—þÒû»¬ïÿ7ŸËO»éWü Ñí•øX·âñ'‹l—£ð‰X¯„ŒÆÝíõˆªxDl¯Ù6¸2vÅK4Åë \ç»Ûg‡”=1—¯9ûùgõ‹%¡vÐ#–Â+"Vk¬ T8¼”z‹¨|g6q=¨Ü[(<j±&k2Ú•:¥Þ"ÞB¬±3…?"!“ÝF^—(ùyUêKoK¨«-bx–ÖË/5®ó~ýƒ¨™n¯GŒü<Z`PBõ«¸ªß-¢A%d÷/Q_ÿB*ªËË"¾‡äÇXZQM,TR‹xŸ¿wF§Bbæ笅 +{ïYÔô< ê;šÝBµ ¢¬ïóúNH?&žéiüÐ, ¶‘¯Èðd[•‹¢ø¨éœÌM‰áˆ™S5³Ð fE£ç8U4aZoÜl–„]™Ár…+ã¼_ùyËX®×›³KÙéöŒ.Î#¾Hݹ͌z®;=®ñ[L¥ªrbmq¼LÄgâƒÊƒ…ʶèƒSrU¶E[°×þ?÷ë‘çEpË㨨ºÖ@DÙŒ-£Êf£gƾPÛÍbæçQÓµ@UÉBsƒÃopet*$\·ƒxý· Q…#zF"Dý¢ünMO¢þŸÿpyWBÜ®ÆÖŒ +‡ûIÙ•»j‹‘ŸG=7åïÚFM×–E$mSo.A£Jf¡CnSãÊt…+£W'A.¨øßkñþ“DIϹö6™/^½„Î<ÖOÑK¢·K%¡R‰cv¢úK„õøwí¦êw,f~ÎÏTPE²Ð¬à=p82ªFª‘ûêtpeôÒ$t¢ˆ4 +¹×ε±~ÄŸ,Z`¸¨q÷ú²`Ál?é£:ÜdÆžÑÙ—øNŸîÑŸŸož/G}> >ØâÀ[% +ÛÇï#®ç=°‚U¯KP9‹Øý«4pf슗¨Šïˆ×/Å^p(\¢+| ê+a"ýùˆ•Ÿ3Ùiäu„þcü|ÌJ$Ü—â%F~Îì¨LqnoÿœÓ=àÈØPt`ÿ'¹Õklp“ê"VYjA¼~iïŒJ”…ÊR/þ|0‘þ»|ÄÊÏ™jÕú±hŠ:™¬pgTU,F~U©,z1T‹•ÃMPU±P8Ü™íWF/V•‘ˆ÷£EjÛ] uE¥+Ø0ÆDÞ0š=©ç}QMD,È^Å< ãb¡sÅ"½ÿf0:D×ä#´L¦ÆÏ¿KBE–ãUvD$ÙX3ªE$¶:² Dt°±gT‹XÔü<(ú¥x·Xx¶-°Ö*žž¬ÄHï³Ú½X„î¾G°ØŽŒ^,B—ß#b½ä’D¤í V›À-ú¢pgÔn°P›XD®ztMáØ3*wJ½E$«ÓHt°è²µ˜Šgþ%:ÃØ2*÷oÕ®Ó*o²%ì•{Äû(÷}"H˜pfÔ-aáôG³¼7 ®Œ®ž„ó¿$\'£ó/¡{¦DìcI8 åŸ|ÄÿT¦šHɇÇʱ´½(äÏ&¸kÏŒ‚ˆDGFåÝBáÑvoÚÞ¸2*íõŽ÷£+ß\ÏFeÝBU³ˆ4&rÓ[hÓXðó$§ÔŒ +‡ß®™É¢'µ¡ã?¢ü×9νÄz%d¸jÏX(æ[ÈHlй—Ж‘X`žÑóAÌ}ÅÏXË™3‘: öÇŒ83¸2êü´Ðb,Òû|ÚÌ +êæ²PJ4O§!˜pfôj$êï÷ Û¨ÚXh_Y”À'Ì 6†…:Û¢å�†#ÙoíÇ#„Ñ[ûðûÂ}#ÃEgíM5¢/6gãŠâlÿçg¡F²¨·G¹67µqeTz-Êϱµ¸3ªÛ,tîX”ÅÚþvµPu%üïœàÊèùHx=_Çl§Íulìu+ –Ïf°À‘QG…'„à:62Ü] á³Éb¦8›Ö=!Äô‚$Æ-¢hŒÇ+b4pèàß—PǾ„¯\‹v‹šFèÑ\;zõóuÊ€j'‹r ¾wwF/OÂBO¹#"ûÆ‘Q§¡Äû\ñ¾:÷@DýŒ5£sbž•ã' id¸ ª¿%¶$ÑoÑÒ|îj<ØÿùX”[¤øI6¨óÛÂ@øH´Xi¾ùö] …Ã}Þb¤z,_¤üÁMé·‹Ëo4CE7ϪöµÐÜ,.öÿ&§"¢ºÆ–Ñ“Eø0´h·¨i„_çäáÆ9Ú_.bκÓÀ•Q»ÍÂëE¬}‹™Fà³ìtPg„Ï:‹~uç‰ý2S²D½âûºSž`Ïè)#ü¹e1n!Ž48ÒŒ;£g,Q¯xi”iƒ#£gŒð‘f1.!Œ]Ðùd2°D½â}dY’ ~{Xðó÷¢…#…é çù‰ŒSj¿ÈÁ-tJ=¢ß¢¦!G ŒÓ»¦j¡ÉZ\¬“è#ØZ`«~�Q=c‰v }›=b§!ã*ü|Qý‚„,ñ^·¨Y´ãI ¿!»~±Ï¿Ç-Ê%VÔý=ÁÑ•—p–sߢ^bxR±^ {FW +¡ëõÍsØÒ&›~QÏ_Ç-.V+\x@gMÂñˆ÷¾EË¢žs‹ô•Î(:A¬2Ã{^\3ë+Û¬é‰Ø¾Æ’pjûZŒ+~^<þ¨—Ð×ò.ÁŠ…#£Š*¡›åã×uÏ©!X6XNÆ)H´+þ}n1.‘±œy‹Ø,¥ƒ-£öŽÄv%Ú%Ö¹E¿ÅÅóù.—$Éqˆîûy*“H�”n4‹îm™õíGt<0"X•½IËGB„óç`ÄÞÀN8Ø?qi¢Á×€Õз†×ÖWƒï ÷ØÖ¾Þ)_ /¥±úöù*«Áö†_[[ [Äq½>@ûĵ4¼6·loØx=Vù5ÄØúÖàû ¾g¥ÔŸx~à*õ«a‰ª†skXµ~5´aUóÕз†×VÞöÜÓ±7|¦ÍiM?>~Þ÷ý‰Ëªa ¢aÕêÕ`{ÃÆ#ö†¶5¼v¯ö¬¾ê{VßØö¬¯í¡¡ïYûžµíY[emp™¢óÎ:0ÅñùíÚ7x=³ŠÛ_k]‹?µ\kcŠ}ãÏ|׈·|16îŸì›ßôئǶ|[xßÒõMnÛ†ÛÔž;â±eÛwÜŸ“Wl¼õkãÏűõÇ6Þ†>6Þämk9ìs:£oéúÞÿ‰mK׶tæ/ͺã´OütŒql—f}oØîŒÇzŽûUBŽŸníUšç'`¼?ýDü/´-<>Þ‡~(n çÖà¾7´Á>ž<‡~ +þÚû£ëièçë]ø`9xÌðþ,Ì\ ›úσ‡Íäþ¼B¿ÚóÆñ–óùÛE×Õõåü±ñ£Íz?gbÏ'ÏÚ¶\cMdÏÿ·ft?_ÎÂýpoÉ3ðöüÿ¹üÄ•d‘‘ôÙ9:ÔE|h:*VwÂóö}è"_úÆO¾ÉúœâxÊi{}¨1Ò1=L§5¡œl3¸3Ñ'jR@'ŸŽÅoôõK}™f<Õ3Tø“.QƒFŽ³XCë°«w@Òg•³e¬/|ƒ3õyåT_Ns\I]S¬Õôñ )öBB°œ…’5¤÷&mHàM&úÂЃRàwª¿×çzÎ÷gÒ‘Ãs “îêµ?’KRïê½ &ªœ¹ûç¹pŸ‰HØNv¤ýdf†ÚóZüN®yŸLÍæáÔIlc*†<òèšhÀ& (h̺°ý碌dЦ©c“ÀÒéQú1TüNš´_‹2–¥=µAÒSʃÅ;ûÆ“pJnø¢Œ¬R¸H{ä<Ð;þè9P‹mCj +mØ`¶~0Ó#/@íç!AW ,AÃæ‡Ã~½þyÉyù¢Œ°––r³�5÷¹xªÉÍÝúÆak®dãÄH9É:<™‘ÇÜ#bå&´Öá¦^æ2Î26`u¢(¤ßŽÈ]¨Q3´Ÿ¤ ´b%OZ<=µ¸xÈ¡Z/ ÒÞKjk Ù‡‡‡K,®ŽX³Å“X\ùU3àW O9TÃÓÃ¥¶>Dì'0k¹UóÒƒV/EêäCRãæ†!–»&yÜÕ"ä`Wûò ÆŠ®q)èÑóô5îFÈ‘^¤‰Qì'el¤q‘Ð53Š}tf¶XLS>×êâ´›Pr6mC]½ÚE’ÆÌÐ$¶.DFüóÅ’p—©å9 µwIPçx` ²LÆ”Av*\œ)µÕëêeÒ2ÈNÝì³SáB†ÙÈ ûQSk]£yS;%-d‰B˜g§ÂÍÇç$rÊ ûIF\½¬äZ±j[e•Úr¹g/à5Öë:ÊM{Ýÿ3.3ú-uLÒõžê8…ßyÁ:^ázBõîùq@Ç8\ÞZ£ð êãÉ“$=8‡_¨µúVúð +¿´·8ŤŒ¤Z-œÃ/©Eú…X¯¤êëï@ÂÁÖâ>²Cbq +çÍÖqWU¨õQUèu§*ô@€ªBû J‰Ø¨‘ÔINU…Îï§*tÈU:•ÛeÑ}2Ò:uÜå‰:î*ïrÊBÇ\.ÓGiÜQ;JÃì¤Æ{‹EÈÅ®<§†]9_"Á‘‹]¹*ÁN¤¤0ô»òè.Ü•EÀ°¸}Çvܲ²wlÇmFOk׋Ó0·Lóâ¦^ÿ VŒ÷¨a5ž‘T…¢®COEvu¶"cbY2ÕÃx\5Å0ï¨],}gI8EÌšPrªŠX+ºD(hƒP[< -D¬AsbQФã*uï[þv³ò¥&y½}PÅJN½´®Ê†•)¨-_R!14~J-9[‹ :b¥OuÃV,Ê—ô´Þ©Rf(bU)Œ7‹«RXùg++RmØÉ·X&ªJa<Z\µÀÊ{22½¦ Ú‰£ˆ/™j…áC¦·µa=v±÷âßh�¯Qitñ!=Æã±ë&”œª†ñìÄæb<vI^cªÆ+ɨ†ó˜j…á<E¥Ý½JƒV“‡’~¾ÆcT+T'.T„~R®4g8‰œ*ÆÃȨïÚ$-ß}/š±5ÎÓ帗©V8neÔ +ç¡d‘±ŸÄ0ü„ð³FjrIÇ•L£ï)¿E¼ê«ã&&#ôV}úÂß�¿f¯³üñöÎ!LÒ°˜À$‹ ˜¬Ù¹öf’‹ýV(×ÞdÍß+ˆ)˜¼Ù¹ÚÓ&‘’×ÿ‹%°ÊF¹ÝŽ-˜œÚ½²J.6`¼é#0yõ‹´Ö¼V&e,+*w^Z¿rÞô^N sÞ‰iãÕ^wý±\íÌXøãô!/ÓóÛëRW—‡ç×õyïûzoϨcVõI)9צߜi.N×Ó÷æqnÀ³ñk¨¯ÐÃ^ðÜþÕÉ·²¥à®tÙPpæsff *ö|ìh`ºÇ½cèGSÒµ‘F¢wHPy»$¸HóU—±Å=Óp!º^†ÁÙ캡ÁÁèT¬ð±XßòÊí2ìààt9Np4æC]ßR@º.é÷”±äµ®^²ê’FTξ¯×ÿ½ ¶tÝÉ œtÝÉ[üxÒµH' pθjXʹƒAÁ˜?´Bu–tèo¶®s=؉vç¬_œçbØî™hðîi÷)Ê´Ú8ð¼ÉóÓ;:Ÿ;<~žz£\?Ÿ<C«3AµçýhÏsz®ß,ÿüõßm}Úñó°)äi˜÷d6´yü5Q?ˆìçœòCYýßyºóäy¦Ô +·ê‰ ¼ø|5Ü_Âsa†Ïù< )¥§2•»‰¶ +î«!µõ“Óís¸VÃß}ª{ÜŒ6Ùƒ#ç©—óŸ™lätâØ!–që¬ãˆŠÐ:Ž¨ÑFbvÕ÷ˆí÷׆ÿªŸ]vÍ|8Sµ3‘©+÷ÞjÎÏË•±…æ«á¿‘p&3‡åL:ëà7¤y.ójpt}dpÔž3»‰}1Á&¼7ü 5žç5\$ÖpW}¿øw÷\G`ÜÙϪ͒\¢_ Âsá/õ×ù¹rjuz.K¬ÁYŨãtåľèðJ§EW%¦Ø:M·ô½áOˆ˜ÍªÞ¹IÕ›£vsÏ™ ¹Gu@Ò2‚[yÇãt°²½5í;$<×=RÛqCà�k—’Ÿ¹ß#ád;SëQ¹´š]x5Œì¿¾CÂ+Ýÿù.·$KNˆîÈQ€xíÉߎðîÝEæÑ4wzüׇR#$HIwé{3n¡®tT¬“NœçâŒ2¶FµP¾/¬?cçÿÍGGÝJHô UÉâñÚœH¨•¡ +ч“ÒˆûÛ‚Bñóª´§ä½JL9œ›Ìy—?`ý47ëìî@Cµ®W»&Mɺ†B›ÛY×Q!^쪻ØõâÀ»;Nçíw]/_…¶;©,#¬þ°ýþD›;íý8 ’Õi๔o/þÖPðìÇyjï"ìB Ìk.œ¨ƒ·=N˜±üDz㈹ð?èÛŽé«á„«ò)ý_ˆÊ–/ðû‚×ýªúѽ½Š|p'Tõïÿ@2ve==îE¾ëláÄ…ù¯…ƒõF<“'j΋kôP‰n/ÚÚÎUô‘-Qæ•íüt¿/d…†Œ6 ²¡b>üV,…£ÒQ‡ù å›+/Úl>îOß^dÍǪ·”©ö–ÍÔˆÖÍdD ·Œù(’O,‰Ç¼Y,ó9‘2éO5¿¶•öY°nð‰¤¹NϲX¹ðÿê;jæynµ¹.OšJóÀ4«¿àL´¹SS›¾û°j9mà«cžüRÇù®DYw¼M}Ç—í-ÑæλZNëåGtÉj±áCvՊЮhPÍ hêwD³í¹åæf¥¡íñEVH‹~e´ÖoŒD›ã\ii¦´TœY8ÍímêGI³J§Îb‘2|7«tê7Is3›ê» "Ì_ü’%›h¿ÁÞ_º}wº©$°2A²jâÿƒ2G¤êâÕcÚT›®¨ŠÆ[‘U÷ðT=zÍ~NWÿ?„>;?jª{ÒTçý #ÑæŽN™+ÑÞ²«G÷÷¥Î†„5>Uÿ™ê¶\è 4DJwž®¦ú~ì6…ìÆYQº//DM¤¢YzqE¤ÚÌ¿2¦~ëU÷ÊI5«ˆ–ïöjTÑ謘›·›åÔÛ/먢ZýP¬hÄõÀo:z\ÔðEVP~)V4öD›Û›rˆF—ÂF£ü°¬<Í•+ýÂôÝyÒQQ’Æ„Šð¨ë§_ñcÒ ¶¼Ñ >Ñï© %õõ²çŽœ¾^šúzAh`M´¹ù$ª,'Bm½xô«Ð¦r¼ž"ŒDW/T}/Îmt-+VáRÏ/n³‰#Ñæ¸S&Ά°$Úܬ$|)’1e=ð¦,Œ~£2ÊÀZ,`½bõ®bL’±›ì*JCç{öD›ÇýWÊJ/‰67+)/%%ðÅÕ[8?#Y œ+ ʋå¹dŠú.|à?úî,Vÿ¿IqVv#0W¢U]SKm¹pЙШâ^¶MŠ{áÒèRxM +—T7æ]‡álšM +›7"µkÍ"ÅÃl¢=3š”gäÂA¦Ù¤<‘hóvÇ™nØàWþ앦•gãja¹p°ÝHœsñ9ȳn²§pN*…昇Z¡9æY-Ñæö¥Ñå¡V„v§V0É<Ô +M2µÄ7i¡VhÒy&Þ•jE–™üÒÀùÎDYS+äÛ½²§NZ(šŠjEWZF’¬©]Y¡Vte…ZÑ;æ-ÖñEVs÷©}kFú ýÿü;òWNÝ®×P`¨}Šûó»pо5P=d_´9ÎjÅ—B¡:"¯¸Óa( ïdLÌÍþ÷P4b=TЛóßPÕôÉ¡ž_ü"ÒDõPøUôð4b=T_N(šdŸtöbþùeÚþÚ¨ž¨ß…È…ƒì½…%Ñÿ/–ñºÉ SG|Å+ëûö´æ5šââ_ÝÖˆÿÝõEœáH´¹Ã|ùb½Ñ´lÚ—²À �ÎD›;2öÞoî¾Ð£úÚÕÖèy+NOî‰>¹æ¾wÁ'ß +yƒ8#ОüRìñ5mMïßÊCðߺQjÃ&/ƒHã"—’âZ°¥Á“Ab7’•¹p°•W‚ýðXø¬×áʈ/‹+ûp_ÊJm‰6¯^PVn*ø")…@•†2ot ˆÂuÃÃeccI´µYIqÙH´§BR\6ήMÙ8¨¬<-Ñæ¬(+†““eù½xŒ×ÆÙÔ÷ñ'´9¾—¾×‰ËeùÇ—ÙßbÛ×é[é„]h™åz.”³1mÎn[ßãF»nXøáÜײ¶wó}-‹y7ÛÍù¼æ¦–m´¹¯¤…¾×K¢ÌwJƒûÝte1mŽw¥%âF|“–(¹ð"rqÆ•!覴¹×o5sräÊ›;}¢Éµ`!çP«]‡²ˆºƒ,ºÑïoÔÊbŽŽ¹ã¥^„˜ƒ$"çPÖs(+¨9H"‚e¥Ô횣 h=we5w—Ç€Só_Œíª;-Åö³ûDsý2›ù>çŠ\8è@†¨B2v»}{ÝßZ¹pл&ŒDÿ?û…¾—Ñópž&Š +EnŒD›³‡œ<ܹ´‰j‡"E³ƒL¸«'N4lrZfÁ¸æÂASý £Ø©´ Ø©°Ñë̶©°Q,XmnVVìÔÁ‘ëtÑœt` ~Å‚ø")HVƒ¡<iN˜èÕ"˜Ö_åR†P+câD_/N·E‡Õ 8‘¤&Á‰ YBTý&*ÑT:<±n𠳩Tò‰óž¸ÚÁ ¯Qèx¹*ƒc} ®}cƒN¦0ФD7P$ÓÚ@“z‹Q‚&ߘ;âk__ää<%àܬÿ|÷/ç÷„Í’_:±~C¾’¹o»Q™;]Whóæåêhøvœ‘º3Eká Δº#a¡ÍÙÎ%!O£äÛ+9±õïáýjô‹|p†¶5Úµ¦6â.¤©Ù—†¶Ñæ¸â56ïï +¼®Ù'TG.ü„ýÓœ³+/ÅÛ)’b×ùŒŠÏVýýK¢Ì'½*ÔgÞè³T"".ÔxZ¢Íq§L|‡¾%&ȾqæçÑ7ÛmýC¹pùä~»}-ø¢"œ‰¶¶3 ‰}µíªåæ¿šNú܉²žxëúÞoÄ×À¼æÂÁr£‰4!y…kDìhŠ±óÖ5"vžêrr¯À¼FÄÎQ˜; +׌Ø{¿1>ͧfÈN90"ÿà,�”=æÏØ17+-Í)åH¬sDÖ=;õŠ½ƒæºœÕ$ý{ñY5Öõ²nœ‰6Ç›n´Äøâ†aÝèMèµ»Ãt«‘±£XÐañÔLEQÇönšcÏ5&Æ@¡š(}‚õÓÜG×DVd IÌX¸úÞoŒD›ãnê{¹Mç)æÊ…ƒxß‘hso7IÕL~ jÆDÈcÜß}xÍœê2cÔ\8X.D†™AýÑÈPCg C¦Ìè-âøÊ©j.,BmX} %ÿ48Ðþ7U#â]7Uk¢Íͺ(´â‹‹*#Ú¹) ·ë«ãÒØH‹±3ž•çv¼yî4C¥ñße”,9ˆ+Ѽt`ï©¿'âí~ª”yt‹êîù«ƒdg!.¯C}gpÒ¥¼§¾sp‚»Ðé”[Š³Î-…Nïgœê©âÀŠô©ƒãRéÀŠ VÖHÆj—±*ÙFlêW†mX¸ŒƒôYCO„ój,âRe‚š·MÛèóFøùækÎðÇÖZèv ÛÂÖØ„±k qèêm‘5H1íÉh…N7kú}"¥ý-¾j ѵ¤«MU÷yFÔ -óaÖh!‡=ÖÔ3;¬Bl™MÕÔ3ŽÆÛ¥ak…J¿ž#~QL^CChM]ã¸âÄñN¹Ô¸?ωówߟU‰óDŠ=¤÷Ht±\x·©šuéöTSúîB§»¶ZЎɆ_Þ +~†M©iÇs4¤ÝfSKÙ}:5õŒÝç×›î㥩íënûþ‚N÷ÄÕöuŸ6…žx0ñYü'3a*8XM_Ò§0 +îu†Ö‰Á"eco‡1·:ÈŽ›c“ÎóR »‚”æ[Åoò‘©ŠŽ™™7^vÔ•§çMÁ1÷”Â'áæ‰Þ>@›:ÛŽ›Aj¡¸%›¾Úvìªfµ_÷‰»Pãß)±«º×~õB§·#nHÉÞV´áÞ¥ð<È…V#yÔ@b?±}¥ã>õ² ©Wmøgù[h»Õ@¢)WÑÖS¨ìõ·Fê=ÛŠB§{êz·{C¨AÎ5jY8$êc aUµ¥Íw¦¦¶´áÜ=H§Xº¯áNbþŠÓGøR{‘>j ‘bZh)³:ŒY·$å$ÞHŽY·4Ƭ kU6ø¬jrÝ›/¯ÞÒ³Þ’³ÞHŽ=oiŒ¿À"ecVuÞí©…â5qI\¯“¢½4â /;Ž—Õˆ7¬K#Þ8zÕz7¼ŽÂL¿°gJ|á0uËþ¢[¾8ßÔÿ½Ðéæ\è…=A*{¡m¥šå‹¶QÍpÞÂŒNïgÜ”ëÌ£QÙ¸YÍñ…›ÁYètU“6³A¿i•/ŸÃ]ôe3wµÊ—ÏÝ7:}žq×Q«|Í^èôæ)ωw¡Òƒr’8æ‰Cñè5H1)EÊÏÔ’âc:ç%ñ'öB§aXÍîå“—^÷²›{s8N…N÷ºÔHû8ƒ•üc qÿn–Ä,#Ó~=Ù¹Ê÷€gÞžä\O4§ÿË+tƒd»Sí~Ù½N¤Ò =j ‘Z!,Rö~Žð&>…»ÐéT[ŠÇ‰½ÐéÖ°K´}ТÖíìµk qžH-ÇÉy@¼Ðµ´ì(ó*ˆwMä6’£]gHpœ<ج9òûà…Ò4âÄQèçy¡4ƒGÒÄu¢5›ôQ‰Ô’¦£HÙ>k ãÕ!…1ç`|˜¾{?†”ë¹îÎáÇ}¬è"ñB’Âç_>FþÇBkÇ¡`+Tº1…¸1H)+qóåñ)õ{¡ÓÛå¼ïR®¯šD½ª<^…ÎgÜ…ò+üÅ_Ãô·xïûãßü„_8NµP|œØNqM}='RÌ‚ß>Š{ì…óDŠmÒ[ $Äa<Ù <<µA˜xj8Œ'„§‰{išÊ”ËY¼$9g1¸ +λì¶pItWÐó^ˆŠƒ—DÇÁK¢âßÅ׃ƒ‰›´»Ð´ÏH$]¢a×…¨œÛ+q‡«?ìÛ—�ÈïÚèàþ¶oét^¯l̽õ¥bnR|©˜{KEÌm4XÒýü$î)5IH¤ÔöB¥ãßm•6Ÿjšï…qâ(ôóÌýQü ÎãíwcÑÛÿ±WækþD“ÿ6Í6à…ćp:=θç~K9Úå¡×Æ£·tÄ¡7:ãÑ[ÂbIp*¾þä´rÚ[ÂbDÐÛz£í-eéM€rqå#1!èu?¨ŠÏ[~ÓÇ>Ò“¤ºáÃGÂáC#åƒp4®„Å¥„äÂaćó¥^Èë$N|ø@¹ =’ +/‚½Ðé*§¥þü\v¡?e—×ó¿5Ðk ±hâquãÒËmÂÂiңljԲÂkóºåÉíY‰¼nG¡Ÿç…)éªÙïB¥/Ê=Š¯£Ðé.×nŸdÓæ?ÖåVw4Ç÷‰.Õ:é£y¹t§Pé±Ïøú;² 1j ‘·ç‡¼ÆS¨ôÁÛ¥ú7ÎB§[(ÝÉ–mZhBôþÔ@â>‘©#zŸ58Nt-d,|ƒ yC:;ÔV $ºPwú(tz?ã&)~=…ʶ›+N-m€½<¸ÿkœqjiƒ°6½ë|žÏø|(¶„«Ðé,m+>Nì…N7çŽÌûw¡²oª=ŠÏG¡Ó]m(ü òMþä±és®Ð•Øü‰Ý¹Nï÷cw×ÏG $¶‘e° 5ùér“ i&+•Ìx˜;áž—°X\…Ngv6ú‰ž,k 𠾬BûLÅϺNܺN òh5xP§’}0±wHsÜò4sÁϺzÎÞN4±XZ7Ó‰¡u󜚛çÄÒÄ¿ZìžÖÝt^Óþàh®ªóšgœ·kp4WÕ‰§=E7”É£u%ÝEƒ»j`hâ¦Ü¡¸PÙœèÄ)5„³Ðé^—.§ÁnÜO¡Òk@SÇâà.tzœqÞž[œ«m`pÝNÿ:}žqtÊÎe50¸.«àþN÷Û5WŒaòB¸Æ,~{Þ_Ù˜»m`wÝfùk0qžs· ¯»m`x§Ù„1j ±hb°üÒJ9ÀuÕ ¿Ø,Oü©eWgøÒáø¥=Àñ‹=ÀóÄãDc.X^µñûÖ&p‚o6ÇŸ'ºÔÆW8~ËW†Ü¡¿·]58Á‰¯¿c>j ‘uä ,¾½¡‹§ØúF§óºÔepΦwåùçÀo xºÎ÷\óòƒÈOQ<˜]‚)T6}3qËzK'ˆY±qS|‘’9€Æ¢·D㻿O§”D"e×€/ƒ“ݹP¢qêÞöÁÀV7"÷¨O4 ÈO·Ï(&z¤9&zØ’DñHs<õ°'4ÆÄM’œSóaK°qjItLõ°)£ŽRòŽioÉÏÀú¿/üOÆñA~uΦ<{¹S‰Ë2|ð›ü•¿ñÿ3ì¯\>aœØŒ^÷ç@â?HÉþßÿ1¿¿Û‰EzÜç‡þ±^¸Nd¦›ôQ‰ý_¨ôù©ö±Od2éQ‰ãÄþ.–è>[ ¯£±Cþèß’Éß¹þØuÑ´'ç‘Ù_ö{@ÏS§vÍ™6/“û`ãƒx üÖÀOF¢× °¹Ù®|LæÅzÜ ÃûÄô@¯D¯í¥B~€]Ö¯±ËºÕ5v™[]c—‰!Åü‡ÓØÇî?œÆÆýxBZ[eòÓ\å>òéËæ‹€œäbÚyÿgwíÃÚ_ë'#Ñ‹×l.´çVraFâÿ@oÕåc(<97z¡kÇÅÆq-¹Ø©ðN^Áts§.v +äyïÔÅ^„ÏŠ…¥¿øxÞŸÈ /»ähRˆn¥7p âwOß¼NÄìþœLº«Çö<ÙG% %@¨Ó×T;QÖëx¡SKgz7üÁÐŽa£h¸Aƒ…éñoò>Ш.ÃÇw oètb[¶ûat9Ñ«gXX屮Ð×.C:Æ;sWmÆà +ÑT¯Mé[ÏÐ{Pºbj…–aÝýGƒ4®ãŽ"íÄpºvbøÁ]½’É ±Æ=²)Õu½ÇkF†Ö²CËúeUiêŸ_mÝçÔ¾ÒS¹*Ÿû5¿®çÚ¯úÕùÑ·úêß6õzaÖѸ½6è¯kô5ßÊ]º~Çîû|êv Z´‹cÝøTvݼ𹞇yØ·¡Ûðÿè{“!äPÅU\ÄýÌh˦çz^—e”ÍYì9“¸ž9liÿâ=Bt7¯{8Á)ⶫÎÝð»+#MÓ)Mk)ü<Yx0ÛP.¤eU€kC×.àýf¸á\é_NÀs½¤»ÙWýØX= íñv»W&ߘµX¸7à ˜ÊÝž„ +:sYº)«-yG{7¥eݦI¹ÛØAÅÎò1ÌÛ÷òArVRŠÖVRŠ¼4uùÝÐßa>(weAÂùFVRç1üÁ †–ª¹:X”…áñoÆìHQ¤ƒ)Štz¸9Ý?#¶(Ðé=) +uJÄÍ~Gï‰gcK ôþÿÓ7*¦,CXîè ‰~7ìw´Ž 'º`QEZKZ’ƒ<†rÿÎvFÈp"OžDÙÞ/ÃFQÜÈ››••ÌÒYiÈ„™föfڷϺnY9+ÉJCæA¥¨Ã‡ú3K«®ÛÊ.lP’òŠ–$-Õ“'-®â~É“–vÆ“käð q'-Ý\0AZ´ßчÅÌÚOmAOwtŸŠL÷ó Y|jº¥?y'ЃZLq[ÊS=H OÅ}jÁ1èSq}*°qf·ÅÛÿ +rLöÂc*ÈYïØ쮨)/œ 1Ÿ¹…ÏtûJ!³ +‹Ý‹ZÛ¨¥B8ìnƒÖ&%Yk%ÑÑbƒâíæ1°öÂqCÏ=º˜µ‡âäæ¡8sµ» íþ]k)ìì8‡âÔl +“§u…ž\-HŽÁ£1Ô‚ðÊ¿ˆájHr —ö"w#RÕpd?‡/‰QBM{Q²·"©ZÜHdê7r=¡(¶ªÅäIÊë´7Œ¯:ŽÜÒ¦ÌK<šk´¢nóS-F¦Žt9ÔsäNœê)r;:N5¹ku#qªãÈÝçAZ$E@œê8òpœUqâ<Xïèc_•:Š¡~%fU˜ÓaV…9ÕŸ¼RèÔlÄu¤7d¨Rô «btý®RePŸî|Ž!=~#ù61BÔSEÒJ!tòa>¾CÅdÙêš‚Ž@7;tMN¾ú¤Ð>HöÔ'Å)6 [}Q¨,¨+ŠpmUc´�?âÑ"q¡Åf¹“ÃT_EZŒrOå.Vœ"VR[tÊ™ú¢ »ø*êêCu,Æ(TAÔEuíSô‰NŠ¡ 7Yaª†d…ÙŽ» œR{Â9)n|ÕS…*FRT§b¼¾CEíÎd¨ç +:“¡ž+T4ÔcÅ)ÇPø÷þ®VÆ·ÞxÝ]Š¨WëRhè‡Z“rÞñc˜_Ð÷U´· «y)<ã}ú«ïjO +Ïø8ìNâŠ&W\Y¨¨ÜÁwõ…ûúŽó=Ë0ø®@dO&¾%¬ñBœÕ”`e=}…ËÚõ&”ãmNßÐJTkKÑâ +«h-U¦Ý_†w¬ög5…¾ë!.¼m]Oá™Lo]™ò±´·2íçkþ` •W¤ëùªüÒìz¿ªiv=W•gäõ]øú*÷Hõ~UE=Y5U»þðÕRÜþ®XùÅÔU\´Þ˜¨U,*?ºnåïºûuœá/Ã_÷ýl_OÞ°Ý]ÈQÜÿÞœråeˆkW÷U/ê âúzýååÿRæ‚©qKé«!}Ðâƾm^o\\wü2Ú ®^´ºªØcW¿ÓXçlЙÅ~S}YðÝ–m*šèÅ`–]|QÄ2ÕCï$¡#a“±Û³ #´g±û)æ,yW$¬Ú·Aw4~‹:ŒsèÇnM.Þ#¿ý_£vJöïÆ‹r‚ +Ô½ñÏÔí[áÁ×m&�ü»ñ&¥ø |Y%íDïžfQ‡ômصÀÎG (#"P”Y&«ÇNóÏä¬Æy¨{ó'‡f·�ykƒÓ:+YjhÒP–iÎÒ‹õoÀ9âφÜNZ³rŠgs’:I±Žîì䈃;;9êèÎÑ0¾A»ƒÙ¦NéÙ9Œé9’}¿aŽf’/qs·c o Aà0g2ï8W#pU©§Ï†9;¸U”uEí4¬Ú±@Yxᆵ’«|_4¡º)’}QpiA‹Þ(âÈ•`P°oüN¬Ù$ßØ\ˆ4PA}Ü]Ä¢bßÛPXêɽ¥ó½ EÕ±¾øBoÍöe^¯ÈmÚèc÷Ƥ°j—7é™OÖ¿ûߺI¾(¢ö—F¤œÂÒ‘àcøÆ›ˆmÌwòÆtôQ2K'Ò‰„Ž ééHšH0IÂ0É û#KŒ-=½+fr0òwäŒs2F…0ÔíÛa ‘ƒ1LòÝbSB¡� É90×Ç7&ù2º>‘{‘šÛdwq«'¨‰H¹!»k[T "õ¨T‘ÄSðIDZº}‘DwQY³ò?‚|[£ Ë5>H¾¨š µµC¨uV©8‰VÄXŠOjöD+O%· ›ÔœÊMâñù$t +±ÜæJ±ái¯T—Ô³ŒïÈ9 ö$Þ©JuI<T•ê’ºs`žßH¾Ì;PH)J\ÁÚ¶oöý8\¿‘|F!e*s[*•(û~TjQNI§“Z”¹"UY†Ò“Ï&¾x"”n“ÓB-ʉDP‹2c¥åìP©79ûÂPo2ObÕG¢¡Âäìh¨*™ÑĹ$ÅÏc¥àä P +Næq¬œŽ”“C +Dýƒä‹ZË +ð6VJJ.tïT{"ˆÛÃË“}²[Ç7Ä´mÚ—HéÀå&s´å&ûh7 +ÎþeòFê&ù"·w¾G['P»Ý²PÍPË(¢Íj””Ìs×()마ƢîVé&ù¢ˆ®QTò$R–œ”²’'(#™»v¨ÙWc ”¢’'(*gVè‰�jJ<óÉwÀ((@ä˜ÇãÊ&ù";Ú*€ÖÊ"n4&¸HŸÄ4Ù¸ú‘5Ú˜€kÆ7À“S¼~FÉíAÚÙ¢àV5eÄ-hS(Ü£¦yË ’]ÑZ¤�Eëõ0‹j M=[?Æp¥†-gë¨E:å,ÜS6 +Zð†B-åm‘|Y´j&ÔVIø?Ûe”$1 +ÃÐm50¾ÓÜÿ{Ç<‰I×î_«âÆÂ$’€U[‘$ v—g€Ö=8êBÜÎ]±|l©k%øøB—ôP€×¥{ÂCdÿ<¤¿¤ƒ(õ ñaÌúÂ/l<d[|áAê*¤ZØ¥ÒúÅA5mH¹Ï™æ™V ®ƒ¯8×aÄu|T;@ó-×N0ÓAN ÄÔ¯ð…ìm˜0¯áhf@z|ðÑõt`×µÂlá¨C ¼ÃÓCiž(í¹o‚]®…WÖ‹Ö2à×Òòi2;ìÈÓÙj!k% „wð9R;xK¡Ïe , +ðCW^ˆZ´v %1àÀ5PÚ1níÅÁA¥´tâ’Þ@‡<èÛŒ É0‰ñu¸h»–!ÚŸ;k!Ö]>^ô},1€ìØZÙ®‹èÏC h@ áÃHs]/¾°þKÛà$P·á8úƒÚφ¤>É„‘?5½fDé@ž"4âÛJ’ÔxHRPãáÔèñ 5øáz¿dèñ¼ ƃÌDOOmžd†@‹§ÔõWmŒÕ?@Œ�1ž P’¢æ”‚p{¾éFBëáEìqžWB +„‚–…A÷[Ž’ODCÏž×oµßŸ>í÷ª=@Pu”ÜHþ$‡l$ŸÏè‚æR˜¢ûÓGµPx¦k¡Š™rvù00&ì`è7f0¡Ó;˜c€`ë ²ÉÚsˆl‡(ÀÖ¯ìÆH@>"s˜šP×SþˆÌ¹\?Äecsî/d¸Ã\j +[ÂÆÆæº ˆ¸èÝ_ó Ì€P>‰s˜‹Iã3\jø°Á) +©®¡þ°CôíùlQûs‹,DÿÍìÆc¤Zý•qzƒiù³q†‰þlœar‡ÙXÃ,Î0ÑŸ‹ ÀªéÏk˜\Z6f0Q£LËÑÆ&$¤Ê³êúxZÃú¨¥³Ã& +©vƒÅ ALVôhñŒ…1g¤®*}À0à°ˆ7›[@][UK´ê"1€móhñ½¤dÐE¼AHëZJ%Ns.¦…à'yúCª…ä +§YÄ›ÓÔETµ`6†ï,ɾSWM•BöØJžôÈ£å›_R$¾©%Eâ_ÃËò-bÉÖ!Is4…áwF}{!ݯ‘oä!Ñ3™¦°qžåëÎÆ{–4¯YÄ›‹Ì�ïYÒ œg/à×#Z:]œhiÒøÐ2[¡³Nâ=ɹH£M¼h!A‰¹®V™Ä}Î%±ôÐœ‹L�/:7ÁB ½0 dh ÈíîJᇧEŸïYÎG‰û,òQâ=k«ìvºÌ°¢•¢�Yç#5ñÈ�ÑJèz +¬h!OBáÊC5HD‰ÕÄG«&èÖ +³–Aro¹Ç…¹¬‹è„oX‰¡ñ(¹z’“˜K8%Whb $ +gvÑ/au…; ‰/!‘g +îT‰3š“8S8"åÐi*¤UáS<z +[4'1¦pDºX`KFJ-ë7gÒË1‚”S8"]Œ)§Äšê^¥ZØõ„-ò”XQŒK¬… ‹"¡uY¢R²S N‰3…Râ>uÿùóߥu…Ø +îSHÿ…ƒdGᎥÄ}7ÿ0m0•Ðb"¡áqåß8•ÿ"(¸”d[7Úà#A†I|$¤F÷¿P"Ã$®\¥®ª…"!&q•Fù%ÃI‚“L %¬K¥è‹žz›;ÔE=Ó&Ä$/ë–‚püuWPm€Ù6>²%!B>&è~õûë´Î>ʉþ… \ÒQšHGah–t‚fIÇB: +C»¤£¤K: +AíxáÉS–vü"è!…iŠ¡lVÅOöc8ʉޅà÷°Oü¤‚·já÷°3,d?jŸáué9X×8麞M— +3N\ãäéBÐC +Cp{9ºì¦ÏÌXMa;õOØN“ab1'¿à1'ú⟋Äaö2<ædßbŸ8N¥[ÕBw©+tÃÅSö-¤)=ƒIc0•_)ÅbNb}!`8YU£_ýøùÂZ~›½à"•Cõ_(mVf£;ÞÀóÃT6ÃTNÔ,!§0[KZb#'L¾OS9ù±d“ab";/…Cö¤Ä_„Wœ X¨ƒ¼.·˜õ^ˆu¹ÓTÔSíéZ!íçØ{KJ5𑼪¡Ræâ’ !O[Ii÷–”f`1y5“Ii†{áâ’W4° ”h`9©e!{Eاªd~¸Q>~1p£“¯ +Áö‰/d¸‘ŽÛ€Cšrx˜SJQ°¦‹ 4|„Æj +wé‹€OsJ) +Öt’O!Ø^}1f¶˜ÓÉ6… ;}ºØSJR0§gþÙâN)EÁœrICnépÛGø´l(îÉ+… ·ÒµÐ‹ÆSè¡ Ê˜®…Ph]øD|¡íZøÅÙ +¶ÃG×tb JÔ䢂դaJ‰€4LédŒB°µž4L)E@€mâP™K!Ë&ȉΫaX©t=¥G}j&Zö4‰/ÔAäã2VÃbÈõIÎ�T»ÁꟵ/ o±F7ñø Ä˪æ1u•ª–žl[|!õ–…l‡ÁF*VS¨w†üÀ¶ëíntAÚ€mß_Èìšþ‰ä´»Ç³üeò†Ù¤ H %¿¿“¶hÇEÒ„‚•¤Mˆv´ ¥A“ɺÓS™PB<.‚þ„Þ4ýÉ̦ºB—4ÒôGp‚ô\°%‹´Ûå/nÁVÚaÄ>Ü—_{iÉ¢Y¤-Ø^-=¨KXŒ<ÜÅV‚¦ú»¸‡g°z±Ï€»gßô¨KXþjÙÊVS(SZÀÖ¹ªl%4B0 2}¸òÉánÈJW6dӣݰMz1½ ÛôÎöa˾öáÚô î ò¾Œé™�ZdyÑ<-Kr¾°þ:A(!Ð|*ÆÐM(‘KZBÁ¯[B‘èüî¯ßbÞ?Ð#“ôž.Ð +×B…¸(Aw(é¨>ôü@½¸h¸êºÂœTr‘Æס{†Õ›�{lpw(¹˜ž(sCJ:Ê×,%j„’ÎgÝ–‹Òµ°×BPGWºNÞ¡äbèÂYéÚˆ3I÷Sz1Ûw“ÅØ™¤cd ]éYs*¹XM¡N*éØZ[—l—š‚’Ž•5KIÇÌRÒ±²FFé˜Ws*é˜WC=:îÕvûB>4Ü«mCä¢ã^õUªV˜Ýеè¸Ws,é¸_J°E..òආ|t¬‘K.òÄ0º–j +÷T—ý¾/Õ&X]…8µ ð¡ Òì|ǻդã]ìx ¾yÀ{SËb›X`w6¹˜Å;סŽ!vgÞ0i‹~C�?ìWjpÄNé8`—ðùlqÄ.©Á»¤?ü[®š +‰ÌŸ[÷GM…Ø¥þè³ÅÏ+øBùF>/±Kið¼ónbÙ«ÂÀò`3ý)è‹ +0:ü®ŽP•–ˆÒq¼.%1rOáu) vWG¡Òù.›,KZˆÎ½ŠÞ€ûd"~×ã‰öô;Ç»÷KnÒÕÕ»BB‰ –S¯²$ Õ;:ÁW9‘- ù"ˆIe;ŸEÎì z.)‹áL«Í Im©Ôù1¬ØK—Sö¢žƒp&¿~Ïä�M&Îä&ˆ'‡4ÐÎD“ÙHS‰&hg¢ÉÊ™ü],§í zx&ÄÓ$PÎ áпÃ-&nqe0 BGÃ#Ǹµ( +u¬u ˆûÊ¢î¹HWFP‚Ö¨c$çˌӤ¹äu·Ž@ ‚WÍ"òEk ¿j‚†!¯OïXäìRƒ|3NuÐIпpï0âS©§u„ö™\ÍÍø4±O„4²“k&¹Èjpg „4²“‹F–W¨°Od5Üi!"¯"ö‰Ë¢j„5h5¬f‘“‹²Ò]Y ZM ¤áViTù‘[d5Üja*§"ö‰¬†{RÔpŠ’f‘“‹\í#À '(·«Ð¶dÓ„D.|„-TéÈZðúØHs —×H sÁuBä`Q¹¬JGå²*UË«ÔÍdS†€ŽåË©å—ÕDø@ã²ßÁ«/« ˜Ø% +˜}›X,§ìDM=̾M*˜“žGÕ¬ÂGø² +ßäô!ƒY…ðeµc‘¿ +*˜U÷È`9!>¿Ná˪t{Aó*|„/«òE$E¿}2QÁ¬ºÿ™-º—UéˆYV-#^yè—ÿLNÒ–)f2‹##m~-¼$Ï”rFÚ²Kyqa”e¹5d„.×î¹$ósçǦ¹äÏqŠ»Ç”hF´2‰Œhe?$£8¦œ3¢•-ñ‹É–ùŒhùú¶PNI ¥OûË®|#y@À2…Ÿ“ÆœDÊÛF¤Ê¥UElÁ*—CG¤Ê¥uOêg¦–J²Ÿ/ïT²-¢¢â›•pÞÙv žPö\-„K4¡D?ȉG¥Œ$ZÓ¢±g9»dÕu°ò™CJx^j+ó¸*Ú)QŠ£ç=UŠ±^W¥8}fö†¸x*ÑVGÿåID_ã ‡Àª*5t¨TN1:Tªó‡©Ô„Û3Ù'2™Ñ¤ÒäÍùC‡JÓJ?’9bSTƒ(†Ú ï b!\ÜŽQ’‡@”U;0¹œ« +y¨—ëьĢ¢Šy¨—0�jQ‘ÅŒZT§A¨ŸnÄBê…EŠX}ÎBÖˆ¨ÉNxUd0£5±ÞA5¹%ðªÉ]½Ð âåS¾Œ T_q3‚P?9MY(f +P¹Æ4 ZÎ6Þ)A„k9+hB¥"šP¹Ô;Õ×ØwRìEû¦”+UUhÿ•tZzµî,fzú‹š§’®´‡JizzmÀ\Q²—déÌø¤ÿW¤l‘ó…Ô.¯¢‘‘¾b`g]^ÙRVx²¸#,¼Aö¦ò„©\bO˜Š–•Ð\ïìË“Ø—X‘SËí¼]rY!ùh÷e–ϵiî€ñ‰K6‰X5_b“YĪq‰ÝHsÅDµ,»DVÚZ–�¸ˆMãÝXP‚¶ +çË;‘t¢YØ +ÒвV‹ +G†þ +7 ÈÄ:´èDCñ +ZÐP¼Ek.›V‰ýLþèF+rJU^Ø—%¯ð~iU^Eù »Få” ž‚iŽ€çKÓ§ÿ™¯›¦ÂF›š +™×Kû®Ë^šœŠÆNþ +<nšêkªct«ÊÕ [/*Ó¸>„£«8èø}M:~×ÁýÒ_ŒÎ•»T‰éE¸IJK…沕þß¹V:|OÚéÆ; h&×í¬Òþ;´( bâ¹Õ¼S=¨y.Ág 1ç¼s4ä0ä!ы툈Šø9A¼+zѺDÄ°"2½8E_Æm´û‹/ž'ûÄZ´Î>¼Wšg§AÿœSZi§}Wšg§AWZç¸Ô(ê7H'hâ ã’^9èÖ•kÿ¸œˆ,[\þHË£/ïÔ^$Û³ðLØàœWî +#ùHšó¯“þb”…x˜TZÙ EVÇðuaãÿGšË^5H€Ü3*}d4QÉÃ;•i.á6Ë¥?ÑLGwz…øä~ü¿¤©|ÒŽOîÇC§“ûñèÃsa=ªês]¿/Ôº=‡éC\e§HHû\xcÚn&SÄnO*Ëf¥sqÿuÒÍ“©ãöÔíCZ·AÅ+‰«£è°V&ÆyYÉZbŒ‰Á2|à©Óõ÷í¦½Xm§åkv‡4—½Ý—7~¨æq5’¤rCD[¤5uÞ(¼Nå„e¹ÅLѨz!qÓf*³é‹SV?„öN5üPW;Øøc{_¿¯˜{Ÿ¹ü೑ö;=ÍìCù)ýöãâD›&ªý3ó¾É\½Ú§VëCÏIùPÔ'èþíúuýú÷ßþþñ÷9t×cþùù9aëg_?Ó÷¿Ÿ;~|¬ŸßÿæïŸ.xýš¿òúUž_ÿ˜ãó'SËþ{|×¼ýîßßOF×ïöýÝÓö»~íÿãëë¾Òö;o¿›¾¯á_Oõ=Ùº ÿ9¹blžŠ>ø5éůñGB~¿qMŸå3Ô™ÒͶ¾B©Ý¸½B)Þ¸¿Æûá½+Ò5±#¦oœNºÊ‹ûÉ÷½¹Jw:¨ŽÓý²M¯µS;9öÅâ$Z:†SºÅ¯qŸÅkþ¤vP?}ùÛÙ¶¶“ýí×k½B:!™pÕ«Óq¿8¿¸î«cí1Žµã:mã'ßñbÍŸ™Š»ÔM¬’[ÙÅc·Žîs©x™æûŇu>ÂòW¯Z«$3¶þ²‹×ü‡ê}P:×òW·m»_\_¬ùóO´±S7°´Ë·É´“} +0qP>×ý°ÍW¼X¾æ´|Õƒºi®•]Ý]¶w{qßÓé\*ÕÓ4µcöØÉ'bÈÖm{È6¿0™ |.õZÉ=|1QNÿY‡ÐÙP{ϵ±ÓÙÐÔ±A;íÚi×v;µ‰[4LXölÆTgF³ÕòM/[˜e;ú‹5¦®\÷AÉ4×*W3ÿîûìÃô¾OSµez·cö„¼ª)Ç–Zt`ëÈÐÂJ¤ƒò¹–ªoÙæ}²Ž½¯¨×Üj¡%7³LÇ>Û»¥ÓÖg˶>^ÌÖ`’ SŸ6µÀ¢Ëƒfûˆ‰òiÛúi+œþŠäÇ&L}¨ªMÇ>û„tšŽ8FËAZV«ú¼©CUu,NG•j™êiû2UÃÒäûXH—“»Ût˜±MÆ 'åÓTþ5ûlŸE‘‚Pª’·[-§ê"C45NSiÝ2Íí˜ÍBÓ¦ê(ªòªn;*¼ªÓ¦©}ƒz˜)›yôfj;¨›0Õ(©ÅÔÖ÷Ùj^"n¯:-Énu^ø$U½j‡eÓIҘΑI{ ÏæéEEÄ´Ý'Åi*Ùûšj©é¡¥û dÂVGÉ£å vε~"í³ÕÖX¢é~œTöm bªK”&«™ÊË´£í mUuÞÔ<“ZDóA›K4Ÿ3Q{ÙŽ}T¥lR„ªóææBo>nóßpŸ¦’ÜeêÙÙÿå»lv%Ij0º¯§¸/@OÅx; Ëê€X\!1‹‘x{*ã|_VFrA½¸}d;vØW\i0Õx´°lTw]íhŒ‚á*]4µs©~¦žP•ÏT%®¯OUž ovz?m§ç“*™*B‘Š°¨§ÊÐÒ²Q»éöM:¯$C5Ü,'s$mjêÔ¨3Ån[¯BÕ§I§uàušq£*Ä»f‰áfª ÏÒ]Wªßæ‰xÑ‹@ŸMÍBS»™ŽMªó6(Lèª@%e£vÓ=¿Ä™„ë¤s¦Š S'XҶѸénßí»zÚ‹úij<õS<OùA2€Üè ΢Ì_^ù‰¼SÛMß¼¨o„›jÕ *(›¢f¦î;´¢Jò(ËPuVuH¨>-ÝuÛMwlÒ¸’TÕ¡aZÕM¡úÄ[è6Ån»©j–šÊMµnRYhšÐÕ3^Õy¡j•¶ªÕ4n¶ú Õ "T5h-¬õ›îؤ›m¨Uí*Gî$´”šÚMwš_¡Êîå:½~îTL/»ƒë&m_ºšàGM$¿uÏcº%·Û³†t]Ž«Y’kæàEd¬U€¥JP²~…±+ÆE¦•ñøsP1¡ªÚ´´mÔoºó*íèØYªªÅ–¤ªñ˜âÅ•Ænª1zô ¼Q5I·oÒ±Qìºó*Ôˆ=¢?(›¤Z7ißhÞtã*ÝAN|-ªÓƽ¨NMcÓ=-Wú’fq[Õ—T™¦fÂÒvÙêS«4“6S3aª2nC¦*ä¶ +9éÙo«P“Þî®âHª¹žd«²ë«>’ÊÎÔwÛ7/ÂOÏÐ4¡Û¯B•©ÞTÛ&Ý-ÇMw^¥ªÁ^ lBWÃÒÒºQ»éŽMWRÙu•Ò…•êM·oÒy%9q)é9î.&½½¡<6’Š)kDvSÖì«ô²f€I‡P5iUí*¦¬Òë«ôrªéÓ¦ÓŒm6.()á¯Y5Û5^³ÖSü¨Çºå¬ÊiV Œ*SUÁXYͪn‡’œuÏ£Ù6Ìiܘt +'Yw9œdÝæ ±áë.‡“¬}a®ž>¨è.‡’\t—CI.$c¢=6Ò)”em_c‚’vÊ7ÕºI9 _Õ5û@*\É®7½œ¯">?4LR›ô¤ß—Tïë\íX´]ÍuIE:•é¢g*ÓEW:É®tr&-åÓÖ[ºÓ¸éÆUª'd’<Ýötjß¼¨mÔoºøYÂzù¯ž©Õ§eŸ _‰„n\I×ÊuÕÅ[ºù‰lÝf^46Š]WZ—T5Uþ‹¤Z7i߈u{-F"UÅj謁&¯Ùôdlõbź³Jå7·ž>à›±dÞü¢F‡®÷ý jZ¶þLO¸Ñ¡ÖÞLI~òBØHb#¼S½éöMª®ñÓr2¡›³™#e}k =6 +¶%™±e/N.½VbçšÍ‹êFxR%ve*É´SŞ惨ã“HŽŠ¯+;Úc;•šV¡²|¤œ€“0ÌÅŒ%ïTÊ2W*L•™\>vúiݤ}#r–U2½9ƒR˜W‘ôª5h˜d:ÍØJ¼J¼³É¦²Ž?hæTd:멬šáÙ<A†*‚ÂݼˆpÊr:”ˆ¢Iyá/(ßtÉD ¤ãJ§Õ9s"UTÛ³&†Ë!^‘ó\$~.±Ì%¯ìoüqÉ’>ù¡wÒ4É46é—´’¿5ÓZ?Šw’zü)ߢ„¾t7þ„žâ.y,k +íXo¾dL²d»Çë·'8¥1£¶‡ùs1—<Žeè aK'Ö›¿ qÓ•ÎTñ‚*—1Ø(6^T¿&éâôØëÂÉ‘þ59©Ò}ó¢ü9-šÌ$ º(ö–ÒæhêJ'IЕ +P ¦;¤{é8 ¥åOÒ‡ŠlÙœþß䤬ϮÃêGï|®«ç}›Lé+~‚.è6¨Bj6=yÑ4ý{Iõ!œ¹JJ_*Í|¥€ºIº¸Y â…ñÿq‘•èDµÍ,éNÕ$]œd¢fžÏLÔÔÞÌJ,{f‚¦ôNÒºU«y‘,ÉA“ç Mó"9%Ý€*Û6Í(6.Šs@ñ¼—%ßHº¸,|i¤È^qF5_‰$Œf’®ü„!/$a&º“’0Ë×$]ù!Eü ésrV§ô5 úÌúNægÞ¬BWq±Ï1Grú +’ùJËHÛFøkźÓ|%N£³6]Bö ªqg`›œ[·™É+q©qÛ°®ü¬´û³î§©3ÏÈä«êjAH=!Äc'Õ€*OÈì¤@]m’?§ ÊA«‹Mrâ#¨;ç“!Pwg@}Ü Z]Üj&é™>4¯€Ãá:èƸ¤€5v—úxµºxpÑêÛátù$ê±q §`dó"9å´jâá9%CNÈšx8ÑTKpèW=³®MÞü¬f~guðtÔÄL¶¬¦Áó ¨†Ü5öIrâ¼ùÖ·Ö‹:>�R৻°pMç¢q "j¿ÔEÏ*oóI" ѬÛÌ‹ä´CÓ$ݸJõÙˆ4‹:7L]D¦ZŒ°îʽdËe<×Ñà Hœñ$hKErñ$jÞñ“pøtØ">H"H&@<U˜¥ó"éem&éÊ ‘Õy%T# Q3�N£W¦Â@8x±1ÆA¤jÝi>HªDÙ“ Õ.§„Ýå„0{7I—|¥I—¡o}®Ê¤±Ã‡§¯#g[r@VŸ²ƒ>ãXÞ¼Hßm7’.y`õ)to°Ü”Ðw\}oæH´¨z‡9XapRTaõ™ÌŸ0ÅZRiß`-©4o”nÛ0_ie»&ª´ï)Ô!&$'a]ŽË v˜ù&[HÍ¢á¡:L«ƒá‘åBÒ•‚&•‹œ8,u/ÛMUÓ™ärZWn鼆ºøªä5»Q6IW¦„Íóì>UÍêm§ò|ÛÎI„Ù¨ª#›š£ª'Ùaî4MØÊ”ÈÔ‘¤O Ù}ø7/jñï4•7:Øb4”:‘¨W»Ï«,1wª7]¹áÎx•ƒ¥ò‡÷”ÿ?ZºM%þêéϯ™xaoR°ø5¶Ò˜ª²¦Òf':iBÅ$]’ÈóÛô( pây‘üÂ׉2ûmó ÓK}ÜÙ«Æ‚öñäÏ_ÿxüúøñøÓ/ß??ýùûÇO¿|Ï?ÿñE?ÿz<?R)ßú«6ý÷þÏo{üåãŸôqüûíïô~EÖ¯ü¿"ÏÏÚèãùŒU/›ôœñg)#ØÍ_ze5ú|ŽW?CíWNôãñ�ᇠ+endstream endobj 102 0 obj <</Filter/FlateDecode/Length 485>>stream +H‰œT»r1ìùøƒð²µ’q¥É(.òšÄ)ìÌØ)òûY’÷ÐI)2nHÇ]`ð_Žt8==|:’ó\r ¬EÛšÞŸÝáñÉÓóoçÉ +g©$!pŽ‘Rb¯‰Þ¿»øè7?6)ÃÿùÚÃ"#țۮ.û´�úF¿Ü uJÒ¾$¥bœª*]^{¬W'œLI*ךH +‡˜($6¤ +[°Åº¸TY´.¶%®^¤G‹`¼¸ŸÈ÷ÜÙ}Ó½å3„ÍcÍ[“–Tqž¢p B|«=ïwãxq7ˆ•Ê÷d@™á¦Ô8·‹ÃÊb¬¢�¥(Ï´Šº'¬žxö©Æ…ptúÿ5#«¯nÜüC‘Nt_¡Ñ,[Zaà«MïC'Ï|[w…6ô “c‰;–Ü„ ]‚ãÜ+ô.ÑõŠ?B×>4Ò'nøÖð¤bTn :~êWé|yù^ξ:h[„žPïô`¤-£Ö\úcBßôfÃ`HfÃÄ/~ÐÐaµÉ›³í¸VÆo˜~FŒñmå¸~û:Þþù¿^¿´ +6í¢±rÌ™¢b7Aš>"LD*Å£©cp°úÖL«¬û½À§âñÀñ3ØþFg÷W€�Çëöl +endstream endobj 27 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 107 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 20 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 28 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 108 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 20 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 29 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 109 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 20 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 30 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 110 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 20 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 31 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 111 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 20 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 111 0 obj <</Filter/FlateDecode/Length 492>>stream +H‰œT»n1ìõüå‰õj} \‚‹‹|À!q +Û€"¿Ÿ‘´Û³‹ÀÍŠ¢4CrHíáÛ‘§£§»/GržK +„oÑöM™ÞÝáþÁÓãç)NRIBàdF1²×Ho?Ý/úÍEÊð=ö0‚Èò궫Ë:-@?莒P§$-ìK4*™cU¥Ësõì„cV’ʵF’ÂÁ"…È©‡Â9¤ewq±²hYö9rõ² sf˨×~#ßsg÷î-‡”¸¨dMlVӖĤ%VØ“ ×P ‚gÛöózq7Ž'wƒX©|Ï” i¥fNÁ–}PZ;¬BT¥,kµS÷èêy‚g™:aX×H—!ÀGC0²ú~ïÆÍ¿dt¢$*†vAÏU¡¦|µ|×Ù5ÔÆk™†½“:£Sh‘GolG’Z!hdF]sn²i<Ñg³‘â'ØÚAã|�çoýŽŠ‰/·?u‚«l>ƒ¼Žü¾š½6èš ¦¼¾«#”†¬í1A^½Y0’8câ¿ +† ®ØyÛFo±ç“·£[IGȱõ3bpSäúùëxþçÿúH±•/æ‹iÅCäé Q™!b‡àƒ9…\YÕú½À«x<ñ¯þGg÷O€�½göÌ +endstream endobj 110 0 obj <</Filter/FlateDecode/Length 488>>stream +H‰œT»n1ìõüåéAŠRëKàê\\ä‰SØìùýŒ¤}Ü]nV"W3ä”ߎt8=Ý}9’ó\r"|Klßlôöè÷žÿ8OV8‡J!%Î"¤Ê>*½ýt¿ðÓo~,¡ÿ×h#HA^ÝvtY§eÐzq¯¨SR,ì‹*ÆZc¤Ësõì«E +•kU +…“(%eCê©°%[¬‹ÓÊ!–Å6åêW¤‹ /î7ò=wvßto9äÌ%6á1³HÍ[SL´b?Iàš” 8W{^/nçxr;ÄJå{6 Ìp„&Õ8'Yì9ÅÚa€ª¨`YÕN;Ï<·é–ptøhFVßïÝ8ù—„NôA‰Š ]–¶ +µÊÀW›à»Î^KoHe?Ø7C§‚‘á@•–Ü” “aÛ¹[¬N³6ºT[ŽŸ¡k?éH7|ë¸ÆˆñÛtüÔ ®Òùò:ò{9·ÕAßzR}§CmµæÒ¯w&#d6Ìüât+tXmôæíìŸA7\+ãˆ7L?#Æü¶r\ßþ8nÿù¿îhlÚƒb²L…$V\Ô€4½ Œ •âQíS–&-Y奟K,Ø+Žç`{ÎîŸ��÷]öî +endstream endobj 109 0 obj <</Filter/FlateDecode/Length 493>>stream +H‰œT9r[1íy +\àC¸¢µ’q¥É(.|�—ÂöŒ"×Ï#ùIv‘qC ÞÃJî~íiwØ{ºù±'ç¹æ@X«¶5úxr»Û;OOœ§R9‹‘„À9FJ‰½&úxp¸ô››Ô¡ÿy�ín8‘áäÝm¦Ë>-€îéͽ“P§$ìk +T'S¥Ók÷õê„SQc³DR9ÄD!qAè¡r e‘N.‹ÖE.‰ÍË‚,…cAÎ0{F¼ÇÎî[Þ[9sUD3ÇhybÒÀ’ç) +[ÈÎKÜäy?¹+Å‹»B¬T¾GÊ…´Tçf8ä Ô:ÌPd¥IiZ³º&¬šh.!S'Œáêé4 +ðÕŒ¨~ߺaù—"è‹Õˆv¡žk…Ze ³–ðMg·ZÁë›cöƒ}ã)èF¬ÀÌâKn™ “‰ Žs·8 º0èB‹ñ;tí¢‘Þt÷Ž'Å0×k‚ŽŸ:ÁY8ßAž{þœÎeuз(‘‚}ÊC]2j͵?'4NÇ&¶ˆ É\0ô˽ +æÀVð,¶é[ÎóÍŒ»¤]Y‡Ó!ú2†¸ÕäüÐñÿëVÆV�)š8X¡¨†×*ˆÔG¸‰ˆ¥zÔ"uÌ"K¨èh1VÝ.pÄ©z¼sü Û§ttÿ�o¦÷Ì +endstream endobj 108 0 obj <</Filter/FlateDecode/Length 488>>stream +H‰œT»n1ìõüå‰Ô‹j} \‚‹‹|À"q +Û€"¿Ÿ‘´»³‹ÀÍJ¢4CΈÚ÷#NGOw_Žä<[„¯iûæBoîpÿàéñóTŒ³T’8ÇH)±×Do?Ý/lú=ŽAlÄ¿ž@{Id$yuûÑuœÖ @?莒P§$5ö–È +§ªJósOõì„SQ’ʵ&ã…Ä•ãʺš]ª,jëº$®~C–±D0Îî7Ê=wvßdï%ä̦$š9Æš÷"& ,©b>Eá„ 9·õ2Îî&ðän•ïÕ€2# MjáâºÊAk‡U8�UšÀ²©zD·È"ש†•pË4>êQÕ÷{7Nþ¥H'úÀ"‹¸v‡š3ˆÕ&ø®³i´žsµk£îI1`û—¹éÀ=ÈL—»b±Æ“ _k~†m4ÎpîøvÝ -g·øŸ:þ¢˜O�/ó¾Órín,J¦P߉A;——Ùú;‚·z3 '$sA·¯qÐmбjM·L—øºâÚG¾±ôbtn3ãòÙëxöçÿzøÒükÚÅZ/E¡¨OTP¦HQŠyØ:Ç´·ùJeÕØÏŽ˜™ÇãÆ`ÿÝ?�à6õe +endstream endobj 107 0 obj <</Filter/FlateDecode/Length 310>>stream +H‰¬’;NA†û9ÅõÚžwK@©"Rp€ˆGH ×dz“¬6J„V²çåï·½W7+ÆÝý +ŽI}„Ù›Ç77®wŒ·oÇ`ˆWÊÉ#zJRp|q¯îac‘cçÈ™“µbis€`b “¨šcªÕWì?'v³CR|¸X)cðbËwغƒkÒ¦Âì‡óÂ’xÆ—´ïiíIü `ƒ¿‰¶‹&½3éí!š(ªD”+Æ„Œ‘jÅ?g~“ì2÷¾l}6eIðõº ‘jN•)I¦¢ÝI=o÷nD¹Æù^Å€slßq{×—§óSÐ%sFvžåSO”ÖÂå|iŸ¯[újåkµª9@s“°¿¬L%X*…q +њȫ,úL%•é™§ …3Ÿó¾u¿�¡º +endstream endobj 10 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 112 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 19 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 11 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 113 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 19 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 12 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 114 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 19 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 13 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 115 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 19 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 26 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 116 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 19 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 116 0 obj <</Filter/FlateDecode/Length 311>>stream +H‰¬’=R1…{Ÿâ]`µþ‘-»eaRe˜‚d ÀLBÁõ‘íülHlyïÉo5ÞO—“ÅÍíc)§�Ùטûk‹í‡±°p!PbFÔÅeìŸÌ³¹[jåØ9îÈ ¥ÎQ9;84„œ÷b©”P°ykì‡äñjb¡T +†à4yQ‰•Ù™³øqŽmãï bñ°0‰\tøc‰¿ÊÖOU|â«ÄùDÑ;A¾¢4È Á?wþÑyß{i½¨®þ¹P®MˆT$a`ʵE�ÿmÙ˜Á%’’NçÞ)ïTÚ3[ïõíáüPtÁ:»^Oí¡Â6Hµo>]¾O×Ï<uÕ·úxŽ‰<¼T Ñ.-« +k'Ùª ±•pd*9ëS‚èäçv-{F¶Bd6í+ó%À�z™¡` +endstream endobj 115 0 obj <</Filter/FlateDecode/Length 306>>stream +H‰¬’MN1…÷9Å»@<±ó¿¥ ®*Tºà�”EAjYp}œÉt4ÐUÉqû{ÇÃã +Ãfåpw¿‚q$>BmÈÍƈóÁëÃáSC€{¡œ¢§Äçój6Z<twÔ ¬ÉšŽL,‘Õê+öï¦Å›µIp4±R†õ¬î›²¶ædšŠâUï²Ú‹£zÏø0Œö=M"ŽŒ/lþ(ÚšôN¥·K¢(\Q®#ÂŽŒ¾÷ ¢Ë{w¬>Ö¢Yu¾^w RÍ 6P Qoè¨È¯eo,'Ê5ÍqaÅÍ¥}çZ^w§øTôƒ5»^ߺ©ÂÖ½åIŸ¡[ZªÿžX*Cr“ÐçTE›`‹Ó6ı$±V{EŸ©¤2¦y +P\¦àób¦·æ[€�hûœ’ +endstream endobj 114 0 obj <</Filter/FlateDecode/Length 305>>stream +H‰¬’MN1…÷9…/0Ûùq²¥ ®*Tºà�”EAjYp}œd¦ê›8–ãïY/ïW0nV7·+p„9y°3K=“ÂùàÆõŽàðîØ{L!@´ÀÎOîÙÝm¬sìîœ0´ç È +JXŠ/°m˜zIàèbA…Á³]_Œµu'÷¥2Ça¾˜Þ#¼5ÁÃÚ%äÈð6…*½3éíÁ’0Š0ä+FCñÏsÿBt9wÇÚO-PÓe_®-ˆX4Á0·íŸ¥.sºw'Ô/uaLÆ™›§”êËé>U¦¾ïص‹ö”¦j˜êár“¤oÒÏŒåj^u@ÕcôD«„}²P0•`£d2/bkQ”:lôj[žÛ3AdR^›½uŸ�qçL +endstream endobj 113 0 obj <</Filter/FlateDecode/Length 322>>stream +H‰´“MN1…÷9Å»ÀdâØùÛRPW*]p€ +Ê¢ µ,¸>N2m§êØ8q~qœñqqµp¸»_À8›#CmöÕÆ„ãÎŒËÃîÓ88³":PÆñżš‡•FŽC'NÈ¢aºpP§2,y*HΖÂÛ÷Æ®vˆ{ŠM4voÞ4ÁÚÌ%õiNñŒÍ)TU³«6 +ãii¢¥@ø‚`…¿ ¨UÆFe¬gòÑïù†ÑCcüã~!`~‡Û×O“t\nKlIƒØܤëÃú>h)'wkŠ6•pÞ÷¤Àsl÷\=קÓútÍ<#{Æîº)Ä5J-ì¼ÿ|ï¿ŸU›jëõ{K©À§šB_Þ;Ñ,¢R²ÓB„RXÛE—'méÜN±/È.i«§ÙwX›o�‰§« +endstream endobj 112 0 obj <</Filter/FlateDecode/Length 16947>>stream +H‰ŒWËŽ]¹ Ü߯8?p%ê½d5Yä{a`0à¿OY:î¾Ý6fÓ}«ŽHQÅÇ»½?Þýö>ûûûã–ÎÙË¿Óø·ãë‡Û»þ;þwKG:r)g¯õhø—çñõ¿·?nÿø ’ïBOÞzƬÔøwÌI=_Ž|¸ŽcœÙÿÒ¹VYÇÓg×Í¿÷nǧ[[ç8î%ãçGlðûíËíÇÖûÿ}ÿ€ÿ9þÄžÝmÿñ÷¯î™ÎV±~Õ³‚Ÿ‹ |΂ý ¡.Zw.¸ç¾Î’øuž-w.®fnp6ìŽõýl£c‡œ mÁÞ|ÖÖ©¯ž6�'÷sr¿yã;,Bn�Æâî³ßn›C›±6 Ü}qÅÖim9ž`šáô¦ðŠm›0K°tt:ÁVã\yhgNal*#V+~œ¶²ˆÜ‚˜{ÏãD? +UG®V9Ñ/"Ä“6˜ÙøÛÖ4fÛ’r¸Å…mîŦl9 ,2¦O‰ƒèw(ñÞÖ†|“|ÓÑɞ懵º¿[@mP +ù"kë–7 TÛ„ªîmüÈ!’aËÃ~¿Ù‚Õo4Ã3ŸoÖO¦A… +\3]†gT“ù•—êD8þŽ¸,knâ¿BO¾¶— æ’p·‹ø5yw)‰.y? ™WKÂÊ&ÚE¼%ê;Ô¬-s–|ÎA˜–` 0ÉÀ²¤>Yˆ—¥ ’”e/a ×XË8ûô’h¾º–~÷ï’·¡Ã–2E˜Èl‚Yš¾÷½¡µ‹xʤŽÏÚ¿ïý_2¹¿ÂÏQ[0ôËÙÖkEþæÓr8C]ꔼ‰¨!ok+t‡ØÚ´ºjûÈ$æ¿0Ñ”1u”1U»Gz!¡ØŒCb›3¶Û„v,±ƒž‹!J ›ÌU¼Xk‡t•ºðî¾-‹³©ÎCÒÏûfÓ“C‡Wr¢mœ¾Û:+óç[Aaq³z–áy™µ I¥§fhb6Áÿõ¯¶sÂw+¨ÿ,€µø»ºÛ<»?é:P áe¦":©.e,hžÌ@ ö ŠåG"p¶¾6!<…ù®Hl•Ï ‡R€¸{€O¾¼l¢H¾ØE8Ì‚ðB!NG;!ië¿d™¥ÒV÷aøæœè.%^C>˲Z$Ÿe[ÝÞJ[>»@’q5ÐÖ&éÔ—í¹$ûJ¸*É:4óC^°‡4Û„ t•ì +œ°µ‰voAínºö AŒ-¯Ì½Ó†Þm,ñu¾¶C%ûq¼¼8ô‹dáu˜tœÄ>…¼B^ÞÏnm]¡<OB]í"<ö=¡áI5¼¤‡Çòý†Îzxà¡Cbû|k)R +k_|- ý(=^ÐgZ`¿@àìÌ,(ìî àÉx)UMöÈÌ‘…Ϻ{KÀ„}»µáqFìw 0aC<Xë®rœ‰yˆF!T.« " +€s|NN±Þ@(2úÄ\7‰Ow+‰v¼€5`½`ÈwÉg‰÷±ñs„Wá°_PÒ2'íÝû3Œ×ááÊ·ÇD‰4¸f¸8ù–¾6^ÒôaJ Š—Âvlº–ž>¨Œ´û™X_!Ä¢ˆtÛ=†ïÈ Ù›©špcð#öÇ~dÃטºð©vöôÌ‘ôNE|DPâdÝåUÀÐ +ˆ=6®Dufãæ;@×ÊûGAè<¯‡Þ˜œ%;Q¼Äܙʑfƒ°7V‹V* úžažiY‰!«ÕipG¶˜m*Šø\-\†‘ŒÍ!ö‚˜Þ`EÊýƒa“õ*’ÏéåïŽï>‚Y¸èÂ؉ƒgö:Þ£¥k¬Xy+|½ûY´þì¶6ôyã¨0î·°{øÉg”ÃTó‹ÏõÙgŒfÝmxû3ÆONºÿ¸ýN' c&¿*þžÇ×·/G>8ñæ#³x&¶Éª‹ˆ‡ñ=ŸÐìuÜᡵöùß·õô fe‰|ä½~°õ©ˆªØhÿ# WÛ??äÊ|öêÈɳ'CýOÌŠ,ÍnLþ@¼/yüt,ÃÈÌ™¯!>³å/èÎÇLýÒ†MÐAøߥ¢µì}D¼§ SÙ]m VîêTœ°ã-h‚Eò¦ýmË[{ ò^Ñ7Q/¡v ûÕm8œÚÁ½„Ëïù›$ž"ªðЫû«1"U¶ {èoMö59¿5YÐöUô¼ éˆ&¡#ùÐrQr@LÜ( „xâÙÓÕŽ‰V‘TdzØD6)ÞÞ‘¶\ÃE™˜SJjíÑ}&C dÎAêÆ÷ožL9*ûµ?Ûæ0®‘ïHÎìD‘}&’Ãs³EÀv/Lž¯í¬ÌôLçžj +*üÂÞlùGŠL:½Ü3jŒ—–éÆwB)ñبL÷lF˜´róZR¼¬±I\¤õ扣@íËkIo-¡²•-#©AJ[QÚ’7%\ã7_w›ò3ÆÄŒWL4=F/° «»lnÈ̼UÔöÈÐÎôW̵±-1ëbæżÀ‹AE"ËÖ5·ÈÅ\JR0=†3YL µ?Aq<ï@Ù¦W]G +«*ûgb¾kâ1…ûV1ª˜mf{ˆçDܵ•‹©¯™Í„CÜ´ÓŠcê]_0[b;ãbdj{öÁP¤`ÛY.C«Ì*—Y›h„Ì*ë§X»˜¯—NÓÕKi–T½n!ë(×’$´Ëؤó5p‡B–µÖöXYóbBG™ZsÝU™rJ/#b„Ú¡€ìZ?ÊÞ¥ëÀ>8Ó´ËL“ +ŽbÄû"æËRu–ëý½Ÿ¾â´%Çé¥1…Æ‘®³Ê#í¨´©¦5WÍ;Ò`a…uID©"£á +t$®´a2X1ñ¸CcøÄ›E{=<°‘ÖwF:äpHuszƒ@…5òÛˆzõm…ÜŠ:‹o>¦uoû\Šâ³$ÄÌS¹÷^wo¾XZ&í/Ìân.Ç®ƒYÚ¶@€M•Å Iȵd¤”gc8Že Ä´ÁY9¥,·9ÊZ‹ gÄÃAÊý² ÈÊð‰p˜’<†¯6(�„[Š÷MÆIÄMyI¼ ó…Ÿ´¾^tF2VBf6Á-з +F…E9þt»R'ºÆì +UÎsüúî2):ô6öÝ-†/ZÝšçUÓ2gœLWxIÑ(ÇeÆ;AX,îε“<!К¬ ÀÇÉ1‡’E‘E +§³H§5µk(Àx +J‹ÝgR¹ÎhÄWŽÍCÁp;|êÿûnŒg‡ê^ƒAç%d– Ý$ÑìŠý/"ÇïžÒ?±C^Ì]ÙjÄ*6Èì×óœÏ‡_"cÀ”œ²^ "зS‚ººýîéçÿžü¼î^ñˆ;o¼C4Pâºø)^B/t]c¿€IÉ•ü…A¨ã½¢£A<ã¼<O]1 V»&F¬‹Ží+úIïjÿÏw¹¤ ’ªPxž«È T~!ø\OMî {Úëo=±²î(ü EDE~üž/Ô²Vî™+±ôæå±�g¼fÐWYxf-h+®ë„œ€tŸ˜;±¬ë¼|AÐQìç1-Ìl˜Å„Ž® ¬úm¸ œõzÔ«¦·z®ÚâíÌnØñ–%mŽì_$¨©Ô¤=åT“¨&A-™ÚŠ+A/xZáÌ<vvÛ¦œb.Ù¢e}ÝX ä¢ZAoÕ»ÝÕ'šÉzNPËãèiÞÖòâÚJ€–Ô󟙀·Ñ/ G˜Oõè™NµÔ,³\í9ÕS[ÙS¼¹´PíˆØ4£¾óЂZj]ŽžÍl¬¶G˜ZÕ†H%_P£þjYû`£8A+·ˆåP´mHЬhÔÓSOMo¥q¶5|˜ÆYº#kL:º¦rÀczLäl«ñ4è鯿ÙqЃUíQ¯Ÿz¶Cžµ]´ èÙ +áÝ2Ñ–ec‹xرô&X|¸™ÔcÏͤÚ#6Çõ„ÌxÀMO¢UÛ6Ôôè’ùãU_îQ}zÄQyPO«8_=± +½±š½œ`qc%+P¸O,Ì}9«ã‚rB´Z¢Õæø7—ˆ–e«ZˆïBq€UGèYMÛxýM‡!_ B VSÔ{ZÄð7±¼v“oP‡å$ùò°à¤ž¶% Õ1Úõ B(Á‰®WJÄø7ÇåèS£®Æ¿rŽË€ÆšG‚µ`ßt4wëÉ»égä·¹[ýö·këtùðê6¿¼®Öº©¡S•?[e·æ™â-Ó-›™f-Ù2Ù²´eé•¡ñ¿Š·ì/A1ùçC¹oç›+¯”™Éõôl3ãs¾ÌVs>eÖ˲;}Æ7foÜnƒÏ‰…ùsA!€·aW#Í�þJèÖQˆíó€HµŽ$úb;öÚ§t#ö_«ü.€qm„j+¾0--s¬™Hohc&½ÛLTˆtfP‰P¬£!±i Çnö„ƒoðåÐœIkÖѾ„3i0ÎÛo6G9ÿaZÂi¹AªÒ™¦%œVµ™Hr< G@ÇÄ!ItVà9±cöŽNo[C½*ÃÂÃÐ(âôБÚL^\ÀÐh=Áfò0 +g¨ˆÓÃù»g’У!=;rÄgl®I•Á¡ímüãL$`ý8‘Ôñ‹Spä©XGC:ãD’žà9“Dg<vhºíÐôÆv=Úæ¸ÂWçà±CKçØ a–^�ï¨DDæv6Ú`¿F5쌿;"dÂÔèªYd1ø&?€õC`ZÅè9(켨Xdá«r*U#°£¯ÊÑX¯{1ÏŽ˜ +«áîšS)ôÆÑšçའÓÛ=´Ñ‹+Þ2<Ùš`«›~¶ºÖÎ!`ý8<Í8\JÇ¿*Ó· Ú<]PÔ +–¼és7™à<ÚcÑ|ñ�Ì‘GFóç)јâðËcÁí*³Úáä‰Q=ÅyHÔA_‰€ùZ?§Qú¼Ú</ªmµÃÏ„ŠÃ¨ðL¨vþl„'Xøx*ÔNgôŒã¨ð¨¾^\À‰pŸ9¸k˜8z.OâàÍžwÏŽ,‚,º¼Ò˜é'g†ƒÀšRf®È³8 +KºÌ¼NïŒ!ÎÌš[ôolç¿ +`@Å]3¤Bo;N‚Ìš[Åú96šimsÛ á‰¸¦àÈmWl„=VÝŠcà�väرirçرK2‹sµqàNäÉБµ»àÒ•YMªzfí+–Q.¨„úù/þ)‹üÒjÓ"Rå�ZLDvdÃ`U+V„7":,r�;ÒÈü`¥ió'°°’¶€£g?تm.Éñ�Œžö2/²™iP2l°2TÞÌ»{ɶœŽ/GÁf‘*¸Pd–Žò˜yÇòùTvÄTÖúŽ¸@=ôXVþC{?£Âý¦†¡d”» H¥ToG5û™H“ +ŠZæU4{ +ò˜‘$ÊÍŸq*÷c¶ÓŽ/ŽŒóíç6zq×eåCJ¹Õ#PÃÇeT¹Ñ2VM¹·²•Õ`²q(¨-Úìµ6Ým7 멨ÜXŠ›™2›Õ.Y¹9•) ³d+ª?ßXÚ,8ÌaÅYð3X?ŒPñ2Qæ³VŠ›BíÁ±‘‹®Ìv4ÉAáf¥|ejq†D®ášÕ:ÇÆUFħÌÜWÌÊÅå¨>Nín½ÑÂÅTl/µ6¢Å7ŽÚ#בJ|ɹÊwŒàJ¡Ì`±‡¬òí²ð�AMUžœ‚¦<7[Kx$Jg9S‚ë–0¥ #ï×b/9á-ZMÂRd^›E»õ#µÏ¿µÑ‹whÁ^›5áá`ï©—¾A�hƒBpsX\eXpÒ s'á®l²w˜0o +†°l&RÂË\²›ÎFV[áj&†éj+¼µ%Ü|:¯Øùë™öî¿ô+ͺWq=ý%HßéÁ;î×üæ¹ÿ|ÌdX%pò:¼¿Áƒ<]aNš£{srL8ÖL§Ó$_2Ëfþ°*_½pµÆº÷¤)¯+Ó—û•²I¿Æ\Uxc÷™ŒËÛ*(ÓrÃ}‚±ßAPë-(&0sõN:{7rP»÷¤Dâ¤[®ü +¾£ Ýg!+'»±Dwà‚téϸհEôØmº¾RP˜é̆Õõ]°Ço‚YM./ra ,‚ŽéÄõÐùý-ê×Q¢‚e5tuã¾WÀrvÍæìX#îº@nýÐß±îº`GÐoƹ`gï0MÙ1Ä•/꥟KT “iª¯§³DïH&à|7–ˆêæ].ý4‚B2sbX\ß{<&Øù¶ùH0yB=Ú_¯‹ ]vBmÓe¨a»Ñº`OØß‚,4î—‘ ½l«ï„Ú‚í‘[f[Äb襟Û-¨Á‚åר†;¥Lðæ”ê-ÈÁ‚ÚŠ5C·g,{<.H— [`sî†%âöàW7~sÊwÚã&Y¯“€^¶`GؽÝsØ ‡£ÝüD7¬AªŽO2Fý¢FLfÚe\úž(¯ ¹€{e=/¶ˆÙ=¸@.}O”W°]ª Òç‰2"6÷à‚ré§qv”² ,JŽÑ?ãRäDTæJŠa¨nßÛœ z¹ÛwÓzr¹Ö³È¬XW?ó0¶àÿa½º¿vA¿) +Ö«àÐG2*Äï¬ÆnÍxO×Y"·r±gPr3hc Úݻʥ¾wÅÔ[.Aö%1}cŽ¸#`—¾æ[p±Ô[°£¤&ø<‰‡ò‹ž#[ —ú^ô-(— bõؤ³¡Fô}悾º@/A· ß‚‹k½–‰ÅP#îu1AÙ] —à]yä[pñ®€[°³©þÇw¹$ÙãPt^«È Ø!’�I§'5pMQ»oñâ@O¢]ždä!ñðƒˆ¯'ÕùÆûær m?¿ð°}`ãÏÕæÀfqœcà ho¼’Ïåæ€í²<Ê6ð¹Ü¨Û€ï‹úîÕÉ’ –æ×àgà*Ê6ð¹Ý¨Û@û@Û>˜»ÛÝë±{Ý,bWK›ïçy¾ñĸãa`žû€íß]Ë=P·»u¹v¯¾/ê»WßØ~(Û@Û½¶ÝkݽÖôZáx1IåI%ßK²¿{'|_[r}ñ¼Ï5ù˼/&yŸãð7w÷$·7û¶žoîlÇúÆol›»ö>Y·å¶hËÎo<6oÇ{~œïÍÙ7ÞæÇÜø}˜£oó}[oCßù½›±å°÷vFÛܵ}þul¼¹Û‘Y‘ß‚1Ž-gÆÑö-ûx Ö5pœŸr\_œõS˜}=š…5à_BÛÌû«sX}ØØm¨Û€½ú5à_B{v\ÇýSâÈ-<ÖgB»ÎeûüçÂÖs¿:Яz}¸ ¯o²ëoÍ¿l×ùVW±_Õ®Ÿ\G[ãˆýêªÈ®ÿOíè¼~¹ªöÅ/ÃÓãÿ+÷/è3ÈzX>øM?×ì�åd4¨‰XV_[‹ÓV“g@“ÏI4m„鉗«îW%dÙ"ªüòXñ=Ù¿~¡vƒLsÓ—n,âH.Eî*êAÛ/¿#,Ãå¸jnW·4E"Xk7?ɯÃìj=‚Ÿ ¨‰ÒKe¥_”?,_ÿ®IO·š‹}ŽÔ¡ëø¸ùÇâɺúdz²bú€üœøé +ñÄQWH'ŽØù"ðKœø:ÁÕ¦ =V-Üðp׬ý–[œzÓ섪(}Æí—tºæþÂÿvj’k0ÅZØ—ëƒÍßë²M[‡®<)ðʶŒP¼.,cPÇùÂ妟šdåZ4ËJ:‘|'%n¥ä;)ÚéMº#Ÿ7…-§Yt§EØ9±Â<x!…Ûý¦°M¯Šð&.Â7>@ÁŽrSXÀ¡`º–Á! eäJ +v#á ØDÅ:Ó©‚¸Ä0vÙÏ3nlX‘]ŠQˆç,7?)²3î¶ÏµëÊsïslåUô!ÔÒo^D�JÏ'…-1(xš}˜ )4ªÖvó"ƒÊFa›!h’h»bGÓ{'Úvã‚ò["Ø–¶ +ÅïÒ²ŠÂ÷Þ°e£’¯Úæ‹2¢Í…ÖßýáÑ'–xQ3¸/Ò¨ŠŠwWDÜŠç‘ÙÕsiÙb,å©dk7¼’ÝðJ^uIH%YzÓo©Ó½Å£ª<úÅOR„<ùEa›+i]Ž¬é‚©éyº\ÀNª˜W ~â²êJ3 |T‚=o\P^„ÇJ¬7+„3CÐýÒõÊýž‚&‰@ÒWéM:ÂX)W]RÈ¢¾F±ê%c;rÖ5Ë®%| +Þ‘ºF±ê’ºvŒ¥Ç6ßü:õF}ê¾Féh]£\ui]KÖµÔ�úª–y¯Nª!g]Z×RŽ8ÚVÓë:Ú–2 ék™®4V-sGsþËÿ~žØMX±²I—Ò5ÒÚON‹Äv5Cù‹:„Ò\ÙÚÈrWo”«LN‹VΧ" Í“ˆ`rZ–¿U|$½O)ï“hmÞ¼è„-¡O‚õtª9|ªkTkD‹ ,^DRôF¹v4¼!. Ï’†7ªµ‚íD o=ê±u¿)ls%Mâ³+Z¾¼-ä’íFMv j¸ì‘ã +í’íF…N"d¦!W®Ìm#cP¸#cÀ4CXshgqÑ¢W;C¯œ_-zå’ôp‰Â·3ý(¾3½XEo(’«·lHR£ÓlH’ÛZÉè ]ͤ!Bn‡«fÓkõ›Â6½j§*"™*-¢µ’<4É…¶.Â#õÆø4uUC”’ð؈öfE[2E‹(q¶™®*1V“¦ˆêÀ”ô¹i)Dg@Á±JUñQ\5%5¡Fûc©Yê®Õ¥-¦øT‰±ÌH•KÁ*D›šU ÄF +Áæ!¨ÆXƧæÚn[BHÍ*Šï&AzKbU;m|R¸JŠ¥DÑ0[ŠÒU(~ˆÙ‹ +…ñÝàêŠ-•'~ Ù©A…vⵡJ¦Ra¨©c6„ÇNÃö¼ùIŠgÜ Ó‘n*¤~Ë›'¦øT³mÈÎNܺcSñ!5¦ÂatI6‰á1• +CxL¥Â¦ß¶ƒÂ¥Q2CxÉ6Q¢B¦Za´IÆ·¡J¦¯C–LÅÂ!£X<¹ëz‚îyÞ´lskÊQ(S©pÉ(N£d=lßÄ2ôûŽB™ŠƒÓ(™šN/é%ž±£J¦âð¤5ËJ*½Ž~˜¤ÏkÎÅBìRÁuÄ?×$›1-ƒ¬ìê’¸ Ö¹YN„$.ÙvDÁ$ÛŽ˜dÛc‹7äˆÀÒbB’6;ÙlÒfÏ@›?¬ òÙ¨Û’lQ“6»§W;«'¦~ó“tFt.Æ×€#&9¾'uÖ©tøžº 5Þ‰]#ÎÞÓ©ŽŒfŤ¿žªP!'u`Ð;¡©0µæžª–Ú3±h}=Së9÷õ«XqUü/ÖžI£EË'®ðCØ»Ú|ÁÜé2e%5´ìhR¥N6¬æF¶Ô즆v'ƒ¶„ •êÔè&UâJ2ôÀ®o¯ ¹Q˜âS2Ô©ÑM l'2ôd +ɲúÕ‹xÓM™ÝyQâÖ=gã§tÊM²ßypM²ÕyRü픡Åú-…¨):O¬)G{Ïuã§Ìŵý„!G¦ä픡¦äí#msÑ?IÑðlÉÛug3ØùØ);‹µË|ÊŽ‘OC 0¸ˆJñ¥„V}˜ Ä°ª¼Ä¯ò:ò·x¹9Qr½ƒñ½¨y™ß¯$:›*Xÿõ^ÿí¸¾sþùë›_×x Ôãûa«¹Ôk_u%…_«ázßìû\’ya4¯ÍX>¯—ùç«Ž-4°òëÖîm~› óÎVŸvá8#¶Õc.AºäÅý¼~Ä@ZtÙw¼$XÈjmæïs€ Îjiö"öf%``ŸFÌáØ‹¥+ÌÙŽõc b«Dã±·ƒvÅÚ'Ë Î¦ȮÇ<ьʹ¾YÎzõjØ,’máâ’&;ë£Üñ󼘩½ö¼–±æµHa·~Ÿêâò ûÿy/Ê °¹³Ä<¤{æ Ö-b5ε\q0¦<’Îíáì8!p€y6ËÇ‹~âϘgùî\\צ’'äY<„;bžîfÌ7ðŒcî5ÿ +–“mÖ˜žZä©óØzµ4ÿüëf>Ò]ÂHg±çÁ‰ÕÜä=0¿þŒ˜ç®ãxû=BïXË3q¶âÆj‘䎀õLÛÏÀøúÖ1‡#ÔJ(‘U\“&._¿C»sœy„šû,¸ò<ó2î!çà¾#æé-î¤p¦ÿç»Ì’\¹a xŸÀÁ}¹“¿áÛ{šU‰¥™÷§DCvè®<E§æ/†ƒëgܸ;œO®’wZÍAŽ(ðw8Ž yè¬ÏÝÁ&$ÌÀýÛp°ü†r_Îqœ4$2–Ð÷oùWž/Çc˜ÚÎðúº‚[wÖËæþ0¸3›Ê¹øÛùÎj7Í‹/ŸÈ«á`ù åî¦?–vã;t˜¼—ñvnº‚_ñ_=÷ò[Q¼øVæ…Åý²5®èÝÿºP™¢ƒÍA§¶•ºœ¡ûþùÎrHa+™wÔf&Î +65ï´\JÔ2˜©âüUð êàn1Õ{š{ÁLÊÓ½`&Ãüë'ÌǽúzŸjMu™NÕª[ôäJ¯¾ÃŸ°àîBèʯÅЕ^ÝÀgé¸Rg+γv—¥L=ï7jáî:èBÿÀ(w+çÂÿ‘¡…á`ý ý/X•9uÊœÜ*™‡Au¯ý7´;á”,tÞÝZˆE./†ƒóGlx;Q ´Õ bª—UÈïnµP¦Ö\oî ÃÙjÙŽîS<ŽÎî—³xd˜j@»{w}ë¹èÔ°LȯrñÀ0Õ0>Ð[¡-OSm¡x¼ 4¹ˆáŒóò~à +´;Ñ´×A¬)$y"uŸ÷ÉÙsñÔZ‹çTš½Ú»ÞÏzê€É¤*åÜ` +ºÑEA5Ÿèÿ³ w™Þ¬Èä¤ µ»ìr÷¥?õIQ¸‡Õ¾Š'†ÉÌ_¸*Õpþ€Ç={ÊžjH™wYý'{n˜4œ¼[}¾£Ý]5¤¼¶… +æºdÇ®h+e\kfã9àì¡zÑ›²e³Ôœ²U²Ô‹²Uò Ý› *‚U²’ræÏä8v~BB“åa8H,•Ä*Y$ú͇œg6ÉÙ"YYeèãFGÊTÅ*Yú^ËPíåÞœ˜¾×²?6—šl¶dßc¯†ƒ-ð¿óÜÍdis¾ý—¾²²¯¢ÅwRö…°Š%š}G¯¯ûñÃppÝÈ‚VUöt³”»E¹Ì•ÂÂÚÜMžtM3{ÒYjš9õ‰DfVäRSýFU9åÀãž6áNÙÓ&Øö@»»ìêªi× ¶qÏaxÐzÕÍ“ksYU“M¨TM6yêÐšmÓꈶ¹0 Ѷ®çóÆhw©0ˆVŸ£œI³ +*Uÿ@BSD«Øž�—>Gªì$:‚o:“pBXúÞLÅÚ×ÿ¢e¿¶ßÐîÞŒZzò÷ÆÒ‡_BWôì„®ÔÓ¿QE,=ÐîÞ¬zz*ÓÞ‘ ->!B5õôfxW‘¤ÖF’êá ÕÑ´Ó7?„ +AGš¾ë§ /ÎäÏ@bQT¨ŽŸ"؃þyJRÿÞ{…á IM!9-ÜYy?÷Öc¯ã¾¼Ø£G þÄž[ólv÷¾å}!{üôVW·û‹áàøÉomÝ_IÏ•ñEþÐY›Ð›¾n åí)l}M†i7Ÿ¨é?[…¦ÝlíUmêÞ\÷ýµ|c¼ÝœôÐÜN:r'R³ÃÁzc1V܃²@wÒ™bq&Väc8H,U¥Ô@¹g–[®jža¸P©åèÿ{}¥š½÷l²³Y‰Zs3PÞ–àÎJ<I‰'B‘xÊaxðÖöÚ3 5…-Ðî.[^z^nÌr_„;E[ˆü:”ŒwÃÁú3Üͧ*k²v²¸«²fÃÛó·§r,ç×a¹‘=†ƒü_™èÿ»2Úœÿ[•‰½+‰w«*L7ö@»;XÕâPʼɻ±¸¯‹Õz²šŽ¼•@ÿ߇Z•x»È_lÊÉWÕÉkkè!ø¦º xÐy£ø¦º ø¦2 ÷Æꥇá`½‘`œxÉaxû ©JÈ¿Q.€¦²e‚©.ܺd¢«.9_è&¼Ù7‚¶Â…ÐU®ƒÎëÃ…ÐUôßO]&’ï®ËÜ+oø¯ž»2ýd>m_B¯îä…ÎN§ÛæƒrF¤£èy¿Ñ5wïdh§3ÿ†r„;e›Hxhk(v°s4;¦ž×K ÝÍ*C'ÖÎ@y£a-†„M ²¯CMU _Åí{OŠÒVΉKQ÷TÑ÷TxHMгf²I7‰ÅΑ·f¶‰¾§j„ž'EAÑSE«¡îðFßZ5kÀ›¨™‰íÕp°Ü˜ßÜ‘·¼‰š5àMäË€7‘¯&º? ÜQ¬&¼I‹>‰z,Þð¨»Õ?°½»³ZÕsÓÙù +r•ä«»dЊ@b Ü[k +M¾Õ× äïDQ;Ãá8¯vÖ³úý3ŸŸvy~ë»á‹Nr/¸åî*Õ‘xÖWɃ5ÐîÅÕê|~¾`¼;ÑTªN,U¦kâÞÂp°ÞHhJ׃jÄRåš÷Bžß|¨_ä¸9œKšT¢ê@™šÔ†ƒãFBQ”ZÃpФçm*,>5{ŒÂÞ”gv4¿ >&¼~(ùeÐÀ7Ò +”wb1m-µ™ o¤†u¼Ç¹o‚Óì{ÜH¨…»ë¢é°ïrc”ûrf'±¾æEÅ°ØWÃA‡Ò°øŠvw0 ‹}îÓbŸ# Ö…-Ðî„zž/D¾Ì’kÖìÈWÃdG“wWÃdçmŒðîК%;ZnT1¼U6ÄúÀZÅ=‡áàEXì¤Í0Ä]ElN£ñr!Xš˜ßÜ‘¨FMî]œGçøà –øŸž{u ƒ=;•®åÐgç¼³SÑlø-ÐîN¥ë¼‰¥#àÎq'—ë|Ñ3Øíî\ýjôìÇ·mç¥I³!gpÚ½ßωT…„j¸DÎ Á\Ƥ5§¶åªiNm(˜Á³†ƒùÆ7o9µ¡gÍ© 3§†A‹Íò3Ù×x*ܯæÔFCcNmˆWƒéÖww§¥9µ!XÍ© ¹2¨¾~ÂþînVQh™"Z"³á«áàü íÎjʬºj%ûâ])~94:6Zæ'ÚÝ;_Jý‚.Úâˆ^"gÍ¡¯(÷ìå¶ÚsC¯zY‚tà9H¦kNm¨ôÆ7L?ÖØÚèÇš[_Qî¯O+zÕÔZi¿L½jjý@›¸—04"UäÊÔZéÇšj+êû»»jšõTEËšÕª»oN~wªÕš5ÀÖ9C»wªž£ª4ƒì}=ûF"ûM«VdÖ}Z;ÿVUÜ2«ïò/>oNõ=”5tV¬YSgµ +2Sgm%B2ñeM•Ì4vV03v¾ÖŸ‘×á›*d¢Ä™p¾/†ƒýÆöîî\T@UÊ+PÎÙ‰iân¿=ÐîÞ¹&âšY]U²>”{Z÷sPUL3Ðî>⯄uÆÆS¦²÷+ðü»lö¾ôÜuÑ\v ´» UóE€\-Ь¸X€YpA~Àe±²ûå>ùÿyYÊ`u¥á>“™#‹ÇÇð^P“$o‡&Å‚J˜‹{jÖ¤XÍ'Úh]Ï]&MŠ•0)–ºîçoHlŽ¬ö0$¥îº4Nì›â>QÞ¨FG%ÿó].Ù’¤8×*rqœŸ€õÔ¤¯§½þvdf"³zÇ/’øBÑp„º#ªZ3Ÿ±Õàø/gÝ"”¸Y·mÖiÚCÝÙ…˜YJá®[„7ë–µíáSvô@ô=Lº%(iß)åƒÿ@5úòJ¨I“ž +‘IÙÝøÒŸ Â~»klLToC èKô³Lüãµql„·nÊƤû#äö«,<Iõ"8ë6Ѭëƒ2éRQx68æˆér×õêØ]Ô”IoN×îl¡^aÞHw0:ÓDâ:†öPYe`oäÀ*P“n +ØÄ*0¡^MzsT¡&( +Øý/㣚æU¤KüQƒêìQ‘‚êëQ‘¢êëlpLÑ¿ +Ôcþ·Èq±:®í¡2ó¯ß!GG +±‡²Ü؈ò>kDŽó¹§Ý°°Nbv"sÊSm78¶Cºs%¨ÌÍÛWÆFx†í»Ñ6Ò½F»V‚ÝfWòP˜™¯ÝCée”}•¶‘¤]Ms7 üQwkVŸÉš!»ßgN-û6¯†²~ÐÀÙºä?“åõFv‡Šf5´ÝðÿÐäžwÃBSïÈ̓îf»áÂÿ®Ùcu–J‘Zë—º}IŸ~\/r¦žU>³mB_ÒcAgá]ǶÒÝ¢;ç]°«<”¢Mý2ÎD’(XT”.Ÿ¡#®Üµ³á Îgùb þÓ‰¾‚™ƒIÆ/ä‹) ôѸ1£÷Ý€xiÀoø‹œKÃäåÑ¥ˆ¦áuæþȽX#j6]ñ›®Sö³QáX»™òº¹þVótöI}:KŒÇq5pi¾ÄsD;ïãÛðƒÎÍ·ìEî¹ÿE. ÏÙjØŒp5À]ÛLâT𾆴-‰ð…Ë.•OçÊ׸r·W?3/fb–sÚ >”ñßEyÏ3ÚXˆÜÕ³Áã3å_W ›>åN[™N»÷¢¹„žš;Ù'=žÒÞ8ÇÇËüOLíÓ ]›øbi¾Ë ÂJéc¯`þóF?˜~ÊŸæ;÷6ÔUƤú¾Ú¯aBDomikúX ¬¾S^ Å·ÿg5Œ¥ÃÄr¤¡âyû®«bˆƒ¿ñ‰±¸²ÞÉÌ·‚úµ:1wÝßµÌÕŃ“ëŸ +¹½ þW¶Z™œ÷ï ëmé¾sŽ0¯ót- õ÷m`øJjoCeøZÿ‹KiÍ;_Òa¼yÿ.-Ç +,ÄÜÓ7CÃøubRt–íΆªÙutX¿®Ó‹ÆÕËøâÐpõñ†Äq6h¹5yƒ»U±›£g¢ÏoÈÈÄùN‚ç>×ÉW›i`k¾7swE1Ó}…ÿõÏ_ϯgöó>åóýüñÏ÷yߟcæoë+}¾cìÏoký¶¾¦ÏãëøüŽûÒþüŽûæðý¹ÂüÃôñ®æÁU|Vy,Ï¥Z}Ï£}¥~§'ßõûŽötø¯§|Ÿíc}û×ôI-Ñ=ø‹�òù¥•*Àˆ«éâË~c½xF^ŠÜÎÉ,Å4âÔzŽ±½G—}\ök*3ŸƒÍÈ@Cg‘Gz xDN—=]öÝC¤Î=†»xFÖq¡·Z±ï¾ë#Vg·yDÖÙmÞý9Y ÇÒÙ)¶[äqÙG9{5c+ûžIŒXåæ¸<Ûß)ª¡ïò\±©\<.žgo™#5P¡omclIßöqö¦“Õû®3ƶ|1×é[Yš"ôeYŒXíæyF÷�)vÕ-†Ž9’÷Qtê¤&BWcŠ;ëÅvFÏh„¾êSBl}ÆÅË›ýÕ;(‹ÐWêbÄæ|q9£s d±¯’blɧw ±JÜ“±UˆÐßØÄN㤫§Vbh¡T‹Ï´Z" ’‚·R8tô×c\ŸJ͈ª=Q%I±ótž!t–J‘(´=ùbú{sã› ê"ï«Q2‰iº¥›j ‹±9†æt:çÐ_T:ň¥b¾lb§hľø–ìX + +so”“¨‹K%fÉÖBlk,Æ2ûìX+§·±§j"ÆŽÓ*‘‘jôíÛã„P‰ŒÄ)0«5É:Å‹"ä:¯P‰Î½íüæ«•˜³ì1ñ¸‹ÆIW(ë“š,8ÇPNŸ)ɘ°S’IrdL`¢cK‰±¥žÞL`Ð$F&!«YŒXÉÞ5ÄJŒŠm)ÆòJù¯Q›„F@ ‘Æm„§aTá³ÓÖOÀŽdæëEŒ!(JÜqãk)ê1vœÆQÙå:ã0¬˜èÍć‡Êf!– +•ušÁ·³zÊܱN»S¡HY +ÍÌ/)13¿t&EzS¢¢;vžVfH›ù¤³êÊÌ'"…®;3&‰ïïŽe¾Ü±)î@gEFª„²@“±j—ïîôÓYâ5P!T¦Õèk»'#Ã["î .B,sif +é2¼µx’]±#XçI41ct}™£K¸îÖ%Mïað=μõCb¤Õ!’ú¬á(½A)úï ãúiÃB ™A^ÁÁ<Yx3¥¼ÇI%†–Œ´fPÑ·«Ñ·îž0¥ZOo&Q7X œ¥µÈѵíŽ0eˆ™>$ ” +•±jÑ·1 +Šý”§¨ŠÚ‚µÑwœF–"bríbL‰Y‡rAŽ¡³+çÛA&rßɺÖÉ¿*8ë)½ò>M –VÒ |óiÌ‘êåº;úÏÓ›ú€B@$õK[;Á¢ã8mó�fÖÊë2™M+oÚd1 +·I!“Zm)9Õª"úZ°ö@3úW–¢r¹1fÏ¿I¸«Lx‚,B(e-kÔ/߬:p¥Èe¬ìòÝaöÌ×8’IU‹š±Ú%Z{ qø~ûLï¿P’Šhù½\ƒµ²èËD¿ä’Tmâøƒ¾xõw))7/vâ,&¨‰+aÓÚÍè+mÃÊX„ù6¹v"fÄM¢® %ÄQ×ËeQd"úŽÓjRteê–•ƒdPÑ·ë8©GW¦uK Räkb§hFßq©x©rb'4¢/õß*O…7 á$xD]Äجó <_�Ú¨ùf &¢¯ë4£oJ§•UQë *¢oVÔ£/k¡æ·%ÎÞUnyˆ†íK¬X0æy‚6Cõo.ÆÄ j"„Rã–ËŽ]b‰ªUB©cË +§wÀŽ¨¿DZa(ÕjÞó¤‘b,åjÖ¨ŠèÛƒuœ4£+µkPËQÑ·k4ƒ/ûñcËÌÞ¿<©dY-и|ÉÖyRÀ•Õ¾Œ5]¾\Ê€uš"øjXs Ô._Ž3ýº¾|"0A¦ùîâÍk§vš"Ê&SËÝE•©e‘]¾=XÇŸˆºÉLÑÝE•)tQ½|[°Úÿø.—är^Å'x!üÞÉ뉘Û?5²JnÊòì:�ÁO¤œîm‚™]Uµ LqúªímU:G'ötçhȺ¨§ë'))£-0Ý9Ú¶®Åájû™:ÌMa’o?¬ó }újØlª('U“\ÛaQºGU—ëåjs*P—(nn3‘ªoe'‡ÞL«BÝD¬ÞLK'kh¬ìÀÐã{eß„úq©B/è5¾~Ó4àªfµ±4Þ|ËŠ¾Ñ2á»îF×&%±¼: —õÕ‹z¡©Îd“4ó*ê?q±njHÓxó7+q|ªÿä×Ô€²ŽýtdÀ]0®;®zIluBS¿íŠó<h›ˆw£zÑ$[ص™“ÆAëÍwߪ¯Å„kœÖ~jïöÝffj%ò\jÎ#ÒHj°¦ßzÄ4í;û¦©Ë7kÁÙh}MÄÑoåÁRÐo/š&"Íõë-¾ô¢»Ô!Ë»§™šx\ü¤þÐH +SÆöG;¬ý3ÉwÞÇ°¥œ®Ew¬qP3ÉwÖu' £U뵘“êAñæÛ«’Lh›ðbþ†UbžóñEˤØ}XÒ0ÚŽUsR;ˆ$Å®KHAR;ûªóÄ60ÍW`f"y\äÿÅ“¦†eÕÔtÅ’q^L¬š° !`þo\4LĪ m=i¾ŠL‰'â‹š ÏÇË÷ÖH©ÙP×™ª‰Xu]ÅØîÐrœwÛ¾úJÜ¡Ž«kÔÞ|ûaUÆ ®QÍÌRíWçqÐ2)Võ抎v@1áÚâ°öƒT_·ï‹“ÖAûôUsʪî4©øaßifª/s‚t˜P3:úa=iœ¾:¤+¡ã3r)¦z*$ËÔ±öäox›/RE‡ÂD¬ÚÊÖþ™ä‹ˆ1°î;©±B2Mµ–')ç´ï0';)PÛiªÑBÛiªÑbá,!6´MĪ›žL¬º •tz (¡i'ðr!:Ô«¡3²Uh˜:넯Bs›Lµ’©›äÚ?[“4ŽÛcÉšâ/P¹ÂKëÒ5ìÒÊt]ÄK×Joæxcù3šä7!WG,Éßµq–äï”%ýû„–‰Øn$TÐsÕ—À¤¶C—™Ø—9(A*º^Éèryî—QÿâaNbò#Wdé5,³®“‘y·¶ÙÈ’¶$ŸjŠŽŸÊ³yQ^œ„ä3 m"¶ •â3›|ëø4i îÐeNÚŸ _Ÿ²j9&“ÓrÌaßyXEZ&ùî»UkÅßìÖÙê¿Ùųõ¤ñæ«<>ËAhdWm}7›ÿ8®ú5æu¯b"r…ùZÿ÷Ð+öjå'é^¾Þ/OÒºñóäf$T¯®ë¸HÖ€¦I¡ó°®ƒ”¦ÉWëvµÉEqšñ«rpÒüLòUž‘V›IÕOùj¥öÔ\õÚ»ž_O Ò¬&BµT¶ž¤4۾Ü´îÄÊY{S~×ßßòÊ)Ö‡—èÄbÎ9n´úÈt…ªE+vcb»1! É&¡‹r1¡CÞÃÜßX©RÜ<p.JÅ +Û ©[Pûe=)Þ|•‡ ¢® n/Êïò ä×À‚q´Lòeè—g}ûk‘γreÕȱ*\C[¥v¨u+ÇL b9dLR7Ô7&–³¤¶w¼CÎ^½Ô4ùº˜@SçU‰óbþ€jËvª›’ïnb,þˆ.ÎØàªmüÁü„Öž……ZµgÏ'å¥YŽjŠ¡ºBë=²®à°|uÕuã“þÅJ#Ï¢Ð|MT<†FÒŒ5þÐ?XUóĺoÔøË»V5Gj0êjã½îļªo¨:s:ë2ùIœSui‡7=·F“hk@D.ûÔ¤ÖXL@-€Ù,µcS_,µc“2‹¢x®Ô[í×¹Õ.þ†ÃœÄl¸¸ºDñ-×uHúšë¼e*§rgwÅ#gÎÅ¡/$’ò/NêP@jÝæŒÌ Jæ´ø‹¤öÜGáót<4V*<J=HU¨a†ª +5Ì`³Ý˜:#g?UUB#MÕ(› @Ý$×yX)·¥Lú/Œ¦{hªü¦£PÁY1˼“\Õ¥³3¡UœÇA̳MÇn3±¼íó4yû!zª²¤Š·ó¿aÄ`Ë.ž‰<ÞÀ« ÕìÙ±«0‘šút P-Ï»àÂQ…pJâ%%f8-8 8_ ’Ä7Nj¦<¹ƒ<T«E‚¿8ÕÂ/Dý|\œElÓõNã ¸ÕM~×m ºµÌ[’ò²Ûê'úwcb¥"ï¼]4RžN[íäÇÛ–¨’|³fê¯óç;'ÖÚ?H5!®ø2ÆMbAÚ~ú+aK¡e»~ ãùÄÏZ‹›9‰j®½q£Ô&ßb<à_lTwMí"ª«ääEu‘ÆYŸ¬Ú&|k¹[«²,HY¶}‡ùÍ7_ò0Qþg (EžR:r.f¤@19ÊOPöÄ6 …Hüø˜d²F/$’—Z»VôIÜš¥(E¾]KZØß)®mxñ2_ĆÈþ"äí]#±!.þ/’/5õußI‹Øµ¨… qñR ˾ݜ¤,Ú&|ãnü�Ã~U˜@‚Q ‹©5óöéËS¼ ¤mqË0š}_ü7YÚ¶Íue¡ú®,––§ÚŨŸ¾\‘mR!¯Ò6S誽¿Tï³!+wQ[YSU3˜¨IîªÖXãë¡èRMê…•W%U%Ùvíæ¤ñ™äKŒqÿ&ÅÖn¯:ewùú@°«}‡9I)RMÕº-ŸZc7Œõ3ÉW±ˆÙk#—Za[Ú¾Aö<O5ÊFK5†I9¬Ö uú¦”ÊsXß™¾?¬ëÓ?ükõÞô^O™õ׋ôη^ÔzÁ%ÕKÇ{ß©h é´içò{Ñ„Â$_åYXçAÊ¢YG5þ†òæI–Š‘•‰r˜]$×uX÷'RïWVçÞŽP’€”ÅÒ§‹û曯ò gSäka—F}Y•u¾¾]#m-"OèÎí=bÜph&Po +ïœVeCyó$#w¨;M¸l»¯ñwÕ¾4Õnªåõиn{Ó¼›š•«úFùj’¼-{¬©;9˜Gª¯×¦æì_¿aœŽ¤`/5õH½é—Bã|í4gS§"t«Í$_¥iXçAÊâ˜PRÊa×fNRÔâDí~ +Ü8iß©®MiÐR‘Cé¸l;×ã´}Ñ2á«HäR›(`X®Nê7_¥AL‘Kmë§@¾<.f*jbS3ÉW#!¦šx ×4à:Ëa!Þ¬&ù’†Qù3bZ®¹Í¹oò¿˜©mQæìÚK±gj_ë¾S1àª}³c„ð~Ætm–ÕþOw¹äHnAt¯SÔ\#?In§íåÀè•`xìEÀg1€oo‘/B–jºÑ‹®¥˜*¨WãBJ©Ykñ4EÒÁµIŧH,Ø–¢SÞTMŠUú–t°-EZ±m)R‹¯’UŠ$N¥H)&rØ·èÑĶAØ–"ÝôäP¥dBz6ML¯{^R¾¥d%e`Å@¨f‹S).H¤ØæØjž¤$Aç¿Í¡dD)ú=»¨6#¥žT.Ä«‡…n +€a¡“ºúáB)ƒ'¥•§X¥aXÑÎ$ð°š +d4×Á¤Õ©@¤5ó;Ô¯±<s謴;çp©ü9xRºõműdÝô-[sÅ…Õíq릅Wó…hÜF«"fŽãŠ–ý&%W|UEÉ‘áqÄj™¤ÒQkÅ;Õ´]HiÜvJæIåBÔn'US3ORf’ „f¥a9]H± Š¬®IV¼Så=ˆeí*Ž¬âž*š¬¸¥*™%U{hT5ðD¯_¢7‰-¹sÉ-Ñk©|¾H¯&¬JzɱY¯ž*ešÐnn·6–ÂÏU‰-³Ç[¶$·L§’×DlWæ ±ák¯&ÅŠÛí +ÓŒÍ1„dY�F]têÖ´âƒîAkgÒ(Î0$KœaH”ECÉ/›²RƒDjgÒ%V,¶~& ³h!1îÇᬵhUÒ4±’ž*½,+•béBª´¥¾ª5R"N «S1f‘7·J{š¶´§¤¼)ëQPVšàj»P7[Î¥KœY%é-æI$Õ!P$I‚)Ô"¼÷l°÷:‚H¾‘«,L¨ö3é’·^‚Åý…ŒK—f´â•˜At±Ì2Äü)”4¬#-7† µÚT†^Ž8Î8àû¼Ø)ߨg#Mk*®Ie˜½ÓÕó5U§bñz S[ìAßyð$ªÁÏ5)Îf¯Iqø;m¸ö8ˆP½1pÏ”MŠUÚ–qpš² \“�1pM¯IÓs¬ÒÐ7¯I-:S„=\ã%¸6Né6È#@¨…k|Å®!Ì°/;ñ$%e¹›ˆ-ÊÃJº* +Çó$ôµ&ÅöóÕª,Œqú«¡N„Üç‘ažD +Ü]Cšã`'q΃~R2’È&Å*#BóØßé�B›Ò0ƒH±JÚŠghÓçÕAoI1eÅVª£^Ç8 NÏžþ91è™òS,9 Àu´¶?'ž¤¬ñDŠUžÆÕ¸C°ÿ1SB~ç7aR¶¨Kø¢.%d·%-à‹ž©_c¥\S—2ðE]JÈ´€/êÒÂyRN¨K&µæüÏ'¢iC:îzÜ‹¡®óó¹S +uåûª§mx€ôñœNæ7˜*ÆŠƒè¨p'=¼Sþx"ÏÛ jà-wáAÙðï¼ÈçƒîijÌ×ä †Ý\¯™ú´á;}ŸWµªmc£÷ˆ•µn´š´QMÝ<p…ótÍ÷„sZÍw«Î[ñ±Gî•{ßOŽ½¢í^ÆD‹¿FbBÞ÷kõß—¿–¯ËëòË——Ûòé×—Û§//ÛçŸwz]þYÖÛ–ø¦òÿŸüãÛËo·¿—í6þ¾ý¹lk_çëôãÿÞÖcÍ{)cØmíûs;ïÙÖÖïeœà%Å~·—îy?Av7pÏ»¦÷°¯Tôºü'À�ž\ŠÐ +endstream endobj 5 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 117 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 18 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 6 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 118 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 18 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 7 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 119 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 18 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 8 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 120 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 18 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 9 0 obj <</ArtBox[0.0 0.0 133.644 133.644]/BleedBox[0.0 0.0 133.644 133.644]/Contents 121 0 R/CropBox[0.0 0.0 133.644 133.644]/LastModified(D:20190524130153+02'00')/MediaBox[0.0 0.0 133.644 133.644]/Parent 18 0 R/PieceInfo<</Illustrator 62 0 R>>/Resources<</ExtGState<</GS0 63 0 R>>/Properties<</MC0 14 0 R/MC1 16 0 R/MC2 15 0 R>>>>/TrimBox[0.0 0.0 133.644 133.644]/Type/Page>> endobj 121 0 obj <</Filter/FlateDecode/Length 314>>stream +H‰´“KN1†÷9…/0Ûy8Ù2 ®F¨tÁ*(@jYp}œL§Ò ±qžþþ?NÒßÐÁÍí�Ž0'³Ô˜;ׯ6»G@ÀÞc +¢5œáðäžÝÝh™ýÄᙓ糆Æ�EËVÂR|í[c×Ø%W*tžûbk·wgé¹í掙x„wÓaV.!G†O0ÂßÔ…jcc6ÖKÂ(¬¯ Ñ5Æ?žá–g¸–¸¼5?V_®K±h‚.`nÖíÈ·fë:N¨%žæ…wJFT÷MÝãü1é‚u"NzÓŽÔ µ¬Ë×'ÓëûY¹Ö°ž%)hÕ°‹ +&ÌJ&«Cl9¶-£-G¯ö7rÛç1H€LŠÁëâ?¬Ý—��¯-¨ +endstream endobj 120 0 obj <</Filter/FlateDecode/Length 319>>stream +H‰´“=N1…{Ÿâ]À³ÿ»% T +)8@ÄOH ×gÆ»6¤${¼ö|ïyf=Ü®0lVW×+G5ÈX½Ž¹àød†õÎáéÝ88p”cD’‰+ŽæÑÜl$s9<s|hJˆc,œBì=Š£ÖdkÿÚÑ:ÚìñbR£XÂgáoÍÁ|)ϳñp7‘ä¤b)ª°Æwk“%`| bƒ?é놺؉‹í‚À>SòÜP/a;ã¯ðË;\Jœ7¦ˆNí²4‰ZÉ°QšªÖ¥¹þÛ´7–3•–Nß=SÌœ;-žœâigÊ;à £ä¸tS†ëìò÷óãï÷³r³–QïÏÑUb†/*!÷.ŠJ'ÕI%RO‘S™ªô¦PämÔ~.PôÕŠ¡,ÞÃÖ| +0�’T¨ + +endstream endobj 119 0 obj <</Filter/FlateDecode/Length 321>>stream +H‰´“=N1…{Ÿâ]À^íñOË‚REhIÁ"E@J(¸>c;Y6¤$šñÏÎ|ïyÖîGëÑâæv„²&G‰ÙÕŽ;5¬6»weaAÞ›XÊ8>©gu·–Ê¡sèÌ)9¡„"Ñv΄Æ@2ä(!IBñÛ×Æ®QG‡½âb´'™¾ˆÀ¤êKú<êóDL<âM4¹iräª)܇•Š†˜ð€5þf ~¨66bcZ ÈEÃÎò£!tcüã~a`y†k‰Ë_“Ä´Æ—ëÖ°))B“›u¹ îÛ°Uš¢I…ç}G›KûÊÖ¼>=퟊.X3±ëõ¥=UØ©m]Þ>×oßÏzMµ‡õðÄQä9À¥ª!?ÞÙ 2A¬d+}àV#ilB=û$o#·<o‚È6™àÓâ=LêS€�Ëá¨+ +endstream endobj 118 0 obj <</Filter/FlateDecode/Length 322>>stream +H‰´SANÄ0¼çþ@Ý8NâäJA{ªPÙXÁr�¤]|'i—®z$.N¬Ø3ãIÒßЃ…›ÛŒÅ4&Wb8M¿Û[8~ˆ£÷t¡ç'ólîFíì-89%E°Jl8'Ф`€ 9Ê Z–9Ãáb—ØE¯&dè˜tû¢“9™oêeí–Šx„wå“'ÃÃÎD$•ð Fø›€rPdìUÆ´‚ 18õ m0*DW1þq†_XÏ°¥¸¾Q=äóÖš€Y"tS•®ÄµEœÓƒé(¢äp9w„Qq–æ9µ¥rÞÏ'sß5쵑¶ÔÎ-¶Âo×Oе'ø3éY q98)zûÎz¥ñª%Y5#Ô-óHœtý ©Ö1zç!YAϲú“ù`�Èê© + +endstream endobj 117 0 obj <</Filter/FlateDecode/Length 317>>stream +H‰´“MN1…÷9Å»ÀdbçË€º¡Ò¨ , +RË‚ëcg:eJ7;qâï9NÒ?èÇÁáî~€q¶$±…Õ¦ŒãÎô«ÃîÓ88÷6…€(Ž +Ž/æÕ<Œ’ÙOš9žPƒØZ”r€D”€l‰Yœ¬T_±}odµ]bìM¬6£ÀÞ¼ ~mæGxöÝ<žñ!ŠTT,rU[ð´2ÉR$|!`ÄßôuA«ØHë‚8‰£\!¡kˆÿ;ÁíòË\ \ÞJ–b(Á×ë¶D[sBliuËÅò/·5%›k<Ç™„wNfN÷MÃSü”tÁ:'½iêN®A´§ËgÇÓ³»Ñ¤ÔÃS)Áº@à¬réì‚È)¥8éCl9²mÖú¢Ïò)JÛçmà€â² >/>ÂÚ|0�Ò½¦ +endstream endobj 17 0 obj [15 0 R 16 0 R 14 0 R] endobj 122 0 obj <</CreationDate(D:20190524130153+02'00')/Creator(Adobe Illustrator CC 23.0 \(Windows\))/ModDate(D:20190524130153+02'00')/Producer(Adobe PDF library 15.00)/Title(valve_hand-solenoid-analog_v05)>> endobj xref +0 123 +0000000000 65535 f +0000000016 00000 n +0000000180 00000 n +0000023773 00000 n +0000000000 00000 f +0000468941 00000 n +0000469326 00000 n +0000469711 00000 n +0000470096 00000 n +0000470481 00000 n +0000448463 00000 n +0000448849 00000 n +0000449235 00000 n +0000449621 00000 n +0000028464 00000 n +0000028606 00000 n +0000028535 00000 n +0000472814 00000 n +0000023875 00000 n +0000023964 00000 n +0000024058 00000 n +0000024152 00000 n +0000024246 00000 n +0000024340 00000 n +0000024434 00000 n +0000024528 00000 n +0000450007 00000 n +0000443907 00000 n +0000444293 00000 n +0000444679 00000 n +0000445065 00000 n +0000445451 00000 n +0000413700 00000 n +0000414086 00000 n +0000414472 00000 n +0000414858 00000 n +0000415244 00000 n +0000409383 00000 n +0000409768 00000 n +0000410153 00000 n +0000410538 00000 n +0000410924 00000 n +0000380998 00000 n +0000381383 00000 n +0000381768 00000 n +0000382153 00000 n +0000382538 00000 n +0000377021 00000 n +0000377406 00000 n +0000377791 00000 n +0000378176 00000 n +0000378561 00000 n +0000024650 00000 n +0000025035 00000 n +0000025420 00000 n +0000025805 00000 n +0000026190 00000 n +0000026575 00000 n +0000026960 00000 n +0000027345 00000 n +0000027730 00000 n +0000376661 00000 n +0000029138 00000 n +0000029025 00000 n +0000376301 00000 n +0000375948 00000 n +0000375371 00000 n +0000375042 00000 n +0000374698 00000 n +0000374353 00000 n +0000374003 00000 n +0000028115 00000 n +0000028909 00000 n +0000028940 00000 n +0000028793 00000 n +0000028824 00000 n +0000028677 00000 n +0000028708 00000 n +0000029212 00000 n +0000029496 00000 n +0000030869 00000 n +0000039400 00000 n +0000104989 00000 n +0000170578 00000 n +0000236167 00000 n +0000301756 00000 n +0000367345 00000 n +0000380569 00000 n +0000380125 00000 n +0000379663 00000 n +0000379305 00000 n +0000378946 00000 n +0000408932 00000 n +0000408485 00000 n +0000383807 00000 n +0000383357 00000 n +0000382923 00000 n +0000413144 00000 n +0000412668 00000 n +0000412218 00000 n +0000411767 00000 n +0000411310 00000 n +0000443351 00000 n +0000417191 00000 n +0000416629 00000 n +0000416092 00000 n +0000415630 00000 n +0000448082 00000 n +0000447523 00000 n +0000446959 00000 n +0000446400 00000 n +0000445837 00000 n +0000451921 00000 n +0000451528 00000 n +0000451152 00000 n +0000450775 00000 n +0000450393 00000 n +0000472426 00000 n +0000472033 00000 n +0000471641 00000 n +0000471251 00000 n +0000470866 00000 n +0000472853 00000 n +trailer +<</Size 123/Root 1 0 R/Info 122 0 R/ID[<20F5CE0ED3E63F44A8A1BF666CB3E210><314751AA94CCB24BB21AA7CC750AFAF5>]>> +startxref +473065 +%%EOF diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_BLUE.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_BLUE.svg new file mode 100644 index 0000000000000000000000000000000000000000..7eba38b6985b3664d1a623f9990ae88280de1b27 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_BLUE.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1,.cls-3{fill:none;}.cls-1{stroke:#000;stroke-linecap:square;stroke-linejoin:round;}.cls-1,.cls-2{stroke-width:6.15118px;}.cls-2{fill:#4fe4fa;stroke:#2f8794;}.cls-4{fill:#2f8794;}</style></defs><title>valve_hand-solenoid-analog_v05</title><path class="cls-1" d="M66.82188,24.0441V92.54438"/><path class="cls-1" d="M31.17459,24.0441h71.29457"/><polygon class="cls-2" points="7.122 62.65 7.122 124.65 66.822 93.65 7.122 62.65"/><polygon class="cls-2" points="126.522 124.65 126.522 62.65 66.822 93.65 126.522 124.65"/><rect class="cls-3" width="133.64375" height="133.64375"/><circle class="cls-4" cx="66.82187" cy="93.64978" r="10.81973"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_BLUE@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_BLUE@128.png new file mode 100644 index 0000000000000000000000000000000000000000..635125d78ca2b879abdd9905c164b376210f2443 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_BLUE@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_BLUE@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_BLUE@256.png new file mode 100644 index 0000000000000000000000000000000000000000..4fd0e38132024c5eed01b0d7c20cb462473d49b8 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_BLUE@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_BLUE@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_BLUE@32.png new file mode 100644 index 0000000000000000000000000000000000000000..ece1015215d00bc640485f64175ef399de517bb5 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_BLUE@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_BLUE@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_BLUE@512.png new file mode 100644 index 0000000000000000000000000000000000000000..3460a2be8a2af973446856092e6a0a8f9e0fccf4 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_BLUE@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_BLUE@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_BLUE@64.png new file mode 100644 index 0000000000000000000000000000000000000000..03325a98d64199cb9115e8436a8d3902470e811f Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_BLUE@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_COSED.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_COSED.svg new file mode 100644 index 0000000000000000000000000000000000000000..8b2bd4c1c1e7307decc33f0e31add00d7c3cf681 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_COSED.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1,.cls-2,.cls-4{fill:none;}.cls-1,.cls-2,.cls-3{stroke:#000;stroke-width:6.15118px;}.cls-1,.cls-2{stroke-linejoin:round;}.cls-2{stroke-linecap:square;}.cls-3{fill:#646464;}</style></defs><title>valve_hand-solenoid-analog_v05</title><path class="cls-1" d="M66.82188,24.0441V92.54438"/><path class="cls-2" d="M31.17459,24.0441h71.29457"/><polygon class="cls-3" points="7.122 62.65 7.122 124.65 66.822 93.65 7.122 62.65"/><polygon class="cls-3" points="126.522 124.65 126.522 62.65 66.822 93.65 126.522 124.65"/><rect class="cls-4" width="133.64375" height="133.64375"/><circle cx="66.82188" cy="93.64978" r="10.81973"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_COSED@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_COSED@128.png new file mode 100644 index 0000000000000000000000000000000000000000..717de2545d4ac79254edf477cb705f79d988a9f7 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_COSED@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_COSED@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_COSED@256.png new file mode 100644 index 0000000000000000000000000000000000000000..0da6fa04069f76cfecaeb1d3e505bd7126bb2c3a Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_COSED@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_COSED@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_COSED@32.png new file mode 100644 index 0000000000000000000000000000000000000000..059234dc9d43b6e6cb451113d1ceeee76889a8ad Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_COSED@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_COSED@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_COSED@512.png new file mode 100644 index 0000000000000000000000000000000000000000..3079241eb07d6c44a122c308918e14023292a590 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_COSED@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_COSED@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_COSED@64.png new file mode 100644 index 0000000000000000000000000000000000000000..4bb8265bb1f19477bee8ae2e9075a9787ef11c9d Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_COSED@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_COSED_w.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_COSED_w.svg new file mode 100644 index 0000000000000000000000000000000000000000..a3343a3fa5624bcc4590902de57878c33c2c2a8c --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_COSED_w.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1,.cls-2,.cls-5{fill:#fff;}.cls-1,.cls-2,.cls-3{stroke:#fff;stroke-width:6.15118px;}.cls-1,.cls-2{stroke-linejoin:round;}.cls-2{stroke-linecap:square;}.cls-3{fill:#bababa;}.cls-4{fill:none;}</style></defs><title>valve_hand-solenoid-analog_v05</title><path class="cls-1" d="M66.82188,24.0441V92.54438"/><path class="cls-2" d="M31.17459,24.0441h71.29457"/><polygon class="cls-3" points="7.122 62.65 7.122 124.65 66.822 93.65 7.122 62.65"/><polygon class="cls-3" points="126.522 124.65 126.522 62.65 66.822 93.65 126.522 124.65"/><rect class="cls-4" width="133.64375" height="133.64375"/><circle class="cls-5" cx="66.82188" cy="93.64978" r="10.81973"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_COSED_w@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_COSED_w@128.png new file mode 100644 index 0000000000000000000000000000000000000000..0b3b1397fa3f6f6618a62925c159f4ffc7d55d44 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_COSED_w@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_COSED_w@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_COSED_w@256.png new file mode 100644 index 0000000000000000000000000000000000000000..48a846a825c5410d36c40de551549b0551bf5d57 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_COSED_w@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_COSED_w@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_COSED_w@32.png new file mode 100644 index 0000000000000000000000000000000000000000..4f5a5e3bbf1e2d0d0cff80820fe82d95dd0cf5d0 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_COSED_w@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_COSED_w@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_COSED_w@512.png new file mode 100644 index 0000000000000000000000000000000000000000..f9e99fbffda97a2bf8d69d9c910ce868ac496998 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_COSED_w@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_COSED_w@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_COSED_w@64.png new file mode 100644 index 0000000000000000000000000000000000000000..d9519ac1344be5c27e2975921356984c7effd0e2 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_COSED_w@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_ERROR.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_ERROR.svg new file mode 100644 index 0000000000000000000000000000000000000000..2dc100aa582d3907e62316da4e3831caf75a77f8 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_ERROR.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1,.cls-3{fill:none;}.cls-1{stroke:#000;stroke-linecap:square;stroke-linejoin:round;}.cls-1,.cls-2{stroke-width:6.15118px;}.cls-2{fill:#fc0d11;stroke:#960810;}.cls-4{fill:#960810;}</style></defs><title>valve_hand-solenoid-analog_v05</title><path class="cls-1" d="M66.82188,24.0441V92.54438"/><path class="cls-1" d="M31.17459,24.0441h71.29457"/><polygon class="cls-2" points="7.122 62.65 7.122 124.65 66.822 93.65 7.122 62.65"/><polygon class="cls-2" points="126.522 124.65 126.522 62.65 66.822 93.65 126.522 124.65"/><rect class="cls-3" width="133.64375" height="133.64375"/><circle class="cls-4" cx="66.82187" cy="93.64978" r="10.81973"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_ERROR@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_ERROR@128.png new file mode 100644 index 0000000000000000000000000000000000000000..001b2acd1d3acb3b238b1551a38e3726dcf70c78 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_ERROR@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_ERROR@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_ERROR@256.png new file mode 100644 index 0000000000000000000000000000000000000000..26b2b99584ee9ba56a0cde2a99e92e664f1f4774 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_ERROR@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_ERROR@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_ERROR@32.png new file mode 100644 index 0000000000000000000000000000000000000000..c06f2923f8d29178dace4d71bf6e11c0c37a8f4b Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_ERROR@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_ERROR@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_ERROR@512.png new file mode 100644 index 0000000000000000000000000000000000000000..9b215a19cc60c3448e99901b37d33b63e2b80336 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_ERROR@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_ERROR@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_ERROR@64.png new file mode 100644 index 0000000000000000000000000000000000000000..1cde1f7600d2f91b68f2cc37b5e0ad78241ec41c Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_ERROR@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_INVALID.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_INVALID.svg new file mode 100644 index 0000000000000000000000000000000000000000..bc118555eb60f9689d9f70beb2a783d319202f41 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_INVALID.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1,.cls-3{fill:none;}.cls-1{stroke:#000;stroke-linecap:square;stroke-linejoin:round;}.cls-1,.cls-2{stroke-width:6.15118px;}.cls-2{fill:#956edd;stroke:#694da4;}.cls-4{fill:#694da4;}</style></defs><title>valve_hand-solenoid-analog_v05</title><path class="cls-1" d="M66.82188,24.0441V92.54438"/><path class="cls-1" d="M31.17459,24.0441h71.29457"/><polygon class="cls-2" points="7.122 62.65 7.122 124.65 66.822 93.65 7.122 62.65"/><polygon class="cls-2" points="126.522 124.65 126.522 62.65 66.822 93.65 126.522 124.65"/><rect class="cls-3" width="133.64375" height="133.64375"/><circle class="cls-4" cx="66.82188" cy="93.64978" r="10.81973"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_INVALID@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_INVALID@128.png new file mode 100644 index 0000000000000000000000000000000000000000..01c1d4c1839b7592e9aea1150dc1bf944750bfc9 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_INVALID@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_INVALID@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_INVALID@256.png new file mode 100644 index 0000000000000000000000000000000000000000..7aac527f8c584256da77bfc9709707bb69af853c Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_INVALID@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_INVALID@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_INVALID@32.png new file mode 100644 index 0000000000000000000000000000000000000000..b07af1000b25f8a0b9893cf14caf8cf5996ee45d Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_INVALID@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_INVALID@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_INVALID@512.png new file mode 100644 index 0000000000000000000000000000000000000000..2a4b982409379ad8c7ccb975f91f5496ab8afb49 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_INVALID@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_INVALID@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_INVALID@64.png new file mode 100644 index 0000000000000000000000000000000000000000..7c12fdcd8bbafb0a6194cb79963e5c8a8824a720 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_INVALID@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NEUTRAL.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NEUTRAL.svg new file mode 100644 index 0000000000000000000000000000000000000000..7bac5b17ad4661e71121961048f387ced7a007a0 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NEUTRAL.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1,.cls-2,.cls-4{fill:none;}.cls-1,.cls-2,.cls-3{stroke:#000;stroke-width:6.15118px;}.cls-1,.cls-2{stroke-linejoin:round;}.cls-2{stroke-linecap:square;}.cls-3{fill:#dce1dd;}</style></defs><title>valve_hand-solenoid-analog_v05</title><path class="cls-1" d="M66.82188,24.0441V92.54438"/><path class="cls-2" d="M31.17459,24.0441h71.29457"/><polygon class="cls-3" points="7.122 62.65 7.122 124.65 66.822 93.65 7.122 62.65"/><polygon class="cls-3" points="126.522 124.65 126.522 62.65 66.822 93.65 126.522 124.65"/><rect class="cls-4" width="133.64375" height="133.64375"/><circle cx="66.82188" cy="93.64978" r="10.81973"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NEUTRAL@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NEUTRAL@128.png new file mode 100644 index 0000000000000000000000000000000000000000..13067585a063f9fee2df8f839733128d9087398c Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NEUTRAL@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NEUTRAL@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NEUTRAL@256.png new file mode 100644 index 0000000000000000000000000000000000000000..49ca538f6ee9562e77bc3d7cc69cbe3555966a39 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NEUTRAL@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NEUTRAL@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NEUTRAL@32.png new file mode 100644 index 0000000000000000000000000000000000000000..29dcb1afd4642adffe80304c0c010041cef752bb Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NEUTRAL@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NEUTRAL@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NEUTRAL@512.png new file mode 100644 index 0000000000000000000000000000000000000000..13f7ebdaf6f14a0b1256a7914d4e108e4216c4f5 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NEUTRAL@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NEUTRAL@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NEUTRAL@64.png new file mode 100644 index 0000000000000000000000000000000000000000..1a80baafc5163262ebe2e21da1e9dafbf7ee71b4 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NEUTRAL@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NEUTRAL_w.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NEUTRAL_w.svg new file mode 100644 index 0000000000000000000000000000000000000000..ebbebc4aef402720bacbdd8ea4b6a0d39345d4d0 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NEUTRAL_w.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1,.cls-3{fill:none;}.cls-1,.cls-2{stroke:#fff;stroke-width:6.15118px;}.cls-1{stroke-linejoin:round;}.cls-2{fill:#3c3f41;}.cls-4{fill:#fff;}</style></defs><title>valve_hand-solenoid-analog_v05</title><path class="cls-1" d="M66.82188,24.0441V92.54438"/><path class="cls-1" d="M31.17459,24.0441h71.29457"/><polygon class="cls-2" points="7.122 62.65 7.122 124.65 66.822 93.65 7.122 62.65"/><polygon class="cls-2" points="126.522 124.65 126.522 62.65 66.822 93.65 126.522 124.65"/><rect class="cls-3" width="133.64375" height="133.64375"/><circle class="cls-4" cx="66.82188" cy="93.64978" r="10.81973"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NEUTRAL_w@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NEUTRAL_w@128.png new file mode 100644 index 0000000000000000000000000000000000000000..4b42d32b6fe97e1648b4c3b17b7d898b2ba577f8 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NEUTRAL_w@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NEUTRAL_w@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NEUTRAL_w@256.png new file mode 100644 index 0000000000000000000000000000000000000000..2ab370e247d95b24ce1821419d35ef7c4f45bc25 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NEUTRAL_w@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NEUTRAL_w@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NEUTRAL_w@32.png new file mode 100644 index 0000000000000000000000000000000000000000..9d4fd1ccd009541e8418f296e018ee9734e2dea7 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NEUTRAL_w@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NEUTRAL_w@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NEUTRAL_w@512.png new file mode 100644 index 0000000000000000000000000000000000000000..08cd49b83fadfe1c15b60d9f7f6423e0efd3e279 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NEUTRAL_w@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NEUTRAL_w@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NEUTRAL_w@64.png new file mode 100644 index 0000000000000000000000000000000000000000..40eb9a093af9e651031f71f2c1c02fe0ada80e9d Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NEUTRAL_w@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NOT_CONTROLED.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NOT_CONTROLED.svg new file mode 100644 index 0000000000000000000000000000000000000000..146cb00ff30738dbbf8a800766d4cfc15d72a414 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NOT_CONTROLED.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1,.cls-3{fill:none;}.cls-1{stroke:#000;stroke-linecap:square;stroke-linejoin:round;}.cls-1,.cls-2{stroke-width:6.15118px;}.cls-2{fill:#a9a9a9;stroke:#797979;}.cls-4{fill:#797979;}</style></defs><title>valve_hand-solenoid-analog_v05</title><path class="cls-1" d="M66.82188,24.0441V92.54438"/><path class="cls-1" d="M31.17459,24.0441h71.29457"/><polygon class="cls-2" points="7.122 62.65 7.122 124.65 66.822 93.65 7.122 62.65"/><polygon class="cls-2" points="126.522 124.65 126.522 62.65 66.822 93.65 126.522 124.65"/><rect class="cls-3" width="133.64375" height="133.64375"/><circle class="cls-4" cx="66.82187" cy="93.64978" r="10.81973"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NOT_CONTROLED@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NOT_CONTROLED@128.png new file mode 100644 index 0000000000000000000000000000000000000000..c087bd6d6a79e12b5ccece1dc652c7b915584998 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NOT_CONTROLED@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NOT_CONTROLED@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NOT_CONTROLED@256.png new file mode 100644 index 0000000000000000000000000000000000000000..3a081c8c8b4000dc029fd25c304f99b7453d5652 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NOT_CONTROLED@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NOT_CONTROLED@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NOT_CONTROLED@32.png new file mode 100644 index 0000000000000000000000000000000000000000..8764a3e36fab3697b835a58c9fcaf1d43c2dd0b7 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NOT_CONTROLED@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NOT_CONTROLED@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NOT_CONTROLED@512.png new file mode 100644 index 0000000000000000000000000000000000000000..487701a3b66e046caf8cb4c8d3f762a56939aa12 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NOT_CONTROLED@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NOT_CONTROLED@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NOT_CONTROLED@64.png new file mode 100644 index 0000000000000000000000000000000000000000..cfd9c5872eb56cbadcde8057537d2ad22c9884c5 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_NOT_CONTROLED@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_OFF.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_OFF.svg new file mode 100644 index 0000000000000000000000000000000000000000..62dc6bbed11ea0eb7621264e621e52c8ecaa0628 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_OFF.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1,.cls-4{fill:none;}.cls-1{stroke:#000;stroke-linecap:square;stroke-linejoin:round;stroke-width:6.15118px;}.cls-2{fill:#c8cdc9;}.cls-3{fill:#a9a9a9;}</style></defs><title>valve_hand-solenoid-analog_v05</title><path class="cls-1" d="M66.82188,24.0441V92.54438"/><path class="cls-1" d="M31.17459,24.0441h71.29457"/><polygon class="cls-2" points="7.122 62.65 7.122 124.65 66.822 93.65 7.122 62.65"/><path class="cls-3" d="M12.62109,71.99686H7.12188v4.67355h5.49921V71.99686Zm0,9.34707H7.12188v4.67356h5.49921V81.34393Zm0,9.34708H7.12188v4.67355h5.49921V90.691Zm0,9.34709H7.12188v4.67354h5.49921V100.0381Zm0,9.34706H7.12188v4.67356h5.49921v-4.67356Zm-.84208,6.65-4.14769,2.15373.28215.54339H7.12188v4.67354H9.51755l3.10354-1.61154h0l1.69215-.87868L11.779,116.03513Zm8.29538-4.3075-4.14769,2.15375,2.53424,4.88045,4.14769-2.15375-2.53424-4.88045Zm8.2954-4.30748-4.14769,2.15373,2.53422,4.88047,2.8696-1.49009,1.27811-.66366-2.53424-4.88045Zm8.29538-4.30749-4.14771,2.15374,2.53426,4.88045,4.14769-2.15375-2.53424-4.88044Zm8.29538-4.30748-4.14769,2.15373,2.53424,4.88046,4.14769-2.15375-2.53424-4.88044Zm8.29539-4.3075-4.14769,2.15375,2.53423,4.88045,4.14769-2.15375-2.53423-4.88045Zm7.59941-3.94609L57.40363,92.344l1.51917,2.92563-.19423.374.53187.27618.67743,1.3046.91748-.47643h0l3.51307-1.82419,1.04208-2.00686-2.36386-1.22748-.0063-.00327-.017-.00882-.0032-.00166-.00388-.002-.02647-.01375-.00188-.001-.00508-.00264-.00024-.00013-2.12728-1.10461Zm-7.88792-4.0959-2.53424,4.88043,4.14769,2.15375,2.53424-4.88046-1.23026-.63883-.00027-.00012-.09932-.05158-.00308-.00161-.016-.00833-.00145-.00074-.00986-.00512-.00223-.00116-.00253-.00132-.00382-.002-.00152-.00079-.0102-.00531-.00129-.00067-.00447-.00232-.001-.00049-.0046-.00241-.00144-.00074-.00892-.00463-.00455-.00238-.00192-.001L55.7047,87.877l-.00534-.00277-.00007,0-.03452-.01795L55.664,87.8559l-.04564-.02372-.00146-.00076c-1.18793-.61682-2.64943-1.37573-2.64943-1.37573Zm-8.2954-4.3075-2.53424,4.88044,4.14771,2.15374,2.53422-4.88043L44.672,82.14819ZM36.37664,77.8407l-2.53423,4.88046,4.14769,2.15375,2.53424-4.88046-1.82193-.946-.00074-.0004-.017-.00882-.00116-.00061-.00442-.00228-.00269-.00141-.11892-.06177-.00157-.00079-.02179-.01132-.004-.00211-.01317-.00683-.0045-.00232-.04637-.02408-.00078-.00043-.00417-.00213L38.457,78.921l-.00924-.00479-.00177-.00095-.0044-.00226-.00027-.00015-.00573-.003-.00115-.00061-.00332-.00171-.00305-.00159-.00377-.002-.00967-.005-.00182-.001-.00428-.00223-.00142-.00073-.00289-.0015-.00384-.002-.02263-.01175-.00028-.00012-.02378-.01236-.00084-.00043L36.37664,77.8407Zm-8.29536-4.3075L25.547,78.41367l4.1477,2.15374L32.229,75.687l-2.78383-1.44553,0,0-.00805-.00418-.00813-.00421-.0012-.00061-.00789-.00412-.00716-.00369-.0089-.00464-.00439-.00226-.00362-.00189-.017-.00882-.01516-.00787-.00351-.00183-.01167-.00605-.00052-.00027-1.26664-.65775Zm-8.2954-4.30749-2.53424,4.88046,4.14769,2.15375,2.53424-4.88043s-.821-.42637-1.73245-.89963l-.00418-.00217-.00943-.00488-2.40163-1.24707Zm-12.664-6.57593v.54016h0v4.13339h3.11975L8.95626,69.79868,13.104,71.95245,15.63819,67.072,7.12188,62.64978Z"/><polygon class="cls-2" points="126.522 124.65 126.522 62.65 66.822 93.65 126.522 124.65"/><path class="cls-3" d="M118.22651,66.95728,114.07882,69.111l2.53422,4.88044,4.14771-2.15375-2.53424-4.88043Zm-8.2954,4.30749-4.14769,2.15372,2.53424,4.88046,4.14769-2.15375-2.53424-4.88043Zm-8.29538,4.30747L97.488,77.726l2.53425,4.88043L104.17,80.4527l-2.53423-4.88046Zm-8.29539,4.30749-4.14769,2.15375,2.53424,4.88043,4.1477-2.15372-2.53425-4.88046ZM85.045,84.18723l-2.08281,1.08151-.0009.00046-.00276.00143-.01062.00552-.00183.001-2.04877,1.06384,2.53424,4.88047,4.14769-2.15375L85.045,84.18719Zm-8.29538,4.30746-4.14771,2.15375L74.721,94.72935l-1.236,2.38031,4.14769,2.15374,2.53424-4.88045-1.412-.73317.52889-.27463-2.53423-4.88046Zm-5.5551,2.88455-4.3726,2.27054h0l2.83754,1.47343-.20452-.39386,1.73958-3.35011ZM84.31457,96.5367l-2.53424,4.88046,4.1477,2.15373,2.53423-4.88045L84.31457,96.5367ZM92.61,100.84418l-2.53423,4.88046,2.8889,1.50011.00061.0003.00427.00223.0022.00114.00379.002.001.00053.01044.00543.00078.0004.00459.00238.00131.00069.01587.00824.00066.00033.00922.00479.00248.0013.00336.00174.01875.00974.00374.00193.00374.002h0l.0051.00264.00091.00047.00838.00435.004.00209.00252.0013.00206.00108.003.00153.00357.00186.00147.00076.01326.00689L93.1,107.295l.00248.00129.00776.004.0028.00145.00928.00483.00083.00042.00935.00485.00232.00121.01976.01027.00113.00058.01935.01.0043.00224.0396.02057.00079.0004.04024.0209.00322.00168.9602.4986,2.53424-4.88045L92.61,100.84418Zm8.29539,4.30749-2.53424,4.88045,4.14771,2.15375,2.53422-4.88045-4.14769-2.15375Zm8.2954,4.30748-2.53424,4.88045,2.71424,1.40942,1.43345.74433,2.53424-4.88045-4.14769-2.15375Zm8.29539,4.30748-2.53424,4.88046,2.894,1.50275.00156.00079.00418.00219.0015.00077.01461.0076.00235.00121.01544.008.00116.00063.00879.00454.00412.00215.00049.00026.02149.01114.001.00052.03183.01654.00119.00061.00421.0022.00309.00159.00125.00065.0032.00167,1.13223.58793,1.91312-3.68431v1.86469h4.29782l-2.06323,3.97335,1.34839.70018h0l1.91623.995h0V114.30769h-5.49921v1.29016l-3.52655-1.83122Zm9.02576-8.806h-5.49921v4.67354h5.49921V104.9606Zm0-9.34707h-5.49921v4.67353h5.49921V95.61353Zm0-9.34708h-5.49921V90.94h5.49921V86.26645Zm0-9.34708h-5.49921V81.5929h5.49921V76.91937Zm0-14.26959-4.14768,2.15375,1.43772,2.76877h-2.78925v4.67352h5.49921v-9.596Z"/><rect class="cls-4" width="133.64375" height="133.64375"/><circle class="cls-2" cx="66.82188" cy="93.64978" r="10.81973"/><path class="cls-3" d="M66.82188,82.83005h-.02195l-.00542,0h-.00392l-.00521,0-.00412,0-.005,0h-.00409l-.00507,0-.00413,0-.00506,0-.004,0-.00513,0-.00413,0-.005,0-.004,0-.00548,0-.00362,0-.00625.00006-.00283,0-.00724.00007-.0031,0-.00793.00009-.003,0-.006.00006-.00369,0-.00552.00007L66.677,82.831l-.00506.00007-.00431.00006-.00484.00007-.00432.00006-.00473.00007-.00433.00007-.00487.00008-.00428.00006-.00477.00009-.00429.00007-.00509.00009-.00394.00007-.00548.0001-.00357.00006-.006.00012-.00319.00006-.00687.00014-.00224,0-.009.00019-.0032.00007-.00593.00013-.00369.00009-.00538.00012-.00386.00009-.00524.00012-.004.0001-.00511.00012-.00384.0001-.00532.00013-.004.00011-.005.00013-.00416.00011-.00479.00013-.00445.00012-.00469.00013-.00423.00012-.005.00014-.00412.00012-.00523.00016-.00377.00011-.00584.00018-.004.00012-.00829.00026-.00265.00008-.00631.0002-.00394.00013-.00511.00017-.00422.00014-.00478.00017-.00425.00014-.005.00018-.00409.00014-.00489.00018-.00421.00015-.005.00017-.00411.00016-.00485.00018-.0042.00016-.00508.00019-.00394.00015-.00528.00021-.00377.00014-.00565.00023-.0034.00013-.006.00025-.00314.00013-.00882.00036-.0037.00016-.00534.00023-.004.00017-.005.00022-.00411.00018-.00493.00022-.0042.00019-.00487.00021-.00413.00019-.00489.00022-.00431.00021-.00463.00021-.00441.00021-.00461.00022-.00444.00021-.00465.00023-.00434.00021-.00478.00024-.00422.0002-.00518.00026-.00379.00019-.00538.00028-.00374.00019-.00869.00046-.00432.00022-.00469.00025-.00451.00023-.00446.00025-.00489.00027-.004.00021-.00511.00028-.00391.00022-.005.00027-.004.00023-.00489.00027-.00423.00025-.00474.00026-.00406.00024-.005.00029-.00387.00023-.00507.00031-.00388.00022-.005.0003-.00392.00024-.00509.00031-.00327.0002-.01876.00117-.00448.00028-.00468.0003-.00422.00026-.00493.00032-.004.00026-.00508.00033-.00388.00026-.005.00033-.004.00026-.00508.00034-.00378.00025-.00512.00035-.00377.00026-.00523.00035-.00373.00026-.005.00036-.004.00028-.00495.00035-.0038.00027-.00512.00035-.00322.00024-.021.00152-.002.00015-.00568.00042-.00332.00025-.00538.0004-.00346.00026-.00523.0004-.00383.00029-.005.00038-.00375.00029-.0052.0004-.00373.00029-.00516.00041-.00364.00029-.00529.00041-.00364.00029-.00523.00042-.00356.00028-.00535.00043-.0033.00027-.00567.00046-.00213.00017-.0231.00192-.00075.00006-.00647.00055-.0024.0002-.00575.00049-.00321.00028-.00552.00047-.00334.00029-.00542.00047-.00345.0003-.00536.00047-.0036.00032-.00515.00045-.00364.00033-.00544.00048-.00321.00029-.00559.0005-.00311.00028-.00583.00053-.00272.00025-.00606.00056-.00211.00019-.03054.00286-.00209.0002-.00632.0006-.00243.00024-.006.00058-.00293.00028-.00577.00056-.003.00029-.00574.00056-.00309.00031-.00582.00057-.0028.00028-.00595.00059-.00287.00029-.006.0006-.00266.00027-.00608.00061-.00254.00026-.00639.00065-.00092.00009-.03239.00337-.001.00011-.00692.00073-.00185.0002-.0065.00069-.00234.00025-.00608.00065-.00275.0003-.00616.00067-.0024.00026-.00643.0007-.00212.00023-.00675.00075-.00173.00019-.00682.00075-.002.00023-.00683.00076-.00129.00014-.00742.00084-.00036,0-.04126.00473-.00111.00013-.00679.0008-.0021.00025-.00638.00075-.00234.00028-.0063.00075-.00242.00029-.00629.00074-.00236.00029-.00627.00075-.00247.0003-.00637.00077-.00186.00023-.007.00085-.00109.00013-.049.00611-.00123.00015-.007.00089-.00174.00022-.00676.00087-.00189.00024-.00671.00087-.00193.00025-.00663.00086-.002.00026-.00679.00089-.00163.00021-.007.00092-.0015.0002-.00726.001-.00069.00009-.0582.00789-.00047.00006-.0076.00106-.00109.00015-.00718.001-.00154.00022-.0071.001-.00132.00019-.00733.001-.00107.00016-.00752.00106-.00081.00012-.00784.00112-.00011,0-.05859.00855-.00029,0-.00769.00115-.001.00014-.00751.00112-.001.00016-.00745.00112-.00105.00016-.00753.00114-.00088.00013-.0075.00115-.00108.00016-.06631.01035H65.107l-.00814.0013-.00033.00005-.00792.00127-.00059.00009-.008.00129-.00033.00006-.00808.0013-.00031.00006-.09167.01529-.00013,0-.00811.0014-.00035.00006a10.73762,10.73762,0,0,0-2.10308.58708l-.00024.00009-.00751.00295-.00012.00005-.00746.00294-.00044.00017-.06067.02414-.00051.0002-.00705.00284-.00068.00027-.00677.00272-.00117.00048-.00658.00265-.00113.00047-.00651.00263-.00137.00056-.00659.00266-.00074.0003-.007.00286-.00044.00018-.04488.01838-.00067.00027-.00662.00274-.00117.00048-.00626.00259-.0016.00066-.00591.00245-.00208.00087-.00541.00224-.0026.00108-.00526.00219-.00251.001-.00528.0022-.00252.001-.00534.00223-.00249.001-.00526.0022-.00261.00109-.00527.00222-.00182.00076-.01894.008-.00238.001-.005.00213-.00274.00117-.00492.00209-.003.00126-.00477.002-.00309.00131-.00459.002-.00337.00145-.0045.00192-.00325.00139-.0046.002-.00331.00141-.00453.00194-.00322.00139-.00461.002-.00337.00145-.00445.00192-.00333.00143-.00452.002-.00322.00138-.00462.002-.00076.00033-.01074.00466-.00392.0017-.00371.00162-.00416.00181-.00374.00163-.00419.00183-.00355.00155-.00434.0019-.00363.00159-.00425.00186-.00357.00156-.00439.00194-.00346.00152-.0045.002-.00328.00145-.0047.00207-.00324.00143-.00475.0021-.00307.00135-.00525.00234-.00258.00114-.00727.00323-.00047.00021-.00806.00359-.0005.00022-.00746.00333-.0015.00067-.00637.00285-.002.00091-.00595.00267-.00211.00095-.00568.00255-.00246.00111-.00558.00251-.00224.001-.00579.00261-.002.00092-.00609.00275-.00183.00083-.00607.00275-.0019.00086-.00644.00293-.00139.00062-.00737.00336-.00045.0002-.03221.01475-.00034.00015-.00744.00343-.00131.0006-.0065.003-.00063.00029,2.305,4.9928a5.26953,5.26953,0,0,1,2.225-.48471v-5.4992ZM58.5953,86.62167l-.03877.04559L58.556,86.668l-.00466.00551-.00066.00079-.00461.00546-.00078.00092-.00459.00545-.00062.00074-.00474.00564-.00036.00042-.03062.03661-.00053.00063-.00458.0055-.00081.001-.00432.00519-.00112.00136-.00425.00512-.001.00114-.00441.00533-.00061.00074-.02509.03042-.00035.00042-.00438.00535-.00106.00128-.00409.005-.00125.00153-.004.00494-.00125.00152-.00409.005-.001.00127-.0043.00527-.00067.00082-.02478.03052-.00038.00047-.00438.00542-.001.00122-.00409.00507-.00126.00155-.00389.00483-.00143.00178-.00394.0049-.00108.00134-.00419.00522L58.38,86.8815l-.01936.02418-.00045.00056-.00416.00522-.00112.00141-.00382.00479-.00153.00194-.00374.00469-.00141.00178-.00382.00481-.00143.0018-.00381.00481-.00126.0016-.004.00505-.00078.001-.01837.02331-.00134.0017-.00372.00473-.00146.00187-.00367.00469-.00154.002-.0037.00472L58.294,86.99l-.00363.00465-.00156.002-.00378.00483-.001.00135-.0041.00526-.00063.00082-.01878.0242-.00077.001-.00408.00528-.00106.00137-.0038.00493-.00149.00192-.00363.00472-.00146.00189-.00367.00477-.00145.00188-.00377.00492-.001.00126-.00419.00546-.00019.00024-.01861.02434-.00123.00163-.0037.00486-.00145.0019-.00345.00454-.00176.00231-.00338.00446-.00173.00228-.0033.00436-.00182.00239-.00346.00457-.00125.00167-.0038.005-.00084.0011-.01275.01693-.00132.00176-.00331.00441-.00192.00256-.003.004-.00212.00284-.00291.00388-.00228.00305-.00294.00394-.002.00263-.00319.00428-.00189.00254-.00317.00426-.00184.00246-.00327.00439-.00118.0016-.01205.01625-.00165.00223-.003.004-.00217.00293-.003.00408-.002.00267-.00308.00419-.002.00265-.00315.00429-.0019.00258-.003.00414-.00212.00288-.003.00406-.00192.00262-.00311.00426-.00125.00171-.0067.00917-.00186.00255-.003.004-.002.00276-.003.00416-.002.00279-.00307.00422-.00183.00253-.00314.00433-.002.0027-.003.00409-.00211.00293-.00285.00394-.00227.00314-.00274.00379-.00229.00319-.00271.00376-.00228.00316-.00531.00738-.00216.003-.00274.00383-.00228.00317-.00264.00369-.00236.00329-.0027.00379-.0023.00321-.00261.00365-.00244.00342-.00256.0036-.00249.00349-.00243.00342-.00261.00366-.00246.00346-.00238.00337-.00259.00364-.00117.00166-.00625.00883-.00226.00319-.0027.00383-.00218.00309-.00281.004-.00217.00307-.00269.00383-.00227.00322-.00261.00372-.00241.00343-.00254.00361-.00228.00326-.00271.00387-.00221.00316-.00266.00381-.00253.00361-.00318.00456-.00388.00557-.00272.00392-.00215.00308-.00264.0038-.00234.00337-.00238.00343-.00259.00374-.00234.00337-.00259.00373-.00235.0034-.00244.00354-.00254.00368-.00237.00344-.00245.00356-.0025.00361-.00244.00355-.00237.00346-.00513.00747-.00194.00282-.00246.0036-.00252.00368-.00221.00323-.00263.00384-.0023.00338-.00262.00383-.00225.0033-.00256.00377-.00232.0034-.00265.00389-.00216.0032-.00278.00409-.00206.003-.0032.00473-.00162.00238-.00482.00713-.0004.0006-.00442.00655-.00173.00257-.00306.00454-.00216.00321-.00263.00391-.00223.00332-.00256.00381-.00239.00357L57.826,87.636l-.00237.00353-.00247.0037-.00235.00352-.00266.004-.002.003-.00274.00411-.0022.00331L57.806,87.666l-.00343.00516L57.8,87.67509l-.00232.00348-.00251.0038-.00228.00345-.00242.00365-.00238.0036-.00244.00369-.00229.00347-.00249.00378-.00218.00332-.00274.00416-.002.0031-.0026.004-.00219.00335-.00264.004-.0021.0032-.00456.007-.00192.00293-.00275.00421-.00235.00359-.00234.00359-.00242.00372-.00232.00357-.00228.0035L57.741,87.765l-.00234.00361-.0023.00355-.0024.00369-.0022.00341-.00254.00392-.00223.00346-.00234.00362-.00261.004-.00312.00484-.00347.00538-.00209.00325-.00253.00394-.0022.00342-.00254.004-.00215.00335-.00245.00383-.00227.00354-.00239.00374-.0023.00361-.00228.00358-.00235.00368-.00246.00387-.00212.00333-.00273.00429-.00188.003-.00337.0053-.00167.00264-.00411.00649-.00193.003-.00268.00425-.00212.00337-.00245.00387L57.66,87.8915l-.00228.00362-.00226.00359-.00235.00374-.00232.00369-.00224.00359-.00229.00365-.0024.00383-.00217.00348-.00275.00438-.00176.00283-.00323.00518-.003.00483-.0028.00451-.002.00317-.0026.00417-.002.00331-.00252.00407-.00215.00347-.00232.00373-.00229.00371-.00231.00373-.00219.00356-.00237.00384-.00215.00349-.00243.004-.00214.00346-.00233.00379-.00219.00358-.0031.005-.00327.00534-.00244.004-.00235.00384-.00212.00347-.00243.004-.002.00329-.00247.004-.00211.00347-.0022.00362-.00236.00389-.00217.00357-.0023.00379-.00219.00361-.00217.0036-.00236.00389-.002.00338-.00239.00394-.0014.00234-.0053.0088-.002.00325-.00244.004-.002.00327-.00237.004-.00217.00362-.00222.0037-.00218.00365-.00225.00377-.00222.00371-.00222.00373-.00215.0036-.00227.00381-.00223.00375-.00219.00368-.00207.00348-.00435.00733-.00219.00369-.00216.00365-.0022.00374-.00235.004-.002.00345-.00227.00384-.00213.00362-.00225.00381-.00218.00371-.00216.00369-.00216.00367-.00229.0039-.00205.0035-.00229.0039-.002.00352-.00233.004-.00208.00356-.00894.01535-.00174.003-.00243.00418-.00186.0032-.00241.00417-.00194.00335-.00242.00417-.0018.00313-.00251.00434-.00181.00315-.00246.00426-.00187.00323-.00238.00415-.00192.00333-.00243.00425-.00078.00134-.00691.01207-.00052.0009-.00266.00465-.00166.00291-.00255.00448-.00167.00293-.00253.00444-.00172.003-.00256.00449-.00168.003-.00246.00434-.00182.00321-.00248.00439-.00163.00286-.00259.00459-.00133.00235L57.384,88.355l-.00091.00163-.0027.00481-.00154.00275-.00259.00461-.00158.00283-.00249.00445-.00179.00318-.00245.0044-.00162.0029-.00258.00463-.00154.00276-.00269.00484-.00122.00219-.00294.00529-.00082.00148-.01023.01848-.001.00188-.00258.00469-.00161.00291-.0025.00454-.00163.003-.00248.00451-.00165.003-.0025.00457-.00158.00287-.00255.00465-.00147.00269-.00273.005-.00111.002-.00293.00536-.001.00177-.01018.01874-.00074.00136-.00292.00539-.0012.00221-.00274.00507-.00131.00242-.00273.00506-.0013.00242-.00282.00523-.00106.002-.003.00556-.001.00183-.003.00556-.001.00183-.003.00569-.0001.00019-.0109.02042-.00069.00128-.00288.00541-.00115.00216-.00282.00531-.00116.00219-.00278.00525-.00118.00223-.00281.00531-.00117.00221-.00277.00524-.00116.00221-.00287.00544-.00068.00129-.01444.02752-.00024.00048-.00322.00616-.00076.00144-.00305.00587-.00084.0016-.003.00573-.001.00189-.00294.00567-.00083.00159-.0031.006-.00063.00122-.00325.00628-.00023.00044-.01447.02808-.00042.00083-.0031.006-.00079.00156-.00309.006-.0007.00137-.00308.006-.00076.0015-.00309.00607-.00064.00124-.0032.0063-.00038.00074-.02172.043-.00026.00053-.00335.00665-.00044.00088-.00322.00644-.00058.00114-.00324.00649-.0003.00059-.02509.05055-.00035.0007-.00329.00668-.00039.0008-.00329.00668-.00034.0007-.00342.00695v0l-.02494.05121-.00031.00064-.00327.00677-.00034.00071-.00323.0067-.00044.00089-.00328.00682,0,.0001-.02471.05171,0,.00008a10.74078,10.74078,0,0,0-.63437,1.69146l5.29317,1.49115a5.26051,5.26051,0,0,1,1.0752-2.00521l-4.17947-3.574Zm2.97083,7.86594-5.43278.85212a10.73637,10.73637,0,0,0,.68079,2.42992l.0003.00071.00287.007.0003.00074.00286.00692.00036.00088.00283.00682.00035.00083.0029.007.00008.00019.01553.03715.00038.00089.00271.00645.00057.00136.0026.00617.00076.00179.0024.00569.001.00232.00241.00568.00078.00184.00257.00607.00056.0013.00282.00664,0,0,.01273.02979.00023.00053.00253.00589.00093.00216.00235.00547.001.0023.00234.00543.00108.0025.00226.00524.00113.00259.00227.00525.00116.00267.00222.00511.00117.00269.00226.0052.001.00233.00766.01754.00144.00328.00193.00439.00153.0035.002.0045.00148.00336.002.00448.0015.00339.002.00457.00147.00333.002.00441.0016.00361.00187.00421.00171.00385.00176.004.00183.0041.00171.00384.00215.00482.00132.003.00346.00773.00141.00316.00215.00478.00159.00355.00193.00431.00165.00365.002.00436.00159.00353.002.00444.00151.00334.00219.00484.00138.00305.0022.00486.00142.00314.00226.005.00134.00295.0025.00549.00108.00239.00334.00731.00028.0006.00361.0079.00107.00236.00258.00562.00112.00244.00257.0056.00116.00251.00248.00539.00125.00272.00238.00515.00136.00294.00241.00523.00115.00248.00266.00574.001.00223.00289.00624.00075.00161.00331.0071.00041.00089.00757.01621.00023.0005.0035.00746.00064.00136.003.00647.00091.00193.00294.00624.00079.00168.003.00628.00084.00179.003.00642.00071.0015.00323.00682.00052.0011.01933.04055v0l.00381.008.00027.00055.00366.0076.0002.00043.00366.00759.0003.00062.03143.06461.00026.00052.00377.00769.00012.00025a10.81106,10.81106,0,0,0,.71553,1.24l4.57079-3.05762a5.232,5.232,0,0,1-.827-2.11284Zm2.47752,3.70154-2.87974,4.6849q.39323.2417.808.45019l.00006,0,.00775.00388.00057.00029.00754.00378.00038.00019.00789.00393h0l.04837.024.00018.00009.00767.00377.00077.00038.00715.00351.001.00048.00715.00351.00074.00036.00727.00355.00081.0004.00764.00374.0002.00009.04048.01964.00008,0,.008.00383.00034.00017.00738.00354.00115.00055.00689.00331.00115.00055.00693.00333.001.0005.00725.00346.00072.00034.00748.00357.00056.00026.03221.01529.00109.0005.00685.00324.00139.00065.00654.00308.00172.00081.00624.00293.00174.00083.0063.00294.00174.00081.00672.00316.00108.00049.00735.00343.00067.00032.03221.01495.00154.00071.00645.003.00182.00084.006.00278.00217.001.006.00273.002.00091.006.00276.002.0009.00629.00289.00166.00076.00682.00311.00112.00051.02437.01108.0004.00018.00753.0034.00157.00072.00633.00285.00207.00093.00591.00267.00228.001.00575.00257.00227.001.00567.00254.00248.0011.00569.00255.00222.001.00622.00278.00175.00078.00764.0034.00026.00012.01633.00725.00111.00049.00682.003.00205.0009.006.00264.00238.00105.00547.00241.00277.00121.00538.00236.00254.00112.00563.00247.00234.001.00586.00257.00221.001.00585.00256.00223.001.0069.003.001.00044.0163.00707.00129.00056.00663.00287.00243.001.0056.00242.00256.0011.00546.00235.00283.00122.0051.00218.00305.00132.00489.00209.00322.00137.00509.00218.00273.00118.00562.00238.00245.00105.00646.00275.00148.00062.01641.007.00042.00018.00749.00316.00222.00093.00579.00244.0027.00115.00523.0022.00309.00129.005.00209.00311.0013.00485.002.0033.00139.00471.002.00337.0014.00485.002.0031.0013.00547.00228.00256.00105.00671.00278.00134.00056.008.00328.00307.00127.00485.002.00381.00157.00425.00175.00365.0015.00443.00181.00361.00148.00453.00187.0034.00138.00464.0019.00361.00148.00445.00181.0035.00142.00463.00188.00352.00143.00478.00194.00317.0013.00521.0021.00352.00142.00732.003.00265.00107.00535.00215.00322.0013.005.002.00338.00136.00447.0018.0038.00151.00438.00176.00374.00149.0042.00168.00388.00154.00427.00169.00387.00155.004.0016.004.00158.00449.00179.0035.00139.0057.00224.00232.00092.00789.00311.00408.0016.00394.00154.0043.0017.00377.00148.00415.00161.00395.00155.00428.00167.00369.00144.00439.00171.0036.0014.0046.00179.00348.00134.00436.00169.00382.00148.00441.00171.00338.0013.00463.0018.00308.00117.01768.00679.003.00115.00478.00183.00337.00128.0047.0018.00325.00124.00474.0018.00345.00131.00466.00177.00329.00125.00473.00179.00343.00129.00465.00177.00335.00126.00471.00178.00351.00131.00456.00173.00328.00122.01722.00645.00337.00127.00474.00175.00337.00127.00457.00169.00356.00133.0045.00167.00367.00135.00435.00162.00378.00139.00443.00163.00369.00138.0044.00161.0037.00136.00448.00165.00362.00133.00448.00164.00325.00119.01822.00664.00248.0009.00494.0018.00321.00116.005.0018.00307.00112.00489.00177.00338.00122.00462.00166.00352.00127.00459.00165.00363.00131.00456.00163.00334.00119.00489.00175.00319.00113.00491.00176.00306.0011.00511.00181.00122.00045.01261.00447.00192.00067.00538.00191.00278.001.00508.0018.00305.00107.00528.00186.00272.001.00539.0019.00269.00093.00544.0019.00268.001.00532.00185.00286.001.00532.00185.00257.0009.0056.00194.002.00068.02105.00728.00079.00028.00563.00194.00256.00086.00533.00184.00281.001.00514.00177.00317.00108.00486.00165.00332.00114.00484.00164.00342.00117.00478.00162.00335.00114.00478.00162.00362.00122.00463.00157.00312.00106.00517.00173.00113.00039.02083.007.002.00066.00539.0018.00289.001.00519.00172.003.001.00494.00163.00336.00112.00491.00163.00332.0011.00481.00158.00342.00113.00486.00161.00324.001.005.00165.0027.00088.02662.0087.0032.001.005.00161.00314.001.005.00162.00343.0011.00481.00155.00334.00107.0049.00159.00338.00108.005.0016.003.001.0053.00171.00283.0009.00544.00172.00243.00078.00576.00183.00164.00054.02047.00647.00205.00065.00519.00164.00322.001.0049.00154.00338.00106.00484.00152.00345.00109.0048.00149.00366.00115.0044.00135.004.00125.00446.00139.00369.00115.00458.00142.0035.00108.005.00154.0021.00066.01964.006.00256.00078.00542.00167.00283.00087.00506.00154.00343.001.00486.00148.00334.001.00491.0015.00351.00105.00483.00146.00339.001.0049.00148.00352.00105.00484.00145.0034.001.00486.00147.00342.001.01809.00539.00309.00091.00494.00147.00341.001.00493.00145.00343.001.00474.00139.00363.00107.00488.00144.00337.001.005.00145.0034.001.00494.00145.00343.001.0049.00142.00312.00091.00544.00158.0016.00047.01993.00575.00293.00084.00506.00145.00326.001.00489.00139.00361.001.00461.00132.00384.00109.00445.00127.004.00114.00447.00127.00378.00107.00464.00131.00388.0011.0045.00127.00386.00108.00457.00128.00385.00109.00457.00128.00217.00059.01053.00295.00379.00105.00428.00119.00412.00114.00468.0013.00364.001.00487.00134.00348.001.00491.00135.00363.001.00461.00127.0039.00107.00457.00125.00393.00107.00444.0012.004.0011.00451.00122.00439.00119.00392.00107.006.00162.006.00163.00467.00125.00419.00113.0042.00113.00438.00117.00418.00112.00423.00113.00423.00113.00425.00113.0043.00114.00417.0011.00434.00116.00412.00108.00457.00121.00392.001.00454.00119.004.00106.00462.0012.00392.001.00507.00132.007.00182.00464.0012.00389.001.00468.00122.00392.001.00464.0012.0038.001.00478.00124.0039.001.00458.00117.004.001.00445.00113.00417.00107.00452.00114.00386.001.00474.0012.00394.001.00491.00124.00351.00088.00685.00173.00347.00088.0067.00168.00318.00079.00525.00132.00384.001.00479.00119.00384.00094.00468.00118.00384.001.00484.0012.00384.001.0046.00113.004.001.00474.00116.00379.00093.00515.00125.00329.00081.006.00145.00266.00065.00757.00183.00126.00031.00826.002.00307.00075.00554.00134.00357.00085.005.00119.00375.0009.0049.00118.00379.0009.00486.00116.00362.00085.00512.00122.00359.00086.005.00117.00357.00086.00511.0012.00356.00084.0058.00136.00268.00063.00787.00183.0008.0002.00866.002.00226.00052.00632.00146.003.00071.00578.00132.003.00069.00558.0013.0033.00074.00542.00126.0033.00074.00536.00122.0033.00077.00562.00128.003.00069.00594.00134.00267.00059.00683.00154.00183.00042.01764.004.00069.00016.008.00178.002.00044.0068.0015.00219.00049.00645.00143.00271.0006.00606.00132.00267.0006.00616.00134.0026.00058.00649.00142.00215.00046.00672.00146.00215.00048.00787.00169.0007.00015.02678.00576.00109.00024.00778.00165.00144.0003.00725.00154.002.00042.00694.00148.00194.00039.00678.00144.00221.00046.00692.00144.00177.00037.0076.00159.00113.00024.04481.00922.00087.00018.00778.00159.00179.00035.00723.00146.00156.00032.00732.00147.0017.00035.00741.00148.00141.00029.00781.00156.001.0002.04517.00889.00006,0,.00873.00169.00093.00018.00806.00156.001.0002.008.00152.001.0002.00827.00159.0006.00012.00875.00166.00018,0,.05451.01023.00054.00011.00845.00155.00074.00014.00822.00151.001.00017.00832.00152.00059.00011.00892.00162h0l.05485.00979.00015,0,.00888.00156.00042.00008.00852.00148.00076.00013.0087.00151.00017,0q.28872.05.58247.08464l.64246-5.46155a5.23054,5.23054,0,0,1-2.14309-.74418Zm6.38624-.629a5.3477,5.3477,0,0,1-1.96483,1.15316l1.6952,5.23139a10.77185,10.77185,0,0,0,2.57537-1.23283l.00008-.00006L72.79,102.676l.00007,0,.00671-.00446.0001-.00006.00661-.00439.00031-.0002.04688-.03134.00045-.00031.00594-.004.00123-.00082.00556-.00375.00141-.001.00542-.00366.00167-.00113.0054-.00365.001-.00067.03234-.022.00074-.0005.00562-.00385.00147-.001.00514-.00351.002-.00134.005-.00345.00184-.00126.00513-.00353.00159-.00108.00551-.00379.00059-.00041.02552-.01759.00093-.00066.00515-.00355.002-.00138.00483-.00335.00209-.00145.00489-.00341.002-.00138.00492-.00344.002-.00136.005-.00347.00177-.00124.00525-.00368.00065-.00044.02485-.01743.00159-.00111.00484-.00342.00218-.00152.00458-.00324.00247-.00174.00438-.00308.00257-.00183.00448-.00316.00235-.00166.00454-.00322.00243-.00171.00452-.00321.00237-.00169.01565-.01114.0024-.00171.00416-.003.00281-.002.004-.00284.00308-.00219.00391-.00281.003-.00215.00393-.00283.00313-.00224.0038-.00273.00321-.0023.00374-.0027.00322-.00232.00381-.00275.002-.00145.0087-.00629.00279-.002.00359-.00259.00343-.00249.00359-.00259.00336-.00244.00357-.0026.00341-.00247.00358-.00261.00351-.00255.00328-.00239.00388-.00284.00313-.00229.004-.00288.003-.0022.004-.003.003-.0022.00674-.00494.00238-.00174.00453-.00333.003-.00218.004-.003.0031-.00229.00376-.00278.00319-.00235.004-.00291.003-.00223.00383-.00284.00317-.00235.00392-.0029.003-.00224.004-.00295.003-.00221.00581-.00432.001-.00076.007-.00519.00172-.00128.00529-.00395.002-.00151.00494-.0037.00236-.00177.00462-.00346.0024-.0018.00454-.0034.00254-.00191.00466-.00351.00217-.00162.00486-.00366.00224-.00169.006-.00452.00079-.0006.01421-.01074.001-.00076.00577-.00438.002-.00154.005-.00382.002-.00154.00484-.00369.0022-.00168.00491-.00374.00208-.00158.00491-.00376.002-.00154.00582-.00445.001-.00075.02117-.01625.001-.00078.006-.00461.00121-.00093.00573-.00442.00152-.00118.00554-.00427.00142-.0011.00554-.00429.00155-.0012.00616-.00478.00057-.00044.02837-.0221.00045-.00033.00643-.005.001-.00079.006-.00472.00105-.0008.006-.00472.001-.00076.00656-.00517.00024-.00019.04249-.0336.00026-.0002.00677-.00538.00033-.00028q.31193-.24836.6048-.51887l-3.73117-4.03975Zm7.20385-4.32665-5.49527.20789q.00395.10372.00394.20841a5.28509,5.28509,0,0,1-.403,2.0387l5.07821,2.11019a10.736,10.736,0,0,0,.55189-1.72693l.00011-.00046.00175-.00768.00008-.00034.00167-.00733.00022-.001.00163-.00724.00017-.00072.00164-.00726.0002-.0009.00166-.00736.00013-.00058.00163-.00729.00022-.001.00159-.00709.00021-.001.00158-.0071.00023-.001.00158-.00712.0002-.00093.00156-.007.00026-.00118.00153-.007.00023-.001.00156-.00711.00021-.001.00157-.00719.00018-.00082.00158-.00724.0002-.00094.00154-.00713.00023-.001.00153-.00709.00022-.001.00154-.00714.00019-.00087.00152-.00711.00027-.00125.00147-.0069.00024-.0011.00152-.00714.00016-.00075.00157-.00743.00012-.00054.0016-.00761.00009-.00043.00163-.00773.00006-.00027.00165-.00786,0-.00021.00165-.0079.00005-.00023.00163-.00786.00008-.00034q.02016-.09709.0386-.19491l0-.00019.0015-.008,0-.00021.00138-.00738.00017-.00091.00134-.00716.00019-.00105L77.46,95.6341l.0002-.001.00135-.0073.00016-.00087.00124-.00673.0003-.00166.0012-.00654.0003-.00164.00117-.00639.00034-.00187.0012-.00658.00027-.00155.00119-.00654.00031-.00172.0012-.00666.00026-.00149.0012-.00664.00028-.0016.0012-.00672.00027-.00148.00113-.00641.00036-.002.00109-.00618.00037-.0021.001-.00587.00043-.00249.001-.00586.00041-.00234.001-.00585.00041-.00236.00105-.006.00038-.00222.001-.00593.0004-.00235.00105-.0061.00034-.002.00106-.00618.00037-.00212.001-.00607.00039-.0023.001-.00583.00042-.00244.001-.00593.00039-.00231.001-.00586.00041-.0024.001-.006.00038-.00225.001-.00594.00038-.0023.001-.00609.00035-.00214.001-.0059.00043-.00264.00093-.00566.00043-.00261L77.5,95.40454l.00045-.00279.00091-.00562.00041-.00251.00092-.00571.00042-.00259.00094-.0058.00036-.00229.001-.006.00033-.00212.001-.00631.00027-.00171.001-.00647.00031-.002.001-.00636.00029-.00188.001-.00629.00034-.0022.001-.00622.00026-.00166.001-.00661.00025-.00164.001-.00668.00023-.00153.001-.00668.00026-.00173.001-.00674.0001-.00059.00116-.00763.00015-.001.0011-.00727.00016-.00108.00108-.00713.00024-.00164.01189-.08123v-.00005l.001-.00737.00014-.001.001-.00678.00022-.00158.001-.007.00017-.00127.00091-.00648.00027-.00195.00084-.006.00033-.00233.00077-.00563.00039-.00278.00079-.00578.00033-.00248.00081-.00587.00034-.00251.00078-.00573.00036-.00263.00075-.00563.00037-.00276.00078-.00579.00033-.00246.00076-.00573.00037-.00274.00073-.0055.00038-.00286.00071-.00535.0004-.0031.00071-.0054.00037-.00284.00072-.00551.00037-.00293.00071-.0054.00038-.00295.00068-.00533.0004-.00311.00068-.0053.00038-.003.00068-.0053.0004-.00316.00064-.00511.00043-.00335.00061-.00491.00044-.00352.00062-.005.00042-.00337.00061-.005.00044-.00353.0006-.00492.00041-.00339.00061-.00492.00043-.00357.0006-.005.00039-.0032.00064-.00523.00039-.00327.00061-.00511.00039-.00324.00061-.0051.0004-.00337.00061-.00514.00036-.00308.00062-.00532.00038-.00317.00061-.00525.00036-.0031.00061-.00521.00038-.00333.00059-.00514.00036-.00311.0006-.00527.00039-.00339.00055-.00488.00042-.00366.00053-.00472.00043-.00384.00052-.0046.0004-.00365.00053-.0048.00043-.00382.0005-.0045.00044-.004.00049-.00446.00042-.00389.00051-.00465.00037-.00347.00054-.005.00039-.00358.00051-.00486.00039-.00356.00051-.00481.00039-.00376.00051-.00475.00035-.00332.00054-.00514.00036-.00345.00051-.00493.00035-.00339.00054-.00513.00029-.00294.00057-.00555.00024-.00229.00063-.0062.00019-.00183.00066-.00659.00022-.00211.00061-.00621.00035-.00351.0005-.005.00023-.00237.00378-.03883.00008-.00093.00056-.00595.00025-.00255.00046-.00483L77.594,94.671l.00043-.00462.00035-.00384.00046-.00481.00033-.00362.00047-.00514.0003-.00332.00045-.005.00032-.00352.00047-.00511.00029-.00332.00047-.00525.00029-.00319.00046-.00522.0003-.00333.00041-.00468.00034-.0039.00039-.00455.00034-.00389.00042-.00481.0003-.00359.00044-.00508.00029-.00342.00041-.0048.00031-.00375.0004-.00481.00031-.00364.0004-.00485.0003-.00363.00041-.00494.00029-.00357.00038-.0047.00032-.00387.00038-.00471.0003-.00375L77.607,94.522l.00029-.00366.00038-.0049.00029-.00363.00037-.0047.00031-.00389.00035-.00463.0003-.00384.00036-.00473.00029-.00371.00036-.00476.0003-.00393.00032-.00432.00033-.0043.00031-.00426.00031-.00422.00032-.00433.00031-.00412.00032-.00448.00029-.00407.00032-.00436.0003-.00417.00032-.00442.00029-.00408.00031-.00446.00028-.004.00032-.00458.00028-.00408.00029-.00426.0003-.00436.0003-.00427.00028-.00422.00029-.00424.00028-.00429.00029-.00435.00028-.00411.00029-.0044.00026-.0041.0003-.00454.00025-.0039.0003-.00463.00025-.00385.00029-.00472.00026-.00405.00027-.00431.00027-.00436.00026-.00426.00027-.00426.00026-.00426.00025-.00417.00027-.00447.00025-.00414.00025-.00431.00026-.00439.00025-.0042.00025-.00425.00025-.00431.00024-.00413.00025-.00447.00025-.00435.00023-.00409.00026-.00468.00022-.00392.00025-.00456.00022-.004.00023-.00425.00024-.00441.00021-.004.00024-.00456.00023-.00435.00022-.0042.00023-.00443.00022-.00415.0002-.00377.00024-.00489.00021-.004.00022-.00446.0003-.00613.00012-.00249.00036-.00727.00032-.00655.00015-.00327.00018-.00387.00023-.0048.00022-.00486L77.63,94.155l.00024-.00514.00016-.00353.00021-.00485.00017-.00369.0002-.00462.00018-.004.00021-.00479.00016-.00368.00021-.00511.00015-.0035.00022-.00528.00013-.00325.00021-.00493.00015-.00379.00018-.00461.00016-.004.00019-.00463.00015-.004.00018-.00468.00015-.00389.00017-.00434.00016-.00448.00015-.00384.00017-.00469.00015-.00408.00016-.00455.00015-.00422.00015-.00425.00015-.00438.00015-.00436.00015-.00425.00013-.00425.00016-.00445.00013-.00418.00015-.0045.00013-.004.00014-.00442.00013-.00437.00013-.00425.00013-.00424.00013-.00436.00013-.00436.00013-.00433.00012-.00415.00013-.00444.00012-.00433.00012-.00433.00011-.00412.00013-.00456.0001-.00416.00012-.00441.0001-.00419.00012-.00433.00011-.00455.0001-.004.00011-.0045.0001-.00425.0001-.00442.0001-.0042.0001-.00438.00009-.00423.0001-.00454.00009-.00412.00009-.00433.00009-.00439.00009-.00431.00008-.00432.00008-.00422.00009-.00442.00008-.00438.00008-.00422.00007-.00435.00008-.00433.00008-.00434.00007-.00432.00006-.00422.00007-.00444.00007-.00436.00007-.00425.00006-.00429.00006-.00441.00006-.00424.00006-.00445.00006-.00405.00006-.00458,0-.0043.00006-.00433.00005-.00425.00005-.00442,0-.00431.00005-.00434,0-.00433,0-.0043.00005-.00453,0-.00413,0-.00455,0-.0041,0-.00462,0-.00407,0-.00448,0-.00419,0-.00476,0-.00388,0-.00479,0-.0039v-.00519l0-.00343,0-.00545V93.679l0-.00315v-.02607h0v-.02639l0-.00757v-.00264l0-.0055v-.00255l0-.00764V93.596l0-.00614V93.5866l0-.00442,0-.0037,0-.00494,0-.00545,0-.004,0-.00419,0-.00333,0-.00446,0-.0022-.00008-.00953,0-.002-.00005-.00529,0-.00178-.0003-.025v-.00006q-.00131-.10038-.00443-.20032l-.00006-.002L77.636,93.299l-.0001-.00328-.00016-.005-.00021-.00622-.00008-.00241-.0002-.006-.00006-.00173-.00147-.04077Zm-4.10518-8.07467L70.11713,89.472a5.39586,5.39586,0,0,1,1.45159,1.76947l4.9-2.49615-.00827-.01622-.00022-.00042-.004-.00776-.00019-.00035-.004-.00779-.00018-.00035a10.8481,10.8481,0,0,0-1.74985-2.47675l-.00007-.00008-.00608-.00646-.00025-.00026-.006-.00634-.00023-.00025-.03121-.0329-.00014-.00014-.006-.00633-.00044-.00045-.0056-.00586-.00085-.0009-.0054-.00564-.00078-.00081-.00556-.00582-.00058-.00061L74.608,86.137l-.00091-.00094-.00517-.00537-.00127-.0013-.00486-.005-.00145-.00149-.00477-.00492-.00135-.0014-.00479-.00493-.00148-.00153-.00516-.0053-.00086-.00089-.01859-.019-.00142-.00144-.00467-.00478-.00183-.00186-.00422-.00432-.002-.00208-.0041-.00417-.00217-.00221-.00375-.00381-.00245-.00249-.004-.004-.00209-.00211-.00474-.00481-.00134-.00135-.00607-.00615-.00182-.00183-.00422-.00425-.00268-.00271-.0034-.00343-.0027-.00272-.00342-.00344-.00281-.00283-.00327-.00328-.00282-.00283-.00326-.00328-.00295-.00294-.00321-.00322-.00279-.00279-.00347-.00347-.00275-.00275-.00361-.0036-.00594-.00592-.0022-.00219-.00355-.00353-.00266-.00265-.00336-.00334-.00264-.00261-.00353-.00351-.00252-.0025L74.43327,85.96l-.00223-.0022-.00383-.0038-.00222-.00218-.00394-.0039-.00148-.00145-.02127-.02093-.00081-.0008-.00459-.0045-.00154-.0015-.00434-.00425-.00174-.0017-.00421-.00411-.00181-.00177-.00441-.00431-.0013-.00126-.00474-.00463L74.368,85.8959l-.028-.02717-.00066-.00063-.005-.00478-.00121-.00117-.00487-.0047-.001-.00091-.00517-.005-.00055-.00052-.03475-.03329-.00005-.00005-.0057-.00543-.00026-.00024-.00566-.00539-.00024-.00023q-.35795-.34024-.74641-.6476Zm-6.70668-2.32876v5.4992a5.36552,5.36552,0,0,1,1.25244.147l1.28495-5.347-.00078-.00019-.00808-.00193-.001-.00025-.03766-.00895-.00045-.0001-.00906-.00212-.0004-.0001a10.79912,10.79912,0,0,0-1.60785-.2509h0l-.01-.0008h-.00008l-.0499-.00382-.00068,0-.00936-.00069-.00052,0-.04965-.00352-.001-.00006-.009-.00061-.001-.00007-.00933-.00063-.00043,0-.03-.002-.00038,0-.00923-.00059-.00133-.00008-.00858-.00054-.00126-.00008-.00922-.00057-.00049,0-.02-.0012h0l-.00966-.00057-.00128-.00008-.00839-.00048-.00177-.00011-.0082-.00046-.00159-.0001-.00888-.00049L67.432,82.847l-.02959-.0016-.00157-.00008-.00807-.00042-.002-.00011-.00813-.00042-.00148-.00008-.00932-.00047h-.00035l-.02-.001-.00065,0-.009-.00043-.00168-.00008-.008-.00037-.0021-.00009-.00787-.00037-.0019-.00008-.00865-.00039-.001-.00005L67.29079,82.84l-.0011-.00005-.00856-.00036-.002-.00008-.00769-.00031-.00236-.0001-.00769-.00031-.002-.00008-.00888-.00035-.00075,0-.01956-.00074-.00234-.00009-.00731-.00026-.0028-.00011-.0069-.00024-.00282-.0001-.00725-.00026-.0024-.00008-.00823-.00027-.0014,0-.0099-.00033h-.00014l-.00939-.00029-.00252-.00008-.007-.00022-.00328-.0001-.0063-.00019-.0035-.0001-.00642-.00019-.00308-.00008-.0077-.00023-.00186-.00005L67.118,82.834l-.00093,0-.0086-.00023-.00268-.00007-.007-.00017-.003-.00008-.00658-.00016-.0032-.00007-.00687-.00017-.00276-.00006-.008-.00019-.00163,0-.00963-.0002-.002-.00005-.00759-.00015-.00308-.00006-.00648-.00013-.00341-.00007-.00629-.00012-.00349-.00006-.00652-.00012-.003-.00006-.00787-.00013-.00178,0-.00957-.00016-.00254,0-.00688-.0001-.0037-.00006-.006-.00008-.00369-.00005-.006-.00008-.00353-.00005-.00665-.00008-.00295,0-.00832-.0001h-.00128l-.00959-.00011-.00255,0-.007-.00007-.00341,0-.00617-.00006-.00372,0-.00583,0-.00392,0-.00633-.00005-.00308,0-.00836-.00005h-.00131l-.00949-.00005h-.00313l-.00635,0h-.00384l-.00592,0h-.03254Z"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_OFF@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_OFF@128.png new file mode 100644 index 0000000000000000000000000000000000000000..396a588f204a041960494aeb808220f29f9c9a68 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_OFF@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_OFF@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_OFF@256.png new file mode 100644 index 0000000000000000000000000000000000000000..3927052b6a5ae85fe04f36890a18da705807c174 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_OFF@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_OFF@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_OFF@32.png new file mode 100644 index 0000000000000000000000000000000000000000..145854b85643e78153cc90fe935fca4aa327899c Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_OFF@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_OFF@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_OFF@512.png new file mode 100644 index 0000000000000000000000000000000000000000..6c0ab7ee67384e54e28d1be38167853314f5f9e6 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_OFF@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_OFF@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_OFF@64.png new file mode 100644 index 0000000000000000000000000000000000000000..43b7e9dfa5dc4b0c434589cdcb79f2c26b762e34 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_OFF@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_OK.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_OK.svg new file mode 100644 index 0000000000000000000000000000000000000000..a5f58414b9c27b17bbb32869b23dbcd7a58eac70 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_OK.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1,.cls-3{fill:none;}.cls-1{stroke:#000;stroke-linecap:square;stroke-linejoin:round;}.cls-1,.cls-2{stroke-width:6.15118px;}.cls-2{fill:#3dd83d;stroke:#288c28;}.cls-4{fill:#288c28;}</style></defs><title>valve_hand-solenoid-analog_v05</title><path class="cls-1" d="M66.82188,24.0441V92.54438"/><path class="cls-1" d="M31.17459,24.0441h71.29457"/><polygon class="cls-2" points="7.122 62.65 7.122 124.65 66.822 93.65 7.122 62.65"/><polygon class="cls-2" points="126.522 124.65 126.522 62.65 66.822 93.65 126.522 124.65"/><rect class="cls-3" width="133.64375" height="133.64375"/><circle class="cls-4" cx="66.82188" cy="93.64978" r="10.81973"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_OK@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_OK@128.png new file mode 100644 index 0000000000000000000000000000000000000000..5bdc3d7f29e0cf7f7950b242a1067bf4bde0b58d Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_OK@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_OK@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_OK@256.png new file mode 100644 index 0000000000000000000000000000000000000000..f8252cf711e2c436a5c4ef48214e2fe2a2099240 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_OK@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_OK@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_OK@32.png new file mode 100644 index 0000000000000000000000000000000000000000..7b117b1cd7f06c90f5217e5d3b821f7f4cb40e9c Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_OK@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_OK@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_OK@512.png new file mode 100644 index 0000000000000000000000000000000000000000..d1103753774b621eb61d9251e824f1d35ac1ecb4 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_OK@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_OK@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_OK@64.png new file mode 100644 index 0000000000000000000000000000000000000000..60597ea7663feedb7428b67bd1fbdbe3d9183825 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_OK@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_WARNING.svg b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_WARNING.svg new file mode 100644 index 0000000000000000000000000000000000000000..f44a95953f7f614ee6d536a3f2583e9f015e7ee1 --- /dev/null +++ b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_WARNING.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.64375 133.64375"><defs><style>.cls-1,.cls-3{fill:none;}.cls-1{stroke:#000;stroke-linecap:square;stroke-linejoin:round;}.cls-1,.cls-2{stroke-width:6.15118px;}.cls-2{fill:#fcf211;stroke:#96900a;}.cls-4{fill:#96900a;}</style></defs><title>valve_hand-solenoid-analog_v05</title><path class="cls-1" d="M66.82188,24.0441V92.54438"/><path class="cls-1" d="M31.17459,24.0441h71.29457"/><polygon class="cls-2" points="7.122 62.65 7.122 124.65 66.822 93.65 7.122 62.65"/><polygon class="cls-2" points="126.522 124.65 126.522 62.65 66.822 93.65 126.522 124.65"/><rect class="cls-3" width="133.64375" height="133.64375"/><circle class="cls-4" cx="66.82188" cy="93.64978" r="10.81973"/></svg> \ No newline at end of file diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_WARNING@128.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_WARNING@128.png new file mode 100644 index 0000000000000000000000000000000000000000..844d17d579192d3ee9c371e0458fd5bf500b74ae Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_WARNING@128.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_WARNING@256.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_WARNING@256.png new file mode 100644 index 0000000000000000000000000000000000000000..d1194fa8f39f0f439657fa79b9c645013014a4a6 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_WARNING@256.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_WARNING@32.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_WARNING@32.png new file mode 100644 index 0000000000000000000000000000000000000000..c123d1ddf362353acddcfacdfce23ed721eb4e5d Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_WARNING@32.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_WARNING@512.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_WARNING@512.png new file mode 100644 index 0000000000000000000000000000000000000000..657176ebe6521643b5f1f4ec0ba04fd89733a925 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_WARNING@512.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_WARNING@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_WARNING@64.png new file mode 100644 index 0000000000000000000000000000000000000000..4bab9cb6445a56207e4d58b2c7b69d9f4153b883 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/valve_hand/valve_hand_WARNING@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpdp/vpdp_BLUE@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpdp/vpdp_BLUE@64.png new file mode 100644 index 0000000000000000000000000000000000000000..2b0435bf318b804100455fb039149f52163cb6e1 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpdp/vpdp_BLUE@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpdp/vpdp_ERROR@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpdp/vpdp_ERROR@64.png new file mode 100644 index 0000000000000000000000000000000000000000..bd47a97523ad68293441c3e3f35c8d61c1d66a69 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpdp/vpdp_ERROR@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpdp/vpdp_INVALID@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpdp/vpdp_INVALID@64.png new file mode 100644 index 0000000000000000000000000000000000000000..40ae2bb65603af535f64b993f14c9d1b0a1ab79e Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpdp/vpdp_INVALID@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpdp/vpdp_NEUTRAL@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpdp/vpdp_NEUTRAL@64.png new file mode 100644 index 0000000000000000000000000000000000000000..51293299f8748b8ca05a8da1db04a642880aaff2 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpdp/vpdp_NEUTRAL@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpdp/vpdp_NEUTRAL_w@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpdp/vpdp_NEUTRAL_w@64.png new file mode 100644 index 0000000000000000000000000000000000000000..725959879522f3804b7c609595295cf6a0d480da Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpdp/vpdp_NEUTRAL_w@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpdp/vpdp_NOT_CONTROLED@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpdp/vpdp_NOT_CONTROLED@64.png new file mode 100644 index 0000000000000000000000000000000000000000..0e8282e7a09bf7d1c9c119421f60d9672f80d13d Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpdp/vpdp_NOT_CONTROLED@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpdp/vpdp_OFF@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpdp/vpdp_OFF@64.png new file mode 100644 index 0000000000000000000000000000000000000000..5925913b91df397006ebd628bb5f7e6886d0b81b Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpdp/vpdp_OFF@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpdp/vpdp_OK@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpdp/vpdp_OK@64.png new file mode 100644 index 0000000000000000000000000000000000000000..5d8c985b01df3db808753b653072cab335eac778 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpdp/vpdp_OK@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpdp/vpdp_WARNING@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpdp/vpdp_WARNING@64.png new file mode 100644 index 0000000000000000000000000000000000000000..46cd640dc80c5ef89693a73cb3e3a762c486b882 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpdp/vpdp_WARNING@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpdp/vpdp_valve_solenoid_CLOSED@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpdp/vpdp_valve_solenoid_CLOSED@64.png new file mode 100644 index 0000000000000000000000000000000000000000..c6066d100ece17a933de828f7a2063269fd27e9d Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpdp/vpdp_valve_solenoid_CLOSED@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpdp/vpdp_valve_solenoid_CLOSED_w@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpdp/vpdp_valve_solenoid_CLOSED_w@64.png new file mode 100644 index 0000000000000000000000000000000000000000..d3aa3efe69bacfbd07be770df17c129b97183e25 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpdp/vpdp_valve_solenoid_CLOSED_w@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpt/vpt_BLUE@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpt/vpt_BLUE@64.png new file mode 100644 index 0000000000000000000000000000000000000000..62b2a24bcd79fa748dfac3fd09b5c9eb5148bf3a Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpt/vpt_BLUE@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpt/vpt_ERROR@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpt/vpt_ERROR@64.png new file mode 100644 index 0000000000000000000000000000000000000000..26d1c9d247b2c88b035cfe51345f51e731701ecd Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpt/vpt_ERROR@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpt/vpt_INVALID@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpt/vpt_INVALID@64.png new file mode 100644 index 0000000000000000000000000000000000000000..b3965b546baa543a4d2917b3ce48993bf891fda9 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpt/vpt_INVALID@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpt/vpt_NEUTRAL@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpt/vpt_NEUTRAL@64.png new file mode 100644 index 0000000000000000000000000000000000000000..e06afec7865b6da813c4f9ec6bf5b66369941249 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpt/vpt_NEUTRAL@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpt/vpt_NEUTRAL_w@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpt/vpt_NEUTRAL_w@64.png new file mode 100644 index 0000000000000000000000000000000000000000..8b12050b366d7499155355aa06b4ea558bc353e6 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpt/vpt_NEUTRAL_w@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpt/vpt_NOT_CONTROLED@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpt/vpt_NOT_CONTROLED@64.png new file mode 100644 index 0000000000000000000000000000000000000000..30794c9557ecdbf9e2890b6a70fa40909abca387 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpt/vpt_NOT_CONTROLED@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpt/vpt_OFF@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpt/vpt_OFF@64.png new file mode 100644 index 0000000000000000000000000000000000000000..ce8b413fb35bb0b9b1eeb938dbf3eaf07ffef0e4 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpt/vpt_OFF@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpt/vpt_OK@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpt/vpt_OK@64.png new file mode 100644 index 0000000000000000000000000000000000000000..6c2065d124dbb5d23ff70f56227d9f60d24983be Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpt/vpt_OK@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpt/vpt_WARNING@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpt/vpt_WARNING@64.png new file mode 100644 index 0000000000000000000000000000000000000000..5e417420780e1892afb29987531e784199aab1c1 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpt/vpt_WARNING@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpt/vpt_valve_solenoid_CLOSED@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpt/vpt_valve_solenoid_CLOSED@64.png new file mode 100644 index 0000000000000000000000000000000000000000..5bc40bc8252313af99ba8be6e6d5c6734f091604 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpt/vpt_valve_solenoid_CLOSED@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpt/vpt_valve_solenoid_CLOSED_w@64.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpt/vpt_valve_solenoid_CLOSED_w@64.png new file mode 100644 index 0000000000000000000000000000000000000000..72f7647fd9a8eee7ffa5bff414fe1d3e571d0779 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/custom_v02/vpt/vpt_valve_solenoid_CLOSED_w@64.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/diagnostics/CMS_LOCAL.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/diagnostics/CMS_LOCAL.png new file mode 100644 index 0000000000000000000000000000000000000000..79857c9ce43dc989d7099f4ea2dc23d7e3e3559a Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/diagnostics/CMS_LOCAL.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/diagnostics/CMS_REMOTE.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/diagnostics/CMS_REMOTE.png new file mode 100644 index 0000000000000000000000000000000000000000..5038b2dcf56cc79ea1b2e6f476f3c2ac6b7524be Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/diagnostics/CMS_REMOTE.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/diagnostics/CMS_SINAMICS.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/diagnostics/CMS_SINAMICS.png new file mode 100644 index 0000000000000000000000000000000000000000..674362df1a32b2b9eec17b46f523f316da5e05e4 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/diagnostics/CMS_SINAMICS.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/diagnostics/S7CPU_1516_3.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/diagnostics/S7CPU_1516_3.png new file mode 100644 index 0000000000000000000000000000000000000000..021aaf4d9a28da5a0cad13ea6b6d8088613ee662 Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/diagnostics/S7CPU_1516_3.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/diagnostics/S7LOCAL_MODULE.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/diagnostics/S7LOCAL_MODULE.png new file mode 100644 index 0000000000000000000000000000000000000000..b8f036ebc8fb50a061d9e61c2c5489e1ff18c6be Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/diagnostics/S7LOCAL_MODULE.png differ diff --git a/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/diagnostics/S7RAIL.png b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/diagnostics/S7RAIL.png new file mode 100644 index 0000000000000000000000000000000000000000..b8ed0c1c58e700936f8c5beaabe25748d3dd729f Binary files /dev/null and b/NON-APPROVED/Cryo/ICS_OPI_LIBRARY/symbols/diagnostics/S7RAIL.png differ diff --git a/NON-APPROVED/Cryo/PHS/PureHeliumStorage_TankFarmOverview_ESS-0049858.bob b/NON-APPROVED/Cryo/PHS/PureHeliumStorage_TankFarmOverview_ESS-0049858.bob index 98a62ac7a044339d4c7be22e93936f8f70c0bb14..037be59cdfa8edb971e95f7a7df71b7a8b62e7fe 100644 --- a/NON-APPROVED/Cryo/PHS/PureHeliumStorage_TankFarmOverview_ESS-0049858.bob +++ b/NON-APPROVED/Cryo/PHS/PureHeliumStorage_TankFarmOverview_ESS-0049858.bob @@ -3256,14 +3256,14 @@ logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); </widget> <widget type="textupdate" version="2.0.0"> <name>Text Update_3</name> - <pv_name>CrS-PHS:Cryo-HeMass-99000</pv_name> + <pv_name>CrS-PHS::HeMass-99000</pv_name> <x>1609</x> <width>121</width> <transparent>true</transparent> </widget> <widget type="textupdate" version="2.0.0"> <name>Text Update_4</name> - <pv_name>CrS-PHS:Cryo-HeMass-99901</pv_name> + <pv_name>CrS-PHS::HeMass-99901</pv_name> <x>1609</x> <y>21</y> <width>121</width> @@ -3271,7 +3271,7 @@ logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); </widget> <widget type="textupdate" version="2.0.0"> <name>Text Update_5</name> - <pv_name>CrS-PHS:Cryo-HeMass-99900</pv_name> + <pv_name>CrS-PHS::HeMass-99900</pv_name> <x>1609</x> <y>41</y> <width>121</width> diff --git a/NON-APPROVED/Cryo/TICP/CrS-TICP_CRYO_ALAT/opi/cryo-03-cold_box.bob b/NON-APPROVED/Cryo/TICP/CrS-TICP_CRYO_ALAT/opi/cryo-03-cold_box.bob index bb69995838de7d6dd328e8e529cf025538451ab0..fb8655981e124759c818877aae8ef53b947f53de 100644 --- a/NON-APPROVED/Cryo/TICP/CrS-TICP_CRYO_ALAT/opi/cryo-03-cold_box.bob +++ b/NON-APPROVED/Cryo/TICP/CrS-TICP_CRYO_ALAT/opi/cryo-03-cold_box.bob @@ -5223,7 +5223,7 @@ Actual Process Value</tooltip> </widget> <widget type="embedded" version="2.0.0"> <name>CV_ControlValve_BlockIcon_8</name> - <file>../../../../CMS_OPI_BM/DeviceTypes/PIDControls/PID_Control_BlockIcon.bob</file> + <file>../../../ICS_OPI_LIBRARY/DeviceTypes/PIDControls/PID_Control_BlockIcon.bob</file> <macros> <ProcessValue>CrS-TICP:Cryo-PT-31310:Val</ProcessValue> <ProcessValueEGU>bar</ProcessValueEGU> diff --git a/NON-APPROVED/Cryo/TICP/CrS-TICP_CRYO_ALAT/opi/cryo-08-analysers.bob b/NON-APPROVED/Cryo/TICP/CrS-TICP_CRYO_ALAT/opi/cryo-08-analysers.bob index 737a0613c63fd3bedd8f5620c4e10e88568170d9..6e13b53d59d1c6cf372639d67a4933ac5193e504 100644 --- a/NON-APPROVED/Cryo/TICP/CrS-TICP_CRYO_ALAT/opi/cryo-08-analysers.bob +++ b/NON-APPROVED/Cryo/TICP/CrS-TICP_CRYO_ALAT/opi/cryo-08-analysers.bob @@ -2010,7 +2010,7 @@ $(pv_value)</tooltip> </widget> <widget type="embedded" version="2.0.0"> <name>CV_ControlValve_BlockIcon_6</name> - <file>../../../../CMS_OPI_BM/DeviceTypes/GasAnalyser/AS_GasAnalyser_BlockIcon_Vertical_Left.bob</file> + <file>../../../ICS_OPI_LIBRARY/DeviceTypes/GasAnalyser/AS_GasAnalyser_BlockIcon_Vertical_Left.bob</file> <macros> <WIDDev>AS</WIDDev> <WIDDis>Cryo</WIDDis> @@ -2026,7 +2026,7 @@ $(pv_value)</tooltip> </widget> <widget type="embedded" version="2.0.0"> <name>CV_ControlValve_BlockIcon_7</name> - <file>../../../../CMS_OPI_BM/DeviceTypes/GasAnalyser/AS_GasAnalyser_BlockIcon_Vertical_Left.bob</file> + <file>../../../ICS_OPI_LIBRARY/DeviceTypes/GasAnalyser/AS_GasAnalyser_BlockIcon_Vertical_Left.bob</file> <macros> <WIDDev>AS</WIDDev> <WIDDis>Cryo</WIDDis> @@ -2042,7 +2042,7 @@ $(pv_value)</tooltip> </widget> <widget type="embedded" version="2.0.0"> <name>CV_ControlValve_BlockIcon_8</name> - <file>../../../../CMS_OPI_BM/DeviceTypes/GasAnalyser/AS_GasAnalyser_BlockIcon_Vertical_Left.bob</file> + <file>../../../ICS_OPI_LIBRARY/DeviceTypes/GasAnalyser/AS_GasAnalyser_BlockIcon_Vertical_Left.bob</file> <macros> <WIDDev>AS</WIDDev> <WIDDis>Cryo</WIDDis> diff --git a/NON-APPROVED/Cryo/TMCP/Common/MainOPI/header.bob b/NON-APPROVED/Cryo/TMCP/Common/MainOPI/header.bob index c9f0def47ca4637b5ce05a1ea852ab31f2fe1ae4..b076de8db34ccac6b39b1a66e4e978492718a644 100644 --- a/NON-APPROVED/Cryo/TMCP/Common/MainOPI/header.bob +++ b/NON-APPROVED/Cryo/TMCP/Common/MainOPI/header.bob @@ -2,6 +2,7 @@ <display version="2.0.0"> <name>header</name> <macros> + <LOCKID>LCR1</LOCKID> <P>CrS-TMCP:CRYO</P> </macros> <width>1259</width> @@ -38,7 +39,7 @@ $(pv_value)</tooltip> <x>20</x> <y>3</y> <width>312</width> - <height>43</height> + <height>41</height> <font> <font family="Source Sans Pro" style="BOLD_ITALIC" size="32.0"> </font> @@ -88,8 +89,8 @@ $(pv_value)</tooltip> </macros> <x>5</x> <y>96</y> - <width>713</width> - <height>66</height> + <width>711</width> + <height>64</height> <resize>2</resize> </widget> <widget type="embedded" version="2.0.0"> @@ -100,8 +101,8 @@ $(pv_value)</tooltip> </macros> <x>740</x> <y>54</y> - <width>512</width> - <height>106</height> + <width>510</width> + <height>104</height> <resize>2</resize> </widget> <widget type="label" version="2.0.0"> @@ -189,7 +190,7 @@ $(pv_value)</tooltip> </color> </off_color> <on_color> - <color name="ON" red="22" green="222" blue="33"> + <color name="ON" red="70" green="255" blue="70"> </color> </on_color> <foreground_color> diff --git a/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/DigitalMeasure/HW_INTLCK_BlockIcon_Compact.bob b/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/DigitalMeasure/HW_INTLCK_BlockIcon_Compact.bob new file mode 100644 index 0000000000000000000000000000000000000000..89c9341974f16f43534d1ac62ab64ea97a908bd4 --- /dev/null +++ b/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/DigitalMeasure/HW_INTLCK_BlockIcon_Compact.bob @@ -0,0 +1,81 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>HW_INTLCK_BlockIcon_Compact</name> + <width>50</width> + <height>32</height> + <widget type="label" version="2.0.0"> + <name>WID_AUTMANIcon</name> + <text>A</text> + <x>20</x> + <width>30</width> + <height>30</height> + <font> + <font family="Source Sans Pro" style="BOLD" size="20.0"> + </font> + </font> + <horizontal_alignment>1</horizontal_alignment> + <rules> + <rule name="TextRule" prop_id="text" out_exp="false"> + <exp bool_exp="pv0 == true"> + <value>A</value> + </exp> + <exp bool_exp="pv1 == true"> + <value>M</value> + </exp> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Auto</pv_name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:OpMode_Manual</pv_name> + </rule> + </rules> + <tooltip>Opmode indicator</tooltip> + </widget> + <widget type="led" version="2.0.0"> + <name>LED</name> + <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:Closed</pv_name> + <y>10</y> + <off_color> + <color name="ERROR" red="252" green="13" blue="27"> + </color> + </off_color> + </widget> + <widget type="action_button" version="3.0.0"> + <name>WID_OpenFaceplate</name> + <actions> + <action type="execute"> + <script file="EmbeddedJs"> + <text><![CDATA[/* Embedded javascript */ +/* Author: Miklos Boros*/ +/* Function: check if locking is allowed is yes then generate the LockID, after that it opens the Faceplate*/ + + +PVUtil = org.csstudio.display.builder.runtime.script.PVUtil; +logger = org.csstudio.display.builder.runtime.script.ScriptUtil.getLogger(); +PVFactory = org.csstudio.display.builder.runtime.pv.PVFactory; + + +macros = widget.getEffectiveMacros(); +WIDIndex = macros.getValue("WIDIndex"); +WIDSecSub = macros.getValue("WIDSecSub"); +WIDDis = macros.getValue("WIDDis"); +WIDDev = macros.getValue("WIDDev"); + + + /* OPEN FACEPLATE*/ + var map = new Object(); + map["Dev"] = WIDDev; + map["Dis"] = WIDDis; + map["Index"] = WIDIndex; + map["SecSub"] = WIDSecSub; + org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "HW_INTLCK_Faceplate.bob", "STANDALONE", map); + +]]></text> + </script> + <description>Open Faceplate</description> + </action> + </actions> + <text></text> + <width>50</width> + <height>32</height> + <transparent>true</transparent> + <tooltip>Open faceplate</tooltip> + </widget> +</display> diff --git a/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/DigitalMeasure/HW_INTLCK_Faceplate.bob b/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/DigitalMeasure/HW_INTLCK_Faceplate.bob new file mode 100644 index 0000000000000000000000000000000000000000..c54e5bdd20debc0ab260a13a5686a3656a332851 --- /dev/null +++ b/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/DigitalMeasure/HW_INTLCK_Faceplate.bob @@ -0,0 +1,474 @@ +<?xml version="1.0" encoding="UTF-8"?> +<display version="2.0.0"> + <name>HW_INTLCK_Faceplate</name> + <width>460</width> + <height>560</height> + <widget type="tabs" version="2.0.0"> + <name>Tabs</name> + <tabs> + <tab> + <name>Status</name> + <children> + <widget type="group" version="2.0.0"> + <name>group.status</name> + <x>10</x> + <y>10</y> + <width>218</width> + <height>340</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.status.border</name> + <width>218</width> + <height>330</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.status.background</name> + <x>5</x> + <y>35</y> + <width>213</width> + <height>289</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Status</name> + <text>STATUS</text> + <width>218</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Status_Position</name> + <text>Position</text> + <x>15</x> + <y>50</y> + <width>203</width> + <height>25</height> + <font> + <font name="Default Bold" family="Source Sans Pro" style="BOLD" size="16.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <transparent>false</transparent> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Opened</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Opened</pv_name> + <x>48</x> + <y>87</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Valve position</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Opened</name> + <text>OPENED</text> + <x>83</x> + <y>87</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Closed</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Closed</pv_name> + <x>48</x> + <y>122</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Valve position</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Closed</name> + <text>CLOSED</text> + <x>84</x> + <y>123</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Status_Solenoid</name> + <text>Relay</text> + <x>15</x> + <y>165</y> + <width>203</width> + <height>25</height> + <font> + <font name="Default Bold" family="Source Sans Pro" style="BOLD" size="16.0"> + </font> + </font> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <transparent>false</transparent> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Solenoid</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Closed</pv_name> + <x>48</x> + <y>202</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Valve solenoid state</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_Solenoid</name> + <text>OUTPUT</text> + <x>84</x> + <y>203</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="group" version="2.0.0"> + <name>group.op.modes</name> + <x>228</x> + <y>10</y> + <width>190</width> + <height>340</height> + <style>3</style> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.border</name> + <width>195</width> + <height>330</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>group.op.modes.background</name> + <x>5</x> + <y>35</y> + <width>185</width> + <height>289</height> + <line_width>0</line_width> + <line_color> + <color name="PRIMARY-GROUP-BORDER" red="151" green="188" blue="202"> + </color> + </line_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_OP_MODES</name> + <text>OP MODES</text> + <width>190</width> + <height>35</height> + <font> + <font name="Header 2" family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BACKGROUND" red="200" green="205" blue="201"> + </color> + </background_color> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Auto</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Auto</pv_name> + <x>40</x> + <y>57</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_AUTO</name> + <text>AUTO</text> + <x>73</x> + <y>57</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="led" version="2.0.0"> + <name>LED_Manual</name> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Manual</pv_name> + <x>40</x> + <y>92</y> + <width>25</width> + <height>25</height> + <off_color> + <color name="Grid" red="169" green="169" blue="169"> + </color> + </off_color> + <tooltip>Operation mode</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_STAT_MANUAL</name> + <text>MANUAL</text> + <x>75</x> + <y>92</y> + <width>60</width> + <height>25</height> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_MESSAGES</name> + <text>MESSAGES</text> + <x>5</x> + <y>160</y> + <width>185</width> + <font> + <font family="Source Sans Pro" style="BOLD_ITALIC" size="21.0"> + </font> + </font> + <foreground_color> + <color name="GRAY-TEXT" red="255" green="255" blue="255"> + </color> + </foreground_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + <transparent>false</transparent> + <horizontal_alignment>1</horizontal_alignment> + <vertical_alignment>1</vertical_alignment> + </widget> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>buttons.bar</name> + <x>8</x> + <y>361</y> + <width>415</width> + <height>80</height> + <line_width>0</line_width> + <line_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </line_color> + <background_color> + <color name="GROUP-BORDER" red="150" green="155" blue="151"> + </color> + </background_color> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_AUTO</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Auto</pv_name> + <text>AUTO</text> + <x>12</x> + <y>402</y> + <width>200</width> + <height>33</height> + <tooltip>AUTO operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_MANUAL</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_Manual</pv_name> + <text>MANUAL</text> + <x>217</x> + <y>403</y> + <width>200</width> + <height>33</height> + <tooltip>MANUAL operation mode</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_MAN_ON</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ManuOpen</pv_name> + <text>OPEN</text> + <x>217</x> + <y>367</y> + <width>99</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0)"> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1)"> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Manual</pv_name> + </rule> + </rules> + <tooltip>Manual OPEN</tooltip> + </widget> + <widget type="action_button" version="3.0.0"> + <name>BTN_MAN_OFF</name> + <actions> + <action type="write_pv"> + <pv_name>$(pv_name)</pv_name> + <value>1</value> + <description>Write PV</description> + </action> + </actions> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:Cmd_ManuClose</pv_name> + <text>CLOSE</text> + <x>318</x> + <y>367</y> + <width>99</width> + <height>33</height> + <rules> + <rule name="EnableRule" prop_id="enabled" out_exp="false"> + <exp bool_exp="(pv0 == 0) "> + <value>false</value> + </exp> + <exp bool_exp="(pv0 == 1) "> + <value>true</value> + </exp> + <pv_name>${SecSub}:${Dis}-${Dev}-${Index}:OpMode_Manual</pv_name> + </rule> + </rules> + <tooltip>Manual CLOSE</tooltip> + </widget> + </children> + </tab> + <tab> + <name>Trend</name> + <children> + <widget type="databrowser" version="2.0.0"> + <name>DataBrowser</name> + <file>HW_INTLCK_Faceplate_Trend.plt</file> + <width>438</width> + <height>441</height> + </widget> + </children> + </tab> + </tabs> + <x>10</x> + <y>60</y> + <width>440</width> + <height>490</height> + </widget> + <widget type="rectangle" version="2.0.0"> + <name>Header Bar</name> + <width>460</width> + <height>50</height> + <line_width>0</line_width> + <line_color> + <color red="0" green="0" blue="255" alpha="0"> + </color> + </line_color> + <background_color> + <color name="PRIMARY-HEADER-BACKGROUND" red="151" green="188" blue="202"> + </color> + </background_color> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_HeaderPVName</name> + <text>${SecSub}:${Dis}-${Dev}-${Index}</text> + <x>20</x> + <width>440</width> + <height>50</height> + <font> + <font name="Header 1" family="Source Sans Pro" style="BOLD_ITALIC" size="36.0"> + </font> + </font> + <vertical_alignment>1</vertical_alignment> + </widget> +</display> diff --git a/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/DigitalMeasure/HW_INTLCK_Faceplate_Trend.plt b/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/DigitalMeasure/HW_INTLCK_Faceplate_Trend.plt new file mode 100644 index 0000000000000000000000000000000000000000..994bc9851bd13079362ab24feea1f82269b9cfd7 --- /dev/null +++ b/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/DigitalMeasure/HW_INTLCK_Faceplate_Trend.plt @@ -0,0 +1,110 @@ +<?xml version="1.0" encoding="UTF-8"?> +<databrowser> + <title></title> + <show_toolbar>true</show_toolbar> + <update_period>3.0</update_period> + <scroll_step>5</scroll_step> + <scroll>true</scroll> + <start>-10 minutes</start> + <end>now</end> + <archive_rescale>NONE</archive_rescale> + <foreground> + <red>229</red> + <green>229</green> + <blue>229</blue> + </foreground> + <background> + <red>77</red> + <green>77</green> + <blue>77</blue> + </background> + <title_font>System|16|1</title_font> + <label_font>System|11|1</label_font> + <scale_font>System|10|0</scale_font> + <legend_font>System|10|0</legend_font> + <axes> + <axis> + <visible>true</visible> + <name>Value Axis</name> + <use_axis_name>true</use_axis_name> + <use_trace_names>true</use_trace_names> + <right>false</right> + <color> + <red>255</red> + <green>165</green> + <blue>0</blue> + </color> + <min>0.0</min> + <max>25.0</max> + <grid>true</grid> + <autoscale>false</autoscale> + <log_scale>false</log_scale> + </axis> + <axis> + <visible>true</visible> + <name>Value 1</name> + <use_axis_name>false</use_axis_name> + <use_trace_names>true</use_trace_names> + <right>false</right> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <min>0.0</min> + <max>10.0</max> + <grid>false</grid> + <autoscale>false</autoscale> + <log_scale>false</log_scale> + </axis> + </axes> + <annotations> + </annotations> + <pvlist> + <pv> + <display_name>Closed</display_name> + <visible>true</visible> + <name>${SecSub}:${Dis}-${Dev}-${Index}:Closed</name> + <axis>0</axis> + <color> + <red>0</red> + <green>255</green> + <blue>0</blue> + </color> + <trace_type>AREA</trace_type> + <linewidth>2</linewidth> + <line_style>SOLID</line_style> + <point_type>NONE</point_type> + <point_size>2</point_size> + <waveform_index>0</waveform_index> + <period>0.0</period> + <ring_size>5000</ring_size> + <request>OPTIMIZED</request> + <archive> + <name>pbraw://archiver-01.tn.esss.lu.se:17668/retrieval</name> + <url>pbraw://archiver-01.tn.esss.lu.se:17668/retrieval</url> + <key>1</key> + </archive> + </pv> + <pv> + <display_name>Opened</display_name> + <visible>true</visible> + <name>${SecSub}:${Dis}-${Dev}-${Index}:Opened</name> + <axis>1</axis> + <color> + <red>255</red> + <green>0</green> + <blue>0</blue> + </color> + <trace_type>AREA</trace_type> + <linewidth>2</linewidth> + <line_style>SOLID</line_style> + <point_type>NONE</point_type> + <point_size>2</point_size> + <waveform_index>0</waveform_index> + <period>0.0</period> + <ring_size>5000</ring_size> + <request>OPTIMIZED</request> + </pv> + </pvlist> +</databrowser> diff --git a/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/Heaters/EH_HeaterSupply_Analog_BlockIcon_OnlyText_Horizontal.bob b/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/Heaters/EH_HeaterSupply_Analog_BlockIcon_OnlyText_Horizontal.bob index 5092357548acfdb0e92dc6c973815e1d0b52df28..17dcaf60a438672feb72e231ba497c10a394570d 100644 --- a/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/Heaters/EH_HeaterSupply_Analog_BlockIcon_OnlyText_Horizontal.bob +++ b/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/Heaters/EH_HeaterSupply_Analog_BlockIcon_OnlyText_Horizontal.bob @@ -139,7 +139,8 @@ WIDIndex = macros.getValue("WIDIndex"); WIDSecSub = macros.getValue("WIDSecSub"); WIDDis = macros.getValue("WIDDis"); WIDDev = macros.getValue("WIDDev"); - +WIDIndexPID = macros.getValue("WIDIndexPID"); +WIDSecSubPID = macros.getValue("WIDSecSubPID"); try @@ -225,6 +226,8 @@ catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } map["Dis"] = WIDDis; map["Index"] = WIDIndex; map["SecSub"] = WIDSecSub; + map["IndexPID"] = WIDIndexPID; + map["SecSubPID"] = WIDSecSubPID; org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "EH_HeaterSupply_Analog_Faceplate.bob", "STANDALONE", map); diff --git a/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/Heaters/EH_HeaterSupply_Analog_BlockIcon_OnlyText_Vertical.bob b/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/Heaters/EH_HeaterSupply_Analog_BlockIcon_OnlyText_Vertical.bob index 6623f25ea5be565b26d0f670fc9a2379d21a0449..498e803bef416564987769830337db084c22010d 100644 --- a/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/Heaters/EH_HeaterSupply_Analog_BlockIcon_OnlyText_Vertical.bob +++ b/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/Heaters/EH_HeaterSupply_Analog_BlockIcon_OnlyText_Vertical.bob @@ -139,7 +139,8 @@ WIDIndex = macros.getValue("WIDIndex"); WIDSecSub = macros.getValue("WIDSecSub"); WIDDis = macros.getValue("WIDDis"); WIDDev = macros.getValue("WIDDev"); - +WIDIndexPID = macros.getValue("WIDIndexPID"); +WIDSecSubPID = macros.getValue("WIDSecSubPID"); try @@ -225,6 +226,8 @@ catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } map["Dis"] = WIDDis; map["Index"] = WIDIndex; map["SecSub"] = WIDSecSub; + map["IndexPID"] = WIDIndexPID; + map["SecSubPID"] = WIDSecSubPID; org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "EH_HeaterSupply_Analog_Faceplate.bob", "STANDALONE", map); diff --git a/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/Heaters/EH_HeaterSupply_Analog_Faceplate.bob b/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/Heaters/EH_HeaterSupply_Analog_Faceplate.bob index 417da5b020aec49dd31b3a5e525bab38658da9cd..802b8db764ec86775f5a92dac5a217dba44c242f 100644 --- a/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/Heaters/EH_HeaterSupply_Analog_Faceplate.bob +++ b/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/Heaters/EH_HeaterSupply_Analog_Faceplate.bob @@ -1892,7 +1892,6 @@ <action type="open_display"> <file>../PIDControls/PID_Control_Faceplate_embedded.bob</file> <macros> - <AmConfig>${SecSub}:${Dis}-Virt-AMCONF</AmConfig> <ControlledDevice>${SecSub}:${Dis}-PSU-${Index}:PwrR</ControlledDevice> </macros> <target>window</target> diff --git a/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/PIDControls/PID_Control_Faceplate_embedded.bob b/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/PIDControls/PID_Control_Faceplate_embedded.bob index 3551c8c455c74b8249e41d64cbc7e5a362f2cc88..d3b23f09c79577f254ceb0706b931a22bf362359 100644 --- a/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/PIDControls/PID_Control_Faceplate_embedded.bob +++ b/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/PIDControls/PID_Control_Faceplate_embedded.bob @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <display version="2.0.0"> - <name>PID Control Faceplate</name> + <name>PID Control Faceplate embedded</name> <width>1200</width> <height>900</height> <widget type="tabs" version="2.0.0"> @@ -66,12 +66,12 @@ <vertical_alignment>1</vertical_alignment> </widget> <widget type="textupdate" version="2.0.0"> - <name>MET_ValvePos</name> - <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:Measured_Value_Msg</pv_name> - <x>20</x> - <y>71</y> - <width>258</width> - <height>56</height> + <name>MET_MeasValue</name> + <pv_name>${ProcessValue}:MeasValue</pv_name> + <x>13</x> + <y>64</y> + <width>265</width> + <height>43</height> <font> <font family="Source Sans Pro" style="REGULAR" size="25.0"> </font> @@ -82,14 +82,14 @@ </background_color> <transparent>true</transparent> <precision>2</precision> - <tooltip>Process Value</tooltip> + <tooltip>Mesurement value</tooltip> <border_alarm_sensitive>false</border_alarm_sensitive> </widget> <widget type="textupdate" version="2.0.0"> - <name>MET_ValveSetpoint</name> - <pv_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:MAN_SP</pv_name> - <x>21</x> - <y>141</y> + <name>MET_ProcessSetpoint</name> + <pv_name>${SecSubPID}:${Dis}-PID-${IndexPID}:MAN_SP</pv_name> + <x>14</x> + <y>134</y> <width>270</width> <height>46</height> <font> @@ -103,14 +103,14 @@ <transparent>true</transparent> <precision>2</precision> <show_units>false</show_units> - <tooltip>Setpoint</tooltip> + <tooltip>Process setpoint</tooltip> <border_alarm_sensitive>false</border_alarm_sensitive> </widget> <widget type="label" version="2.0.0"> <name>LB_PID_Gain_1</name> - <text>Process Value:</text> - <x>18</x> - <y>44</y> + <text>Measure Value:</text> + <x>11</x> + <y>37</y> <width>129</width> <height>30</height> <foreground_color> @@ -126,8 +126,55 @@ <widget type="label" version="2.0.0"> <name>LB_PID_Gain_2</name> <text>Setpoint:</text> - <x>19</x> - <y>113</y> + <x>12</x> + <y>106</y> + <width>129</width> + <height>30</height> + <foreground_color> + <color name="TEXT" red="25" green="25" blue="25"> + </color> + </foreground_color> + <background_color> + <color name="BLUE-BACKGROUND" red="195" green="226" blue="225"> + </color> + </background_color> + <vertical_alignment>1</vertical_alignment> + </widget> + <widget type="label" version="2.0.0"> + <name>MET_ValvePos_2</name> + <text>${ProcessValueEGU}</text> + <x>123</x> + <y>133</y> + <width>120</width> + <height>56</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="25.0"> + </font> + </font> + <background_color> + <color red="255" green="254" blue="253"> + </color> + </background_color> + <tooltip>Valve position in percent</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>MET_MeasValueName</name> + <text>${MeasureValue}</text> + <x>146</x> + <y>42</y> + <width>144</width> + <height>30</height> + <background_color> + <color red="255" green="254" blue="253"> + </color> + </background_color> + <tooltip>Mesurement value</tooltip> + </widget> + <widget type="label" version="2.0.0"> + <name>LB_PID_Gain_3</name> + <text>Manipulated Value:</text> + <x>11</x> + <y>184</y> <width>129</width> <height>30</height> <foreground_color> @@ -140,6 +187,27 @@ </background_color> <vertical_alignment>1</vertical_alignment> </widget> + <widget type="textupdate" version="2.0.0"> + <name>MET_ManipulatedValue</name> + <pv_name>${SecSubPID}:${Dis}-PID-${IndexPID}:LMN</pv_name> + <x>11</x> + <y>210</y> + <width>270</width> + <height>46</height> + <font> + <font family="Source Sans Pro" style="REGULAR" size="25.0"> + </font> + </font> + <background_color> + <color red="255" green="254" blue="253"> + </color> + </background_color> + <transparent>true</transparent> + <precision>2</precision> + <show_units>false</show_units> + <tooltip>Process setpoint</tooltip> + <border_alarm_sensitive>false</border_alarm_sensitive> + </widget> </widget> <widget type="group" version="2.0.0"> <name>group.op.modes</name> @@ -1771,6 +1839,7 @@ <children> <widget type="databrowser" version="2.0.0"> <name>DataBrowser</name> + <file>PID_Trend.plt</file> <width>940</width> <height>721</height> </widget> @@ -2473,7 +2542,7 @@ </widget> <widget type="label" version="2.0.0"> <name>LB_Settings_5</name> - <text>SETTINGS</text> + <text>AM SETTINGS</text> <width>470</width> <height>35</height> <font> diff --git a/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/PIDControls/PID_Trend.plt b/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/PIDControls/PID_Trend.plt new file mode 100644 index 0000000000000000000000000000000000000000..7ef1d4e091addc4464864db478e74654ea6608a9 --- /dev/null +++ b/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/PIDControls/PID_Trend.plt @@ -0,0 +1,157 @@ +<?xml version="1.0" encoding="UTF-8"?> +<databrowser> + <title></title> + <show_toolbar>true</show_toolbar> + <update_period>3.0</update_period> + <scroll_step>5</scroll_step> + <scroll>true</scroll> + <start>-10 minutes</start> + <end>now</end> + <archive_rescale>NONE</archive_rescale> + <foreground> + <red>229</red> + <green>229</green> + <blue>229</blue> + </foreground> + <background> + <red>77</red> + <green>77</green> + <blue>77</blue> + </background> + <title_font>System|16|1</title_font> + <label_font>System|11|1</label_font> + <scale_font>System|10|0</scale_font> + <legend_font>System|10|0</legend_font> + <axes> + <axis> + <visible>true</visible> + <name>Value Axis</name> + <use_axis_name>true</use_axis_name> + <use_trace_names>true</use_trace_names> + <right>false</right> + <color> + <red>255</red> + <green>165</green> + <blue>0</blue> + </color> + <min>0.0</min> + <max>25.0</max> + <grid>true</grid> + <autoscale>true</autoscale> + <log_scale>false</log_scale> + </axis> + <axis> + <visible>true</visible> + <name>Value 1</name> + <use_axis_name>false</use_axis_name> + <use_trace_names>true</use_trace_names> + <right>false</right> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <min>0.0</min> + <max>10.0</max> + <grid>false</grid> + <autoscale>true</autoscale> + <log_scale>false</log_scale> + </axis> + <axis> + <visible>true</visible> + <name>Value 2</name> + <use_axis_name>false</use_axis_name> + <use_trace_names>true</use_trace_names> + <right>false</right> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <min>0.0</min> + <max>10.0</max> + <grid>false</grid> + <autoscale>true</autoscale> + <log_scale>false</log_scale> + </axis> + </axes> + <annotations> + </annotations> + <pvlist> + <pv> + <display_name>${MeasureValue}</display_name> + <visible>true</visible> + <name>${ProcessValue}:MeasValue</name> + <axis>0</axis> + <color> + <red>255</red> + <green>0</green> + <blue>0</blue> + </color> + <trace_type>AREA</trace_type> + <linewidth>3</linewidth> + <line_style>SOLID</line_style> + <point_type>NONE</point_type> + <point_size>2</point_size> + <waveform_index>0</waveform_index> + <period>0.0</period> + <ring_size>5000</ring_size> + <request>RAW</request> + <archive> + <name>pbraw://archiver-01.tn.esss.lu.se:17668/retrieval</name> + <url>pbraw://archiver-01.tn.esss.lu.se:17668/retrieval</url> + <key>1</key> + </archive> + </pv> + <pv> + <display_name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:MAN_SP</display_name> + <visible>true</visible> + <name>${WIDSecSubPID}:${Dis}-PID-${WIDIndexPID}:MAN_SP</name> + <axis>1</axis> + <color> + <red>0</red> + <green>255</green> + <blue>0</blue> + </color> + <trace_type>AREA</trace_type> + <linewidth>2</linewidth> + <line_style>SOLID</line_style> + <point_type>NONE</point_type> + <point_size>2</point_size> + <waveform_index>0</waveform_index> + <period>0.0</period> + <ring_size>5000</ring_size> + <request>RAW</request> + <archive> + <name>pbraw://archiver-01.tn.esss.lu.se:17668/retrieval</name> + <url>pbraw://archiver-01.tn.esss.lu.se:17668/retrieval</url> + <key>1</key> + </archive> + </pv> + <pv> + <display_name>${SecSubPID}:${Dis}-PID-${IndexPID}:Output</display_name> + <visible>true</visible> + <name>${SecSubPID}:${Dis}-PID-${IndexPID}:LMN</name> + <axis>2</axis> + <color> + <red>0</red> + <green>0</green> + <blue>255</blue> + </color> + <trace_type>AREA</trace_type> + <linewidth>2</linewidth> + <line_style>SOLID</line_style> + <point_type>NONE</point_type> + <point_size>2</point_size> + <waveform_index>0</waveform_index> + <period>0.0</period> + <ring_size>5000</ring_size> + <request>RAW</request> + <archive> + <name>pbraw://archiver-01.tn.esss.lu.se:17668/retrieval</name> + <url>pbraw://archiver-01.tn.esss.lu.se:17668/retrieval</url> + <key>1</key> + </archive> + </pv> + </pvlist> +</databrowser> diff --git a/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_BlockIcon_Horizontal_Compact.bob b/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_BlockIcon_Horizontal_Compact.bob index 72286d78b257877fb96346a40b8a69e1874081d1..8e49d86317ae4c9b525bd4d0ab3f45ac2a770107 100644 --- a/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_BlockIcon_Horizontal_Compact.bob +++ b/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_BlockIcon_Horizontal_Compact.bob @@ -85,10 +85,10 @@ <name>WID_CenterIcon</name> <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValveColor</pv_name> <symbols> - <symbol>../../symbols/custom_v02/valve analog/valve_analog_NOT_CONTROLED@64.png</symbol> - <symbol>../../symbols/custom_v02/valve analog/valve_analog_CLOSED@64.png</symbol> - <symbol>../../symbols/custom_v02/valve analog/valve_analog_ERROR@64.png</symbol> <symbol>../../symbols/custom_v02/valve analog/valve_analog_OFF@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_OK@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_ERROR@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_NOT_CONTROLED@64.png</symbol> <symbol>../../symbols/custom_v02/valve analog/valve_analog_NEUTRAL@64.png</symbol> </symbols> <x>38</x> @@ -246,6 +246,8 @@ WIDIndex = macros.getValue("WIDIndex"); WIDSecSub = macros.getValue("WIDSecSub"); WIDDis = macros.getValue("WIDDis"); WIDDev = macros.getValue("WIDDev"); +WIDIndexPID = macros.getValue("WIDIndexPID"); +WIDSecSubPID = macros.getValue("WIDSecSubPID"); @@ -332,6 +334,8 @@ catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } map["Dis"] = WIDDis; map["Index"] = WIDIndex; map["SecSub"] = WIDSecSub; + map["IndexPID"] = WIDIndexPID; + map["SecSubPID"] = WIDSecSubPID; org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "CV_ControlVALVE_Faceplate.bob", "STANDALONE", map); diff --git a/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_BlockIcon_Vertical_Right_Compact.bob b/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_BlockIcon_Vertical_Right_Compact.bob index 82cfa721bcd71f9c7437024a20b1c89cd4fc6d46..d780689f962dcba33da6e95de6f2ea04005592fd 100644 --- a/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_BlockIcon_Vertical_Right_Compact.bob +++ b/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_BlockIcon_Vertical_Right_Compact.bob @@ -7,10 +7,10 @@ <name>WID_CenterIcon</name> <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValveColor</pv_name> <symbols> - <symbol>../../symbols/custom_v02/valve analog/valve_analog_NOT_CONTROLED@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_OFF@64.png</symbol> <symbol>../../symbols/custom_v02/valve analog/valve_analog_OK@64.png</symbol> <symbol>../../symbols/custom_v02/valve analog/valve_analog_ERROR@64.png</symbol> - <symbol>../../symbols/custom_v02/valve analog/valve_analog_OFF@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_NOT_CONTROLED@64.png</symbol> <symbol>../../symbols/custom_v02/valve analog/valve_analog_NEUTRAL@64.png</symbol> </symbols> <x>156</x> @@ -216,6 +216,8 @@ WIDIndex = macros.getValue("WIDIndex"); WIDSecSub = macros.getValue("WIDSecSub"); WIDDis = macros.getValue("WIDDis"); WIDDev = macros.getValue("WIDDev"); +WIDIndexPID = macros.getValue("WIDIndexPID"); +WIDSecSubPID = macros.getValue("WIDSecSubPID"); @@ -302,6 +304,8 @@ catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } map["Dis"] = WIDDis; map["Index"] = WIDIndex; map["SecSub"] = WIDSecSub; + map["IndexPID"] = WIDIndexPID; + map["SecSubPID"] = WIDSecSubPID; org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "CV_ControlVALVE_Faceplate.bob", "STANDALONE", map); diff --git a/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Faceplate.bob b/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Faceplate.bob index b46b6dec42733e4a35704636a3705523e0c23aa5..37f4c3ab84a967c80e02722a8e3fba3fc7e3f71a 100644 --- a/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Faceplate.bob +++ b/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Faceplate.bob @@ -1951,9 +1951,6 @@ <actions> <action type="open_display"> <file>../PIDControls/PID_Control_Faceplate_embedded.bob</file> - <macros> - <AmConfig>${SecSub}:${Dis}-Virt-AMCONF</AmConfig> - </macros> <target>window</target> <description>Open Display</description> </action> diff --git a/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Sipart_BlockIcon_Horizontal.bob b/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Sipart_BlockIcon_Horizontal.bob index 602d84a039be7d1f47b8e2db741584aa65f9c7a8..2bcec0cac53d897d98a7aa71968cdb10bd48ae28 100644 --- a/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Sipart_BlockIcon_Horizontal.bob +++ b/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Sipart_BlockIcon_Horizontal.bob @@ -215,7 +215,8 @@ WIDIndex = macros.getValue("WIDIndex"); WIDSecSub = macros.getValue("WIDSecSub"); WIDDis = macros.getValue("WIDDis"); WIDDev = macros.getValue("WIDDev"); - +WIDIndexPID = macros.getValue("WIDIndexPID"); +WIDSecSubPID = macros.getValue("WIDSecSubPID"); try @@ -301,6 +302,8 @@ catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } map["Dis"] = WIDDis; map["Index"] = WIDIndex; map["SecSub"] = WIDSecSub; + map["SecSubPID"] = WIDSecSubPID; + map["IndexPID"] = WIDIndexPID; org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "CV_ControlVALVE_Sipart_Faceplate.bob", "STANDALONE", map); diff --git a/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Sipart_BlockIcon_Horizontal_Compact.bob b/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Sipart_BlockIcon_Horizontal_Compact.bob index 9f6aa46102e5cff63ce5d1a46d21a12ff3fbb8e3..24ded131e7ba048af83f93b6a64e9d04f3a0caf9 100644 --- a/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Sipart_BlockIcon_Horizontal_Compact.bob +++ b/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Sipart_BlockIcon_Horizontal_Compact.bob @@ -53,10 +53,10 @@ <name>WID_CenterIcon</name> <pv_name>${WIDSecSub}:${WIDDis}-${WIDDev}-${WIDIndex}:ValveColor</pv_name> <symbols> - <symbol>../../symbols/custom_v02/valve analog/valve_analog_NOT_CONTROLED@64.png</symbol> - <symbol>../../symbols/custom_v02/valve analog/valve_analog_CLOSED@64.png</symbol> - <symbol>../../symbols/custom_v02/valve analog/valve_analog_ERROR@64.png</symbol> <symbol>../../symbols/custom_v02/valve analog/valve_analog_OFF@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_OK@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_ERROR@64.png</symbol> + <symbol>../../symbols/custom_v02/valve analog/valve_analog_NOT_CONTROLED@64.png</symbol> <symbol>../../symbols/custom_v02/valve analog/valve_analog_NEUTRAL@64.png</symbol> </symbols> <x>38</x> @@ -215,6 +215,8 @@ WIDIndex = macros.getValue("WIDIndex"); WIDSecSub = macros.getValue("WIDSecSub"); WIDDis = macros.getValue("WIDDis"); WIDDev = macros.getValue("WIDDev"); +WIDIndexPID = macros.getValue("WIDIndexPID"); +WIDSecSubPID = macros.getValue("WIDSecSubPID"); @@ -296,6 +298,8 @@ catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } map["Dis"] = WIDDis; map["Index"] = WIDIndex; map["SecSub"] = WIDSecSub; + map["IndexPID"] = WIDIndexPID; + map["SecSubPID"] = WIDSecSubPID; org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "CV_ControlVALVE_Sipart_Faceplate.bob", "STANDALONE", map); diff --git a/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Sipart_BlockIcon_Vertical_Right.bob b/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Sipart_BlockIcon_Vertical_Right.bob index 5ff72b61e16b944ae3d59e994b8cc4a07ea9fbe0..b2d930d36dd2e254583f2eb1613ee54bd495bffd 100644 --- a/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Sipart_BlockIcon_Vertical_Right.bob +++ b/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Sipart_BlockIcon_Vertical_Right.bob @@ -216,6 +216,8 @@ WIDIndex = macros.getValue("WIDIndex"); WIDSecSub = macros.getValue("WIDSecSub"); WIDDis = macros.getValue("WIDDis"); WIDDev = macros.getValue("WIDDev"); +WIDIndexPID = macros.getValue("WIDIndexPID"); +WIDSecSubPID = macros.getValue("WIDSecSubPID"); @@ -302,6 +304,8 @@ catch (e) { logger.info(" Cant open Faceplate, IOC is disconnected"); } map["Dis"] = WIDDis; map["Index"] = WIDIndex; map["SecSub"] = WIDSecSub; + map["SecSubPID"] = WIDSecSubPID; + map["IndexPID"] = WIDIndexPID; org.csstudio.display.builder.runtime.script.ScriptUtil.openDisplay(widget, "CV_ControlVALVE_Sipart_Faceplate.bob", "STANDALONE", map); diff --git a/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Sipart_Faceplate.bob b/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Sipart_Faceplate.bob index 3aa72a366f578a8a32eedb8ae6dcff450d493e6b..c9a2af8cdab39d400c037569eb18e1034c6ff559 100644 --- a/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Sipart_Faceplate.bob +++ b/NON-APPROVED/ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Sipart_Faceplate.bob @@ -1918,9 +1918,6 @@ <actions> <action type="open_display"> <file>../PIDControls/PID_Control_Faceplate_embedded.bob</file> - <macros> - <AmConfig>${SecSub}:${Dis}-Virt-AMCONF</AmConfig> - </macros> <target>window</target> <description>Open Display</description> </action> diff --git a/NON-APPROVED/TS2/ts2-cryomodule/TS2_main2.bob b/NON-APPROVED/TS2/ts2-cryomodule/TS2_main2.bob index e0ea18cae6f464ee3e396f4e2dc14b33fcbe5268..fa1a3e7feab79b4d9b228f72cfc90eabe2bdafb6 100644 --- a/NON-APPROVED/TS2/ts2-cryomodule/TS2_main2.bob +++ b/NON-APPROVED/TS2/ts2-cryomodule/TS2_main2.bob @@ -2,6 +2,7 @@ <display version="2.0.0"> <name>TS2 Main Page v2</name> <macros> + <AmConfig>TS2-010:Cryo-Virt-AMCONF</AmConfig> <PLCName>TS2-010CRM:Cryo-PLC-001</PLCName> </macros> <width>2500</width> @@ -192,7 +193,9 @@ <WIDDev>CV</WIDDev> <WIDDis>Cryo</WIDDis> <WIDIndex>82364</WIDIndex> + <WIDIndexPID>CV64</WIDIndexPID> <WIDSecSub>TS2-010CDL</WIDSecSub> + <WIDSecSubPID>TS2-010CDL</WIDSecSubPID> </macros> <x>1058</x> <y>57</y> @@ -208,7 +211,9 @@ <WIDDev>CV</WIDDev> <WIDDis>Cryo</WIDDis> <WIDIndex>82307</WIDIndex> + <WIDIndexPID>CV07</WIDIndexPID> <WIDSecSub>TS2-010CDL</WIDSecSub> + <WIDSecSubPID>TS2-010CDL</WIDSecSubPID> </macros> <x>1197</x> <y>119</y> @@ -224,7 +229,9 @@ <WIDDev>CV</WIDDev> <WIDDis>Cryo</WIDDis> <WIDIndex>82362</WIDIndex> + <WIDIndexPID>CV62</WIDIndexPID> <WIDSecSub>TS2-010CDL</WIDSecSub> + <WIDSecSubPID>TS2-010CDL</WIDSecSubPID> </macros> <x>1398</x> <y>104</y> @@ -240,7 +247,9 @@ <WIDDev>CV</WIDDev> <WIDDis>Cryo</WIDDis> <WIDIndex>82305</WIDIndex> + <WIDIndexPID>CV05</WIDIndexPID> <WIDSecSub>TS2-010CDL</WIDSecSub> + <WIDSecSubPID>TS2-010CDL</WIDSecSubPID> </macros> <x>1411</x> <y>215</y> @@ -253,6 +262,9 @@ <name>PV_Valve_BlockIcon_Verical_4</name> <file>../../ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Sipart_BlockIcon_Vertical_Right.bob</file> <macros> + <MeasureValue>PT-82360</MeasureValue> + <ProcessValue>TS2-010CDL:Cryo-PT-82360</ProcessValue> + <ProcessValueEGU>Bar</ProcessValueEGU> <WIDDev>CV</WIDDev> <WIDDis>Cryo</WIDDis> <WIDIndex>82360</WIDIndex> @@ -260,7 +272,7 @@ <WIDSecSub>TS2-010CDL</WIDSecSub> <WIDSecSubPID>TS2-010CDL</WIDSecSubPID> </macros> - <x>303</x> + <x>302</x> <y>243</y> <width>168</width> <height>72</height> @@ -271,12 +283,17 @@ <name>PV_Valve_BlockIcon_Verical_7</name> <file>../../ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_Sipart_BlockIcon_Vertical_Right.bob</file> <macros> + <MeasureValue>PT-03</MeasureValue> + <ProcessValue>TS2-010CRM:Cryo-PT-003</ProcessValue> + <ProcessValueEGU>mBar</ProcessValueEGU> <WIDDev>CV</WIDDev> <WIDDis>Cryo</WIDDis> <WIDIndex>82303</WIDIndex> + <WIDIndexPID>CV03</WIDIndexPID> <WIDSecSub>TS2-010CDL</WIDSecSub> + <WIDSecSubPID>TS2-010CDL</WIDSecSubPID> </macros> - <x>519</x> + <x>518</x> <y>243</y> <width>168</width> <height>72</height> @@ -290,9 +307,11 @@ <WIDDev>CV</WIDDev> <WIDDis>Cryo</WIDDis> <WIDIndex>82304</WIDIndex> + <WIDIndexPID>CV04</WIDIndexPID> <WIDSecSub>TS2-010CDL</WIDSecSub> + <WIDSecSubPID>TS2-010CDL</WIDSecSubPID> </macros> - <x>729</x> + <x>728</x> <y>241</y> <width>168</width> <height>72</height> @@ -306,9 +325,11 @@ <WIDDev>CV</WIDDev> <WIDDis>Cryo</WIDDis> <WIDIndex>82361</WIDIndex> + <WIDIndexPID>CV61</WIDIndexPID> <WIDSecSub>TS2-010CDL</WIDSecSub> + <WIDSecSubPID>TS2-010CDL</WIDSecSubPID> </macros> - <x>939</x> + <x>938</x> <y>241</y> <width>177</width> <height>72</height> @@ -322,7 +343,9 @@ <WIDDev>CV</WIDDev> <WIDDis>Cryo</WIDDis> <WIDIndex>82363</WIDIndex> + <WIDIndexPID>CV63</WIDIndexPID> <WIDSecSub>TS2-010CDL</WIDSecSub> + <WIDSecSubPID>TS2-010CDL</WIDSecSubPID> </macros> <x>887</x> <y>319</y> @@ -338,10 +361,12 @@ <WIDDev>CV</WIDDev> <WIDDis>Cryo</WIDDis> <WIDIndex>82306</WIDIndex> + <WIDIndexPID>CV06</WIDIndexPID> <WIDSecSub>TS2-010CDL</WIDSecSub> + <WIDSecSubPID>TS2-010CDL</WIDSecSubPID> </macros> <x>669</x> - <y>381</y> + <y>382</y> <width>100</width> <height>150</height> <resize>1</resize> @@ -502,7 +527,9 @@ <WIDDev>CV</WIDDev> <WIDDis>Cryo</WIDDis> <WIDIndex>002</WIDIndex> + <WIDIndexPID>CV02</WIDIndexPID> <WIDSecSub>TS2-010CRM</WIDSecSub> + <WIDSecSubPID>TS2-010CDL</WIDSecSubPID> </macros> <x>502</x> <y>730</y> @@ -635,10 +662,15 @@ <name>PV_Valve_BlockIcon_Horizontal_4</name> <file>../../ICS_OPI_LIBRARY/DeviceTypes/Valves/CV_ControlVALVE_BlockIcon_Horizontal_Compact.bob</file> <macros> + <MeasureValue>LT-001</MeasureValue> + <ProcessValue>TS2-010CRM:Cryo-LT-001</ProcessValue> + <ProcessValueEGU>%</ProcessValueEGU> <WIDDev>CV</WIDDev> <WIDDis>Cryo</WIDDis> <WIDIndex>001</WIDIndex> + <WIDIndexPID>CV01</WIDIndexPID> <WIDSecSub>TS2-010CRM</WIDSecSub> + <WIDSecSubPID>TS2-010CDL</WIDSecSubPID> </macros> <x>2347</x> <y>740</y> @@ -1648,7 +1680,9 @@ <WIDDev>CV</WIDDev> <WIDDis>Cryo</WIDDis> <WIDIndex>82371</WIDIndex> + <WIDIndexPID>CV71</WIDIndexPID> <WIDSecSub>TS2-010CDL</WIDSecSub> + <WIDSecSubPID>TS2-010CDL</WIDSecSubPID> </macros> <x>1793</x> <y>215</y> @@ -1664,7 +1698,9 @@ <WIDDev>EH</WIDDev> <WIDDis>Cryo</WIDDis> <WIDIndex>061</WIDIndex> + <WIDIndexPID>EH61</WIDIndexPID> <WIDSecSub>TS2-010CRM</WIDSecSub> + <WIDSecSubPID>TS2-010CDL</WIDSecSubPID> </macros> <x>282</x> <y>652</y> @@ -1680,7 +1716,9 @@ <WIDDev>EH</WIDDev> <WIDDis>Cryo</WIDDis> <WIDIndex>043</WIDIndex> + <WIDIndexPID>EH43</WIDIndexPID> <WIDSecSub>TS2-010CRM</WIDSecSub> + <WIDSecSubPID>TS2-010CDL</WIDSecSubPID> </macros> <x>852</x> <y>899</y> @@ -1696,7 +1734,9 @@ <WIDDev>EH</WIDDev> <WIDDis>Cryo</WIDDis> <WIDIndex>033</WIDIndex> + <WIDIndexPID>EH33</WIDIndexPID> <WIDSecSub>TS2-010CRM</WIDSecSub> + <WIDSecSubPID>TS2-010CDL</WIDSecSubPID> </macros> <x>1268</x> <y>899</y> @@ -1712,7 +1752,9 @@ <WIDDev>EH</WIDDev> <WIDDis>Cryo</WIDDis> <WIDIndex>023</WIDIndex> + <WIDIndexPID>EH23</WIDIndexPID> <WIDSecSub>TS2-010CRM</WIDSecSub> + <WIDSecSubPID>TS2-010CDL</WIDSecSubPID> </macros> <x>1689</x> <y>899</y> @@ -1725,12 +1767,12 @@ <name>Analog_TRANSMITTER_OnlyText_Horizontal_BlockIcon_36</name> <file>../../ICS_OPI_LIBRARY/DeviceTypes/Heaters/EH_HeaterSupply_Analog_BlockIcon_OnlyText_Vertical.bob</file> <macros> - <IndexPID>EH10</IndexPID> - <SecSubPID>TS2-010CDL</SecSubPID> <WIDDev>EH</WIDDev> <WIDDis>Cryo</WIDDis> <WIDIndex>010</WIDIndex> + <WIDIndexPID>EH10</WIDIndexPID> <WIDSecSub>TS2-010CRM</WIDSecSub> + <WIDSecSubPID>TS2-010CDL</WIDSecSubPID> </macros> <x>1912</x> <y>946</y> @@ -1839,7 +1881,9 @@ <WIDDev>EH</WIDDev> <WIDDis>Cryo</WIDDis> <WIDIndex>040</WIDIndex> + <WIDIndexPID>EH40</WIDIndexPID> <WIDSecSub>TS2-010CRM</WIDSecSub> + <WIDSecSubPID>TS2-010CDL</WIDSecSubPID> </macros> <x>657</x> <y>945</y> @@ -1852,12 +1896,12 @@ <name>Analog_TRANSMITTER_OnlyText_Horizontal_BlockIcon_39</name> <file>../../ICS_OPI_LIBRARY/DeviceTypes/Heaters/EH_HeaterSupply_Analog_BlockIcon_OnlyText_Vertical.bob</file> <macros> - <IndexPID>EH30</IndexPID> - <SecSubPID>TS2-010CDL</SecSubPID> <WIDDev>EH</WIDDev> <WIDDis>Cryo</WIDDis> <WIDIndex>030</WIDIndex> + <WIDIndexPID>EH30</WIDIndexPID> <WIDSecSub>TS2-010CRM</WIDSecSub> + <WIDSecSubPID>TS2-010CDL</WIDSecSubPID> </macros> <x>1074</x> <y>946</y> @@ -1870,12 +1914,12 @@ <name>Analog_TRANSMITTER_OnlyText_Horizontal_BlockIcon_40</name> <file>../../ICS_OPI_LIBRARY/DeviceTypes/Heaters/EH_HeaterSupply_Analog_BlockIcon_OnlyText_Vertical.bob</file> <macros> - <IndexPID>EH20</IndexPID> - <SecSubPID>TS2-010CDL</SecSubPID> <WIDDev>EH</WIDDev> <WIDDis>Cryo</WIDDis> <WIDIndex>020</WIDIndex> + <WIDIndexPID>EH20</WIDIndexPID> <WIDSecSub>TS2-010CRM</WIDSecSub> + <WIDSecSubPID>TS2-010CDL</WIDSecSubPID> </macros> <x>1491</x> <y>947</y> @@ -2110,7 +2154,9 @@ <WIDDev>EH</WIDDev> <WIDDis>Cryo</WIDDis> <WIDIndex>013</WIDIndex> + <WIDIndexPID>EH13</WIDIndexPID> <WIDSecSub>TS2-010CRM</WIDSecSub> + <WIDSecSubPID>TS2-010CDL</WIDSecSubPID> </macros> <x>2106</x> <y>904</y> @@ -2432,7 +2478,9 @@ <WIDDev>EH</WIDDev> <WIDDis>Cryo</WIDDis> <WIDIndex>060</WIDIndex> + <WIDIndexPID>EH60</WIDIndexPID> <WIDSecSub>TS2-010CRM</WIDSecSub> + <WIDSecSubPID>TS2-010CDL</WIDSecSubPID> </macros> <x>1310</x> <y>685</y> @@ -2519,7 +2567,9 @@ <WIDDev>EH</WIDDev> <WIDDis>Cryo</WIDDis> <WIDIndex>041</WIDIndex> + <WIDIndexPID>EH41</WIDIndexPID> <WIDSecSub>TS2-010CRM</WIDSecSub> + <WIDSecSubPID>TS2-010CDL</WIDSecSubPID> </macros> <x>457</x> <y>1114</y> @@ -2535,7 +2585,9 @@ <WIDDev>EH</WIDDev> <WIDDis>Cryo</WIDDis> <WIDIndex>042</WIDIndex> + <WIDIndexPID>EH42</WIDIndexPID> <WIDSecSub>TS2-010CRM</WIDSecSub> + <WIDSecSubPID>TS2-010CDL</WIDSecSubPID> </macros> <x>672</x> <y>1100</y> @@ -2551,7 +2603,9 @@ <WIDDev>EH</WIDDev> <WIDDis>Cryo</WIDDis> <WIDIndex>031</WIDIndex> + <WIDIndexPID>EH31</WIDIndexPID> <WIDSecSub>TS2-010CRM</WIDSecSub> + <WIDSecSubPID>TS2-010CDL</WIDSecSubPID> </macros> <x>879</x> <y>1115</y> @@ -2567,7 +2621,9 @@ <WIDDev>EH</WIDDev> <WIDDis>Cryo</WIDDis> <WIDIndex>032</WIDIndex> + <WIDIndexPID>EH32</WIDIndexPID> <WIDSecSub>TS2-010CRM</WIDSecSub> + <WIDSecSubPID>TS2-010CDL</WIDSecSubPID> </macros> <x>1094</x> <y>1098</y> @@ -2583,7 +2639,9 @@ <WIDDev>EH</WIDDev> <WIDDis>Cryo</WIDDis> <WIDIndex>021</WIDIndex> + <WIDIndexPID>EH21</WIDIndexPID> <WIDSecSub>TS2-010CRM</WIDSecSub> + <WIDSecSubPID>TS2-010CDL</WIDSecSubPID> </macros> <x>1285</x> <y>1116</y> @@ -2599,7 +2657,9 @@ <WIDDev>EH</WIDDev> <WIDDis>Cryo</WIDDis> <WIDIndex>022</WIDIndex> + <WIDIndexPID>EH22</WIDIndexPID> <WIDSecSub>TS2-010CRM</WIDSecSub> + <WIDSecSubPID>TS2-010CDL</WIDSecSubPID> </macros> <x>1514</x> <y>1098</y> @@ -2615,7 +2675,9 @@ <WIDDev>EH</WIDDev> <WIDDis>Cryo</WIDDis> <WIDIndex>011</WIDIndex> + <WIDIndexPID>EH11</WIDIndexPID> <WIDSecSub>TS2-010CRM</WIDSecSub> + <WIDSecSubPID>TS2-010CDL</WIDSecSubPID> </macros> <x>1712</x> <y>1117</y> @@ -2631,7 +2693,9 @@ <WIDDev>EH</WIDDev> <WIDDis>Cryo</WIDDis> <WIDIndex>012</WIDIndex> + <WIDIndexPID>EH12</WIDIndexPID> <WIDSecSub>TS2-010CRM</WIDSecSub> + <WIDSecSubPID>TS2-010CDL</WIDSecSubPID> </macros> <x>1930</x> <y>1099</y> @@ -3190,7 +3254,7 @@ </widget> <widget type="label" version="2.0.0"> <name>Label_20</name> - <text>version 2020-02-20 11:30</text> + <text>version 2020-03-31 11:30</text> <x>2287</x> <y>1303</y> <width>197</width> diff --git a/NON-APPROVED/TS2/ts2-cryomodule/interlocks.bob b/NON-APPROVED/TS2/ts2-cryomodule/interlocks.bob index 476973eb07c1dbc2c2f49cefaae06ce440785f95..6bd4ac0d990de8dfb4d580bdebbfea3933cca04b 100644 --- a/NON-APPROVED/TS2/ts2-cryomodule/interlocks.bob +++ b/NON-APPROVED/TS2/ts2-cryomodule/interlocks.bob @@ -49,7 +49,7 @@ <text>CryoModuleReady (LPS):</text> <x>26</x> <y>149</y> - <width>175</width> + <width>180</width> <font> <font family="Source Sans Pro" style="BOLD" size="16.0"> </font> @@ -224,20 +224,10 @@ </font> </font> </widget> - <widget type="led" version="2.0.0"> - <name>MotorOK_led</name> - <pv_name>TS2-010:Cryo-Virt-MotOK:Opened</pv_name> - <x>560</x> - <y>228</y> - <off_color> - <color name="RED" red="252" green="13" blue="27"> - </color> - </off_color> - </widget> <widget type="label" version="2.0.0"> <name>13_label_2</name> <text>CryoModuleReady (TICP):</text> - <x>22</x> + <x>21</x> <y>180</y> <width>191</width> <font> @@ -364,4 +354,19 @@ <width>64</width> <precision>2</precision> </widget> + <widget type="embedded" version="2.0.0"> + <name>Embedded Display</name> + <file>../../ICS_OPI_LIBRARY/DeviceTypes/DigitalMeasure/HW_INTLCK_BlockIcon_Compact.bob</file> + <macros> + <WIDDev>Virt</WIDDev> + <WIDDis>Cryo</WIDDis> + <WIDIndex>MotOK</WIDIndex> + <WIDSecSub>TS2-010</WIDSecSub> + </macros> + <x>560</x> + <y>218</y> + <width>50</width> + <height>32</height> + <resize>2</resize> + </widget> </display>