From be967f12dd131159b78986d07a6e75ffc04e5a42 Mon Sep 17 00:00:00 2001 From: cajus Date: Mon, 5 Jul 2010 09:42:42 +0000 Subject: [PATCH] Updated smarty to rc2 git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@18925 594d385d-05f5-0310-b6e9-bd551577e9d8 --- gosa-core/include/smarty/Smarty.class.php | 2 +- .../smarty/plugins/function.counter.php | 21 +- .../include/smarty/plugins/function.cycle.php | 74 +- .../smarty/plugins/function.popup_init.php | 5 +- .../smarty/plugins/modifier.regex_replace.php | 5 +- .../plugins/shared.escape_special_chars.php | 5 +- .../smarty_internal_compile_call.php | 94 +- .../smarty_internal_compile_extends.php | 4 +- .../smarty_internal_compile_for.php | 22 +- .../smarty_internal_compile_foreach.php | 18 +- .../smarty_internal_compile_function.php | 86 +- .../smarty_internal_compile_include.php | 54 +- .../smarty_internal_compile_insert.php | 52 +- ..._internal_compile_private_block_plugin.php | 4 +- ..._compile_private_object_block_function.php | 4 +- ...ernal_compile_private_print_expression.php | 45 +- ...ernal_compile_private_registered_block.php | 2 +- .../sysplugins/smarty_internal_config.php | 4 +- .../smarty_internal_configfileparser.php | 77 +- .../sysplugins/smarty_internal_data.php | 28 +- .../smarty_internal_function_call_handler.php | 61 +- .../smarty_internal_resource_extends.php | 4 +- .../sysplugins/smarty_internal_template.php | 13 +- .../smarty_internal_templatecompilerbase.php | 4 +- .../smarty_internal_templatelexer.php | 353 ++- .../smarty_internal_templateparser.php | 2693 +++++++++-------- 26 files changed, 2002 insertions(+), 1732 deletions(-) diff --git a/gosa-core/include/smarty/Smarty.class.php b/gosa-core/include/smarty/Smarty.class.php index 505f269fc..319debf11 100644 --- a/gosa-core/include/smarty/Smarty.class.php +++ b/gosa-core/include/smarty/Smarty.class.php @@ -108,7 +108,7 @@ if (SMARTY_SPL_AUTOLOAD && set_include_path(get_include_path() . PATH_SEPARATOR */ class Smarty extends Smarty_Internal_Data { // smarty version - const SMARTY_VERSION = '3.0rc1'; // SVN Rev: 3286 + const SMARTY_VERSION = 'Smarty-3.0-RC2'; // auto literal on delimiters with whitspace public $auto_literal = true; // display error on not assigned variables diff --git a/gosa-core/include/smarty/plugins/function.counter.php b/gosa-core/include/smarty/plugins/function.counter.php index 88e49d801..1f6e1cf7c 100644 --- a/gosa-core/include/smarty/plugins/function.counter.php +++ b/gosa-core/include/smarty/plugins/function.counter.php @@ -2,7 +2,7 @@ /** * Smarty plugin * @package Smarty - * @subpackage PluginsFunction + * @subpackage plugins */ @@ -15,24 +15,24 @@ * @author Monte Ohrt * @link http://smarty.php.net/manual/en/language.function.counter.php {counter} * (Smarty online manual) - * @param array $params parameters - * @param object $smarty Smarty object - * @param object $template template object + * @param array parameters + * @param Smarty * @return string|null */ -function smarty_function_counter($params, $smarty, $template) +function smarty_function_counter($params, $smarty) { + static $counters = array(); $name = (isset($params['name'])) ? $params['name'] : 'default'; - if (!isset($template->plugin_data['counter'][$name])) { - $template->plugin_data['counter'][$name] = array( + if (!isset($counters[$name])) { + $counters[$name] = array( 'start'=>1, 'skip'=>1, 'direction'=>'up', 'count'=>1 ); } - $counter = &$template->plugin_data['counter'][$name]; + $counter =& $counters[$name]; if (isset($params['start'])) { $counter['start'] = $counter['count'] = (int)$params['start']; @@ -43,7 +43,7 @@ function smarty_function_counter($params, $smarty, $template) } if (isset($counter['assign'])) { - $template->assign($counter['assign'], $counter['count']); + $smarty->assign($counter['assign'], $counter['count']); } if (isset($params['print'])) { @@ -74,5 +74,4 @@ function smarty_function_counter($params, $smarty, $template) return $retval; } - -?> +?> \ No newline at end of file diff --git a/gosa-core/include/smarty/plugins/function.cycle.php b/gosa-core/include/smarty/plugins/function.cycle.php index f1cb46ba6..509584c97 100644 --- a/gosa-core/include/smarty/plugins/function.cycle.php +++ b/gosa-core/include/smarty/plugins/function.cycle.php @@ -2,7 +2,7 @@ /** * Smarty plugin * @package Smarty - * @subpackage PluginsFunction + * @subpackage plugins */ /** @@ -12,6 +12,17 @@ * Name: cycle
* Date: May 3, 2002
* Purpose: cycle through given values
+ * Input: + * - name = name of cycle (optional) + * - values = comma separated list of values to cycle, + * or an array of values to cycle + * (this can be left out for subsequent calls) + * - reset = boolean - resets given var to true + * - print = boolean - print var or not. default is true + * - advance = boolean - whether or not to advance the cycle + * - delimiter = the value delimiter, default is "," + * - assign = boolean, assigns to template var instead of + * printed. * * Examples:
*
@@ -25,77 +36,68 @@
  * @author credit to Mark Priatel 
  * @author credit to Gerard 
  * @author credit to Jason Sweat 
- * @param array $params parameters
- * Input:
- *         - name = name of cycle (optional)
- *         - values = comma separated list of values to cycle,
- *                    or an array of values to cycle
- *                    (this can be left out for subsequent calls)
- *         - reset = boolean - resets given var to true
- *         - print = boolean - print var or not. default is true
- *         - advance = boolean - whether or not to advance the cycle
- *         - delimiter = the value delimiter, default is ","
- *         - assign = boolean, assigns to template var instead of
- *                    printed.
- * @param object $smarty Smarty object
- * @param object $template template object
+ * @version  1.3
+ * @param array
+ * @param Smarty
  * @return string|null
  */
-function smarty_function_cycle($params, $smarty, $template)
+function smarty_function_cycle($params, $smarty)
 {
+    static $cycle_vars;
+    
     $name = (empty($params['name'])) ? 'default' : $params['name'];
     $print = (isset($params['print'])) ? (bool)$params['print'] : true;
     $advance = (isset($params['advance'])) ? (bool)$params['advance'] : true;
     $reset = (isset($params['reset'])) ? (bool)$params['reset'] : false;
             
     if (!in_array('values', array_keys($params))) {
-        if(!isset($template->plugin_data['cycle'][$name]['values'])) {
-            trigger_error("cycle: missing 'values' parameter",E_USER_WARNING);
+        if(!isset($cycle_vars[$name]['values'])) {
+            $smarty->trigger_error("cycle: missing 'values' parameter");
             return;
         }
     } else {
-        if(isset($template->plugin_data['cycle'][$name]['values'])
-            && $template->plugin_data['cycle'][$name]['values'] != $params['values'] ) {
-            $template->plugin_data['cycle'][$name]['index'] = 0;
+        if(isset($cycle_vars[$name]['values'])
+            && $cycle_vars[$name]['values'] != $params['values'] ) {
+            $cycle_vars[$name]['index'] = 0;
         }
-        $template->plugin_data['cycle'][$name]['values'] = $params['values'];
+        $cycle_vars[$name]['values'] = $params['values'];
     }
 
     if (isset($params['delimiter'])) {
-      $template->plugin_data['cycle'][$name]['delimiter'] = $params['delimiter'];
-    } elseif (!isset($template->plugin_data['cycle'][$name]['delimiter'])) {
-      $template->plugin_data['cycle'][$name]['delimiter'] = ',';
+        $cycle_vars[$name]['delimiter'] = $params['delimiter'];
+    } elseif (!isset($cycle_vars[$name]['delimiter'])) {
+        $cycle_vars[$name]['delimiter'] = ',';       
     }
     
-    if(is_array($template->plugin_data['cycle'][$name]['values'])) {
-        $cycle_array = $template->plugin_data['cycle'][$name]['values'];
+    if(is_array($cycle_vars[$name]['values'])) {
+        $cycle_array = $cycle_vars[$name]['values'];
     } else {
-        $cycle_array = explode($template->plugin_data['cycle'][$name]['delimiter'],$template->plugin_data['cycle'][$name]['values']);
+        $cycle_array = explode($cycle_vars[$name]['delimiter'],$cycle_vars[$name]['values']);
     }
     
-    if(!isset($template->plugin_data['cycle'][$name]['index']) || $reset ) {
-        $template->plugin_data['cycle'][$name]['index'] = 0;
+    if(!isset($cycle_vars[$name]['index']) || $reset ) {
+        $cycle_vars[$name]['index'] = 0;
     }
     
     if (isset($params['assign'])) {
         $print = false;
-        $template->assign($params['assign'], $cycle_array[$template->plugin_data['cycle'][$name]['index']]);
+        $smarty->assign($params['assign'], $cycle_array[$cycle_vars[$name]['index']]);
     }
         
     if($print) {
-        $retval = $cycle_array[$template->plugin_data['cycle'][$name]['index']];
+        $retval = $cycle_array[$cycle_vars[$name]['index']];
     } else {
         $retval = null;
     }
 
     if($advance) {
-        if ( $template->plugin_data['cycle'][$name]['index'] >= count($cycle_array) -1 ) {
-            $template->plugin_data['cycle'][$name]['index'] = 0;
+        if ( $cycle_vars[$name]['index'] >= count($cycle_array) -1 ) {
+            $cycle_vars[$name]['index'] = 0;
         } else {
-            $template->plugin_data['cycle'][$name]['index']++;
+            $cycle_vars[$name]['index']++;
         }
     }
     
     return $retval;
 }
-?>
+?>
\ No newline at end of file
diff --git a/gosa-core/include/smarty/plugins/function.popup_init.php b/gosa-core/include/smarty/plugins/function.popup_init.php
index ae5803765..dc5bbd7a3 100644
--- a/gosa-core/include/smarty/plugins/function.popup_init.php
+++ b/gosa-core/include/smarty/plugins/function.popup_init.php
@@ -35,7 +35,4 @@ function smarty_function_popup_init($params, $smarty, $template)
         trigger_error("popup_init: missing src parameter",E_USER_WARNING);
     }
 }
-
-/* vim: set expandtab: */
-
-?>
+?>
\ No newline at end of file
diff --git a/gosa-core/include/smarty/plugins/modifier.regex_replace.php b/gosa-core/include/smarty/plugins/modifier.regex_replace.php
index 100b58ce4..7c6e6b90f 100644
--- a/gosa-core/include/smarty/plugins/modifier.regex_replace.php
+++ b/gosa-core/include/smarty/plugins/modifier.regex_replace.php
@@ -42,7 +42,4 @@ function _smarty_regex_replace_check($search)
     }
     return $search;
 }
-
-/* vim: set expandtab: */
-
-?>
+?>
\ No newline at end of file
diff --git a/gosa-core/include/smarty/plugins/shared.escape_special_chars.php b/gosa-core/include/smarty/plugins/shared.escape_special_chars.php
index f7142f917..5bd21ef83 100644
--- a/gosa-core/include/smarty/plugins/shared.escape_special_chars.php
+++ b/gosa-core/include/smarty/plugins/shared.escape_special_chars.php
@@ -25,7 +25,4 @@ function smarty_function_escape_special_chars($string)
     }
     return $string;
 }
-
-/* vim: set expandtab: */
-
-?>
+?>
\ No newline at end of file
diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_compile_call.php b/gosa-core/include/smarty/sysplugins/smarty_internal_compile_call.php
index 6fd8aa89f..0f7e52140 100644
--- a/gosa-core/include/smarty/sysplugins/smarty_internal_compile_call.php
+++ b/gosa-core/include/smarty/sysplugins/smarty_internal_compile_call.php
@@ -1,28 +1,29 @@
 compiler = $compiler;
+        $this->smarty = $compiler->smarty;
         $this->required_attributes = array('name');
         $this->optional_attributes = array('_any'); 
         // check and get attributes
@@ -32,32 +33,61 @@ class Smarty_Internal_Compile_Call extends Smarty_Internal_CompileBase {
             // output will be stored in a smarty variable instead of beind displayed
             $_assign = $_attr['assign'];
         } 
+        $_name = trim($_attr['name'], "'\"");
+        unset($_attr['name'], $_attr['assign']); 
         // set flag (compiled code of {function} must be included in cache file
-        if ($this->compiler->nocache || $this->compiler->tag_nocache) {
-            $nocache = 'true';
+        if ($compiler->nocache || $compiler->tag_nocache) {
+            $_nocache = 'true';
         } else {
-            $nocache = 'false';
+            $_nocache = 'false';
         } 
-        // create template object
-        $_output = "smarty, \$_smarty_tpl, {$nocache});\n"; 
-        // delete {include} standard attributes
-        unset($_attr['name'], $_attr['assign']); 
-        // remaining attributes must be assigned as smarty variable
-        if (!empty($_attr)) {
-            // create variables
-            foreach ($_attr as $_key => $_value) {
-                $_output .= "\$_template->assign('$_key',$_value);\n";
+        $_paramsArray = array();
+        foreach ($_attr as $_key => $_value) {
+            if (is_int($_key)) {
+                $_paramsArray[] = "$_key=>$_value";
+            } else {
+                $_paramsArray[] = "'$_key'=>$_value";
             } 
         } 
+        if (isset($compiler->template->properties['function'][$_name]['parameter'])) {
+            foreach ($compiler->template->properties['function'][$_name]['parameter'] as $_key => $_value) {
+                if (!isset($_attr[$_key])) {
+                    if (is_int($_key)) {
+                        $_paramsArray[] = "$_key=>$_value";
+                    } else {
+                        $_paramsArray[] = "'$_key'=>$_value";
+                    } 
+                } 
+            } 
+        } elseif (isset($this->smarty->template_functions[$_name]['parameter'])) {
+           foreach ($this->smarty->template_functions[$_name]['parameter'] as $_key => $_value) {
+                if (!isset($_attr[$_key])) {
+                    if (is_int($_key)) {
+                        $_paramsArray[] = "$_key=>$_value";
+                    } else {
+                        $_paramsArray[] = "'$_key'=>$_value";
+                    } 
+                } 
+            } 
+        } 
+        $_params = 'array(' . implode(",", $_paramsArray) . ')';
+	$_hash = str_replace('-','_',$compiler->template->properties['nocache_hash']);
         // was there an assign attribute
         if (isset($_assign)) {
-            $_output .= "\$_smarty_tpl->assign({$_assign},\$_template->getRenderedTemplate());\n";
+            if ($compiler->template->caching) {
+                $_output = "\$_smarty_tpl->assign({$_assign},Smarty_Internal_Function_Call_Handler::call ('{$_name}',\$_smarty_tpl,{$_params},'{$_hash}',{$_nocache}));?>\n";
+            } else {
+                $_output = "\$_smarty_tpl->assign({$_assign},smarty_template_function_{$_name}(\$_smarty_tpl,{$_params}));?>\n";
+            } 
         } else {
-            $_output .= "echo \$_template->getRenderedTemplate();\n";
+            if ($compiler->template->caching) {
+                $_output = "\n";
+            } else {
+                $_output = "\n";
+            } 
         } 
-        $_output .= 'unset($_template);?>';
         return $_output;
     } 
 } 
 
-?>
+?>
\ No newline at end of file
diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_compile_extends.php b/gosa-core/include/smarty/sysplugins/smarty_internal_compile_extends.php
index 875e17b72..3f5997a4d 100644
--- a/gosa-core/include/smarty/sysplugins/smarty_internal_compile_extends.php
+++ b/gosa-core/include/smarty/sysplugins/smarty_internal_compile_extends.php
@@ -37,11 +37,11 @@ class Smarty_Internal_Compile_Extends extends Smarty_Internal_CompileBase {
         // save file dependency
         $compiler->template->properties['file_dependency'][sha1($_template->getTemplateFilepath())] = array($_template->getTemplateFilepath(), $_template->getTemplateTimestamp());
         $_content = $compiler->template->template_source;
-        if (preg_match_all("!({$this->_ldl}block(.+?){$this->_rdl})!", $_content, $s) !=
+        if (preg_match_all("!({$this->_ldl}block\s(.+?){$this->_rdl})!", $_content, $s) !=
                 preg_match_all("!({$this->_ldl}/block(.*?){$this->_rdl})!", $_content, $c)) {
             $this->compiler->trigger_template_error('unmatched {block} {/block} pairs');
         } 
-        preg_match_all("!{$this->_ldl}block(.+?){$this->_rdl}|{$this->_ldl}/block(.*?){$this->_rdl}!", $_content, $_result, PREG_OFFSET_CAPTURE);
+        preg_match_all("!{$this->_ldl}block\s(.+?){$this->_rdl}|{$this->_ldl}/block(.*?){$this->_rdl}!", $_content, $_result, PREG_OFFSET_CAPTURE);
         $_result_count = count($_result[0]);
         $_start = 0;
         while ($_start < $_result_count) {
diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_compile_for.php b/gosa-core/include/smarty/sysplugins/smarty_internal_compile_for.php
index a85a52f3b..a848a6f46 100644
--- a/gosa-core/include/smarty/sysplugins/smarty_internal_compile_for.php
+++ b/gosa-core/include/smarty/sysplugins/smarty_internal_compile_for.php
@@ -43,9 +43,7 @@ class Smarty_Internal_Compile_For extends Smarty_Internal_CompileBase {
         // check and get attributes
         $_attr = $this->_get_attributes($args);
 
-        $this->_open_tag('for', array('for', $this->compiler->nocache)); 
-        // maybe nocache because of nocache variables
-        $this->compiler->nocache = $this->compiler->nocache | $this->compiler->tag_nocache;
+        $local_vars = array();
 
         $output = "tpl_vars[$_statement[var]] = new Smarty_Variable;";
                 $output .= " \$_smarty_tpl->tpl_vars[$_statement[var]]->value = $_statement[value];\n";
                 $compiler->local_var[$_statement['var']] = true;
+                $local_vars[] = $_statement['var'];
             } 
             $output .= "  if ($_attr[ifexp]){ for (\$_foo=true;$_attr[ifexp]; \$_smarty_tpl->tpl_vars[$_attr[varloop]]->value$_attr[loop]){\n";
         } else {
             $_statement = $_attr['start'];
             $output .= "\$_smarty_tpl->tpl_vars[$_statement[var]] = new Smarty_Variable;";
             $compiler->local_var[$_statement['var']] = true;
+            $local_vars[] = $_statement['var'];
             if (isset($_attr['step'])) {
                 $output .= "\$_smarty_tpl->tpl_vars[$_statement[var]]->step = $_attr[step];";
             } else {
@@ -74,7 +74,11 @@ class Smarty_Internal_Compile_For extends Smarty_Internal_CompileBase {
             $output .= "\$_smarty_tpl->tpl_vars[$_statement[var]]->first = \$_smarty_tpl->tpl_vars[$_statement[var]]->iteration == 1;";
             $output .= "\$_smarty_tpl->tpl_vars[$_statement[var]]->last = \$_smarty_tpl->tpl_vars[$_statement[var]]->iteration == \$_smarty_tpl->tpl_vars[$_statement[var]]->total;";
         } 
-        $output .= "?>"; 
+        $output .= "?>";
+
+        $this->_open_tag('for', array('for', $this->compiler->nocache, $local_vars)); 
+        // maybe nocache because of nocache variables
+        $this->compiler->nocache = $this->compiler->nocache | $this->compiler->tag_nocache; 
         // return compiled code
         return $output;
     } 
@@ -97,8 +101,8 @@ class Smarty_Internal_Compile_Forelse extends Smarty_Internal_CompileBase {
         // check and get attributes
         $_attr = $this->_get_attributes($args);
 
-        list($_open_tag, $nocache) = $this->_close_tag(array('for'));
-        $this->_open_tag('forelse', array('forelse', $nocache));
+        list($_open_tag, $nocache, $local_vars) = $this->_close_tag(array('for'));
+        $this->_open_tag('forelse', array('forelse', $nocache, $local_vars));
         return "";
     } 
 } 
@@ -124,7 +128,11 @@ class Smarty_Internal_Compile_Forclose extends Smarty_Internal_CompileBase {
             $this->compiler->tag_nocache = true;
         } 
 
-        list($_open_tag, $this->compiler->nocache) = $this->_close_tag(array('for', 'forelse'));
+        list($_open_tag, $this->compiler->nocache, $local_vars) = $this->_close_tag(array('for', 'forelse'));
+
+        foreach ($local_vars as $var) {
+            unset($compiler->local_var[$var]);
+        } 
         if ($_open_tag == 'forelse')
             return "";
         else
diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_compile_foreach.php b/gosa-core/include/smarty/sysplugins/smarty_internal_compile_foreach.php
index aac39f648..bfc084dae 100644
--- a/gosa-core/include/smarty/sysplugins/smarty_internal_compile_foreach.php
+++ b/gosa-core/include/smarty/sysplugins/smarty_internal_compile_foreach.php
@@ -28,10 +28,6 @@ class Smarty_Internal_Compile_Foreach extends Smarty_Internal_CompileBase {
         // check and get attributes
         $_attr = $this->_get_attributes($args);
 
-        $this->_open_tag('foreach', array('foreach', $this->compiler->nocache)); 
-        // maybe nocache because of nocache variables
-        $this->compiler->nocache = $this->compiler->nocache | $this->compiler->tag_nocache;
-
         $from = $_attr['from'];
         $item = $_attr['item'];
 
@@ -41,6 +37,10 @@ class Smarty_Internal_Compile_Foreach extends Smarty_Internal_CompileBase {
             $key = null;
         } 
 
+        $this->_open_tag('foreach', array('foreach', $this->compiler->nocache, $item, $key)); 
+        // maybe nocache because of nocache variables
+        $this->compiler->nocache = $this->compiler->nocache | $this->compiler->tag_nocache;
+
         if (isset($_attr['name'])) {
             $name = $_attr['name'];
             $has_name = true;
@@ -153,8 +153,8 @@ class Smarty_Internal_Compile_Foreachelse extends Smarty_Internal_CompileBase {
         // check and get attributes
         $_attr = $this->_get_attributes($args);
 
-        list($_open_tag, $nocache) = $this->_close_tag(array('foreach'));
-        $this->_open_tag('foreachelse', array('foreachelse', $nocache));
+        list($_open_tag, $nocache, $item, $key) = $this->_close_tag(array('foreach'));
+        $this->_open_tag('foreachelse', array('foreachelse', $nocache, $item, $key));
 
         return "";
     } 
@@ -181,7 +181,11 @@ class Smarty_Internal_Compile_Foreachclose extends Smarty_Internal_CompileBase {
             $this->compiler->tag_nocache = true;
         } 
 
-        list($_open_tag, $this->compiler->nocache) = $this->_close_tag(array('foreach', 'foreachelse'));
+        list($_open_tag, $this->compiler->nocache, $item, $key) = $this->_close_tag(array('foreach', 'foreachelse'));
+        unset($compiler->local_var[$item]);
+        if ($key != null) {
+            unset($compiler->local_var[$key]);
+        } 
 
         if ($_open_tag == 'foreachelse')
             return "";
diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_compile_function.php b/gosa-core/include/smarty/sysplugins/smarty_internal_compile_function.php
index 86363b2b8..88eec3db6 100644
--- a/gosa-core/include/smarty/sysplugins/smarty_internal_compile_function.php
+++ b/gosa-core/include/smarty/sysplugins/smarty_internal_compile_function.php
@@ -1,24 +1,24 @@
 compiler = $compiler;
@@ -31,39 +31,47 @@ class Smarty_Internal_Compile_Function extends Smarty_Internal_CompileBase {
         $this->_open_tag('function', $save);
         $_name = trim($_attr['name'], "'\"");
         unset($_attr['name']);
+        $compiler->template->properties['function'][$_name]['parameter'] = array();
         foreach ($_attr as $_key => $_data) {
             $compiler->template->properties['function'][$_name]['parameter'][$_key] = $_data;
         } 
-        // make function known for recursive calls
-        $this->compiler->smarty->template_functions[$_name]['compiled'] = ''; 
+        $compiler->smarty->template_functions[$_name]['parameter'] = $compiler->template->properties['function'][$_name]['parameter'];
+        if ($compiler->template->caching) {
+            $output = '';
+        } else {
+            $output = "tpl_vars;
+	foreach (\$params as \$key => \$value) {\$_smarty_tpl->tpl_vars[\$key] = new Smarty_variable(\$value);}?>";
+        } 
         // Init temporay context
         $compiler->template->required_plugins = array('compiled' => array(), 'nocache' => array());
         $compiler->template->extract_code = true;
-        $compiler->template->extracted_compiled_code = '';
+        $compiler->template->extracted_compiled_code = $output;
         $compiler->template->has_nocache_code = false;
         $compiler->has_code = false;
+        $compiler->template->properties['function'][$_name]['compiled'] = '';
         return true;
     } 
 } 
 
 /**
-* Smarty Internal Plugin Compile Functionclose Class
-*/
+ * Smarty Internal Plugin Compile Functionclose Class
+ */
 class Smarty_Internal_Compile_Functionclose extends Smarty_Internal_CompileBase {
     /**
-    * Compiles code for the {/function} tag
-    * 
-    * @param array $args array with attributes from parser
-    * @param object $compiler compiler object
-    * @return boolean true
-    */
+     * Compiles code for the {/function} tag
+     * 
+     * @param array $args array with attributes from parser
+     * @param object $compiler compiler object
+     * @return boolean true
+     */
     public function compile($args, $compiler)
     {
         $this->compiler = $compiler;
-        $this->compiler->has_code = false;
         $_attr = $this->_get_attributes($args);
         $saved_data = $this->_close_tag(array('function'));
-        $_name = trim($saved_data[0]['name'], "'"); 
+        $_name = trim($saved_data[0]['name'], "'\""); 
         // build plugin include code
         $plugins_string = '';
         if (!empty($compiler->template->required_plugins['compiled'])) {
@@ -84,16 +92,24 @@ class Smarty_Internal_Compile_Functionclose extends Smarty_Internal_CompileBase
             } 
             $plugins_string .= "?>/*/%%SmartyNocache:{$compiler->template->properties['nocache_hash']}%%*/';?>\n";
         } 
-        $compiler->template->properties['function'][$_name]['compiled'] = $plugins_string . $compiler->template->extracted_compiled_code;
-        $compiler->template->properties['function'][$_name]['nocache_hash'] = $compiler->template->properties['nocache_hash'];
-        $compiler->template->properties['function'][$_name]['has_nocache_code'] = $compiler->template->has_nocache_code; 
-        $this->compiler->smarty->template_functions[$_name] = $compiler->template->properties['function'][$_name]; 
+        // if caching save template function for possible nocache call
+        if ($compiler->template->caching) {
+            $compiler->template->properties['function'][$_name]['compiled'] .= $plugins_string
+             . $compiler->template->extracted_compiled_code;
+            $compiler->template->properties['function'][$_name]['nocache_hash'] = $compiler->template->properties['nocache_hash'];
+            $compiler->template->properties['function'][$_name]['has_nocache_code'] = $compiler->template->has_nocache_code;
+            $compiler->smarty->template_functions[$_name] = $compiler->template->properties['function'][$_name];
+            $compiler->has_code = false;
+            $output = true;
+        } else {
+            $output = $plugins_string . $compiler->template->extracted_compiled_code . "tpl_vars = \$saved_tpl_vars;}}?>\n";
+        } 
         // restore old compiler status
         $compiler->template->extracted_compiled_code = $saved_data[1];
         $compiler->template->extract_code = $saved_data[2];
-        $compiler->template->has_nocache_code = $saved_data[3];
+        $compiler->template->has_nocache_code = $compiler->template->has_nocache_code | $saved_data[3];
         $compiler->template->required_plugins = $saved_data[4];
-        return true;
+        return $output;
     } 
 } 
 
diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_compile_include.php b/gosa-core/include/smarty/sysplugins/smarty_internal_compile_include.php
index f82f038e8..d2f7484a5 100644
--- a/gosa-core/include/smarty/sysplugins/smarty_internal_compile_include.php
+++ b/gosa-core/include/smarty/sysplugins/smarty_internal_compile_include.php
@@ -1,25 +1,25 @@
 compiler = $compiler;
@@ -40,13 +40,23 @@ class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase {
                         // needs code for cached page but no cache file
                         $tpl->caching = 9999;
                     } 
+                   if ($this->compiler->template->mustCompile) {
+                        // make sure whole chain gest compiled
+                        $tpl->mustCompile = true;
+                    } 
                     if ($tpl->resource_object->usesCompiler && $tpl->isExisting()) {
-                        // make sure that template is up to date and merge template properties
-                        $tpl->renderTemplate(); 
-                        // compiled code for {function} tags
-                        $compiler->template->properties['function'] = array_merge($compiler->template->properties['function'], $tpl->properties['function']);
                         // get compiled code
-                        $compiled_tpl = $tpl->getCompiledTemplate(); 
+                        $compiled_tpl = $tpl->getCompiledTemplate();
+                        // merge compiled code for {function} tags
+                        $compiler->template->properties['function'] = array_merge($compiler->template->properties['function'], $tpl->properties['function']); 
+                        // merge filedependency by evaluating header code
+                        preg_match_all("/(<\?php \/\*%%SmartyHeaderCode:{$tpl->properties['nocache_hash']}%%\*\/(.+?)\/\*\/%%SmartyHeaderCode%%\*\/\?>\n)/s", $compiled_tpl, $result);
+                        $saved_has_nocache_code = $compiler->template->has_nocache_code;
+                        $saved_nocache_hash = $compiler->template->properties['nocache_hash'];
+                        $_smarty_tpl = $compiler->template;
+                        eval($result[2][0]);
+                        $compiler->template->properties['nocache_hash'] = $saved_nocache_hash;
+                        $compiler->template->has_nocache_code = $saved_has_nocache_code; 
                         // remove header code
                         $compiled_tpl = preg_replace("/(<\?php \/\*%%SmartyHeaderCode:{$tpl->properties['nocache_hash']}%%\*\/(.+?)\/\*\/%%SmartyHeaderCode%%\*\/\?>\n)/s", '', $compiled_tpl);
                         if ($tpl->has_nocache_code) {
@@ -137,7 +147,7 @@ class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase {
                 $_output .= "updateParentVariables($_parent_scope);?>";
             } 
         } 
-        $_output .= "\n";
+        $_output .= "";
         return $_output;
     } 
 } 
diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_compile_insert.php b/gosa-core/include/smarty/sysplugins/smarty_internal_compile_insert.php
index 189fe6d37..d90a9f295 100644
--- a/gosa-core/include/smarty/sysplugins/smarty_internal_compile_insert.php
+++ b/gosa-core/include/smarty/sysplugins/smarty_internal_compile_insert.php
@@ -1,25 +1,25 @@
 compiler = $compiler;
@@ -27,7 +27,8 @@ class Smarty_Internal_Compile_Insert extends Smarty_Internal_CompileBase {
         $this->optional_attributes = array('_any'); 
         // check and get attributes
         $_attr = $this->_get_attributes($args); 
-        // this tag must not be cached
+        // never compile as nocache code
+        $this->compiler->suppressNocacheProcessing = true;
         $this->compiler->tag_nocache = true;
         $_smarty_tpl = $compiler->template;
 
@@ -49,12 +50,13 @@ class Smarty_Internal_Compile_Insert extends Smarty_Internal_CompileBase {
                 $this->compiler->trigger_template_error("{insert} missing script file '{$_script}'");
             } 
             // code for script file loading
-            $_output .= "require_once {$_script} ;";
+            $_output .= "require_once '{$_script}' ;";
             require_once $_script;
             if (!is_callable($_function)) {
                 $this->compiler->trigger_template_error(" {insert} function '{$_name}' is not callable");
             } 
         } else {
+	$_script = 'null';
             if (!is_callable($_function)) {
                 if (!$_function = $this->compiler->getPlugin($_name, 'insert')) {
                     $this->compiler->trigger_template_error("{insert} no function or plugin found for '{$_name}'");
@@ -71,13 +73,21 @@ class Smarty_Internal_Compile_Insert extends Smarty_Internal_CompileBase {
         $_params = 'array(' . implode(", ", $_paramsArray) . ')'; 
         // call insert
         if (isset($_assign)) {
-            $_output .= "\$_smarty_tpl->assign({$_assign} , {$_function} ({$_params},\$_smarty_tpl->smarty,\$_smarty_tpl), true);?>";
+            if ($_smarty_tpl->caching) {
+                $_output .= "echo Smarty_Internal_Nocache_Insert::compile ('{$_function}',{$_params}, \$_smarty_tpl, '{$_script}',{$_assign});?>";
+            } else {
+                $_output .= "\$_smarty_tpl->assign({$_assign} , {$_function} ({$_params},\$_smarty_tpl->smarty,\$_smarty_tpl), true);?>";
+            } 
         } else {
             $this->compiler->has_output = true;
-            $_output .= "echo {$_function}({$_params},\$_smarty_tpl->smarty,\$_smarty_tpl);?>";
+            if ($_smarty_tpl->caching) {
+                $_output .= "echo Smarty_Internal_Nocache_Insert::compile ('{$_function}',{$_params}, \$_smarty_tpl, '{$_script}');?>";
+            } else {
+                $_output .= "echo {$_function}({$_params},\$_smarty_tpl->smarty,\$_smarty_tpl);?>";
+            } 
         } 
         return $_output;
     } 
 } 
 
-?>
+?>
\ No newline at end of file
diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_compile_private_block_plugin.php b/gosa-core/include/smarty/sysplugins/smarty_internal_compile_private_block_plugin.php
index 436ba2472..5a9b1140f 100644
--- a/gosa-core/include/smarty/sysplugins/smarty_internal_compile_private_block_plugin.php
+++ b/gosa-core/include/smarty/sysplugins/smarty_internal_compile_private_block_plugin.php
@@ -23,7 +23,7 @@ class Smarty_Internal_Compile_Private_Block_Plugin extends Smarty_Internal_Compi
     public function compile($args, $compiler, $tag, $function)
     {
         $this->compiler = $compiler;
-        if (strlen($tag) < 6 || substr_compare($tag, 'close', -5, 5) != 0) {
+        if (strlen($tag) < 6 || substr($tag, -5) != 'close') {
             // opening tag of block plugin
             $this->required_attributes = array();
             $this->optional_attributes = array('_any'); 
@@ -69,4 +69,4 @@ class Smarty_Internal_Compile_Private_Block_Plugin extends Smarty_Internal_Compi
     } 
 } 
 
-?>
+?>
\ No newline at end of file
diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_compile_private_object_block_function.php b/gosa-core/include/smarty/sysplugins/smarty_internal_compile_private_object_block_function.php
index 69d105011..ba4d5000c 100644
--- a/gosa-core/include/smarty/sysplugins/smarty_internal_compile_private_object_block_function.php
+++ b/gosa-core/include/smarty/sysplugins/smarty_internal_compile_private_object_block_function.php
@@ -24,7 +24,7 @@ class Smarty_Internal_Compile_Private_Object_Block_Function extends Smarty_Inter
     public function compile($args, $compiler, $tag, $methode)
     {
         $this->compiler = $compiler;
-        if (strlen($tag) < 5 || substr_compare($tag, 'close', -5, 5) != 0) {
+        if (strlen($tag) < 5 || substr($tag, -5) != 'close') {
             // opening tag of block plugin
             $this->required_attributes = array();
             $this->optional_attributes = array('_any'); 
@@ -57,4 +57,4 @@ class Smarty_Internal_Compile_Private_Object_Block_Function extends Smarty_Inter
     } 
 } 
 
-?>
+?>
\ No newline at end of file
diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_compile_private_print_expression.php b/gosa-core/include/smarty/sysplugins/smarty_internal_compile_private_print_expression.php
index 7f72a76d1..e72ca46c9 100644
--- a/gosa-core/include/smarty/sysplugins/smarty_internal_compile_private_print_expression.php
+++ b/gosa-core/include/smarty/sysplugins/smarty_internal_compile_private_print_expression.php
@@ -1,24 +1,24 @@
 compiler = $compiler;
@@ -49,10 +49,19 @@ class Smarty_Internal_Compile_Private_Print_Expression extends Smarty_Internal_C
             // display value
             $this->compiler->has_output = true;
             if (isset($this->compiler->smarty->registered_filters['variable'])) {
-                $output = 'smarty, $_smarty_tpl, ' . $_attr['filter'] . ');?>';
+                $output = 'Smarty_Internal_Filter_Handler::runFilter(\'variable\', ' . $_attr['value'] . ',$_smarty_tpl->smarty, $_smarty_tpl, ' . $_attr['filter'] . ')';
             } else {
-                $output = '';
+                $output = $_attr['value'];
             } 
+            if (!isset($_attr['nofilter']) && isset($this->compiler->smarty->default_modifiers)) {
+                foreach ($this->compiler->smarty->default_modifiers as $default_modifier) {
+                    $mod_array = explode (':', $default_modifier);
+                    $modifier = $mod_array[0];
+                    $mod_array[0] = $output;
+                    $output = $this->compiler->compileTag('private_modifier', array('modifier' => $modifier, 'params' => implode(", ", $mod_array)));
+                } 
+            } 
+            $output = '';
         } 
         return $output;
     } 
diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_compile_private_registered_block.php b/gosa-core/include/smarty/sysplugins/smarty_internal_compile_private_registered_block.php
index 3ad4d2fab..e0e7d87f5 100644
--- a/gosa-core/include/smarty/sysplugins/smarty_internal_compile_private_registered_block.php
+++ b/gosa-core/include/smarty/sysplugins/smarty_internal_compile_private_registered_block.php
@@ -23,7 +23,7 @@ class Smarty_Internal_Compile_Private_Registered_Block extends Smarty_Internal_C
     public function compile($args, $compiler, $tag)
     {
         $this->compiler = $compiler;
-        if (strlen($tag) < 6 || substr_compare($tag, 'close', -5, 5) != 0) {
+        if (strlen($tag) < 6 || substr($tag,-5) != 'close') {
             // opening tag of block plugin
             $this->required_attributes = array();
             $this->optional_attributes = array('_any'); 
diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_config.php b/gosa-core/include/smarty/sysplugins/smarty_internal_config.php
index 3141e7931..4c10505fe 100644
--- a/gosa-core/include/smarty/sysplugins/smarty_internal_config.php
+++ b/gosa-core/include/smarty/sysplugins/smarty_internal_config.php
@@ -172,7 +172,7 @@ class Smarty_Internal_Config {
     public function mustCompile ()
     {
         return $this->mustCompile === null ?
-        $this->mustCompile = ($this->smarty->force_compile || $this->smarty->compile_check && $this->getCompiledTimestamp () !== $this->getTimestamp ()):
+        $this->mustCompile = ($this->smarty->force_compile || $this->getCompiledTimestamp () === false || $this->smarty->compile_check && $this->getCompiledTimestamp () < $this->getTimestamp ()):
         $this->mustCompile;
     } 
     /**
@@ -243,7 +243,7 @@ class Smarty_Internal_Config {
         if ($this->mustCompile()) {
             $this->compileConfigSource();
         } 
-        include($this->getCompiledFilepath ());
+        include($this->getCompiledFilepath ()); 
         // copy global config vars
         foreach ($_config_vars['vars'] as $variable => $value) {
             if ($this->smarty->config_overwrite || !isset($scope->config_vars[$variable])) {
diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_configfileparser.php b/gosa-core/include/smarty/sysplugins/smarty_internal_configfileparser.php
index 3621a487f..3cd3f0f0b 100644
--- a/gosa-core/include/smarty/sysplugins/smarty_internal_configfileparser.php
+++ b/gosa-core/include/smarty/sysplugins/smarty_internal_configfileparser.php
@@ -368,7 +368,7 @@ static public $yy_action = array(
 
     function __destruct()
     {
-        while ($this->yyidx >= 0) {
+        while ($this->yystack !== Array()) {
             $this->yy_pop_parser_stack();
         }
         if (is_resource(self::$yyTraceFILE)) {
@@ -404,7 +404,7 @@ static public $yy_action = array(
                         $this->yystack[$this->yyidx]->stateno,
                         self::$yyRuleInfo[$yyruleno]['lhs']);
                     if (isset(self::$yyExpectedTokens[$nextstate])) {
-                        $expected += self::$yyExpectedTokens[$nextstate];
+		        $expected = array_merge($expected, self::$yyExpectedTokens[$nextstate]);
                             if (in_array($token,
                                   self::$yyExpectedTokens[$nextstate], true)) {
                             $this->yyidx = $yyidx;
@@ -439,6 +439,8 @@ static public $yy_action = array(
             }
             break;
         } while (true);
+	$this->yyidx = $yyidx;
+	$this->yystack = $stack;
         return array_unique($expected);
     }
 
@@ -581,6 +583,11 @@ static public $yy_action = array(
             while ($this->yyidx >= 0) {
                 $this->yy_pop_parser_stack();
             }
+#line 127 "smarty_internal_configfileparser.y"
+
+    $this->internalError = true;
+    $this->compiler->trigger_config_file_error("Stack overflow in configfile parser");
+#line 586 "smarty_internal_configfileparser.php"
             return;
         }
         $yytos = new TPC_yyStackEntry;
@@ -645,51 +652,51 @@ static public $yy_action = array(
         15 => 15,
         16 => 16,
     );
-#line 127 "smarty_internal_configfileparser.y"
+#line 133 "smarty_internal_configfileparser.y"
     function yy_r0(){ $this->_retvalue = null;     }
-#line 645 "smarty_internal_configfileparser.php"
-#line 130 "smarty_internal_configfileparser.y"
-    function yy_r1(){ $this->add_global_vars($this->yystack[$this->yyidx + 0]->minor); $this->_retvalue = null;     }
-#line 648 "smarty_internal_configfileparser.php"
+#line 653 "smarty_internal_configfileparser.php"
 #line 136 "smarty_internal_configfileparser.y"
+    function yy_r1(){ $this->add_global_vars($this->yystack[$this->yyidx + 0]->minor); $this->_retvalue = null;     }
+#line 656 "smarty_internal_configfileparser.php"
+#line 142 "smarty_internal_configfileparser.y"
     function yy_r4(){ $this->add_section_vars($this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + 0]->minor); $this->_retvalue = null;     }
-#line 651 "smarty_internal_configfileparser.php"
-#line 137 "smarty_internal_configfileparser.y"
+#line 659 "smarty_internal_configfileparser.php"
+#line 143 "smarty_internal_configfileparser.y"
     function yy_r5(){ if ($this->smarty->config_read_hidden) { $this->add_section_vars($this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + 0]->minor); } $this->_retvalue = null;     }
-#line 654 "smarty_internal_configfileparser.php"
-#line 140 "smarty_internal_configfileparser.y"
+#line 662 "smarty_internal_configfileparser.php"
+#line 146 "smarty_internal_configfileparser.y"
     function yy_r6(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;     }
-#line 657 "smarty_internal_configfileparser.php"
-#line 141 "smarty_internal_configfileparser.y"
+#line 665 "smarty_internal_configfileparser.php"
+#line 147 "smarty_internal_configfileparser.y"
     function yy_r7(){ $this->_retvalue = array_merge($this->yystack[$this->yyidx + -1]->minor, Array($this->yystack[$this->yyidx + 0]->minor));     }
-#line 660 "smarty_internal_configfileparser.php"
-#line 142 "smarty_internal_configfileparser.y"
+#line 668 "smarty_internal_configfileparser.php"
+#line 148 "smarty_internal_configfileparser.y"
     function yy_r8(){ $this->_retvalue = Array();     }
-#line 663 "smarty_internal_configfileparser.php"
-#line 146 "smarty_internal_configfileparser.y"
+#line 671 "smarty_internal_configfileparser.php"
+#line 152 "smarty_internal_configfileparser.y"
     function yy_r9(){ $this->_retvalue = Array("key" => $this->yystack[$this->yyidx + -2]->minor, "value" => $this->yystack[$this->yyidx + 0]->minor);     }
-#line 666 "smarty_internal_configfileparser.php"
-#line 148 "smarty_internal_configfileparser.y"
+#line 674 "smarty_internal_configfileparser.php"
+#line 154 "smarty_internal_configfileparser.y"
     function yy_r10(){ $this->_retvalue = (float) $this->yystack[$this->yyidx + 0]->minor;     }
-#line 669 "smarty_internal_configfileparser.php"
-#line 149 "smarty_internal_configfileparser.y"
+#line 677 "smarty_internal_configfileparser.php"
+#line 155 "smarty_internal_configfileparser.y"
     function yy_r11(){ $this->_retvalue = (int) $this->yystack[$this->yyidx + 0]->minor;     }
-#line 672 "smarty_internal_configfileparser.php"
-#line 150 "smarty_internal_configfileparser.y"
+#line 680 "smarty_internal_configfileparser.php"
+#line 156 "smarty_internal_configfileparser.y"
     function yy_r12(){ $this->_retvalue = $this->parse_bool($this->yystack[$this->yyidx + 0]->minor);     }
-#line 675 "smarty_internal_configfileparser.php"
-#line 151 "smarty_internal_configfileparser.y"
+#line 683 "smarty_internal_configfileparser.php"
+#line 157 "smarty_internal_configfileparser.y"
     function yy_r13(){ $this->_retvalue = self::parse_single_quoted_string($this->yystack[$this->yyidx + 0]->minor);     }
-#line 678 "smarty_internal_configfileparser.php"
-#line 152 "smarty_internal_configfileparser.y"
+#line 686 "smarty_internal_configfileparser.php"
+#line 158 "smarty_internal_configfileparser.y"
     function yy_r14(){ $this->_retvalue = self::parse_double_quoted_string($this->yystack[$this->yyidx + 0]->minor);     }
-#line 681 "smarty_internal_configfileparser.php"
-#line 153 "smarty_internal_configfileparser.y"
+#line 689 "smarty_internal_configfileparser.php"
+#line 159 "smarty_internal_configfileparser.y"
     function yy_r15(){ $this->_retvalue = self::parse_tripple_double_quoted_string($this->yystack[$this->yyidx + 0]->minor);     }
-#line 684 "smarty_internal_configfileparser.php"
-#line 154 "smarty_internal_configfileparser.y"
+#line 692 "smarty_internal_configfileparser.php"
+#line 160 "smarty_internal_configfileparser.y"
     function yy_r16(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;     }
-#line 687 "smarty_internal_configfileparser.php"
+#line 695 "smarty_internal_configfileparser.php"
 
     private $_retvalue;
 
@@ -751,7 +758,7 @@ static public $yy_action = array(
     $this->internalError = true;
     $this->yymajor = $yymajor;
     $this->compiler->trigger_config_file_error();
-#line 750 "smarty_internal_configfileparser.php"
+#line 758 "smarty_internal_configfileparser.php"
     }
 
     function yy_accept()
@@ -768,7 +775,7 @@ static public $yy_action = array(
     $this->internalError = false;
     $this->retvalue = $this->_retvalue;
     //echo $this->retvalue."\n\n";
-#line 768 "smarty_internal_configfileparser.php"
+#line 776 "smarty_internal_configfileparser.php"
     }
 
     function doParse($yymajor, $yytokenvalue)
@@ -861,4 +868,4 @@ static public $yy_action = array(
         } while ($yymajor != self::YYNOCODE && $this->yyidx >= 0);
     }
 }
-?>
+?>
\ No newline at end of file
diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_data.php b/gosa-core/include/smarty/sysplugins/smarty_internal_data.php
index 63f98a1d3..ec7d0d4fe 100644
--- a/gosa-core/include/smarty/sysplugins/smarty_internal_data.php
+++ b/gosa-core/include/smarty/sysplugins/smarty_internal_data.php
@@ -68,6 +68,19 @@ class Smarty_Internal_Data {
         } 
     } 
     /**
+    * wrapper function for Smarty 2 BC
+    * 
+    * @param string $tpl_var the template variable name
+    * @param mixed $ &$value the referenced value to assign
+    * @param boolean $nocache if true any output of this variable will be not cached
+    * @param boolean $scope the scope the variable will have  (local,parent or root)
+    */
+    public function assign_by_ref($tpl_var, &$value, $nocache = false, $scope = SMARTY_LOCAL_SCOPE)
+    {
+        trigger_error("function call 'assign_by_ref' is unknown or deprecated, use 'assignByRef'",E_USER_NOTICE);
+	$this->assignByRef($tpl_var,$value,$nocache,$scope);
+    } 
+    /**
     * appends values to template variables
     * 
     * @param array $ |string $tpl_var the template variable name(s)
@@ -157,7 +170,18 @@ class Smarty_Internal_Data {
             } 
         } 
     } 
-
+    /**
+    * wrapper function for Smarty 2 BC
+    * 
+    * @param string $tpl_var the template variable name
+    * @param mixed $ &$value the referenced value to append
+    * @param boolean $merge flag if array elements shall be merged
+    */
+    public function append_by_ref($tpl_var, &$value, $merge = false)
+    {
+        trigger_error("function call 'append_by_ref' is unknown or deprecated, use 'appendByRef'",E_USER_NOTICE);
+        $this->appendByRef($tpl_var,$value,$merge);
+    }
     /**
     * Returns a single or all template variables
     * 
@@ -188,7 +212,7 @@ class Smarty_Internal_Data {
                     $_ptr = null;
                 } 
             } 
-            if ($search_parents) {
+            if ($search_parents && isset($this->global_tpl_vars)) {
                 foreach ($this->global_tpl_vars AS $key => $var) {
                     $_result[$key] = $var->value;
                 } 
diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_function_call_handler.php b/gosa-core/include/smarty/sysplugins/smarty_internal_function_call_handler.php
index c9b2948dc..48bee427d 100644
--- a/gosa-core/include/smarty/sysplugins/smarty_internal_function_call_handler.php
+++ b/gosa-core/include/smarty/sysplugins/smarty_internal_function_call_handler.php
@@ -1,47 +1,38 @@
 smarty->template_functions[$name])) {
-            throw new Exception("Call to undefined template function \"{$name}\" in template \"{$parent->template_resource}\"");
-        } 
-        $this->called_nocache = $nocache;
-        $this->mustCompile = false;
-        if ($nocache) {
-            $smarty->template_functions[$name]['called_nocache'] = true;
-            $this->properties['function'][$name]['called_nocache'] = true;
-        } 
-        $this->properties['nocache_hash'] = $smarty->template_functions[$name]['nocache_hash']; 
-        // load compiled function
-        if ($nocache) {
-            // if called in nocache mode convert nocache code to real code
-            $this->compiled_template = preg_replace(array("!(<\?php echo ')?/\*/?%%SmartyNocache:{$this->smarty->template_functions[$name]['nocache_hash']}%%\*/(';\?>)?!", "!\\\'!"), array('', "'"), $smarty->template_functions[$name]['compiled']);
+        if ($_nocache) {
+            $_function = "smarty_template_function_{$_name}_nocache";
+            $_template->smarty->template_functions[$_name]['called_nocache'] = true;
         } else {
-            $this->compiled_template = $smarty->template_functions[$name]['compiled'];
+            $_function = "smarty_template_function_{$_hash}_{$_name}";
         } 
-        // assign default paramter
-        if (isset($smarty->template_functions[$name]['parameter'])) {
-            $_smarty_tpl = $this;
-            foreach ($smarty->template_functions[$name]['parameter'] as $_key => $_value) {
-                $this->assign($_key, eval("return {$_value};"));
+        if (!is_callable($_function)) {
+            $_code = "function {$_function}(\$_smarty_tpl,\$params) {
+	\$saved_tpl_vars = \$_smarty_tpl->tpl_vars;
+	foreach (\$params as \$key => \$value) {\$_smarty_tpl->tpl_vars[\$key] = new Smarty_variable(\$value);}?>";
+            if ($_nocache) {
+                $_code .= preg_replace(array("!<\?php echo \\'/\*%%SmartyNocache:{$_template->smarty->template_functions[$_name]['nocache_hash']}%%\*/|/\*/%%SmartyNocache:{$_template->smarty->template_functions[$_name]['nocache_hash']}%%\*/\\';\?>!",
+                        "!\\\'!"), array('', "'"), $_template->smarty->template_functions[$_name]['compiled']);
+            } else {
+                $_code .= preg_replace("/{$_template->smarty->template_functions[$_name]['nocache_hash']}/", $_template->properties['nocache_hash'], $_template->smarty->template_functions[$_name]['compiled']);
             } 
+            $_code .= "tpl_vars = \$saved_tpl_vars;}";
+            eval($_code);
         } 
-        // set flag if {function} contains nocache code
-        if ($smarty->template_functions[$name]['has_nocache_code']) {
-            $this->has_nocache_code = true;
-        } 
+        $_function($_template, $_params);
     } 
 } 
 
-?>
+?>
\ No newline at end of file
diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_resource_extends.php b/gosa-core/include/smarty/sysplugins/smarty_internal_resource_extends.php
index c4f588a66..444907586 100644
--- a/gosa-core/include/smarty/sysplugins/smarty_internal_resource_extends.php
+++ b/gosa-core/include/smarty/sysplugins/smarty_internal_resource_extends.php
@@ -98,11 +98,11 @@ class Smarty_Internal_Resource_Extends {
             $_template->template_filepath = $_filepath;
             $_content = file_get_contents($_filepath);
             if ($_filepath != $_files[count($_files)-1]) {
-                if (preg_match_all("!({$this->_ldl}block(.+?){$this->_rdl})!", $_content, $_open) !=
+                if (preg_match_all("!({$this->_ldl}block\s(.+?){$this->_rdl})!", $_content, $_open) !=
                         preg_match_all("!({$this->_ldl}/block(.*?){$this->_rdl})!", $_content, $_close)) {
                     $this->smarty->trigger_error("unmatched {block} {/block} pairs in file '$_filepath'");
                 } 
-                preg_match_all("!{$this->_ldl}block(.+?){$this->_rdl}|{$this->_ldl}/block(.*?){$this->_rdl}!", $_content, $_result, PREG_OFFSET_CAPTURE);
+                preg_match_all("!{$this->_ldl}block\s(.+?){$this->_rdl}|{$this->_ldl}/block(.*?){$this->_rdl}!", $_content, $_result, PREG_OFFSET_CAPTURE);
                 $_result_count = count($_result[0]);
                 $_start = 0;
                 while ($_start < $_result_count) {
diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_template.php b/gosa-core/include/smarty/sysplugins/smarty_internal_template.php
index 3dfd3f317..bb334595f 100644
--- a/gosa-core/include/smarty/sysplugins/smarty_internal_template.php
+++ b/gosa-core/include/smarty/sysplugins/smarty_internal_template.php
@@ -271,7 +271,7 @@ class Smarty_Internal_Template extends Smarty_Internal_Data {
                 touch($this->getCompiledFilepath(), $saved_timestamp);
             } 
             throw $e;
-        }
+        } 
         // compiling succeded
         if (!$this->resource_object->isEvaluated) {
             // write compiled template
@@ -291,6 +291,9 @@ class Smarty_Internal_Template extends Smarty_Internal_Data {
      */
     public function getCachedFilepath ()
     {
+        if (!isset($this->cache_resource_object)) {
+            $this->cache_resource_object = $this->smarty->cache->loadResource();
+        } 
         return $this->cached_filepath === null ?
         $this->cached_filepath = ($this->resource_object->isEvaluated || !($this->caching == SMARTY_CACHING_LIFETIME_CURRENT || $this->caching == SMARTY_CACHING_LIFETIME_SAVED)) ? false : $this->cache_resource_object->getCachedFilepath($this) :
         $this->cached_filepath;
@@ -305,6 +308,9 @@ class Smarty_Internal_Template extends Smarty_Internal_Data {
      */
     public function getCachedTimestamp ()
     {
+        if (!isset($this->cache_resource_object)) {
+            $this->cache_resource_object = $this->smarty->cache->loadResource();
+        } 
         return $this->cached_timestamp === null ?
         $this->cached_timestamp = ($this->resource_object->isEvaluated || !($this->caching == SMARTY_CACHING_LIFETIME_CURRENT || $this->caching == SMARTY_CACHING_LIFETIME_SAVED)) ? false : $this->cache_resource_object->getCachedTimestamp($this) :
         $this->cached_timestamp;
@@ -317,6 +323,9 @@ class Smarty_Internal_Template extends Smarty_Internal_Data {
      */
     public function getCachedContent ()
     {
+        if (!isset($this->cache_resource_object)) {
+            $this->cache_resource_object = $this->smarty->cache->loadResource();
+        } 
         return $this->rendered_content === null ?
         $this->rendered_content = ($this->resource_object->isEvaluated || !($this->caching == SMARTY_CACHING_LIFETIME_CURRENT || $this->caching == SMARTY_CACHING_LIFETIME_SAVED)) ? false : $this->cache_resource_object->getCachedContents($this) :
         $this->rendered_content;
@@ -703,7 +712,7 @@ class Smarty_Internal_Template extends Smarty_Internal_Data {
                     if (class_exists($_resource_class, false)) {
                         return new $_resource_class($this->smarty);
                     } else {
-                        $this->smarty->register_resource($resource_type,
+                        $this->smarty->register->resource($resource_type,
                             array("smarty_resource_{$resource_type}_source",
                                 "smarty_resource_{$resource_type}_timestamp",
                                 "smarty_resource_{$resource_type}_secure",
diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_templatecompilerbase.php b/gosa-core/include/smarty/sysplugins/smarty_internal_templatecompilerbase.php
index c41d7750a..91ed88866 100644
--- a/gosa-core/include/smarty/sysplugins/smarty_internal_templatecompilerbase.php
+++ b/gosa-core/include/smarty/sysplugins/smarty_internal_templatecompilerbase.php
@@ -133,7 +133,7 @@ class Smarty_Internal_TemplateCompilerBase {
             return '';
         } else {
             // not an internal compiler tag
-            if (strlen($tag) < 6 || substr_compare($tag, 'close', -5, 5) != 0) {
+            if (strlen($tag) < 6 || substr($tag, -5) != 'close') {
                 // check if tag is a registered object
                 if (isset($this->smarty->registered_objects[$tag]) && isset($args['object_methode'])) {
                     $methode = $args['object_methode'];
@@ -363,7 +363,6 @@ class Smarty_Internal_TemplateCompilerBase {
             // generate replacement code
             if ((!$this->template->resource_object->isEvaluated || $this->template->forceNocache) && $this->template->caching && !$this->suppressNocacheProcessing &&
                     ($this->nocache || $this->tag_nocache || $this->template->forceNocache == 2)) {
-                $this->tag_nocache = false;
                 $this->template->has_nocache_code = true;
                 $_output = str_replace("'", "\'", $content);
                 $_output = "nocache_hash}%%*/" . $_output . "/*/%%SmartyNocache:{$this->nocache_hash}%%*/';?>"; 
@@ -383,6 +382,7 @@ class Smarty_Internal_TemplateCompilerBase {
             $_output = $content;
         } 
         $this->suppressNocacheProcessing = false;
+        $this->tag_nocache = false;
         return $_output;
     } 
     /**
diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_templatelexer.php b/gosa-core/include/smarty/sysplugins/smarty_internal_templatelexer.php
index e28e67191..629909a85 100644
--- a/gosa-core/include/smarty/sysplugins/smarty_internal_templatelexer.php
+++ b/gosa-core/include/smarty/sysplugins/smarty_internal_templatelexer.php
@@ -87,6 +87,7 @@ class Smarty_Internal_Templatelexer
         $this->smarty = $compiler->smarty;
         $this->compiler = $compiler;
         $this->ldel = preg_quote($this->smarty->left_delimiter,'/'); 
+        $this->ldel_length = strlen($this->smarty->left_delimiter); 
         $this->rdel = preg_quote($this->smarty->right_delimiter,'/');
         $this->smarty_token_names['LDEL'] =	$this->smarty->left_delimiter;
         $this->smarty_token_names['RDEL'] =	$this->smarty->right_delimiter;
@@ -139,16 +140,19 @@ class Smarty_Internal_Templatelexer
               8 => 0,
               9 => 0,
               10 => 0,
-              11 => 0,
-              12 => 0,
+              11 => 1,
               13 => 0,
-              14 => 2,
+              14 => 0,
+              15 => 0,
+              16 => 0,
               17 => 0,
+              18 => 2,
+              21 => 0,
             );
         if ($this->counter >= strlen($this->data)) {
             return false; // end of input
         }
-        $yy_global_pattern = "/^(\\{\\})|^(".$this->ldel."\\*([\S\s]*?)\\*".$this->rdel.")|^(<\\?(?:php\\w+|=|[a-zA-Z]+)?)|^(\\?>)|^([\t ]*[\r\n]+[\t ]*)|^(".$this->ldel."strip".$this->rdel.")|^(".$this->ldel."\/strip".$this->rdel.")|^(".$this->ldel."literal".$this->rdel.")|^(".$this->ldel."\\s{1,}\/)|^(".$this->ldel."\\s{1,})|^(".$this->ldel."\/)|^(".$this->ldel.")|^(([\S\s]*?)(?=([\t ]*[\r\n]+[\t ]*|".$this->ldel."|<\\?|\\?>)))|^([\S\s]+)/";
+        $yy_global_pattern = "/^(\\{\\})|^(".$this->ldel."\\*([\S\s]*?)\\*".$this->rdel.")|^(<\\?(?:php\\w+|=|[a-zA-Z]+)?)|^(\\?>)|^([\t ]*[\r\n]+[\t ]*)|^(".$this->ldel."strip".$this->rdel.")|^(".$this->ldel."\/strip".$this->rdel.")|^(".$this->ldel."literal".$this->rdel.")|^(".$this->ldel."\\s{1,}\/)|^(".$this->ldel."\\s*(if|elseif|else if|while)(?![^\s]))|^(".$this->ldel."\\s*for(?![^\s]))|^(".$this->ldel."\\s*foreach(?![^\s]))|^(".$this->ldel."\\s{1,})|^(".$this->ldel."\/)|^(".$this->ldel.")|^(([\S\s]*?)(?=([\t ]*[\r\n]+[\t ]*|".$this->ldel."|<\\?|\\?>)))|^([\S\s]+)/";
 
         do {
             if (preg_match($yy_global_pattern, substr($this->data, $this->counter), $yymatches)) {
@@ -266,6 +270,39 @@ class Smarty_Internal_Templatelexer
     function yy_r1_11($yy_subpatterns)
     {
 
+  if ($this->smarty->auto_literal && trim(substr($this->value,$this->ldel_length,1)) == '') {
+     $this->token = Smarty_Internal_Templateparser::TP_OTHER;
+  } else {
+     $this->token = Smarty_Internal_Templateparser::TP_LDELIF;
+     $this->yypushstate(self::SMARTY);
+     $this->taglineno = $this->line;
+  }
+    }
+    function yy_r1_13($yy_subpatterns)
+    {
+
+  if ($this->smarty->auto_literal && trim(substr($this->value,$this->ldel_length,1)) == '') {
+     $this->token = Smarty_Internal_Templateparser::TP_OTHER;
+  } else {
+     $this->token = Smarty_Internal_Templateparser::TP_LDELFOR;
+     $this->yypushstate(self::SMARTY);
+     $this->taglineno = $this->line;
+  }
+    }
+    function yy_r1_14($yy_subpatterns)
+    {
+
+  if ($this->smarty->auto_literal && trim(substr($this->value,$this->ldel_length,1)) == '') {
+     $this->token = Smarty_Internal_Templateparser::TP_OTHER;
+  } else {
+     $this->token = Smarty_Internal_Templateparser::TP_LDELFOREACH;
+     $this->yypushstate(self::SMARTY);
+     $this->taglineno = $this->line;
+  }
+    }
+    function yy_r1_15($yy_subpatterns)
+    {
+
   if ($this->smarty->auto_literal) {
      $this->token = Smarty_Internal_Templateparser::TP_OTHER;
   } else {
@@ -274,26 +311,26 @@ class Smarty_Internal_Templatelexer
      $this->taglineno = $this->line;
   }
     }
-    function yy_r1_12($yy_subpatterns)
+    function yy_r1_16($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_LDELSLASH;
      $this->yypushstate(self::SMARTY);
      $this->taglineno = $this->line;
     }
-    function yy_r1_13($yy_subpatterns)
+    function yy_r1_17($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_LDEL;
      $this->yypushstate(self::SMARTY);
      $this->taglineno = $this->line;
     }
-    function yy_r1_14($yy_subpatterns)
+    function yy_r1_18($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_OTHER;
     }
-    function yy_r1_17($yy_subpatterns)
+    function yy_r1_21($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_OTHER;
@@ -305,20 +342,21 @@ class Smarty_Internal_Templatelexer
         $tokenMap = array (
               1 => 0,
               2 => 0,
-              3 => 0,
-              4 => 0,
+              3 => 1,
               5 => 0,
               6 => 0,
               7 => 0,
               8 => 0,
-              9 => 1,
-              11 => 1,
+              9 => 0,
+              10 => 0,
+              11 => 0,
+              12 => 0,
               13 => 1,
-              15 => 0,
-              16 => 0,
-              17 => 0,
-              18 => 1,
-              20 => 1,
+              15 => 1,
+              17 => 1,
+              19 => 0,
+              20 => 0,
+              21 => 0,
               22 => 1,
               24 => 1,
               26 => 1,
@@ -328,31 +366,29 @@ class Smarty_Internal_Templatelexer
               34 => 1,
               36 => 1,
               38 => 1,
-              40 => 0,
-              41 => 0,
-              42 => 0,
-              43 => 0,
+              40 => 1,
+              42 => 1,
               44 => 0,
               45 => 0,
               46 => 0,
               47 => 0,
               48 => 0,
               49 => 0,
-              50 => 3,
-              54 => 0,
-              55 => 0,
-              56 => 0,
-              57 => 0,
+              50 => 0,
+              51 => 0,
+              52 => 0,
+              53 => 0,
+              54 => 3,
               58 => 0,
               59 => 0,
               60 => 0,
-              61 => 1,
-              63 => 1,
+              61 => 0,
+              62 => 0,
+              63 => 0,
+              64 => 0,
               65 => 1,
-              67 => 0,
-              68 => 0,
-              69 => 0,
-              70 => 0,
+              67 => 1,
+              69 => 1,
               71 => 0,
               72 => 0,
               73 => 0,
@@ -362,18 +398,20 @@ class Smarty_Internal_Templatelexer
               77 => 0,
               78 => 0,
               79 => 0,
-              80 => 1,
+              80 => 0,
+              81 => 0,
               82 => 0,
               83 => 0,
               84 => 0,
               85 => 0,
               86 => 0,
               87 => 0,
+              88 => 0,
             );
         if ($this->counter >= strlen($this->data)) {
             return false; // end of input
         }
-        $yy_global_pattern = "/^('[^'\\\\]*(?:\\\\.[^'\\\\]*)*')|^(".$this->ldel."\\s{1,}\/)|^(".$this->ldel."\\s{1,})|^(\\s{1,}".$this->rdel.")|^(".$this->ldel."\/)|^(".$this->ldel.")|^(".$this->rdel.")|^(\\s+is\\s+in\\s+)|^(\\s+(AS|as)\\s+)|^(\\s+(to)\\s+)|^(\\s+(step)\\s+)|^(\\s+instanceof\\s+)|^(\\s*===\\s*)|^(\\s*!==\\s*)|^(\\s*==\\s*|\\s+(EQ|eq)\\s+)|^(\\s*!=\\s*|\\s*<>\\s*|\\s+(NE|NEQ|ne|neq)\\s+)|^(\\s*>=\\s*|\\s+(GE|GTE|ge|gte)\\s+)|^(\\s*<=\\s*|\\s+(LE|LTE|le|lte)\\s+)|^(\\s*>\\s*|\\s+(GT|gt)\\s+)|^(\\s*<\\s*|\\s+(LT|lt)\\s+)|^(\\s+(MOD|mod)\\s+)|^(!\\s*|(NOT|not)\\s+)|^(\\s*&&\\s*|\\s*(AND|and)\\s+)|^(\\s*\\|\\|\\s*|\\s*(OR|or)\\s+)|^(\\s*(XOR|xor)\\s+)|^(\\s+is\\s+odd\\s+by\\s+)|^(\\s+is\\s+not\\s+odd\\s+by\\s+)|^(\\s+is\\s+odd)|^(\\s+is\\s+not\\s+odd)|^(\\s+is\\s+even\\s+by\\s+)|^(\\s+is\\s+not\\s+even\\s+by\\s+)|^(\\s+is\\s+even)|^(\\s+is\\s+not\\s+even)|^(\\s+is\\s+div\\s+by\\s+)|^(\\s+is\\s+not\\s+div\\s+by\\s+)|^(\\((int(eger)?|bool(ean)?|float|double|real|string|binary|array|object)\\))|^(\\(\\s*)|^(\\s*\\))|^(\\[\\s*)|^(\\s*\\])|^(\\s*->\\s*)|^(\\s*=>\\s*)|^(\\s*=\\s*)|^((\\+\\+|--)\\s*)|^(\\s*(\\+|-)\\s*)|^(\\s*(\\*|\/|%)\\s*)|^(\\$)|^(\\s*;)|^(::)|^(\\s*:\\s*)|^(@)|^(#)|^(\")|^(`)|^(\\|)|^(\\.)|^(\\s*,\\s*)|^(\\s*&\\s*)|^(\\s*\\?\\s*)|^((if|elseif|else if|while)(?![^\s]))|^(foreach(?![^\s]))|^(for(?![^\s]))|^([0-9]*[a-zA-Z_]\\w*)|^(\\d+)|^(\\s+)|^(.)/";
+        $yy_global_pattern = "/^('[^'\\\\]*(?:\\\\.[^'\\\\]*)*')|^(".$this->ldel."\\s{1,}\/)|^(".$this->ldel."\\s*(if|elseif|else if|while)(?![^\s]))|^(".$this->ldel."\\s*for(?![^\s]))|^(".$this->ldel."\\s*foreach(?![^\s]))|^(".$this->ldel."\\s{1,})|^(\\s{1,}".$this->rdel.")|^(".$this->ldel."\/)|^(".$this->ldel.")|^(".$this->rdel.")|^(\\s+is\\s+in\\s+)|^(\\s+(AS|as)\\s+)|^(\\s+(to)\\s+)|^(\\s+(step)\\s+)|^(\\s+instanceof\\s+)|^(\\s*===\\s*)|^(\\s*!==\\s*)|^(\\s*==\\s*|\\s+(EQ|eq)\\s+)|^(\\s*!=\\s*|\\s*<>\\s*|\\s+(NE|NEQ|ne|neq)\\s+)|^(\\s*>=\\s*|\\s+(GE|GTE|ge|gte)\\s+)|^(\\s*<=\\s*|\\s+(LE|LTE|le|lte)\\s+)|^(\\s*>\\s*|\\s+(GT|gt)\\s+)|^(\\s*<\\s*|\\s+(LT|lt)\\s+)|^(\\s+(MOD|mod)\\s+)|^(!\\s*|(NOT|not)\\s+)|^(\\s*&&\\s*|\\s*(AND|and)\\s+)|^(\\s*\\|\\|\\s*|\\s*(OR|or)\\s+)|^(\\s*(XOR|xor)\\s+)|^(\\s+is\\s+odd\\s+by\\s+)|^(\\s+is\\s+not\\s+odd\\s+by\\s+)|^(\\s+is\\s+odd)|^(\\s+is\\s+not\\s+odd)|^(\\s+is\\s+even\\s+by\\s+)|^(\\s+is\\s+not\\s+even\\s+by\\s+)|^(\\s+is\\s+even)|^(\\s+is\\s+not\\s+even)|^(\\s+is\\s+div\\s+by\\s+)|^(\\s+is\\s+not\\s+div\\s+by\\s+)|^(\\((int(eger)?|bool(ean)?|float|double|real|string|binary|array|object)\\))|^(\\(\\s*)|^(\\s*\\))|^(\\[\\s*)|^(\\s*\\])|^(\\s*->\\s*)|^(\\s*=>\\s*)|^(\\s*=\\s*)|^((\\+\\+|--)\\s*)|^(\\s*(\\+|-)\\s*)|^(\\s*(\\*|\/|%)\\s*)|^(\\$)|^(\\s*;)|^(::)|^(\\s*:\\s*)|^(@)|^(#)|^(\")|^(`)|^(\\|)|^(\\.)|^(\\s*,\\s*)|^(\\s*&\\s*)|^(\\s*\\?\\s*)|^(0[xX][0-9a-fA-F]+)|^([0-9]*[a-zA-Z_]\\w*)|^(\\d+)|^(\\s+)|^(.)/";
 
         do {
             if (preg_match($yy_global_pattern, substr($this->data, $this->counter), $yymatches)) {
@@ -442,6 +480,39 @@ class Smarty_Internal_Templatelexer
     function yy_r2_3($yy_subpatterns)
     {
 
+  if ($this->smarty->auto_literal && trim(substr($this->value,$this->ldel_length,1)) == '') {
+     $this->token = Smarty_Internal_Templateparser::TP_OTHER;
+  } else {
+     $this->token = Smarty_Internal_Templateparser::TP_LDELIF;
+     $this->yypushstate(self::SMARTY);
+     $this->taglineno = $this->line;
+  }
+    }
+    function yy_r2_5($yy_subpatterns)
+    {
+
+  if ($this->smarty->auto_literal && trim(substr($this->value,$this->ldel_length,1)) == '') {
+     $this->token = Smarty_Internal_Templateparser::TP_OTHER;
+  } else {
+     $this->token = Smarty_Internal_Templateparser::TP_LDELFOR;
+     $this->yypushstate(self::SMARTY);
+     $this->taglineno = $this->line;
+  }
+    }
+    function yy_r2_6($yy_subpatterns)
+    {
+
+  if ($this->smarty->auto_literal && trim(substr($this->value,$this->ldel_length,1)) == '') {
+     $this->token = Smarty_Internal_Templateparser::TP_OTHER;
+  } else {
+     $this->token = Smarty_Internal_Templateparser::TP_LDELFOREACH;
+     $this->yypushstate(self::SMARTY);
+     $this->taglineno = $this->line;
+  }
+    }
+    function yy_r2_7($yy_subpatterns)
+    {
+
   if ($this->smarty->auto_literal) {
      $this->token = Smarty_Internal_Templateparser::TP_OTHER;
   } else {
@@ -450,7 +521,7 @@ class Smarty_Internal_Templatelexer
      $this->taglineno = $this->line;
   }
     }
-    function yy_r2_4($yy_subpatterns)
+    function yy_r2_8($yy_subpatterns)
     {
 
   if ($this->smarty->auto_literal) {
@@ -460,319 +531,309 @@ class Smarty_Internal_Templatelexer
      $this->yypopstate();
   }
     }
-    function yy_r2_5($yy_subpatterns)
+    function yy_r2_9($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_LDELSLASH;
      $this->yypushstate(self::SMARTY);
      $this->taglineno = $this->line;
     }
-    function yy_r2_6($yy_subpatterns)
+    function yy_r2_10($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_LDEL;
      $this->yypushstate(self::SMARTY);
      $this->taglineno = $this->line;
     }
-    function yy_r2_7($yy_subpatterns)
+    function yy_r2_11($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_RDEL;
      $this->yypopstate();
     }
-    function yy_r2_8($yy_subpatterns)
+    function yy_r2_12($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_ISIN;
     }
-    function yy_r2_9($yy_subpatterns)
+    function yy_r2_13($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_AS;
     }
-    function yy_r2_11($yy_subpatterns)
+    function yy_r2_15($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_TO;
     }
-    function yy_r2_13($yy_subpatterns)
+    function yy_r2_17($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_STEP;
     }
-    function yy_r2_15($yy_subpatterns)
+    function yy_r2_19($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_INSTANCEOF;
     }
-    function yy_r2_16($yy_subpatterns)
+    function yy_r2_20($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_IDENTITY;
     }
-    function yy_r2_17($yy_subpatterns)
+    function yy_r2_21($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_NONEIDENTITY;
     }
-    function yy_r2_18($yy_subpatterns)
+    function yy_r2_22($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_EQUALS;
     }
-    function yy_r2_20($yy_subpatterns)
+    function yy_r2_24($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_NOTEQUALS;
     }
-    function yy_r2_22($yy_subpatterns)
+    function yy_r2_26($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_GREATEREQUAL;
     }
-    function yy_r2_24($yy_subpatterns)
+    function yy_r2_28($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_LESSEQUAL;
     }
-    function yy_r2_26($yy_subpatterns)
+    function yy_r2_30($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_GREATERTHAN;
     }
-    function yy_r2_28($yy_subpatterns)
+    function yy_r2_32($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_LESSTHAN;
     }
-    function yy_r2_30($yy_subpatterns)
+    function yy_r2_34($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_MOD;
     }
-    function yy_r2_32($yy_subpatterns)
+    function yy_r2_36($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_NOT;
     }
-    function yy_r2_34($yy_subpatterns)
+    function yy_r2_38($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_LAND;
     }
-    function yy_r2_36($yy_subpatterns)
+    function yy_r2_40($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_LOR;
     }
-    function yy_r2_38($yy_subpatterns)
+    function yy_r2_42($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_LXOR;
     }
-    function yy_r2_40($yy_subpatterns)
+    function yy_r2_44($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_ISODDBY;
     }
-    function yy_r2_41($yy_subpatterns)
+    function yy_r2_45($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_ISNOTODDBY;
     }
-    function yy_r2_42($yy_subpatterns)
+    function yy_r2_46($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_ISODD;
     }
-    function yy_r2_43($yy_subpatterns)
+    function yy_r2_47($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_ISNOTODD;
     }
-    function yy_r2_44($yy_subpatterns)
+    function yy_r2_48($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_ISEVENBY;
     }
-    function yy_r2_45($yy_subpatterns)
+    function yy_r2_49($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_ISNOTEVENBY;
     }
-    function yy_r2_46($yy_subpatterns)
+    function yy_r2_50($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_ISEVEN;
     }
-    function yy_r2_47($yy_subpatterns)
+    function yy_r2_51($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_ISNOTEVEN;
     }
-    function yy_r2_48($yy_subpatterns)
+    function yy_r2_52($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_ISDIVBY;
     }
-    function yy_r2_49($yy_subpatterns)
+    function yy_r2_53($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_ISNOTDIVBY;
     }
-    function yy_r2_50($yy_subpatterns)
+    function yy_r2_54($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_TYPECAST;
     }
-    function yy_r2_54($yy_subpatterns)
+    function yy_r2_58($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_OPENP;
     }
-    function yy_r2_55($yy_subpatterns)
+    function yy_r2_59($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_CLOSEP;
     }
-    function yy_r2_56($yy_subpatterns)
+    function yy_r2_60($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_OPENB;
     }
-    function yy_r2_57($yy_subpatterns)
+    function yy_r2_61($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_CLOSEB;
     }
-    function yy_r2_58($yy_subpatterns)
+    function yy_r2_62($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_PTR; 
     }
-    function yy_r2_59($yy_subpatterns)
+    function yy_r2_63($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_APTR;
     }
-    function yy_r2_60($yy_subpatterns)
+    function yy_r2_64($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_EQUAL;
     }
-    function yy_r2_61($yy_subpatterns)
+    function yy_r2_65($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_INCDEC;
     }
-    function yy_r2_63($yy_subpatterns)
+    function yy_r2_67($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_UNIMATH;
     }
-    function yy_r2_65($yy_subpatterns)
+    function yy_r2_69($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_MATH;
     }
-    function yy_r2_67($yy_subpatterns)
+    function yy_r2_71($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_DOLLAR;
     }
-    function yy_r2_68($yy_subpatterns)
+    function yy_r2_72($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_SEMICOLON;
     }
-    function yy_r2_69($yy_subpatterns)
+    function yy_r2_73($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_DOUBLECOLON;
     }
-    function yy_r2_70($yy_subpatterns)
+    function yy_r2_74($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_COLON;
     }
-    function yy_r2_71($yy_subpatterns)
+    function yy_r2_75($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_AT;
     }
-    function yy_r2_72($yy_subpatterns)
+    function yy_r2_76($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_HATCH;
     }
-    function yy_r2_73($yy_subpatterns)
+    function yy_r2_77($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_QUOTE;
   $this->yypushstate(self::DOUBLEQUOTEDSTRING);
     }
-    function yy_r2_74($yy_subpatterns)
+    function yy_r2_78($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_BACKTICK;
   $this->yypopstate();
     }
-    function yy_r2_75($yy_subpatterns)
+    function yy_r2_79($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_VERT;
     }
-    function yy_r2_76($yy_subpatterns)
+    function yy_r2_80($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_DOT;
     }
-    function yy_r2_77($yy_subpatterns)
+    function yy_r2_81($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_COMMA;
     }
-    function yy_r2_78($yy_subpatterns)
+    function yy_r2_82($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_ANDSYM;
     }
-    function yy_r2_79($yy_subpatterns)
+    function yy_r2_83($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_QMARK;
     }
-    function yy_r2_80($yy_subpatterns)
-    {
-
-  $this->token = Smarty_Internal_Templateparser::TP_IF;
-    }
-    function yy_r2_82($yy_subpatterns)
-    {
-
-  $this->token = Smarty_Internal_Templateparser::TP_FOREACH;
-    }
-    function yy_r2_83($yy_subpatterns)
+    function yy_r2_84($yy_subpatterns)
     {
 
-  $this->token = Smarty_Internal_Templateparser::TP_FOR;
+  $this->token = Smarty_Internal_Templateparser::TP_HEX;
     }
-    function yy_r2_84($yy_subpatterns)
+    function yy_r2_85($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_ID;
     }
-    function yy_r2_85($yy_subpatterns)
+    function yy_r2_86($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_INTEGER;
     }
-    function yy_r2_86($yy_subpatterns)
+    function yy_r2_87($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_SPACE;
     }
-    function yy_r2_87($yy_subpatterns)
+    function yy_r2_88($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_OTHER;
@@ -787,13 +848,14 @@ class Smarty_Internal_Templatelexer
               2 => 0,
               3 => 0,
               4 => 0,
-              5 => 2,
-              8 => 0,
+              5 => 0,
+              6 => 2,
+              9 => 0,
             );
         if ($this->counter >= strlen($this->data)) {
             return false; // end of input
         }
-        $yy_global_pattern = "/^(".$this->ldel."literal".$this->rdel.")|^(".$this->ldel."\/literal".$this->rdel.")|^(<\\?(?:php\\w+|=|[a-zA-Z]+)?)|^(\\?>)|^(([\S\s]*?)(?=(".$this->ldel."\/?literal".$this->rdel."|<\\?)))|^([\S\s]+)/";
+        $yy_global_pattern = "/^(".$this->ldel."literal".$this->rdel.")|^(".$this->ldel."\/literal".$this->rdel.")|^([\t ]*[\r\n]+[\t ]*)|^(<\\?(?:php\\w+|=|[a-zA-Z]+)?)|^(\\?>)|^(([\S\s]*?)(?=([\t ]*[\r\n]+[\t ]*|".$this->ldel."\/?literal".$this->rdel."|<\\?)))|^([\S\s]+)/";
 
         do {
             if (preg_match($yy_global_pattern, substr($this->data, $this->counter), $yymatches)) {
@@ -858,6 +920,11 @@ class Smarty_Internal_Templatelexer
     function yy_r3_3($yy_subpatterns)
     {
 
+  $this->token = Smarty_Internal_Templateparser::TP_LITERAL;
+    }
+    function yy_r3_4($yy_subpatterns)
+    {
+
   if (in_array($this->value, Array('token = Smarty_Internal_Templateparser::TP_PHPSTARTTAG;
    } else {
@@ -865,17 +932,17 @@ class Smarty_Internal_Templatelexer
     $this->value = substr($this->value, 0, 2);
    }
     }
-    function yy_r3_4($yy_subpatterns)
+    function yy_r3_5($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_LITERAL;
     }
-    function yy_r3_5($yy_subpatterns)
+    function yy_r3_6($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_LITERAL;
     }
-    function yy_r3_8($yy_subpatterns)
+    function yy_r3_9($yy_subpatterns)
     {
 
   $this->compiler->trigger_template_error ("missing or misspelled literal closing tag");
@@ -886,20 +953,23 @@ class Smarty_Internal_Templatelexer
     {
         $tokenMap = array (
               1 => 0,
-              2 => 0,
-              3 => 0,
+              2 => 1,
               4 => 0,
               5 => 0,
               6 => 0,
               7 => 0,
               8 => 0,
-              9 => 3,
-              13 => 0,
+              9 => 0,
+              10 => 0,
+              11 => 0,
+              12 => 0,
+              13 => 3,
+              17 => 0,
             );
         if ($this->counter >= strlen($this->data)) {
             return false; // end of input
         }
-        $yy_global_pattern = "/^(".$this->ldel."\\s{1,}\/)|^(".$this->ldel."\\s{1,})|^(".$this->ldel."\/)|^(".$this->ldel.")|^(\")|^(`\\$)|^(\\$[0-9]*[a-zA-Z_]\\w*)|^(\\$)|^(([^\"\\\\]*?)((?:\\\\.[^\"\\\\]*?)*?)(?=(".$this->ldel."|\\$|`\\$|\")))|^([\S\s]+)/";
+        $yy_global_pattern = "/^(".$this->ldel."\\s{1,}\/)|^(".$this->ldel."\\s*(if|elseif|else if|while)(?![^\s]))|^(".$this->ldel."\\s*for(?![^\s]))|^(".$this->ldel."\\s*foreach(?![^\s]))|^(".$this->ldel."\\s{1,})|^(".$this->ldel."\/)|^(".$this->ldel.")|^(\")|^(`\\$)|^(\\$[0-9]*[a-zA-Z_]\\w*)|^(\\$)|^(([^\"\\\\]*?)((?:\\\\.[^\"\\\\]*?)*?)(?=(".$this->ldel."|\\$|`\\$|\")))|^([\S\s]+)/";
 
         do {
             if (preg_match($yy_global_pattern, substr($this->data, $this->counter), $yymatches)) {
@@ -963,6 +1033,39 @@ class Smarty_Internal_Templatelexer
     function yy_r4_2($yy_subpatterns)
     {
 
+  if ($this->smarty->auto_literal && trim(substr($this->value,$this->ldel_length,1)) == '') {
+     $this->token = Smarty_Internal_Templateparser::TP_OTHER;
+  } else {
+     $this->token = Smarty_Internal_Templateparser::TP_LDELIF;
+     $this->yypushstate(self::SMARTY);
+     $this->taglineno = $this->line;
+  }
+    }
+    function yy_r4_4($yy_subpatterns)
+    {
+
+  if ($this->smarty->auto_literal && trim(substr($this->value,$this->ldel_length,1)) == '') {
+     $this->token = Smarty_Internal_Templateparser::TP_OTHER;
+  } else {
+     $this->token = Smarty_Internal_Templateparser::TP_LDELFOR;
+     $this->yypushstate(self::SMARTY);
+     $this->taglineno = $this->line;
+  }
+    }
+    function yy_r4_5($yy_subpatterns)
+    {
+
+  if ($this->smarty->auto_literal && trim(substr($this->value,$this->ldel_length,1)) == '') {
+     $this->token = Smarty_Internal_Templateparser::TP_OTHER;
+  } else {
+     $this->token = Smarty_Internal_Templateparser::TP_LDELFOREACH;
+     $this->yypushstate(self::SMARTY);
+     $this->taglineno = $this->line;
+  }
+    }
+    function yy_r4_6($yy_subpatterns)
+    {
+
   if ($this->smarty->auto_literal) {
      $this->token = Smarty_Internal_Templateparser::TP_OTHER;
   } else {
@@ -971,27 +1074,27 @@ class Smarty_Internal_Templatelexer
      $this->taglineno = $this->line;
   }
     }
-    function yy_r4_3($yy_subpatterns)
+    function yy_r4_7($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_LDELSLASH;
      $this->yypushstate(self::SMARTY);
      $this->taglineno = $this->line;
     }
-    function yy_r4_4($yy_subpatterns)
+    function yy_r4_8($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_LDEL;
      $this->yypushstate(self::SMARTY);
      $this->taglineno = $this->line;
     }
-    function yy_r4_5($yy_subpatterns)
+    function yy_r4_9($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_QUOTE;
   $this->yypopstate();
     }
-    function yy_r4_6($yy_subpatterns)
+    function yy_r4_10($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_BACKTICK;
@@ -999,22 +1102,22 @@ class Smarty_Internal_Templatelexer
   $this->yypushstate(self::SMARTY);
   $this->taglineno = $this->line;
     }
-    function yy_r4_7($yy_subpatterns)
+    function yy_r4_11($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_DOLLARID;
     }
-    function yy_r4_8($yy_subpatterns)
+    function yy_r4_12($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_OTHER;
     }
-    function yy_r4_9($yy_subpatterns)
+    function yy_r4_13($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_OTHER;
     }
-    function yy_r4_13($yy_subpatterns)
+    function yy_r4_17($yy_subpatterns)
     {
 
   $this->token = Smarty_Internal_Templateparser::TP_OTHER;
diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_templateparser.php b/gosa-core/include/smarty/sysplugins/smarty_internal_templateparser.php
index f42ffc330..befb100d1 100644
--- a/gosa-core/include/smarty/sysplugins/smarty_internal_templateparser.php
+++ b/gosa-core/include/smarty/sysplugins/smarty_internal_templateparser.php
@@ -150,15 +150,15 @@ class Smarty_Internal_Templateparser#line 79 "smarty_internal_templateparser.php
     const TP_DOLLAR                         = 14;
     const TP_ID                             = 15;
     const TP_EQUAL                          = 16;
-    const TP_FOREACH                        = 17;
-    const TP_PTR                            = 18;
-    const TP_IF                             = 19;
-    const TP_SPACE                          = 20;
-    const TP_FOR                            = 21;
-    const TP_SEMICOLON                      = 22;
-    const TP_INCDEC                         = 23;
-    const TP_TO                             = 24;
-    const TP_STEP                           = 25;
+    const TP_PTR                            = 17;
+    const TP_LDELIF                         = 18;
+    const TP_SPACE                          = 19;
+    const TP_LDELFOR                        = 20;
+    const TP_SEMICOLON                      = 21;
+    const TP_INCDEC                         = 22;
+    const TP_TO                             = 23;
+    const TP_STEP                           = 24;
+    const TP_LDELFOREACH                    = 25;
     const TP_AS                             = 26;
     const TP_APTR                           = 27;
     const TP_LDELSLASH                      = 28;
@@ -184,673 +184,720 @@ class Smarty_Internal_Templateparser#line 79 "smarty_internal_templateparser.php
     const TP_QMARK                          = 48;
     const TP_NOT                            = 49;
     const TP_TYPECAST                       = 50;
-    const TP_DOT                            = 51;
-    const TP_SINGLEQUOTESTRING              = 52;
-    const TP_DOUBLECOLON                    = 53;
-    const TP_AT                             = 54;
-    const TP_HATCH                          = 55;
-    const TP_OPENB                          = 56;
-    const TP_CLOSEB                         = 57;
-    const TP_EQUALS                         = 58;
-    const TP_NOTEQUALS                      = 59;
-    const TP_GREATERTHAN                    = 60;
-    const TP_LESSTHAN                       = 61;
-    const TP_GREATEREQUAL                   = 62;
-    const TP_LESSEQUAL                      = 63;
-    const TP_IDENTITY                       = 64;
-    const TP_NONEIDENTITY                   = 65;
-    const TP_MOD                            = 66;
-    const TP_LAND                           = 67;
-    const TP_LOR                            = 68;
-    const TP_LXOR                           = 69;
-    const TP_QUOTE                          = 70;
-    const TP_BACKTICK                       = 71;
-    const TP_DOLLARID                       = 72;
-    const YY_NO_ACTION = 548;
-    const YY_ACCEPT_ACTION = 547;
-    const YY_ERROR_ACTION = 546;
+    const TP_HEX                            = 51;
+    const TP_DOT                            = 52;
+    const TP_SINGLEQUOTESTRING              = 53;
+    const TP_DOUBLECOLON                    = 54;
+    const TP_AT                             = 55;
+    const TP_HATCH                          = 56;
+    const TP_OPENB                          = 57;
+    const TP_CLOSEB                         = 58;
+    const TP_EQUALS                         = 59;
+    const TP_NOTEQUALS                      = 60;
+    const TP_GREATERTHAN                    = 61;
+    const TP_LESSTHAN                       = 62;
+    const TP_GREATEREQUAL                   = 63;
+    const TP_LESSEQUAL                      = 64;
+    const TP_IDENTITY                       = 65;
+    const TP_NONEIDENTITY                   = 66;
+    const TP_MOD                            = 67;
+    const TP_LAND                           = 68;
+    const TP_LOR                            = 69;
+    const TP_LXOR                           = 70;
+    const TP_QUOTE                          = 71;
+    const TP_BACKTICK                       = 72;
+    const TP_DOLLARID                       = 73;
+    const YY_NO_ACTION = 546;
+    const YY_ACCEPT_ACTION = 545;
+    const YY_ERROR_ACTION = 544;
 
-    const YY_SZ_ACTTAB = 1810;
+    const YY_SZ_ACTTAB = 2037;
 static public $yy_action = array(
- /*     0 */   183,  280,    7,   38,  325,  217,  275,  199,   53,  119,
- /*    10 */   104,  266,  317,  156,  323,  308,  305,  309,  335,  184,
- /*    20 */   153,  298,  307,  283,  281,  193,  278,   32,  104,  319,
- /*    30 */    47,   46,   45,   39,   16,   23,  341,  337,   21,   18,
- /*    40 */   338,  339,   19,   20,  278,   43,  296,  293,  292,  288,
- /*    50 */   289,  290,  153,  157,  323,    3,   24,  348,  355,  356,
- /*    60 */   357,  358,  354,  353,  349,  350,  351,  352,  336,  183,
- /*    70 */   280,  125,  183,  117,  100,   12,   99,   51,  121,  102,
- /*    80 */   148,  322,  112,   26,  331,  168,    4,  335,  184,  191,
- /*    90 */   333,  184,  283,  281,  286,  278,  459,  184,  316,   47,
- /*   100 */    46,   45,   39,   16,   23,  341,  337,   21,   18,  338,
- /*   110 */   339,   19,   20,  294,  295,  297,   12,   12,  547,   84,
- /*   120 */   226,  295,  297,  112,  112,   36,  348,  355,  356,  357,
- /*   130 */   358,  354,  353,  349,  350,  351,  352,  336,  183,  137,
- /*   140 */    87,  280,  261,  240,  254,  182,  253,  199,   49,  118,
- /*   150 */   104,   38,  123,  286,  275,   29,  172,  184,  335,   10,
- /*   160 */   421,   13,   14,  283,  281,  277,  278,  421,   47,   46,
- /*   170 */    45,   39,   16,   23,  341,  337,   21,   18,  338,  339,
- /*   180 */    19,   20,  183,  318,   28,  280,  113,  133,  152,  282,
- /*   190 */   184,  199,   43,  202,  104,  348,  355,  356,  357,  358,
- /*   200 */   354,  353,  349,  350,  351,  352,  336,  283,  281,  306,
- /*   210 */   278,  299,   47,   46,   45,   39,   16,   23,  341,  337,
- /*   220 */    21,   18,  338,  339,   19,   20,   38,   89,   38,  275,
- /*   230 */    29,  275,  271,  238,  122,  113,  195,    2,  244,  348,
- /*   240 */   355,  356,  357,  358,  354,  353,  349,  350,  351,  352,
- /*   250 */   336,  183,  280,  125,  183,  187,  174,   12,  199,   83,
- /*   260 */   229,  104,  200,  163,  112,  419,  302,  274,  245,  335,
- /*   270 */   202,  215,  419,  184,  283,  281,   89,  278,  204,  207,
- /*   280 */   234,   47,   46,   45,   39,   16,   23,  341,  337,   21,
- /*   290 */    18,  338,  339,   19,   20,  236,   17,  232,   12,  313,
- /*   300 */     8,   38,   54,   54,  275,  112,  184,  340,  348,  355,
- /*   310 */   356,  357,  358,  354,  353,  349,  350,  351,  352,  336,
- /*   320 */   183,  280,   35,  165,  418,  100,  104,  101,   52,  121,
- /*   330 */   102,  184,   38,  326,  271,  275,  172,  196,  335,  184,
- /*   340 */    10,   13,  278,  283,  281,  359,  278,  218,  228,  183,
- /*   350 */    47,   46,   45,   39,   16,   23,  341,  337,   21,   18,
- /*   360 */   338,  339,   19,   20,  183,  344,   38,  280,  184,  211,
- /*   370 */   265,  273,  184,  199,   26,  271,  104,  348,  355,  356,
- /*   380 */   357,  358,  354,  353,  349,  350,  351,  352,  336,  283,
- /*   390 */   281,  147,  278,  274,   47,   46,   45,   39,   16,   23,
- /*   400 */   341,  337,   21,   18,  338,  339,   19,   20,  183,  208,
- /*   410 */   230,   38,   38,  327,  275,  275,   33,   40,  107,  225,
- /*   420 */   166,  348,  355,  356,  357,  358,  354,  353,  349,  350,
- /*   430 */   351,  352,  336,  224,  267,  184,  158,  323,   47,   46,
- /*   440 */    45,   39,   16,   23,  341,  337,   21,   18,  338,  339,
- /*   450 */    19,   20,  183,  210,   38,  280,  332,  185,   92,  284,
- /*   460 */   155,  199,  233,  184,  104,  348,  355,  356,  357,  358,
- /*   470 */   354,  353,  349,  350,  351,  352,  336,  283,  281,  145,
- /*   480 */   278,  201,   47,   46,   45,   39,   16,   23,  341,  337,
- /*   490 */    21,   18,  338,  339,   19,   20,  183,  324,   95,  239,
- /*   500 */   161,  323,  189,  178,  184,   43,  347,  150,  247,  348,
- /*   510 */   355,  356,  357,  358,  354,  353,  349,  350,  351,  352,
- /*   520 */   336,  286,  235,  115,  208,  268,   47,   46,   45,   39,
- /*   530 */    16,   23,  341,  337,   21,   18,  338,  339,   19,   20,
- /*   540 */   183,  312,  160,  280,  345,  203,  231,  272,  184,  199,
- /*   550 */   154,  184,  104,  348,  355,  356,  357,  358,  354,  353,
- /*   560 */   349,  350,  351,  352,  336,  283,  281,  279,  278,  188,
- /*   570 */    47,   46,   45,   39,   16,   23,  341,  337,   21,   18,
- /*   580 */   338,  339,   19,   20,  183,   37,  214,  280,  315,   93,
- /*   590 */   114,  241,  108,  199,  194,  184,  104,  348,  355,  356,
- /*   600 */   357,  358,  354,  353,  349,  350,  351,  352,  336,  283,
- /*   610 */   281,   90,  278,  255,   47,   46,   45,   39,   16,   23,
- /*   620 */   341,  337,   21,   18,  338,  339,   19,   20,  183,  300,
- /*   630 */    12,  256,  310,  271,  198,  258,  184,  112,  184,  221,
- /*   640 */   328,  348,  355,  356,  357,  358,  354,  353,  349,  350,
- /*   650 */   351,  352,  336,  213,  109,  252,  216,   11,   47,   46,
- /*   660 */    45,   39,   16,   23,  341,  337,   21,   18,  338,  339,
- /*   670 */    19,   20,  183,  303,  243,  280,  334,    4,  184,  311,
- /*   680 */   184,  199,   54,  184,  104,  348,  355,  356,  357,  358,
- /*   690 */   354,  353,  349,  350,  351,  352,  336,  283,  281,   34,
- /*   700 */   278,    9,   47,   46,   45,   39,   16,   23,  341,  337,
- /*   710 */    21,   18,  338,  339,   19,   20,   38,  196,  304,  275,
- /*   720 */    27,  262,  263,  233,  238,  184,  106,  250,    2,  348,
- /*   730 */   355,  356,  357,  358,  354,  353,  349,  350,  351,  352,
- /*   740 */   336,  183,  280,  301,  125,  291,  217,  201,  199,   64,
- /*   750 */    43,  104,  134,   43,  212,   38,  329,  162,  275,  335,
- /*   760 */   237,    6,  159,  266,  283,  281,  286,  278,   94,  135,
- /*   770 */   220,   47,   46,   45,   39,   16,   23,  341,  337,   21,
- /*   780 */    18,  338,  339,   19,   20,  183,  246,   17,  232,  330,
- /*   790 */    88,  219,    5,  274,   41,   54,  184,  257,  348,  355,
- /*   800 */   356,  357,  358,  354,  353,  349,  350,  351,  352,  336,
- /*   810 */   111,  197,  139,  276,  248,   47,   46,   45,   39,   16,
- /*   820 */    23,  341,  337,   21,   18,  338,  339,   19,   20,  183,
- /*   830 */   287,  343,  314,   22,  144,   91,  270,  184,  184,  184,
- /*   840 */   142,  227,  348,  355,  356,  357,  358,  354,  353,  349,
- /*   850 */   350,  351,  352,  336,  286,   40,  249,  303,  303,   47,
- /*   860 */    46,   45,   39,   16,   23,  341,  337,   21,   18,  338,
- /*   870 */   339,   19,   20,  183,  264,  303,  280,  303,  303,  303,
- /*   880 */   269,  116,  199,  303,  303,  104,  348,  355,  356,  357,
- /*   890 */   358,  354,  353,  349,  350,  351,  352,  336,  283,  281,
- /*   900 */   303,  278,  303,   47,   46,   45,   39,   16,   23,  341,
- /*   910 */   337,   21,   18,  338,  339,   19,   20,  167,  303,  303,
- /*   920 */   303,  303,  303,  303,  303,  303,  303,   31,   15,  303,
- /*   930 */   348,  355,  356,  357,  358,  354,  353,  349,  350,  351,
- /*   940 */   352,  336,  132,    3,  303,  105,   86,  167,  120,  303,
- /*   950 */   222,    3,  205,  110,  169,  303,  286,   31,   15,  125,
- /*   960 */   209,   98,  126,   48,  303,  131,  303,  125,  209,  129,
- /*   970 */   164,   48,  303,  303,  277,  277,  303,   25,  303,  286,
- /*   980 */    44,   42,  277,  285,  303,   30,   89,    1,   44,   42,
- /*   990 */     3,  285,  110,  175,   89,    1,  242,  151,  143,  303,
- /*  1000 */   303,   85,    3,  167,  110,  175,  125,  209,  303,   85,
- /*  1010 */    48,  286,  286,   31,   15,  136,  303,  146,  125,  209,
- /*  1020 */   303,  303,   48,  303,   30,  270,  303,   44,   42,  286,
- /*  1030 */   285,  286,  303,   89,    1,    3,   25,  113,  175,   44,
- /*  1040 */    42,  124,  285,  270,  128,   89,    1,    3,   85,  113,
- /*  1050 */   170,  125,  209,   97,  277,   48,  303,  277,   96,  303,
- /*  1060 */    85,  303,  303,  125,  179,  303,  277,   48,  303,   30,
- /*  1070 */   303,  277,   44,   42,  149,  285,  127,  303,   89,    1,
- /*  1080 */     3,   30,  110,  173,   44,   42,  303,  285,  286,  277,
- /*  1090 */    89,    1,    3,   85,  103,  175,  125,  209,  303,  303,
- /*  1100 */    48,  130,  270,  303,  303,   85,  303,  141,  125,  209,
- /*  1110 */   303,  303,   48,  303,   30,  286,  303,   44,   42,  303,
- /*  1120 */   285,  286,  303,   89,    1,    3,   30,  110,  171,   44,
- /*  1130 */    42,  303,  285,  303,  303,   89,    1,    3,   85,  113,
- /*  1140 */   175,  125,  209,  303,  303,   48,  303,  303,  303,  303,
- /*  1150 */    85,  303,  303,  125,  209,  303,  303,   48,  303,   25,
- /*  1160 */   303,  303,   44,   42,  303,  285,  303,  303,   89,    1,
- /*  1170 */     3,   30,  113,  177,   44,   42,  303,  285,  303,  303,
- /*  1180 */    89,  303,  303,   85,  303,  303,  125,  209,  303,  303,
- /*  1190 */    48,  303,  280,  303,  303,   85,  176,  303,  199,   71,
- /*  1200 */   303,  104,  303,  303,   30,  303,  303,   44,   42,  335,
- /*  1210 */   285,  303,  303,   89,  283,  281,  280,  278,  303,  303,
- /*  1220 */   217,  303,  199,   62,  303,  104,  180,  321,   85,  303,
- /*  1230 */   303,  303,  303,  335,  303,  303,  303,  303,  283,  281,
- /*  1240 */   280,  278,  303,  303,  217,  303,  199,   62,  206,  104,
- /*  1250 */   303,  303,  280,  303,  303,  303,  217,  335,  199,   62,
- /*  1260 */   303,  104,  283,  281,  280,  278,  303,  303,  176,  335,
- /*  1270 */   199,   71,  223,  104,  283,  281,  303,  278,  303,  303,
- /*  1280 */   303,  335,  303,  303,  251,  303,  283,  281,  280,  278,
- /*  1290 */   303,  303,  217,  303,  199,   62,  303,  104,  303,  320,
- /*  1300 */   280,  303,  303,  303,  217,  335,  199,   65,  303,  104,
- /*  1310 */   283,  281,  303,  278,  303,  303,  303,  335,  303,  303,
- /*  1320 */   190,  303,  283,  281,  280,  278,  303,  303,  217,  303,
- /*  1330 */   199,   73,  303,  104,  303,  303,  280,  303,  303,  303,
- /*  1340 */   217,  335,  199,   72,  303,  104,  283,  281,  280,  278,
- /*  1350 */   303,  303,  217,  335,  199,   63,  303,  104,  283,  281,
- /*  1360 */   303,  278,  303,  303,  303,  335,  303,  303,  303,  303,
- /*  1370 */   283,  281,  280,  278,  303,  303,  217,  303,  199,   70,
- /*  1380 */   303,  104,  303,  303,  280,  303,  303,  303,  217,  335,
- /*  1390 */   199,   67,  303,  104,  283,  281,  303,  278,  303,  303,
- /*  1400 */   303,  335,  303,  303,  303,  303,  283,  281,  280,  278,
- /*  1410 */   303,  303,  217,  303,  199,   75,  303,  104,  303,  303,
- /*  1420 */   280,  303,  303,  303,  217,  335,  199,   74,  303,  104,
- /*  1430 */   283,  281,  280,  278,  303,  303,  217,  335,  199,   79,
- /*  1440 */   303,  104,  283,  281,  303,  278,  303,  303,  303,  335,
- /*  1450 */   303,  303,  303,  303,  283,  281,  280,  278,  303,  303,
- /*  1460 */   217,  303,  199,   66,  303,  104,  303,  303,  280,  303,
- /*  1470 */   303,  303,  217,  335,  199,   57,  303,  104,  283,  281,
- /*  1480 */   303,  278,  303,  303,  303,  335,  303,  303,  303,  303,
- /*  1490 */   283,  281,  280,  278,  303,  303,  217,  303,  199,   76,
- /*  1500 */   303,  104,  303,  303,  280,  303,  303,  303,  217,  335,
- /*  1510 */   199,   82,  303,  104,  283,  281,  280,  278,  303,  303,
- /*  1520 */   217,  335,  181,   59,  303,  104,  283,  281,  303,  278,
- /*  1530 */   303,  303,  303,  335,  303,  303,  303,  303,  283,  281,
- /*  1540 */   280,  278,  303,  303,  217,  303,  199,   81,  303,  104,
- /*  1550 */   303,  303,  280,  303,  303,  303,  217,  335,  199,   77,
- /*  1560 */   303,  104,  283,  281,  303,  278,  303,  303,  303,  335,
- /*  1570 */   303,  303,  303,  303,  283,  281,  280,  278,  303,  303,
- /*  1580 */   217,  303,  199,   50,  303,  104,  303,  303,  280,  303,
- /*  1590 */   303,  303,  217,  335,  199,   55,  303,  104,  283,  281,
- /*  1600 */   280,  278,  303,  303,  217,  335,  199,   69,  303,  104,
- /*  1610 */   283,  281,  303,  278,  303,  303,  303,  335,  303,  303,
- /*  1620 */   303,  303,  283,  281,  280,  278,  303,  303,  217,  303,
- /*  1630 */   199,   60,  303,  104,  303,  303,  280,  303,  303,  303,
- /*  1640 */   217,  335,  199,   61,  303,  104,  283,  281,  303,  278,
- /*  1650 */   303,  303,  303,  335,  303,  303,  303,  303,  283,  281,
- /*  1660 */   280,  278,  303,  303,  217,  303,  199,   56,  303,  104,
- /*  1670 */   303,  303,  280,  303,  303,  303,  217,  335,  199,   80,
- /*  1680 */   303,  104,  283,  281,  280,  278,  303,  303,  217,  335,
- /*  1690 */   199,   68,  303,  104,  283,  281,  303,  278,  303,  303,
- /*  1700 */   303,  335,  303,  303,  303,  303,  283,  281,  280,  278,
- /*  1710 */   303,  303,  217,  303,  199,   58,  303,  104,  303,  303,
- /*  1720 */   280,  303,  303,  303,  217,  335,  199,   78,  303,  104,
- /*  1730 */   283,  281,  303,  278,  303,  303,  303,  335,  303,  303,
- /*  1740 */   303,  138,  283,  281,  280,  278,  167,  303,  192,  303,
- /*  1750 */   199,  303,  303,  104,  280,  286,   31,   15,  342,  303,
- /*  1760 */   199,  186,  303,  104,  303,  303,  283,  281,  303,  278,
- /*  1770 */   303,  346,  303,  303,  303,  303,  283,  281,  303,  278,
- /*  1780 */   140,  303,  303,  303,  280,  167,  303,  303,  259,  303,
- /*  1790 */   199,  303,  303,  104,  286,   31,   15,  303,  303,  303,
- /*  1800 */   303,  260,  303,  303,  303,  303,  283,  281,  303,  278,
+ /*     0 */   175,  239,  238,  246,  248,  235,  234,  230,  266,  273,
+ /*    10 */   158,  223,  291,    7,   29,  170,   12,  290,  179,  205,
+ /*    20 */    13,  202,  200,  179,  114,    5,  124,  117,  233,  192,
+ /*    30 */    42,   43,   45,   40,   21,   22,  281,  299,   26,   27,
+ /*    40 */   278,  256,   31,   30,  263,  279,  251,   35,    8,  158,
+ /*    50 */   265,  271,  545,   83,  241,  238,  246,  136,  306,  307,
+ /*    60 */   308,  305,  304,  301,  302,  303,  309,  310,  316,  317,
+ /*    70 */   175,  315,  289,  175,  132,  268,  113,  219,  179,  166,
+ /*    80 */   105,  152,  296,  221,  175,  319,  168,  284,  179,  206,
+ /*    90 */   128,  179,  358,  351,  284,  314,  331,  216,  183,  110,
+ /*   100 */    42,   43,   45,   40,   21,   22,  281,  299,   26,   27,
+ /*   110 */   278,  256,   31,   30,   42,   43,   45,   40,   21,   22,
+ /*   120 */   281,  299,   26,   27,  278,  256,   31,   30,  306,  307,
+ /*   130 */   308,  305,  304,  301,  302,  303,  309,  310,  316,  317,
+ /*   140 */   175,    4,  306,  307,  308,  305,  304,  301,  302,  303,
+ /*   150 */   309,  310,  316,  317,  175,   33,   32,  311,  179,  346,
+ /*   160 */    17,   32,  348,   38,  346,  345,  253,  156,  343,  338,
+ /*   170 */    42,   43,   45,   40,   21,   22,  281,  299,   26,   27,
+ /*   180 */   278,  256,   31,   30,   42,   43,   45,   40,   21,   22,
+ /*   190 */   281,  299,   26,   27,  278,  256,   31,   30,  306,  307,
+ /*   200 */   308,  305,  304,  301,  302,  303,  309,  310,  316,  317,
+ /*   210 */   175,  212,  306,  307,  308,  305,  304,  301,  302,  303,
+ /*   220 */   309,  310,  316,  317,  175,  220,   32,  259,  179,  346,
+ /*   230 */    32,  157,  343,  346,   34,  146,  252,  347,  107,  203,
+ /*   240 */    42,   43,   45,   40,   21,   22,  281,  299,   26,   27,
+ /*   250 */   278,  256,   31,   30,   42,   43,   45,   40,   21,   22,
+ /*   260 */   281,  299,   26,   27,  278,  256,   31,   30,  306,  307,
+ /*   270 */   308,  305,  304,  301,  302,  303,  309,  310,  316,  317,
+ /*   280 */    87,  323,  306,  307,  308,  305,  304,  301,  302,  303,
+ /*   290 */   309,  310,  316,  317,  175,  315,  153,  201,  347,  222,
+ /*   300 */   122,  219,   53,  119,  105,  283,  164,   36,  175,  103,
+ /*   310 */   137,  179,  318,  165,  288,  314,  358,  351,  262,  314,
+ /*   320 */   258,  189,   24,   23,   42,   43,   45,   40,   21,   22,
+ /*   330 */   281,  299,   26,   27,  278,  256,   31,   30,   42,   43,
+ /*   340 */    45,   40,   21,   22,  281,  299,   26,   27,  278,  256,
+ /*   350 */    31,   30,  306,  307,  308,  305,  304,  301,  302,  303,
+ /*   360 */   309,  310,  316,  317,  175,  225,  306,  307,  308,  305,
+ /*   370 */   304,  301,  302,  303,  309,  310,  316,  317,  175,  414,
+ /*   380 */   320,  282,  199,  298,  162,  179,  179,  179,  288,  179,
+ /*   390 */   229,  161,  343,  347,   42,   43,   45,   40,   21,   22,
+ /*   400 */   281,  299,   26,   27,  278,  256,   31,   30,   42,   43,
+ /*   410 */    45,   40,   21,   22,  281,  299,   26,   27,  278,  256,
+ /*   420 */    31,   30,  306,  307,  308,  305,  304,  301,  302,  303,
+ /*   430 */   309,  310,  316,  317,    2,  128,  306,  307,  308,  305,
+ /*   440 */   304,  301,  302,  303,  309,  310,  316,  317,  175,  315,
+ /*   450 */   154,  175,   86,  100,  155,   98,   52,  121,   99,  159,
+ /*   460 */   167,   32,  260,  357,  346,  128,  318,  196,  288,  179,
+ /*   470 */   358,  351,  102,  314,   32,  240,  187,  346,   42,   43,
+ /*   480 */    45,   40,   21,   22,  281,  299,   26,   27,  278,  256,
+ /*   490 */    31,   30,  175,  194,   32,  116,   12,  346,   34,   32,
+ /*   500 */   170,   20,  346,  280,  114,   13,  306,  307,  308,  305,
+ /*   510 */   304,  301,  302,  303,  309,  310,  316,  317,  321,   46,
+ /*   520 */   191,  217,   42,   43,   45,   40,   21,   22,  281,  299,
+ /*   530 */    26,   27,  278,  256,   31,   30,  175,  224,  250,  328,
+ /*   540 */    32,   32,  224,  346,  214,   25,  175,  104,  243,  280,
+ /*   550 */   306,  307,  308,  305,  304,  301,  302,  303,  309,  310,
+ /*   560 */   316,  317,  261,   15,  179,  297,   42,   43,   45,   40,
+ /*   570 */    21,   22,  281,  299,   26,   27,  278,  256,   31,   30,
+ /*   580 */   175,  295,   12,  209,   93,  330,   32,  179,   32,  211,
+ /*   590 */   114,  182,  269,  134,  306,  307,  308,  305,  304,  301,
+ /*   600 */   302,  303,  309,  310,  316,  317,  284,  324,  347,  292,
+ /*   610 */    42,   43,   45,   40,   21,   22,  281,  299,   26,   27,
+ /*   620 */   278,  256,   31,   30,  175,  342,  293,   12,  339,  247,
+ /*   630 */   228,  179,  179,  179,  179,  114,  179,  149,  306,  307,
+ /*   640 */   308,  305,  304,  301,  302,  303,  309,  310,  316,  317,
+ /*   650 */   284,  109,   39,    3,   42,   43,   45,   40,   21,   22,
+ /*   660 */   281,  299,   26,   27,  278,  256,   31,   30,  175,  356,
+ /*   670 */   349,  355,  341,  352,  236,  179,  179,  179,  179,  179,
+ /*   680 */   179,  294,  306,  307,  308,  305,  304,  301,  302,  303,
+ /*   690 */   309,  310,  316,  317,   46,  336,  111,  267,   42,   43,
+ /*   700 */    45,   40,   21,   22,  281,  299,   26,   27,  278,  256,
+ /*   710 */    31,   30,  175,   46,  213,  354,  245,  350,  277,  128,
+ /*   720 */   288,   11,   41,    9,  120,  139,  306,  307,  308,  305,
+ /*   730 */   304,  301,  302,  303,  309,  310,  316,  317,  284,  179,
+ /*   740 */   221,  223,   42,   43,   45,   40,   21,   22,  281,  299,
+ /*   750 */    26,   27,  278,  256,   31,   30,  102,  415,    8,  255,
+ /*   760 */   207,  417,   14,  415,  198,   37,  353,  417,  333,  143,
+ /*   770 */   306,  307,  308,  305,  304,  301,  302,  303,  309,  310,
+ /*   780 */   316,  317,  284,    7,  232,  115,  169,  226,  315,  205,
+ /*   790 */    12,  202,  222,   46,  219,   59,  124,  105,  114,  192,
+ /*   800 */   215,   32,  344,   44,  346,  318,  130,  325,   35,  358,
+ /*   810 */   351,  270,  314,  147,  120,   10,  195,   16,  237,  208,
+ /*   820 */    48,   47,  313,  204,  340,   97,  284,   87,    1,  227,
+ /*   830 */     7,  249,  112,   85,  123,  150,  205,  237,  202,  141,
+ /*   840 */   285,  329,   84,  124,  126,    6,  192,  215,  284,  244,
+ /*   850 */    44,  205,  284,  202,   90,  179,  237,  188,  124,  142,
+ /*   860 */   148,  192,  285,   88,   28,  163,  285,   48,   47,  313,
+ /*   870 */   204,  340,  284,  284,   87,    1,   96,    7,  315,  115,
+ /*   880 */   178,   46,  186,  205,  219,  202,  131,  105,  237,   84,
+ /*   890 */   124,   95,  312,  192,  215,  190,  106,   44,  237,  358,
+ /*   900 */   351,  125,  314,  237,  327,   18,  322,  140,  237,   19,
+ /*   910 */   275,   16,  264,  237,   48,   47,  313,  204,  340,    9,
+ /*   920 */   284,   87,    1,   41,    7,  345,  115,  178,   94,  458,
+ /*   930 */   205,  127,  202,  254,  129,  329,   84,  124,  285,    6,
+ /*   940 */   192,  215,   89,  237,   44,  205,  237,  202,  138,   12,
+ /*   950 */    91,   92,  124,  144,  301,  192,  197,  114,   28,  160,
+ /*   960 */   301,   48,   47,  313,  204,  340,  301,  301,   87,    1,
+ /*   970 */   301,    7,  315,  115,  174,  301,  337,  205,  219,  202,
+ /*   980 */   301,  105,  301,   84,  124,  301,  301,  192,  215,  332,
+ /*   990 */   301,   44,  301,  358,  351,  301,  314,  301,  326,   18,
+ /*  1000 */   322,  301,  301,  301,  301,   16,  301,  301,   48,   47,
+ /*  1010 */   313,  204,  340,  301,  301,   87,    1,  301,    7,  315,
+ /*  1020 */   107,  172,  301,  276,  205,  219,  202,  301,  105,  301,
+ /*  1030 */    84,  124,  301,  301,  192,  180,  274,  301,   44,  301,
+ /*  1040 */   358,  351,  301,  314,  301,  301,  301,  301,  301,  301,
+ /*  1050 */   301,  301,   16,  301,  301,   48,   47,  313,  204,  340,
+ /*  1060 */   301,  301,   87,    1,  301,    7,  315,  107,  178,  301,
+ /*  1070 */   257,  205,  219,  202,  301,  105,  301,   84,  124,  301,
+ /*  1080 */   301,  192,  215,  301,  301,   44,  301,  358,  351,  301,
+ /*  1090 */   314,  301,  301,  301,  301,  301,  301,  301,  301,   16,
+ /*  1100 */   301,  301,   48,   47,  313,  204,  340,  301,  301,   87,
+ /*  1110 */     1,  301,    7,  315,  108,  178,  301,  231,  205,  219,
+ /*  1120 */   202,  301,  105,  301,   84,  124,  301,  301,  192,  215,
+ /*  1130 */   301,  301,   44,  301,  358,  351,  301,  314,  301,  301,
+ /*  1140 */   301,  301,  301,  301,  301,  301,   16,  301,  301,   48,
+ /*  1150 */    47,  313,  204,  340,  301,  301,   87,    1,  301,    7,
+ /*  1160 */   315,  115,  171,  301,  286,  205,  219,  202,  301,  105,
+ /*  1170 */   301,   84,  124,  301,  301,  192,  215,  301,  301,   44,
+ /*  1180 */   301,  358,  351,  301,  314,  301,  301,  301,  301,  301,
+ /*  1190 */   301,  301,  301,   28,  301,  301,   48,   47,  313,  204,
+ /*  1200 */   340,  301,  301,   87,    1,  301,    7,  315,  107,  178,
+ /*  1210 */   301,  300,  205,  219,  202,  301,  105,  301,   84,  124,
+ /*  1220 */   301,  301,  192,  215,  301,  301,   44,  301,  358,  351,
+ /*  1230 */   315,  314,  301,  301,  287,  301,  219,  301,  301,  105,
+ /*  1240 */    16,  301,  301,   48,   47,  313,  204,  340,  301,  301,
+ /*  1250 */    87,  358,  351,    7,  314,  107,  176,  301,  301,  205,
+ /*  1260 */   301,  202,  301,  133,  301,   84,  124,  301,  165,  192,
+ /*  1270 */   215,  301,  301,   44,  301,  301,  284,   24,   23,  315,
+ /*  1280 */   301,  301,  301,  177,  301,  219,   82,   16,  105,  301,
+ /*  1290 */    48,   47,  313,  204,  340,  301,  318,   87,  315,  301,
+ /*  1300 */   358,  351,  177,  314,  219,   82,  301,  105,  301,  301,
+ /*  1310 */   301,  301,   84,  335,  301,  318,  301,  301,  301,  358,
+ /*  1320 */   351,  301,  314,  301,  301,  301,  301,  301,  301,  315,
+ /*  1330 */   301,  184,  334,  100,  301,  101,   51,  121,   99,  301,
+ /*  1340 */   301,  301,  301,  301,  301,  301,  318,  301,  315,  301,
+ /*  1350 */   358,  351,  181,  314,  219,   49,  118,  105,  301,  301,
+ /*  1360 */   301,  301,  301,  301,  301,  318,  301,  315,  301,  358,
+ /*  1370 */   351,  173,  314,  219,   71,  242,  105,  301,  301,  301,
+ /*  1380 */   301,  301,  301,  301,  318,  301,  315,  301,  358,  351,
+ /*  1390 */   222,  314,  219,   59,  301,  105,  301,  301,  301,  301,
+ /*  1400 */   301,  301,  301,  318,  301,  301,  301,  358,  351,  301,
+ /*  1410 */   314,  301,  315,  301,  301,  301,  222,  193,  219,   56,
+ /*  1420 */   301,  105,  301,  301,  218,  301,  301,  301,  301,  318,
+ /*  1430 */   301,  315,  301,  358,  351,  222,  314,  219,   59,  301,
+ /*  1440 */   105,  301,  301,  301,  301,  301,  301,  301,  318,  301,
+ /*  1450 */   315,  301,  358,  351,  222,  314,  219,   59,  301,  105,
+ /*  1460 */   301,  301,  210,  301,  301,  301,  301,  318,  301,  315,
+ /*  1470 */   301,  358,  351,  222,  314,  219,   77,  301,  105,  301,
+ /*  1480 */   301,  359,  301,  301,  301,  301,  318,  301,  301,  301,
+ /*  1490 */   358,  351,  145,  314,  301,  315,  301,  165,  301,  222,
+ /*  1500 */   301,  219,   81,  301,  105,  284,   24,   23,  301,  301,
+ /*  1510 */   301,  301,  318,  301,  315,  301,  358,  351,  222,  314,
+ /*  1520 */   219,   62,  301,  105,  301,  301,  301,  301,  301,  301,
+ /*  1530 */   301,  318,  301,  315,  301,  358,  351,  222,  314,  219,
+ /*  1540 */    54,  301,  105,  301,  301,  301,  301,  301,  301,  301,
+ /*  1550 */   318,  301,  315,  301,  358,  351,  222,  314,  219,   79,
+ /*  1560 */   301,  105,  301,  301,  301,  301,  301,  301,  301,  318,
+ /*  1570 */   301,  301,  301,  358,  351,  135,  314,  301,  315,  301,
+ /*  1580 */   165,  301,  222,  301,  219,   60,  301,  105,  284,   24,
+ /*  1590 */    23,  301,  301,  301,  301,  318,  301,  315,  301,  358,
+ /*  1600 */   351,  222,  314,  219,   65,  301,  105,  301,  301,  301,
+ /*  1610 */   301,  301,  301,  301,  318,  301,  315,  301,  358,  351,
+ /*  1620 */   222,  314,  219,   55,  301,  105,  301,  301,  301,  301,
+ /*  1630 */   301,  301,  301,  318,  301,  315,  301,  358,  351,  222,
+ /*  1640 */   314,  219,   58,  301,  105,  301,  301,  301,  301,  301,
+ /*  1650 */   301,  301,  318,  301,  301,  301,  358,  351,  151,  314,
+ /*  1660 */   301,  315,  301,  165,  301,  222,  301,  219,   75,  301,
+ /*  1670 */   105,  284,   24,   23,  301,  301,  301,  301,  318,  301,
+ /*  1680 */   315,  301,  358,  351,  222,  314,  219,   63,  301,  105,
+ /*  1690 */   301,  301,  301,  301,  301,  301,  301,  318,  301,  315,
+ /*  1700 */   301,  358,  351,  222,  314,  219,   72,  301,  105,  301,
+ /*  1710 */   301,  301,  301,  301,  301,  301,  318,  301,  315,  301,
+ /*  1720 */   358,  351,  222,  314,  219,   69,  301,  105,  301,  301,
+ /*  1730 */   301,  301,  301,  301,  301,  318,  301,  301,  301,  358,
+ /*  1740 */   351,  301,  314,  301,  315,  301,  301,  301,  222,  301,
+ /*  1750 */   185,   61,  301,  105,  301,  301,  301,  301,  301,  301,
+ /*  1760 */   301,  318,  301,  315,  301,  358,  351,  222,  314,  219,
+ /*  1770 */    67,  301,  105,  301,  301,  301,  301,  301,  301,  301,
+ /*  1780 */   318,  301,  315,  301,  358,  351,  222,  314,  219,   74,
+ /*  1790 */   301,  105,  301,  301,  301,  301,  301,  301,  301,  318,
+ /*  1800 */   301,  315,  301,  358,  351,  222,  314,  219,   80,  301,
+ /*  1810 */   105,  301,  301,  301,  301,  301,  301,  301,  318,  301,
+ /*  1820 */   301,  301,  358,  351,  301,  314,  301,  315,  301,  301,
+ /*  1830 */   301,  222,  301,  219,   66,  301,  105,  301,  301,  301,
+ /*  1840 */   301,  301,  301,  301,  318,  301,  315,  301,  358,  351,
+ /*  1850 */   222,  314,  219,   70,  301,  105,  301,  301,  301,  301,
+ /*  1860 */   301,  301,  301,  318,  301,  315,  301,  358,  351,  222,
+ /*  1870 */   314,  219,   76,  301,  105,  301,  301,  301,  301,  301,
+ /*  1880 */   301,  301,  318,  301,  315,  301,  358,  351,  222,  314,
+ /*  1890 */   219,   64,  301,  105,  301,  301,  301,  301,  301,  301,
+ /*  1900 */   301,  318,  301,  301,  301,  358,  351,  301,  314,  301,
+ /*  1910 */   315,  301,  301,  301,  222,  301,  219,   57,  301,  105,
+ /*  1920 */   301,  301,  301,  301,  301,  301,  301,  318,  301,  315,
+ /*  1930 */   301,  358,  351,  222,  314,  219,   50,  301,  105,  301,
+ /*  1940 */   301,  301,  301,  301,  301,  301,  318,  301,  315,  301,
+ /*  1950 */   358,  351,  222,  314,  219,   78,  301,  105,  301,  301,
+ /*  1960 */   301,  301,  301,  301,  301,  318,  301,  315,  301,  358,
+ /*  1970 */   351,  222,  314,  219,   68,  301,  105,  301,  301,  301,
+ /*  1980 */   301,  301,  301,  301,  318,  301,  301,  301,  358,  351,
+ /*  1990 */   301,  314,  301,  315,  301,  301,  301,  222,  301,  219,
+ /*  2000 */    73,  301,  105,  301,  301,  301,  301,  301,  301,  301,
+ /*  2010 */   318,  301,  315,  301,  358,  351,  272,  314,  219,  301,
+ /*  2020 */   301,  105,  301,  301,  301,  301,  301,  301,  301,  301,
+ /*  2030 */   301,  301,  301,  358,  351,  301,  314,
     );
     static public $yy_lookahead = array(
- /*     0 */     1,   77,   30,   12,   13,   81,   15,   83,   84,   85,
- /*    10 */    86,  104,   13,  106,  107,    4,    5,    6,   94,   20,
- /*    20 */     9,   10,   11,   99,  100,   83,  102,   27,   86,   57,
+ /*     0 */     1,   77,   78,   79,    3,    4,    5,    6,    7,    8,
+ /*    10 */     9,    2,   13,   12,   12,   52,   46,   13,   19,   18,
+ /*    20 */    57,   20,   52,   19,   54,   16,   25,   14,   58,   28,
  /*    30 */    31,   32,   33,   34,   35,   36,   37,   38,   39,   40,
- /*    40 */    41,   42,   43,   44,  102,   45,    3,    4,    5,    6,
- /*    50 */     7,    8,    9,  106,  107,   12,   27,   58,   59,   60,
- /*    60 */    61,   62,   63,   64,   65,   66,   67,   68,   69,    1,
- /*    70 */    77,   28,    1,   20,   81,   46,   83,   84,   85,   86,
- /*    80 */    82,   13,   53,   16,   13,   87,   16,   94,   20,   18,
- /*    90 */    13,   20,   99,  100,   96,  102,   26,   20,   15,   31,
- /*   100 */    32,   33,   34,   35,   36,   37,   38,   39,   40,   41,
- /*   110 */    42,   43,   44,   76,   77,   78,   46,   46,   74,   75,
- /*   120 */    76,   77,   78,   53,   53,   12,   58,   59,   60,   61,
- /*   130 */    62,   63,   64,   65,   66,   67,   68,   69,    1,   82,
- /*   140 */    15,   77,   17,   47,   19,   81,   21,   83,   84,   85,
- /*   150 */    86,   12,   92,   96,   15,   16,   51,   20,   94,   46,
- /*   160 */    13,   56,   25,   99,  100,  105,  102,   20,   31,   32,
- /*   170 */    33,   34,   35,   36,   37,   38,   39,   40,   41,   42,
- /*   180 */    43,   44,    1,   13,   12,   77,   14,   15,   15,   81,
- /*   190 */    20,   83,   45,   54,   86,   58,   59,   60,   61,   62,
- /*   200 */    63,   64,   65,   66,   67,   68,   69,   99,  100,   78,
- /*   210 */   102,   80,   31,   32,   33,   34,   35,   36,   37,   38,
- /*   220 */    39,   40,   41,   42,   43,   44,   12,   55,   12,   15,
- /*   230 */    16,   15,   23,    8,   47,   14,   15,   12,   57,   58,
- /*   240 */    59,   60,   61,   62,   63,   64,   65,   66,   67,   68,
- /*   250 */    69,    1,   77,   28,    1,   93,   81,   46,   83,   84,
- /*   260 */    85,   86,   51,   13,   53,   13,   13,  105,   57,   94,
- /*   270 */    54,   18,   20,   20,   99,  100,   55,  102,   14,   15,
- /*   280 */    71,   31,   32,   33,   34,   35,   36,   37,   38,   39,
- /*   290 */    40,   41,   42,   43,   44,   70,   71,   72,   46,   13,
- /*   300 */    16,   12,   18,   18,   15,   53,   20,   15,   58,   59,
- /*   310 */    60,   61,   62,   63,   64,   65,   66,   67,   68,   69,
- /*   320 */     1,   77,   48,   83,   13,   81,   86,   83,   84,   85,
- /*   330 */    86,   20,   12,   13,   23,   15,   51,   53,   94,   20,
- /*   340 */    46,   56,  102,   99,  100,   13,  102,   27,  108,    1,
- /*   350 */    31,   32,   33,   34,   35,   36,   37,   38,   39,   40,
- /*   360 */    41,   42,   43,   44,    1,   13,   12,   77,   20,   15,
- /*   370 */    15,   81,   20,   83,   16,   23,   86,   58,   59,   60,
- /*   380 */    61,   62,   63,   64,   65,   66,   67,   68,   69,   99,
- /*   390 */   100,  103,  102,  105,   31,   32,   33,   34,   35,   36,
- /*   400 */    37,   38,   39,   40,   41,   42,   43,   44,    1,   51,
- /*   410 */    47,   12,   12,   13,   15,   15,   12,    2,   14,   15,
- /*   420 */    13,   58,   59,   60,   61,   62,   63,   64,   65,   66,
- /*   430 */    67,   68,   69,   29,   15,   20,  106,  107,   31,   32,
- /*   440 */    33,   34,   35,   36,   37,   38,   39,   40,   41,   42,
- /*   450 */    43,   44,    1,   54,   12,   77,   13,   15,   88,   81,
- /*   460 */    88,   83,   77,   20,   86,   58,   59,   60,   61,   62,
- /*   470 */    63,   64,   65,   66,   67,   68,   69,   99,  100,  103,
- /*   480 */   102,    2,   31,   32,   33,   34,   35,   36,   37,   38,
- /*   490 */    39,   40,   41,   42,   43,   44,    1,   13,  113,  114,
- /*   500 */   106,  107,   89,   90,   20,   45,   15,   82,   13,   58,
- /*   510 */    59,   60,   61,   62,   63,   64,   65,   66,   67,   68,
- /*   520 */    69,   96,   71,   14,   51,   29,   31,   32,   33,   34,
- /*   530 */    35,   36,   37,   38,   39,   40,   41,   42,   43,   44,
- /*   540 */     1,   13,   22,   77,   13,   54,   13,   81,   20,   83,
- /*   550 */    30,   20,   86,   58,   59,   60,   61,   62,   63,   64,
- /*   560 */    65,   66,   67,   68,   69,   99,  100,   55,  102,   26,
- /*   570 */    31,   32,   33,   34,   35,   36,   37,   38,   39,   40,
- /*   580 */    41,   42,   43,   44,    1,    2,   47,   77,   13,   15,
- /*   590 */    14,   81,   14,   83,   26,   20,   86,   58,   59,   60,
- /*   600 */    61,   62,   63,   64,   65,   66,   67,   68,   69,   99,
- /*   610 */   100,   88,  102,   13,   31,   32,   33,   34,   35,   36,
- /*   620 */    37,   38,   39,   40,   41,   42,   43,   44,    1,   13,
- /*   630 */    46,   13,   55,   23,   15,   47,   20,   53,   20,   15,
- /*   640 */    13,   58,   59,   60,   61,   62,   63,   64,   65,   66,
- /*   650 */    67,   68,   69,   29,   14,   13,   15,   20,   31,   32,
- /*   660 */    33,   34,   35,   36,   37,   38,   39,   40,   41,   42,
- /*   670 */    43,   44,    1,   13,   57,   77,   13,   16,   20,   81,
- /*   680 */    20,   83,   18,   20,   86,   58,   59,   60,   61,   62,
- /*   690 */    63,   64,   65,   66,   67,   68,   69,   99,  100,   24,
- /*   700 */   102,   30,   31,   32,   33,   34,   35,   36,   37,   38,
- /*   710 */    39,   40,   41,   42,   43,   44,   12,   53,   13,   15,
- /*   720 */    16,   13,   15,   77,    8,   20,   14,   23,   12,   58,
- /*   730 */    59,   60,   61,   62,   63,   64,   65,   66,   67,   68,
- /*   740 */    69,    1,   77,   96,   28,   10,   81,    2,   83,   84,
- /*   750 */    45,   86,   82,   45,   89,   12,   13,   87,   15,   94,
- /*   760 */   114,   16,   22,  104,   99,  100,   96,  102,   79,  103,
- /*   770 */    27,   31,   32,   33,   34,   35,   36,   37,   38,   39,
- /*   780 */    40,   41,   42,   43,   44,    1,   70,   71,   72,   13,
- /*   790 */   103,   95,   46,  105,   20,   18,   20,   13,   58,   59,
- /*   800 */    60,   61,   62,   63,   64,   65,   66,   67,   68,   69,
- /*   810 */    14,   91,  103,  107,   20,   31,   32,   33,   34,   35,
- /*   820 */    36,   37,   38,   39,   40,   41,   42,   43,   44,    1,
- /*   830 */    13,   13,   13,   91,  103,   88,  110,   20,   20,   20,
- /*   840 */    82,   13,   58,   59,   60,   61,   62,   63,   64,   65,
- /*   850 */    66,   67,   68,   69,   96,    2,   89,  115,  115,   31,
- /*   860 */    32,   33,   34,   35,   36,   37,   38,   39,   40,   41,
- /*   870 */    42,   43,   44,    1,  101,  115,   77,  115,  115,  115,
- /*   880 */    81,  108,   83,  115,  115,   86,   58,   59,   60,   61,
- /*   890 */    62,   63,   64,   65,   66,   67,   68,   69,   99,  100,
- /*   900 */   115,  102,  115,   31,   32,   33,   34,   35,   36,   37,
- /*   910 */    38,   39,   40,   41,   42,   43,   44,   87,  115,  115,
- /*   920 */   115,  115,  115,  115,  115,  115,  115,   97,   98,  115,
- /*   930 */    58,   59,   60,   61,   62,   63,   64,   65,   66,   67,
- /*   940 */    68,   69,   82,   12,  115,   14,   15,   87,   17,  115,
- /*   950 */    19,   12,   21,   14,   15,  115,   96,   97,   98,   28,
- /*   960 */    29,   92,   92,   32,  115,   82,  115,   28,   29,   92,
- /*   970 */    87,   32,  115,  115,  105,  105,  115,   46,  115,   96,
- /*   980 */    49,   50,  105,   52,  115,   46,   55,   56,   49,   50,
- /*   990 */    12,   52,   14,   15,   55,   56,   57,   82,   82,  115,
- /*  1000 */   115,   70,   12,   87,   14,   15,   28,   29,  115,   70,
- /*  1010 */    32,   96,   96,   97,   98,   82,  115,   82,   28,   29,
- /*  1020 */   115,  115,   32,  115,   46,  110,  115,   49,   50,   96,
- /*  1030 */    52,   96,  115,   55,   56,   12,   46,   14,   15,   49,
- /*  1040 */    50,   92,   52,  110,   92,   55,   56,   12,   70,   14,
- /*  1050 */    15,   28,   29,   92,  105,   32,  115,  105,   92,  115,
- /*  1060 */    70,  115,  115,   28,   29,  115,  105,   32,  115,   46,
- /*  1070 */   115,  105,   49,   50,   82,   52,   92,  115,   55,   56,
- /*  1080 */    12,   46,   14,   15,   49,   50,  115,   52,   96,  105,
- /*  1090 */    55,   56,   12,   70,   14,   15,   28,   29,  115,  115,
- /*  1100 */    32,   82,  110,  115,  115,   70,  115,   82,   28,   29,
- /*  1110 */   115,  115,   32,  115,   46,   96,  115,   49,   50,  115,
- /*  1120 */    52,   96,  115,   55,   56,   12,   46,   14,   15,   49,
- /*  1130 */    50,  115,   52,  115,  115,   55,   56,   12,   70,   14,
- /*  1140 */    15,   28,   29,  115,  115,   32,  115,  115,  115,  115,
- /*  1150 */    70,  115,  115,   28,   29,  115,  115,   32,  115,   46,
- /*  1160 */   115,  115,   49,   50,  115,   52,  115,  115,   55,   56,
- /*  1170 */    12,   46,   14,   15,   49,   50,  115,   52,  115,  115,
- /*  1180 */    55,  115,  115,   70,  115,  115,   28,   29,  115,  115,
- /*  1190 */    32,  115,   77,  115,  115,   70,   81,  115,   83,   84,
- /*  1200 */   115,   86,  115,  115,   46,  115,  115,   49,   50,   94,
- /*  1210 */    52,  115,  115,   55,   99,  100,   77,  102,  115,  115,
- /*  1220 */    81,  115,   83,   84,  115,   86,  111,  112,   70,  115,
- /*  1230 */   115,  115,  115,   94,  115,  115,  115,  115,   99,  100,
- /*  1240 */    77,  102,  115,  115,   81,  115,   83,   84,  109,   86,
- /*  1250 */   115,  115,   77,  115,  115,  115,   81,   94,   83,   84,
- /*  1260 */   115,   86,   99,  100,   77,  102,  115,  115,   81,   94,
- /*  1270 */    83,   84,  109,   86,   99,  100,  115,  102,  115,  115,
- /*  1280 */   115,   94,  115,  115,  109,  115,   99,  100,   77,  102,
- /*  1290 */   115,  115,   81,  115,   83,   84,  115,   86,  115,  112,
- /*  1300 */    77,  115,  115,  115,   81,   94,   83,   84,  115,   86,
- /*  1310 */    99,  100,  115,  102,  115,  115,  115,   94,  115,  115,
- /*  1320 */   109,  115,   99,  100,   77,  102,  115,  115,   81,  115,
- /*  1330 */    83,   84,  115,   86,  115,  115,   77,  115,  115,  115,
- /*  1340 */    81,   94,   83,   84,  115,   86,   99,  100,   77,  102,
- /*  1350 */   115,  115,   81,   94,   83,   84,  115,   86,   99,  100,
- /*  1360 */   115,  102,  115,  115,  115,   94,  115,  115,  115,  115,
- /*  1370 */    99,  100,   77,  102,  115,  115,   81,  115,   83,   84,
- /*  1380 */   115,   86,  115,  115,   77,  115,  115,  115,   81,   94,
- /*  1390 */    83,   84,  115,   86,   99,  100,  115,  102,  115,  115,
- /*  1400 */   115,   94,  115,  115,  115,  115,   99,  100,   77,  102,
- /*  1410 */   115,  115,   81,  115,   83,   84,  115,   86,  115,  115,
- /*  1420 */    77,  115,  115,  115,   81,   94,   83,   84,  115,   86,
- /*  1430 */    99,  100,   77,  102,  115,  115,   81,   94,   83,   84,
- /*  1440 */   115,   86,   99,  100,  115,  102,  115,  115,  115,   94,
- /*  1450 */   115,  115,  115,  115,   99,  100,   77,  102,  115,  115,
- /*  1460 */    81,  115,   83,   84,  115,   86,  115,  115,   77,  115,
- /*  1470 */   115,  115,   81,   94,   83,   84,  115,   86,   99,  100,
- /*  1480 */   115,  102,  115,  115,  115,   94,  115,  115,  115,  115,
- /*  1490 */    99,  100,   77,  102,  115,  115,   81,  115,   83,   84,
- /*  1500 */   115,   86,  115,  115,   77,  115,  115,  115,   81,   94,
- /*  1510 */    83,   84,  115,   86,   99,  100,   77,  102,  115,  115,
- /*  1520 */    81,   94,   83,   84,  115,   86,   99,  100,  115,  102,
- /*  1530 */   115,  115,  115,   94,  115,  115,  115,  115,   99,  100,
- /*  1540 */    77,  102,  115,  115,   81,  115,   83,   84,  115,   86,
- /*  1550 */   115,  115,   77,  115,  115,  115,   81,   94,   83,   84,
- /*  1560 */   115,   86,   99,  100,  115,  102,  115,  115,  115,   94,
- /*  1570 */   115,  115,  115,  115,   99,  100,   77,  102,  115,  115,
- /*  1580 */    81,  115,   83,   84,  115,   86,  115,  115,   77,  115,
- /*  1590 */   115,  115,   81,   94,   83,   84,  115,   86,   99,  100,
- /*  1600 */    77,  102,  115,  115,   81,   94,   83,   84,  115,   86,
- /*  1610 */    99,  100,  115,  102,  115,  115,  115,   94,  115,  115,
- /*  1620 */   115,  115,   99,  100,   77,  102,  115,  115,   81,  115,
- /*  1630 */    83,   84,  115,   86,  115,  115,   77,  115,  115,  115,
- /*  1640 */    81,   94,   83,   84,  115,   86,   99,  100,  115,  102,
- /*  1650 */   115,  115,  115,   94,  115,  115,  115,  115,   99,  100,
- /*  1660 */    77,  102,  115,  115,   81,  115,   83,   84,  115,   86,
- /*  1670 */   115,  115,   77,  115,  115,  115,   81,   94,   83,   84,
- /*  1680 */   115,   86,   99,  100,   77,  102,  115,  115,   81,   94,
- /*  1690 */    83,   84,  115,   86,   99,  100,  115,  102,  115,  115,
- /*  1700 */   115,   94,  115,  115,  115,  115,   99,  100,   77,  102,
- /*  1710 */   115,  115,   81,  115,   83,   84,  115,   86,  115,  115,
- /*  1720 */    77,  115,  115,  115,   81,   94,   83,   84,  115,   86,
- /*  1730 */    99,  100,  115,  102,  115,  115,  115,   94,  115,  115,
- /*  1740 */   115,   82,   99,  100,   77,  102,   87,  115,   81,  115,
- /*  1750 */    83,  115,  115,   86,   77,   96,   97,   98,   81,  115,
- /*  1760 */    83,   94,  115,   86,  115,  115,   99,  100,  115,  102,
- /*  1770 */   115,   94,  115,  115,  115,  115,   99,  100,  115,  102,
- /*  1780 */    82,  115,  115,  115,   77,   87,  115,  115,   81,  115,
- /*  1790 */    83,  115,  115,   86,   96,   97,   98,  115,  115,  115,
- /*  1800 */   115,   94,  115,  115,  115,  115,   99,  100,  115,  102,
+ /*    40 */    41,   42,   43,   44,    4,    5,    6,   16,   46,    9,
+ /*    50 */    10,   11,   75,   76,   77,   78,   79,  103,   59,   60,
+ /*    60 */    61,   62,   63,   64,   65,   66,   67,   68,   69,   70,
+ /*    70 */     1,   78,   13,    1,   83,   82,   14,   84,   19,   88,
+ /*    80 */    87,   83,   13,   52,    1,   13,   88,   96,   19,   17,
+ /*    90 */    17,   19,   99,  100,   96,  102,   13,   90,   91,   14,
+ /*   100 */    31,   32,   33,   34,   35,   36,   37,   38,   39,   40,
+ /*   110 */    41,   42,   43,   44,   31,   32,   33,   34,   35,   36,
+ /*   120 */    37,   38,   39,   40,   41,   42,   43,   44,   59,   60,
+ /*   130 */    61,   62,   63,   64,   65,   66,   67,   68,   69,   70,
+ /*   140 */     1,   30,   59,   60,   61,   62,   63,   64,   65,   66,
+ /*   150 */    67,   68,   69,   70,    1,    2,   12,   15,   19,   15,
+ /*   160 */    16,   12,   13,   24,   15,  104,   22,  106,  107,   58,
+ /*   170 */    31,   32,   33,   34,   35,   36,   37,   38,   39,   40,
+ /*   180 */    41,   42,   43,   44,   31,   32,   33,   34,   35,   36,
+ /*   190 */    37,   38,   39,   40,   41,   42,   43,   44,   59,   60,
+ /*   200 */    61,   62,   63,   64,   65,   66,   67,   68,   69,   70,
+ /*   210 */     1,   15,   59,   60,   61,   62,   63,   64,   65,   66,
+ /*   220 */    67,   68,   69,   70,    1,   29,   12,   13,   19,   15,
+ /*   230 */    12,  106,  107,   15,   16,  103,   13,  105,   14,   15,
+ /*   240 */    31,   32,   33,   34,   35,   36,   37,   38,   39,   40,
+ /*   250 */    41,   42,   43,   44,   31,   32,   33,   34,   35,   36,
+ /*   260 */    37,   38,   39,   40,   41,   42,   43,   44,   59,   60,
+ /*   270 */    61,   62,   63,   64,   65,   66,   67,   68,   69,   70,
+ /*   280 */    56,   15,   59,   60,   61,   62,   63,   64,   65,   66,
+ /*   290 */    67,   68,   69,   70,    1,   78,  103,   84,  105,   82,
+ /*   300 */    87,   84,   85,   86,   87,   13,   13,   12,    1,   14,
+ /*   310 */    15,   19,   95,   88,   22,  102,   99,  100,   79,  102,
+ /*   320 */    81,   55,   97,   98,   31,   32,   33,   34,   35,   36,
+ /*   330 */    37,   38,   39,   40,   41,   42,   43,   44,   31,   32,
+ /*   340 */    33,   34,   35,   36,   37,   38,   39,   40,   41,   42,
+ /*   350 */    43,   44,   59,   60,   61,   62,   63,   64,   65,   66,
+ /*   360 */    67,   68,   69,   70,    1,   58,   59,   60,   61,   62,
+ /*   370 */    63,   64,   65,   66,   67,   68,   69,   70,    1,   13,
+ /*   380 */    13,   13,   94,   13,   21,   19,   19,   19,   22,   19,
+ /*   390 */    13,  106,  107,  105,   31,   32,   33,   34,   35,   36,
+ /*   400 */    37,   38,   39,   40,   41,   42,   43,   44,   31,   32,
+ /*   410 */    33,   34,   35,   36,   37,   38,   39,   40,   41,   42,
+ /*   420 */    43,   44,   59,   60,   61,   62,   63,   64,   65,   66,
+ /*   430 */    67,   68,   69,   70,   16,   17,   59,   60,   61,   62,
+ /*   440 */    63,   64,   65,   66,   67,   68,   69,   70,    1,   78,
+ /*   450 */    21,    1,   15,   82,   15,   84,   85,   86,   87,   30,
+ /*   460 */    13,   12,   13,   13,   15,   17,   95,   17,   22,   19,
+ /*   470 */    99,  100,   54,  102,   12,   47,   27,   15,   31,   32,
+ /*   480 */    33,   34,   35,   36,   37,   38,   39,   40,   41,   42,
+ /*   490 */    43,   44,    1,   26,   12,   14,   46,   15,   16,   12,
+ /*   500 */    52,   27,   15,   78,   54,   57,   59,   60,   61,   62,
+ /*   510 */    63,   64,   65,   66,   67,   68,   69,   70,   72,   45,
+ /*   520 */    14,   15,   31,   32,   33,   34,   35,   36,   37,   38,
+ /*   530 */    39,   40,   41,   42,   43,   44,    1,   55,   47,  114,
+ /*   540 */    12,   12,   55,   15,   15,   12,    1,   14,   15,   78,
+ /*   550 */    59,   60,   61,   62,   63,   64,   65,   66,   67,   68,
+ /*   560 */    69,   70,   29,   27,   19,   15,   31,   32,   33,   34,
+ /*   570 */    35,   36,   37,   38,   39,   40,   41,   42,   43,   44,
+ /*   580 */     1,   13,   46,   55,  113,  114,   12,   19,   12,   15,
+ /*   590 */    54,   15,   13,   83,   59,   60,   61,   62,   63,   64,
+ /*   600 */    65,   66,   67,   68,   69,   70,   96,   72,  105,   15,
+ /*   610 */    31,   32,   33,   34,   35,   36,   37,   38,   39,   40,
+ /*   620 */    41,   42,   43,   44,    1,   13,   13,   46,   13,  108,
+ /*   630 */    13,   19,   19,   19,   19,   54,   19,   83,   59,   60,
+ /*   640 */    61,   62,   63,   64,   65,   66,   67,   68,   69,   70,
+ /*   650 */    96,   14,   19,   30,   31,   32,   33,   34,   35,   36,
+ /*   660 */    37,   38,   39,   40,   41,   42,   43,   44,    1,   13,
+ /*   670 */    13,   13,   13,   13,   13,   19,   19,   19,   19,   19,
+ /*   680 */    19,   13,   59,   60,   61,   62,   63,   64,   65,   66,
+ /*   690 */    67,   68,   69,   70,   45,   29,   14,   47,   31,   32,
+ /*   700 */    33,   34,   35,   36,   37,   38,   39,   40,   41,   42,
+ /*   710 */    43,   44,    1,   45,   47,   15,   13,  101,   47,   17,
+ /*   720 */    22,   46,    2,   16,  108,   83,   59,   60,   61,   62,
+ /*   730 */    63,   64,   65,   66,   67,   68,   69,   70,   96,   19,
+ /*   740 */    52,    2,   31,   32,   33,   34,   35,   36,   37,   38,
+ /*   750 */    39,   40,   41,   42,   43,   44,   54,   13,   46,   13,
+ /*   760 */    15,   13,   48,   19,   15,   23,   13,   19,   96,   83,
+ /*   770 */    59,   60,   61,   62,   63,   64,   65,   66,   67,   68,
+ /*   780 */    69,   70,   96,   12,   58,   14,   15,   56,   78,   18,
+ /*   790 */    46,   20,   82,   45,   84,   85,   25,   87,   54,   28,
+ /*   800 */    29,   12,   13,   32,   15,   95,   93,  101,   16,   99,
+ /*   810 */   100,   29,  102,   83,  108,   19,   27,   46,  105,  109,
+ /*   820 */    49,   50,   51,   52,   53,   93,   96,   56,   57,   58,
+ /*   830 */    12,   56,   14,   15,   19,   83,   18,  105,   20,   83,
+ /*   840 */   110,    8,   71,   25,   93,   12,   28,   29,   96,   13,
+ /*   850 */    32,   18,   96,   20,   15,   19,  105,   26,   25,   83,
+ /*   860 */    83,   28,  110,  103,   46,   88,  110,   49,   50,   51,
+ /*   870 */    52,   53,   96,   96,   56,   57,   93,   12,   78,   14,
+ /*   880 */    15,   45,   82,   18,   84,   20,   93,   87,  105,   71,
+ /*   890 */    25,   93,  107,   28,   29,   95,   93,   32,  105,   99,
+ /*   900 */   100,   93,  102,  105,   71,   72,   73,   83,  105,   92,
+ /*   910 */    10,   46,   90,  105,   49,   50,   51,   52,   53,   16,
+ /*   920 */    96,   56,   57,    2,   12,  104,   14,   15,   80,   26,
+ /*   930 */    18,   93,   20,   19,   93,    8,   71,   25,  110,   12,
+ /*   940 */    28,   29,   89,  105,   32,   18,  105,   20,  103,   46,
+ /*   950 */    89,   89,   25,  103,  115,   28,   92,   54,   46,   89,
+ /*   960 */   115,   49,   50,   51,   52,   53,  115,  115,   56,   57,
+ /*   970 */   115,   12,   78,   14,   15,  115,   82,   18,   84,   20,
+ /*   980 */   115,   87,  115,   71,   25,  115,  115,   28,   29,   95,
+ /*   990 */   115,   32,  115,   99,  100,  115,  102,  115,   71,   72,
+ /*  1000 */    73,  115,  115,  115,  115,   46,  115,  115,   49,   50,
+ /*  1010 */    51,   52,   53,  115,  115,   56,   57,  115,   12,   78,
+ /*  1020 */    14,   15,  115,   82,   18,   84,   20,  115,   87,  115,
+ /*  1030 */    71,   25,  115,  115,   28,   29,   95,  115,   32,  115,
+ /*  1040 */    99,  100,  115,  102,  115,  115,  115,  115,  115,  115,
+ /*  1050 */   115,  115,   46,  115,  115,   49,   50,   51,   52,   53,
+ /*  1060 */   115,  115,   56,   57,  115,   12,   78,   14,   15,  115,
+ /*  1070 */    82,   18,   84,   20,  115,   87,  115,   71,   25,  115,
+ /*  1080 */   115,   28,   29,  115,  115,   32,  115,   99,  100,  115,
+ /*  1090 */   102,  115,  115,  115,  115,  115,  115,  115,  115,   46,
+ /*  1100 */   115,  115,   49,   50,   51,   52,   53,  115,  115,   56,
+ /*  1110 */    57,  115,   12,   78,   14,   15,  115,   82,   18,   84,
+ /*  1120 */    20,  115,   87,  115,   71,   25,  115,  115,   28,   29,
+ /*  1130 */   115,  115,   32,  115,   99,  100,  115,  102,  115,  115,
+ /*  1140 */   115,  115,  115,  115,  115,  115,   46,  115,  115,   49,
+ /*  1150 */    50,   51,   52,   53,  115,  115,   56,   57,  115,   12,
+ /*  1160 */    78,   14,   15,  115,   82,   18,   84,   20,  115,   87,
+ /*  1170 */   115,   71,   25,  115,  115,   28,   29,  115,  115,   32,
+ /*  1180 */   115,   99,  100,  115,  102,  115,  115,  115,  115,  115,
+ /*  1190 */   115,  115,  115,   46,  115,  115,   49,   50,   51,   52,
+ /*  1200 */    53,  115,  115,   56,   57,  115,   12,   78,   14,   15,
+ /*  1210 */   115,   82,   18,   84,   20,  115,   87,  115,   71,   25,
+ /*  1220 */   115,  115,   28,   29,  115,  115,   32,  115,   99,  100,
+ /*  1230 */    78,  102,  115,  115,   82,  115,   84,  115,  115,   87,
+ /*  1240 */    46,  115,  115,   49,   50,   51,   52,   53,  115,  115,
+ /*  1250 */    56,   99,  100,   12,  102,   14,   15,  115,  115,   18,
+ /*  1260 */   115,   20,  115,   83,  115,   71,   25,  115,   88,   28,
+ /*  1270 */    29,  115,  115,   32,  115,  115,   96,   97,   98,   78,
+ /*  1280 */   115,  115,  115,   82,  115,   84,   85,   46,   87,  115,
+ /*  1290 */    49,   50,   51,   52,   53,  115,   95,   56,   78,  115,
+ /*  1300 */    99,  100,   82,  102,   84,   85,  115,   87,  115,  115,
+ /*  1310 */   115,  115,   71,  112,  115,   95,  115,  115,  115,   99,
+ /*  1320 */   100,  115,  102,  115,  115,  115,  115,  115,  115,   78,
+ /*  1330 */   115,  111,  112,   82,  115,   84,   85,   86,   87,  115,
+ /*  1340 */   115,  115,  115,  115,  115,  115,   95,  115,   78,  115,
+ /*  1350 */    99,  100,   82,  102,   84,   85,   86,   87,  115,  115,
+ /*  1360 */   115,  115,  115,  115,  115,   95,  115,   78,  115,   99,
+ /*  1370 */   100,   82,  102,   84,   85,   86,   87,  115,  115,  115,
+ /*  1380 */   115,  115,  115,  115,   95,  115,   78,  115,   99,  100,
+ /*  1390 */    82,  102,   84,   85,  115,   87,  115,  115,  115,  115,
+ /*  1400 */   115,  115,  115,   95,  115,  115,  115,   99,  100,  115,
+ /*  1410 */   102,  115,   78,  115,  115,  115,   82,  109,   84,   85,
+ /*  1420 */   115,   87,  115,  115,   90,  115,  115,  115,  115,   95,
+ /*  1430 */   115,   78,  115,   99,  100,   82,  102,   84,   85,  115,
+ /*  1440 */    87,  115,  115,  115,  115,  115,  115,  115,   95,  115,
+ /*  1450 */    78,  115,   99,  100,   82,  102,   84,   85,  115,   87,
+ /*  1460 */   115,  115,  109,  115,  115,  115,  115,   95,  115,   78,
+ /*  1470 */   115,   99,  100,   82,  102,   84,   85,  115,   87,  115,
+ /*  1480 */   115,  109,  115,  115,  115,  115,   95,  115,  115,  115,
+ /*  1490 */    99,  100,   83,  102,  115,   78,  115,   88,  115,   82,
+ /*  1500 */   115,   84,   85,  115,   87,   96,   97,   98,  115,  115,
+ /*  1510 */   115,  115,   95,  115,   78,  115,   99,  100,   82,  102,
+ /*  1520 */    84,   85,  115,   87,  115,  115,  115,  115,  115,  115,
+ /*  1530 */   115,   95,  115,   78,  115,   99,  100,   82,  102,   84,
+ /*  1540 */    85,  115,   87,  115,  115,  115,  115,  115,  115,  115,
+ /*  1550 */    95,  115,   78,  115,   99,  100,   82,  102,   84,   85,
+ /*  1560 */   115,   87,  115,  115,  115,  115,  115,  115,  115,   95,
+ /*  1570 */   115,  115,  115,   99,  100,   83,  102,  115,   78,  115,
+ /*  1580 */    88,  115,   82,  115,   84,   85,  115,   87,   96,   97,
+ /*  1590 */    98,  115,  115,  115,  115,   95,  115,   78,  115,   99,
+ /*  1600 */   100,   82,  102,   84,   85,  115,   87,  115,  115,  115,
+ /*  1610 */   115,  115,  115,  115,   95,  115,   78,  115,   99,  100,
+ /*  1620 */    82,  102,   84,   85,  115,   87,  115,  115,  115,  115,
+ /*  1630 */   115,  115,  115,   95,  115,   78,  115,   99,  100,   82,
+ /*  1640 */   102,   84,   85,  115,   87,  115,  115,  115,  115,  115,
+ /*  1650 */   115,  115,   95,  115,  115,  115,   99,  100,   83,  102,
+ /*  1660 */   115,   78,  115,   88,  115,   82,  115,   84,   85,  115,
+ /*  1670 */    87,   96,   97,   98,  115,  115,  115,  115,   95,  115,
+ /*  1680 */    78,  115,   99,  100,   82,  102,   84,   85,  115,   87,
+ /*  1690 */   115,  115,  115,  115,  115,  115,  115,   95,  115,   78,
+ /*  1700 */   115,   99,  100,   82,  102,   84,   85,  115,   87,  115,
+ /*  1710 */   115,  115,  115,  115,  115,  115,   95,  115,   78,  115,
+ /*  1720 */    99,  100,   82,  102,   84,   85,  115,   87,  115,  115,
+ /*  1730 */   115,  115,  115,  115,  115,   95,  115,  115,  115,   99,
+ /*  1740 */   100,  115,  102,  115,   78,  115,  115,  115,   82,  115,
+ /*  1750 */    84,   85,  115,   87,  115,  115,  115,  115,  115,  115,
+ /*  1760 */   115,   95,  115,   78,  115,   99,  100,   82,  102,   84,
+ /*  1770 */    85,  115,   87,  115,  115,  115,  115,  115,  115,  115,
+ /*  1780 */    95,  115,   78,  115,   99,  100,   82,  102,   84,   85,
+ /*  1790 */   115,   87,  115,  115,  115,  115,  115,  115,  115,   95,
+ /*  1800 */   115,   78,  115,   99,  100,   82,  102,   84,   85,  115,
+ /*  1810 */    87,  115,  115,  115,  115,  115,  115,  115,   95,  115,
+ /*  1820 */   115,  115,   99,  100,  115,  102,  115,   78,  115,  115,
+ /*  1830 */   115,   82,  115,   84,   85,  115,   87,  115,  115,  115,
+ /*  1840 */   115,  115,  115,  115,   95,  115,   78,  115,   99,  100,
+ /*  1850 */    82,  102,   84,   85,  115,   87,  115,  115,  115,  115,
+ /*  1860 */   115,  115,  115,   95,  115,   78,  115,   99,  100,   82,
+ /*  1870 */   102,   84,   85,  115,   87,  115,  115,  115,  115,  115,
+ /*  1880 */   115,  115,   95,  115,   78,  115,   99,  100,   82,  102,
+ /*  1890 */    84,   85,  115,   87,  115,  115,  115,  115,  115,  115,
+ /*  1900 */   115,   95,  115,  115,  115,   99,  100,  115,  102,  115,
+ /*  1910 */    78,  115,  115,  115,   82,  115,   84,   85,  115,   87,
+ /*  1920 */   115,  115,  115,  115,  115,  115,  115,   95,  115,   78,
+ /*  1930 */   115,   99,  100,   82,  102,   84,   85,  115,   87,  115,
+ /*  1940 */   115,  115,  115,  115,  115,  115,   95,  115,   78,  115,
+ /*  1950 */    99,  100,   82,  102,   84,   85,  115,   87,  115,  115,
+ /*  1960 */   115,  115,  115,  115,  115,   95,  115,   78,  115,   99,
+ /*  1970 */   100,   82,  102,   84,   85,  115,   87,  115,  115,  115,
+ /*  1980 */   115,  115,  115,  115,   95,  115,  115,  115,   99,  100,
+ /*  1990 */   115,  102,  115,   78,  115,  115,  115,   82,  115,   84,
+ /*  2000 */    85,  115,   87,  115,  115,  115,  115,  115,  115,  115,
+ /*  2010 */    95,  115,   78,  115,   99,  100,   82,  102,   84,  115,
+ /*  2020 */   115,   87,  115,  115,  115,  115,  115,  115,  115,  115,
+ /*  2030 */   115,  115,  115,   99,  100,  115,  102,
 );
-    const YY_SHIFT_USE_DFLT = -29;
-    const YY_SHIFT_MAX = 223;
+    const YY_SHIFT_USE_DFLT = -38;
+    const YY_SHIFT_MAX = 224;
     static public $yy_shift_ofst = array(
- /*     0 */    43, 1068,  931,  931, 1113,  978,  990, 1068,  990,  978,
- /*    10 */   978, 1080,  978,  939,  978,  978,  978,  978,  978,  978,
- /*    20 */   978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
- /*    30 */   978,  978,  978,  978,  978,  978,  978,  978,  978, 1023,
- /*    40 */  1023, 1035, 1125, 1158, 1125, 1125, 1125, 1125, 1125,   -1,
- /*    50 */   137,   68,  319,  319,  172,  407,  250,  181,  363,  451,
- /*    60 */   828,  784,  671,  740,  627,  583,  495,  539,  872,  872,
- /*    70 */   872,  872,  872,  872,  872,  872,  872,  872,  872,  872,
- /*    80 */   872,  872,  872,  872,   43,  716,   71,  253,  285,  221,
- /*    90 */   415,  415,  415,  348,   11,  225,  704,  139,  216,  352,
- /*   100 */   705,  311,  284,  354,  664,  442,  289,  289,  289,  289,
- /*   110 */   354,  289,  264,  289,  289,  289,  777,  796,  658,  658,
- /*   120 */   774,  658,  777,  743,  320,  125,  399,  400,   -9,  214,
- /*   130 */   575,  484,  531,  113,  443,  105,   77,  170,  819,  105,
- /*   140 */   286,  528,  818,  618,  105,  105,  616,  105,  660,  817,
- /*   150 */   776,  663,  746,  735,  796,  853,  777,  777,  777,  794,
- /*   160 */   794,  777,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  211,
- /*   170 */    70,  252,  404,   29,  147,  584,    0,  584,  520,  358,
- /*   180 */   -28,  209,  708,  491,  624,  745,  543,  642,  640,  675,
- /*   190 */   588,  574,  568,  577,  712,  512,   83,  509,  617,  610,
- /*   200 */   619,  707,  355,  292,  173,   53,   96,  294,  496,  473,
- /*   210 */   419,  479,  332,   67,  274,  641,  533,  460,  576,  600,
- /*   220 */   578,  661,  637,  187,
+ /*     0 */     1,  959,  912,  865,  959,  912,  818,  818,  865, 1147,
+ /*    10 */  1100,  865,  865,  771,  865,  865,  865,  865,  865,  865,
+ /*    20 */   865,  865,  865,  865,  865,  865,  865,  865,  865,  865,
+ /*    30 */   865,  865,  865,  865,  865,  865,  865,  865,  865, 1006,
+ /*    40 */  1053, 1053, 1194, 1194, 1194, 1194, 1241, 1194, 1194,   -1,
+ /*    50 */   139,   69,  209,  209,  293,  153,   83,  223,  307,  623,
+ /*    60 */   667,  535,  579,  491,  447,  363,  377,  711,  711,  711,
+ /*    70 */   711,  711,  711,  711,  711,  711,  711,  711,  711,  711,
+ /*    80 */   711,  711,  711,    1,  927,  450,   72,  224,  448,  720,
+ /*    90 */   545,  720,  720,  833,   40,  482,  144,  487,  366,  418,
+ /*   100 */   836,  292,  506,  574,  462,  702,  462,  462,  529,  462,
+ /*   110 */   462,  462,  576,  462,  506,  529,  462,  462,  614,  614,
+ /*   120 */    73,  614,   73,  481,  633,  449,  789,  218,  295,  214,
+ /*   130 */   528,  149,  568,  613,  370,    4,  -37,    2,  -37,  368,
+ /*   140 */   367,   59,  612,  661,  -37,  617,  -37,  615,  656,  657,
+ /*   150 */   660,  659,  658,  -37,  914,  675,   73,   73,  900,  481,
+ /*   160 */   921,   73,  914,  -38,  -38,  -38,  -38,  -38,  -38,  -30,
+ /*   170 */   533,  744,  903,  748,  536,  266,  581,  474,  581,  196,
+ /*   180 */    31,  668,    9,  429,  111,  446,  831,   13,   85,  142,
+ /*   190 */   467,  439,  437,  428,   62,  637,  839,  682,  726,  753,
+ /*   200 */   749,  731,  815,  775,  782,  796,  745,  746,  671,  700,
+ /*   210 */   650,  675,  707,  714,  739,  688,  742,  712,  703,  698,
+ /*   220 */   792,  666,  649,  550,  594,
 );
-    const YY_REDUCE_USE_DFLT = -94;
+    const YY_REDUCE_USE_DFLT = -77;
     const YY_REDUCE_MAX = 168;
     static public $yy_reduce_ofst = array(
- /*     0 */    44, 1115,   -7,  244,  175, 1163,   64, 1187,  -76, 1175,
- /*    10 */  1139,  665, 1211, 1391, 1379, 1415, 1427, 1439, 1355, 1343,
- /*    20 */  1259, 1247, 1271, 1295, 1331, 1307, 1463, 1475, 1583, 1607,
- /*    30 */  1631, 1643, 1595, 1559, 1499, 1223, 1511, 1523, 1547, 1677,
- /*    40 */  1707, 1667,  799,  510,  290,  598,  378,  108,  466, 1698,
- /*    50 */   916,  860,  860, 1659,  240,  830,  830,  830,  830,  830,
- /*    60 */   830,  830,  830,  830,  830,  830,  830,  830,  830,  830,
- /*    70 */   830,  830,  830,  830,  830,  830,  830,  830,  830,  830,
- /*    80 */   830,  830,  830,  830,   37,  385,  883,   -2,  -93,  -58,
- /*    90 */   915,  933,  992,  670,  131,  646,  162,  288,  288,  758,
- /*   100 */   935,  758,  330,  961,  330,  869,   60,  870,  952,  949,
- /*   110 */   869,  877,  773,  869,  984,  966,  394,  413, 1025, 1019,
- /*   120 */   425,   57,  -53,  688,  688,  696,  688,  688,  688,  688,
- /*   130 */   647,  647,  647,  709,  647,  659,  647,  647,  647,  659,
- /*   140 */   647,  647,  647,  647,  659,  659,  647,  659,  647,  647,
- /*   150 */   647,  647,  687,  689,  767,  726,  706,  706,  706,  720,
- /*   160 */   742,  706,  747,  731,  523,  666,  376,  372,  370,
+ /*     0 */   -23, 1220,  217, 1372, 1201, 1270, 1251,  371,  710, 1289,
+ /*    10 */  1334, 1308, 1353, 1557, 1538, 1583, 1602, 1685, 1666, 1519,
+ /*    20 */  1640, 1621, 1704, 1417, 1391, 1436, 1474, 1723, 1500, 1455,
+ /*    30 */  1889, 1915, 1832, 1870, 1787, 1768, 1806, 1851, 1749,  800,
+ /*    40 */   894,  941, 1035,  988, 1152,   -7, 1934, 1129, 1082, 1180,
+ /*    50 */  1409, 1492, 1492, 1575,  225,  225,  225,  225,  225,  225,
+ /*    60 */   225,  225,  225,  225,  225,  225,  225,  225,  225,  225,
+ /*    70 */   225,  225,  225,  225,  225,  225,  225,  225,  225,  225,
+ /*    80 */   225,  225,  225,  -76,  471,  777,   -9,  213,   61,  730,
+ /*    90 */    -2,  756,  752,  425,  239,  193,  288,  193,  642,  285,
+ /*   100 */   686,  642,  616,  803,  713,  285,  132,  732,  798,  793,
+ /*   110 */   751,  783,  732,  808,  706,  732,  838,  841,  824,  776,
+ /*   120 */   125,  510,  285,    7,  554,  503,  503,  503,  521,  503,
+ /*   130 */   503,  503,  672,  672,  672,  672,  821,  -46,  821,  672,
+ /*   140 */   672,  672,  672,  672,  821,  672,  821,  672,  672,  672,
+ /*   150 */   672,  672,  672,  821,  817,  760,  785,  785,  848,  822,
+ /*   160 */   828,  785,  864,  853,  845,  870,  861,  850,  862,
 );
     static public $yyExpectedTokens = array(
-        /* 0 */ array(3, 4, 5, 6, 7, 8, 9, 12, 28, ),
-        /* 1 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 56, 70, ),
-        /* 2 */ array(12, 14, 15, 17, 19, 21, 28, 29, 32, 46, 49, 50, 52, 55, 56, 70, ),
-        /* 3 */ array(12, 14, 15, 17, 19, 21, 28, 29, 32, 46, 49, 50, 52, 55, 56, 70, ),
-        /* 4 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 56, 70, ),
-        /* 5 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 56, 70, ),
-        /* 6 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 56, 70, ),
-        /* 7 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 56, 70, ),
-        /* 8 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 56, 70, ),
-        /* 9 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 56, 70, ),
-        /* 10 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 56, 70, ),
-        /* 11 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 56, 70, ),
-        /* 12 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 56, 70, ),
-        /* 13 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 56, 57, 70, ),
-        /* 14 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 56, 70, ),
-        /* 15 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 56, 70, ),
-        /* 16 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 56, 70, ),
-        /* 17 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 56, 70, ),
-        /* 18 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 56, 70, ),
-        /* 19 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 56, 70, ),
-        /* 20 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 56, 70, ),
-        /* 21 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 56, 70, ),
-        /* 22 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 56, 70, ),
-        /* 23 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 56, 70, ),
-        /* 24 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 56, 70, ),
-        /* 25 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 56, 70, ),
-        /* 26 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 56, 70, ),
-        /* 27 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 56, 70, ),
-        /* 28 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 56, 70, ),
-        /* 29 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 56, 70, ),
-        /* 30 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 56, 70, ),
-        /* 31 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 56, 70, ),
-        /* 32 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 56, 70, ),
-        /* 33 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 56, 70, ),
-        /* 34 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 56, 70, ),
-        /* 35 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 56, 70, ),
-        /* 36 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 56, 70, ),
-        /* 37 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 56, 70, ),
-        /* 38 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 56, 70, ),
-        /* 39 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 56, 70, ),
-        /* 40 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 56, 70, ),
-        /* 41 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 56, 70, ),
-        /* 42 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 70, ),
-        /* 43 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 70, ),
-        /* 44 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 70, ),
-        /* 45 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 70, ),
-        /* 46 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 70, ),
-        /* 47 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 70, ),
-        /* 48 */ array(12, 14, 15, 28, 29, 32, 46, 49, 50, 52, 55, 70, ),
-        /* 49 */ array(1, 13, 20, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, ),
-        /* 50 */ array(1, 20, 25, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, ),
-        /* 51 */ array(1, 13, 20, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, ),
-        /* 52 */ array(1, 20, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, ),
-        /* 53 */ array(1, 20, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, ),
-        /* 54 */ array(12, 14, 15, 55, ),
-        /* 55 */ array(1, 13, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, ),
-        /* 56 */ array(1, 13, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, ),
-        /* 57 */ array(1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, ),
-        /* 58 */ array(1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 47, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, ),
-        /* 59 */ array(1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 71, ),
-        /* 60 */ array(1, 13, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, ),
-        /* 61 */ array(1, 13, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, ),
-        /* 62 */ array(1, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, ),
-        /* 63 */ array(1, 22, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, ),
-        /* 64 */ array(1, 13, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, ),
-        /* 65 */ array(1, 2, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, ),
-        /* 66 */ array(1, 13, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, ),
-        /* 67 */ array(1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 47, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, ),
-        /* 68 */ array(1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, ),
-        /* 69 */ array(1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, ),
-        /* 70 */ array(1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, ),
-        /* 71 */ array(1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, ),
-        /* 72 */ array(1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, ),
-        /* 73 */ array(1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, ),
-        /* 74 */ array(1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, ),
-        /* 75 */ array(1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, ),
-        /* 76 */ array(1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, ),
-        /* 77 */ array(1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, ),
-        /* 78 */ array(1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, ),
-        /* 79 */ array(1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, ),
-        /* 80 */ array(1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, ),
-        /* 81 */ array(1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, ),
-        /* 82 */ array(1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, ),
-        /* 83 */ array(1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, ),
-        /* 84 */ array(3, 4, 5, 6, 7, 8, 9, 12, 28, ),
-        /* 85 */ array(8, 12, 28, 70, 71, 72, ),
-        /* 86 */ array(1, 13, 18, 20, 46, 53, ),
-        /* 87 */ array(1, 13, 18, 20, ),
-        /* 88 */ array(18, 51, 56, ),
-        /* 89 */ array(14, 15, 55, ),
-        /* 90 */ array(2, 20, ),
-        /* 91 */ array(2, 20, ),
-        /* 92 */ array(2, 20, ),
-        /* 93 */ array(1, 20, ),
+        /* 0 */ array(3, 4, 5, 6, 7, 8, 9, 12, 18, 20, 25, 28, ),
+        /* 1 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 57, 71, ),
+        /* 2 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 57, 71, ),
+        /* 3 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 57, 71, ),
+        /* 4 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 57, 71, ),
+        /* 5 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 57, 71, ),
+        /* 6 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 57, 71, ),
+        /* 7 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 57, 71, ),
+        /* 8 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 57, 71, ),
+        /* 9 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 57, 71, ),
+        /* 10 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 57, 71, ),
+        /* 11 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 57, 71, ),
+        /* 12 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 57, 71, ),
+        /* 13 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 57, 58, 71, ),
+        /* 14 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 57, 71, ),
+        /* 15 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 57, 71, ),
+        /* 16 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 57, 71, ),
+        /* 17 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 57, 71, ),
+        /* 18 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 57, 71, ),
+        /* 19 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 57, 71, ),
+        /* 20 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 57, 71, ),
+        /* 21 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 57, 71, ),
+        /* 22 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 57, 71, ),
+        /* 23 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 57, 71, ),
+        /* 24 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 57, 71, ),
+        /* 25 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 57, 71, ),
+        /* 26 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 57, 71, ),
+        /* 27 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 57, 71, ),
+        /* 28 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 57, 71, ),
+        /* 29 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 57, 71, ),
+        /* 30 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 57, 71, ),
+        /* 31 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 57, 71, ),
+        /* 32 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 57, 71, ),
+        /* 33 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 57, 71, ),
+        /* 34 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 57, 71, ),
+        /* 35 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 57, 71, ),
+        /* 36 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 57, 71, ),
+        /* 37 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 57, 71, ),
+        /* 38 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 57, 71, ),
+        /* 39 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 57, 71, ),
+        /* 40 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 57, 71, ),
+        /* 41 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 57, 71, ),
+        /* 42 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 71, ),
+        /* 43 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 71, ),
+        /* 44 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 71, ),
+        /* 45 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 71, ),
+        /* 46 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 71, ),
+        /* 47 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 71, ),
+        /* 48 */ array(12, 14, 15, 18, 20, 25, 28, 29, 32, 46, 49, 50, 51, 52, 53, 56, 71, ),
+        /* 49 */ array(1, 13, 19, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, ),
+        /* 50 */ array(1, 19, 24, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, ),
+        /* 51 */ array(1, 13, 19, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, ),
+        /* 52 */ array(1, 19, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, ),
+        /* 53 */ array(1, 19, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, ),
+        /* 54 */ array(1, 13, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, ),
+        /* 55 */ array(1, 2, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, ),
+        /* 56 */ array(1, 13, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, ),
+        /* 57 */ array(1, 13, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, ),
+        /* 58 */ array(1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, ),
+        /* 59 */ array(1, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, ),
+        /* 60 */ array(1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 47, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, ),
+        /* 61 */ array(1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, ),
+        /* 62 */ array(1, 13, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, ),
+        /* 63 */ array(1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 47, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, ),
+        /* 64 */ array(1, 13, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, ),
+        /* 65 */ array(1, 21, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, ),
+        /* 66 */ array(1, 13, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, ),
+        /* 67 */ array(1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, ),
+        /* 68 */ array(1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, ),
+        /* 69 */ array(1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, ),
+        /* 70 */ array(1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, ),
+        /* 71 */ array(1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, ),
+        /* 72 */ array(1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, ),
+        /* 73 */ array(1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, ),
+        /* 74 */ array(1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, ),
+        /* 75 */ array(1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, ),
+        /* 76 */ array(1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, ),
+        /* 77 */ array(1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, ),
+        /* 78 */ array(1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, ),
+        /* 79 */ array(1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, ),
+        /* 80 */ array(1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, ),
+        /* 81 */ array(1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, ),
+        /* 82 */ array(1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, ),
+        /* 83 */ array(3, 4, 5, 6, 7, 8, 9, 12, 18, 20, 25, 28, ),
+        /* 84 */ array(8, 12, 18, 20, 25, 28, 71, 72, 73, ),
+        /* 85 */ array(1, 13, 17, 19, 46, 54, ),
+        /* 86 */ array(1, 13, 17, 19, ),
+        /* 87 */ array(14, 15, 56, ),
+        /* 88 */ array(17, 52, 57, ),
+        /* 89 */ array(2, 19, ),
+        /* 90 */ array(1, 19, ),
+        /* 91 */ array(2, 19, ),
+        /* 92 */ array(2, 19, ),
+        /* 93 */ array(8, 12, 18, 20, 25, 28, 71, 72, 73, ),
         /* 94 */ array(4, 5, 6, 9, 10, 11, ),
-        /* 95 */ array(8, 12, 28, 70, 71, 72, ),
-        /* 96 */ array(12, 15, 16, 23, ),
-        /* 97 */ array(12, 15, 16, 54, ),
-        /* 98 */ array(12, 15, 54, ),
-        /* 99 */ array(13, 20, 23, ),
-        /* 100 */ array(13, 20, 45, ),
-        /* 101 */ array(13, 20, 23, ),
-        /* 102 */ array(16, 18, 53, ),
+        /* 95 */ array(12, 15, 16, 55, ),
+        /* 96 */ array(12, 15, 16, 22, ),
+        /* 97 */ array(12, 15, 55, ),
+        /* 98 */ array(13, 19, 22, ),
+        /* 99 */ array(16, 17, 54, ),
+        /* 100 */ array(13, 19, 45, ),
+        /* 101 */ array(13, 19, 22, ),
+        /* 102 */ array(14, 15, ),
         /* 103 */ array(12, 15, ),
-        /* 104 */ array(18, 53, ),
-        /* 105 */ array(12, 15, ),
+        /* 104 */ array(12, 15, ),
+        /* 105 */ array(17, 54, ),
         /* 106 */ array(12, 15, ),
         /* 107 */ array(12, 15, ),
         /* 108 */ array(12, 15, ),
         /* 109 */ array(12, 15, ),
         /* 110 */ array(12, 15, ),
         /* 111 */ array(12, 15, ),
-        /* 112 */ array(14, 15, ),
+        /* 112 */ array(12, 15, ),
         /* 113 */ array(12, 15, ),
-        /* 114 */ array(12, 15, ),
+        /* 114 */ array(14, 15, ),
         /* 115 */ array(12, 15, ),
-        /* 116 */ array(18, ),
-        /* 117 */ array(14, ),
-        /* 118 */ array(20, ),
-        /* 119 */ array(20, ),
-        /* 120 */ array(20, ),
-        /* 121 */ array(20, ),
-        /* 122 */ array(18, ),
-        /* 123 */ array(12, 13, 15, 27, ),
-        /* 124 */ array(12, 13, 15, 27, ),
-        /* 125 */ array(15, 17, 19, 21, ),
-        /* 126 */ array(12, 15, 54, ),
-        /* 127 */ array(12, 13, 15, ),
-        /* 128 */ array(12, 13, 15, ),
-        /* 129 */ array(12, 15, 16, ),
-        /* 130 */ array(13, 20, ),
-        /* 131 */ array(13, 20, ),
-        /* 132 */ array(13, 20, ),
-        /* 133 */ array(12, 46, ),
-        /* 134 */ array(13, 20, ),
-        /* 135 */ array(51, 56, ),
-        /* 136 */ array(13, 20, ),
-        /* 137 */ array(13, 20, ),
-        /* 138 */ array(13, 20, ),
-        /* 139 */ array(51, 56, ),
-        /* 140 */ array(13, 20, ),
-        /* 141 */ array(13, 20, ),
-        /* 142 */ array(13, 20, ),
-        /* 143 */ array(13, 20, ),
-        /* 144 */ array(51, 56, ),
-        /* 145 */ array(51, 56, ),
-        /* 146 */ array(13, 20, ),
-        /* 147 */ array(51, 56, ),
-        /* 148 */ array(13, 20, ),
-        /* 149 */ array(13, 20, ),
-        /* 150 */ array(13, 20, ),
-        /* 151 */ array(13, 20, ),
-        /* 152 */ array(46, ),
-        /* 153 */ array(10, ),
-        /* 154 */ array(14, ),
-        /* 155 */ array(2, ),
-        /* 156 */ array(18, ),
-        /* 157 */ array(18, ),
-        /* 158 */ array(18, ),
-        /* 159 */ array(20, ),
-        /* 160 */ array(20, ),
-        /* 161 */ array(18, ),
-        /* 162 */ array(),
+        /* 116 */ array(12, 15, ),
+        /* 117 */ array(12, 15, ),
+        /* 118 */ array(19, ),
+        /* 119 */ array(19, ),
+        /* 120 */ array(17, ),
+        /* 121 */ array(19, ),
+        /* 122 */ array(17, ),
+        /* 123 */ array(14, ),
+        /* 124 */ array(19, ),
+        /* 125 */ array(12, 13, 15, 27, ),
+        /* 126 */ array(12, 13, 15, 27, ),
+        /* 127 */ array(12, 15, 16, ),
+        /* 128 */ array(12, 14, 15, ),
+        /* 129 */ array(12, 13, 15, ),
+        /* 130 */ array(12, 15, 55, ),
+        /* 131 */ array(12, 13, 15, ),
+        /* 132 */ array(13, 19, ),
+        /* 133 */ array(13, 19, ),
+        /* 134 */ array(13, 19, ),
+        /* 135 */ array(13, 19, ),
+        /* 136 */ array(52, 57, ),
+        /* 137 */ array(12, 46, ),
+        /* 138 */ array(52, 57, ),
+        /* 139 */ array(13, 19, ),
+        /* 140 */ array(13, 19, ),
+        /* 141 */ array(13, 19, ),
+        /* 142 */ array(13, 19, ),
+        /* 143 */ array(13, 19, ),
+        /* 144 */ array(52, 57, ),
+        /* 145 */ array(13, 19, ),
+        /* 146 */ array(52, 57, ),
+        /* 147 */ array(13, 19, ),
+        /* 148 */ array(13, 19, ),
+        /* 149 */ array(13, 19, ),
+        /* 150 */ array(13, 19, ),
+        /* 151 */ array(13, 19, ),
+        /* 152 */ array(13, 19, ),
+        /* 153 */ array(52, 57, ),
+        /* 154 */ array(19, ),
+        /* 155 */ array(46, ),
+        /* 156 */ array(17, ),
+        /* 157 */ array(17, ),
+        /* 158 */ array(10, ),
+        /* 159 */ array(14, ),
+        /* 160 */ array(2, ),
+        /* 161 */ array(17, ),
+        /* 162 */ array(19, ),
         /* 163 */ array(),
         /* 164 */ array(),
         /* 165 */ array(),
         /* 166 */ array(),
         /* 167 */ array(),
         /* 168 */ array(),
-        /* 169 */ array(46, 51, 53, 57, ),
-        /* 170 */ array(16, 26, 46, 53, ),
-        /* 171 */ array(13, 20, 46, 53, ),
-        /* 172 */ array(12, 14, 15, 29, ),
-        /* 173 */ array(27, 46, 53, ),
-        /* 174 */ array(13, 20, 45, ),
-        /* 175 */ array(46, 53, ),
-        /* 176 */ array(27, 45, ),
-        /* 177 */ array(46, 53, ),
-        /* 178 */ array(22, 30, ),
-        /* 179 */ array(16, 51, ),
-        /* 180 */ array(30, 57, ),
-        /* 181 */ array(23, 71, ),
-        /* 182 */ array(13, 45, ),
-        /* 183 */ array(15, 54, ),
-        /* 184 */ array(15, 29, ),
-        /* 185 */ array(2, 16, ),
+        /* 169 */ array(46, 52, 54, 58, ),
+        /* 170 */ array(12, 14, 15, 29, ),
+        /* 171 */ array(13, 19, 46, 54, ),
+        /* 172 */ array(16, 26, 46, 54, ),
+        /* 173 */ array(13, 19, 45, ),
+        /* 174 */ array(27, 46, 54, ),
+        /* 175 */ array(15, 55, ),
+        /* 176 */ array(46, 54, ),
+        /* 177 */ array(27, 45, ),
+        /* 178 */ array(46, 54, ),
+        /* 179 */ array(15, 29, ),
+        /* 180 */ array(16, 52, ),
+        /* 181 */ array(13, 45, ),
+        /* 182 */ array(2, 16, ),
+        /* 183 */ array(21, 30, ),
+        /* 184 */ array(30, 58, ),
+        /* 185 */ array(22, 72, ),
         /* 186 */ array(26, ),
-        /* 187 */ array(13, ),
+        /* 187 */ array(14, ),
         /* 188 */ array(14, ),
-        /* 189 */ array(24, ),
-        /* 190 */ array(47, ),
+        /* 189 */ array(15, ),
+        /* 190 */ array(26, ),
         /* 191 */ array(15, ),
-        /* 192 */ array(26, ),
-        /* 193 */ array(55, ),
+        /* 192 */ array(15, ),
+        /* 193 */ array(47, ),
         /* 194 */ array(14, ),
-        /* 195 */ array(55, ),
+        /* 195 */ array(14, ),
         /* 196 */ array(15, ),
         /* 197 */ array(14, ),
-        /* 198 */ array(57, ),
-        /* 199 */ array(23, ),
+        /* 198 */ array(58, ),
+        /* 199 */ array(13, ),
         /* 200 */ array(15, ),
-        /* 201 */ array(15, ),
-        /* 202 */ array(15, ),
-        /* 203 */ array(15, ),
-        /* 204 */ array(15, ),
-        /* 205 */ array(20, ),
-        /* 206 */ array(47, ),
-        /* 207 */ array(46, ),
-        /* 208 */ array(29, ),
-        /* 209 */ array(51, ),
-        /* 210 */ array(15, ),
-        /* 211 */ array(2, ),
-        /* 212 */ array(13, ),
-        /* 213 */ array(16, ),
-        /* 214 */ array(48, ),
-        /* 215 */ array(15, ),
-        /* 216 */ array(13, ),
-        /* 217 */ array(45, ),
-        /* 218 */ array(14, ),
-        /* 219 */ array(13, ),
-        /* 220 */ array(14, ),
-        /* 221 */ array(16, ),
-        /* 222 */ array(20, ),
-        /* 223 */ array(47, ),
-        /* 224 */ array(),
+        /* 201 */ array(56, ),
+        /* 202 */ array(19, ),
+        /* 203 */ array(56, ),
+        /* 204 */ array(29, ),
+        /* 205 */ array(19, ),
+        /* 206 */ array(15, ),
+        /* 207 */ array(13, ),
+        /* 208 */ array(47, ),
+        /* 209 */ array(15, ),
+        /* 210 */ array(47, ),
+        /* 211 */ array(46, ),
+        /* 212 */ array(16, ),
+        /* 213 */ array(48, ),
+        /* 214 */ array(2, ),
+        /* 215 */ array(52, ),
+        /* 216 */ array(23, ),
+        /* 217 */ array(46, ),
+        /* 218 */ array(13, ),
+        /* 219 */ array(22, ),
+        /* 220 */ array(16, ),
+        /* 221 */ array(29, ),
+        /* 222 */ array(45, ),
+        /* 223 */ array(15, ),
+        /* 224 */ array(15, ),
         /* 225 */ array(),
         /* 226 */ array(),
         /* 227 */ array(),
@@ -988,48 +1035,48 @@ static public $yy_action = array(
         /* 359 */ array(),
 );
     static public $yy_default = array(
- /*     0 */   546,  529,  546,  546,  546,  500,  546,  546,  546,  500,
- /*    10 */   500,  546,  500,  546,  546,  546,  546,  546,  546,  546,
- /*    20 */   546,  546,  546,  546,  546,  546,  546,  546,  546,  546,
- /*    30 */   546,  546,  546,  546,  546,  546,  546,  546,  546,  546,
- /*    40 */   546,  546,  546,  546,  546,  546,  546,  546,  546,  546,
- /*    50 */   418,  546,  418,  418,  546,  546,  546,  546,  546,  546,
- /*    60 */   546,  546,  499,  546,  546,  546,  546,  546,  427,  451,
- /*    70 */   440,  532,  448,  443,  447,  531,  438,  400,  435,  444,
- /*    80 */   530,  424,  439,  420,  360,  546,  459,  546,  508,  546,
- /*    90 */   418,  418,  418,  418,  546,  546,  546,  473,  473,  452,
- /*   100 */   428,  452,  466,  546,  466,  546,  546,  546,  546,  546,
- /*   110 */   546,  546,  546,  546,  546,  546,  503,  546,  418,  418,
- /*   120 */   418,  418,  504,  546,  546,  546,  474,  546,  546,  546,
- /*   130 */   546,  546,  546,  473,  546,  492,  546,  546,  546,  491,
- /*   140 */   546,  546,  546,  546,  493,  494,  546,  471,  546,  546,
- /*   150 */   546,  546,  473,  374,  546,  434,  509,  506,  487,  545,
- /*   160 */   545,  505,  511,  473,  511,  473,  473,  511,  511,  459,
- /*   170 */   423,  459,  546,  459,  428,  459,  428,  449,  546,  457,
- /*   180 */   546,  452,  428,  546,  546,  485,  546,  546,  546,  425,
- /*   190 */   546,  546,  546,  546,  546,  546,  546,  546,  546,  452,
- /*   200 */   546,  546,  546,  546,  546,  546,  546,  507,  546,  457,
- /*   210 */   546,  485,  546,  546,  461,  546,  546,  428,  546,  546,
- /*   220 */   546,  423,  546,  546,  477,  476,  361,  486,  495,  422,
- /*   230 */   461,  415,  539,  542,  537,  538,  534,  535,  543,  536,
- /*   240 */   497,  450,  482,  480,  481,  479,  533,  403,  544,  426,
- /*   250 */   401,  498,  399,  411,  410,  409,  402,  478,  496,  512,
- /*   260 */   513,  412,  385,  429,  464,  467,  472,  475,  458,  455,
- /*   270 */   510,  456,  453,  454,  484,  485,  490,  483,  468,  469,
- /*   280 */   465,  463,  430,  460,  431,  462,  417,  414,  368,  369,
- /*   290 */   370,  371,  367,  366,  362,  363,  364,  365,  372,  373,
- /*   300 */   381,  416,  408,  413,  380,  379,  375,  376,  377,  378,
- /*   310 */   470,  432,  388,  387,  389,  390,  488,  386,  384,  526,
- /*   320 */   528,  527,  541,  489,  391,  405,  406,  407,  397,  404,
- /*   330 */   392,  393,  394,  396,  395,  433,  525,  442,  445,  446,
- /*   340 */   501,  441,  437,  382,  540,  383,  436,  502,  514,  521,
- /*   350 */   522,  523,  524,  520,  519,  515,  516,  517,  518,  398,
+ /*     0 */   544,  527,  544,  500,  544,  544,  544,  544,  500,  544,
+ /*    10 */   544,  500,  500,  544,  544,  544,  544,  544,  544,  544,
+ /*    20 */   544,  544,  544,  544,  544,  544,  544,  544,  544,  544,
+ /*    30 */   544,  544,  544,  544,  544,  544,  544,  544,  544,  544,
+ /*    40 */   544,  544,  544,  544,  544,  544,  544,  544,  544,  544,
+ /*    50 */   414,  544,  414,  414,  544,  544,  544,  544,  544,  499,
+ /*    60 */   544,  544,  544,  544,  544,  544,  544,  399,  444,  528,
+ /*    70 */   420,  416,  435,  443,  436,  529,  423,  431,  447,  439,
+ /*    80 */   440,  434,  530,  360,  544,  458,  544,  544,  506,  414,
+ /*    90 */   414,  414,  414,  544,  544,  473,  544,  473,  448,  466,
+ /*   100 */   424,  448,  544,  544,  544,  466,  473,  544,  544,  544,
+ /*   110 */   544,  544,  544,  544,  544,  544,  544,  544,  414,  414,
+ /*   120 */   503,  414,  466,  544,  414,  544,  544,  544,  544,  544,
+ /*   130 */   474,  544,  544,  544,  544,  544,  490,  473,  493,  544,
+ /*   140 */   544,  544,  544,  544,  492,  544,  491,  544,  544,  544,
+ /*   150 */   544,  544,  544,  471,  543,  473,  507,  504,  374,  544,
+ /*   160 */   430,  487,  543,  509,  473,  509,  509,  473,  509,  458,
+ /*   170 */   544,  458,  419,  424,  458,  544,  445,  424,  458,  544,
+ /*   180 */   454,  424,  485,  544,  544,  448,  544,  544,  544,  544,
+ /*   190 */   544,  544,  544,  544,  544,  544,  544,  544,  544,  544,
+ /*   200 */   544,  544,  544,  544,  544,  544,  544,  544,  544,  544,
+ /*   210 */   544,  485,  419,  460,  485,  454,  421,  505,  544,  448,
+ /*   220 */   544,  456,  424,  544,  544,  481,  470,  482,  401,  402,
+ /*   230 */   368,  426,  480,  479,  367,  366,  381,  483,  363,  362,
+ /*   240 */   497,  361,  418,  476,  380,  397,  365,  494,  364,  469,
+ /*   250 */   460,  378,  486,  400,  542,  411,  442,  427,  373,  407,
+ /*   260 */   406,  477,  375,  377,  422,  372,  369,  495,  428,  478,
+ /*   270 */   457,  376,  446,  370,  511,  371,  510,  496,  441,  379,
+ /*   280 */   540,  437,  382,  538,  413,  508,  450,  449,  452,  410,
+ /*   290 */   383,  386,  467,  387,  385,  409,  539,  425,  384,  438,
+ /*   300 */   451,  517,  518,  519,  516,  515,  512,  513,  514,  520,
+ /*   310 */   521,  501,  489,  453,  468,  465,  522,  523,  429,  408,
+ /*   320 */   388,  535,  537,  502,  536,  463,  531,  532,  533,  541,
+ /*   330 */   534,  396,  432,  412,  525,  526,  455,  433,  524,  394,
+ /*   340 */   461,  389,  390,  488,  404,  472,  485,  484,  405,  403,
+ /*   350 */   464,  462,  395,  398,  475,  393,  391,  392,  459,  498,
 );
     const YYNOCODE = 116;
     const YYSTACKDEPTH = 100;
     const YYNSTATE = 360;
-    const YYNRULE = 186;
-    const YYERRORSYMBOL = 73;
+    const YYNRULE = 184;
+    const YYERRORSYMBOL = 74;
     const YYERRSYMDT = 'yy0';
     const YYFALLBACK = 0;
     static public $yyFallback = array(
@@ -1062,26 +1109,26 @@ static public $yy_action = array(
   'PHPSTARTTAG',   'PHPENDTAG',     'FAKEPHPSTARTTAG',  'XMLTAG',      
   'OTHER',         'LITERALSTART',  'LITERALEND',    'LITERAL',     
   'LDEL',          'RDEL',          'DOLLAR',        'ID',          
-  'EQUAL',         'FOREACH',       'PTR',           'IF',          
-  'SPACE',         'FOR',           'SEMICOLON',     'INCDEC',      
-  'TO',            'STEP',          'AS',            'APTR',        
+  'EQUAL',         'PTR',           'LDELIF',        'SPACE',       
+  'LDELFOR',       'SEMICOLON',     'INCDEC',        'TO',          
+  'STEP',          'LDELFOREACH',   'AS',            'APTR',        
   'LDELSLASH',     'INTEGER',       'COMMA',         'MATH',        
   'UNIMATH',       'ANDSYM',        'ISIN',          'ISDIVBY',     
   'ISNOTDIVBY',    'ISEVEN',        'ISNOTEVEN',     'ISEVENBY',    
   'ISNOTEVENBY',   'ISODD',         'ISNOTODD',      'ISODDBY',     
   'ISNOTODDBY',    'INSTANCEOF',    'OPENP',         'CLOSEP',      
-  'QMARK',         'NOT',           'TYPECAST',      'DOT',         
-  'SINGLEQUOTESTRING',  'DOUBLECOLON',   'AT',            'HATCH',       
-  'OPENB',         'CLOSEB',        'EQUALS',        'NOTEQUALS',   
-  'GREATERTHAN',   'LESSTHAN',      'GREATEREQUAL',  'LESSEQUAL',   
-  'IDENTITY',      'NONEIDENTITY',  'MOD',           'LAND',        
-  'LOR',           'LXOR',          'QUOTE',         'BACKTICK',    
-  'DOLLARID',      'error',         'start',         'template',    
-  'template_element',  'smartytag',     'literal',       'literal_elements',
-  'literal_element',  'value',         'attributes',    'variable',    
-  'expr',          'ternary',       'varindexed',    'modifier',    
-  'modparameters',  'statement',     'statements',    'optspace',    
-  'varvar',        'foraction',     'array',         'specialclose',
+  'QMARK',         'NOT',           'TYPECAST',      'HEX',         
+  'DOT',           'SINGLEQUOTESTRING',  'DOUBLECOLON',   'AT',          
+  'HATCH',         'OPENB',         'CLOSEB',        'EQUALS',      
+  'NOTEQUALS',     'GREATERTHAN',   'LESSTHAN',      'GREATEREQUAL',
+  'LESSEQUAL',     'IDENTITY',      'NONEIDENTITY',  'MOD',         
+  'LAND',          'LOR',           'LXOR',          'QUOTE',       
+  'BACKTICK',      'DOLLARID',      'error',         'start',       
+  'template',      'template_element',  'smartytag',     'literal',     
+  'literal_elements',  'literal_element',  'value',         'attributes',  
+  'variable',      'expr',          'ternary',       'varindexed',  
+  'modifier',      'modparameters',  'statement',     'statements',  
+  'optspace',      'varvar',        'foraction',     'array',       
   'attribute',     'ifcond',        'lop',           'function',    
   'doublequoted_with_quotes',  'static_class_access',  'object',        'arrayindex',  
   'indexdef',      'varvarele',     'objectchain',   'objectelement',
@@ -1122,79 +1169,79 @@ static public $yy_action = array(
  /*  29 */ "smartytag ::= LDEL varindexed EQUAL expr attributes RDEL",
  /*  30 */ "smartytag ::= LDEL varindexed EQUAL ternary attributes RDEL",
  /*  31 */ "smartytag ::= LDEL ID attributes RDEL",
- /*  32 */ "smartytag ::= LDEL FOREACH attributes RDEL",
- /*  33 */ "smartytag ::= LDEL ID RDEL",
- /*  34 */ "smartytag ::= LDEL ID PTR ID attributes RDEL",
- /*  35 */ "smartytag ::= LDEL ID modifier modparameters attributes RDEL",
- /*  36 */ "smartytag ::= LDEL ID PTR ID modifier modparameters attributes RDEL",
- /*  37 */ "smartytag ::= LDEL IF SPACE expr RDEL",
- /*  38 */ "smartytag ::= LDEL IF SPACE statement RDEL",
- /*  39 */ "smartytag ::= LDEL FOR SPACE statements SEMICOLON optspace expr SEMICOLON optspace DOLLAR varvar foraction RDEL",
- /*  40 */ "foraction ::= EQUAL expr",
- /*  41 */ "foraction ::= INCDEC",
- /*  42 */ "smartytag ::= LDEL FOR SPACE statement TO expr attributes RDEL",
- /*  43 */ "smartytag ::= LDEL FOR SPACE statement TO expr STEP expr RDEL",
- /*  44 */ "smartytag ::= LDEL FOREACH SPACE value AS DOLLAR varvar RDEL",
- /*  45 */ "smartytag ::= LDEL FOREACH SPACE value AS DOLLAR varvar APTR DOLLAR varvar RDEL",
- /*  46 */ "smartytag ::= LDEL FOREACH SPACE array AS DOLLAR varvar RDEL",
- /*  47 */ "smartytag ::= LDEL FOREACH SPACE array AS DOLLAR varvar APTR DOLLAR varvar RDEL",
+ /*  32 */ "smartytag ::= LDEL ID RDEL",
+ /*  33 */ "smartytag ::= LDEL ID PTR ID attributes RDEL",
+ /*  34 */ "smartytag ::= LDEL ID modifier modparameters attributes RDEL",
+ /*  35 */ "smartytag ::= LDEL ID PTR ID modifier modparameters attributes RDEL",
+ /*  36 */ "smartytag ::= LDELIF SPACE expr RDEL",
+ /*  37 */ "smartytag ::= LDELIF SPACE statement RDEL",
+ /*  38 */ "smartytag ::= LDELFOR SPACE statements SEMICOLON optspace expr SEMICOLON optspace DOLLAR varvar foraction RDEL",
+ /*  39 */ "foraction ::= EQUAL expr",
+ /*  40 */ "foraction ::= INCDEC",
+ /*  41 */ "smartytag ::= LDELFOR SPACE statement TO expr attributes RDEL",
+ /*  42 */ "smartytag ::= LDELFOR SPACE statement TO expr STEP expr RDEL",
+ /*  43 */ "smartytag ::= LDELFOREACH attributes RDEL",
+ /*  44 */ "smartytag ::= LDELFOREACH SPACE value AS DOLLAR varvar RDEL",
+ /*  45 */ "smartytag ::= LDELFOREACH SPACE value AS DOLLAR varvar APTR DOLLAR varvar RDEL",
+ /*  46 */ "smartytag ::= LDELFOREACH SPACE array AS DOLLAR varvar RDEL",
+ /*  47 */ "smartytag ::= LDELFOREACH SPACE array AS DOLLAR varvar APTR DOLLAR varvar RDEL",
  /*  48 */ "smartytag ::= LDELSLASH ID RDEL",
- /*  49 */ "smartytag ::= LDELSLASH specialclose RDEL",
- /*  50 */ "specialclose ::= IF",
- /*  51 */ "specialclose ::= FOR",
- /*  52 */ "specialclose ::= FOREACH",
- /*  53 */ "smartytag ::= LDELSLASH ID attributes RDEL",
- /*  54 */ "smartytag ::= LDELSLASH ID modifier modparameters attributes RDEL",
- /*  55 */ "smartytag ::= LDELSLASH ID PTR ID RDEL",
- /*  56 */ "attributes ::= attributes attribute",
- /*  57 */ "attributes ::= attribute",
- /*  58 */ "attributes ::=",
- /*  59 */ "attribute ::= SPACE ID EQUAL ID",
- /*  60 */ "attribute ::= SPACE ID EQUAL expr",
- /*  61 */ "attribute ::= SPACE ID EQUAL value",
- /*  62 */ "attribute ::= SPACE ID EQUAL ternary",
- /*  63 */ "attribute ::= SPACE ID",
- /*  64 */ "attribute ::= SPACE INTEGER EQUAL expr",
- /*  65 */ "statements ::= statement",
- /*  66 */ "statements ::= statements COMMA statement",
- /*  67 */ "statement ::= DOLLAR varvar EQUAL expr",
- /*  68 */ "expr ::= value",
- /*  69 */ "expr ::= DOLLAR ID COLON ID",
- /*  70 */ "expr ::= expr MATH value",
- /*  71 */ "expr ::= expr UNIMATH value",
- /*  72 */ "expr ::= expr ANDSYM value",
- /*  73 */ "expr ::= array",
- /*  74 */ "expr ::= expr modifier modparameters",
- /*  75 */ "expr ::= expr ifcond expr",
- /*  76 */ "expr ::= expr ISIN array",
- /*  77 */ "expr ::= expr ISIN value",
- /*  78 */ "expr ::= expr lop expr",
- /*  79 */ "expr ::= expr ISDIVBY expr",
- /*  80 */ "expr ::= expr ISNOTDIVBY expr",
- /*  81 */ "expr ::= expr ISEVEN",
- /*  82 */ "expr ::= expr ISNOTEVEN",
- /*  83 */ "expr ::= expr ISEVENBY expr",
- /*  84 */ "expr ::= expr ISNOTEVENBY expr",
- /*  85 */ "expr ::= expr ISODD",
- /*  86 */ "expr ::= expr ISNOTODD",
- /*  87 */ "expr ::= expr ISODDBY expr",
- /*  88 */ "expr ::= expr ISNOTODDBY expr",
- /*  89 */ "expr ::= value INSTANCEOF ID",
- /*  90 */ "expr ::= value INSTANCEOF value",
- /*  91 */ "ternary ::= OPENP expr CLOSEP QMARK expr COLON expr",
- /*  92 */ "value ::= variable",
- /*  93 */ "value ::= UNIMATH value",
- /*  94 */ "value ::= NOT value",
- /*  95 */ "value ::= TYPECAST value",
- /*  96 */ "value ::= variable INCDEC",
- /*  97 */ "value ::= INTEGER",
- /*  98 */ "value ::= INTEGER DOT INTEGER",
- /*  99 */ "value ::= ID",
- /* 100 */ "value ::= function",
- /* 101 */ "value ::= OPENP expr CLOSEP",
- /* 102 */ "value ::= SINGLEQUOTESTRING",
- /* 103 */ "value ::= doublequoted_with_quotes",
- /* 104 */ "value ::= ID DOUBLECOLON static_class_access",
+ /*  49 */ "smartytag ::= LDELSLASH ID attributes RDEL",
+ /*  50 */ "smartytag ::= LDELSLASH ID modifier modparameters attributes RDEL",
+ /*  51 */ "smartytag ::= LDELSLASH ID PTR ID RDEL",
+ /*  52 */ "attributes ::= attributes attribute",
+ /*  53 */ "attributes ::= attribute",
+ /*  54 */ "attributes ::=",
+ /*  55 */ "attribute ::= SPACE ID EQUAL ID",
+ /*  56 */ "attribute ::= SPACE ID EQUAL expr",
+ /*  57 */ "attribute ::= SPACE ID EQUAL value",
+ /*  58 */ "attribute ::= SPACE ID EQUAL ternary",
+ /*  59 */ "attribute ::= SPACE ID",
+ /*  60 */ "attribute ::= SPACE INTEGER EQUAL expr",
+ /*  61 */ "statements ::= statement",
+ /*  62 */ "statements ::= statements COMMA statement",
+ /*  63 */ "statement ::= DOLLAR varvar EQUAL expr",
+ /*  64 */ "expr ::= value",
+ /*  65 */ "expr ::= DOLLAR ID COLON ID",
+ /*  66 */ "expr ::= expr MATH value",
+ /*  67 */ "expr ::= expr UNIMATH value",
+ /*  68 */ "expr ::= expr ANDSYM value",
+ /*  69 */ "expr ::= array",
+ /*  70 */ "expr ::= expr modifier modparameters",
+ /*  71 */ "expr ::= expr ifcond expr",
+ /*  72 */ "expr ::= expr ISIN array",
+ /*  73 */ "expr ::= expr ISIN value",
+ /*  74 */ "expr ::= expr lop expr",
+ /*  75 */ "expr ::= expr ISDIVBY expr",
+ /*  76 */ "expr ::= expr ISNOTDIVBY expr",
+ /*  77 */ "expr ::= expr ISEVEN",
+ /*  78 */ "expr ::= expr ISNOTEVEN",
+ /*  79 */ "expr ::= expr ISEVENBY expr",
+ /*  80 */ "expr ::= expr ISNOTEVENBY expr",
+ /*  81 */ "expr ::= expr ISODD",
+ /*  82 */ "expr ::= expr ISNOTODD",
+ /*  83 */ "expr ::= expr ISODDBY expr",
+ /*  84 */ "expr ::= expr ISNOTODDBY expr",
+ /*  85 */ "expr ::= value INSTANCEOF ID",
+ /*  86 */ "expr ::= value INSTANCEOF value",
+ /*  87 */ "ternary ::= OPENP expr CLOSEP QMARK expr COLON expr",
+ /*  88 */ "value ::= variable",
+ /*  89 */ "value ::= UNIMATH value",
+ /*  90 */ "value ::= NOT value",
+ /*  91 */ "value ::= TYPECAST value",
+ /*  92 */ "value ::= variable INCDEC",
+ /*  93 */ "value ::= HEX",
+ /*  94 */ "value ::= INTEGER",
+ /*  95 */ "value ::= INTEGER DOT INTEGER",
+ /*  96 */ "value ::= INTEGER DOT",
+ /*  97 */ "value ::= DOT INTEGER",
+ /*  98 */ "value ::= ID",
+ /*  99 */ "value ::= function",
+ /* 100 */ "value ::= OPENP expr CLOSEP",
+ /* 101 */ "value ::= SINGLEQUOTESTRING",
+ /* 102 */ "value ::= doublequoted_with_quotes",
+ /* 103 */ "value ::= ID DOUBLECOLON static_class_access",
+ /* 104 */ "value ::= varindexed DOUBLECOLON static_class_access",
  /* 105 */ "value ::= smartytag",
  /* 106 */ "variable ::= varindexed",
  /* 107 */ "variable ::= DOLLAR varvar AT ID",
@@ -1218,64 +1265,62 @@ static public $yy_action = array(
  /* 125 */ "varvarele ::= ID",
  /* 126 */ "varvarele ::= LDEL expr RDEL",
  /* 127 */ "object ::= varindexed objectchain",
- /* 128 */ "object ::= varindexed DOUBLECOLON ID",
- /* 129 */ "objectchain ::= objectelement",
- /* 130 */ "objectchain ::= objectchain objectelement",
- /* 131 */ "objectelement ::= PTR ID arrayindex",
- /* 132 */ "objectelement ::= PTR variable arrayindex",
- /* 133 */ "objectelement ::= PTR LDEL expr RDEL arrayindex",
- /* 134 */ "objectelement ::= PTR ID LDEL expr RDEL arrayindex",
- /* 135 */ "objectelement ::= PTR method",
- /* 136 */ "function ::= ID OPENP params CLOSEP",
- /* 137 */ "method ::= ID OPENP params CLOSEP",
+ /* 128 */ "objectchain ::= objectelement",
+ /* 129 */ "objectchain ::= objectchain objectelement",
+ /* 130 */ "objectelement ::= PTR ID arrayindex",
+ /* 131 */ "objectelement ::= PTR DOLLAR varvar arrayindex",
+ /* 132 */ "objectelement ::= PTR LDEL expr RDEL arrayindex",
+ /* 133 */ "objectelement ::= PTR ID LDEL expr RDEL arrayindex",
+ /* 134 */ "objectelement ::= PTR method",
+ /* 135 */ "function ::= ID OPENP params CLOSEP",
+ /* 136 */ "method ::= ID OPENP params CLOSEP",
+ /* 137 */ "method ::= DOLLAR ID OPENP params CLOSEP",
  /* 138 */ "params ::= expr COMMA params",
  /* 139 */ "params ::= expr",
  /* 140 */ "params ::=",
  /* 141 */ "modifier ::= VERT AT ID",
  /* 142 */ "modifier ::= VERT ID",
  /* 143 */ "static_class_access ::= method",
- /* 144 */ "static_class_access ::= DOLLAR ID OPENP params CLOSEP",
- /* 145 */ "static_class_access ::= method objectchain",
- /* 146 */ "static_class_access ::= DOLLAR ID OPENP params CLOSEP objectchain",
- /* 147 */ "static_class_access ::= ID",
- /* 148 */ "static_class_access ::= DOLLAR ID arrayindex",
- /* 149 */ "static_class_access ::= DOLLAR ID arrayindex objectchain",
- /* 150 */ "modparameters ::= modparameters modparameter",
- /* 151 */ "modparameters ::=",
- /* 152 */ "modparameter ::= COLON value",
- /* 153 */ "modparameter ::= COLON array",
- /* 154 */ "ifcond ::= EQUALS",
- /* 155 */ "ifcond ::= NOTEQUALS",
- /* 156 */ "ifcond ::= GREATERTHAN",
- /* 157 */ "ifcond ::= LESSTHAN",
- /* 158 */ "ifcond ::= GREATEREQUAL",
- /* 159 */ "ifcond ::= LESSEQUAL",
- /* 160 */ "ifcond ::= IDENTITY",
- /* 161 */ "ifcond ::= NONEIDENTITY",
- /* 162 */ "ifcond ::= MOD",
- /* 163 */ "lop ::= LAND",
- /* 164 */ "lop ::= LOR",
- /* 165 */ "lop ::= LXOR",
- /* 166 */ "array ::= OPENB arrayelements CLOSEB",
- /* 167 */ "arrayelements ::= arrayelement",
- /* 168 */ "arrayelements ::= arrayelements COMMA arrayelement",
- /* 169 */ "arrayelements ::=",
- /* 170 */ "arrayelement ::= value APTR expr",
- /* 171 */ "arrayelement ::= ID APTR expr",
- /* 172 */ "arrayelement ::= expr",
- /* 173 */ "doublequoted_with_quotes ::= QUOTE QUOTE",
- /* 174 */ "doublequoted_with_quotes ::= QUOTE doublequoted QUOTE",
- /* 175 */ "doublequoted ::= doublequoted doublequotedcontent",
- /* 176 */ "doublequoted ::= doublequotedcontent",
- /* 177 */ "doublequotedcontent ::= BACKTICK variable BACKTICK",
- /* 178 */ "doublequotedcontent ::= BACKTICK expr BACKTICK",
- /* 179 */ "doublequotedcontent ::= DOLLARID",
- /* 180 */ "doublequotedcontent ::= LDEL variable RDEL",
- /* 181 */ "doublequotedcontent ::= LDEL expr RDEL",
- /* 182 */ "doublequotedcontent ::= smartytag",
- /* 183 */ "doublequotedcontent ::= OTHER",
- /* 184 */ "optspace ::= SPACE",
- /* 185 */ "optspace ::=",
+ /* 144 */ "static_class_access ::= method objectchain",
+ /* 145 */ "static_class_access ::= ID",
+ /* 146 */ "static_class_access ::= DOLLAR ID arrayindex",
+ /* 147 */ "static_class_access ::= DOLLAR ID arrayindex objectchain",
+ /* 148 */ "modparameters ::= modparameters modparameter",
+ /* 149 */ "modparameters ::=",
+ /* 150 */ "modparameter ::= COLON value",
+ /* 151 */ "modparameter ::= COLON array",
+ /* 152 */ "ifcond ::= EQUALS",
+ /* 153 */ "ifcond ::= NOTEQUALS",
+ /* 154 */ "ifcond ::= GREATERTHAN",
+ /* 155 */ "ifcond ::= LESSTHAN",
+ /* 156 */ "ifcond ::= GREATEREQUAL",
+ /* 157 */ "ifcond ::= LESSEQUAL",
+ /* 158 */ "ifcond ::= IDENTITY",
+ /* 159 */ "ifcond ::= NONEIDENTITY",
+ /* 160 */ "ifcond ::= MOD",
+ /* 161 */ "lop ::= LAND",
+ /* 162 */ "lop ::= LOR",
+ /* 163 */ "lop ::= LXOR",
+ /* 164 */ "array ::= OPENB arrayelements CLOSEB",
+ /* 165 */ "arrayelements ::= arrayelement",
+ /* 166 */ "arrayelements ::= arrayelements COMMA arrayelement",
+ /* 167 */ "arrayelements ::=",
+ /* 168 */ "arrayelement ::= value APTR expr",
+ /* 169 */ "arrayelement ::= ID APTR expr",
+ /* 170 */ "arrayelement ::= expr",
+ /* 171 */ "doublequoted_with_quotes ::= QUOTE QUOTE",
+ /* 172 */ "doublequoted_with_quotes ::= QUOTE doublequoted QUOTE",
+ /* 173 */ "doublequoted ::= doublequoted doublequotedcontent",
+ /* 174 */ "doublequoted ::= doublequotedcontent",
+ /* 175 */ "doublequotedcontent ::= BACKTICK variable BACKTICK",
+ /* 176 */ "doublequotedcontent ::= BACKTICK expr BACKTICK",
+ /* 177 */ "doublequotedcontent ::= DOLLARID",
+ /* 178 */ "doublequotedcontent ::= LDEL variable RDEL",
+ /* 179 */ "doublequotedcontent ::= LDEL expr RDEL",
+ /* 180 */ "doublequotedcontent ::= smartytag",
+ /* 181 */ "doublequotedcontent ::= OTHER",
+ /* 182 */ "optspace ::= SPACE",
+ /* 183 */ "optspace ::=",
     );
 
     function tokenName($tokenType)
@@ -1316,7 +1361,7 @@ static public $yy_action = array(
 
     function __destruct()
     {
-        while ($this->yyidx >= 0) {
+        while ($this->yystack !== Array()) {
             $this->yy_pop_parser_stack();
         }
         if (is_resource(self::$yyTraceFILE)) {
@@ -1352,7 +1397,7 @@ static public $yy_action = array(
                         $this->yystack[$this->yyidx]->stateno,
                         self::$yyRuleInfo[$yyruleno]['lhs']);
                     if (isset(self::$yyExpectedTokens[$nextstate])) {
-                        $expected += self::$yyExpectedTokens[$nextstate];
+		        $expected = array_merge($expected, self::$yyExpectedTokens[$nextstate]);
                             if (in_array($token,
                                   self::$yyExpectedTokens[$nextstate], true)) {
                             $this->yyidx = $yyidx;
@@ -1387,6 +1432,8 @@ static public $yy_action = array(
             }
             break;
         } while (true);
+	$this->yyidx = $yyidx;
+	$this->yystack = $stack;
         return array_unique($expected);
     }
 
@@ -1529,6 +1576,11 @@ static public $yy_action = array(
             while ($this->yyidx >= 0) {
                 $this->yy_pop_parser_stack();
             }
+#line 80 "smarty_internal_templateparser.y"
+
+    $this->internalError = true;
+    $this->compiler->trigger_template_error("Stack overflow in template parser");
+#line 1579 "smarty_internal_templateparser.php"
             return;
         }
         $yytos = new TP_yyStackEntry;
@@ -1549,118 +1601,118 @@ static public $yy_action = array(
     }
 
     static public $yyRuleInfo = array(
-  array( 'lhs' => 74, 'rhs' => 1 ),
   array( 'lhs' => 75, 'rhs' => 1 ),
-  array( 'lhs' => 75, 'rhs' => 2 ),
-  array( 'lhs' => 76, 'rhs' => 1 ),
-  array( 'lhs' => 76, 'rhs' => 1 ),
-  array( 'lhs' => 76, 'rhs' => 1 ),
-  array( 'lhs' => 76, 'rhs' => 1 ),
-  array( 'lhs' => 76, 'rhs' => 1 ),
-  array( 'lhs' => 76, 'rhs' => 1 ),
-  array( 'lhs' => 76, 'rhs' => 1 ),
   array( 'lhs' => 76, 'rhs' => 1 ),
-  array( 'lhs' => 78, 'rhs' => 2 ),
-  array( 'lhs' => 78, 'rhs' => 3 ),
+  array( 'lhs' => 76, 'rhs' => 2 ),
+  array( 'lhs' => 77, 'rhs' => 1 ),
+  array( 'lhs' => 77, 'rhs' => 1 ),
+  array( 'lhs' => 77, 'rhs' => 1 ),
+  array( 'lhs' => 77, 'rhs' => 1 ),
+  array( 'lhs' => 77, 'rhs' => 1 ),
+  array( 'lhs' => 77, 'rhs' => 1 ),
+  array( 'lhs' => 77, 'rhs' => 1 ),
+  array( 'lhs' => 77, 'rhs' => 1 ),
   array( 'lhs' => 79, 'rhs' => 2 ),
-  array( 'lhs' => 79, 'rhs' => 0 ),
-  array( 'lhs' => 80, 'rhs' => 1 ),
-  array( 'lhs' => 80, 'rhs' => 1 ),
-  array( 'lhs' => 80, 'rhs' => 1 ),
-  array( 'lhs' => 80, 'rhs' => 1 ),
-  array( 'lhs' => 80, 'rhs' => 1 ),
-  array( 'lhs' => 77, 'rhs' => 3 ),
-  array( 'lhs' => 77, 'rhs' => 4 ),
-  array( 'lhs' => 77, 'rhs' => 4 ),
-  array( 'lhs' => 77, 'rhs' => 4 ),
-  array( 'lhs' => 77, 'rhs' => 4 ),
-  array( 'lhs' => 77, 'rhs' => 6 ),
-  array( 'lhs' => 77, 'rhs' => 6 ),
-  array( 'lhs' => 77, 'rhs' => 7 ),
-  array( 'lhs' => 77, 'rhs' => 7 ),
-  array( 'lhs' => 77, 'rhs' => 6 ),
-  array( 'lhs' => 77, 'rhs' => 6 ),
-  array( 'lhs' => 77, 'rhs' => 4 ),
-  array( 'lhs' => 77, 'rhs' => 4 ),
-  array( 'lhs' => 77, 'rhs' => 3 ),
-  array( 'lhs' => 77, 'rhs' => 6 ),
-  array( 'lhs' => 77, 'rhs' => 6 ),
-  array( 'lhs' => 77, 'rhs' => 8 ),
-  array( 'lhs' => 77, 'rhs' => 5 ),
-  array( 'lhs' => 77, 'rhs' => 5 ),
-  array( 'lhs' => 77, 'rhs' => 13 ),
-  array( 'lhs' => 93, 'rhs' => 2 ),
-  array( 'lhs' => 93, 'rhs' => 1 ),
-  array( 'lhs' => 77, 'rhs' => 8 ),
-  array( 'lhs' => 77, 'rhs' => 9 ),
-  array( 'lhs' => 77, 'rhs' => 8 ),
-  array( 'lhs' => 77, 'rhs' => 11 ),
-  array( 'lhs' => 77, 'rhs' => 8 ),
-  array( 'lhs' => 77, 'rhs' => 11 ),
-  array( 'lhs' => 77, 'rhs' => 3 ),
-  array( 'lhs' => 77, 'rhs' => 3 ),
-  array( 'lhs' => 95, 'rhs' => 1 ),
-  array( 'lhs' => 95, 'rhs' => 1 ),
-  array( 'lhs' => 95, 'rhs' => 1 ),
-  array( 'lhs' => 77, 'rhs' => 4 ),
-  array( 'lhs' => 77, 'rhs' => 6 ),
-  array( 'lhs' => 77, 'rhs' => 5 ),
-  array( 'lhs' => 82, 'rhs' => 2 ),
-  array( 'lhs' => 82, 'rhs' => 1 ),
-  array( 'lhs' => 82, 'rhs' => 0 ),
+  array( 'lhs' => 79, 'rhs' => 3 ),
+  array( 'lhs' => 80, 'rhs' => 2 ),
+  array( 'lhs' => 80, 'rhs' => 0 ),
+  array( 'lhs' => 81, 'rhs' => 1 ),
+  array( 'lhs' => 81, 'rhs' => 1 ),
+  array( 'lhs' => 81, 'rhs' => 1 ),
+  array( 'lhs' => 81, 'rhs' => 1 ),
+  array( 'lhs' => 81, 'rhs' => 1 ),
+  array( 'lhs' => 78, 'rhs' => 3 ),
+  array( 'lhs' => 78, 'rhs' => 4 ),
+  array( 'lhs' => 78, 'rhs' => 4 ),
+  array( 'lhs' => 78, 'rhs' => 4 ),
+  array( 'lhs' => 78, 'rhs' => 4 ),
+  array( 'lhs' => 78, 'rhs' => 6 ),
+  array( 'lhs' => 78, 'rhs' => 6 ),
+  array( 'lhs' => 78, 'rhs' => 7 ),
+  array( 'lhs' => 78, 'rhs' => 7 ),
+  array( 'lhs' => 78, 'rhs' => 6 ),
+  array( 'lhs' => 78, 'rhs' => 6 ),
+  array( 'lhs' => 78, 'rhs' => 4 ),
+  array( 'lhs' => 78, 'rhs' => 3 ),
+  array( 'lhs' => 78, 'rhs' => 6 ),
+  array( 'lhs' => 78, 'rhs' => 6 ),
+  array( 'lhs' => 78, 'rhs' => 8 ),
+  array( 'lhs' => 78, 'rhs' => 4 ),
+  array( 'lhs' => 78, 'rhs' => 4 ),
+  array( 'lhs' => 78, 'rhs' => 12 ),
+  array( 'lhs' => 94, 'rhs' => 2 ),
+  array( 'lhs' => 94, 'rhs' => 1 ),
+  array( 'lhs' => 78, 'rhs' => 7 ),
+  array( 'lhs' => 78, 'rhs' => 8 ),
+  array( 'lhs' => 78, 'rhs' => 3 ),
+  array( 'lhs' => 78, 'rhs' => 7 ),
+  array( 'lhs' => 78, 'rhs' => 10 ),
+  array( 'lhs' => 78, 'rhs' => 7 ),
+  array( 'lhs' => 78, 'rhs' => 10 ),
+  array( 'lhs' => 78, 'rhs' => 3 ),
+  array( 'lhs' => 78, 'rhs' => 4 ),
+  array( 'lhs' => 78, 'rhs' => 6 ),
+  array( 'lhs' => 78, 'rhs' => 5 ),
+  array( 'lhs' => 83, 'rhs' => 2 ),
+  array( 'lhs' => 83, 'rhs' => 1 ),
+  array( 'lhs' => 83, 'rhs' => 0 ),
   array( 'lhs' => 96, 'rhs' => 4 ),
   array( 'lhs' => 96, 'rhs' => 4 ),
   array( 'lhs' => 96, 'rhs' => 4 ),
   array( 'lhs' => 96, 'rhs' => 4 ),
   array( 'lhs' => 96, 'rhs' => 2 ),
   array( 'lhs' => 96, 'rhs' => 4 ),
-  array( 'lhs' => 90, 'rhs' => 1 ),
-  array( 'lhs' => 90, 'rhs' => 3 ),
-  array( 'lhs' => 89, 'rhs' => 4 ),
+  array( 'lhs' => 91, 'rhs' => 1 ),
+  array( 'lhs' => 91, 'rhs' => 3 ),
+  array( 'lhs' => 90, 'rhs' => 4 ),
+  array( 'lhs' => 85, 'rhs' => 1 ),
+  array( 'lhs' => 85, 'rhs' => 4 ),
+  array( 'lhs' => 85, 'rhs' => 3 ),
+  array( 'lhs' => 85, 'rhs' => 3 ),
+  array( 'lhs' => 85, 'rhs' => 3 ),
+  array( 'lhs' => 85, 'rhs' => 1 ),
+  array( 'lhs' => 85, 'rhs' => 3 ),
+  array( 'lhs' => 85, 'rhs' => 3 ),
+  array( 'lhs' => 85, 'rhs' => 3 ),
+  array( 'lhs' => 85, 'rhs' => 3 ),
+  array( 'lhs' => 85, 'rhs' => 3 ),
+  array( 'lhs' => 85, 'rhs' => 3 ),
+  array( 'lhs' => 85, 'rhs' => 3 ),
+  array( 'lhs' => 85, 'rhs' => 2 ),
+  array( 'lhs' => 85, 'rhs' => 2 ),
+  array( 'lhs' => 85, 'rhs' => 3 ),
+  array( 'lhs' => 85, 'rhs' => 3 ),
+  array( 'lhs' => 85, 'rhs' => 2 ),
+  array( 'lhs' => 85, 'rhs' => 2 ),
+  array( 'lhs' => 85, 'rhs' => 3 ),
+  array( 'lhs' => 85, 'rhs' => 3 ),
+  array( 'lhs' => 85, 'rhs' => 3 ),
+  array( 'lhs' => 85, 'rhs' => 3 ),
+  array( 'lhs' => 86, 'rhs' => 7 ),
+  array( 'lhs' => 82, 'rhs' => 1 ),
+  array( 'lhs' => 82, 'rhs' => 2 ),
+  array( 'lhs' => 82, 'rhs' => 2 ),
+  array( 'lhs' => 82, 'rhs' => 2 ),
+  array( 'lhs' => 82, 'rhs' => 2 ),
+  array( 'lhs' => 82, 'rhs' => 1 ),
+  array( 'lhs' => 82, 'rhs' => 1 ),
+  array( 'lhs' => 82, 'rhs' => 3 ),
+  array( 'lhs' => 82, 'rhs' => 2 ),
+  array( 'lhs' => 82, 'rhs' => 2 ),
+  array( 'lhs' => 82, 'rhs' => 1 ),
+  array( 'lhs' => 82, 'rhs' => 1 ),
+  array( 'lhs' => 82, 'rhs' => 3 ),
+  array( 'lhs' => 82, 'rhs' => 1 ),
+  array( 'lhs' => 82, 'rhs' => 1 ),
+  array( 'lhs' => 82, 'rhs' => 3 ),
+  array( 'lhs' => 82, 'rhs' => 3 ),
+  array( 'lhs' => 82, 'rhs' => 1 ),
   array( 'lhs' => 84, 'rhs' => 1 ),
   array( 'lhs' => 84, 'rhs' => 4 ),
-  array( 'lhs' => 84, 'rhs' => 3 ),
-  array( 'lhs' => 84, 'rhs' => 3 ),
-  array( 'lhs' => 84, 'rhs' => 3 ),
   array( 'lhs' => 84, 'rhs' => 1 ),
   array( 'lhs' => 84, 'rhs' => 3 ),
   array( 'lhs' => 84, 'rhs' => 3 ),
-  array( 'lhs' => 84, 'rhs' => 3 ),
-  array( 'lhs' => 84, 'rhs' => 3 ),
-  array( 'lhs' => 84, 'rhs' => 3 ),
-  array( 'lhs' => 84, 'rhs' => 3 ),
-  array( 'lhs' => 84, 'rhs' => 3 ),
-  array( 'lhs' => 84, 'rhs' => 2 ),
-  array( 'lhs' => 84, 'rhs' => 2 ),
-  array( 'lhs' => 84, 'rhs' => 3 ),
-  array( 'lhs' => 84, 'rhs' => 3 ),
-  array( 'lhs' => 84, 'rhs' => 2 ),
-  array( 'lhs' => 84, 'rhs' => 2 ),
-  array( 'lhs' => 84, 'rhs' => 3 ),
-  array( 'lhs' => 84, 'rhs' => 3 ),
-  array( 'lhs' => 84, 'rhs' => 3 ),
-  array( 'lhs' => 84, 'rhs' => 3 ),
-  array( 'lhs' => 85, 'rhs' => 7 ),
-  array( 'lhs' => 81, 'rhs' => 1 ),
-  array( 'lhs' => 81, 'rhs' => 2 ),
-  array( 'lhs' => 81, 'rhs' => 2 ),
-  array( 'lhs' => 81, 'rhs' => 2 ),
-  array( 'lhs' => 81, 'rhs' => 2 ),
-  array( 'lhs' => 81, 'rhs' => 1 ),
-  array( 'lhs' => 81, 'rhs' => 3 ),
-  array( 'lhs' => 81, 'rhs' => 1 ),
-  array( 'lhs' => 81, 'rhs' => 1 ),
-  array( 'lhs' => 81, 'rhs' => 3 ),
-  array( 'lhs' => 81, 'rhs' => 1 ),
-  array( 'lhs' => 81, 'rhs' => 1 ),
-  array( 'lhs' => 81, 'rhs' => 3 ),
-  array( 'lhs' => 81, 'rhs' => 1 ),
-  array( 'lhs' => 83, 'rhs' => 1 ),
-  array( 'lhs' => 83, 'rhs' => 4 ),
-  array( 'lhs' => 83, 'rhs' => 1 ),
-  array( 'lhs' => 83, 'rhs' => 3 ),
-  array( 'lhs' => 83, 'rhs' => 3 ),
-  array( 'lhs' => 86, 'rhs' => 3 ),
+  array( 'lhs' => 87, 'rhs' => 3 ),
   array( 'lhs' => 103, 'rhs' => 2 ),
   array( 'lhs' => 103, 'rhs' => 0 ),
   array( 'lhs' => 104, 'rhs' => 3 ),
@@ -1672,35 +1724,33 @@ static public $yy_action = array(
   array( 'lhs' => 104, 'rhs' => 5 ),
   array( 'lhs' => 104, 'rhs' => 3 ),
   array( 'lhs' => 104, 'rhs' => 2 ),
-  array( 'lhs' => 92, 'rhs' => 1 ),
-  array( 'lhs' => 92, 'rhs' => 2 ),
+  array( 'lhs' => 93, 'rhs' => 1 ),
+  array( 'lhs' => 93, 'rhs' => 2 ),
   array( 'lhs' => 105, 'rhs' => 1 ),
   array( 'lhs' => 105, 'rhs' => 3 ),
   array( 'lhs' => 102, 'rhs' => 2 ),
-  array( 'lhs' => 102, 'rhs' => 3 ),
   array( 'lhs' => 106, 'rhs' => 1 ),
   array( 'lhs' => 106, 'rhs' => 2 ),
   array( 'lhs' => 107, 'rhs' => 3 ),
-  array( 'lhs' => 107, 'rhs' => 3 ),
+  array( 'lhs' => 107, 'rhs' => 4 ),
   array( 'lhs' => 107, 'rhs' => 5 ),
   array( 'lhs' => 107, 'rhs' => 6 ),
   array( 'lhs' => 107, 'rhs' => 2 ),
   array( 'lhs' => 99, 'rhs' => 4 ),
   array( 'lhs' => 108, 'rhs' => 4 ),
+  array( 'lhs' => 108, 'rhs' => 5 ),
   array( 'lhs' => 109, 'rhs' => 3 ),
   array( 'lhs' => 109, 'rhs' => 1 ),
   array( 'lhs' => 109, 'rhs' => 0 ),
-  array( 'lhs' => 87, 'rhs' => 3 ),
-  array( 'lhs' => 87, 'rhs' => 2 ),
+  array( 'lhs' => 88, 'rhs' => 3 ),
+  array( 'lhs' => 88, 'rhs' => 2 ),
   array( 'lhs' => 101, 'rhs' => 1 ),
-  array( 'lhs' => 101, 'rhs' => 5 ),
   array( 'lhs' => 101, 'rhs' => 2 ),
-  array( 'lhs' => 101, 'rhs' => 6 ),
   array( 'lhs' => 101, 'rhs' => 1 ),
   array( 'lhs' => 101, 'rhs' => 3 ),
   array( 'lhs' => 101, 'rhs' => 4 ),
-  array( 'lhs' => 88, 'rhs' => 2 ),
-  array( 'lhs' => 88, 'rhs' => 0 ),
+  array( 'lhs' => 89, 'rhs' => 2 ),
+  array( 'lhs' => 89, 'rhs' => 0 ),
   array( 'lhs' => 110, 'rhs' => 2 ),
   array( 'lhs' => 110, 'rhs' => 2 ),
   array( 'lhs' => 97, 'rhs' => 1 ),
@@ -1715,7 +1765,7 @@ static public $yy_action = array(
   array( 'lhs' => 98, 'rhs' => 1 ),
   array( 'lhs' => 98, 'rhs' => 1 ),
   array( 'lhs' => 98, 'rhs' => 1 ),
-  array( 'lhs' => 94, 'rhs' => 3 ),
+  array( 'lhs' => 95, 'rhs' => 3 ),
   array( 'lhs' => 111, 'rhs' => 1 ),
   array( 'lhs' => 111, 'rhs' => 3 ),
   array( 'lhs' => 111, 'rhs' => 0 ),
@@ -1733,8 +1783,8 @@ static public $yy_action = array(
   array( 'lhs' => 114, 'rhs' => 3 ),
   array( 'lhs' => 114, 'rhs' => 1 ),
   array( 'lhs' => 114, 'rhs' => 1 ),
-  array( 'lhs' => 91, 'rhs' => 1 ),
-  array( 'lhs' => 91, 'rhs' => 0 ),
+  array( 'lhs' => 92, 'rhs' => 1 ),
+  array( 'lhs' => 92, 'rhs' => 0 ),
     );
 
     static public $yyReduceMap = array(
@@ -1742,18 +1792,16 @@ static public $yy_action = array(
         5 => 0,
         15 => 0,
         16 => 0,
-        50 => 0,
-        51 => 0,
-        52 => 0,
-        68 => 0,
-        92 => 0,
-        97 => 0,
-        100 => 0,
+        64 => 0,
+        88 => 0,
+        93 => 0,
+        94 => 0,
+        99 => 0,
+        101 => 0,
         102 => 0,
-        103 => 0,
         108 => 0,
         143 => 0,
-        167 => 0,
+        165 => 0,
         1 => 1,
         2 => 2,
         3 => 3,
@@ -1767,10 +1815,10 @@ static public $yy_action = array(
         14 => 11,
         12 => 12,
         13 => 13,
-        93 => 13,
-        95 => 13,
-        96 => 13,
-        145 => 13,
+        89 => 13,
+        91 => 13,
+        92 => 13,
+        144 => 13,
         17 => 17,
         18 => 17,
         19 => 19,
@@ -1786,20 +1834,20 @@ static public $yy_action = array(
         29 => 29,
         30 => 29,
         31 => 31,
-        32 => 31,
+        32 => 32,
         33 => 33,
         34 => 34,
         35 => 35,
         36 => 36,
-        37 => 37,
-        38 => 37,
+        37 => 36,
+        38 => 38,
         39 => 39,
         40 => 40,
+        53 => 40,
+        139 => 40,
+        145 => 40,
+        170 => 40,
         41 => 41,
-        57 => 41,
-        139 => 41,
-        147 => 41,
-        172 => 41,
         42 => 42,
         43 => 43,
         44 => 44,
@@ -1807,50 +1855,52 @@ static public $yy_action = array(
         46 => 46,
         47 => 47,
         48 => 48,
-        49 => 48,
-        53 => 53,
+        49 => 49,
+        50 => 50,
+        51 => 51,
+        52 => 52,
         54 => 54,
         55 => 55,
         56 => 56,
-        58 => 58,
+        57 => 56,
+        58 => 56,
         59 => 59,
         60 => 60,
-        61 => 60,
-        62 => 60,
-        64 => 60,
+        61 => 61,
+        62 => 62,
         63 => 63,
         65 => 65,
         66 => 66,
-        67 => 67,
+        67 => 66,
+        68 => 66,
         69 => 69,
+        123 => 69,
+        182 => 69,
         70 => 70,
-        71 => 70,
-        72 => 70,
+        71 => 71,
+        74 => 71,
+        85 => 71,
+        72 => 72,
         73 => 73,
-        123 => 73,
-        184 => 73,
-        74 => 74,
         75 => 75,
-        78 => 75,
-        89 => 75,
         76 => 76,
         77 => 77,
+        82 => 77,
+        78 => 78,
+        81 => 78,
         79 => 79,
+        84 => 79,
         80 => 80,
-        81 => 81,
-        86 => 81,
-        82 => 82,
-        85 => 82,
-        83 => 83,
-        88 => 83,
-        84 => 84,
-        87 => 84,
+        83 => 80,
+        86 => 86,
+        87 => 87,
         90 => 90,
-        91 => 91,
-        94 => 94,
+        95 => 95,
+        96 => 96,
+        97 => 97,
         98 => 98,
-        99 => 99,
-        101 => 101,
+        100 => 100,
+        103 => 103,
         104 => 104,
         105 => 105,
         106 => 106,
@@ -1860,7 +1910,7 @@ static public $yy_action = array(
         111 => 111,
         112 => 112,
         113 => 113,
-        151 => 113,
+        149 => 113,
         114 => 114,
         115 => 115,
         116 => 116,
@@ -1870,7 +1920,7 @@ static public $yy_action = array(
         119 => 119,
         120 => 120,
         122 => 122,
-        185 => 122,
+        183 => 122,
         124 => 124,
         125 => 125,
         126 => 126,
@@ -1889,13 +1939,13 @@ static public $yy_action = array(
         140 => 140,
         141 => 141,
         142 => 141,
-        144 => 144,
         146 => 146,
+        147 => 147,
         148 => 148,
-        149 => 149,
         150 => 150,
+        151 => 150,
         152 => 152,
-        153 => 152,
+        153 => 153,
         154 => 154,
         155 => 155,
         156 => 156,
@@ -1907,28 +1957,26 @@ static public $yy_action = array(
         162 => 162,
         163 => 163,
         164 => 164,
-        165 => 165,
         166 => 166,
+        167 => 167,
         168 => 168,
         169 => 169,
-        170 => 170,
         171 => 171,
+        172 => 172,
         173 => 173,
         174 => 174,
         175 => 175,
-        176 => 176,
+        176 => 175,
+        178 => 175,
         177 => 177,
-        178 => 177,
-        180 => 177,
         179 => 179,
+        180 => 180,
         181 => 181,
-        182 => 182,
-        183 => 183,
     );
-#line 85 "smarty_internal_templateparser.y"
-    function yy_r0(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;     }
-#line 1925 "smarty_internal_templateparser.php"
 #line 91 "smarty_internal_templateparser.y"
+    function yy_r0(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;     }
+#line 1974 "smarty_internal_templateparser.php"
+#line 97 "smarty_internal_templateparser.y"
     function yy_r1(){if ($this->template->extract_code == false) {
                                                   $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
                                                } else {
@@ -1936,8 +1984,8 @@ static public $yy_action = array(
                                                   $this->template->extracted_compiled_code .= $this->yystack[$this->yyidx + 0]->minor;
                                                } 
                                                  }
-#line 1934 "smarty_internal_templateparser.php"
-#line 99 "smarty_internal_templateparser.y"
+#line 1983 "smarty_internal_templateparser.php"
+#line 105 "smarty_internal_templateparser.y"
     function yy_r2(){if ($this->template->extract_code == false) {
                                                              $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
                                                            } else {
@@ -1946,8 +1994,8 @@ static public $yy_action = array(
                                                              $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
                                                            } 
                                                               }
-#line 1944 "smarty_internal_templateparser.php"
-#line 112 "smarty_internal_templateparser.y"
+#line 1993 "smarty_internal_templateparser.php"
+#line 118 "smarty_internal_templateparser.y"
     function yy_r3(){
                                           if ($this->compiler->has_code) {
                                             $tmp =''; foreach ($this->compiler->prefix_code as $code) {$tmp.=$code;} $this->compiler->prefix_code=array();
@@ -1958,11 +2006,11 @@ static public $yy_action = array(
                                          $this->compiler->has_variable_string = false;
                                          $this->block_nesting_level = count($this->compiler->_tag_stack);
                                             }
-#line 1956 "smarty_internal_templateparser.php"
-#line 124 "smarty_internal_templateparser.y"
-    function yy_r4(){ $this->_retvalue = '';    }
-#line 1959 "smarty_internal_templateparser.php"
+#line 2005 "smarty_internal_templateparser.php"
 #line 130 "smarty_internal_templateparser.y"
+    function yy_r4(){ $this->_retvalue = '';    }
+#line 2008 "smarty_internal_templateparser.php"
+#line 136 "smarty_internal_templateparser.y"
     function yy_r6(){
                                       if ($this->sec_obj->php_handling == SMARTY_PHP_PASSTHRU) {
 					                             $this->_retvalue = self::escape_start_tag($this->yystack[$this->yyidx + 0]->minor);
@@ -1974,8 +2022,8 @@ static public $yy_action = array(
                                        $this->_retvalue = '';
                                       }
                                          }
-#line 1972 "smarty_internal_templateparser.php"
-#line 142 "smarty_internal_templateparser.y"
+#line 2021 "smarty_internal_templateparser.php"
+#line 148 "smarty_internal_templateparser.y"
     function yy_r7(){if ($this->is_xml) {
                                        $this->compiler->tag_nocache = true; 
                                        $this->is_xml = true; 
@@ -1990,132 +2038,135 @@ static public $yy_action = array(
                                        $this->_retvalue = '';
                                       }
                                          }
-#line 1988 "smarty_internal_templateparser.php"
-#line 157 "smarty_internal_templateparser.y"
+#line 2037 "smarty_internal_templateparser.php"
+#line 163 "smarty_internal_templateparser.y"
     function yy_r8(){if ($this->lex->strip) {
                                        $this->_retvalue = preg_replace('![\$this->yystack[$this->yyidx + 0]->minor ]*[\r\n]+[\$this->yystack[$this->yyidx + 0]->minor ]*!', '', self::escape_start_tag($this->yystack[$this->yyidx + 0]->minor));	
                                      } else {
                                        $this->_retvalue = self::escape_start_tag($this->yystack[$this->yyidx + 0]->minor);	
                                      }
                                         }
-#line 1996 "smarty_internal_templateparser.php"
-#line 165 "smarty_internal_templateparser.y"
+#line 2045 "smarty_internal_templateparser.php"
+#line 171 "smarty_internal_templateparser.y"
     function yy_r9(){ $this->compiler->tag_nocache = true; $this->is_xml = true; $this->_retvalue = $this->compiler->processNocacheCode("", $this->compiler, true);    }
-#line 1999 "smarty_internal_templateparser.php"
-#line 168 "smarty_internal_templateparser.y"
+#line 2048 "smarty_internal_templateparser.php"
+#line 174 "smarty_internal_templateparser.y"
     function yy_r10(){if ($this->lex->strip) {
                                        $this->_retvalue = preg_replace('![\t ]*[\r\n]+[\t ]*!', '', $this->yystack[$this->yyidx + 0]->minor);	
                                      } else {
                                        $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;	
                                      }
                                         }
-#line 2007 "smarty_internal_templateparser.php"
-#line 176 "smarty_internal_templateparser.y"
+#line 2056 "smarty_internal_templateparser.php"
+#line 182 "smarty_internal_templateparser.y"
     function yy_r11(){ $this->_retvalue = '';     }
-#line 2010 "smarty_internal_templateparser.php"
-#line 177 "smarty_internal_templateparser.y"
+#line 2059 "smarty_internal_templateparser.php"
+#line 183 "smarty_internal_templateparser.y"
     function yy_r12(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;     }
-#line 2013 "smarty_internal_templateparser.php"
-#line 179 "smarty_internal_templateparser.y"
+#line 2062 "smarty_internal_templateparser.php"
+#line 185 "smarty_internal_templateparser.y"
     function yy_r13(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;     }
-#line 2016 "smarty_internal_templateparser.php"
-#line 184 "smarty_internal_templateparser.y"
+#line 2065 "smarty_internal_templateparser.php"
+#line 190 "smarty_internal_templateparser.y"
     function yy_r17(){ $this->_retvalue = self::escape_start_tag($this->yystack[$this->yyidx + 0]->minor);     }
-#line 2019 "smarty_internal_templateparser.php"
-#line 186 "smarty_internal_templateparser.y"
+#line 2068 "smarty_internal_templateparser.php"
+#line 192 "smarty_internal_templateparser.y"
     function yy_r19(){ $this->_retvalue = self::escape_end_tag($this->yystack[$this->yyidx + 0]->minor);     }
-#line 2022 "smarty_internal_templateparser.php"
-#line 194 "smarty_internal_templateparser.y"
+#line 2071 "smarty_internal_templateparser.php"
+#line 200 "smarty_internal_templateparser.y"
     function yy_r20(){ $this->_retvalue = $this->compiler->compileTag('private_print_expression',array('value'=>$this->yystack[$this->yyidx + -1]->minor));    }
-#line 2025 "smarty_internal_templateparser.php"
-#line 195 "smarty_internal_templateparser.y"
+#line 2074 "smarty_internal_templateparser.php"
+#line 201 "smarty_internal_templateparser.y"
     function yy_r21(){ $this->_retvalue = $this->compiler->compileTag('private_print_expression',array_merge(array('value'=>$this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -1]->minor));    }
-#line 2028 "smarty_internal_templateparser.php"
-#line 206 "smarty_internal_templateparser.y"
+#line 2077 "smarty_internal_templateparser.php"
+#line 212 "smarty_internal_templateparser.y"
     function yy_r25(){ $this->_retvalue = $this->compiler->compileTag('assign',array('value'=>$this->yystack[$this->yyidx + -1]->minor,'var'=>"'".$this->yystack[$this->yyidx + -3]->minor."'"));    }
-#line 2031 "smarty_internal_templateparser.php"
-#line 208 "smarty_internal_templateparser.y"
+#line 2080 "smarty_internal_templateparser.php"
+#line 214 "smarty_internal_templateparser.y"
     function yy_r27(){ $this->_retvalue = $this->compiler->compileTag('assign',array_merge(array('value'=>$this->yystack[$this->yyidx + -2]->minor,'var'=>"'".$this->yystack[$this->yyidx + -4]->minor."'"),$this->yystack[$this->yyidx + -1]->minor));    }
-#line 2034 "smarty_internal_templateparser.php"
-#line 210 "smarty_internal_templateparser.y"
+#line 2083 "smarty_internal_templateparser.php"
+#line 216 "smarty_internal_templateparser.y"
     function yy_r29(){ $this->_retvalue = $this->compiler->compileTag('assign',array_merge(array('value'=>$this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -4]->minor,$this->yystack[$this->yyidx + -1]->minor));    }
-#line 2037 "smarty_internal_templateparser.php"
-#line 213 "smarty_internal_templateparser.y"
-    function yy_r31(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor,$this->yystack[$this->yyidx + -1]->minor);    }
-#line 2040 "smarty_internal_templateparser.php"
-#line 215 "smarty_internal_templateparser.y"
-    function yy_r33(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor,array());    }
-#line 2043 "smarty_internal_templateparser.php"
-#line 217 "smarty_internal_templateparser.y"
-    function yy_r34(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor,array_merge(array('object_methode'=>$this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -1]->minor));    }
-#line 2046 "smarty_internal_templateparser.php"
+#line 2086 "smarty_internal_templateparser.php"
 #line 219 "smarty_internal_templateparser.y"
-    function yy_r35(){  $this->_retvalue = ''.$this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor,$this->yystack[$this->yyidx + -1]->minor).'_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor,$this->yystack[$this->yyidx + -1]->minor);    }
+#line 2089 "smarty_internal_templateparser.php"
+#line 220 "smarty_internal_templateparser.y"
+    function yy_r32(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor,array());    }
+#line 2092 "smarty_internal_templateparser.php"
+#line 222 "smarty_internal_templateparser.y"
+    function yy_r33(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor,array_merge(array('object_methode'=>$this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -1]->minor));    }
+#line 2095 "smarty_internal_templateparser.php"
+#line 224 "smarty_internal_templateparser.y"
+    function yy_r34(){  $this->_retvalue = ''.$this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor,$this->yystack[$this->yyidx + -1]->minor).'_retvalue .= $this->compiler->compileTag('private_modifier',array('modifier'=>$this->yystack[$this->yyidx + -3]->minor,'params'=>'ob_get_clean()'.$this->yystack[$this->yyidx + -2]->minor)).'?>';
                                                                                      }
-#line 2051 "smarty_internal_templateparser.php"
-#line 223 "smarty_internal_templateparser.y"
-    function yy_r36(){  $this->_retvalue = ''.$this->compiler->compileTag($this->yystack[$this->yyidx + -6]->minor,array_merge(array('object_methode'=>$this->yystack[$this->yyidx + -4]->minor),$this->yystack[$this->yyidx + -1]->minor)).'_retvalue = ''.$this->compiler->compileTag($this->yystack[$this->yyidx + -6]->minor,array_merge(array('object_methode'=>$this->yystack[$this->yyidx + -4]->minor),$this->yystack[$this->yyidx + -1]->minor)).'_retvalue .= $this->compiler->compileTag('private_modifier',array('modifier'=>$this->yystack[$this->yyidx + -3]->minor,'params'=>'ob_get_clean()'.$this->yystack[$this->yyidx + -2]->minor)).'?>';
                                                                                                 }
-#line 2056 "smarty_internal_templateparser.php"
-#line 227 "smarty_internal_templateparser.y"
-    function yy_r37(){ $this->_retvalue = $this->compiler->compileTag(($this->yystack[$this->yyidx + -3]->minor == 'else if')? 'elseif' : $this->yystack[$this->yyidx + -3]->minor,array('if condition'=>$this->yystack[$this->yyidx + -1]->minor));    }
-#line 2059 "smarty_internal_templateparser.php"
-#line 230 "smarty_internal_templateparser.y"
-    function yy_r39(){
-                                                             $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -11]->minor,array('start'=>$this->yystack[$this->yyidx + -9]->minor,'ifexp'=>$this->yystack[$this->yyidx + -6]->minor,'varloop'=>$this->yystack[$this->yyidx + -2]->minor,'loop'=>$this->yystack[$this->yyidx + -1]->minor));    }
-#line 2063 "smarty_internal_templateparser.php"
-#line 233 "smarty_internal_templateparser.y"
-    function yy_r40(){ $this->_retvalue = '='.$this->yystack[$this->yyidx + 0]->minor;    }
-#line 2066 "smarty_internal_templateparser.php"
-#line 234 "smarty_internal_templateparser.y"
-    function yy_r41(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;    }
-#line 2069 "smarty_internal_templateparser.php"
+#line 2105 "smarty_internal_templateparser.php"
+#line 232 "smarty_internal_templateparser.y"
+    function yy_r36(){ $tag = trim(substr($this->yystack[$this->yyidx + -3]->minor,$this->lex->ldel_length)); $this->_retvalue = $this->compiler->compileTag(($tag == 'else if')? 'elseif' : $tag,array('if condition'=>$this->yystack[$this->yyidx + -1]->minor));    }
+#line 2108 "smarty_internal_templateparser.php"
 #line 235 "smarty_internal_templateparser.y"
-    function yy_r42(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -6]->minor,array_merge(array('start'=>$this->yystack[$this->yyidx + -4]->minor,'to'=>$this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -1]->minor));    }
-#line 2072 "smarty_internal_templateparser.php"
-#line 236 "smarty_internal_templateparser.y"
-    function yy_r43(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -7]->minor,array('start'=>$this->yystack[$this->yyidx + -5]->minor,'to'=>$this->yystack[$this->yyidx + -3]->minor,'step'=>$this->yystack[$this->yyidx + -1]->minor));    }
-#line 2075 "smarty_internal_templateparser.php"
+    function yy_r38(){
+                                                             $this->_retvalue = $this->compiler->compileTag('for',array('start'=>$this->yystack[$this->yyidx + -9]->minor,'ifexp'=>$this->yystack[$this->yyidx + -6]->minor,'varloop'=>$this->yystack[$this->yyidx + -2]->minor,'loop'=>$this->yystack[$this->yyidx + -1]->minor));    }
+#line 2112 "smarty_internal_templateparser.php"
 #line 238 "smarty_internal_templateparser.y"
-    function yy_r44(){
-                                                            $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -6]->minor,array('from'=>$this->yystack[$this->yyidx + -4]->minor,'item'=>$this->yystack[$this->yyidx + -1]->minor));    }
-#line 2079 "smarty_internal_templateparser.php"
+    function yy_r39(){ $this->_retvalue = '='.$this->yystack[$this->yyidx + 0]->minor;    }
+#line 2115 "smarty_internal_templateparser.php"
+#line 239 "smarty_internal_templateparser.y"
+    function yy_r40(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;    }
+#line 2118 "smarty_internal_templateparser.php"
 #line 240 "smarty_internal_templateparser.y"
+    function yy_r41(){ $this->_retvalue = $this->compiler->compileTag('for',array_merge(array('start'=>$this->yystack[$this->yyidx + -4]->minor,'to'=>$this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -1]->minor));    }
+#line 2121 "smarty_internal_templateparser.php"
+#line 241 "smarty_internal_templateparser.y"
+    function yy_r42(){ $this->_retvalue = $this->compiler->compileTag('for',array('start'=>$this->yystack[$this->yyidx + -5]->minor,'to'=>$this->yystack[$this->yyidx + -3]->minor,'step'=>$this->yystack[$this->yyidx + -1]->minor));    }
+#line 2124 "smarty_internal_templateparser.php"
+#line 243 "smarty_internal_templateparser.y"
+    function yy_r43(){ $this->_retvalue = $this->compiler->compileTag('foreach',$this->yystack[$this->yyidx + -1]->minor);    }
+#line 2127 "smarty_internal_templateparser.php"
+#line 245 "smarty_internal_templateparser.y"
+    function yy_r44(){
+                                                            $this->_retvalue = $this->compiler->compileTag('foreach',array('from'=>$this->yystack[$this->yyidx + -4]->minor,'item'=>$this->yystack[$this->yyidx + -1]->minor));    }
+#line 2131 "smarty_internal_templateparser.php"
+#line 247 "smarty_internal_templateparser.y"
     function yy_r45(){
-                                                            $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -9]->minor,array('from'=>$this->yystack[$this->yyidx + -7]->minor,'item'=>$this->yystack[$this->yyidx + -1]->minor,'key'=>$this->yystack[$this->yyidx + -4]->minor));    }
-#line 2083 "smarty_internal_templateparser.php"
-#line 242 "smarty_internal_templateparser.y"
+                                                            $this->_retvalue = $this->compiler->compileTag('foreach',array('from'=>$this->yystack[$this->yyidx + -7]->minor,'item'=>$this->yystack[$this->yyidx + -1]->minor,'key'=>$this->yystack[$this->yyidx + -4]->minor));    }
+#line 2135 "smarty_internal_templateparser.php"
+#line 249 "smarty_internal_templateparser.y"
     function yy_r46(){ 
-                                                            $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -6]->minor,array('from'=>$this->yystack[$this->yyidx + -4]->minor,'item'=>$this->yystack[$this->yyidx + -1]->minor));    }
-#line 2087 "smarty_internal_templateparser.php"
-#line 244 "smarty_internal_templateparser.y"
+                                                            $this->_retvalue = $this->compiler->compileTag('foreach',array('from'=>$this->yystack[$this->yyidx + -4]->minor,'item'=>$this->yystack[$this->yyidx + -1]->minor));    }
+#line 2139 "smarty_internal_templateparser.php"
+#line 251 "smarty_internal_templateparser.y"
     function yy_r47(){ 
-                                                            $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -9]->minor,array('from'=>$this->yystack[$this->yyidx + -7]->minor,'item'=>$this->yystack[$this->yyidx + -1]->minor,'key'=>$this->yystack[$this->yyidx + -4]->minor));    }
-#line 2091 "smarty_internal_templateparser.php"
-#line 248 "smarty_internal_templateparser.y"
+                                                            $this->_retvalue = $this->compiler->compileTag('foreach',array('from'=>$this->yystack[$this->yyidx + -7]->minor,'item'=>$this->yystack[$this->yyidx + -1]->minor,'key'=>$this->yystack[$this->yyidx + -4]->minor));    }
+#line 2143 "smarty_internal_templateparser.php"
+#line 255 "smarty_internal_templateparser.y"
     function yy_r48(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor.'close',array());    }
-#line 2094 "smarty_internal_templateparser.php"
-#line 253 "smarty_internal_templateparser.y"
-    function yy_r53(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor.'close',$this->yystack[$this->yyidx + -1]->minor);    }
-#line 2097 "smarty_internal_templateparser.php"
-#line 254 "smarty_internal_templateparser.y"
-    function yy_r54(){  $this->_retvalue = ''.$this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor.'close',$this->yystack[$this->yyidx + -1]->minor).'_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor.'close',$this->yystack[$this->yyidx + -1]->minor);    }
+#line 2149 "smarty_internal_templateparser.php"
+#line 257 "smarty_internal_templateparser.y"
+    function yy_r50(){  $this->_retvalue = ''.$this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor.'close',$this->yystack[$this->yyidx + -1]->minor).'_retvalue .= $this->compiler->compileTag('private_modifier',array('modifier'=>$this->yystack[$this->yyidx + -3]->minor,'params'=>'ob_get_clean()'.$this->yystack[$this->yyidx + -2]->minor)).'?>';
                                                                                           }
-#line 2102 "smarty_internal_templateparser.php"
-#line 258 "smarty_internal_templateparser.y"
-    function yy_r55(){  $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor.'close',array('object_methode'=>$this->yystack[$this->yyidx + -1]->minor));    }
-#line 2105 "smarty_internal_templateparser.php"
-#line 265 "smarty_internal_templateparser.y"
-    function yy_r56(){ $this->_retvalue = array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor);    }
-#line 2108 "smarty_internal_templateparser.php"
-#line 269 "smarty_internal_templateparser.y"
-    function yy_r58(){ $this->_retvalue = array();    }
-#line 2111 "smarty_internal_templateparser.php"
+#line 2154 "smarty_internal_templateparser.php"
+#line 261 "smarty_internal_templateparser.y"
+    function yy_r51(){  $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor.'close',array('object_methode'=>$this->yystack[$this->yyidx + -1]->minor));    }
+#line 2157 "smarty_internal_templateparser.php"
+#line 268 "smarty_internal_templateparser.y"
+    function yy_r52(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor; $this->_retvalue[key($this->yystack[$this->yyidx + 0]->minor)] = $this->yystack[$this->yyidx + 0]->minor[key($this->yystack[$this->yyidx + 0]->minor)];    }
+#line 2160 "smarty_internal_templateparser.php"
 #line 272 "smarty_internal_templateparser.y"
-    function yy_r59(){ if (preg_match('~^true$~i', $this->yystack[$this->yyidx + 0]->minor)) {
+    function yy_r54(){ $this->_retvalue = array();    }
+#line 2163 "smarty_internal_templateparser.php"
+#line 275 "smarty_internal_templateparser.y"
+    function yy_r55(){ if (preg_match('~^true$~i', $this->yystack[$this->yyidx + 0]->minor)) {
                                                   $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>'true');
                                                  } elseif (preg_match('~^false$~i', $this->yystack[$this->yyidx + 0]->minor)) {
                                                   $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>'false');
@@ -2123,75 +2174,84 @@ static public $yy_action = array(
                                                   $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>'null');
                                                  } else
                                                   $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>"'".$this->yystack[$this->yyidx + 0]->minor."'");    }
-#line 2121 "smarty_internal_templateparser.php"
-#line 280 "smarty_internal_templateparser.y"
-    function yy_r60(){ $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>$this->yystack[$this->yyidx + 0]->minor);    }
-#line 2124 "smarty_internal_templateparser.php"
+#line 2173 "smarty_internal_templateparser.php"
 #line 283 "smarty_internal_templateparser.y"
-    function yy_r63(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor=>'true');    }
-#line 2127 "smarty_internal_templateparser.php"
-#line 290 "smarty_internal_templateparser.y"
-    function yy_r65(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor);    }
-#line 2130 "smarty_internal_templateparser.php"
-#line 291 "smarty_internal_templateparser.y"
-    function yy_r66(){ $this->yystack[$this->yyidx + -2]->minor[]=$this->yystack[$this->yyidx + 0]->minor; $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor;    }
-#line 2133 "smarty_internal_templateparser.php"
+    function yy_r56(){ $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>$this->yystack[$this->yyidx + 0]->minor);    }
+#line 2176 "smarty_internal_templateparser.php"
+#line 286 "smarty_internal_templateparser.y"
+    function yy_r59(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor=>'true');    }
+#line 2179 "smarty_internal_templateparser.php"
+#line 287 "smarty_internal_templateparser.y"
+    function yy_r60(){$this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>$this->yystack[$this->yyidx + 0]->minor);    }
+#line 2182 "smarty_internal_templateparser.php"
 #line 293 "smarty_internal_templateparser.y"
-    function yy_r67(){ $this->_retvalue = array('var' => $this->yystack[$this->yyidx + -2]->minor, 'value'=>$this->yystack[$this->yyidx + 0]->minor);    }
-#line 2136 "smarty_internal_templateparser.php"
-#line 302 "smarty_internal_templateparser.y"
-    function yy_r69(){$this->_retvalue = '$_smarty_tpl->getStreamVariable(\''. $this->yystack[$this->yyidx + -2]->minor .'://'. $this->yystack[$this->yyidx + 0]->minor . '\')';    }
-#line 2139 "smarty_internal_templateparser.php"
-#line 304 "smarty_internal_templateparser.y"
-    function yy_r70(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor . trim($this->yystack[$this->yyidx + -1]->minor) . $this->yystack[$this->yyidx + 0]->minor;     }
-#line 2142 "smarty_internal_templateparser.php"
-#line 310 "smarty_internal_templateparser.y"
-    function yy_r73(){$this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;    }
-#line 2145 "smarty_internal_templateparser.php"
+    function yy_r61(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor);    }
+#line 2185 "smarty_internal_templateparser.php"
+#line 294 "smarty_internal_templateparser.y"
+    function yy_r62(){ $this->yystack[$this->yyidx + -2]->minor[]=$this->yystack[$this->yyidx + 0]->minor; $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor;    }
+#line 2188 "smarty_internal_templateparser.php"
+#line 296 "smarty_internal_templateparser.y"
+    function yy_r63(){ $this->_retvalue = array('var' => $this->yystack[$this->yyidx + -2]->minor, 'value'=>$this->yystack[$this->yyidx + 0]->minor);    }
+#line 2191 "smarty_internal_templateparser.php"
+#line 305 "smarty_internal_templateparser.y"
+    function yy_r65(){$this->_retvalue = '$_smarty_tpl->getStreamVariable(\''. $this->yystack[$this->yyidx + -2]->minor .'://'. $this->yystack[$this->yyidx + 0]->minor . '\')';    }
+#line 2194 "smarty_internal_templateparser.php"
+#line 307 "smarty_internal_templateparser.y"
+    function yy_r66(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor . trim($this->yystack[$this->yyidx + -1]->minor) . $this->yystack[$this->yyidx + 0]->minor;     }
+#line 2197 "smarty_internal_templateparser.php"
 #line 313 "smarty_internal_templateparser.y"
-    function yy_r74(){  $this->_retvalue = $this->compiler->compileTag('private_modifier',array('modifier'=>$this->yystack[$this->yyidx + -1]->minor,'params'=>$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor));     }
-#line 2148 "smarty_internal_templateparser.php"
-#line 317 "smarty_internal_templateparser.y"
-    function yy_r75(){$this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;    }
-#line 2151 "smarty_internal_templateparser.php"
-#line 318 "smarty_internal_templateparser.y"
-    function yy_r76(){$this->_retvalue = 'in_array('.$this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor.')';    }
-#line 2154 "smarty_internal_templateparser.php"
-#line 319 "smarty_internal_templateparser.y"
-    function yy_r77(){$this->_retvalue = 'in_array('.$this->yystack[$this->yyidx + -2]->minor.',(array)'.$this->yystack[$this->yyidx + 0]->minor.')';    }
-#line 2157 "smarty_internal_templateparser.php"
+    function yy_r69(){$this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;    }
+#line 2200 "smarty_internal_templateparser.php"
+#line 316 "smarty_internal_templateparser.y"
+    function yy_r70(){  $this->_retvalue = $this->compiler->compileTag('private_modifier',array('modifier'=>$this->yystack[$this->yyidx + -1]->minor,'params'=>$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor));     }
+#line 2203 "smarty_internal_templateparser.php"
+#line 320 "smarty_internal_templateparser.y"
+    function yy_r71(){$this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;    }
+#line 2206 "smarty_internal_templateparser.php"
 #line 321 "smarty_internal_templateparser.y"
-    function yy_r79(){$this->_retvalue = '!('.$this->yystack[$this->yyidx + -2]->minor.' % '.$this->yystack[$this->yyidx + 0]->minor.')';    }
-#line 2160 "smarty_internal_templateparser.php"
+    function yy_r72(){$this->_retvalue = 'in_array('.$this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor.')';    }
+#line 2209 "smarty_internal_templateparser.php"
 #line 322 "smarty_internal_templateparser.y"
-    function yy_r80(){$this->_retvalue = '('.$this->yystack[$this->yyidx + -2]->minor.' % '.$this->yystack[$this->yyidx + 0]->minor.')';    }
-#line 2163 "smarty_internal_templateparser.php"
-#line 323 "smarty_internal_templateparser.y"
-    function yy_r81(){$this->_retvalue = '!(1 & '.$this->yystack[$this->yyidx + -1]->minor.')';    }
-#line 2166 "smarty_internal_templateparser.php"
+    function yy_r73(){$this->_retvalue = 'in_array('.$this->yystack[$this->yyidx + -2]->minor.',(array)'.$this->yystack[$this->yyidx + 0]->minor.')';    }
+#line 2212 "smarty_internal_templateparser.php"
 #line 324 "smarty_internal_templateparser.y"
-    function yy_r82(){$this->_retvalue = '(1 & '.$this->yystack[$this->yyidx + -1]->minor.')';    }
-#line 2169 "smarty_internal_templateparser.php"
+    function yy_r75(){$this->_retvalue = '!('.$this->yystack[$this->yyidx + -2]->minor.' % '.$this->yystack[$this->yyidx + 0]->minor.')';    }
+#line 2215 "smarty_internal_templateparser.php"
 #line 325 "smarty_internal_templateparser.y"
-    function yy_r83(){$this->_retvalue = '!(1 & '.$this->yystack[$this->yyidx + -2]->minor.' / '.$this->yystack[$this->yyidx + 0]->minor.')';    }
-#line 2172 "smarty_internal_templateparser.php"
+    function yy_r76(){$this->_retvalue = '('.$this->yystack[$this->yyidx + -2]->minor.' % '.$this->yystack[$this->yyidx + 0]->minor.')';    }
+#line 2218 "smarty_internal_templateparser.php"
 #line 326 "smarty_internal_templateparser.y"
-    function yy_r84(){$this->_retvalue = '(1 & '.$this->yystack[$this->yyidx + -2]->minor.' / '.$this->yystack[$this->yyidx + 0]->minor.')';    }
-#line 2175 "smarty_internal_templateparser.php"
-#line 332 "smarty_internal_templateparser.y"
-    function yy_r90(){$this->prefix_number++; $this->compiler->prefix_code[] = 'prefix_number.'='.$this->yystack[$this->yyidx + 0]->minor.';?>'; $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.'$_tmp'.$this->prefix_number;    }
-#line 2178 "smarty_internal_templateparser.php"
-#line 338 "smarty_internal_templateparser.y"
-    function yy_r91(){ $this->_retvalue = $this->yystack[$this->yyidx + -5]->minor.' ? '.$this->yystack[$this->yyidx + -2]->minor.' : '.$this->yystack[$this->yyidx + 0]->minor;    }
-#line 2181 "smarty_internal_templateparser.php"
-#line 345 "smarty_internal_templateparser.y"
-    function yy_r94(){ $this->_retvalue = '!'.$this->yystack[$this->yyidx + 0]->minor;     }
-#line 2184 "smarty_internal_templateparser.php"
-#line 350 "smarty_internal_templateparser.y"
-    function yy_r98(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor;     }
-#line 2187 "smarty_internal_templateparser.php"
-#line 352 "smarty_internal_templateparser.y"
-    function yy_r99(){ if (preg_match('~^true$~i', $this->yystack[$this->yyidx + 0]->minor)) {
+    function yy_r77(){$this->_retvalue = '!(1 & '.$this->yystack[$this->yyidx + -1]->minor.')';    }
+#line 2221 "smarty_internal_templateparser.php"
+#line 327 "smarty_internal_templateparser.y"
+    function yy_r78(){$this->_retvalue = '(1 & '.$this->yystack[$this->yyidx + -1]->minor.')';    }
+#line 2224 "smarty_internal_templateparser.php"
+#line 328 "smarty_internal_templateparser.y"
+    function yy_r79(){$this->_retvalue = '!(1 & '.$this->yystack[$this->yyidx + -2]->minor.' / '.$this->yystack[$this->yyidx + 0]->minor.')';    }
+#line 2227 "smarty_internal_templateparser.php"
+#line 329 "smarty_internal_templateparser.y"
+    function yy_r80(){$this->_retvalue = '(1 & '.$this->yystack[$this->yyidx + -2]->minor.' / '.$this->yystack[$this->yyidx + 0]->minor.')';    }
+#line 2230 "smarty_internal_templateparser.php"
+#line 335 "smarty_internal_templateparser.y"
+    function yy_r86(){$this->prefix_number++; $this->compiler->prefix_code[] = 'prefix_number.'='.$this->yystack[$this->yyidx + 0]->minor.';?>'; $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.'$_tmp'.$this->prefix_number;    }
+#line 2233 "smarty_internal_templateparser.php"
+#line 341 "smarty_internal_templateparser.y"
+    function yy_r87(){ $this->_retvalue = $this->yystack[$this->yyidx + -5]->minor.' ? '.$this->yystack[$this->yyidx + -2]->minor.' : '.$this->yystack[$this->yyidx + 0]->minor;    }
+#line 2236 "smarty_internal_templateparser.php"
+#line 348 "smarty_internal_templateparser.y"
+    function yy_r90(){ $this->_retvalue = '!'.$this->yystack[$this->yyidx + 0]->minor;     }
+#line 2239 "smarty_internal_templateparser.php"
+#line 354 "smarty_internal_templateparser.y"
+    function yy_r95(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor;     }
+#line 2242 "smarty_internal_templateparser.php"
+#line 355 "smarty_internal_templateparser.y"
+    function yy_r96(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.'.';     }
+#line 2245 "smarty_internal_templateparser.php"
+#line 356 "smarty_internal_templateparser.y"
+    function yy_r97(){ $this->_retvalue = '.'.$this->yystack[$this->yyidx + 0]->minor;     }
+#line 2248 "smarty_internal_templateparser.php"
+#line 358 "smarty_internal_templateparser.y"
+    function yy_r98(){ if (preg_match('~^true$~i', $this->yystack[$this->yyidx + 0]->minor)) {
                                 $this->_retvalue = 'true';
                                } elseif (preg_match('~^false$~i', $this->yystack[$this->yyidx + 0]->minor)) {
                                 $this->_retvalue = 'false';
@@ -2199,19 +2259,23 @@ static public $yy_action = array(
                                 $this->_retvalue = 'null';
                                } else
                                $this->_retvalue = "'".$this->yystack[$this->yyidx + 0]->minor."'";     }
-#line 2197 "smarty_internal_templateparser.php"
-#line 363 "smarty_internal_templateparser.y"
-    function yy_r101(){ $this->_retvalue = "(". $this->yystack[$this->yyidx + -1]->minor .")";     }
-#line 2200 "smarty_internal_templateparser.php"
+#line 2258 "smarty_internal_templateparser.php"
 #line 369 "smarty_internal_templateparser.y"
-    function yy_r104(){if (!$this->template->security || $this->smarty->security_handler->isTrustedStaticClass($this->yystack[$this->yyidx + -2]->minor, $this->compiler)) {
+    function yy_r100(){ $this->_retvalue = "(". $this->yystack[$this->yyidx + -1]->minor .")";     }
+#line 2261 "smarty_internal_templateparser.php"
+#line 375 "smarty_internal_templateparser.y"
+    function yy_r103(){if (!$this->template->security || $this->smarty->security_handler->isTrustedStaticClass($this->yystack[$this->yyidx + -2]->minor, $this->compiler)) {
                                                                   $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'::'.$this->yystack[$this->yyidx + 0]->minor; 
                                                                 }    }
-#line 2205 "smarty_internal_templateparser.php"
-#line 373 "smarty_internal_templateparser.y"
+#line 2266 "smarty_internal_templateparser.php"
+#line 378 "smarty_internal_templateparser.y"
+    function yy_r104(){ if ($this->yystack[$this->yyidx + -2]->minor['var'] == '\'smarty\'') { $this->_retvalue =  $this->compiler->compileTag('private_special_variable',$this->yystack[$this->yyidx + -2]->minor['smarty_internal_index']).'::'.$this->yystack[$this->yyidx + 0]->minor;} else {
+                                                         $this->_retvalue = '$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + -2]->minor['var'] .')->value'.$this->yystack[$this->yyidx + -2]->minor['smarty_internal_index'].'::'.$this->yystack[$this->yyidx + 0]->minor; $this->compiler->tag_nocache=$this->compiler->tag_nocache|$this->template->getVariable(trim($this->yystack[$this->yyidx + -2]->minor['var'],"'"), null, true, false)->nocache;}    }
+#line 2270 "smarty_internal_templateparser.php"
+#line 381 "smarty_internal_templateparser.y"
     function yy_r105(){ $this->prefix_number++; $this->compiler->prefix_code[] = ''.$this->yystack[$this->yyidx + 0]->minor.'prefix_number.'=ob_get_clean();?>'; $this->_retvalue = '$_tmp'.$this->prefix_number;     }
-#line 2208 "smarty_internal_templateparser.php"
-#line 382 "smarty_internal_templateparser.y"
+#line 2273 "smarty_internal_templateparser.php"
+#line 390 "smarty_internal_templateparser.y"
     function yy_r106(){if ($this->yystack[$this->yyidx + 0]->minor['var'] == '\'smarty\'') { $this->_retvalue =  $this->compiler->compileTag('private_special_variable',$this->yystack[$this->yyidx + 0]->minor['smarty_internal_index']);
                                       } else {
                                       if (isset($this->compiler->local_var[$this->yystack[$this->yyidx + 0]->minor['var']])) {
@@ -2220,217 +2284,210 @@ static public $yy_action = array(
                                           $this->_retvalue = '$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + 0]->minor['var'] .')->value'.$this->yystack[$this->yyidx + 0]->minor['smarty_internal_index'];
                                          }
                                        $this->compiler->tag_nocache=$this->compiler->tag_nocache|$this->template->getVariable(trim($this->yystack[$this->yyidx + 0]->minor['var'],"'"), null, true, false)->nocache;}    }
-#line 2218 "smarty_internal_templateparser.php"
-#line 391 "smarty_internal_templateparser.y"
+#line 2283 "smarty_internal_templateparser.php"
+#line 399 "smarty_internal_templateparser.y"
     function yy_r107(){if (isset($this->compiler->local_var[$this->yystack[$this->yyidx + -2]->minor])) {
                                                   $this->_retvalue = '$_smarty_tpl->tpl_vars['. $this->yystack[$this->yyidx + -2]->minor .']->'.$this->yystack[$this->yyidx + 0]->minor;
                                                  } else {
                                                   $this->_retvalue = '$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + -2]->minor .')->'.$this->yystack[$this->yyidx + 0]->minor;
                                                  }
                                                   $this->compiler->tag_nocache=$this->compiler->tag_nocache|$this->template->getVariable(trim($this->yystack[$this->yyidx + -2]->minor,"'"), null, true, false)->nocache;    }
-#line 2226 "smarty_internal_templateparser.php"
-#line 400 "smarty_internal_templateparser.y"
+#line 2291 "smarty_internal_templateparser.php"
+#line 408 "smarty_internal_templateparser.y"
     function yy_r109(){$this->_retvalue = '$_smarty_tpl->getConfigVariable(\''. $this->yystack[$this->yyidx + -1]->minor .'\')';    }
-#line 2229 "smarty_internal_templateparser.php"
-#line 401 "smarty_internal_templateparser.y"
+#line 2294 "smarty_internal_templateparser.php"
+#line 409 "smarty_internal_templateparser.y"
     function yy_r110(){$this->_retvalue = '$_smarty_tpl->getConfigVariable('. $this->yystack[$this->yyidx + -1]->minor .')';    }
-#line 2232 "smarty_internal_templateparser.php"
-#line 404 "smarty_internal_templateparser.y"
+#line 2297 "smarty_internal_templateparser.php"
+#line 412 "smarty_internal_templateparser.y"
     function yy_r111(){$this->_retvalue = array('var'=>$this->yystack[$this->yyidx + -1]->minor, 'smarty_internal_index'=>$this->yystack[$this->yyidx + 0]->minor);    }
-#line 2235 "smarty_internal_templateparser.php"
-#line 410 "smarty_internal_templateparser.y"
+#line 2300 "smarty_internal_templateparser.php"
+#line 418 "smarty_internal_templateparser.y"
     function yy_r112(){$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;    }
-#line 2238 "smarty_internal_templateparser.php"
-#line 412 "smarty_internal_templateparser.y"
+#line 2303 "smarty_internal_templateparser.php"
+#line 420 "smarty_internal_templateparser.y"
     function yy_r113(){return;    }
-#line 2241 "smarty_internal_templateparser.php"
-#line 416 "smarty_internal_templateparser.y"
+#line 2306 "smarty_internal_templateparser.php"
+#line 424 "smarty_internal_templateparser.y"
     function yy_r114(){ $this->_retvalue = '[$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + 0]->minor .')->value]'; $this->compiler->tag_nocache=$this->compiler->tag_nocache|$this->template->getVariable('$this->yystack[$this->yyidx + 0]->minor', null, true, false)->nocache;    }
-#line 2244 "smarty_internal_templateparser.php"
-#line 417 "smarty_internal_templateparser.y"
+#line 2309 "smarty_internal_templateparser.php"
+#line 425 "smarty_internal_templateparser.y"
     function yy_r115(){ $this->_retvalue = '[$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + -2]->minor .')->'.$this->yystack[$this->yyidx + 0]->minor.']'; $this->compiler->tag_nocache=$this->compiler->tag_nocache|$this->template->getVariable(trim($this->yystack[$this->yyidx + -2]->minor,"'"), null, true, false)->nocache;    }
-#line 2247 "smarty_internal_templateparser.php"
-#line 418 "smarty_internal_templateparser.y"
+#line 2312 "smarty_internal_templateparser.php"
+#line 426 "smarty_internal_templateparser.y"
     function yy_r116(){ $this->_retvalue = "['". $this->yystack[$this->yyidx + 0]->minor ."']";    }
-#line 2250 "smarty_internal_templateparser.php"
-#line 419 "smarty_internal_templateparser.y"
+#line 2315 "smarty_internal_templateparser.php"
+#line 427 "smarty_internal_templateparser.y"
     function yy_r117(){ $this->_retvalue = "[". $this->yystack[$this->yyidx + 0]->minor ."]";    }
-#line 2253 "smarty_internal_templateparser.php"
-#line 420 "smarty_internal_templateparser.y"
+#line 2318 "smarty_internal_templateparser.php"
+#line 428 "smarty_internal_templateparser.y"
     function yy_r118(){ $this->_retvalue = "[". $this->yystack[$this->yyidx + -1]->minor ."]";    }
-#line 2256 "smarty_internal_templateparser.php"
-#line 422 "smarty_internal_templateparser.y"
+#line 2321 "smarty_internal_templateparser.php"
+#line 430 "smarty_internal_templateparser.y"
     function yy_r119(){ $this->_retvalue = '['.$this->compiler->compileTag('private_special_variable','[\'section\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\'][\'index\']').']';    }
-#line 2259 "smarty_internal_templateparser.php"
-#line 423 "smarty_internal_templateparser.y"
+#line 2324 "smarty_internal_templateparser.php"
+#line 431 "smarty_internal_templateparser.y"
     function yy_r120(){ $this->_retvalue = '['.$this->compiler->compileTag('private_special_variable','[\'section\'][\''.$this->yystack[$this->yyidx + -3]->minor.'\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\']').']';    }
-#line 2262 "smarty_internal_templateparser.php"
-#line 427 "smarty_internal_templateparser.y"
-    function yy_r122(){$this->_retvalue = '';    }
-#line 2265 "smarty_internal_templateparser.php"
+#line 2327 "smarty_internal_templateparser.php"
 #line 435 "smarty_internal_templateparser.y"
+    function yy_r122(){$this->_retvalue = '';    }
+#line 2330 "smarty_internal_templateparser.php"
+#line 443 "smarty_internal_templateparser.y"
     function yy_r124(){$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor;    }
-#line 2268 "smarty_internal_templateparser.php"
-#line 437 "smarty_internal_templateparser.y"
+#line 2333 "smarty_internal_templateparser.php"
+#line 445 "smarty_internal_templateparser.y"
     function yy_r125(){$this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\'';    }
-#line 2271 "smarty_internal_templateparser.php"
-#line 439 "smarty_internal_templateparser.y"
+#line 2336 "smarty_internal_templateparser.php"
+#line 447 "smarty_internal_templateparser.y"
     function yy_r126(){$this->_retvalue = '('.$this->yystack[$this->yyidx + -1]->minor.')';    }
-#line 2274 "smarty_internal_templateparser.php"
-#line 444 "smarty_internal_templateparser.y"
+#line 2339 "smarty_internal_templateparser.php"
+#line 452 "smarty_internal_templateparser.y"
     function yy_r127(){ if ($this->yystack[$this->yyidx + -1]->minor['var'] == '\'smarty\'') { $this->_retvalue =  $this->compiler->compileTag('private_special_variable',$this->yystack[$this->yyidx + -1]->minor['smarty_internal_index']).$this->yystack[$this->yyidx + 0]->minor;} else {
                                                          $this->_retvalue = '$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + -1]->minor['var'] .')->value'.$this->yystack[$this->yyidx + -1]->minor['smarty_internal_index'].$this->yystack[$this->yyidx + 0]->minor; $this->compiler->tag_nocache=$this->compiler->tag_nocache|$this->template->getVariable(trim($this->yystack[$this->yyidx + -1]->minor['var'],"'"), null, true, false)->nocache;}    }
-#line 2278 "smarty_internal_templateparser.php"
-#line 446 "smarty_internal_templateparser.y"
-    function yy_r128(){ if ($this->yystack[$this->yyidx + -2]->minor['var'] == '\'smarty\'') { $this->_retvalue =  $this->compiler->compileTag('private_special_variable',$this->yystack[$this->yyidx + -2]->minor['smarty_internal_index']).'::'.$this->yystack[$this->yyidx + 0]->minor;} else {
-                                                         $this->_retvalue = '$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + -2]->minor['var'] .')->value'.$this->yystack[$this->yyidx + -2]->minor['smarty_internal_index'].'::'.$this->yystack[$this->yyidx + 0]->minor; $this->compiler->tag_nocache=$this->compiler->tag_nocache|$this->template->getVariable(trim($this->yystack[$this->yyidx + -2]->minor['var'],"'"), null, true, false)->nocache;}    }
-#line 2282 "smarty_internal_templateparser.php"
-#line 449 "smarty_internal_templateparser.y"
-    function yy_r129(){$this->_retvalue  = $this->yystack[$this->yyidx + 0]->minor;     }
-#line 2285 "smarty_internal_templateparser.php"
-#line 451 "smarty_internal_templateparser.y"
-    function yy_r130(){$this->_retvalue  = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;     }
-#line 2288 "smarty_internal_templateparser.php"
-#line 453 "smarty_internal_templateparser.y"
-    function yy_r131(){ $this->_retvalue = '->'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;    }
-#line 2291 "smarty_internal_templateparser.php"
-#line 454 "smarty_internal_templateparser.y"
-    function yy_r132(){ $this->_retvalue = '->{'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor.'}';    }
-#line 2294 "smarty_internal_templateparser.php"
+#line 2343 "smarty_internal_templateparser.php"
 #line 455 "smarty_internal_templateparser.y"
-    function yy_r133(){ $this->_retvalue = '->{'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}';    }
-#line 2297 "smarty_internal_templateparser.php"
-#line 456 "smarty_internal_templateparser.y"
-    function yy_r134(){ $this->_retvalue = '->{\''.$this->yystack[$this->yyidx + -4]->minor.'\'.'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}';    }
-#line 2300 "smarty_internal_templateparser.php"
-#line 458 "smarty_internal_templateparser.y"
-    function yy_r135(){ $this->_retvalue = '->'.$this->yystack[$this->yyidx + 0]->minor;    }
-#line 2303 "smarty_internal_templateparser.php"
+    function yy_r128(){$this->_retvalue  = $this->yystack[$this->yyidx + 0]->minor;     }
+#line 2346 "smarty_internal_templateparser.php"
+#line 457 "smarty_internal_templateparser.y"
+    function yy_r129(){$this->_retvalue  = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;     }
+#line 2349 "smarty_internal_templateparser.php"
+#line 459 "smarty_internal_templateparser.y"
+    function yy_r130(){ $this->_retvalue = '->'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;    }
+#line 2352 "smarty_internal_templateparser.php"
+#line 460 "smarty_internal_templateparser.y"
+    function yy_r131(){ $this->_retvalue = '->{$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + -1]->minor .')->value'.$this->yystack[$this->yyidx + 0]->minor.'}'; $this->compiler->tag_nocache=$this->compiler->tag_nocache|$this->template->getVariable(trim($this->yystack[$this->yyidx + -1]->minor,"'"), null, true, false)->nocache;    }
+#line 2355 "smarty_internal_templateparser.php"
+#line 461 "smarty_internal_templateparser.y"
+    function yy_r132(){ $this->_retvalue = '->{'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}';    }
+#line 2358 "smarty_internal_templateparser.php"
+#line 462 "smarty_internal_templateparser.y"
+    function yy_r133(){ $this->_retvalue = '->{\''.$this->yystack[$this->yyidx + -4]->minor.'\'.'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}';    }
+#line 2361 "smarty_internal_templateparser.php"
 #line 464 "smarty_internal_templateparser.y"
-    function yy_r136(){if (!$this->template->security || $this->smarty->security_handler->isTrustedPhpFunction($this->yystack[$this->yyidx + -3]->minor, $this->compiler)) {
+    function yy_r134(){ $this->_retvalue = '->'.$this->yystack[$this->yyidx + 0]->minor;    }
+#line 2364 "smarty_internal_templateparser.php"
+#line 470 "smarty_internal_templateparser.y"
+    function yy_r135(){if (!$this->template->security || $this->smarty->security_handler->isTrustedPhpFunction($this->yystack[$this->yyidx + -3]->minor, $this->compiler)) {
 																					            if ($this->yystack[$this->yyidx + -3]->minor == 'isset' || $this->yystack[$this->yyidx + -3]->minor == 'empty' || $this->yystack[$this->yyidx + -3]->minor == 'array' || is_callable($this->yystack[$this->yyidx + -3]->minor)) {
 																					                $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . "(". $this->yystack[$this->yyidx + -1]->minor .")";
 																					            } else {
                                                        $this->compiler->trigger_template_error ("unknown function \"" . $this->yystack[$this->yyidx + -3]->minor . "\"");
                                                       }
                                                     }    }
-#line 2312 "smarty_internal_templateparser.php"
-#line 475 "smarty_internal_templateparser.y"
-    function yy_r137(){ $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . "(". $this->yystack[$this->yyidx + -1]->minor .")";    }
-#line 2315 "smarty_internal_templateparser.php"
-#line 479 "smarty_internal_templateparser.y"
+#line 2373 "smarty_internal_templateparser.php"
+#line 481 "smarty_internal_templateparser.y"
+    function yy_r136(){ $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . "(". $this->yystack[$this->yyidx + -1]->minor .")";    }
+#line 2376 "smarty_internal_templateparser.php"
+#line 482 "smarty_internal_templateparser.y"
+    function yy_r137(){ $this->prefix_number++; $this->compiler->prefix_code[] = 'prefix_number.'=$_smarty_tpl->getVariable(\''. $this->yystack[$this->yyidx + -3]->minor .'\')->value;?>'; $this->_retvalue = '$_tmp'.$this->prefix_number.'('. $this->yystack[$this->yyidx + -1]->minor .')';    }
+#line 2379 "smarty_internal_templateparser.php"
+#line 486 "smarty_internal_templateparser.y"
     function yy_r138(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.",".$this->yystack[$this->yyidx + 0]->minor;    }
-#line 2318 "smarty_internal_templateparser.php"
-#line 483 "smarty_internal_templateparser.y"
+#line 2382 "smarty_internal_templateparser.php"
+#line 490 "smarty_internal_templateparser.y"
     function yy_r140(){ return;    }
-#line 2321 "smarty_internal_templateparser.php"
-#line 488 "smarty_internal_templateparser.y"
+#line 2385 "smarty_internal_templateparser.php"
+#line 495 "smarty_internal_templateparser.y"
     function yy_r141(){ $this->_retvalue =  $this->yystack[$this->yyidx + 0]->minor;    }
-#line 2324 "smarty_internal_templateparser.php"
-#line 493 "smarty_internal_templateparser.y"
-    function yy_r144(){ $this->prefix_number++; $this->compiler->prefix_code[] = 'prefix_number.'=$_smarty_tpl->getVariable(\''. $this->yystack[$this->yyidx + -3]->minor .'\')->value;?>'; $this->_retvalue = '$_tmp'.$this->prefix_number.'('. $this->yystack[$this->yyidx + -1]->minor .')';     }
-#line 2327 "smarty_internal_templateparser.php"
-#line 496 "smarty_internal_templateparser.y"
-    function yy_r146(){ $this->prefix_number++; $this->compiler->prefix_code[] = 'prefix_number.'=$_smarty_tpl->getVariable(\''. $this->yystack[$this->yyidx + -4]->minor .'\')->value;?>'; $this->_retvalue = '$_tmp'.$this->prefix_number.'('. $this->yystack[$this->yyidx + -2]->minor .')'.$this->yystack[$this->yyidx + 0]->minor;     }
-#line 2330 "smarty_internal_templateparser.php"
-#line 500 "smarty_internal_templateparser.y"
-    function yy_r148(){ $this->_retvalue = '$'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;    }
-#line 2333 "smarty_internal_templateparser.php"
-#line 502 "smarty_internal_templateparser.y"
-    function yy_r149(){ $this->_retvalue = '$'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;    }
-#line 2336 "smarty_internal_templateparser.php"
-#line 513 "smarty_internal_templateparser.y"
-    function yy_r150(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;    }
-#line 2339 "smarty_internal_templateparser.php"
-#line 517 "smarty_internal_templateparser.y"
-    function yy_r152(){$this->_retvalue = ','.$this->yystack[$this->yyidx + 0]->minor;    }
-#line 2342 "smarty_internal_templateparser.php"
-#line 521 "smarty_internal_templateparser.y"
-    function yy_r154(){$this->_retvalue = '==';    }
-#line 2345 "smarty_internal_templateparser.php"
+#line 2388 "smarty_internal_templateparser.php"
+#line 505 "smarty_internal_templateparser.y"
+    function yy_r146(){ $this->_retvalue = '$'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;    }
+#line 2391 "smarty_internal_templateparser.php"
+#line 507 "smarty_internal_templateparser.y"
+    function yy_r147(){ $this->_retvalue = '$'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;    }
+#line 2394 "smarty_internal_templateparser.php"
+#line 518 "smarty_internal_templateparser.y"
+    function yy_r148(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;    }
+#line 2397 "smarty_internal_templateparser.php"
 #line 522 "smarty_internal_templateparser.y"
-    function yy_r155(){$this->_retvalue = '!=';    }
-#line 2348 "smarty_internal_templateparser.php"
-#line 523 "smarty_internal_templateparser.y"
-    function yy_r156(){$this->_retvalue = '>';    }
-#line 2351 "smarty_internal_templateparser.php"
-#line 524 "smarty_internal_templateparser.y"
-    function yy_r157(){$this->_retvalue = '<';    }
-#line 2354 "smarty_internal_templateparser.php"
-#line 525 "smarty_internal_templateparser.y"
-    function yy_r158(){$this->_retvalue = '>=';    }
-#line 2357 "smarty_internal_templateparser.php"
+    function yy_r150(){$this->_retvalue = ','.$this->yystack[$this->yyidx + 0]->minor;    }
+#line 2400 "smarty_internal_templateparser.php"
 #line 526 "smarty_internal_templateparser.y"
-    function yy_r159(){$this->_retvalue = '<=';    }
-#line 2360 "smarty_internal_templateparser.php"
+    function yy_r152(){$this->_retvalue = '==';    }
+#line 2403 "smarty_internal_templateparser.php"
 #line 527 "smarty_internal_templateparser.y"
-    function yy_r160(){$this->_retvalue = '===';    }
-#line 2363 "smarty_internal_templateparser.php"
+    function yy_r153(){$this->_retvalue = '!=';    }
+#line 2406 "smarty_internal_templateparser.php"
 #line 528 "smarty_internal_templateparser.y"
-    function yy_r161(){$this->_retvalue = '!==';    }
-#line 2366 "smarty_internal_templateparser.php"
+    function yy_r154(){$this->_retvalue = '>';    }
+#line 2409 "smarty_internal_templateparser.php"
 #line 529 "smarty_internal_templateparser.y"
-    function yy_r162(){$this->_retvalue = '%';    }
-#line 2369 "smarty_internal_templateparser.php"
+    function yy_r155(){$this->_retvalue = '<';    }
+#line 2412 "smarty_internal_templateparser.php"
+#line 530 "smarty_internal_templateparser.y"
+    function yy_r156(){$this->_retvalue = '>=';    }
+#line 2415 "smarty_internal_templateparser.php"
 #line 531 "smarty_internal_templateparser.y"
-    function yy_r163(){$this->_retvalue = '&&';    }
-#line 2372 "smarty_internal_templateparser.php"
+    function yy_r157(){$this->_retvalue = '<=';    }
+#line 2418 "smarty_internal_templateparser.php"
 #line 532 "smarty_internal_templateparser.y"
-    function yy_r164(){$this->_retvalue = '||';    }
-#line 2375 "smarty_internal_templateparser.php"
+    function yy_r158(){$this->_retvalue = '===';    }
+#line 2421 "smarty_internal_templateparser.php"
 #line 533 "smarty_internal_templateparser.y"
-    function yy_r165(){$this->_retvalue = ' XOR ';    }
-#line 2378 "smarty_internal_templateparser.php"
+    function yy_r159(){$this->_retvalue = '!==';    }
+#line 2424 "smarty_internal_templateparser.php"
+#line 534 "smarty_internal_templateparser.y"
+    function yy_r160(){$this->_retvalue = '%';    }
+#line 2427 "smarty_internal_templateparser.php"
+#line 536 "smarty_internal_templateparser.y"
+    function yy_r161(){$this->_retvalue = '&&';    }
+#line 2430 "smarty_internal_templateparser.php"
+#line 537 "smarty_internal_templateparser.y"
+    function yy_r162(){$this->_retvalue = '||';    }
+#line 2433 "smarty_internal_templateparser.php"
 #line 538 "smarty_internal_templateparser.y"
-    function yy_r166(){ $this->_retvalue = 'array('.$this->yystack[$this->yyidx + -1]->minor.')';    }
-#line 2381 "smarty_internal_templateparser.php"
-#line 540 "smarty_internal_templateparser.y"
-    function yy_r168(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor;     }
-#line 2384 "smarty_internal_templateparser.php"
-#line 541 "smarty_internal_templateparser.y"
-    function yy_r169(){ return;     }
-#line 2387 "smarty_internal_templateparser.php"
-#line 542 "smarty_internal_templateparser.y"
-    function yy_r170(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'=>'.$this->yystack[$this->yyidx + 0]->minor;    }
-#line 2390 "smarty_internal_templateparser.php"
+    function yy_r163(){$this->_retvalue = ' XOR ';    }
+#line 2436 "smarty_internal_templateparser.php"
 #line 543 "smarty_internal_templateparser.y"
-    function yy_r171(){ $this->_retvalue = '\''.$this->yystack[$this->yyidx + -2]->minor.'\'=>'.$this->yystack[$this->yyidx + 0]->minor;    }
-#line 2393 "smarty_internal_templateparser.php"
-#line 550 "smarty_internal_templateparser.y"
-    function yy_r173(){ $this->_retvalue = "''";     }
-#line 2396 "smarty_internal_templateparser.php"
-#line 551 "smarty_internal_templateparser.y"
-    function yy_r174(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor->to_smarty_php();     }
-#line 2399 "smarty_internal_templateparser.php"
-#line 553 "smarty_internal_templateparser.y"
-    function yy_r175(){ $this->yystack[$this->yyidx + -1]->minor->append_subtree($this->yystack[$this->yyidx + 0]->minor); $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;     }
-#line 2402 "smarty_internal_templateparser.php"
-#line 554 "smarty_internal_templateparser.y"
-    function yy_r176(){ $this->_retvalue = new _smarty_doublequoted($this, $this->yystack[$this->yyidx + 0]->minor);     }
-#line 2405 "smarty_internal_templateparser.php"
+    function yy_r164(){ $this->_retvalue = 'array('.$this->yystack[$this->yyidx + -1]->minor.')';    }
+#line 2439 "smarty_internal_templateparser.php"
+#line 545 "smarty_internal_templateparser.y"
+    function yy_r166(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor;     }
+#line 2442 "smarty_internal_templateparser.php"
+#line 546 "smarty_internal_templateparser.y"
+    function yy_r167(){ return;     }
+#line 2445 "smarty_internal_templateparser.php"
+#line 547 "smarty_internal_templateparser.y"
+    function yy_r168(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'=>'.$this->yystack[$this->yyidx + 0]->minor;    }
+#line 2448 "smarty_internal_templateparser.php"
+#line 548 "smarty_internal_templateparser.y"
+    function yy_r169(){ $this->_retvalue = '\''.$this->yystack[$this->yyidx + -2]->minor.'\'=>'.$this->yystack[$this->yyidx + 0]->minor;    }
+#line 2451 "smarty_internal_templateparser.php"
+#line 555 "smarty_internal_templateparser.y"
+    function yy_r171(){ $this->_retvalue = "''";     }
+#line 2454 "smarty_internal_templateparser.php"
 #line 556 "smarty_internal_templateparser.y"
-    function yy_r177(){ $this->_retvalue = new _smarty_code($this, $this->yystack[$this->yyidx + -1]->minor);     }
-#line 2408 "smarty_internal_templateparser.php"
+    function yy_r172(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor->to_smarty_php();     }
+#line 2457 "smarty_internal_templateparser.php"
 #line 558 "smarty_internal_templateparser.y"
-    function yy_r179(){if (isset($this->compiler->local_var["'".substr($this->yystack[$this->yyidx + 0]->minor,1)."'"])) {
+    function yy_r173(){ $this->yystack[$this->yyidx + -1]->minor->append_subtree($this->yystack[$this->yyidx + 0]->minor); $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;     }
+#line 2460 "smarty_internal_templateparser.php"
+#line 559 "smarty_internal_templateparser.y"
+    function yy_r174(){ $this->_retvalue = new _smarty_doublequoted($this, $this->yystack[$this->yyidx + 0]->minor);     }
+#line 2463 "smarty_internal_templateparser.php"
+#line 561 "smarty_internal_templateparser.y"
+    function yy_r175(){ $this->_retvalue = new _smarty_code($this, $this->yystack[$this->yyidx + -1]->minor);     }
+#line 2466 "smarty_internal_templateparser.php"
+#line 563 "smarty_internal_templateparser.y"
+    function yy_r177(){if (isset($this->compiler->local_var["'".substr($this->yystack[$this->yyidx + 0]->minor,1)."'"])) {
                                                        $this->_retvalue = new _smarty_code($this, '$_smarty_tpl->tpl_vars[\''. substr($this->yystack[$this->yyidx + 0]->minor,1) .'\']->value');
                                                       } else {
                                                        $this->_retvalue = new _smarty_code($this, '$_smarty_tpl->getVariable(\''. substr($this->yystack[$this->yyidx + 0]->minor,1) .'\')->value');
                                                       }
                                                       $this->compiler->tag_nocache = $this->compiler->tag_nocache | $this->template->getVariable(trim($this->yystack[$this->yyidx + 0]->minor,"'"), null, true, false)->nocache;
       }
-#line 2417 "smarty_internal_templateparser.php"
-#line 566 "smarty_internal_templateparser.y"
-    function yy_r181(){ $this->_retvalue = new _smarty_code($this, '('.$this->yystack[$this->yyidx + -1]->minor.')');     }
-#line 2420 "smarty_internal_templateparser.php"
-#line 567 "smarty_internal_templateparser.y"
-    function yy_r182(){
+#line 2475 "smarty_internal_templateparser.php"
+#line 571 "smarty_internal_templateparser.y"
+    function yy_r179(){ $this->_retvalue = new _smarty_code($this, '('.$this->yystack[$this->yyidx + -1]->minor.')');     }
+#line 2478 "smarty_internal_templateparser.php"
+#line 572 "smarty_internal_templateparser.y"
+    function yy_r180(){
    $this->_retvalue = new _smarty_tag($this, $this->yystack[$this->yyidx + 0]->minor);
       }
-#line 2425 "smarty_internal_templateparser.php"
-#line 570 "smarty_internal_templateparser.y"
-    function yy_r183(){ $this->_retvalue = new _smarty_dq_content($this, $this->yystack[$this->yyidx + 0]->minor);     }
-#line 2428 "smarty_internal_templateparser.php"
+#line 2483 "smarty_internal_templateparser.php"
+#line 575 "smarty_internal_templateparser.y"
+    function yy_r181(){ $this->_retvalue = new _smarty_dq_content($this, $this->yystack[$this->yyidx + 0]->minor);     }
+#line 2486 "smarty_internal_templateparser.php"
 
     private $_retvalue;
 
@@ -2492,7 +2549,7 @@ static public $yy_action = array(
     $this->internalError = true;
     $this->yymajor = $yymajor;
     $this->compiler->trigger_template_error();
-#line 2491 "smarty_internal_templateparser.php"
+#line 2549 "smarty_internal_templateparser.php"
     }
 
     function yy_accept()
@@ -2509,7 +2566,7 @@ static public $yy_action = array(
     $this->internalError = false;
     $this->retvalue = $this->_retvalue;
     //echo $this->retvalue."\n\n";
-#line 2509 "smarty_internal_templateparser.php"
+#line 2567 "smarty_internal_templateparser.php"
     }
 
     function doParse($yymajor, $yytokenvalue)
-- 
2.30.2