MTurbo - Version 1.2.2

Version Notes

Visit product homepage at:
http://www.artio.net/magento-extensions/m-turbo-accelerator

Download this release

Release Info

Developer Magento Core Team
Extension MTurbo
Version 1.2.2
Comparing to
See all releases


Code changes from version 1.2.1 to 1.2.2

app/code/local/Artio/MTurbo/Block/Adminhtml/Edit/Tab/Actions.php CHANGED
@@ -70,7 +70,7 @@ class Artio_MTurbo_Block_Adminhtml_Edit_Tab_Actions extends Artio_MTurbo_Block_A
70
  'name' => 'syn_button',
71
  'label' => $this->getMyHelper()->__('Update URLs from Rewrite Table'),
72
  'onclick' => "setLocation('" . Mage::helper('adminhtml')->getUrl('*/*/synchronize') . "')",
73
- 'comment' => $this->getMyHelper()->__('Launchng this action will update cached URLs based on current values from the Rewrite Table. We recommend runing this action after major modifications to the products or categories.')
74
  ));
75
 
76
  $layoutFieldset->addField('generate_button', 'widget_button', array(
70
  'name' => 'syn_button',
71
  'label' => $this->getMyHelper()->__('Update URLs from Rewrite Table'),
72
  'onclick' => "setLocation('" . Mage::helper('adminhtml')->getUrl('*/*/synchronize') . "')",
73
+ 'comment' => $this->getMyHelper()->__('Launching this action will update cached URLs based on current values from the Rewrite Table. We recommend runing this action after major modifications to the products or categories.')
74
  ));
75
 
76
  $layoutFieldset->addField('generate_button', 'widget_button', array(
app/code/local/Artio/MTurbo/Block/Adminhtml/Edit/Tab/Dynamic.php CHANGED
@@ -36,18 +36,27 @@ class Artio_MTurbo_Block_Adminhtml_Edit_Tab_Dynamic
36
  extends Artio_MTurbo_Block_Adminhtml_Edit_Tab_Abstract
37
  {
38
 
 
 
 
39
  public function __construct() {
40
  parent::__construct();
41
  $this->setId('dynamic_section');
42
  $this->_title = $this->getMyHelper()->__('Dynamic loaded blocks');
43
  }
44
 
 
 
 
 
45
  protected function _prepareForm() {
46
 
 
47
  $config = Mage::getSingleton('mturbo/config');
48
 
49
  $form = new Varien_Data_Form();
50
-
 
51
  $layoutPatch = Mage::getSingleton('mturbo/layoutPatch');
52
  if ($layoutPatch->needToPatch()) {
53
  $this->_addLayoutPatchFieldset($form);
@@ -55,44 +64,49 @@ class Artio_MTurbo_Block_Adminhtml_Edit_Tab_Dynamic
55
 
56
  if (!$layoutPatch->needToPatch() || $layoutPatch->isPatched()) {
57
 
58
- /* fieldset for automatic refresh */
59
- $layoutFieldsetDefault = $form->addFieldset('dynamic_block_default', array(
60
- 'legend' => $this->getMyHelper()->__( 'Default dynamic loaded blocks' ),
61
- 'class' => 'fieldset'
62
- ));
63
-
64
- $layoutFieldsetDefault->addField('cartsidebar', 'select', array(
65
- 'name' => 'cartsidebar',
66
- 'label' => $this->getMyHelper()->__('Cart Block (sidebar)').':',
67
- 'options' => array(
68
- 0 => $this->getMyHelper()->__('No'),
69
- 1 => $this->getMyHelper()->__ ( 'Yes' ))));
70
-
71
- $layoutFieldsetDefault->addField('pollsidebar', 'select', array(
72
- 'name' => 'pollsidebar',
73
- 'label' => $this->getMyHelper()->__('Poll Block (sidebar)').':',
74
- 'options' => array(
75
- 0 => $this->getMyHelper()->__('No'),
76
- 1 => $this->getMyHelper()->__ ( 'Yes' ))));
77
-
78
- $layoutFieldsetDefault->addField('comparesidebar', 'select', array(
79
- 'name' => 'comparesidebar',
80
- 'label' => $this->getMyHelper()->__('Compare Block (sidebar)').':',
81
- 'options' => array(
82
- 0 => $this->getMyHelper()->__('No'),
83
- 1 => $this->getMyHelper()->__ ( 'Yes' ))));
84
-
85
-
86
-
87
- $layoutFieldsetUser = $form->addFieldset('dynamic_block_user', array(
88
- 'legend' => $this->getMyHelper()->__( 'User dynamic loaded blocks (only for advanced developers).' ),
89
- 'class' => 'fieldset'
90
- ));
91
-
92
- $layoutFieldsetUser->addField('userblocks', 'textarea', array(
93
- 'name' => 'userblocks',
94
- 'label' => $this->getMyHelper()->__('Layout names of dynamic loaded blocks').':',
95
- 'after_element_html' => '<span><i>'.$this->getMyHelper()->__("Values separated by (',').").'</i></span>'));
 
 
 
 
 
96
 
97
  }
98
 
@@ -104,10 +118,12 @@ class Artio_MTurbo_Block_Adminhtml_Edit_Tab_Dynamic
104
  }
105
 
106
  /**
107
- * Fieldset for layout.
108
- */
 
109
  private function _addLayoutPatchFieldset($form) {
110
 
 
111
  $patchModel = Mage::getSingleton('mturbo/layoutPatch');
112
 
113
  /* make fieldset */
@@ -141,5 +157,40 @@ class Artio_MTurbo_Block_Adminhtml_Edit_Tab_Dynamic
141
 
142
 
143
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
144
 
145
  }
36
  extends Artio_MTurbo_Block_Adminhtml_Edit_Tab_Abstract
37
  {
38
 
39
+ /**
40
+ * Constructor.
41
+ */
42
  public function __construct() {
43
  parent::__construct();
44
  $this->setId('dynamic_section');
45
  $this->_title = $this->getMyHelper()->__('Dynamic loaded blocks');
46
  }
47
 
48
+ /**
49
+ * (non-PHPdoc)
50
+ * @see Mage_Adminhtml_Block_Widget_Form::_prepareForm()
51
+ */
52
  protected function _prepareForm() {
53
 
54
+ /* @var $config Artio_MTurbo_Model_Config */
55
  $config = Mage::getSingleton('mturbo/config');
56
 
57
  $form = new Varien_Data_Form();
58
+
59
+ /* @var $layoutPatch Artio_MTurbo_Model_LayoutPatch */
60
  $layoutPatch = Mage::getSingleton('mturbo/layoutPatch');
61
  if ($layoutPatch->needToPatch()) {
62
  $this->_addLayoutPatchFieldset($form);
64
 
65
  if (!$layoutPatch->needToPatch() || $layoutPatch->isPatched()) {
66
 
67
+ /* fieldset for automatic refresh */
68
+ $layoutFieldsetDefault = $form->addFieldset('dynamic_block_default', array(
69
+ 'legend' => $this->getMyHelper()->__( 'Default dynamic loaded blocks' ),
70
+ 'class' => 'fieldset'
71
+ ));
72
+
73
+ $layoutFieldsetDefault->addField('cartsidebar', 'select', array(
74
+ 'name' => 'cartsidebar',
75
+ 'label' => $this->getMyHelper()->__('Cart Block (sidebar)').':',
76
+ 'options' => array(
77
+ 0 => $this->getMyHelper()->__('No'),
78
+ 1 => $this->getMyHelper()->__ ( 'Yes' ))
79
+ ));
80
+
81
+ $layoutFieldsetDefault->addField('pollsidebar', 'select', array(
82
+ 'name' => 'pollsidebar',
83
+ 'label' => $this->getMyHelper()->__('Poll Block (sidebar)').':',
84
+ 'options' => array(
85
+ 0 => $this->getMyHelper()->__('No'),
86
+ 1 => $this->getMyHelper()->__ ( 'Yes' ))
87
+ ));
88
+
89
+ $layoutFieldsetDefault->addField('comparesidebar', 'select', array(
90
+ 'name' => 'comparesidebar',
91
+ 'label' => $this->getMyHelper()->__('Compare Block (sidebar)').':',
92
+ 'options' => array(
93
+ 0 => $this->getMyHelper()->__('No'),
94
+ 1 => $this->getMyHelper()->__ ( 'Yes' ))
95
+ ));
96
+
97
+
98
+ $layoutFieldsetUser = $form->addFieldset('dynamic_block_user', array(
99
+ 'legend' => $this->getMyHelper()->__( 'User dynamic loaded blocks (only for advanced developers).' ),
100
+ 'class' => 'fieldset'
101
+ ));
102
+
103
+ $layoutFieldsetUser->addField('userblocks', 'textarea', array(
104
+ 'name' => 'userblocks',
105
+ 'label' => $this->getMyHelper()->__('Layout names of dynamic loaded blocks').':',
106
+ 'after_element_html' => '<span><i>'.$this->getMyHelper()->__("Values separated by (',').").'</i></span>'
107
+ ));
108
+
109
+ $this->_addJsFixFieldset($form);
110
 
111
  }
112
 
118
  }
119
 
120
  /**
121
+ * Method adds fieldset for patching layout to form.
122
+ * @param Varien_Data_Form $form
123
+ */
124
  private function _addLayoutPatchFieldset($form) {
125
 
126
+ /* @var $patchModel Artio_MTurbo_Model_LayoutPatch */
127
  $patchModel = Mage::getSingleton('mturbo/layoutPatch');
128
 
129
  /* make fieldset */
157
 
158
 
159
  }
160
+
161
+ /**
162
+ * Method adds fieldset for copying js file into all theme package.
163
+ * @param Varien_Data_Form $form
164
+ */
165
+ private function _addJsFixFieldset($form) {
166
+
167
+ $layoutFieldset = $form->addFieldset('layout_fieldset_watcher', array(
168
+ 'legend' => $this->getMyHelper()->__('JavaScript Watcher (this control watches existing javascript in all your theme packages)'),
169
+ 'class' => 'fieldset'
170
+ ));
171
+
172
+ /* @var $js Artio_MTurbo_Model_JsPatch */
173
+ $js = Mage::getSingleton('mturbo/jsPatch');
174
+
175
+ /* @var $themePackage Artio_MTurbo_Model_JsPatch */
176
+ $layoutFieldset->addType('html_element', Artio_MTurbo_Helper_Data::FORM_HTML);
177
+ foreach ($js->getAvailableThemePackages() as $i=>$themePackage) {
178
+
179
+ if (!$themePackage->existsJs() && !$themePackage->makeJs()) {
180
+ $html = '<span style="color:red">'.$this->getMyHelper()->__("Copying js file failed! Dynamic blocks won't work for this theme. Copy 'mturbo.js' from default theme, please!").'</span>';
181
+ } else {
182
+ $html = '<span style="color:green">'.$this->getMyHelper()->__("OK").'</span>';
183
+ }
184
+
185
+ $layoutFieldset->addField ('jsstate'.$i, 'html_element',
186
+ array (
187
+ 'label' => '<b style="font-size:10px">'.str_replace(Mage::getBaseDir().DS.'skin'.DS.'frontend', '', $themePackage->getJsPath()).'</b>',
188
+ 'code' => $html)
189
+ );
190
+
191
+ }
192
+
193
+
194
+ }
195
 
196
  }
app/code/local/Artio/MTurbo/Block/Adminhtml/Edit/Tab/Main.php CHANGED
@@ -80,7 +80,7 @@ class Artio_MTurbo_Block_Adminhtml_Edit_Tab_Main extends Artio_MTurbo_Block_Admi
80
  $layoutFieldset->addField('turbopath', 'text', array(
81
  'name' => 'turbopath',
82
  'label' => $this->getMyHelper()->__('Relative path from webroot').':',
83
- 'value' => 'var/turbocache'));
84
 
85
  }
86
 
80
  $layoutFieldset->addField('turbopath', 'text', array(
81
  'name' => 'turbopath',
82
  'label' => $this->getMyHelper()->__('Relative path from webroot').':',
83
+ 'value' => 'var'.DS.'turbocache'));
84
 
85
  }
86
 
app/code/local/Artio/MTurbo/Block/Adminhtml/Edit/Tab/Website.php CHANGED
@@ -59,8 +59,10 @@ class Artio_MTurbo_Block_Adminhtml_Edit_Tab_Website extends Artio_MTurbo_Block_A
59
  /* for every website add one fieldset */
60
  $websiteCollection = Mage::getModel('core/website')->getCollection()->load();
61
  foreach ($websiteCollection as $website) {
62
- $this->_addWebsiteFieldset($website);
63
- break;
 
 
64
  }
65
 
66
  /* bind data */
59
  /* for every website add one fieldset */
60
  $websiteCollection = Mage::getModel('core/website')->getCollection()->load();
61
  foreach ($websiteCollection as $website) {
62
+ if ($website->getDefaultStore()) {
63
+ $this->_addWebsiteFieldset($website);
64
+ break;
65
+ }
66
  }
67
 
68
  /* bind data */
app/code/local/Artio/MTurbo/Block/Adminhtml/Welcome/Form.php CHANGED
@@ -48,14 +48,16 @@ class Artio_MTurbo_Block_Adminhtml_Welcome_Form extends Mage_Adminhtml_Block_Wid
48
  $layoutFieldset->addField('turbopath', 'text', array(
49
  'name' => 'turbopath',
50
  'label' => Mage::helper('mturbo')->__('Cache Path').':',
51
- 'value' => 'var/turbocache'
52
  ));
53
 
54
  /* for every website add one fieldset */
55
  $websiteCollection = Mage::getModel('core/website')->getCollection()->load();
56
  foreach ($websiteCollection as $website) {
57
- $this->_addWebsiteFieldset($website, $form);
58
- break;
 
 
59
  }
60
 
61
  $form->addType('widget_button', Artio_MTurbo_Helper_Data::FORM_WIDGET_BUTTON);
48
  $layoutFieldset->addField('turbopath', 'text', array(
49
  'name' => 'turbopath',
50
  'label' => Mage::helper('mturbo')->__('Cache Path').':',
51
+ 'value' => 'var'.DS.'turbocache'
52
  ));
53
 
54
  /* for every website add one fieldset */
55
  $websiteCollection = Mage::getModel('core/website')->getCollection()->load();
56
  foreach ($websiteCollection as $website) {
57
+ if ($website->getDefaultStore()) {
58
+ $this->_addWebsiteFieldset($website, $form);
59
+ break;
60
+ }
61
  }
62
 
63
  $form->addType('widget_button', Artio_MTurbo_Helper_Data::FORM_WIDGET_BUTTON);
app/code/local/Artio/MTurbo/Block/Ajax.php CHANGED
@@ -52,11 +52,13 @@ class Artio_MTurbo_Block_Ajax extends Mage_Core_Block_Template
52
  <script type=\"text/javascript\">
53
  //<![CDATA[
54
  function fillBlock".$clearId."() {
55
- mturboloader;
56
- if (mturboloader.complete) {
57
- document.getElementById('".$id."').innerHTML = mturboloader.getBlock('".$id."');
58
- } else {
59
- setTimeout('fillBlock".$clearId."()', 100);
 
 
60
  }
61
  }
62
  fillBlock".$clearId."();
52
  <script type=\"text/javascript\">
53
  //<![CDATA[
54
  function fillBlock".$clearId."() {
55
+ if (typeof(mturboloader)!='undefined') {
56
+ mturboloader;
57
+ if (mturboloader.complete) {
58
+ document.getElementById('".$id."').innerHTML = mturboloader.getBlock('".$id."');
59
+ } else {
60
+ setTimeout('fillBlock".$clearId."()', 100);
61
+ }
62
  }
63
  }
64
  fillBlock".$clearId."();
app/code/local/Artio/MTurbo/Helper/Data.php CHANGED
@@ -31,7 +31,7 @@ class Artio_MTurbo_Helper_Data extends Mage_Core_Helper_Abstract
31
  /* constant for version information */
32
  const MAJOR_VERSION = 1;
33
  const MINOR_VERSION = 2;
34
- const REVISION = 1;
35
  const BUILD = 0;
36
  const DESCRIPTION = 'Demo version. Copyright &copy; 2010-11 Artio';
37
  const TYPE = 'demo';
@@ -158,7 +158,7 @@ class Artio_MTurbo_Helper_Data extends Mage_Core_Helper_Abstract
158
  * @return string
159
  */
160
  public static function getFullDownloadScriptPath() {
161
- return Mage::getBaseDir().DS.'app/code/local/Artio/MTurbo/Model/scripts/getstatichtml.sh';
162
  }
163
 
164
  /**
@@ -167,7 +167,7 @@ class Artio_MTurbo_Helper_Data extends Mage_Core_Helper_Abstract
167
  * @return string
168
  */
169
  public static function getFullRemoveScriptPath() {
170
- return Mage::getBaseDir().DS.'app/code/local/Artio/MTurbo/Model/scripts/removehtml.sh';
171
  }
172
 
173
  private static $_noRouteTitle = '';
31
  /* constant for version information */
32
  const MAJOR_VERSION = 1;
33
  const MINOR_VERSION = 2;
34
+ const REVISION = 2;
35
  const BUILD = 0;
36
  const DESCRIPTION = 'Demo version. Copyright &copy; 2010-11 Artio';
37
  const TYPE = 'demo';
158
  * @return string
159
  */
160
  public static function getFullDownloadScriptPath() {
161
+ return Mage::getBaseDir().DS.'app'.DS.'code'.DS.'local'.DS.'Artio'.DS.'MTurbo'.DS.'Model'.DS.'scripts'.DS.'getstatichtml.sh';
162
  }
163
 
164
  /**
167
  * @return string
168
  */
169
  public static function getFullRemoveScriptPath() {
170
+ return Mage::getBaseDir().DS.'app'.DS.'code'.DS.'local'.DS.'Artio'.DS.'MTurbo'.DS.'Model'.DS.'scripts'.DS.'removehtml.sh';
171
  }
172
 
173
  private static $_noRouteTitle = '';
app/code/local/Artio/MTurbo/Helper/Downloader.php CHANGED
@@ -28,8 +28,15 @@
28
  */
29
  class Artio_MTurbo_Helper_Downloader extends Mage_Core_Helper_Abstract {
30
 
 
 
 
 
31
  const SERVER_UPGRADER = 'http://www.artio.net/updater';
32
 
 
 
 
33
  public function downloadAndUpgrade() {
34
 
35
  $regInfo = Mage::helper('mturbo/info')->getRegInfo();
@@ -42,25 +49,29 @@ class Artio_MTurbo_Helper_Downloader extends Mage_Core_Helper_Abstract {
42
 
43
  }
44
 
 
 
 
 
45
  function downloadAndInstall() {
46
 
47
  $config = Artio_MTurbo_Helper_Data::getConfig();
48
- $artioDownloadId = $config->getDownloadId();
49
 
50
- /* make sure that zlib is loaded so that the package can be unpacked */
51
- if (!extension_loaded('zlib')) {
52
- $message = Mage::helper('mturbo')->__('Extension ZLIB is not loaded.');
53
- Mage::log("MTurbo: $message");
54
- return $message;
55
- }
56
 
57
- /* build the appropriate paths */
58
- $tmp_dest = Mage::getBaseDir().DS.'downloader/pearlib/download/mturbo.zip';
59
-
60
- /* validate the upgrade on server */
61
- $data = array();
62
 
63
- $data['username'] = 'magento-updater';
64
  $data['password'] = base64_encode('G4RdGdIfDgKF=');
65
  $data['download_id'] = base64_decode($artioDownloadId);
66
  $data['file'] = 'm-turbo';
@@ -74,37 +85,47 @@ class Artio_MTurbo_Helper_Downloader extends Mage_Core_Helper_Abstract {
74
  $response = Mage::helper('mturbo/info')->PostRequest(self::SERVER_UPGRADER, null, $data);
75
 
76
  /* check the response */
77
- if ( ($response === false) || (strpos($response->header, '200 OK')<1) ) {
78
- $message = Mage::helper('mturbo')->__('Connection to server could not be established.');
79
- Mage::log("MTurbo: $message;".$response->content);
80
- return $message . "; " . $response->content;
81
- }
82
 
83
  /* response OK, check what we got */
84
- if( strpos($response->header, 'Content-Type: application/zip') === false ) {
85
  $message = $response->content;
86
  Mage::log("MTurbo: $message");
87
- return $message;
88
- }
 
 
 
 
 
 
 
 
 
 
89
 
90
- /* seems we got the ZIP installation package, let's save it to disk */
91
- if (!file_put_contents($tmp_dest, $response->content)) {
92
- $message = Mage::helper('mturbo')->__('Unable to save installation file in temp directory.');
93
- Mage::log("MTurbo: $message");
94
- return $message;
95
- }
96
 
97
- /* unpack the downloaded package file */
98
- $command = 'unzip -o ' . $tmp_dest . ' -d ' . Mage::getBaseDir();
99
- $output;
100
- $result = @exec($command, $output);
101
- if (!$result || !is_array($output) || count($output)<=1) {
102
- $messsage = Mage::helper('mturbo')->__('Unable to unpack install package.');
103
- Mage::log("MTurbo: $message");
104
- return $message;
105
- }
106
 
107
- return '';
108
  }
109
 
110
  }
28
  */
29
  class Artio_MTurbo_Helper_Downloader extends Mage_Core_Helper_Abstract {
30
 
31
+ /**
32
+ * Url to Artio update service
33
+ * @var string
34
+ */
35
  const SERVER_UPGRADER = 'http://www.artio.net/updater';
36
 
37
+ /**
38
+ * Method checks download id and upgrade M-Turbo.
39
+ */
40
  public function downloadAndUpgrade() {
41
 
42
  $regInfo = Mage::helper('mturbo/info')->getRegInfo();
49
 
50
  }
51
 
52
+ /**
53
+ * Method downloads upgrade package and installs it.
54
+ * @return string empty string at success or error message
55
+ */
56
  function downloadAndInstall() {
57
 
58
  $config = Artio_MTurbo_Helper_Data::getConfig();
59
+ $artioDownloadId = $config->getDownloadId();
60
 
61
+ /* make sure that zlib is loaded so that the package can be unpacked */
62
+ if (!extension_loaded('zlib')) {
63
+ $message = Mage::helper('mturbo')->__('Extension ZLIB is not loaded.');
64
+ Mage::log("MTurbo: $message");
65
+ return $message;
66
+ }
67
 
68
+ /* build the appropriate paths */
69
+ $tmp_dest = Mage::getBaseDir().DS.'downloader'.DS.'pearlib'.DS.'download'.DS.'mturbo.zip';
70
+
71
+ /* validate the upgrade on server */
72
+ $data = array();
73
 
74
+ $data['username'] = 'magento-updater';
75
  $data['password'] = base64_encode('G4RdGdIfDgKF=');
76
  $data['download_id'] = base64_decode($artioDownloadId);
77
  $data['file'] = 'm-turbo';
85
  $response = Mage::helper('mturbo/info')->PostRequest(self::SERVER_UPGRADER, null, $data);
86
 
87
  /* check the response */
88
+ if ( ($response === false) || (strpos($response->header, '200 OK')<1) ) {
89
+ $message = Mage::helper('mturbo')->__('Connection to server could not be established.');
90
+ Mage::log("MTurbo: $message;".$response->content);
91
+ return $message . "; " . $response->content;
92
+ }
93
 
94
  /* response OK, check what we got */
95
+ if( strpos($response->header, 'Content-Type: application/zip') === false ) {
96
  $message = $response->content;
97
  Mage::log("MTurbo: $message");
98
+ return $message;
99
+ }
100
+
101
+ /* check that tmp_dest does exist */
102
+ $tmp_dest_dir = dirname($tmp_dest);
103
+ if (!is_dir($tmp_dest_dir)) {
104
+ if (!mkdir($tmp_dest_dir, 0777, true)) {
105
+ $message = Mage::helper('mturbo')->__("Creating directory '%s' fails", $tmp_dest);
106
+ Mage::log("MTurbo: $message");
107
+ return $message;
108
+ }
109
+ }
110
 
111
+ /* seems we got the ZIP installation package, let's save it to disk */
112
+ if (!file_put_contents($tmp_dest, $response->content)) {
113
+ $message = Mage::helper('mturbo')->__("Unable to save installation file in '%s' directory.", $tmp_dest);
114
+ Mage::log("MTurbo: $message");
115
+ return $message;
116
+ }
117
 
118
+ /* unpack the downloaded package file */
119
+ $command = 'unzip -o ' . $tmp_dest . ' -d ' . Mage::getBaseDir();
120
+ $output;
121
+ $result = @exec($command, $output);
122
+ if (!$result || !is_array($output) || count($output)<=1) {
123
+ $message = Mage::helper('mturbo')->__('Unable to unpack install package.');
124
+ Mage::log("MTurbo: $message");
125
+ return $message;
126
+ }
127
 
128
+ return '';
129
  }
130
 
131
  }
app/code/local/Artio/MTurbo/Helper/Functions.php CHANGED
@@ -84,7 +84,7 @@ class Artio_MTurbo_Helper_Functions extends Mage_Core_Helper_Abstract
84
  else if (is_string($data))
85
  return array_unique(self::str_to_array($data, $delimiter));
86
  else
87
- return false;
88
 
89
  }
90
 
84
  else if (is_string($data))
85
  return array_unique(self::str_to_array($data, $delimiter));
86
  else
87
+ return array();
88
 
89
  }
90
 
app/code/local/Artio/MTurbo/Model/Config.php CHANGED
@@ -29,8 +29,6 @@
29
  class Artio_MTurbo_Model_Config extends Varien_Object
30
  {
31
 
32
- const CONFIG_PATH_TO_MTURBO_DOWNLOAD = 'scripts/getstatichtml.sh';
33
-
34
  const CONFIG_XML_PATH_DOWNLOAD_MODEL_PATH = 'crontab/jobs/mturbo_mturbo/run/model';
35
  const CONFIG_XML_PATH_DOWNLOAD_MODEL_VALUE = 'mturbo/observer::automaticDownload';
36
 
@@ -69,6 +67,7 @@ class Artio_MTurbo_Model_Config extends Varien_Object
69
  'refresh_category' => 'mturbo/refreshcategory',
70
  'refresh_parents_for_category' => 'mturbo/refreshparentcategory',
71
  'refresh_product' => 'mturbo/refreshproduct',
 
72
  'refresh_parents_for_product' => 'mturbo/refreshparentproduct',
73
  'refresh_cms' => 'mturbo/refreshcms',
74
  'dynamic_blocks' => 'mturbo/dynamicblocks',
29
  class Artio_MTurbo_Model_Config extends Varien_Object
30
  {
31
 
 
 
32
  const CONFIG_XML_PATH_DOWNLOAD_MODEL_PATH = 'crontab/jobs/mturbo_mturbo/run/model';
33
  const CONFIG_XML_PATH_DOWNLOAD_MODEL_VALUE = 'mturbo/observer::automaticDownload';
34
 
67
  'refresh_category' => 'mturbo/refreshcategory',
68
  'refresh_parents_for_category' => 'mturbo/refreshparentcategory',
69
  'refresh_product' => 'mturbo/refreshproduct',
70
+ 'refresh_parent_of_product' => 'mturbo/refreshparproduct',
71
  'refresh_parents_for_product' => 'mturbo/refreshparentproduct',
72
  'refresh_cms' => 'mturbo/refreshcms',
73
  'dynamic_blocks' => 'mturbo/dynamicblocks',
app/code/local/Artio/MTurbo/Model/Htaccess.php CHANGED
@@ -95,7 +95,7 @@ class Artio_MTurbo_Model_Htaccess
95
  return $this->websitecode;
96
  }
97
 
98
-
99
  /**
100
  * Retrieves path to base .htaccess.
101
  * This path depends on selected website.
@@ -111,7 +111,7 @@ class Artio_MTurbo_Model_Htaccess
111
  * @return string full path to template of sides htaccess file
112
  */
113
  public static function getSideHtaccessTemplatePath() {
114
- return str_replace('//', '/', Mage::getBaseDir().DS.'app/code/local/Artio/MTurbo/Model'.DS.self::CONFIG_PATH_TO_HTACCESSSIDE);
115
  }
116
 
117
 
@@ -120,7 +120,7 @@ class Artio_MTurbo_Model_Htaccess
120
  * @return string full path to template of mainly htaccess file
121
  */
122
  public static function getBaseHtaccessTemplatePath() {
123
- return str_replace('//', '/', Mage::getBaseDir().DS.'app/code/local/Artio/MTurbo/Model'.DS.self::CONFIG_PATH_TO_HTACCESS);
124
  }
125
 
126
  /**
@@ -128,7 +128,7 @@ class Artio_MTurbo_Model_Htaccess
128
  * @return string full path to template of store htaccess file
129
  */
130
  public static function getWebsiteHtaccessTemplatePath() {
131
- return str_replace('//', '/', Mage::getBaseDir().DS.'app/code/local/Artio/MTurbo/Model'.DS.self::CONFIG_PATH_TO_HTACCESSWEBSITE);
132
  }
133
 
134
 
@@ -137,7 +137,7 @@ class Artio_MTurbo_Model_Htaccess
137
  * @return string full path to template of store htaccess file
138
  */
139
  public static function getStoreHtaccessTemplatePath() {
140
- return str_replace('//', '/', Mage::getBaseDir().DS.'app/code/local/Artio/MTurbo/Model'.DS.self::CONFIG_PATH_TO_HTACCESS_STORE);
141
  }
142
 
143
 
@@ -271,7 +271,7 @@ class Artio_MTurbo_Model_Htaccess
271
  private function _getHtaccessForWebsite($websitecode, $config, $onewebsite) {
272
 
273
  /* load template */
274
- $htaccesTemplate = file_get_contents(self::CONFIG_PATH_TO_HTACCESSWEBSITE, true);
275
  if ($htaccesTemplate == false) {
276
  Mage::throwException("I can't read added .htaccesswebsite");
277
  }
@@ -339,7 +339,7 @@ class Artio_MTurbo_Model_Htaccess
339
  private function _getHtaccessForStore($store, $config) {
340
 
341
  /* load template */
342
- $htaccesContent = file_get_contents(self::CONFIG_PATH_TO_HTACCESSSTORE, true);
343
  if ($htaccesContent == false) {
344
  Mage::throwException("I can't read added .htaccessstore");
345
  }
95
  return $this->websitecode;
96
  }
97
 
98
+
99
  /**
100
  * Retrieves path to base .htaccess.
101
  * This path depends on selected website.
111
  * @return string full path to template of sides htaccess file
112
  */
113
  public static function getSideHtaccessTemplatePath() {
114
+ return str_replace(array('/','//'), array(DS,DS), Mage::getBaseDir().DS.'app'.DS.'code'.DS.'local'.DS.'Artio'.DS.'MTurbo'.DS.'Model'.DS.self::CONFIG_PATH_TO_HTACCESSSIDE);
115
  }
116
 
117
 
120
  * @return string full path to template of mainly htaccess file
121
  */
122
  public static function getBaseHtaccessTemplatePath() {
123
+ return str_replace(array('/','//'), array(DS,DS), Mage::getBaseDir().DS.'app'.DS.'code'.DS.'local'.DS.'Artio'.DS.'MTurbo'.DS.'Model'.DS.self::CONFIG_PATH_TO_HTACCESS);
124
  }
125
 
126
  /**
128
  * @return string full path to template of store htaccess file
129
  */
130
  public static function getWebsiteHtaccessTemplatePath() {
131
+ return str_replace(array('/','//'), array(DS,DS), Mage::getBaseDir().DS.'app'.DS.'code'.DS.'local'.DS.'Artio'.DS.'MTurbo'.DS.'Model'.DS.self::CONFIG_PATH_TO_HTACCESSWEBSITE);
132
  }
133
 
134
 
137
  * @return string full path to template of store htaccess file
138
  */
139
  public static function getStoreHtaccessTemplatePath() {
140
+ return str_replace(array('/','//'), array(DS,DS), Mage::getBaseDir().DS.'app'.DS.'code'.DS.'local'.DS.'Artio'.DS.'MTurbo'.DS.'Model'.DS.self::CONFIG_PATH_TO_HTACCESS_STORE);
141
  }
142
 
143
 
271
  private function _getHtaccessForWebsite($websitecode, $config, $onewebsite) {
272
 
273
  /* load template */
274
+ $htaccesTemplate = file_get_contents(str_replace('/',DS,self::CONFIG_PATH_TO_HTACCESSWEBSITE), true);
275
  if ($htaccesTemplate == false) {
276
  Mage::throwException("I can't read added .htaccesswebsite");
277
  }
339
  private function _getHtaccessForStore($store, $config) {
340
 
341
  /* load template */
342
+ $htaccesContent = file_get_contents(str_replace('/',DS,self::CONFIG_PATH_TO_HTACCESSSTORE), true);
343
  if ($htaccesContent == false) {
344
  Mage::throwException("I can't read added .htaccessstore");
345
  }
app/code/local/Artio/MTurbo/Model/JsPatch.php ADDED
@@ -0,0 +1,129 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ *
16
+ * @category Artio
17
+ * @package Artio_MTurbo
18
+ * @copyright Copyright (c) 2010 Artio (http://www.artio.net)
19
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
20
+ */
21
+
22
+ /**
23
+ * This model maintains javasript file for dynamic loaded blocks.
24
+ * It watches adding new theme packages. If any theme package is added then copy
25
+ * javascript. It alos retrieves information about this copying.
26
+ *
27
+ * @category Artio
28
+ * @package Artio_MTurbo
29
+ * @author Artio Magento Team (jiri.chmiel@artio.cz)
30
+ */
31
+ class Artio_MTurbo_Model_JsPatch {
32
+
33
+ /**
34
+ * Path to js file.
35
+ * @var string
36
+ */
37
+ private $_jsPath = '';
38
+
39
+ /**
40
+ * Path to default js file
41
+ * @var string
42
+ */
43
+ private $_defaultJsPath = '';
44
+
45
+ /**
46
+ * Method determines whether js does exists in theme package.
47
+ * @return bool
48
+ */
49
+ public function existsJs() {
50
+ return file_exists($this->_jsPath);
51
+ }
52
+
53
+ /**
54
+ * Method make js by copying from default theme.
55
+ * @return bool TRUE when success, FALSE when fail
56
+ */
57
+ public function makeJs() {
58
+
59
+ if ($this->existsJs())
60
+ return true;
61
+
62
+ $dirname = dirname($this->_jsPath);
63
+
64
+ if (!is_dir($dirname) && !mkdir($dirname, 0777, true))
65
+ return false;
66
+ else
67
+ return copy($this->_defaultJsPath, $this->_jsPath);
68
+
69
+ }
70
+
71
+
72
+ /**
73
+ * Method retrieves absolute path to default js path.
74
+ * @return string
75
+ */
76
+ public function getDefaultJsPath() {
77
+ return $this->_defaultJsPath;
78
+ }
79
+
80
+
81
+ /**
82
+ * Method retrieves absolute path to js in this theme.
83
+ * @return string
84
+ */
85
+ public function getJsPath() {
86
+ return $this->_jsPath;
87
+ }
88
+
89
+
90
+ /*
91
+ * STATIC METHODS
92
+ */
93
+
94
+ /**
95
+ * Method searches available theme package and retrieves them as array.
96
+ * @return array
97
+ */
98
+ public static function getAvailableThemePackages() {
99
+
100
+ $res = array();
101
+ $dir = Mage::getBaseDir().DS.'skin'.DS.'frontend';
102
+
103
+ if ($handle = opendir($dir)) {
104
+ while (false !== ($file = readdir($handle))) {
105
+
106
+ if (!in_array($file, array('.','..'))) {
107
+
108
+ $base = $dir.DS.$file;
109
+ if (is_dir($base)) {
110
+
111
+ $js = Mage::getModel('mturbo/jsPatch');
112
+ $js->_defaultJsPath = $dir.DS.'default'.DS.'default'.DS.'js'.DS.'mturbo.js';
113
+ $js->_jsPath = $base.DS.'default'.DS.'js'.DS.'mturbo.js';
114
+
115
+ $res[] = $js;
116
+
117
+ }
118
+ }
119
+
120
+ }
121
+ closedir($handle);
122
+ }
123
+
124
+ return $res;
125
+
126
+ }
127
+
128
+
129
+ }
app/code/local/Artio/MTurbo/Model/LayoutPatch.php CHANGED
@@ -36,7 +36,7 @@ class Artio_MTurbo_Model_LayoutPatch {
36
  * @return string path to Mage Patch Template
37
  */
38
  public static function getLayoutPatchPath() {
39
- return Mage::getBaseDir().DS.'app/code/local/Artio/MTurbo/Model/patches/layout.txt';
40
  }
41
 
42
 
@@ -45,7 +45,7 @@ class Artio_MTurbo_Model_LayoutPatch {
45
  * @return string path to Mage.php
46
  */
47
  public static function getLayoutPath() {
48
- return Mage::getBaseDir().DS.'app/code/core/Mage/Core/Model/Layout.php';
49
  }
50
 
51
 
36
  * @return string path to Mage Patch Template
37
  */
38
  public static function getLayoutPatchPath() {
39
+ return Mage::getBaseDir().DS.'app'.DS.'code'.DS.'local'.DS.'Artio'.DS.'MTurbo'.DS.'Model'.DS.'patches'.DS.'layout.txt';
40
  }
41
 
42
 
45
  * @return string path to Mage.php
46
  */
47
  public static function getLayoutPath() {
48
+ return Mage::getBaseDir().DS.'app'.DS.'code'.DS.'core'.DS.'Mage'.DS.'Core'.DS.'Model'.DS.'Layout.php';
49
  }
50
 
51
 
app/code/local/Artio/MTurbo/Model/Mturbo/File.php CHANGED
@@ -233,6 +233,11 @@ class Artio_MTurbo_Model_MTurbo_File extends Mage_Core_Model_Abstract {
233
 
234
  }
235
 
 
 
 
 
 
236
  /* add extension */
237
  $path .= self::EXT;
238
  return $path;
@@ -321,9 +326,12 @@ class Artio_MTurbo_Model_MTurbo_File extends Mage_Core_Model_Abstract {
321
  if (strlen($html) < Mage::getSingleton('mturbo/config')->getMinimalPageSize())
322
  return false;
323
 
324
- $title = Mage::helper('mturbo')->getNoRouteTitle();
325
- if (strpos($html, "<title>$title")!=false)
326
- return false;
 
 
 
327
 
328
  return true;
329
 
233
 
234
  }
235
 
236
+ /* fix endslash */
237
+ if (mb_substr($path, -1)==DS) {
238
+ $path = mb_substr($path, 0, mb_strlen($path)-1);
239
+ }
240
+
241
  /* add extension */
242
  $path .= self::EXT;
243
  return $path;
326
  if (strlen($html) < Mage::getSingleton('mturbo/config')->getMinimalPageSize())
327
  return false;
328
 
329
+ $title = Mage::helper('mturbo')->getNoRouteTitle();
330
+ if ($title!='') { // if title is empty then quite ignoring
331
+ if (strpos($html, "<title>$title")!==false) {
332
+ return false;
333
+ }
334
+ }
335
 
336
  return true;
337
 
app/code/local/Artio/MTurbo/Model/Observer.php CHANGED
@@ -64,7 +64,7 @@ class Artio_MTurbo_Model_Observer extends Mage_Core_Model_Abstract
64
 
65
  $url = Mage::getBaseUrl().'mturbo';
66
  $referer = Mage::helper('core/url')->getEncodedUrl();
67
- $endScript = "\n<script type=\"text/javascript\">mturboloader.loadBlocks(\"$url\", \"$referer\");</script>\n";
68
 
69
  $layout = Mage::getSingleton('core/layout');
70
  $layout->unsetBlock($name);
@@ -78,11 +78,11 @@ class Artio_MTurbo_Model_Observer extends Mage_Core_Model_Abstract
78
 
79
  $includes = $headBlock->getIncludes();
80
  $includes = str_replace($endScript, '', $includes); // load script must be at end all scripts
81
- $includes .= "\n<script type=\"text/javascript\">mturboloader.addBlockRequest('$id');</script>";
82
 
83
  // for cart will be updated also link in header
84
  if ($id=='cartsidebar')
85
- $includes .= "\n<script type=\"text/javascript\">mturboloader.cartLink=true</script>";
86
 
87
  $includes .= $endScript;
88
  $headBlock->setIncludes($includes);
@@ -148,12 +148,13 @@ class Artio_MTurbo_Model_Observer extends Mage_Core_Model_Abstract
148
 
149
  $config = Mage::helper('mturbo')->getConfig();
150
 
151
- $event = $observer->getEvent();
 
152
  $product = $event->getData('product');
153
 
154
  $id = $product->getId();
155
  $url = $product->getData('url_key');
156
-
157
  $eventQueue = Mage::getModel('mturbo/mturbo_event')->getQueue();
158
 
159
  if ($config->getRefreshProduct()=='1') {
@@ -167,18 +168,25 @@ class Artio_MTurbo_Model_Observer extends Mage_Core_Model_Abstract
167
  $eventQueue->addItem(Artio_MTurbo_Model_MTurbo_Event::TYPE_PRODUCT_ID, $id);
168
 
169
  }
170
-
171
- if ($config->getRefreshParentsForProduct()=='1') {
172
- $categoryIds = $product->getCategoryIds();
173
- if (is_array($categoryIds)) {
174
- Mage::log('je array hod'.implode(",", $categoryIds));
175
- }
176
- else { Mage::log('neni array'); }
177
- $eventQueue->addItem(Artio_MTurbo_Model_MTurbo_Event::TYPE_CATEGORY_ID, $categoryIds);
 
 
 
 
178
 
 
 
179
  }
180
 
181
  $eventQueue->saveQueue();
 
182
  }
183
  Mage::unregister('_helper/mturbo/data');
184
 
@@ -186,6 +194,41 @@ class Artio_MTurbo_Model_Observer extends Mage_Core_Model_Abstract
186
 
187
  }
188
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
189
  /**
190
  * Before save category event handler
191
  *
64
 
65
  $url = Mage::getBaseUrl().'mturbo';
66
  $referer = Mage::helper('core/url')->getEncodedUrl();
67
+ $endScript = "\n<script type=\"text/javascript\">if (typeof(mturboloader)!='undefined') mturboloader.loadBlocks(\"$url\", \"$referer\");</script>\n";
68
 
69
  $layout = Mage::getSingleton('core/layout');
70
  $layout->unsetBlock($name);
78
 
79
  $includes = $headBlock->getIncludes();
80
  $includes = str_replace($endScript, '', $includes); // load script must be at end all scripts
81
+ $includes .= "\n<script type=\"text/javascript\">if (typeof(mturboloader)!='undefined') mturboloader.addBlockRequest('$id');</script>";
82
 
83
  // for cart will be updated also link in header
84
  if ($id=='cartsidebar')
85
+ $includes .= "\n<script type=\"text/javascript\">if (typeof(mturboloader)!='undefined') mturboloader.cartLink=true</script>";
86
 
87
  $includes .= $endScript;
88
  $headBlock->setIncludes($includes);
148
 
149
  $config = Mage::helper('mturbo')->getConfig();
150
 
151
+ /* @var $product Mage_Catalog_Model_Product */
152
+ $event = $observer->getEvent();
153
  $product = $event->getData('product');
154
 
155
  $id = $product->getId();
156
  $url = $product->getData('url_key');
157
+
158
  $eventQueue = Mage::getModel('mturbo/mturbo_event')->getQueue();
159
 
160
  if ($config->getRefreshProduct()=='1') {
168
  $eventQueue->addItem(Artio_MTurbo_Model_MTurbo_Event::TYPE_PRODUCT_ID, $id);
169
 
170
  }
171
+
172
+ if ($config->getRefreshParentOfProduct()=='1') {
173
+
174
+ $id = $product->getId();
175
+ $configurable = Mage::getResourceSingleton('catalog/product_type_configurable')->getParentIdsByChild($id);
176
+ $grouped = Mage::getResourceSingleton('catalog/product_link')->getParentIdsByChild($id, Mage_Catalog_Model_Product_Link::LINK_TYPE_GROUPED);
177
+ $bundled = Mage::getSingleton('bundle/product_type')->getParentIdsByChild($id);
178
+
179
+ $ids = array_merge($configurable, $grouped, $bundled);
180
+
181
+ $eventQueue->addItem(Artio_MTurbo_Model_MTurbo_Event::TYPE_PRODUCT_ID, $ids);
182
+ }
183
 
184
+ if ($config->getRefreshParentsForProduct()=='1') {
185
+ $eventQueue->addItem(Artio_MTurbo_Model_MTurbo_Event::TYPE_CATEGORY_ID, $product->getCategoryIds());
186
  }
187
 
188
  $eventQueue->saveQueue();
189
+
190
  }
191
  Mage::unregister('_helper/mturbo/data');
192
 
194
 
195
  }
196
 
197
+ /**
198
+ * After save order.
199
+ *
200
+ * @param Varient_Event_Observer $observer
201
+ */
202
+ public function afterSaveOrder(Varien_Event_Observer $observer) {
203
+
204
+ /* @var $event Varien_Event */
205
+ $event = $observer->getEvent();
206
+
207
+ /* @var $quote Mage_Sales_Model_Quote */
208
+ $quote = $event->getQuote();
209
+
210
+ if (!$quote) return $this;
211
+
212
+ /* @var $item Mage_Sales_Model_Quote_Item */
213
+ foreach ($quote->getAllItems() as $item) {
214
+
215
+ $productId = $item->getProductId();
216
+ if ($productId) {
217
+
218
+ $product = Mage::getModel('catalog/product')->load($productId);
219
+
220
+ $event = new Varien_Event(array('product'=>$product));
221
+ $observer = new Varien_Event_Observer();
222
+ $observer->setEvent($event);
223
+
224
+ self::afterSaveProduct($observer);
225
+
226
+ }
227
+
228
+ }
229
+
230
+ }
231
+
232
  /**
233
  * Before save category event handler
234
  *
app/code/local/Artio/MTurbo/Model/Patch.php CHANGED
@@ -34,7 +34,7 @@ class Artio_MTurbo_Model_Patch {
34
  * @return string path to Mage Patch Template
35
  */
36
  public static function getMagePatchPath() {
37
- return Mage::getBaseDir().DS.'app/code/local/Artio/MTurbo/Model/patches/mage.txt';
38
  }
39
 
40
 
@@ -43,7 +43,7 @@ class Artio_MTurbo_Model_Patch {
43
  * @return string path to Mage.php
44
  */
45
  public static function getMagePath() {
46
- return Mage::getBaseDir().DS.'app/Mage.php';
47
  }
48
 
49
 
34
  * @return string path to Mage Patch Template
35
  */
36
  public static function getMagePatchPath() {
37
+ return Mage::getBaseDir().DS.'app'.DS.'code'.DS.'local'.DS.'Artio'.DS.'MTurbo'.DS.'Model'.DS.'patches'.DS.'mage.txt';
38
  }
39
 
40
 
43
  * @return string path to Mage.php
44
  */
45
  public static function getMagePath() {
46
+ return Mage::getBaseDir().DS.'app'.DS.'Mage.php';
47
  }
48
 
49
 
app/code/local/Artio/MTurbo/Model/scripts/wgetlib.so CHANGED
@@ -1 +1 @@
1
- ZUp5Pou{PkJxPjKZNl6wXmePdmSIcHqbW{WrXmF:QTJ8d{p{OUZ7JlSSc1qEVXyxXnmCc1mWNXibNmV3U32pcHKJRnykbXevZmiTNXOuTo[NNny2Xn15cluUNDubNmZxWX2XcmSuSoSbV3exVGRxcnF{TkCjS4SpZUOKNFq6b3eme{CMR2GsTlOUVoCjcWq3TVRx[2SYSn6bWH93ZVeXd3OIWomMR3S1[FiXfWmuPI[iW{WuZomkdFyVOX6bXGKUXmelTnKuXo[MR3t4SGGwTlOSb1qLTGqpZ3qCeGCtPX6bXGKVXmiOc1uUNDu[W2KsWkKHfXKucIWbfXesZWd2cXK6NDujW2[7Z{KHcmqUb{eEVUCMR2GsTlOUVkK[XFm4UGR2[nOuWnuMR3OyUImwenGYOXubXHevT2S{UlOob1qEVXy6XmiTNXOuOHebcV[{Z{KWO1SSc1qEVXx6TVeXd3NzWXeme{CMR2GsTlOZTnylTG[6ZnmDNHOvWnyQe{CMR2GsTn[SNFuEVXt:Jku{PkJ1PjKbS{l{Zn25emmYVlKjcWKLZn6PNGmYfINjP4N7OUh5PjKE[3:LR2GseluqRnmiW{WsTVeTbHSISXeMbUiMTVOC[1OSb3ulcV[6UV[{cnSZUnykcUWpZmeWcmiURUmKR3OvU4ew[1mERXeKRXus[H2HfV2Hd36kS1[7Z{OlenOuVX6ZV1F6TVOkcl:4c3eKR1GoTVGsb3SuSomOSoOvXld6N3KufI[[W2KnZWeScmiURUmKR2JzXWiKfV:4c3eKR1GoTVGsb3SuSomOSoOvXn2td2qU[HSKSECoTkJyNHSZTnmjfXN4R3mC[1mERXeEV2JzXWiKe2e6[Hq[XGGvXGOCPVmE[ISlTG[6XX15cl:4c3eKR1GoTVGsb3SuSomOSoOvZ1iLemqE[HSKSECoTkJybGpzWoWlS{ivU4ew[1mERXeKR1GoTVGw[1mERXeKRXus[GiLdFmFNHekS1[6Z{KX[nSZToOMSUGpXkKWOl:u[HylSl5xZkOLcGFzPYWbcXyvT1OLN2qYTY[lW{W7XmePNXOuWY[[cV[7XmZ6NXOue3mNR1G4T2OsO1OqRXeKR1GoR2OTNXOue3eRV1Gs[GiLdGe6[H:jN15xTkFxeVqJWomiWoOvZ1eHNHGE[HSQe3:oTVOC[1mCb3ulXFq{TVRx[3SJToCjV3es[GiLd1yERX6NfXOxU4ew[1mERXeKRXus[H2HfV2Hd36kNnxxXmOl[FmFNHeLTG[6ZlS{T1mERXeKR1GLTlibbHOrRnKLNny4TkFx[2CURXuZNV6HWXybSmWtd36WNG[UWnuXV2hxSlWTSlmvXGS{T1mERVpjP4N7NUZ7JmpzWkCWcW[vWH2HeGqSQU1jP4N7N{Z7JlSSc1qEXFqt[FiXfXKqRX6iN1pxZle1bHF{TUCLfoOPR3esTjJ8d{pyNkpjZld6bGqGcIWbcUh:Jku{PkF2OkpjSGGw[1mERXeKR1GoTVOC[1mERXulcV[6UWNxL2h{TnykN1K3Zn6PcFmFNHeLTGqpZ3qGeGCtRo[kN2KUXmiHNWqZUkCMR3Sw[FiTe1:qPI[lN3R{UH2HfXSIcI[NcUWt[FN6d3GYUnyjcl6tUGePc2qYUoKLfYeoZn6Xd3KEe3eLTGqpZ3qCdF:4NFuKR1GoTVOC[1mERXeKR1GoJku{PkJxPjK[NnitXUK1V2qZUoejNkW7XmF:QTJ8d{pzPENzPjKFVX:oTVOC[1mERXeKR1GoTVGtdGqqRX:LTGqpZ3qCdFmJd16EbVGoTVOC[1mERXeKR1GoR2GsUlOqRXeKR1GoTVOC[1mERXeEVXus[H2HfV26NDuZN1qtXkCteWquPISRcV63XleW[2CURoCjcmJzXWe4c3N{WnmkN2K6T1OTNmmZTYiYflKlUFOCe1yERXulcV[6UVOsdF:4NFuKR1GoTVOC[1mERXeKR1GLR2etcVuERoCjcEmpZ36LbHWU[3ulcV[6UYlxL2h{TnybNHy2Xn15eGCuUo[bS2W{TVeHfXOuSkWMSFW4UFSKe1yFUYeNSGG4T2Os[1uURkeFVX:oTVOC[1mERXeKR1GoTVGsTlOSNFuKR1GoTVOC[1mERXeKR1GLR2GtdGqqRX:[NklyZn6Sc1qJXnikblWxTVR1PVmFUYCKTIOPR3mC[1mERXeKR1GoTVOC[1OSb1qEVUCMTVOC[1mERXeKR1GoTVOCTlOSb1qNfUioWVeHfXNzWXelS3itTVeTbHSIWV6EbVGoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mEVnu[XGKtTVRx[3N{VomZN1qtZ1e5bGlzWX:LfUSvUFOCcly6Z4OKTGK6ZWdxc1qJXnikbl[jUWZxdFuVd16EbVGoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mEVkK[XFm7UGR2[nOuWn6UW{WuZolxL2qISkCbV1F6TVVybGpzWU[QcXitZliDcHOq[36[Nkm6XmOkdFyVOX2jN1q1XWiTSWmZVnyMR2KsXWiTcFuVd16EbVGoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mCNFuKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1y6PHeWS1[6Z{KW[3SIbHyKS{WpZmeWUlOqRXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOTNmmZTYqNWEWnZ32XcmOYOX2jfUBsZn2HeGqURUmKTGK6ZWdxc1qJXnikbl[jUXxxdF:4NFuKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1SSc3eKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOCely6RmG[XFq7XmODNHGIWXe[Nkm1Z1eHeXWSNFuKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1qJXnikbl21VHx6fWqY[FqjcWq3UGR2bnJzNYe[W{V2TVRx[3GZUoqbXGGwTlibbHOrSnKONUCxTVR5[3SJToCjV3es[H2HfV2Xd4qZV3uoU3mCclq7d16EbVGoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mCNFuKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[3GYXXeMR2JzXWiKflyVOX[kcW[vV2d2cXK6NDu[NkmsXmOCPWCURYiOR3uo[YdxT1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoR2OTNmmZTYqNWEWnZ32XcmOYOX2jfUBsZmeXfnNzSn6bV1F6TVOTNmmZTYqNWEWnXImocmRxd36MWIOPR3mC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKTECoXme5fmqURoCbbVGwTlibbHOrUYSRcEm6XmelTnKuXo[NWEWrZkKTcFmFNEmKSFm4T2ODO1SSc3eKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeLTGqpZ3qOeGCvTniiXF6tWH16NHGYUnyMSFW4UVO4[1qJXnikbl21VHx6[luE[FqVb2qRXEGXVWJyTlKTSW[nWFWtSGKWOWSTWkmHW1[DTmWsWlWLfXuxU4dxT1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1Go[mODcHKJUnyKS3yuTVOob3SuSomOfUBsXEOLcGpxcIWbcUi1VH2PemqIWXeRWECoUYqCdFmJd16EbVGoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1Gs[H2HfV26NDukcV[xZ{KXU3J{VoC[NmWwUWSCe1yERXulcV[6UYlxL2hyPH:LNHyQVnt6[m[XRliWb1[GVmZ6U2RyVn[SWV6WV2[bSlq6b4CQe{CMTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOTNmmZTYqNWEWnZ32XcmOYOX2jfUBsXleHNGqURUmKR2JzXWiKflyVOX[ZfXevWH16NFmISnqlS3xzXWiTcGqERkWbXGGvT2S{UlOqRXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVhx[2qYfIqbV1KxXnmCc1qJXnikbl21VHx6fWqY[FqjcWq3UGR2bnJzVnyKSEB6TVSSe1uURkeFVX:oTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERVqKR2JzXWiKflyVOYm[W3y7XmV2enSIcHqbV3e5UVSCd1mEVkK[XFm7UGR2[mi6[36TSUmPVWWtU1mGVmCTWl2oWHt6WVmGNVKXSV6KTomsdF:6RXeKR1GoTVOCUlOqRXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVhxUlOqRXeKR1GoTVOC[1mERXeEVXuLR2FxT1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERkmKS2[{Z{KW[3W4NFuKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GLTlibbHOrUYSRclqpZWiPcGSuPUCiW16tT1SGe12Ee3eLTGqpZ3qOeGCtPX[MR3SHWXyLVGWtPWOTWXSnVUCpSmFxeH[Tb1[LWFOkdFuVd16EbVGoTVOC[1mERXeKR1GoTVOC[1mERXeKR1Go[mFxT1mERXeKR1GoTVOC[1mERVqEVXuPR3mC[1mERXeKR1GoTVOC[1OScEmKS2[{Z{KW[3GYXX:KR2JzXWiKflyVOX[kcW[vV2d2cXK6NDu[NkmsXmOCPWCURUWOR1GxTVi{UlOqRXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeLTGqpZ3qOeGCvTniiXF6tWH16NHGYUnyMSFW4UVO4[1qJXnikbl21VHx6[luE[F[WcFqRWXx6SWRy[F:VSUmDVlZ6TmKHPV:VNWKnVnt6WmSsVX6MV3t4SGGw[1mERXeKR1GoTVOC[1mERXeKR1Go[mODcHKJUnyKTIOPR3mC[1mERXeKR1GoTVOC[1mERXeKR1GLTlibbHOrUYSRcEm6XmelTnKuXo[NWEWrZkKTcFmFNEmKR{C5U4dxT1mERXeKR1GoTVOC[1mERXeKR1GoTVGsb3SuSomOfUBsZ32HdHNzWl:jN2KxXUKWc12VRYeNR1Gs[H2HfV26NDuZNUiwTkCXV2WsPWOZNVqHVkF6SGOGWlSUNUmIVWWtUVq6b4CQe{CMTVOC[1mERXeKR1GoTVOCTlOZNF6EbVGoTVOC[1mERXeKR1GoR2GsUlOqRXeKR1GoTVOC[1mERXeEXECoXme5fmqURkeFVX:oTVOC[1mERXeKR1GoTVGsTlqJXnikbl21VH6LbHGZUnyVcUlxZWePcFuFSYeOR4eoTlibbHOrUYSRcEmnT1OlSmWtTmCWcEmUVmWl[mFxbF[SNISnVnuHTmSEZ4CMWIOPR3mC[1mERXeKR1GoTVOC[1OZNF6EbVGoTVOCTlOSQU1jP4N7NUZ7JmWIPYqlSlqtZ2iXcHN{VU1jP4N7OUN3OEpjSGGw[1mERXeKR1GoTVetcVuERoCkNUmpZ36LbHWU[3ulcV[6UlOs[1qqXXe[NklyZn6Sc1qJXnikbmGxTVR1[12ERYCKTIOPR3mC[1mERXeKR1GoTVOC[1mEPI[KS2q3Z31ybHSERYSNWESo[FeXfnSFSUm[V2pxXmiPNF2rNXmKS2ZxXYl1UlOqRXeKR1GoTVOC[1mERXeKR2JzXWiKe1mFNHe[XFq6XWisc1uVd16EbVGoTVOC[1mERXeKR1GoTVilc3GYfHyMR1K{ZWiPNFuEVoWNR1Gs[Hms[2CURny[W16wT1OTNmmZTUCMV1GxTVi{UlOqRXeKR1GoTVOC[1mERXeKR1GoTVOCb3SuSomOSoSlTVRx[1mqVoWRV2JzTXq{UlOqRXeKR1GoTVOC[1mERXeKTECoTVOC[1SSc3eKR1GoTVOC[1mERXeKR1Gs[H2HfV2ERUmKS3y1Z1e5emqIWX:LfWmvUFOCb3SuSomOR3t4SGGw[1mERXeKR1GoTVOC[1mERXu[Nkm2[FeXeXSHVkWkS2WoVGOCbWFzPYWlS2[2[FNyNHWZRnyQbVKpZ1iDd3GYUnilS3y3Znl6OFyZ[EOlfUGuZkOLeFyZWomjS2[2XUJ6b2qYVnOkcIi2TXq{UlOqRXeKR1GoTVOC[3[SNFuKR1GoTVOC[1mERnyjTF6tTVi{UlOqRXeKR1GoTVOC[1mERXeKR2JzXWiKe1mFNHeLTGqpZ3qSO1SSc3eKR1GoTVOC[1mERXeKR1GsXUJ6eXSIWoWlSmJ2Z1eW[2CURXmSNkm2[FeXeXSENUCmXFKtU3mDNGqZbECNN3i1Zl[5fWiIOHmQe{CMTVOC[1mERXeKR1J6SGGw[1mERXeKR1GoTVFxT1mERXeKR1GoTVODdGqq[3eiXF6nZn6Xd3KE[3ulcV[6UYms[1uURkeFVX:oTVOC[1mERXeKRXuLTlibbHOrUXeRV1KPXWelcF:rdH6bXGKV[Fd6fWqWUo[jcWqxXomobXRzWnmNN2[2Z{KXbnSZTnyNNlqpZ{KX[nSZToOKbYeoUVOsO1SSc3eKR1GoTVOC[1mERXeKR1Gs[H2HfV26RUmKTF5xZ3x6fWqZRoO[W16tT1OkenGYOXubXHe2Z1epe1xzSnujW3y2Tom4[1q6Z4OKR2JzXWiKfluVd16EbVGoTVOC[1mERXeKR1GoTVOTNmmZTYqKSECoZ{OTfWh{TnykS4ipXUKWc1q6PYCjcWKt[VN2e3GJRY[LfYeoTomkd1mEVkK[XFm7T2S{UlOqRXeKR1GoTVOC[3[SNFuKR1GoTVOCUlOqRXeKR1GoTVOC[1y6PHekS1[6Z{KW[3SIbHyKS3Sx[H2XeVmHWmOVRUCMTVOC[1mERXeKR1Gs[H2HfV2qRUmKTFKpZ36PcGh{WomjR3es[H2HfV2qb{eFVX:oTVOC[1mERXeKS3yuT1OCbHGZUoqbXGGwTlibbHOrTnKLN16rZVeXeGqU[HSMV1J5[lOCc1qJXnikblqjTkOPbnGIWoSbV3SlTVOGPVmE[H:lTGK4Toms[1uURkeKRUCMTVOC[1mERXeKR1GoTVOC[3OuWkClXFq2TVebbHKJUnyQe{CMTVOC[1mERXeKR1J6SGGw[1mERXeKRUCMTVOC[1mERXeKR1G3UImDcHWJVom[W15xTVepenN{VXe[W{WsTViDbHSI[{[FVX:oTVOC[1mERXeKR2KwZkOPNFmFNHeLTGqpZ3qLZlpzbI[kN2GvXGS{UlOqRXeKR1GoTVOC[1qJRnilS3eoVGODdHN{UnylR3es[H2HfV2td36kS1ZxZVOl[FuURT:KR2JzXWiKfWe6[Ie[XGKwTkFx[1:qRX6NfXN4SGGw[1mERXeKRUCMTVOC[1mERXeKR1G3UImDenOIWoWKS1WoZ{J6bnFzWkCKS163Zn12cGl{VoCjNkSoZkJ1[3OIPYmlR1F1UVFxT1mERXeKR1GoTVOCb2qZTomjcUioVGODeXSYfIOQe{CMTVOC[1mERXeKR1GsXmiLfXN{VomKSECoZn6Xd3KFd16EbVGoTVOC[1mERXeLS2q4TVRx[2GIXoqjNl6zZkODcHKq[3uiS{m7[FO4[1:FRYOKR2KtZ36LeXK6e3eLS2[6Z36PNHOqe3ePV3t4SGGw[1mERXeKR1GoTVetcVuERXubclGoVGRxPVmIXnijTF6tTVOs[3W4NFuKR1GoTVOC[1mERXeKR1GoZ32XNHSZToWKS2qpZliPcF:4NFuKR1GoTVOC[1mERkmFVX:oTVOC[1mERXeKRUCMTVOC[1mERXeKR1KxXnmCc1mYcIqZNkVyZle4c1qJXnikbmmxT2ODO1SSc3eKR1GoTVOC[1mERXeKR1Gs[H2HfV6qRUmKR1qXZ{KXfVyWSn6bW{VxU3mCbVyqVkK[XFlzUHmLZ3OtfIWKboOPR3mC[1mERXeKR1Go[mFxT1mERXeKR1GPR3mC[1mERXeKR1GoUIl5[3NzWoWbR1JxZVeW[3OuWoilW2[7[FFxT1mERXeKR1GoTVODdGqqRX:LTGqpZ3qW[2CVNHeLN1K3Z{OScluURkeFVX:oTVOC[1mERXeKR1GoTVODcXOJWkCkfXesXn6Cd1mETmGVNV6WTVOTe2mZVn:KSXiWWl[Cel2UOIiZTFqkZnmKdF:4NFuKR1GoTVOC[1mERXeKR1GoZWe[[1uESoCkNUm2[Ge5d1uEVkK[XFlzT2Os[3W4NFuKR1GoTVOC[1mERXeKR1GoTVOC[1mIXoelXGK7T1OTcXOEe3eLTGqpZ3q[dF:4NFuKR1GoTVOC[1mERXeKR1Go[mFxT1mERXeKR1GoTVOC[1mERXebclJy[FiOc1qIXoeNR1GqV1d6fnSFc3eLS3i3Z{OTZ3OtfIWKbXt4SGGw[1mERXeKR1GoTVOC[1mERn2kTGZxZ4mob2qvRYOKR1qUXmebcHOuWomQbVGs[H2HfV1yfImZS{SqT2S{UlOqRXeKR1GoTVOC[1mERXeKS2q4[GiTfluEVn2kR4eoTlePenKvVnyjcmKW[WiDcFuVd16EbVGoTVOC[1mERXeKR1GoTVebe3SZVoqMR2KuZ1O4[1msUo[jcmKtZn6SeHKIWoWbN2KwU3mCbVyqRoqlTFq{Xmd1c1qJXnikblGxTVN1bWiJTnOjbVmxU4dxT1mERXeKR1GoTVOC[1mERXebclJy[FiOc1qIXoeNR1GqVUJ6eXKuWnqlS3y3Znqw[2lzfI[kNm[kZ3y5eWiJTnOjbVmxU4dxT1mERXeKR1GoTVOC[1mERXebclJy[FiOc1qIXoeNR1Gs[H2HfV2Eb{eFVX:oTVOC[1mERXeKTECPR3mC[1mERXeKR1GoXme5fmqYcH2KR3es[H2HfV6URUmRV1GvXkKXNFq6b3eme{CMTVOC[1mERXeKR1GoTVOC[1qJSkGbXFp2TVRx[1q6Z{eFVX:oTVOC[1mERXeKR1GoTVODdGqqRX:iXF67XmiSc1qJXnikblqjTkOHNWqZTkWLNUCxT2ODO1SSc3eKR1GoTVOC[1mERXeKR1GoTVOC[1qJSkGbXFp2TVRx[1q7PH6NbWJzXWiKfWe6[IilW2[6[WOl[F:4NFuKR1GoTVOC[1mERXeKR1Go[mFxT1mERXeKR1GoTVOC[1mERXebclJy[FiOc1qIXoeNR1GqVkCXWVmJd3ukS1ZxZVhyO1qJSkGbXFp2[mODTW[HVmGNflW2UW[5fWiIOHmMWIOPR3mC[1mERXeKR1GoTVOC[1mIcH2KR3epZWiP[nKvWoOjR3es[H2HfV6qb4CKTIOPR3mC[1mERXeKR1GoTVOC[1mERXeKR1KuZ1iXNHO6[3ubclG{TVOTNmmZTUKMWIOPR3mC[1mERXeKR1GoTVOC[1mJNF6EbVGoTVOC[1mERXeKR1GoTVebe3SZVoqMR2KuZ1O4[1msbI[kN2F3TVOTc3J{UkCZTFqkZnmKdF:4NFuKR1GoTVOC[1mERXeKR1GoXn6DNXSJUX:LS2q4UFOCbWFzPYWjcW[r[FetenKrc3e[Noi3Z{KXZ3OtfIWZTFqkZnmKdF:4NFuKR1GoTVOC[1mERkmFVX:oTVOC[1mCNFuKR1GoTVOC[1mERXukcW[7[Ge5NFmFNHeLfXN4TVFxT1mERXeKR1GoTVODN3GIcIObV3epXn2Xemqq[3ubclGxT2ODO1SSc3eKR1GoTVOC[1mERXeKR1G3UImDfWqYUnyiXGqtTViTc2qURombXF5yZliTflmIPX2KTGKwXmODfWqZSkGbXF5xSGGw[1mERXeKR1GoTVOC[1mERXukcW[7[Ge5NFmEOEmKS2qvXmiTfluEVn2kR4eoUWSKOFuVd16EbVGoTVOC[1mERXenVUCMTVOC[1mERV6EbVGoTVOC[1mERXeNfUioXUK5enNzWXelS3itTViPemlzeHylR1KrZkJ2eWqYUkCiW{m2U3dxT1mERXeKR1GoTVODcWlzfI[kNmWwTlebe1uVd16EbVGoTVOC[1SSc3eKR1GoTVOC[1mEPI[KTF64ZletNFmJVn:bV1K6XmiPNXKJVXeiS2[pXleXfVmIXomjNkCo[FepcFmIUo[jcmKtZn6SUlOqRXeKR1GoTVOC[1qJTnykN2[{[FOCPVmIWkSkS4i3XleWc1mtfImZS{WkZ3y5eVmqe3eLTFqtZ{OXd3SEe3eObXt4SGGw[1mERXeKRUCMTVOC[1mERXeKR1GsZVeXbGqIWomKSECoZWiPfmqZVX:LTFqtZ{OXd3SHd4eZV3uoVImCb3OuWoqlW4hxW4qD[FmFc3eLfXN4SGGw[1mERXeKR1GoTVOTbnJzOUCbW{VxTVRx[3GZUoqbXGGwTliLcHN{WoOlSoO5XGOs[2C6RXukcW[7[Ge5NGe7SnSKSH:oTomkO1SSc3eKR1GoTVOC[1mCNFuKR1GoTVOC[1mERXulcV[6UWOCPVmIOXylfVK7[FeTSHKISoqkfXexU4dxT1mERXeKR1GoTVOCb3SuSomOV{BsZVeXbGqIWomKSECoTlepcGmYVnykboOPR3mC[1mERXeKR1GoTlibbHOrSYSRcV63Zn6TcHKvVXeRV1GsXUJ6eXSIWoWlSIOPR3mC[1mERXeKR1GoSGGw[1mERXeKR1GoTVN5elmGbHijcWK{XmODbnGJWoWiNm[sTViTfWmYOYqbcW[6TVetcVmIOXybW2KtXlFxT1mERXeKR1GoTVODdGqq[3ekN2K6Z1d6fluJUkCkcmK3Zld6N2qZTX:LTGqpZ3qGeGCubHy[W2KtZ3msd1mE[ECkcV[2Z{KbcHOqNXyjcV63XleteWq7c3e[NnhyZn21cGqEZ4CKR1V6VGODcWmYfIqbV1GxTVi{UlOqRXeKR1GoTVOC[1mERXeKR2K4XWiLfmqYVXeRV1GvToq{UlOqRXeKR1GoTVOC[1mERXeKR2K{XmebNFmFNHeLTGqpZ3qGeGCuUo[jcmKtZn6SO1SSc3eKR1GoTVOC[1mERXeKR1GPR3mC[1mERXeKR1GoTVOC[1mJ[H:iW4itT1ODNHOvWnyKR3uo[YdxT1mERXeKR1GoTVOC[1mERXeKR1GoTVOTe3J{UXeRV1K7[FiLe3J{UX:LS4itXn6Sd1mETnOkcIi2TXmsO1SSc3eKR1GoTVOC[1mERXeKR1GoTVOC[3GYXX:KR2K4ZkOO[2CVNEmKS2qpZliPcFmEb3eme{CMTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVODfWqZVkGkcUSoTlibbHOrSUeFVX:oTVOC[1mERXeKR1GoTVOC[1mERXenVUCMTVOC[1mERXeKR1GoTVOC[1mERXeKRUCMTVOC[1mERXeKR1GoTVOC[1mERXeKR2KrZViXeXF{UoCmcWWoVGODfnSYToqlTFmwTle5cGqvVYOKSFG{TVOTe3J{UYCQe{CMTVOC[1mERXeKR1GoTVOC[1mERXeKR2K4ZkOO[1u7NHekN2K6ZleXeVuETnOkcIi2TXmsO1SSc3eKR1GoTVOC[1mERXeKR1GoTVOC[1qIfHybcmGoVGODfnSYToqlTFmwTle5cGqvVYOKR2K4ZkOOdF:4NFuKR1GoTVOC[1mERXeKR1GoTVOC[1mCNFuKR1GoTVOC[1mERXeKR1GoTVOC[1mEVoejN12oVGODfnSJToejN12wTlePc3SYOYKkNnx3XmO4[1q7d36MWIOPR3mC[1mERXeKR1GoTVOC[1mERXeKR1KxXnmo[1qJRo[kfVGpVGRx[2quSoOkNmWoT2ODO1SSc3eKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR2KrZViXeXF{UoCmcWWoVGODfnSYToqlTFmwTlePc3SYOYKkNnx3XmO4[12Ee3eLTFK3Z4msO1SSc3eKR1GoTVOC[1mERXeKR1GoTVOC[3[SNFuKR1GoTVOC[1mERXeKR1GoTVOC[1mEVnqiTG[2ZUOPdHWuWXeRV1KwXmipb2qYUX:LS16w[Gd2dnNzcE[bV3t4SGGw[1mERXeKR1GoTVOC[1mERXeKR1GoSGGw[1mERXeKR1GoTVOC[1mERXeKR1GoZWe[c1mEVnqiTG[2ZUOPdHWuWXeRWECoUVOCdFmJd16EbVGoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoXX6LcGmYd{eFVX:oTVOC[1mERXeKR1GoTVOC[1mERXenVUCMTVOC[1mERXeKR1GoTVOC[1mERXeKRUCMTVOC[1mERXeKR1GoTVOC[1mERXeKR2K4XWiLfmqYVXeNbkCoZ{OXbXN{VomMR2K{XmebNFyERYeNR1GsXUKpNXKueIqiXICtT2S{UlOqRXeKR1GoTVOC[1mERXeKR1GoTVOCb3KIWn2lR1F6TViPNWmvUkCkbXesZleXcXSEe3eLS16w[Gd2dnNzcE[bV1GzTViPNHOufHyjbXeqXFiLZ3KqTYCMWIOPR3mC[1mERXeKR1GoTVOC[1mJNF6EbVGoTVOC[1mERXeKR1GoTVFxT1mERXeKR1GoTVOC[1mERXeLTGqpZ3qGeGCuUo[jcmKtZn6S[2CURXukS1[6Z{KXb1:4NFuKR1GoTVOC[1mERkmFVX:oTVOC[1mERXeKRU1:Jku{PkJ1PjK[XGZxZkJybHSIcHqTS{l{Zn25emmYVYljP4N7NkNzOEpjR3mC[1mERVqiW2moT1VybGpzWU[QcXitZliDcHOq[36jXGJyZ32LelxzcIWbcUivT2NxL2pzWkCWcW[vWH2HeGqU[4CRWECvZUOLNHKIeHiiN1lxToms[3W4c3eKR1GoR2GsT1mERXeKRXuLTlePenKuXoCbfVF6TVVybGpzWU[QcXSt[F[PdHKu[IObXGK3ZnmocnKZVkGkcVq3UEKPenKuXoCbfXOxU4ew[1mERXeEVXyxXnmCc1qIUo[jcWqxXolxL2pzWkCSXGZxZkJybHSIcHqTS{l{Zn25emmYVX:MV3uo[Yew[1mERXeEVXuMTVOC[1mCb1qEXGK6[WODO1OqRXeKRXuLR2Gw[1mERXeEVXuLR2OTNHSZTnmjN1Kp[Feo[2CURXu[Nkm2Xn2tclyVOX6bXGKW[GiLbXJ{RnilS3ewT2S{T1mERXeKRXuLR2Gsb3KYPXubW4eoVGODUmmY[HyQboCvXmiTUnJzVnyjR3evZmiTNXOuTo[NNkFx[GiLbXK6Z4CQe3:LR2GsTlOSb1qEVXuLTVOC[1mCb1qEVX:LR2GsTlOUPI[KS3StZn2XfWmZVnyKS4ixZ{OS[2quPYmKS1[{ZlODN2qYToqiXGKtZ4ew[1mERXeEVXuLR2OTeHJzVnyjR{BsXkKXeWqZTnilS2[XZ325UXGZUkCMR3t4R3mC[1mERVqEVXuLR3mC[1mERVqEVXuLTlilcGmvUoClS2[7TVRx[2SYSn6bWH93XkKXNGSYPXubW4ewTkKPenOuWY[lNm[qZ{KtNGqUZ4CNWEWvXmiTSHJzfIObW15xZWd6eVuEb4SRcYi3XWeSc1uUNDubNmZxV2iTcHKZUX:MWIOMTVOC[1mCb1qEVXyuZkOLcGmYUn:KR3es[EKXbXNzcECbXF2oXWiO[1qJ[Hy[cl6x[FeWdFmJd1uKR1GoTVGsTlOSb1qEbVGoTVOCTlOSb1qEV2J{XmeLfnGZVnySNkm2Xn2tclmFNHeLS163Zn2bdGq6NDubNmZxWkKXbXNzcECbWV63Zn2bdGq6[3ulNm[qZ{KtNGqUNDubNmZxVUJ6b2qU[4CMWIOMTVOC[1mCb1qEVXuLZWe[[1uEVkObW1q7ZWiTcGFzPYWbcXyvTVO[cVmEVkObW1q7ZWiTcGFzPYWbcXyvUGR2cmqZVl[jcV[qZleXb1uEb{mRV3O5Toms[3W4c1qEVXuLR2GsTlqIUo[jcWqxXoesTlmFNHeLS163Zn2bdGq6NDubNmZxV2d2NGqZToekcWZxT1OsO1Oob1qEVXuLR2Gsb3N{Wnm[cV[7XmOC[1mCb3eRV1KPXWelcF:rdH:bW4i4XmiKc1pzNUClXFqqZol6N2qYToqiXGKtTomseGCu[HylSl5yXX2LbHNzWX:LTHStXX6PdHSIWYSRcXSt[FWTcGquSkGjTGKV[Fd6fWqZXoCbXHOwT2OsO1OSc3eKR1GoR2GsTlOSb1qLTHStXX6PdHSIWoe[XGKwTVRx[1qJ[Hy[cl6x[FeXSHJzOX2iW3O1VH2lcHSGTnikNm[GZWiKc1uUOVWWfUSs[FiXfWmuPYe[XGKwUHuTWFyqVoqlW1qqXWiPcFysVmSNbWJ{XmeLfnGZVnyNWEWvXmiTSHJzVnyMR3u2Tol2NHWJVX6Qe3:oTVOC[1OSb1qEVXuLTldydHKvUoCmcWWLTVRx[1qIUo[jcWqxXolxL2pzWkCVW3y2ZWdybHKHRnibNm[VZWixcFuEb{eE[3uLR2GsTlOSb3ukNl66ZWiDNFmCb3eRV1KPXWelcF:rdH:bW4i4XmiKc1pzNUClXFqqZomkdFyVOX6bXGKI[Ge5d2KIPUOjcYi3XWeTWGl{ToCkTGKSXWiTc1uEb{eE[3:LR2GsTlOSb1qiW2moT1OHdHNyPXymS2[r[GiTbGmufHyMR2K7XUOLdHOJVYCMVX:LR2GsTlOSb1qEW16wZmd6b1uEVoq[N1qxZ1iSd1mEZ4ePfnNyTomsO1Ooc3eKR1GoR2GsTlOSb1qLS163ZmdybHKuVXeEV1F6TVOTfml{ToCkTGG2TomCclyqVkObW1q7ZWiTcHOISkCiR{SvTVOkeVqINYCjcl6x[X2WeVq6RYmRbWm5TVO[cl:6RY[NfVKpZ{OteWlzbImjNkW3[GiO[2lzSoOjS3y2XoewT1OSb1qEVXuLR2etcVmE[3uiW{VxXmiLe3OuWkCMVX:LR2GsTlOSb1qKR1GsXUJ6eHKYSoWbR1F6TVOTdHKvVnykclK6XmiSeVq6RX6NbWKrZkJyeGmYOXuQe3:MR2GsTlOSb1qEWVKt[VeXbluEVnqjNkG1XWd2b1uVd1uE[3uLR2GsTlOSb4[NfVK7XWibcFmIVo[lNkW{ZkKHb1mJVoCjW2Wo[Fd5[2lzPYWbcXyvR3esTlOSb1qEVXusXleHNGqURXeKSECoXleHNGqU[36YV{G1UGeS[2OFdICQcl2vT2S{T1OSb1qEVXuLR2OTbnJzOX2iW3O1VH6PcHSGfHikN2KWZWdycGRzXlKlXGK3ZmeHNHGYUlWjN3S2Zld6bGqE[3ubS1ZxXmOsO1Oob1qEVXuLR2Gsb2lzPYWbcXyvUGR2fmmZXnyMR3t4R3ew[1mERXeEVXuLR2GtPVOqRXeKR1GLR2GsTlOSc3eKR1GoR2GsTlOZNFuEVXuLR2GsT1mERXeKRXuLR2hx[2lzSkC[NneoT1WXOGlzWoelS3y3ZnmCb2qUb3eme3:oTVOC[1OSb1qEWUGpXkKWOl:ufI[bfXesXmNxL2pzWkCVW2[7Z{KHcmqU[4CMWIOMTVOC[1mCb1qEVXyPXWelcF:rdIOjNnSH[VePcHOJVoCjNkSwTleWdF:4c3eKR1GoR2GsTn[Sc1qEVXuMTVOC[1mCb1qnVX:oTVOC[1OSb1uKR1GoTVGtPVmIWoOkNmWo[Yew[1mERXeEVXyPXWelcF:rdIOjNnOwTkB2elmJXnijS3ysTVe5dGlzWoW[NmW2TVV2enSIbICjcXOoZ1eHcmqURkOiW4i{TVeLcFmIVo[lNkW{ZkKHb2qYVYWLfXt4R3mC[1mERVqnVX:oTVOC[1OSQU1jP4N7NUZ7JnN{cIW[Nni6ZkJ2dHWuWU1jP4N7OkJyOkpjSGGw[1mERXeEVUCMSGGw[1mERXeEV{iyTVWLNXGYfHuiW{WvTViHNWqZToCbXF2oXn16fVmJUkWjcV6wZ316eXGZdHilS3y3ZnmDbmmZVnybNkm6[WODNnGYWkOKS1[2XlODe3OuPXulW15xZ4mDb2qZVniiW4eoT3l5UlOoNFuEVXu3T3mDcmqZVkCiW{WvTVetb3O6Ro[bbVK4Z32XNnGYWkOKS16p[FeXcnJ{ToCbXF2oT3l5UlOqRXeEVXusZ1iLcHSucHylN12oVGOCb3SuSomOR{BsXkKXNGWJTnylcXyt[ECPbHSIWn6jN1qxXmiOc1uVd16EbVGoR2Gsb3OJTnylcXyt[EOO[2CURX:LTFK6XmibdGqZ[IqRWECvToms[2C6RX6NWFWvTVSw[1qJRombXGqxXmilfl:4NFuKR1GoTVFxT1OSb4[MbVKvXmiTNHGYOX6KS3ysZ4mDemqqRoekcUms[GePNFmIUnilS2[vZkOLdGqZUXeMbUiLSGGw[1mERXeEV2K4Z316b3SYUkCkfVF6TVOTNmmZTYeNWEWvXmiTVXOuPXulW15xVUKHNGqY[I[kcXytZ4modF:4NFuKR1GLR2OTe3OuPXulW15xZ4mCPVmE[3ukTFq3XliXbnSJUUmRV3OvT2OCM1mEZ4SOV3OoU3mCb3OJTo[bTG[r[FiOO1SSc3eKRXuLSGGw[1mCb1qNfX:oXX6XdHKIVXeiW{W7XmiLNFmJSkGbXFp2TVebfXJzNHe[Nkm6XmZ6NXOufH[kcWZ{Z32tNGqURYGNe3uPR3mC[1mERVqLTFZyXmiLOWOYOYqbXFpxWX2XN3OucECbV1F6TVOKUlOqRXeKR1GLR2FxT1mERXeKRXyLWHyPSmWtVXeUWXSQWEGLSlmGcF:XSUioXVOKeVqJXnikbmG2TX1yNHSZTnmjNlGoT1eDNXOufH[kcWZ{Z32tNGqXPYCbS1G{TVeDfnSIPYmbWkmxXleCd1mIRnq[XGKtXkJ6fXWXPYCbS1G{TVeDe3OuPXulW15xXEKtb2mEe3e[TFqtZ2iXcHN{Vn[kS1ZxZVeCdFSSc1qEVXyVVmW5SmFyVXe[TG[6ZlZ6fWqZ[ImiXGKtXEKtb2mEe3e[TF5xZkOLcGhzcHu[R4eoXVePbHSIWn6jN1p2XEKtb2mEe3e[TFK6ZkKTNWl{Vn[iW2KoUFOD[3OuWoilW2[7[FZ6e2mZVn:[RUCMR2GsTmKtTmCVV1KoTXl1b3SuSomPR{SqXUJ6fWqXPUGkcYinZ32XN3OucECbW1GPR3esTlOX[FmTWlqHTVFxT1OSb1qMRUCMR2GsTlOUbHe[NlZxXmelenOvcH[iW2KoTVWtU1mE[3mKR{SoTliDfWqZXoCbXHS7TVOCeVmETYCKSV[QVlOD[3OJTo[bTG[r[FZ6dGqIRXeUWl2oWHyXUWSEb3eVNVmoSGGwTlOSb1qMS1KrXWiTcGpzPYmmWkmxXleC[2OWOHeMR1moUHmCb3OJTo[bTG[r[FiO[1mEOHeKbXuoVWV2SVmIRoekcUms[GePNGhzcHu[R1KLWYmDU2RyVXeVcG[OWFOs[2RyTV6E[3uLR2Gsc2mIUnilS2[vZkOLOWhzcHu[R1KLWYmDU2[WfF2KSV[QVlOD[3OJTo[bTG[r[FZ6dGqIRXeUWUSoSGGwTlOSb1qEV3iVVmW5SmFyVXe[TFK6ZkKTNWl{Vn[iW2KoTVWbV2RxNHe[R1m2TlibbHOrVYWKcV63Z32X[nSZToOZN1qt[EOLdHSIWneFVX:LR2GsTlOScGiUSW[UVmOD[2lzSkCbW3S3Z36t[nGYVneKSXyQTVOobVmEOHeLTFK6ZkKTNWl{VoqKR{SoTXmsdFuSNFuKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoT2OKeVSSc3eKRXuLR2Gsc1uEVkK[XFm5TVOGPVmEZ36MV1FwTVOLRmSsVXeMS1K7[Fd6fWqXPYCbS1GoWHt6WVmGcF:KR3eqTVN1[1qJXnikblWoUHmCbVuUb3mKSH:oTXmKdFyqTV6EbVGoR2GsTmGWOVWKRUCMR2GsTlOUbI[kTGKxZkJ2flmGfFqUNGWoTomkdF:6TUeFVX:oTVOC[1OSNFuEVXu3T3mDbXSYcIObR1KsXme5cHSIWXekXG[tZ36s[2quPYmKTFqtXUJ6fWqJUXebclq3ZmODbnJ{TnyZN2[6ZliLcHR{ToClS2WoT3l5UlOqRXeKR1GLTliHNWqZTkWTS2[{XmiTcGWuWkOkcXxxXmOCPVmETV6EbVGoTVOCTlSSc3eKR1GoR2GtSWKWfF[XSWWoVnyLVGSURneKbUSs[H2HfV6EOHmjXGJyZ32LemmCNFuKR1GoTVGs[1mERVqXNHiHWXuW[1mCNFuEVXuLT1OCUlOob1qEVXuwXVePbHSIWn6jN1p2XEKtb2mERl:VNWGoV2V1[1uETYWKR2K4Z32XNnGYWkOkfVGoUHmCbVuURlKVb2GoXViDfXJzVkG[N2KnZWeT[1mGcGSKSUWXWFW4dFmGPWOFVX:oTVOC[1OURXeKR1GLT1eDbmmZVnybNkm6[WZ6dGqIRXeVb{mWTVWtU1mE[3mNbVGsZ1iLemqJWnqlTF2oUHmCbVuURlKVb2GoXViDfXJzVkG[N2KnZWeT[1mGcGSKSUWRWlODU2[WfF2MV1KRWXdxT1OSb1qEV3ioXUKHNGqY[I[kcnynZWeT[1mGcGSKSUWXWFW4[2GWOVWKS1K4Z316b3SYUkCZNnysXVODTmSqRV6E[3uLR2GsTluHUl[VSW[FWlOD[3OJTo[bTG[r[FZ6dGqIRXeTcFqRWGOD[1mqOHulcV[6UlN1bWlzPYmbWklyZ325[nOuWkOkcXxxXmeCUlOob1qEVXuLR2[lTWKXTl[KS1KrXWiTcGpzPYmmWkmxXleC[2SsPWWKSXyQTVOobVmEOHeLTFK6ZkKTNWl{VoqKR{SoTXmsdFuSNFuEVXuLR2GsdF:6TUeFVX:PR3mC[1mERVqNfX:oXX6XdHKIVXebS2[{XmiTcFmJSkGbXFp2TVebenOqRombW2KxZ32XbnSJWXelXFq{Z4mCdVy4NFuKR1GoTVGsb3OZWnykcnyGXme5cHSIWmObW2KxZ32XbnSERUmKRUCMTVOC[1mCb1qKb2KHWFWXWWKURleWb{mPTVeCbVyqVkK[XFlxUHmLeHSJWom[cUmoTV[lTWKXTl[KS1K6XmiHNWqZUkCZN1Kp[Fep[1mGcF:KR3ePR3esTlmERXeKRXyVVmW5SmFyVXe[TFqtZ2iXcHN{Vn[kS1ZxZVeC[2KtTmCVV1KoTXl1b3SuSomPR{SqXUJ6fWqXPUGkcYinZ32XN3OucECbW1GoWkCpSmWsWXe[S{m4[FetenKvUneKSIdsTVOkclSSc1qEVXuxU4mKO1SSc3eKR1GoR2FxT1mERXeKRXu3T3mDbXSYcIObR1JyZ1eTbHSIWXekXG[tZ32tcHO6Rn2jN1mo[Fite2qURYGNe{CMR2Gsb3OZWnykcnyXZ1eTbHSIWlS[XGKtXkJ6fXWURUmKR1qXWVWTRm[GWXe[R1m2TlibbHOrVYWKcUFx[GiLbXJzRXeWNG[WTVeDNHWZRny[SECvXUKHNGqY[I[kcnuvTV[lTWKXTl[KS1KrXWiTcGpzPYmmWkmxXleC[2OXUXeVb{mWTVV2WmSGe3eSWUWGTVeDe3OuPXulW15xXEKtb2mERlqWfVKQWmW5UVmrd3eFVX:LR2OTfHSYWommWm[4XleHNGqXRomjNmJyXUOS[1mFNHeKcG[SVlWHWWKURneKbUSs[H2HfV6EOHmjXGJyZ32LemmERmSTWmGoXViTOXOIWneRV3S4Z316b3SYUkCLfVKZV1WXV2KURnekTFq3XliXbnSHPYCbS1GoV2[O[2SsPWWKSUWXWFW4bV:6RV6E[3uLSGGwTlOUPIGKSVpyZWe5b3GYOX6KTFZyXmiLdGqZUXebcUm6TViPOXKuUn:kcUm2ZWixbHSIcI[jbVKrZmiO[3OISn6bXF2oT3l5UlOoNFuKR1GLR2N5dVmI[HylR1KrZkK5d2qYUkCiW{m2TVePeHO6Roe[W3StZ4mDcXOuPYSKSUGpXkKXeXSIPHeSNkm6XmOCdVy4NFuKR1GoTVGsb2lzNYqWS1[vXmiPTnSIWoSkfVF6TVVybGpzWU[QcXSt[FVyemqIWoOMR3SrZmiOenOISn6bV3OxUGR2cmqZVlSjNoi{XmePNHGYPYWMR3u1VH25emmYVX:MV{BsXkKXNGOZVnyjXF2wT2S{UlOqRXeEVXuPR3esTly6c3ebNmZxTVetb3O6Ro[bbVK7Xme5cGl{VnybR1KrZmiO[3OISn6bXF2o[EKtNHGERoqlS{m6XmODbnJzVnykfVKuZ316eFmGNWWlXFqqZomDbnJzOX2iW3OoT3l5UlOob1qLS161Z4mCPVmEVkK[XFm4UGR2cmqZVlSjXF6SXWelcHO6[4CQe{CMR2Gsb2lzNYqKSECoTXmkbVyvUkCkcEm6XmiDd2mYUnyMR1m{TXm4[1mqZ4OLfVm{TVOTbnKZUYCNbVmvTXq{UlOob1qLS161Z4mCPVmE[3u[NkG7VGRxclq6b3eRfVGvUGSGclmFc3eLS161Z4q{UlOob1qNfX:o[FiLbHKvUn2jN1q1TViTelmISomkcVZ2TVebenOuNHeMbUiPR3esTlqIUoSkNF[6Z3mCPVmIWkSkS4i3XleWc1mqe3mNR1K7[FiL[nOuWoejS1[rXmOobVq6TYOKR1mqUFOCb2lzNYqMV3t4SGGwTlOSNFuEVXu3T3mDcmqZVXekS1[vXmetb2h{UkCjN1qtXEKtb1mISoOkcW[pXlis[3N{cIW[Nni6ZkJ2dHWuWnuKS161Z4mDe2mY[HykfVGwZ1iLcHSuWoWlR1Ks[GiDd3GYUoClS2[7T2OCdVy4NFuEVXusXUJyfmOYOVWSbVF6TVeHfXOuSkWMR3t4SGGwTlOYXo[kcW[pXUKo[1uEVkK[XFlyTVeHflmEVnqjXF6LZnms[3W4NFuEVXuLTlePeHNxcIWTSVqjXGOCPVmEVnqjXF6LZnlxL2pzWkCWS1[vXmWtb1uEb4WLNUivUHmTbnKZUlqjbUBsXkKXNGV{Vo[kcW[LXlOodF:4NFuEVXx6SGGw[1mERXeFVX:LR2N5dVmITkGiW4isTVeteXNzWomlR1K5[GeXfXWURnqjXF2oT3l5UlOob1qLTGqpZliO[2CURnikclqp[WOodF:4NFuEVXyuZkOLcGmYUn:KR3esXUJyfmGZTomKS1[7TVOTbnKZUn[[NkmsXmOs[3W4NFuEVXuLUImw[3GYXXe[NkG7TVeHd3OuWnibTHuoXmipdHN{VXeiW{SoZmiTNXOuTo[KTGKpXX25cFmJVn:bW{SoZX6XeHOERoClR1GyUIdxT1OSb1qiW2moT1OHdHKtPXikclqp[WOob2lzNYqZNl63XleWd1mEVnqjXF6LZnuTR1uUb3eme{CMR2GsTlOUVnu[XGKpTVRx[2qZbIejS{msXmOobWi6TYOKR2KrZmiP[mlzPXubV3t4SGGwTlOSb1qiW2moT1OpbnJ{WoWlR3esXleHNGmUb{mRWFmxTVO[cVmIcIqkNmZxT1OTbnKZUmG[W3StZ{CtNGqYNYqYfWKsXWiTbGe7RnSZV3uxTVi{UlOob1qEVXuLTleHfXOqRXeRV1KpZ36LbHWU[3ubS1ZxXW[{fGiUe3eKbXOqUHmTbnKZUmG[W3StZ{CtNGqYNYqYfWKsXWiTbGe7RnSZV{BsXkKXNGOYVnyjcmKxXn2tcHOq[4CNbVmvTXm4[1qIVnilS1[jUVZxd1mETX6[NkG7TomKdF:4NFuEVXuLR2Gsb3SuSoOkNYSlTVRx[1mq[3mNcXy1Z1e5emqIWX:KbYeqUFOCb2mZTomMV{SqT2OKO1SSc1qEVXuL[mFxT1OSb1qnVUCMR2GtPVSSc1qEV2K5[GeXfXWWcIWkNm[6[FWPUmW6RUmKR3OvU4dxT1OScICbbVGwXUJ6NXKvVX:LTGqpZliOdGCrRYCFVX:LR2Gsb3OZWnykcnyLZn6PcHOvVlSVWl2oVGOCbWOWOWSTWlqWTVWtU2[GPHe[R1m2TlibbHOrVYWKcUFx[GiLbXJzRXeMS1K7[Fd6fWqXPYCbS1G{TVeDfWqZSkGbXF5xXEODbHSIbHeNR1KoZ1eHcmqXPYCbS1G{TVeDNHWZRny[R3uoWnuHUW[WWmSKR1m2SGGwTlOSb1qiW{G4Zld6b2qU[3mNR1m{TVOTNmmYfIqMV1G2TVOKO1mrd16E[3uLSGGwTlOSNFuEVXu3T3mDbXSYcIObR1KsXme5cHSIWXekXG[tZ36s[2lzNYqKR3:3SGGwTlOUVoilW2[6[WWTcHKIWkCbWV6PWYmCPVmETV6E[3uLSGGwTlOScFWTWYiHWlWW[2KtTmCVV1KoTXl1b3SuSomPR{SqZmiTNXOuTo[[R1KZV1WXV2KURX:FVX:LR2GsTmFxPV:SNF[WT1eDe2mY[HyZNnysXVO4[1pyPH6NR1KoZ{OTenOuWn[iW2KoT2ODU2RyVXeUWUSoT1OK[1yqRXu[NkG7TVN1[1mqb4CQfVl4SGGwTlOSb1qFVX:LR2GsTlSSc1qEV{iyTViHNWqZTkWKS2q3Z3mDfWqZ[ImiXGKtTVeteVmIcIW[W15xZWibcFmJUkCjN1qtZ4mCdVy4NFuEVXusZ2iXcHOvcFWbW4it[FeXTnKsSnqlS3xzXm[PNHJ{TnykfVGoVGOCbVSSc1qEVUCMR2GsTmKGWl2TWmKHTVWbV2RxNHe[R1m2TlibbHOrVYWKcUFx[GiLbXJzRXeXNHiHWXuW[2mJUkCjN1qtXEKtb2mERlqVbVGwTXmCeVmEVkK[XFm5TVN1[1mqb{eFVX:LR2GsUlOob1qKboOPR3esTlSSc3eKR1GoR2OTbnJzOYWbW15xZWd6eVmFNHeVW1[vXmSwOmpzWkCWNny2XkK5cHSIPYWMR3SrZkOLcFx{TnykNklyZ32PcFq6b4SRcXSt[FWPenKuOXy[N2KxZkJ1c1pzUo[kcW[n[EOLdHSIWX6MWIOPR3mC[1mERVqFVX:oTVOC[1OZVommV1J4SGGw[1mERXeEVXuPR3mC[1mERVqEV2KrZkJ2eWqYUkCiW{m2UGR2fHSYWommV3eqWUGTRmWtVXeXSlqDWHyPRmFyVlqVNESqT2S{UlOoNFuKR1GoTVGsTlqIUo[jcUWtXUOTdHJzOISRclZyXmiLOVuEVoilW2[6[WWteXNzWomlSlqt[EOLdHSIWYCQfVGoSGGwTlOScICbbVGwTliHNWqZTkWUW{W7XmiLNGFxNWSKWECqTXms[1qIUo[jcUWtXUOTdHJzOISRclZyXmiLOVuEVoilW2[6[WWteXNzWomlSV6PWYmsO1mERXeKR1GoTVGsTlSSc16E[3uLR2OTbnJzOYWbW15xZWd6eVyVOYilW2[6[WOob3OZWnykcnyGXme5cHSIWmObXHS6ZWiTcFuVd16E[3uLR2OTbnJzOYWbW15xZWd6eVyVOYilW2[6[WOob3OZWnykcnyGXme5cHSIWmObW2KxZ32XbnSEb{eFVX:LR2Gsb2lzPYWjcW[r[FetenKqNDukXG[tZ36sc1qJSkGbXFp2VleXd2qZVnySNEGVT2S{UlOob1qEV2KrZkJ2eWqYUkCiW{m2UGR2fHSYWommV3esZ2iXcHOvcFWbW4it[FeXTnKsSnqlS3xzXm[PNHJ{TnykfXt4SGGwUlOob1qEV2KrZkJ2eWqYUkCiW{m2UGR2fHSYWommV3esZ2iXcHOvcG[kS2Kp[FeXSGmZVnybNkm6[WOsO1mERXeKRUCMR2GsTlqIUo[jcUWtXUOTdHJzOISRclZyXmiLOVuEVoilW2[6[W[Xe2qISkCbWlK6ZkKTNWl{VYCQfVGPR3dxT1mERXeKRXx6TVePbHSIUn:KR3iH[VePcHOJVoCjNkSoTleWdFmJd16EbVGoTVOCTlOUVnqjNkW2XmePNHGYPYWNWEW5[GeXfXWU[3mWb{mOWFWLRmFxd3mMWIOPR3mC[1mERVqEXGKwZ316N1mEVnyQe{CMTVOC[1mCcEmFVX:oTVOC[1OSNFuKR1GoTVGsb2lzPYWjcW[r[FetenKqNDukXG[tZ36sc1msUmCVWUGLWlOKdF:4NFuKR1GoTVGsUlOqRXeKR1GLJku:
1
+ ZUp5Pou{PkJxPjKZNl6wXmePdmSIcHqbW{WrXmF:QTJ8d{p{OUZ7JlSSc1qEVXyxXnmCc1mWNXibNmV3U32pcHKJRnykbXevZmiTNXOuTo[NNny2Xn15cluUNDubNmZxWX2XcmSuSoSbV3exVGRxcnF{TkCjS4SpZUOKNFq6b3eme{CMR2GsTlOUVoCjcWq3TVRx[2SYSn6bWH93ZVeXd3OIWomMR3S1[FiXfWmuPI[iW{WuZomkdFyVOX6bXGKUXmelTnKuXo[MR3t4SGGwTlOSb1qLTGqpZ3qCeGCtPX6bXGKVXmiOc1uUNDu[W2KsWkKHfXKucIWbfXesZWd2cXK6NDujW2[7Z{KHcmqUb{eEVUCMR2GsTlOUVkK[XFm4UGR2[nOuWnuMR3OyUImwenGYOXubXHevT2S{UlOob1qEVXy6XmiTNXOuOHebcV[{Z{KWO1SSc1qEVXx6TVeXd3NzWXeme{CMR2GsTlOZTnylTG[6ZnmDNHOvWnyQe{CMR2GsTn[SNFuEVXt:Jku{PkJ1PjKbS{l{Zn25emmYVlKjcWKLZn6PNGmYfINjP4N7OUh5PjKE[3:LR2N5dVmIToCjcWGoXleHNGmURYGNe3:oTVOCTlOUVkK[XFm4W4mlNXNzWomjcV[1XmOl[FmFNHeLfXN4R3mC[1mERXeEV2JzXWiKe2e6[Ie[XF67[EJ6fWqE[HSKSECoTomkO1OqRXeKR1GoR2OTNmmZTYeYfXSsZkOleXKIPXibSkmxXlOl[FmFNHeLTGqpZ3qKO1OqRXeKR1GoR2OTNmmZTYeYfXSuZWe5cFpyNHeRV1GvZmiTNXOuTo[LfoOMTVOC[1mERVqLTGqpZ3qDZlpzUnilR3SlTVRx[1pzNUClXFqqZomkO1OqRXeKR1GoR2OTNmmZTYeYfXS4Z316b1pyNHeRV1GvZmeHcmqYOUCjfXN4R3mC[1mERXeKR1GoR3mC[1mERXeEV2JyZ32s[2CURoe[XFq7XmZ6NXOue3:VW1[vXmSwOmpzWkCWN2K3Z32XSHJzOX2iW3OwTX6lcGmqPUGjcl6tXUOXfWqUPXm[XF6tXEOXfXKETYOKSFGxT2S{T1mERXeKR1GLTliXfXKERUmKR2JyZ32tZlpzbI[kN2GvXGN1b3SZToCYfXS4XWiTc1pyNEeEbVGoTVOC[1OUVkGkcYeoVGODNHOucISMR2JyZ324d1mEZ4[LfXt4R3mC[1mERXeEV2JzXWiKe2e6[IqiXGKtTkFx[2CURXulXFq{U4ew[1mERXeKRXus[H2HfV2Hd36iXFGvXGOCPVmEVn[WNG[UWnuXV2e6[GSTWlqYVm[L[mGWVlWWbXSlU4ew[1mCb1pjP4N7NUZ7JmpzWkCWcW[vWH2HeGqSQU1jP4N7N{Z7JlSSc1qEXFqt[FiXfXKqRX6iN1pxZle1bHF{TUCLfoOPR3esTjJ8d{pyNkpjZld6bGqGcIWbcUh:Jku{PkF2OkpjSGGw[1mERXeKR1GoTVOC[1mERXulcV[6UWNxL2h{TnykN1K3Zn6PcFmFNHeLTGqpZ3qGeGCtRo[kN2KUXmiHNWqZUkCMR3Sw[FiTe1:qPI[lN3R{UH2HfXSIcI[NcUWt[FN6d3GYUnyjcl6tUGePc2qYUoKLfYeoZn6Xd3KEe3eLTGqpZ3qCdF:4NFuKR1GoTVOC[1mERXeKR1GoJku{PkJxPjK[NnitXUK1V2qZUoejNkW7XmF:QTJ8d{pzPENzPjKFVX:oTVOC[1mERXeKR1GoTVGtdGqqRX:LTGqpZ3qCdFmJd16EbVGoTVOC[1mERXeKR1GoR2GsUlOqRXeKR1GoTVOC[1mERXeEVXus[H2HfV26NDuZN1qtXkCteWquPISRcV63XleW[2CURoCjcmJzXWe4c3N{WnmkN2K6T1OTNmmZTYiYflKlUFOCe1yERXulcV[6UVOsdF:4NFuKR1GoTVOC[1mERXeKR1GLR2etcVuERoCjcEmpZ36LbHWU[3ulcV[6UYlxL2h{TnybNHy2Xn15eGCuUo[bS2W{TVeHfXOuSkWMSFW4UFSKe1yFUYeNSGG4T2Os[1uURkeFVX:oTVOC[1mERXeKR1GoTVGsTlOSNFuKR1GoTVOC[1mERXeKR1GLR2GtdGqqRX:[NklyZn6Sc1qJXnikblWxTVR1PVmFUYCKTIOPR3mC[1mERXeKR1GoTVOC[1OSb1qEVUCMTVOC[1mERXeKR1GoTVOCTlOSb1qNfUioWVeHfXNzWXelS3itTVeTbHSIWV6EbVGoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mEVnu[XGKtTVRx[3N{VomZN1qtZ1e5bGlzWX:LfUSvUFOCcly6Z4OKTGK6ZWdxc1qJXnikbl[jUWZxdFuVd16EbVGoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mEVkK[XFm7UGR2[nOuWn6UW{WuZolxL2qISkCbV1F6TVVybGpzWU[QcXitZliDcHOq[36[Nkm6XmOkdFyVOX2jN1q1XWiTSWmZVnyMR2KsXWiTcFuVd16EbVGoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mCNFuKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1y6PHeWS1[6Z{KW[3SIbHyKS{WpZmeWUlOqRXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOTNmmZTYqNWEWnZ32XcmOYOX2jfUBsZn2HeGqURUmKTGK6ZWdxc1qJXnikbl[jUXxxdF:4NFuKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1SSc3eKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOCely6RmG[XFq7XmODNHGIWXe[Nkm1Z1eHeXWSNFuKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1qJXnikbl21VHx6fWqY[FqjcWq3UGR2bnJzNYe[W{V2TVRx[3GZUoqbXGGwTlibbHOrSnKONUCxTVR5[3SJToCjV3es[H2HfV2Xd4qZV3uoU3mCclq7d16EbVGoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mCNFuKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[3GYXXeMR2JzXWiKflyVOX[kcW[vV2d2cXK6NDu[NkmsXmOCPWCURYiOR3uo[YdxT1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoR2OTNmmZTYqNWEWnZ32XcmOYOX2jfUBsZmeXfnNzSn6bV1F6TVOTNmmZTYqNWEWnXImocmRxd36MWIOPR3mC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKTECoXme5fmqURoCbbVGwTlibbHOrUYSRcEm6XmelTnKuXo[NWEWrZkKTcFmFNEmKSFm4T2ODO1SSc3eKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeLTGqpZ3qOeGCvTniiXF6tWH16NHGYUnyMSFW4UVO4[1qJXnikbl21VHx6[luE[FqVb2qRXEGXVWJyTlKTSW[nWFWtSGKWOWSTWkmHW1[DTmWsWlWLfXuxU4dxT1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1Go[mODcHKJUnyKS3yuTVOob3SuSomOfUBsXEOLcGpxcIWbcUi1VH2PemqIWXeRWECoUYqCdFmJd16EbVGoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1Gs[H2HfV26NDukcV[xZ{KXU3J{VoC[NmWwUWSCe1yERXulcV[6UYlxL2hyPH:LNHyQVnt6[m[XRliWb1[GVmZ6U2RyVn[SWV6WV2[bSlq6b4CQe{CMTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOTNmmZTYqNWEWnZ32XcmOYOX2jfUBsXleHNGqURUmKR2JzXWiKflyVOX[ZfXevWH16NFmISnqlS3xzXWiTcGqERkWbXGGvT2S{UlOqRXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVhx[2qYfIqbV1KxXnmCc1qJXnikbl21VHx6fWqY[FqjcWq3UGR2bnJzVnyKSEB6TVSSe1uURkeFVX:oTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERVqKR2JzXWiKflyVOYm[W3y7XmV2enSIcHqbV3e5UVSCd1mEVkK[XFm7UGR2[mi6[36TSUmPVWWtU1mGVmCTWl2oWHt6WVmGNVKXSV6KTomsdF:6RXeKR1GoTVOCUlOqRXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVhxUlOqRXeKR1GoTVOC[1mERXeEVXuLR2FxT1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERkmKS2[{Z{KW[3W4NFuKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GLTlibbHOrUYSRclqpZWiPcGSuPUCiW16tT1SGe12Ee3eLTGqpZ3qOeGCtPX[MR3SHWXyLVGWtPWOTWXSnVUCpSmFxeH[Tb1[LWFOkdFuVd16EbVGoTVOC[1mERXeKR1GoTVOC[1mERXeKR1Go[mFxT1mERXeKR1GoTVOC[1mERVqEVXuPR3mC[1mERXeKR1GoTVOC[1OScEmKS2[{Z{KW[3GYXX:KR2JzXWiKflyVOX[kcW[vV2d2cXK6NDu[NkmsXmOCPWCURUWOR1GxTVi{UlOqRXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeLTGqpZ3qOeGCvTniiXF6tWH16NHGYUnyMSFW4UVO4[1qJXnikbl21VHx6[luE[F[WcFqRWXx6SWRy[F:VSUmDVlZ6TmKHPV:VNWKnVnt6WmSsVX6MV3t4SGGw[1mERXeKR1GoTVOC[1mERXeKR1Go[mODcHKJUnyKTIOPR3mC[1mERXeKR1GoTVOC[1mERXeKR1GLTlibbHOrUYSRcEm6XmelTnKuXo[NWEWrZkKTcFmFNEmKR{C5U4dxT1mERXeKR1GoTVOC[1mERXeKR1GoTVGsb3SuSomOfUBsZ32HdHNzWl:jN2KxXUKWc12VRYeNR1Gs[H2HfV26NDuZNUiwTkCXV2WsPWOZNVqHVkF6SGOGWlSUNUmIVWWtUVq6b4CQe{CMTVOC[1mERXeKR1GoTVOCTlOZNF6EbVGoTVOC[1mERXeKR1GoR2GsUlOqRXeKR1GoTVOC[1mERXeEXECoXme5fmqURkeFVX:oTVOC[1mERXeKR1GoTVGsTlqJXnikbl21VH6LbHGZUnyVcUlxZWePcFuFSYeOR4eoTlibbHOrUYSRcEmnT1OlSmWtTmCWcEmUVmWl[mFxbF[SNISnVnuHTmSEZ4CMWIOPR3mC[1mERXeKR1GoTVOC[1OZNF6EbVGoTVOCTlOSQU1jP4N7NUZ7JmWIPYqlSlqtZ2iXcHN{VU1jP4N7OUN3OEpjSGGw[1mERXeKR1GoTVetcVuERoCkNUmpZ36LbHWU[3ulcV[6UlOs[1qqXXe[NklyZn6Sc1qJXnikbmGxTVR1[12ERYCKTIOPR3mC[1mERXeKR1GoTVOC[1mEPI[KS2q3Z31ybHSERYSNWESo[FeXfnSFSUm[V2pxXmiPNF2rNXmKS2ZxXYl1UlOqRXeKR1GoTVOC[1mERXeKR2JzXWiKe1mFNHe[XFq6XWisc1uVd16EbVGoTVOC[1mERXeKR1GoTVilc3GYfHyMR1K{ZWiPNFuEVoWNR1Gs[Hms[2CURny[W16wT1OTNmmZTUCMV1GxTVi{UlOqRXeKR1GoTVOC[1mERXeKR1GoTVOCb3SuSomOSoSlTVRx[1mqVoWRV2JzTXq{UlOqRXeKR1GoTVOC[1mERXeKTECoTVOC[1SSc3eKR1GoTVOC[1mERXeKR1Gs[H2HfV2ERUmKS3y1Z1e5emqIWX:LfWmvUFOCb3SuSomOR3t4SGGw[1mERXeKR1GoTVOC[1mERXu[Nkm2[FeXeXSHVkWkS2WoVGOCbWFzPYWlS2[2[FNyNHWZRnyQbVKpZ1iDd3GYUnilS3y3Znl6OFyZ[EOlfUGuZkOLeFyZWomjS2[2XUJ6b2qYVnOkcIi2TXq{UlOqRXeKR1GoTVOC[3[SNFuKR1GoTVOC[1mERnyjTF6tTVi{UlOqRXeKR1GoTVOC[1mERXeKR2JzXWiKe1mFNHeLTGqpZ3qSO1SSc3eKR1GoTVOC[1mERXeKR1GsXUJ6eXSIWoWlSmJ2Z1eW[2CURXmSNkm2[FeXeXSENUCmXFKtU3mDNGqZbECNN3i1Zl[5fWiIOHmQe{CMTVOC[1mERXeKR1J6SGGw[1mERXeKR1GoTVFxT1mERXeKR1GoTVODdGqq[3eiXF6nZn6Xd3KE[3ulcV[6UYms[1uURkeFVX:oTVOC[1mERXeKRXuLTlibbHOrUXeRV1KPXWelcF:rdH6bXGKV[Fd6fWqWUo[jcWqxXomobXRzWnmNN2[2Z{KXbnSZTnyNNlqpZ{KX[nSZToOKbYeoUVOsO1SSc3eKR1GoTVOC[1mERXeKR1Gs[H2HfV26RUmKTF5xZ3x6fWqZRoO[W16tT1OkenGYOXubXHe2Z1epe1xzSnujW3y2Tom4[1q6Z4OKR2JzXWiKfluVd16EbVGoTVOC[1mERXeKR1GoTVOTNmmZTYqKSECoZ{OTfWh{TnykS4ipXUKWc1q6PYCjcWKt[VN2e3GJRY[LfYeoTomkd1mEVkK[XFm7T2S{UlOqRXeKR1GoTVOC[3[SNFuKR1GoTVOCUlOqRXeKR1GoTVOC[1y6PHekS1[6Z{KW[3SIbHyKS3Sx[H2XeVmHWmOVRUCMTVOC[1mERXeKR1Gs[H2HfV2qRUmKTFKpZ36PcGh{WomjR3es[H2HfV2qb{eFVX:oTVOC[1mERXeKS3yuT1OCbHGZUoqbXGGwTlibbHOrTnKLN16rZVeXeGqU[HSMV1J5[lOCc1qJXnikblqjTkOPbnGIWoSbV3SlTVOGPVmE[H:lTGK4Toms[1uURkeKRUCMTVOC[1mERXeKR1GoTVOC[3OuWkClXFq2TVebbHKJUnyQe{CMTVOC[1mERXeKR1J6SGGw[1mERXeKRUCMTVOC[1mERXeKR1G3UImDcHWJVom[W15xTVepenN{VXe[W{WsTViDbHSI[{[FVX:oTVOC[1mERXeKR2KwZkOPNFmFNHeLTGqpZ3qLZlpzbI[kN2GvXGS{UlOqRXeKR1GoTVOC[1qJRnilS3eoVGODdHN{UnylR3es[H2HfV2td36kS1ZxZVOl[FuURT:KR2JzXWiKfWe6[Ie[XGKwTkFx[1:qRX6NfXN4SGGw[1mERXeKRUCMTVOC[1mERXeKR1G3UImDenOIWoWKS1WoZ{J6bnFzWkCKS163Zn12cGl{VoCjNkSoZkJ1[3OIPYmlR1F1UVFxT1mERXeKR1GoTVOCb2qZTomjcUioVGODeXSYfIOQe{CMTVOC[1mERXeKR1GsXmiLfXN{VomKSECoZn6Xd3KFd16EbVGoTVOC[1mERXeLS2q4TVRx[2GIXoqjNl6zZkODcHKq[3uiS{m7[FO4[1:FRYOKR2KtZ36LeXK6e3eLS2[6Z36PNHOqe3ePV3t4SGGw[1mERXeKR1GoTVetcVuERXubclGoVGRxPVmIXnijTF6tTVOs[3W4NFuKR1GoTVOC[1mERXeKR1GoZ32XNHSZToWKS2qpZliPcF:4NFuKR1GoTVOC[1mERkmFVX:oTVOC[1mERXeKRUCMTVOC[1mERXeKR1KxXnmCc1mYcIqZNkVyZle4c1qJXnikbmmxT2ODO1SSc3eKR1GoTVOC[1mERXeKR1Gs[H2HfV6qRUmKR1qXZ{KXfVyWSn6bW{VxU3mCbVyqVkK[XFlzUHmLZ3OtfIWKboOPR3mC[1mERXeKR1Go[mFxT1mERXeKR1GPR3mC[1mERXeKR1GoUIl5[3NzWoWbR1JxZVeW[3OuWoilW2[7[FFxT1mERXeKR1GoTVODdGqqRX:LTGqpZ3qW[2CVNHeLN1K3Z{OScluURkeFVX:oTVOC[1mERXeKR1GoTVODcXOJWkCkfXesXn6Cd1mETmGVNV6WTVOTe2mZVn:KSXiWWl[Cel2UOIiZTFqkZnmKdF:4NFuKR1GoTVOC[1mERXeKR1GoZWe[[1uESoCkNUm2[Ge5d1uEVkK[XFlzT2Os[3W4NFuKR1GoTVOC[1mERXeKR1GoTVOC[1mIXoelXGK7T1OTcXOEe3eLTGqpZ3q[dF:4NFuKR1GoTVOC[1mERXeKR1Go[mFxT1mERXeKR1GoTVOC[1mERXebclJy[FiOc1qIXoeNR1GqV1d6fnSFc3eLS3i3Z{OTZ3OtfIWKbXt4SGGw[1mERXeKR1GoTVOC[1mERn2kTGZxZ4mob2qvRYOKR1qUXmebcHOuWomQbVGs[H2HfV1yfImZS{SqT2S{UlOqRXeKR1GoTVOC[1mERXeKS2q4[GiTfluEVn2kR4eoTlePenKvVnyjcmKW[WiDcFuVd16EbVGoTVOC[1mERXeKR1GoTVebe3SZVoqMR2KuZ1O4[1msUo[jcmKtZn6SeHKIWoWbN2KwU3mCbVyqRoqlTFq{Xmd1c1qJXnikblGxTVN1bWiJTnOjbVmxU4dxT1mERXeKR1GoTVOC[1mERXebclJy[FiOc1qIXoeNR1GqVUJ6eXKuWnqlS3y3Znqw[2lzfI[kNm[kZ3y5eWiJTnOjbVmxU4dxT1mERXeKR1GoTVOC[1mERXebclJy[FiOc1qIXoeNR1Gs[H2HfV2Eb{eFVX:oTVOC[1mERXeKTECPR3mC[1mERXeKR1GoXme5fmqYcH2KR3es[H2HfV6URUmRV1GvXkKXNFq6b3eme{CMTVOC[1mERXeKR1GoTVOC[1qJSkGbXFp2TVRx[1q6Z{eFVX:oTVOC[1mERXeKR1GoTVODdGqqRX:iXF67XmiSc1qJXnikblqjTkOHNWqZTkWLNUCxT2ODO1SSc3eKR1GoTVOC[1mERXeKR1GoTVOC[1qJSkGbXFp2TVRx[1q7PH6NbWJzXWiKfWe6[IilW2[6[WOl[F:4NFuKR1GoTVOC[1mERXeKR1Go[mFxT1mERXeKR1GoTVOC[1mERXebclJy[FiOc1qIXoeNR1GqVkCXWVmJd3ukS1ZxZVhyO1qJSkGbXFp2[mODTW[HVmGNflW2UW[5fWiIOHmMWIOPR3mC[1mERXeKR1GoTVOC[1mIcH2KR3epZWiP[nKvWoOjR3es[H2HfV6qb4CKTIOPR3mC[1mERXeKR1GoTVOC[1mERXeKR1KuZ1iXNHO6[3ubclG{TVOTNmmZTUKMWIOPR3mC[1mERXeKR1GoTVOC[1mJNF6EbVGoTVOC[1mERXeKR1GoTVebe3SZVoqMR2KuZ1O4[1msbI[kN2F3TVOTc3J{UkCZTFqkZnmKdF:4NFuKR1GoTVOC[1mERXeKR1GoXn6DNXSJUX:LS2q4UFOCbWFzPYWjcW[r[FetenKrc3e[Noi3Z{KXZ3OtfIWZTFqkZnmKdF:4NFuKR1GoTVOC[1mERkmFVX:oTVOC[1mCNFuKR1GoTVOC[1mERXukcW[7[Ge5NFmFNHeLfXN4TVFxT1mERXeKR1GoTVODN3GIcIObV3epXn2Xemqq[3ubclGxT2ODO1SSc3eKR1GoTVOC[1mERXeKR1G3UImDfWqYUnyiXGqtTViTc2qURombXF5yZliTflmIPX2KTGKwXmODfWqZSkGbXF5xSGGw[1mERXeKR1GoTVOC[1mERXukcW[7[Ge5NFmEOEmKS2qvXmiTfluEVn2kR4eoUWSKOFuVd16EbVGoTVOC[1mERXenVUCMTVOC[1mERV6EbVGoTVOC[1mERXeNfUioXUK5enNzWXelS3itTViPemlzeHylR1KrZkJ2eWqYUkCiW{m2U3dxT1mERXeKR1GoTVODcWlzfI[kNmWwTlebe1uVd16EbVGoTVOC[1SSc3eKR1GoTVOC[1mEPI[KTF64ZletNFmJVn:bV1K6XmiPNXKJVXeiS2[pXleXfVmIXomjNkCo[FepcFmIUo[jcmKtZn6SUlOqRXeKR1GoTVOC[1qJTnykN2[{[FOCPVmIWkSkS4i3XleWc1mtfImZS{WkZ3y5eVmqe3eLTFqtZ{OXd3SEe3eObXt4SGGw[1mERXeKRUCMTVOC[1mERXeKR1GsZVeXbGqIWomKSECoZWiPfmqZVX:LTFqtZ{OXd3SHd4eZV3uoVImCb3OuWoqlW4hxW4qD[FmFc3eLfXN4SGGw[1mERXeKR1GoTVOTbnJzOUCbW{VxTVRx[3GZUoqbXGGwTliLcHN{WoOlSoO5XGOs[2C6RXukcW[7[Ge5NGe7SnSKSH:oTomkO1SSc3eKR1GoTVOC[1mCNFuKR1GoTVOC[1mERXulcV[6UWOCPVmIOXylfVK7[FeTSHKISoqkfXexU4dxT1mERXeKR1GoTVOCb3SuSomOV{BsZVeXbGqIWomKSECoTlepcGmYVnykboOPR3mC[1mERXeKR1GoTlibbHOrSYSRcV63Zn6TcHKvVXeRV1GsXUJ6eXSIWoWlSIOPR3mC[1mERXeKR1GoSGGw[1mERXeKR1GoTVN5elmGbHijcWK{XmODbnGJWoWiNm[sTViTfWmYOYqbcW[6TVetcVmIOXybW2KtXlFxT1mERXeKR1GoTVODdGqq[3ekN2K6Z1d6fluJUkCkcmK3Zld6N2qZTX:LTGqpZ3qGeGCubHy[W2KtZ3msd1mE[ECkcV[2Z{KbcHOqNXyjcV63XleteWq7c3e[NnhyZn21cGqEZ4CKR1V6VGODcWmYfIqbV1GxTVi{UlOqRXeKR1GoTVOC[1mERXeKR2K4XWiLfmqYVXeRV1GvToq{UlOqRXeKR1GoTVOC[1mERXeKR2K{XmebNFmFNHeLTGqpZ3qGeGCuUo[jcmKtZn6SO1SSc3eKR1GoTVOC[1mERXeKR1GPR3mC[1mERXeKR1GoTVOC[1mJ[H:iW4itT1ODNHOvWnyKR3uo[YdxT1mERXeKR1GoTVOC[1mERXeKR1GoTVOTe3J{UXeRV1K7[FiLe3J{UX:LS4itXn6Sd1mETnOkcIi2TXmsO1SSc3eKR1GoTVOC[1mERXeKR1GoTVOC[3GYXX:KR2K4ZkOO[2CVNEmKS2qpZliPcFmEb3eme{CMTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVODfWqZVkGkcUSoTlibbHOrSUeFVX:oTVOC[1mERXeKR1GoTVOC[1mERXenVUCMTVOC[1mERXeKR1GoTVOC[1mERXeKRUCMTVOC[1mERXeKR1GoTVOC[1mERXeKR2KrZViXeXF{UoCmcWWoVGODfnSYToqlTFmwTle5cGqvVYOKSFG{TVOTe3J{UYCQe{CMTVOC[1mERXeKR1GoTVOC[1mERXeKR2K4ZkOO[1u7NHekN2K6ZleXeVuETnOkcIi2TXmsO1SSc3eKR1GoTVOC[1mERXeKR1GoTVOC[1qIfHybcmGoVGODfnSYToqlTFmwTle5cGqvVYOKR2K4ZkOOdF:4NFuKR1GoTVOC[1mERXeKR1GoTVOC[1mCNFuKR1GoTVOC[1mERXeKR1GoTVOC[1mEVoejN12oVGODfnSJToejN12wTlePc3SYOYKkNnx3XmO4[1q7d36MWIOPR3mC[1mERXeKR1GoTVOC[1mERXeKR1KxXnmo[1qJRo[kfVGpVGRx[2quSoOkNmWoT2ODO1SSc3eKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR2KrZViXeXF{UoCmcWWoVGODfnSYToqlTFmwTlePc3SYOYKkNnx3XmO4[12Ee3eLTFK3Z4msO1SSc3eKR1GoTVOC[1mERXeKR1GoTVOC[3[SNFuKR1GoTVOC[1mERXeKR1GoTVOC[1mEVnqiTG[2ZUOPdHWuWXeRV1KwXmipb2qYUX:LS16w[Gd2dnNzcE[bV3t4SGGw[1mERXeKR1GoTVOC[1mERXeKR1GoSGGw[1mERXeKR1GoTVOC[1mERXeKR1GoZWe[c1mEVnqiTG[2ZUOPdHWuWXeRWECoUVOCdFmJd16EbVGoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoXX6LcGmYd{eFVX:oTVOC[1mERXeKR1GoTVOC[1mERXenVUCMTVOC[1mERXeKR1GoTVOC[1mERXeKRUCMTVOC[1mERXeKR1GoTVOC[1mERXeKR2K4XWiLfmqYVXeNbkCoZ{OXbXN{VomMR2K{XmebNFyERYeNR1GsXUKpNXKueIqiXICtT2S{UlOqRXeKR1GoTVOC[1mERXeKR1GoTVOCb3KIWn2lR1F6TViPNWmvUkCkbXesZleXcXSEe3eLS16w[Gd2dnNzcE[bV1GzTViPNHOufHyjbXeqXFiLZ3KqTYCMWIOPR3mC[1mERXeKR1GoTVOC[1mJNF6EbVGoTVOC[1mERXeKR1GoTVFxT1mERXeKR1GoTVOC[1mERXeLTGqpZ3qGeGCuUo[jcmKtZn6S[2CURXukS1[6Z{KXb1:4NFuKR1GoTVOC[1mERkmFVX:oTVOC[1mERXeKRU1:Jku{PkF3PjKkN3y2XUKpfXJzOYCmcWV:Jku{Pkh2O{J7JlSSc3eKR1GoR2FxT1SSc3eKR1GoR2N5dVmGTkGiW4isZWd2clmJSkGbXFqxXmiO[2quPYmKTF52Zn2Pc3OuPYWiXICp[FetenKqRnq[XGKtXkJ6fXWURkKiW2Z{TVeHeWqERoekcUms[GePNHO6RnubXGKpZWe4[1uqPF6E[{CMR2GseluqRn6bXGJxZWd2clmIcHukfVK3XnmDe3OuWkKiW2Z{TVePbHSIWn6jN1qxXmiO[1uqPF6EbVGoR2Gsb3OJTnylcXyt[EOO[2CURXulcV[6UVNxL2pzWkCWTFqt[H2tcHRxUnilS2[vZkOLdGqZUX:MWIOPR3mC[1OSb3ukTFqt[H2tcHR{UXeRV1GwTliDfWqZXoCbXHS7VGRxclq6b3eRfVGvUGSGclmFc3eLTFK6XmibdGqZ[IqQe{CMTVOC[1mCNFuEVXu3T3mDcmqZVkCiW{WvTVetb3O6Ro[bbVK4Z316b3SYUkCKS16p[FeXcnJ{ToCbXF2oT3l5TlSSc3eKR1GoR2OTe3OuPXulW15xZ4mCPVmEVkK[XFm4UGR2cmqZVmGkcUms[GePNGFzSkCbW3S3Z32tcHO6[4CQe{CMTVOCTlOUVoekcUms[GePNHO6RUmKR3esZ1iLemqJWnqlTF16VGOkcluURT:KR3O1UWOk[1:qRXukTFq3XliXbnSJUUeFVX:oTVGsTlSSc3eKRXuLUImw[2mvWoCjS2GoZWd2fmqZTkCKTFZyXmiLOVmIXomjNkCoXUJ6fWqXPUGkcYinZ32XN3OucECbV1GyUIesUlOqRXeKR1GLTliHNWqZTkWUW{W7XmiLNGWuWkOkcXxxXmOCPVmETV6EbVGoTVOCTlOSNFuKR1GoTVGtTmStUl[WcGGoV2WlU2RyTl[KSXyQWlV5[2mETYWLTGqpZ3qSeVmuNUClXFqqZkKC[1uIRkGkcYinZ32XN3OucECbWkmxXleCd1mIRoqlS{m6XmZ6dGqIRYOKS1KrXWiTcGpzPYmmWkmxXleCd1mIRoekcUms[GePNGhzcHu[R4eoXViLcHOZWnykN2KnZ1eHNHGIRYCFVX:LR2GtWGKWfF[SNWGoXViXfXKHPYmbXHS6ZWiTcGhzcHu[R4eoXViPNHJ{TnyZNnysXVO4[2mIUnilS2[vZkOLOWhzcHu[R4eoXViDfXJzVkG[N2KnZWeT[1yERnekcW[5[GeXfnSHPYe[XGKwXVFxT1OSb1qTcFqRWGOD[1mqOHulcV[6UlN1bWlzPYmbWklyZ325[nOuWkOkcXxxXmeCUlOob1qEWnSKVm[LSlmCNFuEVXuLT1FxT1OSb1qEV3ioXUKHNGqY[I[kcnynZWeT[1mGcF:KR3eqTVN1[1qJRombXGqxXmilflmERYWKR1mxTVWHU2KERnekTFq3XliXbnSHPYCbS1GoV2[O[2StWl2VR3uoWEGK[1SSc1qEVXuLT1eDbmmZVnybNkm6[WZ6dGqIRXeUWUSoT1OK[1yqRXukTFq3XliXbnSJUXeKR{SoTXms[2GWOVWKS1K4Z316b3SYUkCZNnysXVODTmW6Rl:VNWGoWHyXUWSEb3eVNVmPR3esTlOSb3:[S16p[FeXcnJ{TkWZNnysXVODTmW6Rl:XWYiOTVWHU2KERnekTFq3XliXbnSHPYCbS1GoV2V1[1SSc1qEVXuLR2OpWGKWfF[SNWGoXViDfXJzVkG[N2KnZWeT[1mGXmOVNECoXVOKeVqJXnikbmG2TX2PenOuWn[lXFq{XEOLcHR{ToClS2[oSGGwTlOSb1qEVXyZV1WXV2KURne[NlZxXmelenOvcH[iW2KoTVWtU1mE[3mKR{SoTliDfXJzVkG[N2K7TVN1[1mqb4CMVUCMTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1uUTYWFVX:oTVGsTlOSb3:MR2JzXWiKfFmESUmKR3OvT2OCM1mETlKVb2GoT1eDfnSIPYmbWkmxXleC[2SsPWWKSXyQTVOobVmEOHeLTGqpZ3qG[1yqRXmMV3uqTVSw[1mqTYCNbVmPR3mC[1OSb1qSWUWGTVFxT1OSb1qEV3i3Z1iTdHJzOYqKSYiLV{CW[1q6Z3eVNVmoZkODNHGYPYWkfVKLWYmDU2[WfF2MWIOqU4dxT1mERXeKRXuPR3esTly6c3e[cm[xZleS[2qIWoObXGKtTViHNWqZTkWKS2q3Z3mDfWqYUo[kcWK7TVebfXJzNHe[Nkm6XmZ6NXOufImbXHS6ZWiTcFmEc4[FVX:oTVOC[1OUVoilW2[6[WWTcHKIWkCbWlqt[EOLdHSIWXeRV1GqSGGw[1mERXeEVUCMTVOC[1mCb1qTSW[OVm[TSlmGXmOVNECoXVOKeVqJXnikbmG2TX1yNHSZTnmjNlGPR3mC[1mERVqKR1GoR2[lTWKXTl[KR1GPR3esTlOU[3eFVX:LR2GsTluIRnq[XGKtXkJ6fXWXPYCbS1GoWHt6WVmGcF:KR3eqUHmCb3OJTnylcXyt[EOO[1mEOHeKbXuoVWV2SVmIRoekcUms[GePNGhzcHu[R1KLWYmDU2[WfF2MV1KRWXdxT1mERXeKRXuoTVOC[1OUbHe[NlZxXmelenOvcH[iW2KoTVV2VG[ERlqVbVGwTXl1[1qJRomjNmJyXUOTflmEOHeKbXuoVWV2SVmIRoekcUms[GePNGhzcHu[R1KLWYmDU2RyVXeVcG[OWFOs[2RyTV6E[3uLR2Gsc2mIUnilS2[vZkOLOWhzcHu[R1KLWYmDU2[WfF2KSV[QVlOD[3OJTo[bTG[r[FZ6dGqIRXeUWUSoSGGwTlOSb1qEV3iVVmW5SmFyVXe[TFK6ZkKTNWl{Vn[iW2KoTVWbV2RxNHe[R1m2TlibbHOrVYWKcV63Z32X[nSZToOZN1qt[EOLdHSIWneFVX:LR2GsTlOScGiUSW[UVmOD[2lzSkCbW3S3Z36t[nGYVneKSUWRWlODTmSqRX:KbVG2TVOTe3OuPXulW15xZ4mCeVmETYCMV3uPR3esTlOSb1qMWIOqU4dxT1SSc3eKR1GoR2N5dVmITkGiW4isTVeTcHKIWkCbV1K5[GeXfXWURn2jN1moZ32Xb3GZTny[N2JyTViXfXKJUXeMbUiPR3mC[1mERVqLTFZyXmiLOWKIWoObXGKtWX2Xb3GZTny[N2GoVGOCUlOqRXeKR1GLR2OLSWKWfF[XSWWoVnyLVGSURneKbUSs[H2HfV6EOHmjXGJyZ32LemmERmiUSW[UVmOD[3OuWoilW2[7[FZ6e2mZVn:[R1KLWHmCc1SSc1qEV1GoTVOCTmVxWl2TWV6WTVeDfWqZSkGbXF5xXEODbHSIbHeKSWqUWEBx[2mETYWLTGqpZ3qSeVmuUo[kcW[n[GiLd2h{TnylN1qx[FeX[1mH[FmTWlqHTVeDenOJVoCjNkW7XVOCPGCqRX6Le{CMR2GsTluVd3mQe{CMTVOC[1mCb16EbVGoTVOCTly6c3e[cm[xZleS[3SZRnu[XGKtTViHNWqZToCbXF2oXn16fVmJVkWkS2WoT3l5UlOob1qLTFZyXmiLOW[ZRnu[XGKtVUKHNGqY[I[kcnuoVGOCbW[XRlWSWmKHTVeCbVyqVkK[XFlxUHmLeHSJWom[cUmoTV[PSm[ERnelTHy4XmeCPVpzUnilS2[vZkOLOVq6RmiUSW[UVmOD[2lzSkCbW3S3Z36t[nGYVneKSXyVTVV2VG[ERl:XWYiOTVWHU2KERnekTFq3XliXbnSHPYCbS1GoV2[O[2StWl2VR1l4TVFxT1OSb3ukXG[tZ36tWnOIVnilS2[SZ316b3SYUkCKR1F6TVOLWmWGVlKXSWWoXVOKeVqJXnikbmG2TX1yNHSZTnmjNlGoWUCXWVmIRkCmXFKtXVRxcnOJTo[bTG[r[FOk[2ZxbF[Wb2WoXViDfXJzVkG[N2KnZWeT[1mGcGSKSUWRWlODU2[WfF2KboOoSGGwTlOSNFuEVXu3T3mDR3SYcIObS3y2XomDfHSYWomiW2[7TVebenOqRoqmW{WrZViLenKucE[[XGKxZkJ1[2lzNYqKTFKpXkKXflmEc4[FVX:PR3mC[1OSb4[MbVKvXmiS[2lzPYOjS2[r[FetenKqRnqjXF2oZ1eHcmqZUXebclq3ZmODUmmY[HyjcmK3TVWPenOuWXeMbUiPR3mC[1mERVqLS161Z{GDbGpzWoqUXGKtZmiO[2CURl6[W3StU3qxcmqZVl6jNmKtZlOocmlzNYqNN1KpXkKWcluUNDubNmZxVUJ6d3KIWnqlS3y3ZnmodFyVOYOjNl[sT1OseGCu[HylSXxxXmdyfluEb{eFVX:oTVGsTlSSc1qEV{iyTVelcHSERoCbTF2oZkK[[3NzWoObW15xXmeS[2lzNYqKTFKpXkKXflmJ[IClS3eoZ{OTenOuWXe[NkmsXmiO[2qvTo[jV1KPWliXfWmuPHe[Nkm2Xn2tclmEc4[FVX:LR2OTbnKZUXeRV1Gs[H2HfV2ENDubNmZxVUJyfmWISn6bXF2wT2S{UlOob1qLS161Z4mCPVmETX6KbUW7[FiL[nOuWoejS1[rXmOobVyETYOKR1mvUFOkbVyERXu[NkG7T2N1bVq6TUeFVX:LR2OTbnKZUXeRV1GwTlePeHO7NEmLfXOxTVR5[1q6NIiLfVF3TVOTbnKZUUeFVX:LR2N5dVmJVom[W{W7Xn16fXKURkCjfVKpZ36LbHWURn2jN1q1TVOwelSSc1qEV2KrZmiPRnOvTXeRV1Kt[ViDd3JzVnyMR1m{TXm4[3N{VomZN1qtZ1e5bGlzWX:KbXOqUFOCbVmqe3eLS161Z4msdF:4NFuEVXuPR3esTly6c3ebNmZxTViDbGpzWoCbSkm7[Fd6fWqXPYCbR1KpZliLcGmYVkWKTF52Zn2Pc3OuPYWiXICtXlODbnKZUXekS1[vXmiO[1uJRombXGqtZn6S[2qJWoejS3yrZWiTcHO6b3eMbUiPR3esTlqIUoSkNHy2VlWK[2CURnikclqp[WOodF:4NFuEVXyuZkOLcGmYUn:KR3es[H2HfV6URnikfVGsXUJyfmOYOICKTIOPR3esTlOUVnqjXF6LZnuTR2dyNHeRV1GsXUJyfmOYOISRcXSt[F[DbGpzWlqbR3exUHml[lq6OHu[NkG7V2d1eGCu[HylSl5xZkOLcGOYVX:MWIOPR3esTn[SNFuKR1GoTVFxT1OSb4[MbVKq[Getd2qERoCjcl6tZ36S[3OZWnykcnuoXUJyflmEc4[FVX:LR2OTNmmYfIqKSECoXWiLfWmZb3:MWIOPR3esTmquPYmbW1[rZVOCc1qIUoSkNF[6Z3mDbHO6RXu[NkG7XEKPemqIWYCKTIOPR3esTlOUPIGKS3yuTVePeHO6RnijTFqtXWeTOVmIWkSiXF5xTVeteVmINUClXFqqZomDNGmYToObV1JxZVeXeVmIdEGjXFGoZWiS[1uqPF6E[3uLR2etcVmE[3iiW{WnXWiLfWmZb3:LS161Z{F6bnJzVnyNR1GsXUJyfmOYOVWSbXuxTVi{UlOob1qEVXusXleHNGmURUmKS2Z1Z1e5emqIWX:KcEiqUFOCb2lzNYqZNl63XleWdF:4NFuEVXuLR2etcVmE[3:[NklyZn6Sc1qIVnilS1WxVGRxfVuURX2LbVKxZ{OPcHSE[3u[NkG7WVeHcmqZUlqlS2[1Z{G{b2qISkC[WoO4XGZxdFuURkeFVX:LR2GsTlOUVnikclmoTVRx[2mZTom[XHuwTleTbHSISnKOWkC{TVOKclmqOHu[NkG7WVeHcmqZUlqlS2[1Z{G{b2qISkC[WoO4XGZxeGCu[HylSXysXmd2NHGYXoCbXFmwT2N1bVq6TYOKR2KsXWiTbGe7RnSNR1GqTkKPeHO6Z3mMWIOPR3esTlOSb1qLTGqpZliPZmiURUmKR1mwTXl2dHKZRoOjNmKtT1OKd1mqe3eLS1[6Z3mseVmqb3mQe{CMR2GsTlOZNF6E[3uLR2hxUlOob1qnVUCMR2Gsb3OZWnykcnyLZn6PcHOvVlSVWl2oVGOCclq7d16E[3uLZWe[[1uIUo[lW{VxT1OTNmmYfIqMWES4T2FxT1OSb1qLTFZyXmiLOWOYOYqbXFpxVUByWFmFNHeKb3yQWUCXV2[ERlqVcGKRTVeCbVyqVkK[XFlxUHmLeHSJWom[cUmoTVOp[3N{Vo[kcW[nZWeT[1yERnekcW[5[GeXfnSHPYe[XGKwXVO4[2mJRnibNm[nZWeT[1yERnelTHy4XmeCdFmHXlKVSm[HWYmCbVyoNFuEVXuLR2eteHOIfI[bS2WwTXm4bVyERXulcV[{Z4ms[1yqRXmQfVl4SGGwTlOSNFuEVXuPR3esTly6c3e[cm[xZleS[2qIWoObXGKtTViHNWqZTkWKS161Z4mCdVy4NFuEVXusZ2iXcHOvcFWbW4it[FeXSGSXUXeRV1GqSGGwTlOSNFuEVXuLVlWXUWKXVl[KSWqUWEBx[2mETYWLTGqpZ3qSeVmuNUClXFqqZkKC[2ZxbF[Wb2WoT1FxT1OSb1qEWV6RWHuPRm[EbHekS1[vXmZ6dGqIRYOKR3SnTom4[2mJUkCjN1qtXEKtb2mEb3eVb{mWTVWtU1mE[3mKR{SoTlePeHO6RYWKR1mxT2S{bV:4NFuEVXuLR2FxT1OSb1qEVUCMR2GseluqRoilW2[6[WODcXJ{TXekcWZ{Z32tNGqURoCjbVKxZn2HbnSIcEKbV1K7[Fd6fWqZUXeMbUiPR3esTlqJSkGbXFp2VleXd2qZVnyUW{WDXUOTdHSuWmSlS{m6XmiO[1mFNHeK[{CMR2GsUlOob1qEWWKHWFWXWWKURleWb{mPTVeCbVyqVkK[XFlxUHmLeHSJWom[cUmoTV[lTWKXTl[KS1K7[Fd6fWqXPYCbS1GoV2V1[1uETXeNbVGs[H2HfV2URYWKR1mxU4dxT1OSb1qFVX:LR2OKO1SSc1qEVUCMR2GseluqRoilW2[6[WODcXJ{TXebS2[{XmiTcFmIcIW[W15xZWibcFmISoWbR1K2ZolyNnGZUoC[cYitTViDfXJzVkG[N2K7TVeHeWqERnq[XGKtXkJ6fXGYWoqKS1[2XlODbnKZUXeMbUiPR3esTlSSc1qEV{iyTVWDNmmZTXeLTFK6ZkKTNWl{Vl[jcmKx[Fis[2SYSn6bWkmHXWib[mSYPXubW4inVmd2NHGZVkWKR3:3SGGwTlOUVoekcUms[GePNGKYOUCiXGJ2TVRx[2SYSn6bWH93XkKXNGSYPXubW4ewTkKXbHSqPXyjcmKx[FiscluVd16E[3uLTliDfXJzVkG[N2KHZn6TdHSJb4SRcl6t[F[TOXOIWX:LNl6p[FeHd3Jz[H[kTFq3XliXbnSEZ4CQe{CMR2Gs[1SSc1qEV2K4Z316b3SYUkCWN2Kp[FiXflmFNHeLTFK6ZkKTNWl{Vl[jcmKx[FiseGCu[HylSVZx[FiLdGmvWkCbV3evZ{OTbHSJWoqLfXt4SGGwTlOUVoqlS1ZxV2eS[1mERUmKR2K4Z316b3SYUkCWN2Kp[FiXflyVOX6bXGKLXlOodF:4NFuEVXuPR3esTlmCNFuEVXusZ1iLemqJWnqlSmqxZ{KtbXGYfIClTHuoVGOCb3OJTo[bTG[r[FWXeXSIcECmV{BsXkKXNGGZVkCkcXyq[GiTcFuE[EKiXF6xXX2td3GZVkWLfXt4SGGwTlOUVkKiXF6LXlOC[1mFNHeLTFK6ZkKTNWl{VmeiXF6xXX2td3GZVkWNWEWvXmiTTmqE[4CQe{CMR2GsUlOob1qKRUCMR2GseluqRlGlcV[6TVOTe3OuPXulW15xVmd2NHGZVkWKSUGpXkKX[mKYSkKZNEG3XleXd2hxWoWlS3xx[WOCdVy4NFuEVXusXUKHNGqY[I[kcnyHZn6TdHSJb3eRV1KPXWelcF:rdH6bXGKPZkKTcHKE[36bW1ZzUEKXeXSIcECmV3OxU4dxT1OSb3u[NlZxXmelenOvcF[jcmKx[FiseGCvUnylSmJ2Z1eWc1pzUnilS1[{ZkKl[mlzSkCbW3S3Z36scluVd16E[3uLTVFxT1OSb3u[NlZxXmelenOvcGSlS1Zx[GiO[2CURXu[NlZxXmelenOvcF[jcmKx[FiseGCu[HylSVZx[FiLdGmvWkCbV3evZWiP[mmYUkCiXGqtTomsO1SSc1qEV2KrXWiTWHSISkCUW2GoTVOCPVmEVnq[XGKtXkJ6fXWXUkC[XGJyZ4lxL2pzWkCUW2GwT2S{UlOob1qFVX:LR2OTfHSYWommWWKtZleXNGqXRomjNmJyXUOTflmFNHeK[{CMR2Gs[1mERXeKR1GoTVGsTmKGWl2TWmKHTVWbV2RxNHe[R1m2TlibbHOrVYWKcUFx[GiLbXJzRXeXNHiHWXuW[2mJRomjNmJyXUOT[nGYVneKSXyQTVOoUlOob1qKR1GoTVOC[1mERVqEVXyVVmW5SmFyVXebW{VxZWiTOWhzcHuKSWqUWEBx[2mETYWLTGqpZ3qSeVmuUnilS1[{ZkKl[nOJTo[bTG[r[FZ6cHKvVoClTHynZWd2NGmCNFuEVXuoTVOC[1mERXeKRXuLR2[lTWKXTl[FVX:LR2OC[1mERXeKR1GoR2GsTlmERX:MS1Zx[FiLdGmvWkCbWkmxXlRxbVyqVoqlS1ZxV2eSeVmqRlKVb2Go[H2Hd3SYWXeRV1G6T2ODVGWoNFuEVXuoTVOC[1mERXeKRXuLR2OC[1uISkClTFqxXX6XNGqXPYCbSECqUHmTNnGZUlqbR{SqTVWHU2KERkK[W4hyXmOCPGCURYiMV3uPR3esTlmERXeKR1GoTVOCTlOUb{eKRUCMR2Gs[1mERXeKR1GoTVGsbV:4NFuEVXuoSGGwTlOUVoilW2[6[WWTcHKIWkCbWV6p[FeXcnJ{ToCbXF2oVGOCbVSSc1qEV1GoTVOC[1mERXeEVXyGVmW5Sm[GWXeTcFqRWGOD[1mqOHulcV[6UlN1bXKZVkGkcVq3XVODXGOGWmOTV1KoXUKHNGqY[I[kcnynZWeT[1mGcF:KR3ePR3esTlmERXeKR1GoTVOCTlOScGSTWYiHVUGS[2qYOUCiXGJ2XEKtb1mGXmOVNECoXVOKeVqJXnikbmG2TX2PbHSISoOjNnSnXUKHNGqY[I[kcnynXmd2NHGZVkWZNny2[FeCUlOob1qKR1GoTVOC[1mERVqEVXyZV1WXV2KSNFuEVXuoTVOC[1mERXeKRXuLR2OC[1uISkClTFqxXX6XNGqXPYCbSECqUHmTbmmZVmSlS1ZxV2eSeVmqRlKVb2Go[H2Hd3SYWXeRV1G4T2FxT1OSb3eKR1GoTVOC[1mCb1qMWIOoSGGwTlOURXeKR1GoTVOC[1OUTUeFVX:LR2OCUlOob1qLTFZyXmiLOWKIWoObXGKtVUJyflmFNHeK[{CMR2Gs[1mERXeKR1GoTVGsTmKGWl2TWmKHTVWbV2RxNHe[R1m2TlibbHOrVYWKcUFx[GiLbXJzRXeXNHiHWXuW[2mJRnibNm[nZWeT[1mGcF:KR3ePR3esTlmERXeKR1GoTVOCTlOScGSTWYiHVUGS[3OISn6bWkmxXlODS2WsPV6KS1GqUHmTNmmZTUCNbVqrZmiP[nOISn6bW1GPR3esTlmERXeKR1GoTVOCTlOScGiUSW[UVmOCc3GZUn[[W15xZWibcGCVRYCFVX:LR2OC[1mERXeKR1GoR2GsdF:4NFuEVXuoTVOC[1mERXeKRXuqU4dxT1OSb3eFVX:LR2N5dVmIWoWbR1K5[GeXfXWURYGNe{CMR2GsUlOqRXeKR1GLTlePenKuOXy[N2KxZkJ1[2CURl6[W3StU3qxcmqZVmSiW{WvZleXNHJzOH:LNl63Z32WenOuWoqjN2[6XUKWcluUNDubNmZxVUJ6eXKuWnqlS3y3ZnmocmlzPYmbWkl{Z32tNGqUZ4CQe{CMTVOC[1mCb16EbVGoTVOCTnSJTkWKTIOPR3mC[1mERVqEVUCMTVOC[1mCb1qLS163Zn12cGl{VoCjNkS1VH6HNWqZTkWMR1qVWlWHV2[ERmWWb1[QWUCHSG[GcGCVbVmxU4dxT1SSc3eKR1GoR2Gsb2lzPYWjcW[r[FetenKqNDukXG[tZ36sc1qJSkGbXFp2V2d2fmqZTkCWcWZ{Z32tNGqUb{eKR1GPR3esTlOYcH2KR3esZ2iXcHOvcFqjcl6tZ36TSGSXUXiRV1mqT2OCb2lzPYWjcW[r[FetenKqNDukXG[tZ36sc1qJSkGbXFp2V2d2fmqZTkCSNEGVT2S{[1mERXeKR1GoR2GsUlOoNFuEVXuLTlePenKuOXy[N2KxZkJ1eGCvSkGbXFp2T1OTfHSYWommWWKtZleXNGqXTnylN1qx[FeWdF:4NFuEVXuLTlePenKuOXy[N2KxZkJ1eGCvSkGbXFp2T1OTfHSYWommWWKtZleXNGqXTnybS3y6XmePNFuVd16E[3uLR2OTbnJzOYWbW15xZWd6eVyVOYilW2[6[WOob3OZWnykcnyGXme5cHSIWlSVWl2xU4dxT1OSb1qLS163Zn12cGl{VoCjNkS1VH6HNWqZTkWMR2K5[GeXfXWWVnyjS2ZxXmWteWGYUkCiXGqtWUOTenOuWoqMWIOPR3dxT1OSb1qLS163Zn12cGl{VoCjNkS1VH6HNWqZTkWMR2K5[GeXfXWXWoebS1ZxXmWPbHSIWn6jN1p2T2S{[1mERXeFVX:LR2Gsb2lzPYWjcW[r[FetenKqNDukXG[tZ36sc1qJSkGbXFp2WmiDb2mZVnyWTFq3XliXbnSEb{eKRUCMR2GsTlSSc1qEVXusXUJ6eXKuWnqlS3y3ZnlxL3OZWnykcnuwTliHNWqZTkWTS2[{XmiTcGWJTo[bTG[r[FiOdF:4NFuEVXuLTlePenKuOXy[N2KxZkJ1eGCvSkGbXFp2T1OTfHSYWommWWKtZleXNGqWUnilS2[vZkOLdGqZUYCQe{CMR2GsTlqIUo[jcUWtXUOTdHJzOISRclZyXmiLOVuEVoilW2[6[WWTcHKIWkCbWV61Z4msO1SSc16EbVGoTVOCTn[URnq[XGKrZVOCc2KZbHqbXFJxZWd6eVmEVnyMV1J4SGGw[1mERXeEVXusXUJ6eXKuWnqlS3y3ZnlxL3OZWnykcnuwTXyLVGSGfFOSWV6NTXmsO1SSc3eKR1GoR2GtNHGJTo[lfVGsXmS{UlOqRXeKR1GL[mFxT1mERXeKRXuPR3mC[1mERVqLS163Zn12cGl{VoCjNkS1VH6HNWqZTkWMR1qFWEByUmOXVXmMWIOPR3mC[1mERVqFVX:oTVOC[1OSQU1jP4N7NkR7JmmZWkCjNkGp[FetbmKIPUOjcYi3XWeSfTJ8d{pzN{J1PjKEbVGoTVOCTnGYXXeMSUGpXkKWOl:ubHyjTFKtZ3mocnKZVkGkcVq3UEKteWquPH6MV{BsXkKXNGWuWn6VcV[1XmOodGCVNH6iN1pxZle1bHF{TUCLfXuo[Yew[1mERXeEVXuMTVOC[1mCb1qLS163Zn2bdGq6RUmKSUGpXkKWOl:u[HylSl6xZn2ld2qZVo[jbXevZmiTNXOuTo[NNl63Zn2bdGq6Z4CQe3:oTVOC[1OScICbbVGwTlePenKuXoCbfUBsXkKXNGGZWkCjNkGp[FetbmKIPUOjcYi3XWeSc1uUb3eme3:oTVOC[1OSb1uKR1GoTVGsTlOZVommV1J4R3mC[1mCb1qEVX:oTVOC[1OSb1qEV2Jx[GiLbXJ{RnilS3eoVGOCb2lzPYWbcXyvUGR2cmqZVmWlXFqqZkODbHSI[3:MWIOMTVOC[1mCb1qEVXusZmd6b2qYe3eRV1KPXWelcF:rdH6bXGKPZkKTcHKE[36jXGJyZ32LelxzNUClXFqqZomkdF:4c1qEVXuLR2GsTlOSb1qKR1GoTVGsTlOSc1qEVXuLR2N5elmI[HyjcW[6XWiTcFmIfICkN2GoXn16fVmISoOjR1J{XmeLfnGZVnyke3:oTVOC[1OSb1qEV2K1ZkKTcHKENDubNm[2XmiLbHSIWm[kcYiOZWiPNFuEb{eEbVGoTVOCTlOSb1qEbVGoTVOCTlOSb1qLTHStXX6PdHSIWoqKSECoWGeHcmqVc{[bNmZxWGd6b2qYe3:LNl63Z32WenRzWnmkNnxxXmOkdFyVOX6bXGKFZkK5d2qYUkCiW{m2T1OseGCufI[[W2GwT2NxL2pzWkCUXGKtZmiOc1uVd1uKR1GoTVGsTlOScH2jN1qtXWePc1mE[3ulNm[qZ{KtNGqZUXe[XF2oTlilcGmvUoClS2WxTVi{T1mERXeKRXuLR2GsTlOqRXeKR1GLR2GsTlOUVkObW1q7ZWiTcGFzPYWbcXyvTVRx[1qIUo[jcWqxXolxL2pzWkCXNm[qZ{KtNGqWUo[jcWqxXomob3RzWnmkNnxxXmNxL2pzWkCSNkmsXmOodFuVd1uKR1GoTVGsTlOSb1qiW2moT1OTN2qYToqiXGKtVUJ6eWqucH6KR2muTVOTN2qYToqiXGKtVUJ6eWqucH6NWEWvXmiTSnKuSnmjS2[sT1OsPWCUZ4iLfXuo[YewTlOSb1qEVXuLTlePenKuXoCbe3uLTVRx[1qIUo[jcWqxXolxL2pzWkCUW{VxXmiLe3OuWkCMR3t4R3esTlOSb1qEVXusZ{OXbWmuSoqbV1GoTVGs[2CURl6[W3StU3qxc2qYfIebXFmwTkJyNHSZTnmjfUl{XmeLfnGZVnyLfXu1VH2lcHSHUkG[cVqpZ{KWc1qJ[Hy[cl6x[FeWeGCu[HylSWKtXn2HNXKJVmSlS{m6XmibdGqZZ3:MV3t4R2Gw[1mERXeEVXuLR2GsTlqJ[Hy[cl6x[FeXe2mZVn:KSECoTlilcGmvUoClS2[FZkJ2cXGYZ4SRcXSt[FWLbHNzWlWiXFmwT2N2SWW6OHulTG[6XX16e2mZVn:Nb2KVUHmTfnSYTnm[XF6tUHuTWFyqVkObW1q7ZWiTcFyVOX6bXGKFZkKTcFuEb4WLfUVx[ViScl:4c3eKR1GoR2GsTlOSb1qLS{GxZn6PdHWuWVqKSECoTlePenKuXoCbfUBsXkKXNGSYcIWiW{GpZl[DbGpzWmSiXICtT1OsO1Oob1qEVXuLR2Gsb3NzUomiXFJxTVGs[2CURl6[W3StU3qxc2qYfIebXFmwTkJyNHSZTnmjfXOxUGR2cmqZVlelW4i{Vld6N3KufI[[W2KVXUOLdHOJVmG[XGKwT1OsO1Ooc1qEVXuLR2GsTnGYXXeMR1[xZ{F6cHWIWnqlXGKpXX25cFuEVoq[N1qxZ1iSdFuSc1qEVXuLR2GsTlOYUn:jW{msT1OTfml{ToCkTGG{TVOke167Z{GLfXt4R3ew[1mERXeEVXuLR2GsTlqIUo[jW{GpZn2S[1OURUmKR2K7XUOLdHOJVYWLfVGvUHmTN2qYToqiXGKtZ1eHNHGEOH6KR3O2TldydHKvUoCmcWW2TomCfWCqXYiKR2mvU4mCely6RnikN3y2XUKpfXJzOY[lXF2oXUKHd3KIcIWbe3:MR2GsTlOSb1qEW3yuTVOob3GYOUCbXFq4Z32XNFuSc1qEVXuLR2GsTlmERXu[Nkm1ZmeHeWqERUmKR2KxZn6TcHOvRombXGG2TomCclyqVnqjNkG1XWd2b1:4c1uEVXuLR2GsTlOWRnymS2[rT1OTbnJzNYS[W{WsT2S{T1Oob1qEVXuLR2Gsely6Roq[XGqtTVeTenRzOYOjNl[sTViTdHKYWXelS{ioXUJ6eWqucH6E[3uLR2GsTlOSb3ubS1ZxXmOC[1mFNHebS1ZxXmOocmeUNYSNW2GoV1SxdF:vUX6MWIOMR2GsTlOSb1qEV2KrZkJ2cXGYZ4SRcl6t[FW5bHN{VmWiW{GtWEKbRnSZVo[jW1ZxZWePSXJ{[IWjS{mpXlOob2qISkCbV3t4R3esTlOSb1qEVXusXUJ6eWqucH6NWEW7XWibcFuEb{eE[3:oTVOC[1OSb1qEVXx6R3mC[1mERVqEVXuLR2Gw[1mERXeEVXuLR2hxT1OSb1qEVXuMTVOC[1mCb1qEXECoXUKHNGlz[3eMSWZ1XUKXe3SIcI[jbVGsXmOs[3W4c3eKR1GoR2GsTlOWNXibNmV3U325emq6[3ubV{BsXkKXNGSYWoqkNl[vXmOodFuVd1uKR1GoTVGsTlOScF6[W3StU3qxd3Jz[F[mS16tZ1iTdHJzOH:LS2WxU4ew[1mERXeEVXuL[mGwTlOSb1uKR1GoTVGsTn[Sc3eKR1GoR2GsT1mERXeKRXx6TVeXd3NzWXeme3:oTVOC[1OScF6[W3StU3qxd3JzZ3:LNEW3TVibbHKIcHuKS4ixXUKXeWlzWYWKSUW3[FepdHKuZ3ekS1[vXmODN3GYfIOKS1qtTVeTenRzOYOjNl[sXmeSeVq6b{eEbVGoTVOCTn[Sc3eKR1GoR2F:QTJ8gR>>
app/code/local/Artio/MTurbo/controllers/Adminhtml/MturboController.php CHANGED
@@ -76,9 +76,9 @@ class Artio_MTurbo_Adminhtml_MturboController extends Mage_Adminhtml_Controller_
76
  */
77
  public function uninstallAction() {
78
 
79
- $configModules = Mage::getBaseDir().DS.'app/etc/modules/Artio_MTurbo.xml';
80
  if (!is_writeable($configModules)) {
81
- $this->_getSession()->addWarning(Mage::helper('mturbo')->__("File 'app/etc/modules/Artio_MTurbo.xml' is not writeable, please change permission."));
82
  $this->_redirect('mturbo/adminhtml_mturbo/index', array('activeTab'=>'page_tabs_uninstall_section'));
83
  return;
84
  }
@@ -160,16 +160,16 @@ class Artio_MTurbo_Adminhtml_MturboController extends Mage_Adminhtml_Controller_
160
  $baseDir = Mage::getBaseDir();
161
 
162
  $dirs = array(
163
- 'app/code/local/Artio/MTurbo',
164
- 'app/design/adminhtml/default/default/template/mturbo',
165
- 'app/etc/modules/Artio_MTurbo.xml',
166
- 'app/design/adminhtml/default/default/layout/mturbo.xml',
167
- 'app/design/frontend/default/default/layout/mturbo.xml',
168
- 'app/locale/en_US/Artio_MTurbo.csv',
169
- 'skin/frontend/default/default/js/mturbo.js'
170
  );
171
 
172
- $result = file_get_contents($baseDir.DS.'var/uninstallmturbo.log');
173
  $array = array();
174
 
175
  if (strpos($result, 'uninstall failed')!==false) {
@@ -272,7 +272,7 @@ class Artio_MTurbo_Adminhtml_MturboController extends Mage_Adminhtml_Controller_
272
  }
273
 
274
  $this->getResponse()->setBody($html);
275
- $this->getResponse()->sendResponse();
276
  }
277
 
278
 
@@ -388,9 +388,9 @@ class Artio_MTurbo_Adminhtml_MturboController extends Mage_Adminhtml_Controller_
388
  foreach ($websiteCodes as $code=>$name) {
389
  try {
390
  Mage::getModel('mturbo/htaccess')->setWebsiteCode($code)->rebuildHtaccess();
391
- $this->_getSession()->addSuccess(Mage::helper('mturbo')->__("Htacces for website '%s' was rebuilded.", $name));
392
  } catch (Exception $e) {
393
- $this->_getSession()->addError(Mage::helper('mturbo')->__("Rebuild htacces for website '%s' fail.", $name).' '.$e->getMessage());
394
  }
395
  }
396
 
@@ -486,12 +486,19 @@ class Artio_MTurbo_Adminhtml_MturboController extends Mage_Adminhtml_Controller_
486
  **/
487
  public function upgradeAction() {
488
 
489
- $message = Mage::helper('mturbo/downloader')->downloadAndUpgrade();
490
- if ($message=='') {
491
- $this->_getSession()->addSuccess(Mage::helper('mturbo')->__('Upgrade complete, please refresh Magento system cache'));
492
- } else {
493
- $this->_getSession()->addWarning($message);
494
- }
 
 
 
 
 
 
 
495
 
496
  $this->_redirect('*/*/index');
497
  }
76
  */
77
  public function uninstallAction() {
78
 
79
+ $configModules = Mage::getBaseDir().DS.'app'.DS.'etc'.DS.'modules'.DS.'Artio_MTurbo.xml';
80
  if (!is_writeable($configModules)) {
81
+ $this->_getSession()->addWarning(Mage::helper('mturbo')->__("File '%s' is not writeable, please change permission.", $configModules));
82
  $this->_redirect('mturbo/adminhtml_mturbo/index', array('activeTab'=>'page_tabs_uninstall_section'));
83
  return;
84
  }
160
  $baseDir = Mage::getBaseDir();
161
 
162
  $dirs = array(
163
+ 'app'.DS.'code'.DS.'local'.DS.'Artio'.DS.'MTurbo',
164
+ 'app'.DS.'design'.DS.'adminhtml'.DS.'default'.DS.'default'.DS.'template'.DS.'mturbo',
165
+ 'app'.DS.'etc'.DS.'modules'.DS.'Artio_MTurbo.xml',
166
+ 'app'.DS.'design'.DS.'adminhtml'.DS.'default'.DS.'default'.DS.'layout'.DS.'mturbo.xml',
167
+ 'app'.DS.'design'.DS.'frontend'.DS.'default'.DS.'default'.DS.'layout'.DS.'mturbo.xml',
168
+ 'app'.DS.'locale'.DS.'en_US'.DS.'Artio_MTurbo.csv',
169
+ 'skin'.DS.'frontend'.DS.'default'.DS.'default'.DS.'js'.DS.'mturbo.js'
170
  );
171
 
172
+ $result = file_get_contents($baseDir.DS.'var'.DS.'uninstallmturbo.log');
173
  $array = array();
174
 
175
  if (strpos($result, 'uninstall failed')!==false) {
272
  }
273
 
274
  $this->getResponse()->setBody($html);
275
+
276
  }
277
 
278
 
388
  foreach ($websiteCodes as $code=>$name) {
389
  try {
390
  Mage::getModel('mturbo/htaccess')->setWebsiteCode($code)->rebuildHtaccess();
391
+ $this->_getSession()->addSuccess(Mage::helper('mturbo')->__("Htaccess for website '%s' was rebuilded.", $name));
392
  } catch (Exception $e) {
393
+ $this->_getSession()->addError(Mage::helper('mturbo')->__("Rebuild htaccess for website '%s' fail.", $name).' '.$e->getMessage());
394
  }
395
  }
396
 
486
  **/
487
  public function upgradeAction() {
488
 
489
+ try {
490
+
491
+ $message = Mage::helper('mturbo/downloader')->downloadAndUpgrade();
492
+ if ($message=='') {
493
+ $this->_getSession()->addSuccess(Mage::helper('mturbo')->__('Upgrade complete, please refresh Magento system cache'));
494
+ } else {
495
+ $this->_getSession()->addWarning($message);
496
+ }
497
+
498
+ } catch (Exception $e) {
499
+ $this->_getSession()->addError($e->getMessage());
500
+ Mage::logException($e);
501
+ }
502
 
503
  $this->_redirect('*/*/index');
504
  }
app/code/local/Artio/MTurbo/etc/config.xml CHANGED
@@ -10,7 +10,7 @@
10
  <config>
11
  <modules>
12
  <Artio_MTurbo>
13
- <version>1.2.1</version>
14
  </Artio_MTurbo>
15
  </modules>
16
  <admin>
@@ -93,6 +93,14 @@
93
  </mturbo>
94
  </observers>
95
  </catalog_category_save_commit_after>
 
 
 
 
 
 
 
 
96
  <core_abstract_save_commit_after>
97
  <observers>
98
  <mturbo>
@@ -169,6 +177,14 @@
169
  </mturbo>
170
  </observers>
171
  </core_layout_block_create_after>
 
 
 
 
 
 
 
 
172
  </events>
173
  </frontend>
174
  <global>
10
  <config>
11
  <modules>
12
  <Artio_MTurbo>
13
+ <version>1.2.2</version>
14
  </Artio_MTurbo>
15
  </modules>
16
  <admin>
93
  </mturbo>
94
  </observers>
95
  </catalog_category_save_commit_after>
96
+ <checkout_type_onepage_save_order_after>
97
+ <observers>
98
+ <mturbo>
99
+ <class>mturbo/observer</class>
100
+ <method>afterSaveOrder</method>
101
+ </mturbo>
102
+ </observers>
103
+ </checkout_type_onepage_save_order_after>
104
  <core_abstract_save_commit_after>
105
  <observers>
106
  <mturbo>
177
  </mturbo>
178
  </observers>
179
  </core_layout_block_create_after>
180
+ <checkout_type_onepage_save_order_after>
181
+ <observers>
182
+ <mturbo>
183
+ <class>mturbo/observer</class>
184
+ <method>afterSaveOrder</method>
185
+ </mturbo>
186
+ </observers>
187
+ </checkout_type_onepage_save_order_after>
188
  </events>
189
  </frontend>
190
  <global>
app/locale/en_US/Artio_MTurbo.csv CHANGED
@@ -1,19 +1,20 @@
1
  " Generate a list of the URLs and store it on the disk. This action will be executed if Automatic cache management is enabled."," Generate a list of the URLs and store it on the disk. This action will be executed if Automatic cache management is enabled."
 
 
2
  "(hours : minutes)","(hours : minutes)"
3
  "Actions","Actions"
4
  "Add newly created categories to select","Add newly created categories to select"
5
  "Added newly cms to select","Added newly cms to select"
6
- "All pages was succesfully removed","All pages were succesfully removed"
7
- "Analyze used space","Analyze used space"
8
  "Apply Mage Patch","Apply Mage Patch"
9
  "Apply the patch only just in case you need to use Direct Access download method!","Apply the patch only just in case you need to use Direct Access download method!"
10
  "Are you sure?","Are you sure?"
11
  "Automatic cache management","Automatic cache management"
12
  "Base directory","Base directory"
13
  "Block","Block"
14
- "Blocked page can't refresh","Blocked page can't be refreshed"
15
  "Blocked","Blocked"
16
- "CLOSE","CLOSE"
17
  "CMS page","CMS page"
18
  "CMS","CMS"
19
  "CURL is not installed","CURL is not installed"
@@ -23,20 +24,25 @@
23
  "Cache selected pages","Cache selected pages"
24
  "Cache","Cache"
25
  "Cached","Cached"
26
- "Cannot read Mage.php file","Can't read Mage.php file"
27
- "Cannot read patch file","Can't read patch file"
 
28
  "Cart Block (sidebar)","Cart Block (sidebar)"
29
  "Categories","Categories"
30
  "Category view","Category view"
 
31
  "Company","Company"
32
  "Compare Block (sidebar)","Compare Block (sidebar)"
33
  "Configuration error","Configuration error"
34
  "Configuration was successfully saved","Configuration was successfully saved"
35
- "Connection to server could not be established.","Connection to the server could not be established."
 
36
  "Create cache for all pages (except blocked pages). Download progress can be monitored in a separate window. Please, do not close this window. Update of URLs from the Rewrite Table will be started automatically before caching is executed. Please, note that initial cache creation may take a long time (several hours). Time needed depends on the number of pages your site has.","Create cache for all pages (except blocked pages). Download progress can be monitored in a separate window. Please, do not close this window. Update of URLs from the Rewrite Table will be started automatically before caching is executed. Please, note that initial cache creation may take a long time (several hours). Time needed depends on the number of pages your site has."
37
  "Create connection over sockets","Create connection over sockets"
38
- "DOMAIN DOES NOT MATCH","Domain does not match"
 
39
  "Date","Date"
 
40
  "Delete","Delete"
41
  "Direct access (created new instance Magento)","Direct access (created new instance Magento)"
42
  "Download ID not set.","Download ID not set."
@@ -44,20 +50,22 @@
44
  "Download method","Download method"
45
  "Downloaded <strong>%s</strong> pages","Downloaded <strong>%s</strong> pages"
46
  "Dynamic loaded blocks","Dynamic loaded blocks"
47
- "ERROR_DOWNLOAD_ID_NOT_FOUND","The inserted Download ID has not been found. Please, make sure you have entered it correctly. If you are sure it is correct and valid, contact <a href=""mailto:support@artio.net"">support@artio.net</a>."
48
- "ERROR_REG_CHECK_FAIL","Check licence fail. Please, contact <a href=""mailto:support@artio.net"">support@artio.net</a>."
49
  "Edited by MTurbo","Edited by MTurbo"
50
  "Enable automatic cache refresh","Enable automatic cache refresh"
51
  "Enable automatic refresh after save CMS pages","Enable automatic refresh after save CMS pages"
 
52
  "Enable automatic refresh for preview of categories of saved product","Enable automatic refresh for preview of categories of saved product"
53
  "Enable automatic refresh for preview of saved category","Enable automatic refresh for preview of saved category"
54
  "Enable automatic refresh for previews of parents of categories of saved product","Enable automatic refresh for previews of parents of categories of saved product"
55
  "Enable automatic refresh for previews of parents of saved category","Enable automatic refresh for previews of parents of saved category"
56
- "Enable making htaccess backup","Enable do htaccess backup"
57
  "Enable website","Enable website"
58
  "Enable/Disable Storeview","Enable/Disable Storeview"
59
  "Export to:","Export to:"
60
  "Extension ZLIB is not loaded.","Extension ZLIB is not loaded."
 
61
  "File .htaccess path","File .htaccess path"
62
  "File .htaccess state","File .htaccess state"
63
  "File Mage.php is not patched","File Mage.php is not patched"
@@ -67,36 +75,47 @@
67
  "Generate error","Generate error"
68
  "Generating complete for website '%s'. Wrote %d urls","Generating complete for website '%s'. Wrote %d urls"
69
  "Generating for website '%s' fail.","Generating for website '%s' fail."
70
- "Htacces for website '%s' was rebuilded.","Htacces for website '%s' was rebuilded."
71
  "Htaccess does not exist.","Htaccess does not exist."
72
  "Htaccess is not writable.","Htaccess is not writable."
73
  "Htaccess model has not assigned website","Htaccess model has not assigned website"
74
  "Htaccess settings","Htaccess settings"
75
  "I can't create '%s'. Please, check permission to create this directory.","I can't create '%s'. Please, check permission to create this directory."
 
76
  "I can't open/create urllist file '%s'.","I can't open/create urllist file '%s'."
77
  "I can't write to urllist file '%s'","I can't write to urllist file '%s'"
78
  "ID","ID"
79
- "INFO_UPGRADE_LICENSE_EXPIRED","Your license has already expired. Please, visit <a href=http://www.artio.net/magento-extensions/m-turbo-accelerator"">artio.net</a> to prolong it."""
80
- "INFO_UPGRADE_NOT_ACTIVE","The license has not been activated yet. Please, retry later or contact
81
- support@artio.net."
82
  "Inserting MTurbo directives fail. Htaccess template not found.","Inserting MTurbo directives fail. Htaccess template not found."
83
  "Inserting MTurbo directives into htaccess fail.","Inserting MTurbo directives into htaccess fail."
 
84
  "Installation complete. Welcome!!!","Installation complete. Welcome!!!"
85
- "Installation succesfull. Now will be your Magento faster than other.","Installation succesfull. Now will be your Magento faster than before."
 
 
86
  "Last refresh","Last refresh"
87
- "Launchng this action will update cached URLs based on current values from the Rewrite Table. We recommend runing this action after major modifications to the products or categories.","Launchng this action will update cached URLs based on current values from the Rewrite Table. We recommend runing this action after major modifications to the products or categories."
88
  "Layout names of dynamic loaded blocks","Layout names of dynamic loaded blocks"
 
 
 
 
89
  "M-Turbo Cache Management","M-Turbo Cache Management"
90
  "M-Turbo Management - Downloading pages","M-Turbo Management - Downloading pages"
91
  "M-Turbo Management","M-Turbo Management"
 
92
  "M-Turbo installation problem","M-Turbo installation problem"
93
  "M-Turbo installation succesfull. Please see into System/M-Turbo Management","M-Turbo installation succesfull. Please see into System/M-Turbo Management"
94
- "M-Turbo was uninstalled, but some directories were not deleted. These are the following files and directories: %s","M-Turbo was uninstalled, but some directories were not deleted. These are the following files and directories: %s"
95
- "Magento MTurbo Your licence has expired. All cached pages was removed","Magento MTurbo Your licence has expired. All cached pages was removed"
96
- "Magento MTurbo Your license has expired","Magento MTurbo Your license has expired"
 
97
  "Magento Turbo Cache Management","Magento Turbo Cache Management"
98
  "Main Configuration","Main Configuration"
99
  "Menu","Menu"
 
100
  "My Cart (%s item)","My Cart (%s item)"
101
  "My Cart (%s items)","My Cart (%s items)"
102
  "My Cart","My Cart"
@@ -109,8 +128,9 @@ support@artio.net."
109
  "OK","OK"
110
  "Other","Other"
111
  "Page downloaded: ","Page downloaded: "
112
- "Page was succesfull download. Now is cached.","Page was succesfull downloaded. It is cached now."
113
- "Page was succesfull purge from disk.","Page was succesfull purged from disk."
 
114
  "Page","Page"
115
  "Patch already removed","Patch already removed"
116
  "Patch already used","Patch already used"
@@ -118,6 +138,7 @@ support@artio.net."
118
  "Patch was removed.","Patch was removed."
119
  "Path '%s' is not correct.","Path '%s' is not correct."
120
  "Path '%s' is not usable. This path is used by system Magento, please enter other path.","Path '%s' is not usable. This path is used by system Magento, please enter other path."
 
121
  "Permission denied. Cannot write to Mage.php","Permission denied. Cannot write to Mage.php"
122
  "Please select item(s)","Please select item(s)"
123
  "Poll Block (sidebar)","Poll Block (sidebar)"
@@ -134,23 +155,31 @@ support@artio.net."
134
  "Rebuild .htaccess for all websites","Rebuild .htaccess for all websites"
135
  "Rebuild .htaccess for all websites.","Rebuild .htaccess for all websites."
136
  "Rebuild .htaccess for this website","Rebuild .htaccess for this website"
137
- "Rebuild htacces for website '%s' fail.","Rebuild htacces for website '%s' fail."
138
  "Record was successfully updated.","Record was successfully updated."
139
  "Registration","Registration"
140
  "Relative path from webroot","Relative path from webroot"
 
141
  "Remove Mage Patch","Remove Mage Patch"
142
  "Remove all cached pages","Remove all cached pages"
143
  "Remove error:","Remove error:"
 
144
  "Removing MTurbo directives fail. Terminating MTurbo directive not found. The htaccess may be corrupted.","Removing MTurbo directives fail. Terminating MTurbo directive not found. The htaccess may be corrupted."
145
  "Removing MTurbo directives from htaccess fail.","Removing MTurbo directives from htaccess fail."
146
  "Request path","Request path"
147
  "Save and Install","Save and Install"
148
  "Save configuration","Save configuration"
 
 
 
149
  "Select All","Select All"
150
  "Select Visible","Select Visible"
 
151
  "Setting 'allow_url_fopen' is disabled.","Setting 'allow_url_fopen' is disabled."
152
  "Size","Size"
153
  "Skip blocked page: ","Skip blocked page: "
 
 
154
  "Starting download pages, please wait...","Starting download pages, please wait..."
155
  "Status","Status"
156
  "Store View","Store View"
@@ -161,26 +190,32 @@ support@artio.net."
161
  "The maximum number of htaccess backups","The maximum number of htaccess backups"
162
  "The minimum size to decision, the page is alright (bytes)","The minimum size to decision, the page is alright (bytes)"
163
  "This action completely removes M-Turbo from your Magento","This action completely removes M-Turbo from your Magento"
 
164
  "This tab contains invalid data. Please solve the problem before saving.","This tab contains invalid data. Please solve the problem before saving."
165
  "Total %d records found","Total %d records found"
166
  "Total of %d page(s) were successfully purged.","Total of %d page(s) were successfully purged."
167
  "Total of %d record(s) were successfully deleted.","Total of %d record(s) were successfully deleted."
168
  "Total of %d record(s) were successfully updated.","Total of %d record(s) were successfully updated."
 
169
  "Turbopath directory","Turbopath directory"
170
- "Two diferent websites can't have one base dir. Please check, that each website has unique base dir.","Two diferent websites can't have one base dir. Please check, that each website has unique base dir."
171
  "Type","Type"
172
  "Unable to retrieve the contents of htaccess.","Unable to retrieve the contents of htaccess."
 
173
  "Unable to save installation file in temp directory.","Unable to save installation file in temp directory."
174
  "Unable to unpack install package.","Unable to unpack install package."
175
  "Unblock","Unblock"
176
- "Uninstall M-Turbo complete","Uninstall M-Turbo complete"
177
  "Uninstall M-Turbo","Uninstall M-Turbo"
 
 
 
 
178
  "Uninstall error","Uninstall error"
179
  "Uninstall","Uninstall"
180
  "Unselect All","Unselect All"
181
  "Unselect Visible","Unselect Visible"
182
  "Update URLs from Rewrite Table","Update URLs from Rewrite Table"
183
  "Upgrade complete, please refresh Magento system cache","Upgrade complete, please refresh Magento system cache"
 
184
  "Upgrade to Full Version","Upgrade to Full Version"
185
  "Url","Url"
186
  "Using CURL PHP extensions","Using CURL PHP extensions"
@@ -189,19 +224,17 @@ support@artio.net."
189
  "View","View"
190
  "Warning: Please don't close window during downloading pages","Warning: Please don't close window during downloading pages"
191
  "Websites Configuration","Websites Configuration"
192
- "Welcome text","<p>Welcome to M-Turbo Cache developed by Artio.
193
  To complete installation, we need to have entered the path to your directory where you want to store cached pages.
194
  This path is then entered into a .htaccess file, which is a function of the components necessary.</p><p>More, you can choose
195
  which website you want to caches and which not. Each website you can also choose storeview.
196
  In addition, please fill out the base directory of each website. In the default settings is set base dir for the administration,
197
- which does must not correspond to the base dir for the frontend.</p>"
198
- "Welcome text demo","<p>Welcome to M-Turbo Cache developed by Artio.
199
  To complete installation, we need to have entered the path to your directory where you want to store cached pages.
200
  This path is then entered into a .htaccess file, which is a function of the components necessary.</p><p>More, you can choose
201
  which website you want to caches and which not. Each website you can also choose storeview.
202
  In addition, please fill out the base directory of each website. In the default settings is set base dir for the administration,
203
- which does must not correspond to the base dir for the frontend.</p><p style=""color:red"">Note: In demo version you can enable only one website.</p>"
204
- In addition, please fill out the base directory of each website. In the default settings is set base dir for the administration,
205
  which does must not correspond to the base dir for the frontend.</p>"
206
  "Your Download ID","Your Download ID"
207
  "Your download ID is not valid. I can't upgrade your MTurbo.","Your download ID is not valid. I can't upgrade your MTurbo."
1
  " Generate a list of the URLs and store it on the disk. This action will be executed if Automatic cache management is enabled."," Generate a list of the URLs and store it on the disk. This action will be executed if Automatic cache management is enabled."
2
+ "'Mage_Core_Model_Layout' was not patched. It is required for dynamic loaded blocks. Please see to 'Dynamic loaded blocks'. Exception %s","'Mage_Core_Model_Layout' was not patched. It is required for dynamic loaded blocks. Please see to 'Dynamic loaded blocks'. Exception %s"
3
+ "'Mage_Core_Model_Layout' was not patched. It is required for dynamic loaded blocks. Please see to 'Dynamic loaded blocks'.","'Mage_Core_Model_Layout' was not patched. It is required for dynamic loaded blocks. Please see to 'Dynamic loaded blocks'."
4
  "(hours : minutes)","(hours : minutes)"
5
  "Actions","Actions"
6
  "Add newly created categories to select","Add newly created categories to select"
7
  "Added newly cms to select","Added newly cms to select"
8
+ "All pages was succesfully removed","All pages was succesfully removed"
9
+ "Apply Layout Patch","Apply Layout Patch"
10
  "Apply Mage Patch","Apply Mage Patch"
11
  "Apply the patch only just in case you need to use Direct Access download method!","Apply the patch only just in case you need to use Direct Access download method!"
12
  "Are you sure?","Are you sure?"
13
  "Automatic cache management","Automatic cache management"
14
  "Base directory","Base directory"
15
  "Block","Block"
16
+ "Blocked page can't refresh","Blocked page can't refresh"
17
  "Blocked","Blocked"
 
18
  "CMS page","CMS page"
19
  "CMS","CMS"
20
  "CURL is not installed","CURL is not installed"
24
  "Cache selected pages","Cache selected pages"
25
  "Cache","Cache"
26
  "Cached","Cached"
27
+ "Cannot read Layout.php file","Cannot read Layout.php file"
28
+ "Cannot read Mage.php file","Cannot read Mage.php file"
29
+ "Cannot read patch file","Cannot read patch file"
30
  "Cart Block (sidebar)","Cart Block (sidebar)"
31
  "Categories","Categories"
32
  "Category view","Category view"
33
+ "Clearing turbocache directory error","Clearing turbocache directory error"
34
  "Company","Company"
35
  "Compare Block (sidebar)","Compare Block (sidebar)"
36
  "Configuration error","Configuration error"
37
  "Configuration was successfully saved","Configuration was successfully saved"
38
+ "Connection to server could not be established.","Connection to server could not be established."
39
+ "Copying js file failed! Dynamic blocks won't work for this theme. Copy 'mturbo.js' from default theme, please!","Copying js file failed! Dynamic blocks won't work for this theme. Copy 'mturbo.js' from default theme, please!"
40
  "Create cache for all pages (except blocked pages). Download progress can be monitored in a separate window. Please, do not close this window. Update of URLs from the Rewrite Table will be started automatically before caching is executed. Please, note that initial cache creation may take a long time (several hours). Time needed depends on the number of pages your site has.","Create cache for all pages (except blocked pages). Download progress can be monitored in a separate window. Please, do not close this window. Update of URLs from the Rewrite Table will be started automatically before caching is executed. Please, note that initial cache creation may take a long time (several hours). Time needed depends on the number of pages your site has."
41
  "Create connection over sockets","Create connection over sockets"
42
+ "Creating directory '%s' fails","Creating directory '%s' fails"
43
+ "DOMAIN DOES NOT MATCH","DOMAIN DOES NOT MATCH"
44
  "Date","Date"
45
+ "Db records was removed.","Db records was removed."
46
  "Delete","Delete"
47
  "Direct access (created new instance Magento)","Direct access (created new instance Magento)"
48
  "Download ID not set.","Download ID not set."
50
  "Download method","Download method"
51
  "Downloaded <strong>%s</strong> pages","Downloaded <strong>%s</strong> pages"
52
  "Dynamic loaded blocks","Dynamic loaded blocks"
53
+ "ERROR_DOWNLOAD_ID_NOT_FOUND","ERROR_DOWNLOAD_ID_NOT_FOUND"
54
+ "ERROR_REG_CHECK_FAIL","ERROR_REG_CHECK_FAIL"
55
  "Edited by MTurbo","Edited by MTurbo"
56
  "Enable automatic cache refresh","Enable automatic cache refresh"
57
  "Enable automatic refresh after save CMS pages","Enable automatic refresh after save CMS pages"
58
+ "Enable automatic refresh for parent of saved product (configurable, grouped, bundled)","Enable automatic refresh for parent of saved product (configurable, grouped, bundled)"
59
  "Enable automatic refresh for preview of categories of saved product","Enable automatic refresh for preview of categories of saved product"
60
  "Enable automatic refresh for preview of saved category","Enable automatic refresh for preview of saved category"
61
  "Enable automatic refresh for previews of parents of categories of saved product","Enable automatic refresh for previews of parents of categories of saved product"
62
  "Enable automatic refresh for previews of parents of saved category","Enable automatic refresh for previews of parents of saved category"
63
+ "Enable making htaccess backup","Enable making htaccess backup"
64
  "Enable website","Enable website"
65
  "Enable/Disable Storeview","Enable/Disable Storeview"
66
  "Export to:","Export to:"
67
  "Extension ZLIB is not loaded.","Extension ZLIB is not loaded."
68
+ "File '%s' is not writeable, please change permission.","File '%s' is not writeable, please change permission."
69
  "File .htaccess path","File .htaccess path"
70
  "File .htaccess state","File .htaccess state"
71
  "File Mage.php is not patched","File Mage.php is not patched"
75
  "Generate error","Generate error"
76
  "Generating complete for website '%s'. Wrote %d urls","Generating complete for website '%s'. Wrote %d urls"
77
  "Generating for website '%s' fail.","Generating for website '%s' fail."
78
+ "Htaccess for website '%s' was rebuilded.","Htaccess for website '%s' was rebuilded."
79
  "Htaccess does not exist.","Htaccess does not exist."
80
  "Htaccess is not writable.","Htaccess is not writable."
81
  "Htaccess model has not assigned website","Htaccess model has not assigned website"
82
  "Htaccess settings","Htaccess settings"
83
  "I can't create '%s'. Please, check permission to create this directory.","I can't create '%s'. Please, check permission to create this directory."
84
+ "I can't find function addBlock","I can't find function addBlock"
85
  "I can't open/create urllist file '%s'.","I can't open/create urllist file '%s'."
86
  "I can't write to urllist file '%s'","I can't write to urllist file '%s'"
87
  "ID","ID"
88
+ "INFO_UPGRADE_LICENSE_EXPIRED","INFO_UPGRADE_LICENSE_EXPIRED"
89
+ "INFO_UPGRADE_NOT_ACTIVE","INFO_UPGRADE_NOT_ACTIVE"
90
+ "If you not see newly added category or CMS, then push the 'Synchronize' button.","If you not see newly added category or CMS, then push the 'Synchronize' button."
91
  "Inserting MTurbo directives fail. Htaccess template not found.","Inserting MTurbo directives fail. Htaccess template not found."
92
  "Inserting MTurbo directives into htaccess fail.","Inserting MTurbo directives into htaccess fail."
93
+ "Install error","Install error"
94
  "Installation complete. Welcome!!!","Installation complete. Welcome!!!"
95
+ "Installation succesfull. Now will be your Magento faster than other.","Installation succesfull. Now will be your Magento faster than other."
96
+ "Interpret for downloading script","Interpret for downloading script"
97
+ "JavaScript Watcher (this control watches existing javascript in all your theme packages)","JavaScript Watcher (this control watches existing javascript in all your theme packages)"
98
  "Last refresh","Last refresh"
99
+ "Launching this action will update cached URLs based on current values from the Rewrite Table. We recommend runing this action after major modifications to the products or categories.","Launchng this action will update cached URLs based on current values from the Rewrite Table. We recommend runing this action after major modifications to the products or categories."
100
  "Layout names of dynamic loaded blocks","Layout names of dynamic loaded blocks"
101
+ "Layout patch uninstall error","Layout patch uninstall error"
102
+ "Layout patch was removed.","Layout patch was removed."
103
+ "Layout patch","Layout patch"
104
+ "Layout state","Layout state"
105
  "M-Turbo Cache Management","M-Turbo Cache Management"
106
  "M-Turbo Management - Downloading pages","M-Turbo Management - Downloading pages"
107
  "M-Turbo Management","M-Turbo Management"
108
+ "M-Turbo directives from .htaccess was removed.","M-Turbo directives from .htaccess was removed."
109
  "M-Turbo installation problem","M-Turbo installation problem"
110
  "M-Turbo installation succesfull. Please see into System/M-Turbo Management","M-Turbo installation succesfull. Please see into System/M-Turbo Management"
111
+ "M-Turbo upgrade succesfull. Please see into System/M-Turbo Management","M-Turbo upgrade succesfull. Please see into System/M-Turbo Management"
112
+ "M-Turbo upgrading problem","M-Turbo upgrading problem"
113
+ "Mage patch uninstall error","Mage patch uninstall error"
114
+ "Mage patch was removed.","Mage patch was removed."
115
  "Magento Turbo Cache Management","Magento Turbo Cache Management"
116
  "Main Configuration","Main Configuration"
117
  "Menu","Menu"
118
+ "Model '%s' is not writeable. Please change permission to write for patch.","Model '%s' is not writeable. Please change permission to write for patch."
119
  "My Cart (%s item)","My Cart (%s item)"
120
  "My Cart (%s items)","My Cart (%s items)"
121
  "My Cart","My Cart"
128
  "OK","OK"
129
  "Other","Other"
130
  "Page downloaded: ","Page downloaded: "
131
+ "Page is too small or 404","Page is too small or 404"
132
+ "Page was succesfull download. Now is cached.","Page was succesfull download. Now is cached."
133
+ "Page was succesfull purge from disk.","Page was succesfull purge from disk."
134
  "Page","Page"
135
  "Patch already removed","Patch already removed"
136
  "Patch already used","Patch already used"
138
  "Patch was removed.","Patch was removed."
139
  "Path '%s' is not correct.","Path '%s' is not correct."
140
  "Path '%s' is not usable. This path is used by system Magento, please enter other path.","Path '%s' is not usable. This path is used by system Magento, please enter other path."
141
+ "Permission denied. Cannot write to Layout.php","Permission denied. Cannot write to Layout.php"
142
  "Permission denied. Cannot write to Mage.php","Permission denied. Cannot write to Mage.php"
143
  "Please select item(s)","Please select item(s)"
144
  "Poll Block (sidebar)","Poll Block (sidebar)"
155
  "Rebuild .htaccess for all websites","Rebuild .htaccess for all websites"
156
  "Rebuild .htaccess for all websites.","Rebuild .htaccess for all websites."
157
  "Rebuild .htaccess for this website","Rebuild .htaccess for this website"
158
+ "Rebuild htaccess for website '%s' fail.","Rebuild htaccess for website '%s' fail."
159
  "Record was successfully updated.","Record was successfully updated."
160
  "Registration","Registration"
161
  "Relative path from webroot","Relative path from webroot"
162
+ "Remove Layout Patch","Remove Layout Patch"
163
  "Remove Mage Patch","Remove Mage Patch"
164
  "Remove all cached pages","Remove all cached pages"
165
  "Remove error:","Remove error:"
166
+ "Removing M-Turbo directives from .htaccess error","Removing M-Turbo directives from .htaccess error"
167
  "Removing MTurbo directives fail. Terminating MTurbo directive not found. The htaccess may be corrupted.","Removing MTurbo directives fail. Terminating MTurbo directive not found. The htaccess may be corrupted."
168
  "Removing MTurbo directives from htaccess fail.","Removing MTurbo directives from htaccess fail."
169
  "Request path","Request path"
170
  "Save and Install","Save and Install"
171
  "Save configuration","Save configuration"
172
+ "Script '%s' is not executable. Please change permission or define interpret for downloading script","Script '%s' is not executable. Please change permission or define interpret for downloading script"
173
+ "Script '%s' is not executable. Please change permission","Script '%s' is not executable. Please change permission"
174
+ "Script state","Script state"
175
  "Select All","Select All"
176
  "Select Visible","Select Visible"
177
+ "Server name","Server name"
178
  "Setting 'allow_url_fopen' is disabled.","Setting 'allow_url_fopen' is disabled."
179
  "Size","Size"
180
  "Skip blocked page: ","Skip blocked page: "
181
+ "Some .htaccess was not builded. Please check it on 'Website Configuration'","Some .htaccess was not builded. Please check it on 'Website Configuration'"
182
+ "Some files were not deleted:<br />","Some files were not deleted:<br />"
183
  "Starting download pages, please wait...","Starting download pages, please wait..."
184
  "Status","Status"
185
  "Store View","Store View"
190
  "The maximum number of htaccess backups","The maximum number of htaccess backups"
191
  "The minimum size to decision, the page is alright (bytes)","The minimum size to decision, the page is alright (bytes)"
192
  "This action completely removes M-Turbo from your Magento","This action completely removes M-Turbo from your Magento"
193
+ "This patch is required for dynamic loaded blocks. (Patched file: app/code/core/Mage/Core/Model/Layout.php)","This patch is required for dynamic loaded blocks. (Patched file: app/code/core/Mage/Core/Model/Layout.php)"
194
  "This tab contains invalid data. Please solve the problem before saving.","This tab contains invalid data. Please solve the problem before saving."
195
  "Total %d records found","Total %d records found"
196
  "Total of %d page(s) were successfully purged.","Total of %d page(s) were successfully purged."
197
  "Total of %d record(s) were successfully deleted.","Total of %d record(s) were successfully deleted."
198
  "Total of %d record(s) were successfully updated.","Total of %d record(s) were successfully updated."
199
+ "Turbocache directory was removed.","Turbocache directory was removed."
200
  "Turbopath directory","Turbopath directory"
 
201
  "Type","Type"
202
  "Unable to retrieve the contents of htaccess.","Unable to retrieve the contents of htaccess."
203
+ "Unable to save installation file in '%s' directory.","Unable to save installation file in '%s' directory."
204
  "Unable to save installation file in temp directory.","Unable to save installation file in temp directory."
205
  "Unable to unpack install package.","Unable to unpack install package."
206
  "Unblock","Unblock"
 
207
  "Uninstall M-Turbo","Uninstall M-Turbo"
208
+ "Uninstall MTurbo from PEAR error","Uninstall MTurbo from PEAR error"
209
+ "Uninstall PEAR package failed. Probably you have not permission to remove files. Please, go to System/Magento Connect Manager and there finish uinstall of MTurbo. More information about uninstall of MTurbo you can get in file var/uninstallmturbo.log. ","Uninstall PEAR package failed. Probably you have not permission to remove files. Please, go to System/Magento Connect Manager and there finish uinstall of MTurbo. More information about uninstall of MTurbo you can get in file var/uninstallmturbo.log. "
210
+ "Uninstall complete. Please refresh standard Magento Cache","Uninstall complete. Please refresh standard Magento Cache"
211
+ "Uninstall db records error","Uninstall db records error"
212
  "Uninstall error","Uninstall error"
213
  "Uninstall","Uninstall"
214
  "Unselect All","Unselect All"
215
  "Unselect Visible","Unselect Visible"
216
  "Update URLs from Rewrite Table","Update URLs from Rewrite Table"
217
  "Upgrade complete, please refresh Magento system cache","Upgrade complete, please refresh Magento system cache"
218
+ "Upgrade succesfull.","Upgrade succesfull."
219
  "Upgrade to Full Version","Upgrade to Full Version"
220
  "Url","Url"
221
  "Using CURL PHP extensions","Using CURL PHP extensions"
224
  "View","View"
225
  "Warning: Please don't close window during downloading pages","Warning: Please don't close window during downloading pages"
226
  "Websites Configuration","Websites Configuration"
227
+ "Welcome text demo","<p>Welcome to M-Turbo Cache developed by Artio.
228
  To complete installation, we need to have entered the path to your directory where you want to store cached pages.
229
  This path is then entered into a .htaccess file, which is a function of the components necessary.</p><p>More, you can choose
230
  which website you want to caches and which not. Each website you can also choose storeview.
231
  In addition, please fill out the base directory of each website. In the default settings is set base dir for the administration,
232
+ which does must not correspond to the base dir for the frontend.</p><p style=""color:red"">Note: In demo version you can enable only one website.</p>"
233
+ "Welcome text","<p>Welcome to M-Turbo Cache developed by Artio.
234
  To complete installation, we need to have entered the path to your directory where you want to store cached pages.
235
  This path is then entered into a .htaccess file, which is a function of the components necessary.</p><p>More, you can choose
236
  which website you want to caches and which not. Each website you can also choose storeview.
237
  In addition, please fill out the base directory of each website. In the default settings is set base dir for the administration,
 
 
238
  which does must not correspond to the base dir for the frontend.</p>"
239
  "Your Download ID","Your Download ID"
240
  "Your download ID is not valid. I can't upgrade your MTurbo.","Your download ID is not valid. I can't upgrade your MTurbo."
app/locale/es_ES/Artio_MTurbo.csv ADDED
@@ -0,0 +1,247 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "'Mage_Core_Model_Layout' was not patched. It is required for dynamic loaded blocks. Please see to 'Dynamic loaded blocks'. Exception %s","'Mage_Core_Model_Layout' was not patched. It is required for dynamic loaded blocks. Please see to 'Dynamic loaded blocks'. Exception %s"
2
+ "'Mage_Core_Model_Layout' was not patched. It is required for dynamic loaded blocks. Please see to 'Dynamic loaded blocks'.","'Mage_Core_Model_Layout' was not patched. It is required for dynamic loaded blocks. Please see to 'Dynamic loaded blocks'."
3
+ " Generate a list of the URLs and store it on the disk. This action will be executed if Automatic cache management is enabled.","Generar una lista de URLs y almacenarlas en el disco. Esta acción será ejecutada si la gestión automática de caché está habilitada."
4
+ "(hours : minutes)","(horas : minutos)"
5
+ "Actions","Acciones"
6
+ "Add newly created categories to select","Añadir categorías recién creadas para seleccionar"
7
+ "Added newly cms to select","Añadir nuevos cms para seleccionar"
8
+ "All pages was succesfully removed","Las páginas fueron removidas exitosamente"
9
+ "Apply Layout Patch","Aplicar parche layout"
10
+ "Apply Mage Patch","Aplicar parche mágico"
11
+ "Apply the patch only just in case you need to use Direct Access download method!","Aplicar el parche sólo en caso de necesitar hacer uso de método de descarga de acceso directo!"
12
+ "Are you sure?","Está seguro?"
13
+ "Automatic cache management","Administrados automático de caché"
14
+ "Base directory","Directorio base"
15
+ "Block","Bloquear"
16
+ "Blocked page can't refresh","Página bloqueada no puede ser actualizada"
17
+ "Blocked","Bloqueada"
18
+ "CMS page","Página CMS"
19
+ "CMS","CMS"
20
+ "CURL is not installed","CURL no está instalada"
21
+ "Cache Path","Ruta Cache"
22
+ "Cache actions","Acciones Cache"
23
+ "Cache all pages","Todas las páginas Cache"
24
+ "Cache selected pages","Cache páginas seleccionadas"
25
+ "Cache","Cache"
26
+ "Cached","Almacenado en cache"
27
+ "Cannot read Layout.php file","No es posible leer archivo Layout.php"
28
+ "Cannot read Mage.php file","No es posible leer archivo Mage.php"
29
+ "Cannot read patch file","No es posible leer archivo reparado"
30
+ "Cart Block (sidebar)","cesta de bloques (Barra lateral)"
31
+ "Categories","Categorías"
32
+ "Category view","Vista de categorías"
33
+ "Clearing turbocache directory error","Clearing turbocache directory error"
34
+ "Company","Compañía"
35
+ "Compare Block (sidebar)","Comparar bloque (Barra lateral)"
36
+ "Configuration error","Error de configuración"
37
+ "Configuration was successfully saved","Configuración fué exitosamente guardada"
38
+ "Connection to server could not be established.","Conección al servidor no pudo ser establecida."
39
+ "Copying js file failed! Dynamic blocks won't work for this theme. Copy 'mturbo.js' from default theme, please!","Copying js file failed! Dynamic blocks won't work for this theme. Copy 'mturbo.js' from default theme, please!"
40
+ "Create cache for all pages (except blocked pages). Download progress can be monitored in a separate window. Please, do not close this window. Update of URLs from the Rewrite Table will be started automatically before caching is executed. Please, note that initial cache creation may take a long time (several hours). Time needed depends on the number of pages your site has.","Crear cache para todas las páginas (excepto páginas bloqueadas).Proceso de descarga puede ser monitoreado en otr ventana. Por favor, no cierre esta ventana. Actualizaciones de URLs desde la tabla de reescritura se pondrán en marcha automáticamente antes de que el almacenamento en caché sea ejecutado. Por favor, note que la creación inicial de caché debe tomar un tiempo largo (varias horas). El tiempo necesario depende del número de páginas que su sitio tenga."
41
+ "Create connection over sockets","Crear una nueva conexión a través de sockets"
42
+ "Creating directory '%s' fails","Creating directory '%s' fails"
43
+ "DOMAIN DOES NOT MATCH","El Dominio no corresponde"
44
+ "Date","Fecha"
45
+ "Db records was removed.","Db records was removed."
46
+ "Delete","Eliminar"
47
+ "Direct access (created new instance Magento)","Acceso directo (crear una nueva instancia de magento)"
48
+ "Download ID not set.","ID descargado no es establecido."
49
+ "Download Test","Prueba de descarga"
50
+ "Download method","método de descarga"
51
+ "Downloaded <strong>%s</strong> pages","Descargar <strong>%s</strong> páginas"
52
+ "Dynamic loaded blocks","Bloques dinámicos cargados"
53
+ "ERROR_DOWNLOAD_ID_NOT_FOUND","El ID de descarga insertado no ha sido encontrado. Por favor, asegurese de haberlo ingresado correctamente. Si está seguro de que éste es correcto y válido, contacte <a href=""mailto:support@artio.net"">support@artio.net</a>."
54
+ "ERROR_REG_CHECK_FAIL","Verifique la licencia fallida. Por favor, contacte <a href=""mailto:support@artio.net"">support@artio.net</a>."
55
+ "Edited by MTurbo","Editado por MTurbo"
56
+ "Enable automatic cache refresh","Permitir actualización automática de cache"
57
+ "Enable automatic refresh after save CMS pages","Permitir actualización automática después de guardadar páginas CMS"
58
+ "Enable automatic refresh for preview of categories of saved product","Permitir actualización automática para la vista previa de las categorías de productos guardados"
59
+ "Enable automatic refresh for preview of saved category","Permitir actualización automática para categorías previamente guardadas"
60
+ "Enable automatic refresh for previews of parents of categories of saved product","Permitir actualización automática para padres anteriores de categorías de productos guardados"
61
+ "Enable automatic refresh for previews of parents of saved category","Permitir actualización automática de padres de categorías guardadas"
62
+ "Enable making htaccess backup","Permitir hacer backup de htaccess"
63
+ "Enable website","Permitir sitio web"
64
+ "Enable/Disable Storeview","Habilitar/Deshabilitar ver tienda"
65
+ "Export to:","Exportar a:"
66
+ "Extension ZLIB is not loaded.","Extensión ZLIB no está cargada."
67
+ "File .htaccess path","Archivo con ruta .htaccess"
68
+ "File .htaccess state","Archivo con acceso .htaccess"
69
+ "File Mage.php is not patched","Archivo mago.php no fue reparado"
70
+ "Finished downloading.","Descarga finalizada."
71
+ "Generate URL list for all websites","Generar lista de URLpara todos los sitios web"
72
+ "Generate URL list for this website","Generar lista de URL para este sitio web"
73
+ "Generate error","Generar error"
74
+ "Generating complete for website '%s'. Wrote %d urls","Completar la generación de la página web '%s'. Escribió %d urls"
75
+ "Generating for website '%s' fail.","Generar para sitio web fallido'%s'"
76
+ "Htaccess for website '%s' was rebuilded.","Htaccess para sitio web '%s' fué reconstruido."
77
+ "Htaccess does not exist.","Htaccess no existe."
78
+ "Htaccess is not writable.","Htaccess no es reescribibe."
79
+ "Htaccess model has not assigned website","Modelo Htaccess no ha asignado un sitio web"
80
+ "Htaccess settings","Ajustes Htaccess"
81
+ "I can't create '%s'. Please, check permission to create this directory.","No lo puedo crear '%s'. Por favor, verifique los permisos para crear este directorio."
82
+ "I can't open/create urllist file '%s'.","No puedo abrir/crear archivo de lista de URL '%s'."
83
+ "I can't write to urllist file '%s'","No puedo escribir un archivo lista de URL '%s'"
84
+ "ID","ID"
85
+ "INFO_UPGRADE_LICENSE_EXPIRED","Su licencia está vencida. Por favor, visite <a href=http://www.artio.net/magento-extensions/m-turbo-accelerator"">artio.net</a> para prolongarla"
86
+ "INFO_UPGRADE_NOT_ACTIVE","La licencia no ha sido activada aún. Por favor, intente de nuevo o contacte support@artio.net."
87
+ "Inserting MTurbo directives fail. Htaccess template not found.","Inserción de las directivas MTurbo fallidas. Plantilla Htaccess no encontrada."
88
+ "Inserting MTurbo directives into htaccess fail.","Inserción de directivas MTurbo en htaccess fallido."
89
+ "Install error","Instalación fallido"
90
+ "Installation complete. Welcome!!!","Instalación completa. Bienvenido!!!"
91
+ "Installation succesfull. Now will be your Magento faster than other.","Instalación exitosa. Ahora usted tendrá su Magento más rápido que antes."
92
+ "Last refresh","última actualización"
93
+ "Launching this action will update cached URLs based on current values from the Rewrite Table. We recommend runing this action after major modifications to the products or categories.","Lanzando esta acción se actualizarán URLs en cache basado en los valores actuales desde la tabla reescribible. Recomendamos correr esta acción después de modificaciones importantes a los productos o categorías."
94
+ "Layout names of dynamic loaded blocks","Disponer nombres de bloques de carga dinámica"
95
+ "Layout patch","Layout parche"
96
+ "Layout state","Layout estado"
97
+ "M-Turbo Cache Management","Manejo de M-Turbo Cache"
98
+ "M-Turbo Management - Downloading pages","Manejo de M-Turbo - Descargando páginas"
99
+ "M-Turbo Management","Manejo de M-Turbo"
100
+ "M-Turbo installation problem","Problema de instalación de M-Turbo"
101
+ "M-Turbo installation succesfull. Please see into System/M-Turbo Management","Instalación exitosa de M-Turbo. Por favor revisar en el sistema de administración de /M-Turbo"
102
+ "Mage patch uninstall error","Desinstalar parche Mage error"
103
+ "Magento Turbo Cache Management","Administración de cage Magento Turbo"
104
+ "Main Configuration","Configuración principal"
105
+ "Menu","Menu"
106
+ "My Cart (%s item)","Mi carrito (%s elemento)"
107
+ "My Cart (%s items)","Mi carrito (%s elemento)"
108
+ "My Cart","Mi carrito"
109
+ "Name","Nombre"
110
+ "Next page","Siguiénte página"
111
+ "No","No"
112
+ "Not activated yet","No activado aún"
113
+ "Not blocked","No bloqueado"
114
+ "Not cached","Sin cache"
115
+ "OK","OK"
116
+ "Other","Otro"
117
+ "Page downloaded: ","Página descargada: "
118
+ "Page was succesfull download. Now is cached.","La Página fué exitosamente descargada. Es de caché ahora."
119
+ "Page was succesfull purge from disk.","La página fué exitosamente purgada del disco."
120
+ "Page","Página"
121
+ "Patch already removed","El parche ya está eliminado"
122
+ "Patch already used","El parche ya está usado"
123
+ "Patch was applied.","El parche fué aplicado."
124
+ "Patch was removed.","El parche fué removido."
125
+ "Path '%s' is not correct.","Parche '%s' no es correcto."
126
+ "Path '%s' is not usable. This path is used by system Magento, please enter other path.","Esta ruta '%s' no es permitida. Esta ruta es usada por el sistema Magento, por favor ingrese otra ruta."
127
+ "Permission denied. Cannot write to Layout.php","Permiso denegado. No puede escribir a Layout.php"
128
+ "Permission denied. Cannot write to Mage.php","Permiso denegado. No puede escribir a Mage.php"
129
+ "Please select item(s)","Please select item(s)"
130
+ "Poll Block (sidebar)","Sondeo de bloques (barra lateral)"
131
+ "Preview fail.","Previa no."
132
+ "Preview","Anterior"
133
+ "Previous page","Página anterior"
134
+ "Processed <strong>%s%% %s/%d</strong> pages","Procesado <strong>%s%% %s/%d</strong> páginas"
135
+ "Product detail","Product detail"
136
+ "Products","Products"
137
+ "Purge all cached pages and relevant directories located on the disk. No caching will be done until cache is recreated.","Limpiar todas las páginas de cache y directorios relevantes localizados en el disco. Ningún almacenamiento en cache será hecho hasta que cache se vuelva a crear."
138
+ "Purge from disk","Limpiar desde disco"
139
+ "Purge","Limpiar"
140
+ "Purging page fail.","Limpieza de página fallido."
141
+ "Rebuild .htaccess for all websites","Reconstruir .htaccess para todos los sitios Web"
142
+ "Rebuild .htaccess for all websites.","Reconstruir .htaccess para todos los sitios Web."
143
+ "Rebuild .htaccess for this website","Reconstruir .htaccess para todos los sitios Web"
144
+ "Rebuild htaccess for website '%s' fail.","Reconstrucción htaccess para sitios web '%s' fallida."
145
+ "Record was successfully updated.","Registro fué actualizado exitosamente."
146
+ "Registration","Registro"
147
+ "Relative path from webroot","Ruta relativa de Webroot"
148
+ "Remove Layout Patch","Remover parche layout"
149
+ "Remove Mage Patch","Remover parche mago"
150
+ "Remove all cached pages","Remover todas las páginas de cache"
151
+ "Remove error:","Remover error:"
152
+ "Removing M-Turbo directives from .htaccess error","Remover directivas de MTurbo faillido"
153
+ "Removing MTurbo directives fail. Terminating MTurbo directive not found. The htaccess may be corrupted.","Remover directivas de MTurbo faillido. Terminación de la Directiva MTurbo que no se encuentran. El htaccess puede estar dañado."
154
+ "Removing MTurbo directives from htaccess fail.","Removiendo directavias MTurbo del htaccess faillido."
155
+ "Request path","Solicitud de ruta"
156
+ "Save and Install","Guardar e instalar"
157
+ "Save configuration","Guardar configuración"
158
+ "Script state","Script estado"
159
+ "Select All","Seleccionar todo"
160
+ "Select Visible","Seleccione el visible"
161
+ "Server name","Nombre del servidor"
162
+ "Setting 'allow_url_fopen' is disabled.","Ajuste 'Permitir_url_fabierta' está deshabilitado."
163
+ "Size","Tamaño"
164
+ "Skip blocked page: ","Saltar páginas bloqueadas: "
165
+ "Starting download pages, please wait...","Iniciar descarga de páginas, por favor espere..."
166
+ "Status","Estado"
167
+ "Store View","Ver tienda"
168
+ "Synchronization complete","Sincronización completa"
169
+ "Synchronization error","Error en sincronización"
170
+ "Synchronize","Sincronizar"
171
+ "The information in this tab has been changed.","La información contenida en esta ficha ha cambiado."
172
+ "The maximum number of htaccess backups","El máximo número de htaccess backups"
173
+ "The minimum size to decision, the page is alright (bytes)","Tamaño mínimo de la decisión, la página está bien (bytes)"
174
+ "This action completely removes M-Turbo from your Magento","Esta acción remueve completamente M-Turbo de su Magento"
175
+ "This tab contains invalid data. Please solve the problem before saving.","This tab contains invalid data. Por favor resuelva este problema antes de guardar."
176
+ "Total %d records found","Total %d de registros encontrados"
177
+ "Total of %d page(s) were successfully purged.","Total de %d páginas(s) fueron exitosamente limpiadas."
178
+ "Total of %d record(s) were successfully deleted.","Total de %d registro(s)fueron exitosamente eliminadas."
179
+ "Total of %d record(s) were successfully updated.","Total de %d registro(s)fueron exitosamente actualizados."
180
+ "Turbopath directory","directorio Turbopath"
181
+ "Type","Tipo"
182
+ "Unable to retrieve the contents of htaccess.","Imposible recuperar el contenido de htaccess."
183
+ "Unable to save installation file in %s directory.","Imposible guardar archivo de instalación en directorio %s."
184
+ "Unable to save installation file in temp directory.","Imposible guardar archivo de instalación en directorio temporal."
185
+ "Unable to unpack install package.","Incapaz de descomprimir el paquete de instalación."
186
+ "Unblock","Desbloquear"
187
+ "Uninstall M-Turbo","Desinstalar M-Turbo"
188
+ "Uninstall complete. Please refresh standard Magento Cache","Desinstalar M-Turbo completa."
189
+ "Uninstall MTurbo from PEAR error","Desinstalar error"
190
+ "Uninstall error","Desinstalar error"
191
+ "Uninstall","Desinstalar"
192
+ "Unselect All","Cancelar la selección de todos"
193
+ "Unselect Visible","Cancelar la selección visible"
194
+ "Update URLs from Rewrite Table","Actualizar URLs de la tabla reescribible"
195
+ "Upgrade complete, please refresh Magento system cache","Actualización completa, por favor actualice el sistema de cache Magento"
196
+ "Upgrade to Full Version","Actualizar versión completa"
197
+ "Url","Url"
198
+ "Using CURL PHP extensions","Usar extensiones CURL PHP"
199
+ "Using function 'file_get_contents'","Usar función 'file_get_contents'"
200
+ "Values separated by (',').","Valores separados por (',')."
201
+ "View","Vista"
202
+ "Warning: Please don't close window during downloading pages","Advertecia: Por favor no cierre la ventana mientras descarga páginas"
203
+ "Websites Configuration","Configuración de sitios Web"
204
+ "Welcome text demo","<p>Welcome to M-Turbo Cache developed by Artio.
205
+ To complete installation, we need to have entered the path to your directory where you want to store cached pages.
206
+ This path is then entered into a .htaccess file, which is a function of the components necessary.</p><p>More, you can choose
207
+ which website you want to caches and which not. Each website you can also choose storeview.
208
+ In addition, please fill out the base directory of each website. In the default settings is set base dir for the administration,
209
+ which does must not correspond to the base dir for the frontend.</p><p style=""color:red"">Note: In demo version you can enable only one website.</p>"
210
+ In addition, please fill out the base directory of each website. In the default settings is set base dir for the administration,
211
+ which does must not correspond to the base dir for the frontend.</p>"
212
+ "Welcome text","<p>Bienvenido a M-Turbo Cache desarrollado por Artio.
213
+ Para completar la instalación, necesitamos ingresar la ruta al directorio donde usted desea almacenar las páginas en cache.
214
+ Esta ruta es entonces ingresada a un archivo .htaccess, el cual es una función de los componentes necesarios.</p><p>Además, usted puede elegir
215
+ cual web side quiere en cache y cual no. De cada sitio Web usted puede también elegir vista de tienda.
216
+ Adicionalmente, por favor rellene el directorio base de cada sitio web. En las configuraciones predeterminadas está establecido el directorio base para la administración,
217
+ el cual no debe corresponder con el directorio base para la interfaz.</p>"
218
+ "Your Download ID","Su ID de descarga"
219
+ "Your download ID is not valid. I can't upgrade your MTurbo.","Su ID de descarga no es váido. No se puede actualizar su MTurbo."
220
+ "Your first options","Sus primeras opciones"
221
+ "empty output","Salida vacía"
222
+ "items selected","Elementos seleccionados"
223
+ "of %s pages","de %s páginas"
224
+ "per page","por página"
225
+ "Enable automatic refresh for parent of saved product (configurable, grouped, bundled)","Enable automatic refresh for parent of saved product (configurable, grouped, bundled)"
226
+ "File '%s' is not writeable, please change permission.","File '%s' is not writeable, please change permission."
227
+ "I can't find function addBlock","I can't find function addBlock"
228
+ "If you not see newly added category or CMS, then push the 'Synchronize' button.","If you not see newly added category or CMS, then push the 'Synchronize' button."
229
+ "Interpret for downloading script","Interpret for downloading script"
230
+ "JavaScript Watcher (this control watches existing javascript in all your theme packages)","JavaScript Watcher (this control watches existing javascript in all your theme packages)"
231
+ "Layout patch uninstall error","Layout patch uninstall error"
232
+ "Layout patch was removed.","Layout patch was removed."
233
+ "M-Turbo directives from .htaccess was removed.","M-Turbo directives from .htaccess was removed."
234
+ "M-Turbo upgrade succesfull. Please see into System/M-Turbo Management","M-Turbo upgrade succesfull. Please see into System/M-Turbo Management"
235
+ "M-Turbo upgrading problem","M-Turbo upgrading problem"
236
+ "Mage patch was removed.","Mage patch was removed."
237
+ "Model '%s' is not writeable. Please change permission to write for patch.","Model '%s' is not writeable. Please change permission to write for patch."
238
+ "Page is too small or 404","Page is too small or 404"
239
+ "Script '%s' is not executable. Please change permission or define interpret for downloading script","Script '%s' is not executable. Please change permission or define interpret for downloading script"
240
+ "Script '%s' is not executable. Please change permission","Script '%s' is not executable. Please change permission"
241
+ "Some .htaccess was not builded. Please check it on 'Website Configuration'","Some .htaccess was not builded. Please check it on 'Website Configuration'"
242
+ "Some files were not deleted:<br />","Some files were not deleted:<br />"
243
+ "This patch is required for dynamic loaded blocks. (Patched file: app/code/core/Mage/Core/Model/Layout.php)","This patch is required for dynamic loaded blocks. (Patched file: app/code/core/Mage/Core/Model/Layout.php)"
244
+ "Turbocache directory was removed.","Turbocache directory was removed."
245
+ "Uninstall PEAR package failed. Probably you have not permission to remove files. Please, go to System/Magento Connect Manager and there finish uinstall of MTurbo. More information about uninstall of MTurbo you can get in file var/uninstallmturbo.log. ","Uninstall PEAR package failed. Probably you have not permission to remove files. Please, go to System/Magento Connect Manager and there finish uinstall of MTurbo. More information about uninstall of MTurbo you can get in file var/uninstallmturbo.log. "
246
+ "Uninstall db records error","Uninstall db records error"
247
+ "Upgrade succesfull.","Upgrade succesfull."
package.xml CHANGED
@@ -1,22 +1,22 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>MTurbo</name>
4
- <version>1.2.1</version>
5
  <stability>stable</stability>
6
- <license uri="http://www.artio.net/m-turbo/license">Copyright 2010, ARTIO s.r.o. All rights reserved.</license>
7
  <channel>community</channel>
8
  <extends/>
9
  <summary>MAGENTO E-COMMERCE ACCELERATOR</summary>
10
- <description>M-Turbo is a seamlessy working caching component for Magento e-store
11
- that provides fast response to shoppers, improves performance of the
12
- store and saves significant ammount of server resources. Integral part
13
  of Magento site optimization!</description>
14
- <notes>Visit product homepage at:
15
  http://www.artio.net/magento-extensions/m-turbo-accelerator</notes>
16
  <authors><author><name>Michal Unzeitig</name><user>auto-converted</user><email>michal.unzeitig@artio.net</email></author><author><name>Ji&#x159;&#xED; Chmiel</name><user>auto-converted</user><email>jiri.chmiel@artio.net</email></author></authors>
17
- <date>2011-05-23</date>
18
- <time>08:00:02</time>
19
- <contents><target name="magedesign"><dir name="frontend"><dir name="default"><dir name="default"><dir name="layout"><file name="mturbo.xml" hash="679c071acb59fa8a28251acd25738a9b"/></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="mturbo"><dir name="preview"><file name="tree.phtml" hash="558e2da8b9c5584a94748116fd8249d0"/></dir><file name="demo.phtml" hash="da2b65990f1221d981b1c850f292dae6"/><file name="version.phtml" hash="3f7c9b1d76d9f92050fde76c1f869fb4"/><file name="massaction.phtml" hash="c4ca58cbd05d564129d3c39d452c783e"/><file name="grid.phtml" hash="f11cea678bbc7230028cf5a870479ac8"/><file name="tabs.phtml" hash="1015f2e05a41bb7751b11036e48cbd9f"/></dir></dir><dir name="layout"><file name="mturbo.xml" hash="6e20ef84ceeac5a82dc7c7ce6897f12d"/></dir></dir></dir></dir></target><target name="magelocal"><dir name="Artio"><dir name="MTurbo"><dir name="etc"><file name="config.xml" hash="6637a12aec82c402b0a88aa3b27f610e"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="CheckController.php" hash="78c05c96f294f009f35dc8b88537162c"/><file name="MturboController.php" hash="ffc1bffbdebb5d63631f4d4889dbf3d9"/></dir><file name="AdminhtmlController.php" hash="cb9981505f756dd9658b44b93b07e57c"/><file name="IndexController.php" hash="ee200641e72739996809461740788bca"/></dir><dir name="Helper"><dir name="Catalog"><dir name="Product"><file name="Compare.php" hash="969d8a7f3faa2ab54ce48ff0c0e0754b"/></dir></dir><file name="Functions.php" hash="8d3a03abb881db95a6ff7939c5a36e68"/><file name="Downloader.php" hash="16d34956e7b85f5e34ec18f02b8e13f4"/><file name="Data.php" hash="a5018ce4781ab4aba7ef36fc0ad9f109"/><file name="Info.php" hash="b22f8c7ce96fe72fad4b9d68b9233b11"/><file name="Website.php" hash="daa6610e06be6a66dad11a5f58989611"/></dir><dir name="Model"><dir name="Mturbo"><file name="Event.php" hash="37a326906f9388f0df14ff181d5c3724"/><file name="File.php" hash="37b8c69b9b6aaae75e9fe41a912f89a9"/></dir><dir name="Mysql4"><dir name="Mturbo"><file name="Collection.php" hash="c8e06d986966455cd28b37a93b78a23d"/></dir><file name="Mturbo.php" hash="17a258f73ea138481a5727e7b9d383fc"/></dir><dir name="scripts"><file name="wgettrans.so" hash="e4f414b0f796051518b6d951133c856b"/><file name="wgetlib.so" hash="f3fe4b72d7633e12f9e013a849332245"/></dir><dir name="htaccess"><file name="htaccessside.txt" hash="7d55f4bb772128b1f8783b319344d17c"/><file name="htaccess.txt" hash="e5650ac65b3679a1cbea26ea61b2ad0b"/><file name="htaccessstore.txt" hash="bb24289ef3c6e00cdb03bd6abba753d2"/><file name="htaccesswebsite.txt" hash="babc2f09afde8878f4670924e1238376"/></dir><dir name="Config"><file name="CmsTransformer.php" hash="a5fca7b305322112e5bddd247ec20074"/><file name="WebsiteTransformer.php" hash="6400c844114316207e18b670859fae1b"/><file name="DynamicTransformer.php" hash="c7a66182ebd4dfb3b0a123b3f3dbbddf"/><file name="Website.php" hash="42c7ca045d27c49581569648c5f080be"/></dir><dir name="DownloadMethods"><file name="Filegetcontents.php" hash="9c6c97fc34ea57cd8479cc042a990990"/><file name="Socket.php" hash="7db1aeb2142f400847f4684e2a2b35a2"/><file name="Direct.php" hash="980a50b03c9f91e4e896d5757c80c555"/><file name="Curl.php" hash="cdcd9d20402af9e2a8f5e1a3f713404b"/><file name="Abstract.php" hash="ddac44cb6f0548c0cd303bb1fa3e3e1b"/></dir><dir name="patches"><file name="layout.txt" hash="4d0055e6119d297fd78deb4c576ae9f0"/><file name="mage.txt" hash="0e2ef3ed32b7041f518f162745812023"/></dir><file name="DownloadMethodsFactory.php" hash="1bd5932612148116ee745c6bec68edaa"/><file name="Observer.php" hash="67fd81af52e97722914366939fbaa972"/><file name="Config.php" hash="4a4fcaae9ecfda8e7b3d136625293294"/><file name="Mturbo.php" hash="08f738e50519a807f32b5cff15117acb"/><file name="Patch.php" hash="213b25c08f2a8a02fd574abbb3f30826"/><file name="Htaccess.php" hash="390aa4381bc950d748b15a6ac8bd4227"/><file name="LayoutPatch.php" hash="51d2f43775f295d8c2e002a65415321f"/></dir><dir name="Block"><dir name="Data"><dir name="Form"><dir name="Element"><file name="SelectDownloadMethod.php" hash="ca4b9117ecc129a08c08f810bed063d5"/><file name="Html.php" hash="83a40987e47c142e6be58f311d29276d"/><file name="Button.php" hash="c61ec7e27c62364c21e6d893f875ad93"/><file name="Time.php" hash="c6617317308bd74c9714ccee2ac870bb"/><file name="CmsTree.php" hash="db33490dd6b51e596309ef4e96baf55e"/><file name="NoEscLabel.php" hash="1ce0fca5efc5e6afcbb96cf818ff7fef"/><file name="CategoryTree.php" hash="128d2bd67969552bb3f413975fc6313a"/></dir></dir><dir name="Grid"><dir name="Column"><file name="SwitchAction.php" hash="35b90030144a8b42d9696f5be0694a20"/><file name="FileSize.php" hash="b01fca106ea04f0a32d5ead838dd7446"/><file name="Blocked.php" hash="4e6c21fee2c3d8fc26198471ef79b041"/><file name="ColorOption.php" hash="9efec8edc0a724b1840acfee3333bcc1"/></dir></dir></dir><dir name="Adminhtml"><dir name="Welcome"><file name="Form.php" hash="8f44cd9f0fe2204c743a546b64e59f2f"/></dir><dir name="Edit"><dir name="Tab"><file name="Category.php" hash="3eb3d4924ab7d4e7978198d8caf31a30"/><file name="Product.php" hash="38d4025873e1e25c4d9289da20178096"/><file name="Uninstall.php" hash="fde35018cd407e8dd2cc7d91b4aafa3a"/><file name="Actions.php" hash="913ea3d61f3d51ebce4a0a5952535a35"/><file name="License.php" hash="3c405988f5bfc0581b5a7fe1b6204055"/><file name="Main.php" hash="db7d92e60c308a12ef772e9a0de7c7c7"/><file name="Dynamic.php" hash="f8d02e8fccbebf3802d9d8179621bab8"/><file name="Url.php" hash="f2366956b47613a036aefdb01494cb16"/><file name="Abstract.php" hash="16a37f270112b175796bb5af02eea84d"/><file name="Cms.php" hash="cee56f9271b29ff645e84105c831fd6c"/><file name="Website.php" hash="caee7038a01ba9dddebaf01a255245d9"/></dir><file name="Tabs.php" hash="a82341a6c981ba91b69774c81a7ad28e"/><file name="Form.php" hash="9ba7b56533f6c7f8f8b3a6e1a71fe6ad"/></dir><file name="Run.php" hash="e6ff24da20d057de3b1e7147a209b395"/><file name="Welcome.php" hash="5acab4515cf35c30bf182eb0529855ad"/><file name="Mturbo.php" hash="4c6758e028e608ce93847a55a1ce27e1"/></dir><dir name="Checkout"><dir name="Cart"><dir name="Item"><file name="Renderer.php" hash="b93f63e2b1940a889534854ba3fec31c"/></dir></dir></dir><file name="Ajax.php" hash="3cf0bebbf933f7786f3e39c5e482c260"/></dir><dir name="sql"><dir name="mturbo_setup"><file name="mysql4-upgrade-1.2.0-1.2.1.php" hash="d768025b9a753c77ad124d9d90edb170"/><file name="mysql4-install-1.2.1.php" hash="5c756a617300d923a4bd09e0c5a4fb70"/><file name="mysql4-upgrade-1.0.0-1.2.0.php" hash="5c756a617300d923a4bd09e0c5a4fb70"/></dir></dir></dir></dir></target><target name="magelocale"><dir name="en_US"><file name="Artio_MTurbo.csv" hash="e54c7dc71fbcf8dab1a370f0884b633b"/></dir></target><target name="mageetc"><dir name="modules"><file name="Artio_MTurbo.xml" hash="4de5464bc12f3c0702d2c36931bda64d"/></dir></target><target name="mageskin"><dir name="frontend"><dir name="default"><dir name="default"><dir name="js"><file name="mturbo.js" hash="a5dcd5db6565b2b01753f4d05d9e6e73"/></dir></dir></dir></dir></target></contents>
20
  <compatible/>
21
  <dependencies/>
22
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>MTurbo</name>
4
+ <version>1.2.2</version>
5
  <stability>stable</stability>
6
+ <license uri="http://www.artio.net/m-turbo/license">Copyright 2010-11, ARTIO s.r.o. All rights reserved.</license>
7
  <channel>community</channel>
8
  <extends/>
9
  <summary>MAGENTO E-COMMERCE ACCELERATOR</summary>
10
+ <description>M-Turbo is a seamlessy working caching component for Magento e-store&#xD;
11
+ that provides fast response to shoppers, improves performance of the&#xD;
12
+ store and saves significant ammount of server resources. Integral part&#xD;
13
  of Magento site optimization!</description>
14
+ <notes>Visit product homepage at:&#xD;
15
  http://www.artio.net/magento-extensions/m-turbo-accelerator</notes>
16
  <authors><author><name>Michal Unzeitig</name><user>auto-converted</user><email>michal.unzeitig@artio.net</email></author><author><name>Ji&#x159;&#xED; Chmiel</name><user>auto-converted</user><email>jiri.chmiel@artio.net</email></author></authors>
17
+ <date>2011-09-30</date>
18
+ <time>14:17:50</time>
19
+ <contents><target name="magelocal"><dir name="Artio"><dir name="MTurbo"><dir name="Block"><dir name="Adminhtml"><dir name="Edit"><dir name="Tab"><file name="Abstract.php" hash="16a37f270112b175796bb5af02eea84d"/><file name="Actions.php" hash="957345fc43a69aa0fcdeb32e5448ca66"/><file name="Category.php" hash="3eb3d4924ab7d4e7978198d8caf31a30"/><file name="Cms.php" hash="cee56f9271b29ff645e84105c831fd6c"/><file name="Dynamic.php" hash="99fbb6258ef13fdf881e341d7dc32c56"/><file name="License.php" hash="3c405988f5bfc0581b5a7fe1b6204055"/><file name="Main.php" hash="6eca1eae86c0cfabe4d5c51147ec4841"/><file name="Product.php" hash="38d4025873e1e25c4d9289da20178096"/><file name="Uninstall.php" hash="fde35018cd407e8dd2cc7d91b4aafa3a"/><file name="Url.php" hash="f2366956b47613a036aefdb01494cb16"/><file name="Website.php" hash="c02792f23188e0d4c786f8285d59b3e2"/></dir><file name="Form.php" hash="9ba7b56533f6c7f8f8b3a6e1a71fe6ad"/><file name="Tabs.php" hash="a82341a6c981ba91b69774c81a7ad28e"/></dir><dir name="Welcome"><file name="Form.php" hash="10c5680f4ee3768054756413aea6ce44"/></dir><file name="Mturbo.php" hash="4c6758e028e608ce93847a55a1ce27e1"/><file name="Run.php" hash="e6ff24da20d057de3b1e7147a209b395"/><file name="Welcome.php" hash="5acab4515cf35c30bf182eb0529855ad"/></dir><dir name="Checkout"><dir name="Cart"><dir name="Item"><file name="Renderer.php" hash="b93f63e2b1940a889534854ba3fec31c"/></dir></dir></dir><dir name="Data"><dir name="Form"><dir name="Element"><file name="Button.php" hash="c61ec7e27c62364c21e6d893f875ad93"/><file name="CategoryTree.php" hash="128d2bd67969552bb3f413975fc6313a"/><file name="CmsTree.php" hash="db33490dd6b51e596309ef4e96baf55e"/><file name="Html.php" hash="83a40987e47c142e6be58f311d29276d"/><file name="NoEscLabel.php" hash="1ce0fca5efc5e6afcbb96cf818ff7fef"/><file name="SelectDownloadMethod.php" hash="ca4b9117ecc129a08c08f810bed063d5"/><file name="Time.php" hash="c6617317308bd74c9714ccee2ac870bb"/></dir></dir><dir name="Grid"><dir name="Column"><file name="Blocked.php" hash="4e6c21fee2c3d8fc26198471ef79b041"/><file name="ColorOption.php" hash="9efec8edc0a724b1840acfee3333bcc1"/><file name="FileSize.php" hash="b01fca106ea04f0a32d5ead838dd7446"/><file name="SwitchAction.php" hash="35b90030144a8b42d9696f5be0694a20"/></dir></dir></dir><file name="Ajax.php" hash="911e58fe1f3f0a09458bf2200b078fa2"/></dir><dir name="Helper"><dir name="Catalog"><dir name="Product"><file name="Compare.php" hash="969d8a7f3faa2ab54ce48ff0c0e0754b"/></dir></dir><file name="Data.php" hash="7c045fbda491e0fee61c0bf4b81cddea"/><file name="Downloader.php" hash="e703b220f37a29c706e04214e87d90ed"/><file name="Functions.php" hash="14d3580346eaf8aa84433d1b5bb1ec49"/><file name="Info.php" hash="b22f8c7ce96fe72fad4b9d68b9233b11"/><file name="Website.php" hash="daa6610e06be6a66dad11a5f58989611"/></dir><dir name="Model"><dir name="Config"><file name="CmsTransformer.php" hash="a5fca7b305322112e5bddd247ec20074"/><file name="DynamicTransformer.php" hash="c7a66182ebd4dfb3b0a123b3f3dbbddf"/><file name="Website.php" hash="42c7ca045d27c49581569648c5f080be"/><file name="WebsiteTransformer.php" hash="6400c844114316207e18b670859fae1b"/></dir><dir name="DownloadMethods"><file name="Abstract.php" hash="ddac44cb6f0548c0cd303bb1fa3e3e1b"/><file name="Curl.php" hash="cdcd9d20402af9e2a8f5e1a3f713404b"/><file name="Direct.php" hash="980a50b03c9f91e4e896d5757c80c555"/><file name="Filegetcontents.php" hash="9c6c97fc34ea57cd8479cc042a990990"/><file name="Socket.php" hash="7db1aeb2142f400847f4684e2a2b35a2"/></dir><dir name="Mturbo"><file name="Event.php" hash="37a326906f9388f0df14ff181d5c3724"/><file name="File.php" hash="8c28b29ab6b92173babda4c753b6d3c9"/></dir><dir name="Mysql4"><dir name="Mturbo"><file name="Collection.php" hash="c8e06d986966455cd28b37a93b78a23d"/></dir><file name="Mturbo.php" hash="17a258f73ea138481a5727e7b9d383fc"/></dir><dir name="htaccess"><file name="htaccess.txt" hash="e5650ac65b3679a1cbea26ea61b2ad0b"/><file name="htaccessside.txt" hash="7d55f4bb772128b1f8783b319344d17c"/><file name="htaccessstore.txt" hash="bb24289ef3c6e00cdb03bd6abba753d2"/><file name="htaccesswebsite.txt" hash="babc2f09afde8878f4670924e1238376"/></dir><dir name="patches"><file name="layout.txt" hash="4d0055e6119d297fd78deb4c576ae9f0"/><file name="mage.txt" hash="0e2ef3ed32b7041f518f162745812023"/></dir><dir name="scripts"><file name="wgetlib.so" hash="3c0089f912386ac6b5f9e6bb32f996f1"/><file name="wgettrans.so" hash="e4f414b0f796051518b6d951133c856b"/></dir><file name="Config.php" hash="b7cbdef876e859054f50f09d9f7a3ae4"/><file name="DownloadMethodsFactory.php" hash="1bd5932612148116ee745c6bec68edaa"/><file name="Htaccess.php" hash="14364ad2d9a43fe221dd20234b745c1a"/><file name="JsPatch.php" hash="5effc3f6bf8b4c420dd8aee0cef2bdd4"/><file name="LayoutPatch.php" hash="6f7a4fff8f6849dfe43002e31fa9f179"/><file name="Mturbo.php" hash="08f738e50519a807f32b5cff15117acb"/><file name="Observer.php" hash="7f50cd1b1d8fad8308846027a3b0cd2a"/><file name="Patch.php" hash="40e2e1ae19ae61c66b8f8b49326f0928"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="CheckController.php" hash="78c05c96f294f009f35dc8b88537162c"/><file name="MturboController.php" hash="8efab03d9703067dae00ee056440e483"/></dir><file name="AdminhtmlController.php" hash="cb9981505f756dd9658b44b93b07e57c"/><file name="IndexController.php" hash="ee200641e72739996809461740788bca"/></dir><dir name="etc"><file name="config.xml" hash="3645a833032a043e81fdbc161429cce7"/></dir><dir name="sql"><dir name="mturbo_setup"><file name="mysql4-install-1.2.1.php" hash="5c756a617300d923a4bd09e0c5a4fb70"/><file name="mysql4-upgrade-1.0.0-1.2.0.php" hash="5c756a617300d923a4bd09e0c5a4fb70"/><file name="mysql4-upgrade-1.2.0-1.2.1.php" hash="d768025b9a753c77ad124d9d90edb170"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="mturbo.xml" hash="6e20ef84ceeac5a82dc7c7ce6897f12d"/></dir><dir name="template"><dir name="mturbo"><dir name="preview"><file name="tree.phtml" hash="558e2da8b9c5584a94748116fd8249d0"/></dir><file name="demo.phtml" hash="da2b65990f1221d981b1c850f292dae6"/><file name="grid.phtml" hash="f11cea678bbc7230028cf5a870479ac8"/><file name="massaction.phtml" hash="c4ca58cbd05d564129d3c39d452c783e"/><file name="tabs.phtml" hash="1015f2e05a41bb7751b11036e48cbd9f"/><file name="version.phtml" hash="3f7c9b1d76d9f92050fde76c1f869fb4"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="default"><dir name="default"><dir name="layout"><file name="mturbo.xml" hash="679c071acb59fa8a28251acd25738a9b"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Artio_MTurbo.xml" hash="4de5464bc12f3c0702d2c36931bda64d"/></dir></target><target name="magelocale"><dir name="en_US"><file name="Artio_MTurbo.csv" hash="7d2c0ce261450f457be5ab6f61dc5243"/></dir><dir name="es_ES"><file name="Artio_MTurbo.csv" hash="3ff15deb0ae0b1251a3670699453665d"/></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="js"><file name="mturbo.js" hash="a5dcd5db6565b2b01753f4d05d9e6e73"/></dir></dir></dir><dir name="default"><dir name="default"><dir name="js"><file name="mturbo.js" hash="a5dcd5db6565b2b01753f4d05d9e6e73"/></dir></dir></dir></dir></target></contents>
20
  <compatible/>
21
  <dependencies/>
22
  </package>
skin/frontend/base/default/js/mturbo.js ADDED
@@ -0,0 +1,81 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var mturboloader = {
2
+
3
+ url: '',
4
+ blocks: '',
5
+ complete: false,
6
+ cartLink: false,
7
+ blocksContents: new Array(),
8
+
9
+ addBlockRequest: function(blockIdentifier) {
10
+ if (mturboloader.blocks=='') {
11
+ mturboloader.blocks = 'identifier[]=' + blockIdentifier;
12
+ } else {
13
+ mturboloader.blocks = mturboloader.blocks + '&identifier[]=' + blockIdentifier;
14
+ }
15
+ },
16
+
17
+ getBlock: function (blockIdentifier) {
18
+ return mturboloader.blocksContents[blockIdentifier].replace(/&amp;MTURBO!/g, "&");
19
+ },
20
+
21
+ loadBlocks: function(url, referer) {
22
+ url = url+'?'+this.blocks+'&referer='+referer;
23
+ new Ajax.Request(url, {
24
+ method: "get",
25
+ onSuccess:
26
+ function(transport) {
27
+
28
+ if (window.DOMParser) {
29
+ parser=new DOMParser();
30
+ xmlDoc=parser.parseFromString(transport.responseText, "text/xml");
31
+ }
32
+ else // Internet Explorer
33
+ {
34
+ xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
35
+ xmlDoc.async="false";
36
+ xmlDoc.loadXML(transport.responseText);
37
+ }
38
+
39
+ var i;
40
+ var blocks = xmlDoc.childNodes[0].childNodes;
41
+ for (i=0; i<blocks.length; i++) {
42
+
43
+ var name = blocks[i].getAttribute('name');
44
+ if (name!='') {
45
+ try {
46
+
47
+ // Gecko-based browsers, Safari, Opera.
48
+ mturboloader.blocksContents[name] = (new XMLSerializer()).serializeToString(blocks[i]);
49
+ }
50
+ catch (e) {
51
+ try {
52
+ // Internet Explorer
53
+ mturboloader.blocksContents[name] = blocks[i].xml;
54
+ }
55
+ catch (e)
56
+ {}
57
+ }
58
+ }
59
+ }
60
+
61
+ mturboloader.complete = true;
62
+ setTimeout('updateCartLink()', 100);
63
+ }
64
+ });
65
+ }
66
+
67
+ }
68
+ function updateCartLink() {
69
+ var re = new RegExp('checkout/cart/$');
70
+ var links = document.getElementsByTagName('a');
71
+ for (var i=0; i<links.length; i++) {
72
+ if (re.exec(links[i].href)) {
73
+ if (mturboloader.blocksContents['cartlink'])
74
+ links[i].innerHTML = mturboloader.blocksContents['cartlink'];
75
+ else {
76
+ setTimeout('updateCartLink()', 100);
77
+ return;
78
+ }
79
+ }
80
+ }
81
+ }