<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; WSH: Как прервать работу скрипта внутри ScriptControl?]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=6539&amp;type=atom" />
	<updated>2011-12-31T05:09:17Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=6539</id>
		<entry>
			<title type="html"><![CDATA[Re: WSH: Как прервать работу скрипта внутри ScriptControl?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=55189#p55189" />
			<content type="html"><![CDATA[<p>Коллега <strong>Xameleon</strong> предложил такое решение для VBS:<br /></p><div class="codebox"><pre><code>    Quit : function () {if (SC.Language==&quot;VBScript&quot;) 
SC.ExecuteStatement(&quot;On Error Goto 0: Err.Raise 1&quot;);},</code></pre></div>]]></content>
			<author>
				<name><![CDATA[JSmаn]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24434</uri>
			</author>
			<updated>2011-12-31T05:09:17Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=55189#p55189</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: Как прервать работу скрипта внутри ScriptControl?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=54850#p54850" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>JSman пишет:</cite><blockquote><p><strong>Spy00000</strong>, а что касается версии для vbs, достаточно ли просто сделать аналогичную вставку &quot;On Error Goto 0&quot; до &quot;WScript.Quit&quot; для корректной работы?</p></blockquote></div><p>Я думаю - да, <strong>НО</strong> я на VBS почти не пишу, в основном готовые куски кода в WSH вставляю, чтобы на JS не переписывать. Так что могу ошибаться.</p>]]></content>
			<author>
				<name><![CDATA[Spy00000]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27060</uri>
			</author>
			<updated>2011-12-22T13:44:21Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=54850#p54850</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: Как прервать работу скрипта внутри ScriptControl?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=54849#p54849" />
			<content type="html"><![CDATA[<p><strong>Spy00000</strong>, а что касается версии для vbs, достаточно ли просто сделать аналогичную вставку &quot;On Error Goto 0&quot; до &quot;WScript.Quit&quot; для корректной работы?</p>]]></content>
			<author>
				<name><![CDATA[JSmаn]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24434</uri>
			</author>
			<updated>2011-12-22T13:13:36Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=54849#p54849</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: Как прервать работу скрипта внутри ScriptControl?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=54636#p54636" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Rumata пишет:</cite><blockquote><p>У меня два вопроса. </p><p>1. Может быть стоит подумать в сторону Run, Exec внешних скриптов? Тогда не надо будет ломать голову над тем как безболезненно выйти из дочернего процесса при этом сохранив работоспособность родительского. А эту тему и код, написанный по случаю использовать для других нужд.?</p><p>2. По теме наваял эдакий класс, который суть обертка вокруг вызова методов ScriptControl. Фактически, ООП-вариация первоначального кода коллеги <strong>JSman</strong>. Делиться?</p></blockquote></div><p>Начну со второго вопроса.<br />2. Если есть в нем какой-то определенный смысл, то, конечно, делитесь. Я думаю, что это здравая идея представить это отдельным классом. Но может быть до использования класса еще подумаем над корректной поддержкой работы методов WScript (ConnectObject, CreateObject и др.), для того чтобы не пришлось сильно коверкать его структуру в процессе разработки?</p><p>1. Что касается первого вопроса, то буду рад услышать Ваши мысли вот в <a href="http://forum.script-coding.com/viewtopic.php?id=6553">этой теме</a>.</p>]]></content>
			<author>
				<name><![CDATA[JSmаn]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24434</uri>
			</author>
			<updated>2011-12-15T07:19:50Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=54636#p54636</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: Как прервать работу скрипта внутри ScriptControl?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=54635#p54635" />
			<content type="html"><![CDATA[<p>Написал вот такой код для JS. Вроде бы все корректно. WScript.Quit() работает даже при использовании обработчика ошибок try-catch.<br /></p><div class="codebox"><pre><code>var SC = WScript.CreateObject(&quot;ScriptControl&quot;);
 
var _WScript = {
    Name : WScript.Name,
    FullName : WScript.FullName, 
    Version : WScript.Version,
    BuildVersion : WScript.BuildVersion,
    ScriptName : WScript.ScriptName, 
    ScriptFullName : WScript.ScriptFullName, 
    StdIn : WScript.StdIn, 
    StdOut : WScript.StdOut, 
    StrErr : WScript.StdErr, 
    Arguments : {},
    Interactive : WScript.Interactive,
 
    Sleep : function (m) {return WScript.Sleep(m)},
    Quit : function ( num ) {_WScript.Host.codeerr=num;_WScript.Host.mustQuit=true;throw new Error( num, &#039;Quit&#039;)},
    Echo : function (Msg) 
    {
        WScript.Echo(Msg)
    },
    CreateObject : function (ProgId, Pref) {return WScript.CreateObject(ProgId, Pref);},
    ConnectObject : function (Moniker) {return WScript.ConnectObject(Moniker);}, 
    DisconnectObject : function (a) {return WScript.DisconnectObject(a)}, 
    GetObject : function (Moniker) {return WScript.GetObject(Moniker);}
}
 
function Test( Code ){
  try{
    _WScript.Host = SC.CodeObject;
    Code = &#039;host=this;mustQuit=false;codeerr=0; function quit(){if (mustQuit){throw new Error(host.codeerr,&quot;Quit&quot;)}}\n&#039;+ Code.replace(/(catch *\([\$a-z_0-9]+[ \t\r\n]*\)[ \t\r\n]*\{)/gi, &quot;$1quit();&quot;);   
SC.AddCode(Code);
  }catch( E ){
    if( E.description == &#039;Quit&#039;)
      WScript.Echo(&#039;Exit code: &#039; + E.number);
  }
}

SC.Language = &quot;JScript&quot;;
SC.AddObject(&quot;WScript&quot;, _WScript);
SC.AddObject(&quot;MsgBox&quot;, _WScript.Echo);
  
WScript.Echo(&#039;\n\nTest JS 1&#039;);

Test( &#039;WScript.Echo( 123 ); \n try{try {WScript.Quit();} catch (e) {};}catch(q){}; \nWScript.Echo( &quot;12345 (must not see this)&quot;);&#039;);
 
WScript.Echo(&#039;\n\nTest JS 2&#039;);
 
Test( &#039; WScript.Echo( 123 ); \n WScript.Quit( 5 ); \nWScript.Echo( &quot;12345 (must not see this)&quot;);&#039;);
 
WScript.Echo(&#039;\nEnd&#039;);</code></pre></div>]]></content>
			<author>
				<name><![CDATA[JSmаn]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24434</uri>
			</author>
			<updated>2011-12-15T07:11:41Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=54635#p54635</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: Как прервать работу скрипта внутри ScriptControl?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=54606#p54606" />
			<content type="html"><![CDATA[<p>Коллеги, в общем, предлагаю подытожить относительно выхода из ScriptControl, чтобы добавить что-то свежее и полезное в коллекцию, а тему, связанную с удаленным управлением, предлагаю обсудить <a href="http://forum.script-coding.com/viewtopic.php?id=6553">тут</a>.</p>]]></content>
			<author>
				<name><![CDATA[JSmаn]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24434</uri>
			</author>
			<updated>2011-12-14T10:28:12Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=54606#p54606</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: Как прервать работу скрипта внутри ScriptControl?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=54572#p54572" />
			<content type="html"><![CDATA[<p>У меня два вопроса. </p><p>1. Может быть стоит подумать в сторону Run, Exec внешних скриптов? Тогда не надо будет ломать голову над тем как безболезненно выйти из дочернего процесса при этом сохранив работоспособность родительского. А эту тему и код, написанный по случаю использовать для других нужд.?</p><p>2. По теме наваял эдакий класс, который суть обертка вокруг вызова методов ScriptControl. Фактически, ООП-вариация первоначального кода коллеги <strong>JSman</strong>. Делиться?</p>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2011-12-13T17:15:43Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=54572#p54572</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: Как прервать работу скрипта внутри ScriptControl?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=54564#p54564" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>JSman пишет:</cite><blockquote><p>2) если язык используется JS, то написать паттерны, позволяющие осуществить выход из кода в нужно точке. Пример такого паттерна:<br /></p><div class="codebox"><pre><code>(function(){
MY-CODE
}).call(this);</code></pre></div><p>Выход реализуется ключевым словом return.</p></blockquote></div><p>Только если код будет вида<br /></p><div class="codebox"><pre><code>(function(){
...
  function MyFunc(){
    ...
    WScript.Quit();
    ...
  }
...
}).call(this);</code></pre></div><p>замена &quot;WScript.Quit();&quot; на &quot;return;&quot; приведёт к выходу только из внутренней функции.</p>]]></content>
			<author>
				<name><![CDATA[Spy00000]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27060</uri>
			</author>
			<updated>2011-12-13T15:19:06Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=54564#p54564</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: Как прервать работу скрипта внутри ScriptControl?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=54548#p54548" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>JSman пишет:</cite><blockquote><p>Коллеги, может быть мне стоит создать отдельную тему с полным описанием?</p></blockquote></div><p>Отчего нет?!</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2011-12-13T08:18:29Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=54548#p54548</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: Как прервать работу скрипта внутри ScriptControl?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=54547#p54547" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Rumata пишет:</cite><blockquote><p>Насколько удаленный сервер безопасен? Известно, что нельзя доверять данным, пришедшим извне, тем более по широкодоступным средствам связи.</p></blockquote></div><p>В настоящий момент пока это неважно. Сервер управляется мной, доступ к нему имею только я. </p><div class="quotebox"><cite>Rumata пишет:</cite><blockquote><p>К чему необходимость в такой детализации части кода, вызвавшего ошибку? Так ли важно, что ошибка произошла в 24 символе 143 строки, если ошибка уже произошла и надо проверять логику алгоритма, исправлять код программы и снова тестировать?</p></blockquote></div><p>Возможно Вы правы, исключения можно предусмотреть в коде и логировать их с последующей отправкой на сервер. </p><div class="quotebox"><cite>Rumata пишет:</cite><blockquote><p>В данном случае, как мне кажется, надо искать не обходные способы выхода из дочернего процесса, а разработать спецификацию для скриптов, которые будут выполняться под ScriptControl. В этой спецификации стоит особо оговорить способ завершения исполняемого скрипта (обычный выход, выход с возвратом кода завершения. аварийный выход с учетом завершения по прерыванию).</p></blockquote></div><p>Окей, получается, что предварительно, перед использованием, код необходимо <br />1) проверить на наличие объекта WScript (исключением является WScript.Sleep()),<br />2) если язык используется JS, то написать паттерны, позволяющие осуществить выход из кода в нужно точке. Пример такого паттерна:<br /></p><div class="codebox"><pre><code>(function(){
MY-CODE
}).call(this);</code></pre></div><p>Выход реализуется ключевым словом return.</p><p>А стоит ли включать в код заранее подготовленные функции типа Download(Url, Destination), Run(Cmd)? Ведь был бы удобный функционал типа Run(Download(www.site.ru/InstallPluIn.exe, &quot;%TMP%\123.exe&quot;))</p><p>Еще вопрос: В случае запуска скриптов отдельным процессом, я предусматриваю использование <a href="http://forum.script-coding.com/viewtopic.php?pid=46013#p46013">GlobalObject</a> для того чтобы в режиме реального времени принимать логи другого процессе. Допустимо ли это? Не нарушит ли это стабильность работы приложения?<br />&nbsp; <br />Коллеги, может быть мне стоит создать отдельную тему с полным описанием?</p>]]></content>
			<author>
				<name><![CDATA[JSmаn]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24434</uri>
			</author>
			<updated>2011-12-13T08:01:36Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=54547#p54547</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: Как прервать работу скрипта внутри ScriptControl?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=54544#p54544" />
			<content type="html"><![CDATA[<p>Решил перечитать тему внимательнее. Некоторые моменты показались спорными. </p><div class="quotebox"><cite>JSman пишет:</cite><blockquote><p>Клиентская часть ... обращается по 80 порту к интернет-ресурсу, который ... выдает скриптовый код на JS либо VBS, который необходимо выполнить на машине.</p></blockquote></div><p>Насколько удаленный сервер безопасен? Известно, что нельзя доверять данным, пришедшим извне, тем более по широкодоступным средствам связи. </p><div class="quotebox"><cite>JSman пишет:</cite><blockquote><p>есть желание получать отчеты об ошибках вплоть до строки и столбца скрипта</p></blockquote></div><p>К чему необходимость в такой детализации части кода, вызвавшего ошибку? Так ли важно, что ошибка произошла в 24 символе 143 строки, если ошибка уже произошла и надо проверять логику алгоритма, исправлять код программы и снова тестировать? </p><div class="quotebox"><cite>JSman пишет:</cite><blockquote><p>Пока не получилось осуществить выход из дочернего скрипта</p></blockquote></div><p>В данном случае, как мне кажется, надо искать не обходные способы выхода из дочернего процесса, а разработать спецификацию для скриптов, которые будут выполняться под ScriptControl. В этой спецификации стоит особо оговорить способ завершения исполняемого скрипта (обычный выход, выход с возвратом кода завершения. аварийный выход с учетом завершения по прерыванию). И естественно в дочернем скрипте запретить команды вида WScript.Quit. И с исключениями надо быть очень осторожным - брошенные исключения ведут себя по-разному в зависимости от контекста исполнения - основная программа или подпрограмма. В большинстве случаев программные исключения не отлавливаемые либо не идентифицируемые.</p>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2011-12-12T23:17:53Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=54544#p54544</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: Как прервать работу скрипта внутри ScriptControl?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=54489#p54489" />
			<content type="html"><![CDATA[<p>Точно. Использование break&nbsp; допустимо вне функций.</p>]]></content>
			<author>
				<name><![CDATA[JSmаn]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24434</uri>
			</author>
			<updated>2011-12-12T04:57:06Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=54489#p54489</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: Как прервать работу скрипта внутри ScriptControl?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=54488#p54488" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>
quit:{
  function test_func(){
    WScript.Echo( &#039;test str 1&#039;);
    break quit;
    WScript.Echo( &#039;test str 2 (must not see this)&#039;);
  }
  WScript.Echo( &#039;str 1&#039;);
  test_func();
//  break quit;
  WScript.Echo( &#039;str 2 (must not see this)&#039;);
}</code></pre></div><p>У меня на такую конструкцию ругается:<br />&quot;1.js(4, 15) Ошибка компиляции Microsoft JScript: Метка не найдена&quot;</p><p>Т.е. если WScript.Quit будет внутри функции - то скрипт просто не запустится.</p>]]></content>
			<author>
				<name><![CDATA[Spy00000]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27060</uri>
			</author>
			<updated>2011-12-12T04:25:19Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=54488#p54488</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: Как прервать работу скрипта внутри ScriptControl?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=54487#p54487" />
			<content type="html"><![CDATA[<p>Для JS проблему решил использованием меток. Думаю, аналогичным подходом можно решить проблему для VBS.<br /></p><div class="codebox"><pre><code>this.FSO = fso = WScript.CreateObject(&quot;Scripting.FileSystemObject&quot;);

function LogError(e)
{
    WScript.Echo(e);
}

function isFile(Path)
{
    return fso.FileExists(Path);
}

function ReadTextFile(Path)
{
    if (!Path) return &quot;&quot;;
    if (!isFile(Path)) return &quot;&quot;;
    if (FSO.GetFile(Path).Size==0) return &quot;&quot;;

    try 
    {
        var Stream = FSO.OpenTextFile(Path, 1, 0),
        Result = Stream.ReadAll();
        Stream.Close();
        return Result;
    }
    catch (e) {LogError([&quot;ReadTextFile&quot;, Path].join(&quot;\t&quot;))};
}


this.SC = WScript.CreateObject(&quot;ScriptControl&quot;);

var _WScript = {
    Name : WScript.Name,
    FullName : WScript.FullName, 
    Version : WScript.Version,
    BuildVersion : WScript.BuildVersion,
    ScriptName : WScript.ScriptName, 
    ScriptFullName : WScript.ScriptFullName, 
    StdIn : WScript.StdIn, 
    StdOut : WScript.StdOut, 
    StrErr : WScript.StdErr, 
    Arguments : {},
    Interactive : WScript.Interactive,
    
    Sleep : function (m) {return WScript.Sleep(m)},
    Quit : function () {},
    Echo : function (Msg) 
    {
        WScript.Echo(Msg)
    },
    CreateObject : function (ProgId, Pref) {return WScript.CreateObject(ProgId, Pref);},
    ConnectObject : function (Moniker) {return WScript.ConnectObject(Moniker);}, 
    DisconnectObject : function (a) {return WScript.DisconnectObject(a)}, 
    GetObject : function (Moniker) {return WScript.GetObject(Moniker);}
}

var SC = WScript.CreateObject(&quot;ScriptControl&quot;);

if (WScript.Arguments.Length==0) WScript.Quit(); var Code = ReadTextFile(WScript.Arguments.Item(0));
//var Code = &quot;MsgBox(123);\n WScript.Quit();\nWScript.Echo(123); &quot;;

SC.Language = &quot;JScript&quot;;
SC.Reset();
SC.AddObject(&quot;WScript&quot;, _WScript);
SC.AddObject(&quot;MsgBox&quot;, _WScript.Echo);

if (SC.Language==&quot;JScript&quot;) 
{
    Code = &quot;quit:{&quot;+Code.replace(/WScript\.Quit\([^)]*\)/gi, &quot; break quit;&quot;)+&quot;}&quot;;
    Code = Code.replace(/WScript.CreateObject\(([^,)]+),([^)]+)\)/gi, &quot;new ActiveXObject($1)&quot;);
}

WScript.Echo(Code);

try
{
SC.AddCode(Code);
}
catch (e) 
{
    if (SC.Error)
    WScript.Echo([Code, SC.Error.Line, SC.Error.Column, SC.Error.Description].join(&quot;\r\n&quot;));
}</code></pre></div><p>Кстати, методы WScript.CreateObject, WScript.ConnectObject(Moniker), WScript.DisconnectObject(a), WScript.GetObject(Moniker) могут вести себя некорректно. Так, например, если подключиться к событиям объекта через WScript.CreateObject с указанием префикса, то события отлавливаться не будут. </p><div class="quotebox"><cite>Rumata пишет:</cite><blockquote><p>Или я не до конца понял задачу?</p></blockquote></div><p>Смысл задачи в том, как завершить работу ScriptControl.</p>]]></content>
			<author>
				<name><![CDATA[JSmаn]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24434</uri>
			</author>
			<updated>2011-12-12T04:01:23Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=54487#p54487</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: Как прервать работу скрипта внутри ScriptControl?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=54479#p54479" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Rumata пишет:</cite><blockquote><p>Оставьте только один тест и Вы увидите, что исключение, брошенное в Quit не доходит до обработчика.</p></blockquote></div><p>Если запускаемый скрипт на JS написан, тогда до внешнего скрипта исключение доходит. Из VBS - нет, это я видел. Имхо, главное - что внутренний скрипт прерывается в любом месте и выходит во внешний. Мне интересней - можно ли для VBS в создаваемый WScript.Quit вставить &quot;On Error Goto 0&quot; так, чтобы он на внутренний VBS действовал. У меня пока не получилось.</p>]]></content>
			<author>
				<name><![CDATA[Spy00000]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27060</uri>
			</author>
			<updated>2011-12-11T17:53:59Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=54479#p54479</id>
		</entry>
</feed>
