<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>29803</bug_id>
          
          <creation_ts>2009-09-28 04:46:56 -0700</creation_ts>
          <short_desc>[Qt] QWebHistory and QWebPage autotests crash</short_desc>
          <delta_ts>2009-11-11 02:12:30 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Qt</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>29867</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Jędrzej Nowacki">jedrzej.nowacki</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eric</cc>
    
    <cc>hausmann</cc>
    
    <cc>jedrzej.nowacki</cc>
    
    <cc>kenneth</cc>
    
    <cc>zecke</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>150485</commentid>
    <comment_count>0</comment_count>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2009-09-28 04:46:56 -0700</bug_when>
    <thetext>Autotest saveAndRestore_crash_2 crashed because WebCore::Page::m_mainFrame was uninitialized. It means that mainFrame hadn&apos;t been created before Page::goToItem was called.

backtrace:
#0  0xb75b1e6a in WebCore::FrameLoader::stopAllLoaders(WebCore::DatabasePolicy) () from /home/nierob/dev/webkit/WebKitBuild/Release/lib/libQtWebKit.so.4
#1  0xb761e028 in WebCore::Page::goToItem(WebCore::HistoryItem*, WebCore::FrameLoadType) () from /home/nierob/dev/webkit/WebKitBuild/Release/lib/libQtWebKit.so.4
#2  0xb77bef00 in QWebHistory::goToItem(QWebHistoryItem const&amp;) () from /home/nierob/dev/webkit/WebKitBuild/Release/lib/libQtWebKit.so.4
#3  0xb77bf0c5 in QWebHistory::restoreState(QByteArray const&amp;) () from /home/nierob/dev/webkit/WebKitBuild/Release/lib/libQtWebKit.so.4
#4  0x0804ad8e in tst_QWebHistory::saveAndRestore_crash_2() ()
#5  0x0804df6a in tst_QWebHistory::qt_metacall(QMetaObject::Call, int, void**) ()
#6  0xb613bb8f in QMetaObject::metacall (object=0xbffff240, cl=QMetaObject::InvokeMetaMethod, idx=20, argv=0xbfffe5f0) at /home/nierob/dev/qt/src/corelib/kernel/qmetaobject.cpp:237
#7  0xb613f377 in QMetaMethod::invoke (this=0xbfffe974, object=0xbffff240, connectionType=Qt::DirectConnection, returnValue=..., val0=..., val1=..., val2=..., val3=..., val4=..., val5=..., val6=..., val7=..., val8=..., val9=...)
    at /home/nierob/dev/qt/src/corelib/kernel/qmetaobject.cpp:1533
#8  0xb613fb59 in QMetaObject::invokeMethod (obj=0xbffff240, member=0x8158da8 &quot;saveAndRestore_crash_2&quot;, type=Qt::DirectConnection, ret=..., val0=..., val1=..., val2=..., val3=..., val4=..., val5=..., val6=..., val7=..., val8=..., val9=...)
    at /home/nierob/dev/qt/src/corelib/kernel/qmetaobject.cpp:1113
#9  0xb706d776 in QMetaObject::invokeMethod (obj=0xbffff240, member=0x8158da8 &quot;saveAndRestore_crash_2&quot;, type=Qt::DirectConnection, val0=..., val1=..., val2=..., val3=..., val4=..., val5=..., val6=..., val7=..., val8=..., val9=...)
    at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs.h:396
#10 0xb7067f78 in qInvokeTestMethodDataEntry (slot=0x8158da8 &quot;saveAndRestore_crash_2&quot;) at qtestcase.cpp:1212
#11 0xb7069452 in qInvokeTestMethod (slotName=0x804f29b &quot;saveAndRestore_crash_2()&quot;, data=0x0) at qtestcase.cpp:1307
#12 0xb7069c6e in qInvokeTestMethods (testObject=0xbffff240) at qtestcase.cpp:1462
#13 0xb706acc3 in QTest::qExec (testObject=0xbffff240, argc=1, argv=0xbffff314) at qtestcase.cpp:1661
#14 0x0804a949 in main ()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150487</commentid>
    <comment_count>1</comment_count>
      <attachid>40227</attachid>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2009-09-28 04:57:32 -0700</bug_when>
    <thetext>Created attachment 40227
create mainframe if needed

I&apos;m not sure if it is the best solution. m_mainFrame can&apos;t be created in QWebPage constructor (it should be a way to connect a frameCreated signal). 
In the patch, QWebPage::history() and QWebPage::currentFrame() call QWebPagePrivate::createMainFrame() as a side effect. It is rather bad, why history need a frame to work? Maybe it is better to modify WebCore::Page class instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150488</commentid>
    <comment_count>2</comment_count>
      <attachid>40227</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-09-28 05:28:13 -0700</bug_when>
    <thetext>Comment on attachment 40227
create mainframe if needed

Looks good to me, but there&apos;s a ChangeLog entry missing and the position of the &apos;*&apos; next to FrameLoader* loader is wrong.

Can you fix these and re-upload? Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150852</commentid>
    <comment_count>3</comment_count>
      <attachid>40293</attachid>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2009-09-29 03:59:24 -0700</bug_when>
    <thetext>Created attachment 40293
New patch

Crashes are not only in QWebHistory but also in QWebPage. The patch cover most of them (all produced by uncreated mainFrame). Autotest was added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150853</commentid>
    <comment_count>4</comment_count>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2009-09-29 04:00:40 -0700</bug_when>
    <thetext>Uncreated mainFrame influence QWebPage autotest too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150894</commentid>
    <comment_count>5</comment_count>
      <attachid>40293</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-09-29 06:49:24 -0700</bug_when>
    <thetext>Comment on attachment 40293
New patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150895</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-09-29 06:50:27 -0700</bug_when>
    <thetext>Committed r48869: &lt;http://trac.webkit.org/changeset/48869&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150897</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-09-29 07:07:28 -0700</bug_when>
    <thetext>Sorry, wrong changeset. The fix was landed in 48871</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151126</commentid>
    <comment_count>8</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-09-29 17:57:54 -0700</bug_when>
    <thetext> QWebPage::~QWebPage()
 {
+    d-&gt;createMainFrame();

Why does it make sense to create a main frame in the destructor? Shouldn&apos;t there instead be a test to see if it was not created in the following code?

At least I think it deserves a comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151180</commentid>
    <comment_count>9</comment_count>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2009-09-30 00:47:25 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt;  QWebPage::~QWebPage()
&gt;  {
&gt; +    d-&gt;createMainFrame();
&gt; 
&gt; Why does it make sense to create a main frame in the destructor? Shouldn&apos;t
&gt; there instead be a test to see if it was not created in the following code?
&gt; 
&gt; At least I think it deserves a comment.

Actually d-&gt;createMainFrame() is a test, it test if mainFrame was created. MainFrame should be created as soon as possible, but not in constructor because of signals. WebCore::Page really depends on mainFrame and use it in different places (in destructor too). 

Maybe we should move all checks to WebCore::Page, but:
- the change will affect more platforms, not only Qt
- it will be much more difficult to control mainFrame creation time. If Page automagically will create frame how to emit signal?
In general it is possible but what we can gain with it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151226</commentid>
    <comment_count>10</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-09-30 05:31:41 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt;  QWebPage::~QWebPage()
&gt; &gt;  {
&gt; &gt; +    d-&gt;createMainFrame();
&gt; &gt; 
&gt; &gt; Why does it make sense to create a main frame in the destructor? Shouldn&apos;t
&gt; &gt; there instead be a test to see if it was not created in the following code?
&gt; &gt; 
&gt; &gt; At least I think it deserves a comment.
&gt; 
&gt; Actually d-&gt;createMainFrame() is a test, it test if mainFrame was created.
&gt; MainFrame should be created as soon as possible, but not in constructor because
&gt; of signals. WebCore::Page really depends on mainFrame and use it in different
&gt; places (in destructor too). 
&gt; 
&gt; Maybe we should move all checks to WebCore::Page, but:
&gt; - the change will affect more platforms, not only Qt
&gt; - it will be much more difficult to control mainFrame creation time. If Page
&gt; automagically will create frame how to emit signal?
&gt; In general it is possible but what we can gain with it?

I think we should remove the creation from the QWebPage destructor and add just that one single if in the Page destructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151239</commentid>
    <comment_count>11</comment_count>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2009-09-30 06:58:19 -0700</bug_when>
    <thetext>&gt; I think we should remove the creation from the QWebPage destructor and add just
&gt; that one single if in the Page destructor.

I don&apos;t like this idea. It seems to be only partial solution which could bit as later. 

I will prepare prototype of WebCore::Page with checking for mainFrame - just crash blockers. We will see how it looks like :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151242</commentid>
    <comment_count>12</comment_count>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2009-09-30 07:34:12 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; &gt; I think we should remove the creation from the QWebPage destructor and add just
&gt; &gt; that one single if in the Page destructor.
&gt; 
&gt; I don&apos;t like this idea. It seems to be only partial solution which could bit as
&gt; later. 
&gt; 
&gt; I will prepare prototype of WebCore::Page with checking for mainFrame - just
&gt; crash blockers. We will see how it looks like :-)

No, that was bad idea too. There is problem, when actually create frame? When it is needed and when it is only a strange function call? There is no function called creatMainFrame in public API. So developer can&apos;t actually create the frame manually. 

Aghr, it looks like design issue. It is a bit similar to our discussion about QWebInspector...

Ok, I&apos;ll prepare patch only for ~Page...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151500</commentid>
    <comment_count>13</comment_count>
      <attachid>40432</attachid>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2009-10-01 04:05:32 -0700</bug_when>
    <thetext>Created attachment 40432
optimization

add some checks to QWebPage and Page to avoid mainframe construction in QWbPage destructor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151938</commentid>
    <comment_count>14</comment_count>
      <attachid>40432</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-02 12:37:33 -0700</bug_when>
    <thetext>Comment on attachment 40432
optimization

Why:
     m_mainFrame-&gt;setView(0);
 172     if (m_mainFrame)
 173         m_mainFrame-&gt;setView(0);
That needs to be explained in the ChangeLog and possibly a comment.

Also, this needs a test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152264</commentid>
    <comment_count>15</comment_count>
      <attachid>40624</attachid>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2009-10-05 04:41:40 -0700</bug_when>
    <thetext>Created attachment 40624
optimization+comment

Comment was added. This mean that we force comments in source code? Cool, I would love to see more comments in webkit :-)
Changelog was changed. I hope it is better.
Autotest is not needed. This case is covered by tst_QWebPage::crashTests_LazyInitializationOfMainFrame()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152324</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-05 09:30:08 -0700</bug_when>
    <thetext>There is a patch posted for review on this closed bug.  Should be the bug be re-opened or the review flags cleared?  It looks from the comments like this should be re-opened.  Opening...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153038</commentid>
    <comment_count>17</comment_count>
      <attachid>40624</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-10-07 07:52:53 -0700</bug_when>
    <thetext>Comment on attachment 40624
optimization+comment

Jedrzej is looking into a different solution right now, that will hopefully allow us to remove the lazy initialization of the main frame (as per WebCore::Page contract) but still preserve the createFramed() signal behaviour.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154326</commentid>
    <comment_count>18</comment_count>
      <attachid>40293</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-10-13 07:10:19 -0700</bug_when>
    <thetext>Comment on attachment 40293
New patch

Clearing review flag as this patch has been landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156842</commentid>
    <comment_count>19</comment_count>
      <attachid>41649</attachid>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2009-10-22 02:42:55 -0700</bug_when>
    <thetext>Created attachment 41649
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156854</commentid>
    <comment_count>20</comment_count>
      <attachid>41649</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-10-22 04:51:58 -0700</bug_when>
    <thetext>Comment on attachment 41649
patch


&gt;      frameLoaderClient-&gt;setFrame(qframe, frame);
&gt; -
&gt;      frame-&gt;init();
&gt; +    // Delay the signal QWebPage::frameCreated(QWebFrame*), because the QwebPage might be not
&gt; +    // fully created (no way to connect to the signal).

Whitespace, spelling... QwebPage vs. QWebPage..



&gt; +        Emission of the frameCreated signal was moved to the QWebFrame::init()
&gt; +        and delayed.

I didn&apos;t read most of the bug report. The ChangeLog should answer the question why? The QWebPage pretty much knows when the mainFrame got created? Why do we need to delay this signal?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156897</commentid>
    <comment_count>21</comment_count>
      <attachid>41660</attachid>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2009-10-22 08:53:24 -0700</bug_when>
    <thetext>Created attachment 41660
patch next version

Patch&apos;s changelog :-)
- I corrected spelling.
- Changelog is even more verbose now.
- Coding style:
$ WebKitTools/Scripts/check-webkit-style --git-commit=HEAD~1
Done processing WebKit/qt/tests/qwebpage/tst_qwebpage.cpp
Done processing WebKit/qt/Api/qwebframe.cpp
Done processing WebKit/qt/Api/qwebpage.cpp
Done processing WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp
Done processing WebKit/qt/Api/qwebframe_p.h
Done processing WebKit/qt/Api/qwebpage.h
Done processing WebKit/qt/Api/qwebframe.h
Total errors found: 0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156900</commentid>
    <comment_count>22</comment_count>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2009-10-22 09:00:06 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; I didn&apos;t read most of the bug report. 
Why? How can you review the patch if you don&apos;t know the background?

Thanks for feedback even if it was &quot;ugly&quot; r- :-).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157417</commentid>
    <comment_count>23</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-10-23 20:52:47 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #20)
&gt; &gt; I didn&apos;t read most of the bug report. 
&gt; Why? How can you review the patch if you don&apos;t know the background?
&gt; 
&gt; Thanks for feedback even if it was &quot;ugly&quot; r- :-).

I don&apos;t think this comment is appropriate. Enforcing the coding style is one of the tasks of reviewers and you failed repetedly on it. In general we tend to get the form right before looking into content. It is just how it is...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157420</commentid>
    <comment_count>24</comment_count>
      <attachid>41660</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-10-23 21:09:12 -0700</bug_when>
    <thetext>Comment on attachment 41660
patch next version

&gt; diff --git a/WebKit/qt/Api/qwebframe.cpp b/WebKit/qt/Api/qwebframe.cpp
&gt; index 45dbfba..d5b5f9e 100644
&gt; --- a/WebKit/qt/Api/qwebframe.cpp
&gt; +++ b/WebKit/qt/Api/qwebframe.cpp
&gt; @@ -41,6 +41,7 @@
&gt;  #include &quot;JSDOMWindowBase.h&quot;
&gt;  #include &quot;JSLock.h&quot;
&gt;  #include &quot;JSObject.h&quot;
&gt; +#include &quot;moc_qwebframe.cpp&quot;


No... can you show me any other file doing that? We tend to put it at the bottom...below anything else..


&gt;  #include &quot;NodeList.h&quot;
&gt;  #include &quot;Page.h&quot;
&gt;  #include &quot;PlatformMouseEvent.h&quot;
&gt; @@ -207,15 +208,21 @@ QWebFrameData::QWebFrameData(WebCore::Page* parentPage, WebCore::Frame* parentFr
&gt;  void QWebFramePrivate::init(QWebFrame *qframe, QWebFrameData *frameData)
&gt;  {
&gt;      q = qframe;
&gt; -

still a bogus whitespace change...



&gt;      static WebCore::Frame* core(QWebFrame*);
&gt;      static QWebFrame* kit(WebCore::Frame*);
&gt; +    static QWebFrame* get(QWebFramePrivate* priv) { return priv-&gt;q; }
&gt; +    static QWebFramePrivate* get(QWebFrame* pub) { return pub-&gt;d; }
&gt;  

they are not used, there is no reason to have this in the patch.


&gt; --- a/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp
&gt; +++ b/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp
&gt; @@ -123,11 +123,14 @@ private slots:
&gt;      void inputMethods();
&gt;      void defaultTextEncoding();
&gt;      void errorPageExtension();
&gt; -
&gt;      void crashTests_LazyInitializationOfMainFrame();
&gt; -

why did you remove this space?


&gt; +void tst_QWebPage::frameCreatedSignal()
&gt; +{
&gt; +    // A MainFrame should be created before ~QWebPage because the WebCore::Page (the base classs)
&gt; +    // use the frame in the destructor.
&gt; +    QWebPage page;
&gt; +    bool sign = waitForSignal(&amp;page, SIGNAL(frameCreated(QWebFrame*)));
&gt; +    QVERIFY2(sign, &quot;A QWebFrame hasn&apos;t been created before ~QWebPage&quot;);
&gt; +}
&gt; +

One thing I don&apos;t like about this is the following.

if I change the test case above to do

QWebPage page;
page.load(&quot;&lt;script&gt;window.print()&lt;/script&gt;&quot;);
bool sign = waitForSi...

I will be likely to get the &quot;printRequested(QWebFrame*)&quot; before the frameCreated signal... which is making things worse...

I think the API contract should be changed to not emit frameCreated from the QWebPage c&apos;tor and that it is guranteed that the mainFrame() exists...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157761</commentid>
    <comment_count>25</comment_count>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2009-10-26 07:26:28 -0700</bug_when>
    <thetext>&gt; &gt;  #include &quot;NodeList.h&quot;
&gt; &gt;  #include &quot;Page.h&quot;
&gt; &gt;  #include &quot;PlatformMouseEvent.h&quot;
&gt; &gt; @@ -207,15 +208,21 @@ QWebFrameData::QWebFrameData(WebCore::Page* parentPage, WebCore::Frame* parentFr
&gt; &gt;  void QWebFramePrivate::init(QWebFrame *qframe, QWebFrameData *frameData)
&gt; &gt;  {
&gt; &gt;      q = qframe;
&gt; &gt; -
&gt;
&gt; still a bogus whitespace change...
[snap &amp; add]
&gt;
&gt; &gt; --- a/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp
&gt; &gt; +++ b/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp
&gt; &gt; @@ -123,11 +123,14 @@ private slots:
&gt; &gt;      void inputMethods();
&gt; &gt;      void defaultTextEncoding();
&gt; &gt;      void errorPageExtension();
&gt; &gt; -
&gt; &gt;      void crashTests_LazyInitializationOfMainFrame();
&gt; &gt; -
&gt;
&gt; why did you remove this space?
&lt;BadJoke&gt; I removed these lines to speed up compilation &lt;/BadJoke&gt;
I&apos;ve just removed an empty line... Why it is bad? Why the line should be there? Why you say it is a bogus change?
Really, the lines are meaningless and actually I think they are confusing, an empty lines should divide some logical blocks, but this isn&apos;t the case. Since I had to modify the part of source code I decided to reformat it.

&gt;
&gt;
&gt; &gt;      static WebCore::Frame* core(QWebFrame*);
&gt; &gt;      static QWebFrame* kit(WebCore::Frame*);
&gt; &gt; +    static QWebFrame* get(QWebFramePrivate* priv) { return priv-&gt;q; }
&gt; &gt; +    static QWebFramePrivate* get(QWebFrame* pub) { return pub-&gt;d; }
&gt; &gt;
&gt;
&gt; they are not used, there is no reason to have this in the patch.
These two standard function are harmless, I missed them in a point of time :-). I agree it is irrelevant for the patch.

&gt; One thing I don&apos;t like about this is the following.
&gt;
&gt; if I change the test case above to do
&gt;
&gt; QWebPage page;
&gt; page.load(&quot;&lt;script&gt;window.print()&lt;/script&gt;&quot;);
&gt; bool sign = waitForSi...
&gt;
&gt; I will be likely to get the &quot;printRequested(QWebFrame*)&quot; before the
&gt; frameCreated signal... which is making things worse...
&gt;
&gt; I think the API contract should be changed to not emit frameCreated from the
&gt; QWebPage c&apos;tor and that it is guranteed that the mainFrame() exists...
This is an awesome catch! Thanks. Because of that the solution is completely bad. The only workarounds I can find for the problem are based on MagicSignalRouter(tm) class or on some operation on the EventLoop. This would be evil and an overkill.
So I believe we should leave current solution. It is more readable and it will be easier to maintenance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157994</commentid>
    <comment_count>26</comment_count>
      <attachid>41660</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-26 16:09:41 -0700</bug_when>
    <thetext>Comment on attachment 41660
patch next version

Clearing cq? on this r-&apos;d patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158075</commentid>
    <comment_count>27</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-10-26 20:06:11 -0700</bug_when>
    <thetext>(In reply to comment #25)

(reordered for importance)

&gt; &gt; I think the API contract should be changed to not emit frameCreated from the
&gt; &gt; QWebPage c&apos;tor and that it is guranteed that the mainFrame() exists...
&gt; This is an awesome catch! Thanks. Because of that the solution is completely
&gt; bad. The only workarounds I can find for the problem are based on
&gt; MagicSignalRouter(tm) class or on some operation on the EventLoop. This would
&gt; be evil and an overkill.
&gt; So I believe we should leave current solution. It is more readable and it will
&gt; be easier to maintenance.

hehe, I like the killing of createMainFrame in your solution a lot. I will try to poke Simon once he is back from vacation.


&gt; &gt; why did you remove this space?
&gt; &lt;BadJoke&gt; I removed these lines to speed up compilation &lt;/BadJoke&gt;
&gt; I&apos;ve just removed an empty line... Why it is bad? Why the line should be there?
&gt; Why you say it is a bogus change?
&gt; Really, the lines are meaningless and actually I think they are confusing, an
&gt; empty lines should divide some logical blocks, but this isn&apos;t the case. Since I
&gt; had to modify the part of source code I decided to reformat it.

Right they are meaningless, why do you change them then? The main point is that you propose to fix a specific problem and when the patch contains unrelated things it gets harder to review. As a reviewer you will have to ask yourself if the contributor is using a Yedi mind trick to fool you or what he tries to hide.

The other part is that if one is not enforcing a conherent coding style one ends up having a mess like the symbian kernel where {} are freely placed with every kind of indention.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158118</commentid>
    <comment_count>28</comment_count>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2009-10-27 01:33:04 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; (In reply to comment #25)
&gt; &gt; &gt; I think the API contract should be changed to not emit frameCreated from the
&gt; &gt; &gt; QWebPage c&apos;tor and that it is guranteed that the mainFrame() exists...
&gt; &gt; This is an awesome catch! Thanks. Because of that the solution is completely
&gt; &gt; bad. The only workarounds I can find for the problem are based on
&gt; &gt; MagicSignalRouter(tm) class or on some operation on the EventLoop. This would
&gt; &gt; be evil and an overkill.
&gt; &gt; So I believe we should leave current solution. It is more readable and it will
&gt; &gt; be easier to maintenance.
&gt;
&gt; hehe, I like the killing of createMainFrame in your solution a lot. I will try
&gt; to poke Simon once he is back from vacation.
Another solution: Add info to documentation that QWebPage constructor always creates the main frame and it is not possible to catch the signal. It isn&apos;t big deal because of the QWebPage::mainFrame method. The solution have one disadvantage it can be implemented only in a major release of Qt, it is behavior change. Maybe it is worth to wait for it. Current solution is not so bad.

&gt; &gt; Really, the lines are meaningless and actually I think they are confusing, an
&gt; &gt; empty lines should divide some logical blocks, but this isn&apos;t the case. Since I
&gt; &gt; had to modify the part of source code I decided to reformat it.
&gt;
&gt; Right they are meaningless, why do you change them then? The main point is that
&gt; you propose to fix a specific problem and when the patch contains unrelated
&gt; things it gets harder to review. As a reviewer you will have to ask yourself if
&gt; the contributor is using a Yedi mind trick to fool you or what he tries to
&gt; hide.
OK, I understand now, I&apos;ll try to avoid it.

&gt; The other part is that if one is not enforcing a conherent coding style one
&gt; ends up having a mess like the symbian kernel where {} are freely placed with
&gt; every kind of indention.
Agree, but I don&apos;t think it should be done by humans, we have computers and cool scripts for it. OK, I know it isn&apos;t the place and the time for this discussion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162411</commentid>
    <comment_count>29</comment_count>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2009-11-11 02:12:30 -0800</bug_when>
    <thetext>I talked with Simon and we decided to leave current solution as the easiest one.

I&apos;m closing bug as &quot;resolved fixed&quot; because patch is committed and the autotest doesn&apos;t crash anymore.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40227</attachid>
            <date>2009-09-28 04:57:32 -0700</date>
            <delta_ts>2009-09-29 03:59:24 -0700</delta_ts>
            <desc>create mainframe if needed</desc>
            <filename>hist.diff</filename>
            <type>text/plain</type>
            <size>1063</size>
            <attacher name="Jędrzej Nowacki">jedrzej.nowacki</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwIGIvV2ViS2l0L3F0L0FwaS9x
d2VicGFnZS5jcHAKaW5kZXggYWFkNzE4Yi4uNDVhMzhjNiAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0
L0FwaS9xd2VicGFnZS5jcHAKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKQEAgLTE0
OTEsOSArMTQ5MSwxMSBAQCBRV2ViUGFnZTo6UVdlYlBhZ2UoUU9iamVjdCAqcGFyZW50KQogKi8K
IFFXZWJQYWdlOjp+UVdlYlBhZ2UoKQogewotICAgIEZyYW1lTG9hZGVyICpsb2FkZXIgPSBkLT5t
YWluRnJhbWUtPmQtPmZyYW1lLT5sb2FkZXIoKTsKLSAgICBpZiAobG9hZGVyKQotICAgICAgICBs
b2FkZXItPmRldGFjaEZyb21QYXJlbnQoKTsKKyAgICBpZiAoZC0+bWFpbkZyYW1lKSB7CisgICAg
ICAgIEZyYW1lTG9hZGVyICpsb2FkZXIgPSBkLT5tYWluRnJhbWUtPmQtPmZyYW1lLT5sb2FkZXIo
KTsKKyAgICAgICAgaWYgKGxvYWRlcikKKyAgICAgICAgICAgIGxvYWRlci0+ZGV0YWNoRnJvbVBh
cmVudCgpOworICAgIH0KICAgICBpZiAoZC0+aW5zcGVjdG9yKQogICAgICAgICBkLT5pbnNwZWN0
b3ItPnNldFBhZ2UoMCk7CiAgICAgZGVsZXRlIGQ7CkBAIC0xNTIwLDYgKzE1MjIsNyBAQCBRV2Vi
RnJhbWUgKlFXZWJQYWdlOjptYWluRnJhbWUoKSBjb25zdAogKi8KIFFXZWJGcmFtZSAqUVdlYlBh
Z2U6OmN1cnJlbnRGcmFtZSgpIGNvbnN0CiB7CisgICAgZC0+Y3JlYXRlTWFpbkZyYW1lKCk7CiAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQgKj4oZC0+
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5sb2FkZXIoKS0+
Y2xpZW50KCkpLT53ZWJGcmFtZSgpOwogfQogCkBAIC0xNTQ1LDYgKzE1NDgsNyBAQCBRV2ViRnJh
bWUqIFFXZWJQYWdlOjpmcmFtZUF0KGNvbnN0IFFQb2ludCYgcG9zKSBjb25zdAogKi8KIFFXZWJI
aXN0b3J5ICpRV2ViUGFnZTo6aGlzdG9yeSgpIGNvbnN0CiB7CisgICAgZC0+Y3JlYXRlTWFpbkZy
YW1lKCk7CiAgICAgcmV0dXJuICZkLT5oaXN0b3J5OwogfQogCg==
</data>
<flag name="review"
          id="21413"
          type_id="1"
          status="-"
          setter="hausmann"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40293</attachid>
            <date>2009-09-29 03:59:24 -0700</date>
            <delta_ts>2009-10-22 02:42:55 -0700</delta_ts>
            <desc>New patch</desc>
            <filename>crash.diff</filename>
            <type>text/plain</type>
            <size>3526</size>
            <attacher name="Jędrzej Nowacki">jedrzej.nowacki</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwIGIvV2ViS2l0L3F0L0FwaS9x
d2VicGFnZS5jcHAKaW5kZXggYWFkNzE4Yi4uNGI2MjQ4YSAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0
L0FwaS9xd2VicGFnZS5jcHAKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKQEAgLTE0
OTEsNiArMTQ5MSw3IEBAIFFXZWJQYWdlOjpRV2ViUGFnZShRT2JqZWN0ICpwYXJlbnQpCiAqLwog
UVdlYlBhZ2U6On5RV2ViUGFnZSgpCiB7CisgICAgZC0+Y3JlYXRlTWFpbkZyYW1lKCk7CiAgICAg
RnJhbWVMb2FkZXIgKmxvYWRlciA9IGQtPm1haW5GcmFtZS0+ZC0+ZnJhbWUtPmxvYWRlcigpOwog
ICAgIGlmIChsb2FkZXIpCiAgICAgICAgIGxvYWRlci0+ZGV0YWNoRnJvbVBhcmVudCgpOwpAQCAt
MTUyMCw2ICsxNTIxLDcgQEAgUVdlYkZyYW1lICpRV2ViUGFnZTo6bWFpbkZyYW1lKCkgY29uc3QK
ICovCiBRV2ViRnJhbWUgKlFXZWJQYWdlOjpjdXJyZW50RnJhbWUoKSBjb25zdAogeworICAgIGQt
PmNyZWF0ZU1haW5GcmFtZSgpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudFF0ICo+KGQtPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JN
YWluRnJhbWUoKS0+bG9hZGVyKCktPmNsaWVudCgpKS0+d2ViRnJhbWUoKTsKIH0KIApAQCAtMTU0
NSw2ICsxNTQ3LDcgQEAgUVdlYkZyYW1lKiBRV2ViUGFnZTo6ZnJhbWVBdChjb25zdCBRUG9pbnQm
IHBvcykgY29uc3QKICovCiBRV2ViSGlzdG9yeSAqUVdlYlBhZ2U6Omhpc3RvcnkoKSBjb25zdAog
eworICAgIGQtPmNyZWF0ZU1haW5GcmFtZSgpOwogICAgIHJldHVybiAmZC0+aGlzdG9yeTsKIH0K
IApAQCAtMTkzMiw2ICsxOTM1LDcgQEAgYm9vbCBRV2ViUGFnZTo6YWNjZXB0TmF2aWdhdGlvblJl
cXVlc3QoUVdlYkZyYW1lICpmcmFtZSwgY29uc3QgUVdlYk5ldHdvcmtSZXF1ZXMKICovCiBRU3Ry
aW5nIFFXZWJQYWdlOjpzZWxlY3RlZFRleHQoKSBjb25zdAogeworICAgIGQtPmNyZWF0ZU1haW5G
cmFtZSgpOwogICAgIHJldHVybiBkLT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9y
TWFpbkZyYW1lKCktPnNlbGVjdGVkVGV4dCgpOwogfQogCkBAIC0yNDg3LDYgKzI0OTEsNyBAQCB2
b2lkIFFXZWJQYWdlOjp1cGRhdGVQb3NpdGlvbkRlcGVuZGVudEFjdGlvbnMoY29uc3QgUVBvaW50
ICZwb3MpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBkLT5jcmVhdGVNYWluRnJhbWUoKTsKICAg
ICBXZWJDb3JlOjpGcmFtZSogZm9jdXNlZEZyYW1lID0gZC0+cGFnZS0+Zm9jdXNDb250cm9sbGVy
KCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZm9j
dXNlZEZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZm9jdXNlZEZy
YW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMocG9zKSwgLyphbGxvd1NoYWRvd0NvbnRlbnQq
LyBmYWxzZSk7CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9XZWJLaXQvcXQv
Q2hhbmdlTG9nCmluZGV4IGQxYzM2MTguLmZmNzY3MTUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9D
aGFuZ2VMb2cKKysrIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDA5
LTA5LTI5ICBKZWRyemVqIE5vd2Fja2kgIDxqZWRyemVqLm5vd2Fja2lAbm9raWEuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNvbWUgUVdlYkhp
c3RvcnkgYW5kIFFXZWJQYWdlIGF1dG90ZXN0IGNyYXNoIGZpeGVzLgorICAgICAgICAKKyAgICAg
ICAgU29tZSBjaGVja2luZyBmb3IgbV9tYWluRnJhbWUgd2VyZSBhZGRlZC4gTWFpbkZyYW1lIHNo
b3VsZCBiZSBjcmVhdGVkCisgICAgICAgIGF0IHNvbWUgcG9pbnQgb2YgUVdlYlBhZ2UgbGl2ZSBj
aWNsZS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Mjk4MDMKKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6
flFXZWJQYWdlKToKKyAgICAgICAgKFFXZWJQYWdlOjpjdXJyZW50RnJhbWUpOgorICAgICAgICAo
UVdlYlBhZ2U6Omhpc3RvcnkpOgorICAgICAgICAoUVdlYlBhZ2U6OnNlbGVjdGVkVGV4dCk6Cisg
ICAgICAgIChRV2ViUGFnZTo6dXBkYXRlUG9zaXRpb25EZXBlbmRlbnRBY3Rpb25zKToKKyAgICAg
ICAgKiB0ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAodHN0X1FXZWJQ
YWdlOjpjcmFzaFRlc3RzX0xhenlJbml0aWFsaXphdGlvbk9mTWFpbkZyYW1lKToKKwogMjAwOS0w
OS0yNyAgSm9lIExpZ21hbiAgPGpvc2VwaC5saWdtYW5AbWluZHNwcmluZy5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvdGVz
dHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcCBiL1dlYktpdC9xdC90ZXN0cy9xd2VicGFnZS90
c3RfcXdlYnBhZ2UuY3BwCmluZGV4IDBmYjA1YjguLmNlM2E4MGYgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9xdC90ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwCisrKyBiL1dlYktpdC9xdC90ZXN0
cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwCkBAIC0xMTMsMTEgKzExMyw5IEBAIHByaXZhdGUg
c2xvdHM6CiAgICAgdm9pZCBsb2NhbFVSTFNjaGVtZXMoKTsKICAgICB2b2lkIHRlc3RPcHRpb25h
bEpTT2JqZWN0cygpOwogICAgIHZvaWQgdGVzdEVuYWJsZVBlcnNpc3RlbnRTdG9yYWdlKCk7Ci0K
ICAgICB2b2lkIGNvbnNvbGVPdXRwdXQoKTsKIAotcHJpdmF0ZToKLQorICAgIHZvaWQgY3Jhc2hU
ZXN0c19MYXp5SW5pdGlhbGl6YXRpb25PZk1haW5GcmFtZSgpOwogCiBwcml2YXRlOgogICAgIFFX
ZWJWaWV3KiBtX3ZpZXc7CkBAIC0xMzAxLDUgKzEyOTksMjYgQEAgdm9pZCB0c3RfUVdlYlBhZ2U6
OnRlc3RFbmFibGVQZXJzaXN0ZW50U3RvcmFnZSgpCiAgICAgUVZFUklGWSghd2ViUGFnZS5zZXR0
aW5ncygpLT5pY29uRGF0YWJhc2VQYXRoKCkuaXNFbXB0eSgpKTsKIH0KIAordm9pZCB0c3RfUVdl
YlBhZ2U6OmNyYXNoVGVzdHNfTGF6eUluaXRpYWxpemF0aW9uT2ZNYWluRnJhbWUoKQoreworICAg
IHsKKyAgICAgICAgUVdlYlBhZ2Ugd2ViUGFnZTsKKyAgICB9CisgICAgeworICAgICAgICBRV2Vi
UGFnZSB3ZWJQYWdlOworICAgICAgICB3ZWJQYWdlLnNlbGVjdGVkVGV4dCgpOworICAgIH0KKyAg
ICB7CisgICAgICAgIFFXZWJQYWdlIHdlYlBhZ2U7CisgICAgICAgIHdlYlBhZ2UudHJpZ2dlckFj
dGlvbihRV2ViUGFnZTo6QmFjaywgdHJ1ZSk7CisgICAgfQorICAgIHsKKyAgICAgICAgUVdlYlBh
Z2Ugd2ViUGFnZTsKKyAgICAgICAgUVBvaW50IHBvcygxMCwxMCk7CisgICAgICAgIHdlYlBhZ2Uu
dXBkYXRlUG9zaXRpb25EZXBlbmRlbnRBY3Rpb25zKHBvcyk7CisgICAgfQorfQorCisKIFFURVNU
X01BSU4odHN0X1FXZWJQYWdlKQogI2luY2x1ZGUgInRzdF9xd2VicGFnZS5tb2MiCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40432</attachid>
            <date>2009-10-01 04:05:32 -0700</date>
            <delta_ts>2009-10-05 04:41:40 -0700</delta_ts>
            <desc>optimization</desc>
            <filename>page.diff</filename>
            <type>text/plain</type>
            <size>2445</size>
            <attacher name="Jędrzej Nowacki">jedrzej.nowacki</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YWFjYzNkYy4uNjJlZjM3NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAwOS0xMC0wMSAgSmVkcnplaiBOb3dh
Y2tpICA8amVkcnplai5ub3dhY2tpQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBRV2ViUGFnZTo6flFXZWJQYWdlIG9wdGltaXphdGlv
bi4KKyAgICAgICAgCisgICAgICAgIE1haW5GcmFtZSB3YXMgY29uc3RydWN0ZWQgaW4gflFXZWJQ
YWdlIHRvIGF2b2lkIGNyYXNoIGluIH5QYWdlIHNvCisgICAgICAgIHR3byBjaGVja3Mgd2VyZSBh
ZGRlZCBhbmQgbWFpbkZyYW1lIGlzIG5vdCBuZWVkZWQgaW4gflBhZ2UgYW55bW9yZS4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjk4MDMKKworICAg
ICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp+UGFnZSk6CisK
IDIwMDktMDktMjkgIERhdmUgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgSm9uIEhvbmV5Y3V0dC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cCBiL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAyZDBjOTFjLi5lNTEzMGJkIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBA
IC0xNjksNyArMTY5LDggQEAgUGFnZTo6UGFnZShDaHJvbWVDbGllbnQqIGNocm9tZUNsaWVudCwg
Q29udGV4dE1lbnVDbGllbnQqIGNvbnRleHRNZW51Q2xpZW50LCBFZGkKIAogUGFnZTo6flBhZ2Uo
KQogewotICAgIG1fbWFpbkZyYW1lLT5zZXRWaWV3KDApOworICAgIGlmIChtX21haW5GcmFtZSkK
KyAgICAgICAgbV9tYWluRnJhbWUtPnNldFZpZXcoMCk7CiAgICAgc2V0R3JvdXBOYW1lKFN0cmlu
ZygpKTsKICAgICBhbGxQYWdlcy0+cmVtb3ZlKHRoaXMpOwogICAgIApkaWZmIC0tZ2l0IGEvV2Vi
S2l0L3F0L0FwaS9xd2VicGFnZS5jcHAgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAppbmRl
eCA0YjYyNDhhLi4wZDM3M2RjIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNw
cAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcApAQCAtMTQ5MSwxMCArMTQ5MSwxMSBA
QCBRV2ViUGFnZTo6UVdlYlBhZ2UoUU9iamVjdCAqcGFyZW50KQogKi8KIFFXZWJQYWdlOjp+UVdl
YlBhZ2UoKQogewotICAgIGQtPmNyZWF0ZU1haW5GcmFtZSgpOwotICAgIEZyYW1lTG9hZGVyICps
b2FkZXIgPSBkLT5tYWluRnJhbWUtPmQtPmZyYW1lLT5sb2FkZXIoKTsKLSAgICBpZiAobG9hZGVy
KQotICAgICAgICBsb2FkZXItPmRldGFjaEZyb21QYXJlbnQoKTsKKyAgICBpZiAoZC0+bWFpbkZy
YW1lKSB7CisgICAgICAgIEZyYW1lTG9hZGVyKiBsb2FkZXIgPSBkLT5tYWluRnJhbWUtPmQtPmZy
YW1lLT5sb2FkZXIoKTsKKyAgICAgICAgaWYgKGxvYWRlcikKKyAgICAgICAgICAgIGxvYWRlci0+
ZGV0YWNoRnJvbVBhcmVudCgpOworICAgIH0KICAgICBpZiAoZC0+aW5zcGVjdG9yKQogICAgICAg
ICBkLT5pbnNwZWN0b3ItPnNldFBhZ2UoMCk7CiAgICAgZGVsZXRlIGQ7CmRpZmYgLS1naXQgYS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCA2ZGZhOTc1Li5i
Njc1OGMzIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9xdC9D
aGFuZ2VMb2cKQEAgLTIsNiArMiwyMCBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgogCisgICAgICAgIFFXZWJQYWdlOjp+UVdlYlBhZ2Ugb3B0aW1pemF0aW9uLgorICAg
ICAgICAKKyAgICAgICAgTWFpbkZyYW1lIHdhcyBjb25zdHJ1Y3RlZCBpbiB+UVdlYlBhZ2UgdG8g
YXZvaWQgY3Jhc2ggaW4gflBhZ2Ugc28KKyAgICAgICAgdHdvIGNoZWNrcyB3ZXJlIGFkZGVkIGFu
ZCBtYWluRnJhbWUgaXMgbm90IG5lZWRlZCBpbiB+UGFnZSBhbnltb3JlLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTgwMworCisgICAgICAgICog
QXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjp+UVdlYlBhZ2UpOgorCisyMDA5
LTEwLTAxICBKZWRyemVqIE5vd2Fja2kgIDxqZWRyemVqLm5vd2Fja2lAbm9raWEuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAgIFFXZWJQYWdlJ3Mg
dGVzdE9wdGlvbmFsSlNPYmplY3RzIGF1dG90ZXN0IGZpeC4KICAgICAgICAgCiAgICAgICAgIEF1
dG90ZXN0IHdhcyBiYXNlZCBvbiBpbnRlcm5hbHMuIEFzIGFwcGxpY2F0aW9uQ2FjaGUK
</data>
<flag name="review"
          id="21652"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40624</attachid>
            <date>2009-10-05 04:41:40 -0700</date>
            <delta_ts>2009-10-22 02:42:55 -0700</delta_ts>
            <desc>optimization+comment</desc>
            <filename>page2.diff</filename>
            <type>text/plain</type>
            <size>2737</size>
            <attacher name="Jędrzej Nowacki">jedrzej.nowacki</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YWFjYzNkYy4uOWU3NDUxNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAwOS0xMC0wMSAgSmVkcnplaiBOb3dh
Y2tpICA8amVkcnplai5ub3dhY2tpQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBRV2ViUGFnZTo6flFXZWJQYWdlIG9wdGltaXphdGlv
bi4KKworICAgICAgICBXZSBzaG91bGRuJ3QgY3JlYXRlIE1haW5GcmFtZSBpbiBRV2ViUGFnZSBk
ZXN0cnVjdG9yIGJlY2F1c2UgaXQgd2lsbCBiZQorICAgICAgICBkZXN0cnVjdGVkIGltbWVkaWF0
ZWx5IHRvby4gSXQgaXMgc2ltcGx5IHdhc3RlIG9mIHRpbWUuCisKKyAgICAgICAgQWRkaXRpb25h
bCBjaGVja2luZyB3YXMgYWRkZWQgaW4gV2ViQ29yZTo6flBhZ2UgYW5kIH5RV2ViUGFnZS4KKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjk4MDMKKwor
ICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp+UGFnZSk6
CisKIDIwMDktMDktMjkgIERhdmUgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgSm9uIEhvbmV5Y3V0dC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcCBiL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAyZDBjOTFjLi41MzY1YjFmIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CkBAIC0xNjksNyArMTY5LDExIEBAIFBhZ2U6OlBhZ2UoQ2hyb21lQ2xpZW50KiBjaHJvbWVDbGll
bnQsIENvbnRleHRNZW51Q2xpZW50KiBjb250ZXh0TWVudUNsaWVudCwgRWRpCiAKIFBhZ2U6On5Q
YWdlKCkKIHsKLSAgICBtX21haW5GcmFtZS0+c2V0VmlldygwKTsKKyAgICAvLyBJbiBtb3N0IGNh
c2VzLCBtX21haW5GcmFtZSBzaG91bGQgYmUgaW5pdGlhbGl6ZWQuIEJ1dCB0aGUgZnJhbWUgaXMg
bGF6aWx5CisgICAgLy8gY3JlYXRlZCBhbmQgc29tZXRpbWVzIGl0IGlzbid0IG5lZWRlZCBhdCBh
bGwuIFdlIHNob3VsZG4ndCBjcmFzaCBoZXJlLgorICAgIGlmIChtX21haW5GcmFtZSkKKyAgICAg
ICAgbV9tYWluRnJhbWUtPnNldFZpZXcoMCk7CisKICAgICBzZXRHcm91cE5hbWUoU3RyaW5nKCkp
OwogICAgIGFsbFBhZ2VzLT5yZW1vdmUodGhpcyk7CiAgICAgCmRpZmYgLS1naXQgYS9XZWJLaXQv
cXQvQXBpL3F3ZWJwYWdlLmNwcCBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCmluZGV4IDRi
NjI0OGEuLjBkMzczZGMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCisr
KyBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCkBAIC0xNDkxLDEwICsxNDkxLDExIEBAIFFX
ZWJQYWdlOjpRV2ViUGFnZShRT2JqZWN0ICpwYXJlbnQpCiAqLwogUVdlYlBhZ2U6On5RV2ViUGFn
ZSgpCiB7Ci0gICAgZC0+Y3JlYXRlTWFpbkZyYW1lKCk7Ci0gICAgRnJhbWVMb2FkZXIgKmxvYWRl
ciA9IGQtPm1haW5GcmFtZS0+ZC0+ZnJhbWUtPmxvYWRlcigpOwotICAgIGlmIChsb2FkZXIpCi0g
ICAgICAgIGxvYWRlci0+ZGV0YWNoRnJvbVBhcmVudCgpOworICAgIGlmIChkLT5tYWluRnJhbWUp
IHsKKyAgICAgICAgRnJhbWVMb2FkZXIqIGxvYWRlciA9IGQtPm1haW5GcmFtZS0+ZC0+ZnJhbWUt
PmxvYWRlcigpOworICAgICAgICBpZiAobG9hZGVyKQorICAgICAgICAgICAgbG9hZGVyLT5kZXRh
Y2hGcm9tUGFyZW50KCk7CisgICAgfQogICAgIGlmIChkLT5pbnNwZWN0b3IpCiAgICAgICAgIGQt
Pmluc3BlY3Rvci0+c2V0UGFnZSgwKTsKICAgICBkZWxldGUgZDsKZGlmZiAtLWdpdCBhL1dlYktp
dC9xdC9DaGFuZ2VMb2cgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDZkZmE5NzUuLjYzZDlm
NGIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3F0L0NoYW5n
ZUxvZwpAQCAtMiw2ICsyLDIyIEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCiAKKyAgICAgICAgUVdlYlBhZ2U6On5RV2ViUGFnZSBvcHRpbWl6YXRpb24uCisgICAgICAg
IAorICAgICAgICBXZSBzaG91bGRuJ3QgY3JlYXRlIE1haW5GcmFtZSBpbiBRV2ViUGFnZSBkZXN0
cnVjdG9yIGJlY2F1c2UgaXQgd2lsbCBiZQorICAgICAgICBkZXN0cnVjdGVkIGltbWVkaWF0ZWx5
IHRvby4gSXQgaXMgc2ltcGx5IHdhc3RlIG9mIHRpbWUuCisKKyAgICAgICAgQWRkaXRpb25hbCBj
aGVja2luZyB3YXMgYWRkZWQgaW4gV2ViQ29yZTo6flBhZ2UgYW5kIH5RV2ViUGFnZS4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjk4MDMKKworICAg
ICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6flFXZWJQYWdlKToK
KworMjAwOS0xMC0wMSAgSmVkcnplaiBOb3dhY2tpICA8amVkcnplai5ub3dhY2tpQG5va2lhLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBRV2Vi
UGFnZSdzIHRlc3RPcHRpb25hbEpTT2JqZWN0cyBhdXRvdGVzdCBmaXguCiAgICAgICAgIAogICAg
ICAgICBBdXRvdGVzdCB3YXMgYmFzZWQgb24gaW50ZXJuYWxzLiBBcyBhcHBsaWNhdGlvbkNhY2hl
Cg==
</data>
<flag name="review"
          id="21869"
          type_id="1"
          status="-"
          setter="hausmann"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41649</attachid>
            <date>2009-10-22 02:42:55 -0700</date>
            <delta_ts>2009-10-22 08:53:24 -0700</delta_ts>
            <desc>patch</desc>
            <filename>signal.diff</filename>
            <type>text/plain</type>
            <size>17265</size>
            <attacher name="Jędrzej Nowacki">jedrzej.nowacki</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcCBiL1dlYktpdC9xdC9BcGkv
cXdlYmZyYW1lLmNwcAppbmRleCA0NWRiZmJhLi4yYmQ3NDMwIDEwMDY0NAotLS0gYS9XZWJLaXQv
cXQvQXBpL3F3ZWJmcmFtZS5jcHAKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCkBA
IC03OCw2ICs3OCw4IEBACiAjaW5jbHVkZSA8cXByaW50ZXIuaD4KICNpbmNsdWRlIDxxcmVnaW9u
Lmg+CiAKKyNpbmNsdWRlICJtb2NfcXdlYmZyYW1lLmNwcCIKKwogI2lmIFFUX1ZFUlNJT04gPCAw
eDA0MDQwMAogI2luY2x1ZGUgInF3ZWJuZXR3b3JraW50ZXJmYWNlLmgiCiAjZW5kaWYKQEAgLTIw
NywxNSArMjA5LDIxIEBAIFFXZWJGcmFtZURhdGE6OlFXZWJGcmFtZURhdGEoV2ViQ29yZTo6UGFn
ZSogcGFyZW50UGFnZSwgV2ViQ29yZTo6RnJhbWUqIHBhcmVudEZyCiB2b2lkIFFXZWJGcmFtZVBy
aXZhdGU6OmluaXQoUVdlYkZyYW1lICpxZnJhbWUsIFFXZWJGcmFtZURhdGEgKmZyYW1lRGF0YSkK
IHsKICAgICBxID0gcWZyYW1lOwotCiAgICAgYWxsb3dzU2Nyb2xsaW5nID0gZnJhbWVEYXRhLT5h
bGxvd3NTY3JvbGxpbmc7CiAgICAgbWFyZ2luV2lkdGggPSBmcmFtZURhdGEtPm1hcmdpbldpZHRo
OwogICAgIG1hcmdpbkhlaWdodCA9IGZyYW1lRGF0YS0+bWFyZ2luSGVpZ2h0OwogICAgIGZyYW1l
ID0gZnJhbWVEYXRhLT5mcmFtZS5nZXQoKTsKICAgICBmcmFtZUxvYWRlckNsaWVudCA9IGZyYW1l
RGF0YS0+ZnJhbWVMb2FkZXJDbGllbnQ7CiAgICAgZnJhbWVMb2FkZXJDbGllbnQtPnNldEZyYW1l
KHFmcmFtZSwgZnJhbWUpOwotCiAgICAgZnJhbWUtPmluaXQoKTsKKyAgICAvLyBEZWxheSB0aGUg
c2lnbmFsIFFXZWJQYWdlOjpmcmFtZUNyZWF0ZWQoUVdlYkZyYW1lKiksIGJlY2F1c2UgdGhlIFF3
ZWJQYWdlIG1pZ2h0IGJlIG5vdAorICAgIC8vIGZ1bGx5IGNyZWF0ZWQgKG5vIHdheSB0byBjb25u
ZWN0IHRvIHRoZSBzaWduYWwpLgorICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QocSAsICJw
cm9wYWdhdGVGcmFtZUNyZWF0ZWQiLCBRdDo6UXVldWVkQ29ubmVjdGlvbik7Cit9CisKK3ZvaWQg
UVdlYkZyYW1lUHJpdmF0ZTo6cHJvcGFnYXRlRnJhbWVDcmVhdGVkKCkKK3sKKyAgICBlbWl0IHBh
Z2UtPmZyYW1lQ3JlYXRlZChxKTsKIH0KIAogV2ViQ29yZTo6U2Nyb2xsYmFyKiBRV2ViRnJhbWVQ
cml2YXRlOjpob3Jpem9udGFsU2Nyb2xsQmFyKCkgY29uc3QKZGlmZiAtLWdpdCBhL1dlYktpdC9x
dC9BcGkvcXdlYmZyYW1lLmggYi9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5oCmluZGV4IGU0Y2Vm
MDYuLjM5ODYzYzIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmgKKysrIGIv
V2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuaApAQCAtMTEzLDYgKzExMyw3IEBAIGNsYXNzIFFXRUJL
SVRfRVhQT1JUIFFXZWJGcmFtZSA6IHB1YmxpYyBRT2JqZWN0IHsKICAgICBRX1BST1BFUlRZKFFT
aXplIGNvbnRlbnRzU2l6ZSBSRUFEIGNvbnRlbnRzU2l6ZSkKICAgICBRX1BST1BFUlRZKFFQb2lu
dCBzY3JvbGxQb3NpdGlvbiBSRUFEIHNjcm9sbFBvc2l0aW9uIFdSSVRFIHNldFNjcm9sbFBvc2l0
aW9uKQogICAgIFFfUFJPUEVSVFkoYm9vbCBmb2N1cyBSRUFEIGhhc0ZvY3VzKQorICAgIFFfUFJJ
VkFURV9TTE9UKGQsIHZvaWQgcHJvcGFnYXRlRnJhbWVDcmVhdGVkKCkpOwogcHJpdmF0ZToKICAg
ICBRV2ViRnJhbWUoUVdlYlBhZ2UgKnBhcmVudCwgUVdlYkZyYW1lRGF0YSAqZnJhbWVEYXRhKTsK
ICAgICBRV2ViRnJhbWUoUVdlYkZyYW1lICpwYXJlbnQsIFFXZWJGcmFtZURhdGEgKmZyYW1lRGF0
YSk7CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZV9wLmggYi9XZWJLaXQvcXQv
QXBpL3F3ZWJmcmFtZV9wLmgKaW5kZXggMDgxZTY1ZC4uYmJiZGEwMiAxMDA2NDQKLS0tIGEvV2Vi
S2l0L3F0L0FwaS9xd2ViZnJhbWVfcC5oCisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lX3Au
aApAQCAtODAsOCArODAsMTEgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFdlYkNvcmU6OkZyYW1l
KiBjb3JlKFFXZWJGcmFtZSopOwogICAgIHN0YXRpYyBRV2ViRnJhbWUqIGtpdChXZWJDb3JlOjpG
cmFtZSopOworICAgIHN0YXRpYyBRV2ViRnJhbWUqIGdldChRV2ViRnJhbWVQcml2YXRlKiBwcml2
KSB7IHJldHVybiBwcml2LT5xOyB9CisgICAgc3RhdGljIFFXZWJGcmFtZVByaXZhdGUqIGdldChR
V2ViRnJhbWUqIHB1YikgeyByZXR1cm4gcHViLT5kOyB9CiAKICAgICB2b2lkIHJlbmRlclByaXZh
dGUoUVBhaW50ZXIqLCBRV2ViRnJhbWU6OlJlbmRlckxheWVyLCBjb25zdCBRUmVnaW9uJiBjbGlw
KTsKKyAgICB2b2lkIHByb3BhZ2F0ZUZyYW1lQ3JlYXRlZCgpOwogCiAgICAgUVdlYkZyYW1lICpx
OwogICAgIFF0OjpTY3JvbGxCYXJQb2xpY3kgaG9yaXpvbnRhbFNjcm9sbEJhclBvbGljeTsKZGlm
ZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwIGIvV2ViS2l0L3F0L0FwaS9xd2Vi
cGFnZS5jcHAKaW5kZXggMzFkMTkzZS4uZDRkZGMzMCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0Fw
aS9xd2VicGFnZS5jcHAKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKQEAgLTMzOSw4
ICszMzksNiBAQCB2b2lkIFFXZWJQYWdlUHJpdmF0ZTo6Y3JlYXRlTWFpbkZyYW1lKCkKICAgICBp
ZiAoIW1haW5GcmFtZSkgewogICAgICAgICBRV2ViRnJhbWVEYXRhIGZyYW1lRGF0YShwYWdlKTsK
ICAgICAgICAgbWFpbkZyYW1lID0gbmV3IFFXZWJGcmFtZShxLCAmZnJhbWVEYXRhKTsKLQotICAg
ICAgICBlbWl0IHEtPmZyYW1lQ3JlYXRlZChtYWluRnJhbWUpOwogICAgIH0KIH0KIApAQCAtNDQ3
LDcgKzQ0NSw3IEBAIHZvaWQgUVdlYlBhZ2VQcml2YXRlOjpfcV9jbGVhbnVwTGVha01lc3NhZ2Vz
KCkKIHZvaWQgUVdlYlBhZ2VQcml2YXRlOjp1cGRhdGVBY3Rpb24oUVdlYlBhZ2U6OldlYkFjdGlv
biBhY3Rpb24pCiB7CiAgICAgUUFjdGlvbiAqYSA9IGFjdGlvbnNbYWN0aW9uXTsKLSAgICBpZiAo
IWEgfHwgIW1haW5GcmFtZSkKKyAgICBpZiAoIWEpCiAgICAgICAgIHJldHVybjsKIAogICAgIFdl
YkNvcmU6OkZyYW1lTG9hZGVyICpsb2FkZXIgPSBtYWluRnJhbWUtPmQtPmZyYW1lLT5sb2FkZXIo
KTsKQEAgLTEwODMsNyArMTA4MSw3IEBAIHZvaWQgUVdlYlBhZ2VQcml2YXRlOjpsZWF2ZUV2ZW50
KFFFdmVudCopCiB2b2lkIFFXZWJQYWdlOjpzZXRQYWxldHRlKGNvbnN0IFFQYWxldHRlICZwYWwp
CiB7CiAgICAgZC0+cGFsZXR0ZSA9IHBhbDsKLSAgICBpZiAoIWQtPm1haW5GcmFtZSB8fCAhZC0+
bWFpbkZyYW1lLT5kLT5mcmFtZS0+dmlldygpKQorICAgIGlmICghZC0+bWFpbkZyYW1lLT5kLT5m
cmFtZS0+dmlldygpKQogICAgICAgICByZXR1cm47CiAKICAgICBRQnJ1c2ggYnJ1c2ggPSBwYWwu
YnJ1c2goUVBhbGV0dGU6OkJhc2UpOwpAQCAtMTU4NSw2ICsxNTgzLDcgQEAgUVdlYlBhZ2U6OlFX
ZWJQYWdlKFFPYmplY3QgKnBhcmVudCkKICAgICA6IFFPYmplY3QocGFyZW50KQogICAgICwgZChu
ZXcgUVdlYlBhZ2VQcml2YXRlKHRoaXMpKQogeworICAgIGQtPmNyZWF0ZU1haW5GcmFtZSgpOwog
ICAgIHNldFZpZXcocW9iamVjdF9jYXN0PFFXaWRnZXQgKj4ocGFyZW50KSk7CiAKICAgICBjb25u
ZWN0KHRoaXMsIFNJR05BTChsb2FkUHJvZ3Jlc3MoaW50KSksIHRoaXMsIFNMT1QoX3Ffb25Mb2Fk
UHJvZ3Jlc3NDaGFuZ2VkKGludCkpKTsKQEAgLTE1OTgsNyArMTU5Nyw2IEBAIFFXZWJQYWdlOjpR
V2ViUGFnZShRT2JqZWN0ICpwYXJlbnQpCiAqLwogUVdlYlBhZ2U6On5RV2ViUGFnZSgpCiB7Ci0g
ICAgZC0+Y3JlYXRlTWFpbkZyYW1lKCk7CiAgICAgRnJhbWVMb2FkZXIgKmxvYWRlciA9IGQtPm1h
aW5GcmFtZS0+ZC0+ZnJhbWUtPmxvYWRlcigpOwogICAgIGlmIChsb2FkZXIpCiAgICAgICAgIGxv
YWRlci0+ZGV0YWNoRnJvbVBhcmVudCgpOwpAQCAtMTYxNyw3ICsxNjE1LDYgQEAgUVdlYlBhZ2U6
On5RV2ViUGFnZSgpCiAqLwogUVdlYkZyYW1lICpRV2ViUGFnZTo6bWFpbkZyYW1lKCkgY29uc3QK
IHsKLSAgICBkLT5jcmVhdGVNYWluRnJhbWUoKTsKICAgICByZXR1cm4gZC0+bWFpbkZyYW1lOwog
fQogCkBAIC0xNjI4LDcgKzE2MjUsNiBAQCBRV2ViRnJhbWUgKlFXZWJQYWdlOjptYWluRnJhbWUo
KSBjb25zdAogKi8KIFFXZWJGcmFtZSAqUVdlYlBhZ2U6OmN1cnJlbnRGcmFtZSgpIGNvbnN0CiB7
Ci0gICAgZC0+Y3JlYXRlTWFpbkZyYW1lKCk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQgKj4oZC0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZv
Y3VzZWRPck1haW5GcmFtZSgpLT5sb2FkZXIoKS0+Y2xpZW50KCkpLT53ZWJGcmFtZSgpOwogfQog
CkBAIC0xNjU0LDcgKzE2NTAsNiBAQCBRV2ViRnJhbWUqIFFXZWJQYWdlOjpmcmFtZUF0KGNvbnN0
IFFQb2ludCYgcG9zKSBjb25zdAogKi8KIFFXZWJIaXN0b3J5ICpRV2ViUGFnZTo6aGlzdG9yeSgp
IGNvbnN0CiB7Ci0gICAgZC0+Y3JlYXRlTWFpbkZyYW1lKCk7CiAgICAgcmV0dXJuICZkLT5oaXN0
b3J5OwogfQogCkBAIC0xOTI3LDYgKzE5MjIsMTMgQEAgdm9pZCBRV2ViUGFnZTo6dHJpZ2dlckFj
dGlvbihXZWJBY3Rpb24gYWN0aW9uLCBib29sKQogCiBRU2l6ZSBRV2ViUGFnZTo6dmlld3BvcnRT
aXplKCkgY29uc3QKIHsKKyAgICAvLyBDaGVjayBmb3IgZC0+bWFpbkZyYW1lIGlzIG5lY2Vzc2Fy
eSBoZXJlLCBiZWNhdXNlIG9mIHRoaXMgY2FsbCBjeWNsZToKKyAgICAvLyBRV2ViUGFnZSgpIC0+
IFFXZWJGcmFtZSgpIC0+IEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRl
ZEZvck5ld1BhZ2UoKSAtPgorICAgIC8vIFFXZWJQYWdlOjp2aWV3cG9ydFNpemUoKS4gU28gaXQg
bWVhbnMgdGhhdCB0byBjcmVhdGUgdGhlIG1haW5GcmFtZSB3ZSBoYXZlIHRvIGtub3cgYSBzaXpl
CisgICAgLy8gb2YgYSB2aWV3cG9ydC4gRGVmYXVsdCBRU2l6ZSgwLCAwKSB3b3JrcyBvbmx5IGZv
ciBhIG5ldyBRV2ViUGFnZSBpbnN0YW5jZSwgYnV0IGl0IHdvdWxkIGdpdmUKKyAgICAvLyB3ZWly
ZCByZXN1bHRzIGZvciBvdGhlciBjYXNlcy4gVGhlIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnRyYW5z
aXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKSBjb3VsZAorICAgIC8vIGJlIGNhbGxlZCBmb3Ig
YSBkaWZmZXJlbnQgbG9hZGluZyB0eXBlcyAobG9vayBhdAorICAgIC8vIEZyYW1lTG9hZGVyOjp0
cmFuc2l0aW9uVG9Db21taXR0ZWQoUGFzc1JlZlB0cjxDYWNoZWRQYWdlPikpLgogICAgIGlmIChk
LT5tYWluRnJhbWUgJiYgZC0+bWFpbkZyYW1lLT5kLT5mcmFtZS0+dmlldygpKQogICAgICAgICBy
ZXR1cm4gZC0+bWFpbkZyYW1lLT5kLT5mcmFtZS0+dmlldygpLT5mcmFtZVJlY3QoKS5zaXplKCk7
CiAKQEAgLTIwNDYsNyArMjA0OCw2IEBAIGJvb2wgUVdlYlBhZ2U6OmFjY2VwdE5hdmlnYXRpb25S
ZXF1ZXN0KFFXZWJGcmFtZSAqZnJhbWUsIGNvbnN0IFFXZWJOZXR3b3JrUmVxdWVzCiAqLwogUVN0
cmluZyBRV2ViUGFnZTo6c2VsZWN0ZWRUZXh0KCkgY29uc3QKIHsKLSAgICBkLT5jcmVhdGVNYWlu
RnJhbWUoKTsKICAgICByZXR1cm4gZC0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRP
ck1haW5GcmFtZSgpLT5zZWxlY3RlZFRleHQoKTsKIH0KIApAQCAtMjQ5NiwxNiArMjQ5NywxMyBA
QCB2b2lkIFFXZWJQYWdlOjpzZXRDb250ZW50RWRpdGFibGUoYm9vbCBlZGl0YWJsZSkKICAgICBp
ZiAoZC0+ZWRpdGFibGUgIT0gZWRpdGFibGUpIHsKICAgICAgICAgZC0+ZWRpdGFibGUgPSBlZGl0
YWJsZTsKICAgICAgICAgZC0+cGFnZS0+c2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzKCFl
ZGl0YWJsZSk7Ci0gICAgICAgIGlmIChkLT5tYWluRnJhbWUpIHsKLSAgICAgICAgICAgIFdlYkNv
cmU6OkZyYW1lKiBmcmFtZSA9IGQtPm1haW5GcmFtZS0+ZC0+ZnJhbWU7Ci0gICAgICAgICAgICBp
ZiAoZWRpdGFibGUpIHsKLSAgICAgICAgICAgICAgICBmcmFtZS0+YXBwbHlFZGl0aW5nU3R5bGVU
b0JvZHlFbGVtZW50KCk7Ci0gICAgICAgICAgICAgICAgLy8gRklYTUU6IG1hYyBwb3J0IGNhbGxz
IHRoaXMgaWYgdGhlcmUgaXMgbm8gc2VsZWN0ZWRET01SYW5nZQotICAgICAgICAgICAgICAgIC8v
ZnJhbWUtPnNldFNlbGVjdGlvbkZyb21Ob25lKCk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgICAgICBmcmFtZS0+cmVtb3ZlRWRpdGluZ1N0eWxlRnJvbUJvZHlFbGVtZW50KCk7Ci0g
ICAgICAgIH0KLQorICAgICAgICBXZWJDb3JlOjpGcmFtZSogZnJhbWUgPSBkLT5tYWluRnJhbWUt
PmQtPmZyYW1lOworICAgICAgICBpZiAoZWRpdGFibGUpIHsKKyAgICAgICAgICAgIGZyYW1lLT5h
cHBseUVkaXRpbmdTdHlsZVRvQm9keUVsZW1lbnQoKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBt
YWMgcG9ydCBjYWxscyB0aGlzIGlmIHRoZXJlIGlzIG5vIHNlbGVjdGVkRE9NUmFuZ2UKKyAgICAg
ICAgICAgIC8vZnJhbWUtPnNldFNlbGVjdGlvbkZyb21Ob25lKCk7CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgZnJhbWUtPnJlbW92ZUVkaXRpbmdTdHlsZUZyb21Cb2R5RWxlbWVudCgpOwog
ICAgICAgICBkLT51cGRhdGVFZGl0b3JBY3Rpb25zKCk7CiAgICAgfQogfQpAQCAtMjYwMiw3ICsy
NjAwLDYgQEAgdm9pZCBRV2ViUGFnZTo6dXBkYXRlUG9zaXRpb25EZXBlbmRlbnRBY3Rpb25zKGNv
bnN0IFFQb2ludCAmcG9zKQogICAgICAgICB9CiAgICAgfQogCi0gICAgZC0+Y3JlYXRlTWFpbkZy
YW1lKCk7CiAgICAgV2ViQ29yZTo6RnJhbWUqIGZvY3VzZWRGcmFtZSA9IGQtPnBhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBIaXRUZXN0UmVzdWx0IHJl
c3VsdCA9IGZvY3VzZWRGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50
KGZvY3VzZWRGcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHBvcyksIC8qYWxsb3dTaGFk
b3dDb250ZW50Ki8gZmFsc2UpOwogCkBAIC0yNjM2LDcgKzI2MzMsNiBAQCB2b2lkIFFXZWJQYWdl
Ojp1cGRhdGVQb3NpdGlvbkRlcGVuZGVudEFjdGlvbnMoY29uc3QgUVBvaW50ICZwb3MpCiAgICAg
Ly8gVGhpcyB3aG9sZSBwcm9jZXNzIGVuc3VyZXMgdGhhdCBhbnkgYWN0aW9ucyBwdXQgaW50byB0
byB0aGUgY29udGV4dCBtZW51IGhhcyB0aGUgcmlnaHQKICAgICAvLyBlbmFibGVtZW50LCB3aGls
ZSBhbHNvIGtlZXBpbmcgdGhlIGNvcnJlY3QgZW5hYmxlbWVudCBmb3IgYWN0aW9ucyB0aGF0IHdl
cmUgbGVmdCBvdXQgb2YKICAgICAvLyB0aGUgbWVudS4KLQogfQogCiAKZGlmZiAtLWdpdCBhL1dl
YktpdC9xdC9BcGkvcXdlYnBhZ2UuaCBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaAppbmRleCBm
MmJiZGUwLi5iNWY0YzYwIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmgKKysr
IGIvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5oCkBAIC0zOSw2ICszOSw3IEBAIFFUX0VORF9OQU1F
U1BBQ0UKIAogY2xhc3MgUVdlYkVsZW1lbnQ7CiBjbGFzcyBRV2ViRnJhbWU7CitjbGFzcyBRV2Vi
RnJhbWVQcml2YXRlOwogY2xhc3MgUVdlYk5ldHdvcmtSZXF1ZXN0OwogY2xhc3MgUVdlYkhpc3Rv
cnk7CiAKQEAgLTM3NCw2ICszNzUsNyBAQCBwcml2YXRlOgogICAgIFFXZWJQYWdlUHJpdmF0ZSAq
ZDsKIAogICAgIGZyaWVuZCBjbGFzcyBRV2ViRnJhbWU7CisgICAgZnJpZW5kIGNsYXNzIFFXZWJG
cmFtZVByaXZhdGU7CiAgICAgZnJpZW5kIGNsYXNzIFFXZWJQYWdlUHJpdmF0ZTsKICAgICBmcmll
bmQgY2xhc3MgUVdlYlZpZXc7CiAgICAgZnJpZW5kIGNsYXNzIFFHcmFwaGljc1dlYlZpZXc7CmRp
ZmYgLS1naXQgYS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRl
eCBlYTAzY2JkLi45NDhlNTdkIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBi
L1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NyBAQAorMjAwOS0xMC0yMiAgSmVkcnpl
aiBOb3dhY2tpICA8amVkcnplai5ub3dhY2tpQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIGluaXRpYWxpemF0aW9uIG9mIHRo
ZSBtYWluIGZyYW1lIHRvIHRoZSBRV2ViUGFnZSdzIGNvbnN0cnVjdG9yLgorICAgICAgICAKKyAg
ICAgICAgVGhlIG1haW4gZnJhbWUgc2hvdWxkIGJlIGNyZWF0ZWQgYXMgc29vbiBhcyBwb3NzaWJs
ZSB3aXRoIHRoZSBRV2ViUGFnZQorICAgICAgICBpbnN0YW5jZSwgYmVjYXVzZSBpdCBpcyBuZWVk
ZWQgaW4gdGhlIFdlYkNvcmU6OlBhZ2Ugd2hpY2ggaXMgYSBiYXNlCisgICAgICAgIGNsYXNzLiBU
aGUgYmVzdCBwbGFjZSBmb3IgaXQgaXMgUVdlYlBhZ2UncyBjb25zdHJ1Y3RvciwgYnV0IHN0aWxs
IGl0CisgICAgICAgIHNob3VsZCBiZSBwb3NzaWJsZSB0byBjb25uZWN0IHRoZSBmcmFtZUNyZWF0
ZWQgc2lnbmFsLgorICAgICAgICAKKyAgICAgICAgRW1pc3Npb24gb2YgdGhlIGZyYW1lQ3JlYXRl
ZCBzaWduYWwgd2FzIG1vdmVkIHRvIHRoZSBRV2ViRnJhbWU6OmluaXQoKQorICAgICAgICBhbmQg
ZGVsYXllZC4KKyAgICAgICAgTmV3IGF1dG90ZXN0cyB3ZXJlIGNyZWF0ZWQuCisgICAgICAgIFJl
ZHVuZGFudCBjaGVja3MgZm9yIG1haW5GcmFtZSBpbiBRV2ViUGFnZSB3ZXJlIHJlbW92ZWQuCisg
ICAgICAgIEZ1bmN0aW9uYWxpdHkgd2FzIHVuY2hhbmdlZC4KKworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjk4MDMKKworICAgICAgICAqIEFwaS9xd2Vi
ZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lUHJpdmF0ZTo6aW5pdCk6CisgICAgICAgIChR
V2ViRnJhbWVQcml2YXRlOjpwcm9wYWdhdGVGcmFtZUNyZWF0ZWQpOgorICAgICAgICAqIEFwaS9x
d2ViZnJhbWUuaDoKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lX3AuaDoKKyAgICAgICAgKFFXZWJG
cmFtZVByaXZhdGU6OmdldCk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAg
KFFXZWJQYWdlUHJpdmF0ZTo6Y3JlYXRlTWFpbkZyYW1lKToKKyAgICAgICAgKFFXZWJQYWdlUHJp
dmF0ZTo6dXBkYXRlQWN0aW9uKToKKyAgICAgICAgKFFXZWJQYWdlOjpzZXRQYWxldHRlKToKKyAg
ICAgICAgKFFXZWJQYWdlOjpRV2ViUGFnZSk6CisgICAgICAgIChRV2ViUGFnZTo6flFXZWJQYWdl
KToKKyAgICAgICAgKFFXZWJQYWdlOjptYWluRnJhbWUpOgorICAgICAgICAoUVdlYlBhZ2U6OmN1
cnJlbnRGcmFtZSk6CisgICAgICAgIChRV2ViUGFnZTo6aGlzdG9yeSk6CisgICAgICAgIChRV2Vi
UGFnZTo6dmlld3BvcnRTaXplKToKKyAgICAgICAgKFFXZWJQYWdlOjpzZWxlY3RlZFRleHQpOgor
ICAgICAgICAoUVdlYlBhZ2U6OnNldENvbnRlbnRFZGl0YWJsZSk6CisgICAgICAgIChRV2ViUGFn
ZTo6dXBkYXRlUG9zaXRpb25EZXBlbmRlbnRBY3Rpb25zKToKKyAgICAgICAgKiBBcGkvcXdlYnBh
Z2UuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZUZyYW1lKToKKyAg
ICAgICAgKiB0ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAodHN0X1FX
ZWJQYWdlOjpmcmFtZUNyZWF0ZWRTaWduYWwpOgorICAgICAgICAodHN0X1FXZWJQYWdlOjpmcmFt
ZUNyZWF0ZWRTaWduYWxfY291bnQpOgorICAgICAgICAoUVdlYkZyYW1lUG9pbnRlckNoZWNrZXI6
OmNoZWNrKToKKyAgICAgICAgKFFXZWJGcmFtZVBvaW50ZXJDaGVja2VyOjpRV2ViRnJhbWVQb2lu
dGVyQ2hlY2tlcik6CisgICAgICAgIChRV2ViRnJhbWVQb2ludGVyQ2hlY2tlcjo6aXNPayk6Cisg
ICAgICAgIChRV2ViRnJhbWVQb2ludGVyQ2hlY2tlcjo6aXNGYWlsKToKKyAgICAgICAgKFFXZWJG
cmFtZVBvaW50ZXJDaGVja2VyOjpjaGVja1BvaW50ZXIpOgorICAgICAgICAodHN0X1FXZWJQYWdl
OjpmcmFtZUNyZWF0ZWRTaWduYWxfSlNjaGVja1BvaW50ZXJfZGF0YSk6CisgICAgICAgICh0c3Rf
UVdlYlBhZ2U6OmZyYW1lQ3JlYXRlZFNpZ25hbF9KU2NoZWNrUG9pbnRlcik6CisgICAgICAgICh0
c3RfUVdlYlBhZ2U6OmZyYW1lQ3JlYXRlZFNpZ25hbF9jaGVja1BvaW50ZXIpOgorICAgICAgICAq
IHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5xcmM6CisKIDIwMDktMTAtMjAgIEtlbm5ldGgg
Um9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmll
d2VkIEJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRRdC5jcHAgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRRdC5jcHAKaW5kZXggODFjY2JlOC4uYTZmMzJjZSAxMDA2NDQKLS0tIGEvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCisrKyBiL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcApAQCAtMTAyNiwxMCAr
MTAyNiw3IEBAIFBhc3NSZWZQdHI8RnJhbWU+IEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZUZy
YW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nCiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KIAotICAgIGVtaXQgbV93ZWJGcmFtZS0+cGFnZSgpLT5mcmFtZUNyZWF0ZWQod2ViRnJhbWUp
OwotCiAgICAgLy8gIyMjIHNldCBvdmVycmlkZSBlbmNvZGluZyBpZiB3ZSBoYXZlIG9uZQotCiAg
ICAgZnJhbWVEYXRhLmZyYW1lLT5sb2FkZXIoKS0+bG9hZFVSTEludG9DaGlsZEZyYW1lKGZyYW1l
RGF0YS51cmwsIGZyYW1lRGF0YS5yZWZlcnJlciwgZnJhbWVEYXRhLmZyYW1lLmdldCgpKTsKIAog
ICAgIC8vIFRoZSBmcmFtZSdzIG9ubG9hZCBoYW5kbGVyIG1heSBoYXZlIHJlbW92ZWQgaXQgZnJv
bSB0aGUgZG9jdW1lbnQuCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvdGVzdHMvcXdlYnBhZ2UvZnJh
bWV0ZXN0L2ZyYW1lX3JtMS5odG1sIGIvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwYWdlL2ZyYW1ldGVz
dC9mcmFtZV9ybTEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Zjg1
YjRkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwYWdlL2ZyYW1ldGVz
dC9mcmFtZV9ybTEuaHRtbApAQCAtMCwwICsxLDkgQEAKKzxodG1sPgorPGJvZHkgb25sb2FkPSJq
YXZhc2NyaXB0OnRvcC5sb2NhdGlvbi5ocmVmPWJvdHRvbS5sb2NhdGlvbi5ocmVmOyI+Cis8ZnJh
bWVzZXQgbmFtZT0iZnJhbWVzIiByb3dzPSI3MCUsIDE1JSwgMTUlIj4KKyA8ZnJhbWUgLz4KKyA8
ZnJhbWUgLz4KKyA8ZnJhbWUgbmFtZT0iYm90dG9tIiAvPgorPC9mcmFtZXNldD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC90ZXN0cy9xd2VicGFnZS9mcmFtZXRlc3Qv
ZnJhbWVfcm0yLmh0bWwgYi9XZWJLaXQvcXQvdGVzdHMvcXdlYnBhZ2UvZnJhbWV0ZXN0L2ZyYW1l
X3JtMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyNWNkOTEKLS0t
IC9kZXYvbnVsbAorKysgYi9XZWJLaXQvcXQvdGVzdHMvcXdlYnBhZ2UvZnJhbWV0ZXN0L2ZyYW1l
X3JtMi5odG1sCkBAIC0wLDAgKzEsMjEgQEAKKzxodG1sPgorPHNjcmlwdD4KK2Z1bmN0aW9uIHJl
bW92ZSgpCit7CisgIGZyYW1lc2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2Zy
YW1lc2V0JylbMF07CisgIGZvciAodmFyIGk9MDsgaTwyNSA7aSsrKSB7CisgICAgZnJhbWUgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZnJhbWUnKVswXTsKKyAgICBmcmFtZXNldC5y
ZW1vdmVDaGlsZChmcmFtZSk7CisgICAgZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdm
cmFtZScpCisgICAgZnJhbWVzZXQuYXBwZW5kQ2hpbGQoZnJhbWUpOworICB9Cit9Cis8L3Njcmlw
dD4KKzxib2R5IG9ubG9hZD0icmVtb3ZlKCk7Ij4KKzxmcmFtZXNldCBuYW1lPSJmcmFtZXMiIHJv
d3M9IjcwJSwgMTUlLCAxNSUiPgorIDxmcmFtZSAvPgorIDxmcmFtZSAvPgorIDxmcmFtZSAvPgor
PC9mcmFtZXNldD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC90ZXN0
cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwIGIvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwYWdlL3Rz
dF9xd2VicGFnZS5jcHAKaW5kZXggMjFiM2JjNy4uYjM1NzdhNyAxMDA2NDQKLS0tIGEvV2ViS2l0
L3F0L3Rlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAKKysrIGIvV2ViS2l0L3F0L3Rlc3Rz
L3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAKQEAgLTEyMywxMSArMTIzLDE0IEBAIHByaXZhdGUg
c2xvdHM6CiAgICAgdm9pZCBpbnB1dE1ldGhvZHMoKTsKICAgICB2b2lkIGRlZmF1bHRUZXh0RW5j
b2RpbmcoKTsKICAgICB2b2lkIGVycm9yUGFnZUV4dGVuc2lvbigpOwotCiAgICAgdm9pZCBjcmFz
aFRlc3RzX0xhenlJbml0aWFsaXphdGlvbk9mTWFpbkZyYW1lKCk7Ci0KICAgICB2b2lkIHNjcmVl
bnNob3RfZGF0YSgpOwogICAgIHZvaWQgc2NyZWVuc2hvdCgpOworICAgIHZvaWQgZnJhbWVDcmVh
dGVkU2lnbmFsKCk7CisgICAgdm9pZCBmcmFtZUNyZWF0ZWRTaWduYWxfY291bnQoKTsKKyAgICB2
b2lkIGZyYW1lQ3JlYXRlZFNpZ25hbF9KU2NoZWNrUG9pbnRlcl9kYXRhKCk7CisgICAgdm9pZCBm
cmFtZUNyZWF0ZWRTaWduYWxfSlNjaGVja1BvaW50ZXIoKTsKKyAgICB2b2lkIGZyYW1lQ3JlYXRl
ZFNpZ25hbF9jaGVja1BvaW50ZXIoKTsKIAogcHJpdmF0ZToKICAgICBRV2ViVmlldyogbV92aWV3
OwpAQCAtMTYwOSw1ICsxNjEyLDEwMiBAQCB2b2lkIHRzdF9RV2ViUGFnZTo6c2NyZWVuc2hvdCgp
CiAgICAgUURpcjo6c2V0Q3VycmVudChRQXBwbGljYXRpb246OmFwcGxpY2F0aW9uRGlyUGF0aCgp
KTsKIH0KIAordm9pZCB0c3RfUVdlYlBhZ2U6OmZyYW1lQ3JlYXRlZFNpZ25hbCgpCit7CisgICAg
Ly8gQSBNYWluRnJhbWUgc2hvdWxkIGJlIGNyZWF0ZWQgYmVmb3JlIH5RV2ViUGFnZSBiZWNhdXNl
IHRoZSBXZWJDb3JlOjpQYWdlICh0aGUgYmFzZSBjbGFzc3MpCisgICAgLy8gdXNlIHRoZSBmcmFt
ZSBpbiB0aGUgZGVzdHJ1Y3Rvci4KKyAgICBRV2ViUGFnZSBwYWdlOworICAgIGJvb2wgc2lnbiA9
IHdhaXRGb3JTaWduYWwoJnBhZ2UsIFNJR05BTChmcmFtZUNyZWF0ZWQoUVdlYkZyYW1lKikpKTsK
KyAgICBRVkVSSUZZMihzaWduLCAiQSBRV2ViRnJhbWUgaGFzbid0IGJlZW4gY3JlYXRlZCBiZWZv
cmUgflFXZWJQYWdlIik7Cit9CisKK3ZvaWQgdHN0X1FXZWJQYWdlOjpmcmFtZUNyZWF0ZWRTaWdu
YWxfY291bnQoKQoreworICAgIFFXZWJQYWdlKiBwYWdlID0gbmV3IFFXZWJQYWdlKCk7CisgICAg
UVNpZ25hbFNweSBzcHkocGFnZSwgU0lHTkFMKGZyYW1lQ3JlYXRlZChRV2ViRnJhbWUqKSkpOwor
ICAgIFFFdmVudExvb3AgbG9vcDsKKyAgICBsb29wLmNvbm5lY3QocGFnZSwgU0lHTkFMKGxvYWRG
aW5pc2hlZChib29sKSksIFNMT1QocXVpdCgpKSk7CisgICAgcGFnZS0+bWFpbkZyYW1lKCktPmxv
YWQoUVVybCgicXJjOi8vL2ZyYW1ldGVzdC9pZnJhbWUuaHRtbCIpKTsKKyAgICBsb29wLmV4ZWMo
KTsKKyAgICBRVkVSSUZZKHNweS5jb3VudCgpID09IDMpOyAvLyBUaGVyZSBhcmUgMyBpZnJhbWVz
IG1haW4gKyAyICJyZWN1cnNpdmUiLgorICAgIGRlbGV0ZSBwYWdlOworfQorCisvKiBIZWxwZXIg
Y2xhc3MuIENoZWNrcyBpZiBnaXZlbiBRV2ViRnJhbWUgcG9pbnRlciBpcyBhIGNoaWxkIG9mIHBh
Z2UncyBtYWluRnJhbWUgKi8KK2NsYXNzIFFXZWJGcmFtZVBvaW50ZXJDaGVja2VyCisgICAgOiBw
dWJsaWMgUU9iamVjdAoreworICAgIFFfT0JKRUNUCisKKyAgICBRV2ViUGFnZSogbV9wYWdlOwor
ICAgIGJvb2wgbV9yZXN1bHQ7CisgICAgdW5zaWduZWQgbV9jaGVja3NDb3VudDsKKworICAgIGJv
b2wgY2hlY2soUVdlYkZyYW1lKiBtYWluLCBRV2ViRnJhbWUqIGZyYW1lKQorICAgIHsKKyAgICAg
ICAgaWYgKG1haW4gPT0gZnJhbWUpIHJldHVybiB0cnVlOworICAgICAgICBRTGlzdDxRV2ViRnJh
bWUqPjo6Y29uc3RfaXRlcmF0b3IgaSA9IG1haW4tPmNoaWxkRnJhbWVzKCkuY29uc3RCZWdpbigp
OworICAgICAgICBmb3IoOyBpICE9IG1haW4tPmNoaWxkRnJhbWVzKCkuY29uc3RFbmQoKTsgaSsr
KSB7CisgICAgICAgICAgICBpZiAoKmkgPT0gZnJhbWUpIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgaWYgKGNoZWNrKCppLCBmcmFtZSkpIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CitwdWJsaWM6CisgICAgUVdlYkZyYW1lUG9pbnRlckNoZWNr
ZXIoUVdlYlBhZ2UqIHBhZ2UpCisgICAgICAgIDogbV9wYWdlKHBhZ2UpCisgICAgICAgICwgbV9y
ZXN1bHQodHJ1ZSkKKyAgICAgICAgLCBtX2NoZWNrc0NvdW50KDApCisgICAge30KKyAgICBib29s
IGlzT2soKSB7IHJldHVybiBtX3Jlc3VsdDsgfQorICAgIGJvb2wgaXNGYWlsKCkgeyByZXR1cm4g
IW1fcmVzdWx0OyB9CitwdWJsaWMgc2xvdHM6CisgICAgdm9pZCBjaGVja1BvaW50ZXIoUVdlYkZy
YW1lKiBmcmFtZSkKKyAgICB7CisgICAgICAgIG1fY2hlY2tzQ291bnQrKzsKKyAgICAgICAgaWYg
KGlzT2soKSkKKyAgICAgICAgICAgIG1fcmVzdWx0ID0gY2hlY2sobV9wYWdlLT5tYWluRnJhbWUo
KSwgZnJhbWUpOworICAgIH0KK307CisKK3ZvaWQgdHN0X1FXZWJQYWdlOjpmcmFtZUNyZWF0ZWRT
aWduYWxfSlNjaGVja1BvaW50ZXJfZGF0YSgpCit7CisgICAgUVRlc3Q6OmFkZENvbHVtbjxRVXJs
PigidXJsIik7CisgICAgUVRlc3Q6Om5ld1Jvdygic2ltcGxlIGlmcmFtZXMiKSA8PCBRVXJsKCJx
cmM6Ly8vZnJhbWV0ZXN0L2lmcmFtZS5odG1sIik7CisgICAgUVRlc3Q6Om5ld1Jvdygic2ltcGxl
IGZyYW1lcyIpIDw8IFFVcmwoInFyYzovLy9mcmFtZXRlc3QvaW5kZXguaHRtbCIpOworICAgIFFU
ZXN0OjpuZXdSb3coImZyYW1lcyBhdXRvcmVtb3ZlIikgPDwgUVVybCgicXJjOi8vL2ZyYW1ldGVz
dC9mcmFtZV9ybTEuaHRtbCIpOworICAgIFFUZXN0OjpuZXdSb3coImZyYW1lcyBjcmVhdGUgYW5k
IHJlbW92ZSIpIDw8IFFVcmwoInFyYzovLy9mcmFtZXRlc3QvZnJhbWVfcm0yLmh0bWwiKTsKK30K
Kwordm9pZCB0c3RfUVdlYlBhZ2U6OmZyYW1lQ3JlYXRlZFNpZ25hbF9KU2NoZWNrUG9pbnRlcigp
Cit7CisgICAgUUZFVENIKFFVcmwsIHVybCk7CisgICAgUVdlYlBhZ2UqIHBhZ2UgPSBuZXcgUVdl
YlBhZ2UoKTsKKyAgICBRV2ViRnJhbWVQb2ludGVyQ2hlY2tlciBjaGVja2VyKHBhZ2UpOworICAg
IGNoZWNrZXIuY29ubmVjdChwYWdlLCBTSUdOQUwoZnJhbWVDcmVhdGVkKFFXZWJGcmFtZSopKSwg
U0xPVChjaGVja1BvaW50ZXIoUVdlYkZyYW1lKikpKTsKKyAgICBRRXZlbnRMb29wIGxvb3A7Cisg
ICAgbG9vcC5jb25uZWN0KHBhZ2UsIFNJR05BTChsb2FkRmluaXNoZWQoYm9vbCkpLCBTTE9UKHF1
aXQoKSkpOworICAgIHBhZ2UtPm1haW5GcmFtZSgpLT5sb2FkKHVybCk7CisgICAgbG9vcC5leGVj
KCk7CisgICAgUVZFUklGWShjaGVja2VyLmlzT2soKSk7CisgICAgZGVsZXRlIHBhZ2U7Cit9CisK
K3ZvaWQgdHN0X1FXZWJQYWdlOjpmcmFtZUNyZWF0ZWRTaWduYWxfY2hlY2tQb2ludGVyKCkKK3sK
KyAgICBRV2ViUGFnZSogcGFnZSA9IG5ldyBRV2ViUGFnZSgpOworICAgIFFXZWJGcmFtZSogZnJh
bWUgPSBwYWdlLT5tYWluRnJhbWUoKTsKKyAgICBRV2ViRnJhbWVQb2ludGVyQ2hlY2tlciBjaGVj
a2VyKHBhZ2UpOworICAgIGNoZWNrZXIuY29ubmVjdChwYWdlLCBTSUdOQUwoZnJhbWVDcmVhdGVk
KFFXZWJGcmFtZSopKSwgU0xPVChjaGVja1BvaW50ZXIoUVdlYkZyYW1lKikpKTsKKyAgICBRRXZl
bnRMb29wIGxvb3A7CisgICAgbG9vcC5jb25uZWN0KHBhZ2UsIFNJR05BTChsb2FkRmluaXNoZWQo
Ym9vbCkpLCBTTE9UKHF1aXQoKSkpOworICAgIGZyYW1lLT5sb2FkKFFVcmwoInFyYzovLy9mcmFt
ZXRlc3QvZnJhbWVfcm0yLmh0bWwiKSk7CisgICAgZnJhbWUtPmV2YWx1YXRlSmF2YVNjcmlwdCgi
cmVtb3ZlKCk7Iik7CisgICAgbG9vcC5leGVjKCk7ICAgICAgICAvLyBXYWl0IGZvciBsb2FkRmlu
aXNoIHNpZ25hbC4KKyAgICBRVGVzdDo6cVdhaXQoNTAwKTsgIC8vIFdhaXQgZm9yIGFsbCBqcyBz
Y3JpcHRzIGFuZCBvdGhlciBzaWduYWxzLgorICAgIFFWRVJJRlkoY2hlY2tlci5pc09rKCkpOwor
ICAgIGRlbGV0ZSBwYWdlOworfQorCiBRVEVTVF9NQUlOKHRzdF9RV2ViUGFnZSkKICNpbmNsdWRl
ICJ0c3RfcXdlYnBhZ2UubW9jIgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwYWdl
L3RzdF9xd2VicGFnZS5xcmMgYi9XZWJLaXQvcXQvdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdl
LnFyYwppbmRleCAzMDg1Y2UyLi43YmQ4MDNkIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvdGVzdHMv
cXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLnFyYworKysgYi9XZWJLaXQvcXQvdGVzdHMvcXdlYnBhZ2Uv
dHN0X3F3ZWJwYWdlLnFyYwpAQCAtMSwxMCArMSwxMSBAQAotPCFET0NUWVBFIFJDQz48UkNDIHZl
cnNpb249IjEuMCI+Ci08cXJlc291cmNlPgotICAgIDxmaWxlPmZyYW1ldGVzdC9pbmRleC5odG1s
PC9maWxlPgotICAgIDxmaWxlPmZyYW1ldGVzdC9mcmFtZV9hLmh0bWw8L2ZpbGU+Ci0gICAgPGZp
bGU+ZnJhbWV0ZXN0L2lmcmFtZS5odG1sPC9maWxlPgotICAgIDxmaWxlPmZyYW1ldGVzdC9pZnJh
bWUyLmh0bWw8L2ZpbGU+Ci0gICAgPGZpbGU+ZnJhbWV0ZXN0L2lmcmFtZTMuaHRtbDwvZmlsZT4K
LTwvcXJlc291cmNlPgorPFJDQz4KKyAgICA8cXJlc291cmNlIHByZWZpeD0iLyI+CisgICAgICAg
IDxmaWxlPmZyYW1ldGVzdC9pbmRleC5odG1sPC9maWxlPgorICAgICAgICA8ZmlsZT5mcmFtZXRl
c3QvZnJhbWVfYS5odG1sPC9maWxlPgorICAgICAgICA8ZmlsZT5mcmFtZXRlc3QvaWZyYW1lLmh0
bWw8L2ZpbGU+CisgICAgICAgIDxmaWxlPmZyYW1ldGVzdC9pZnJhbWUyLmh0bWw8L2ZpbGU+Cisg
ICAgICAgIDxmaWxlPmZyYW1ldGVzdC9pZnJhbWUzLmh0bWw8L2ZpbGU+CisgICAgICAgIDxmaWxl
PmZyYW1ldGVzdC9mcmFtZV9ybTIuaHRtbDwvZmlsZT4KKyAgICAgICAgPGZpbGU+ZnJhbWV0ZXN0
L2ZyYW1lX3JtMS5odG1sPC9maWxlPgorICAgIDwvcXJlc291cmNlPgogPC9SQ0M+Ci0K
</data>
<flag name="review"
          id="23077"
          type_id="1"
          status="-"
          setter="zecke"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41660</attachid>
            <date>2009-10-22 08:53:24 -0700</date>
            <delta_ts>2009-10-26 16:09:41 -0700</delta_ts>
            <desc>patch next version</desc>
            <filename>signal.diff</filename>
            <type>text/plain</type>
            <size>17843</size>
            <attacher name="Jędrzej Nowacki">jedrzej.nowacki</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcCBiL1dlYktpdC9xdC9BcGkv
cXdlYmZyYW1lLmNwcAppbmRleCA0NWRiZmJhLi5kNWI1ZjllIDEwMDY0NAotLS0gYS9XZWJLaXQv
cXQvQXBpL3F3ZWJmcmFtZS5jcHAKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCkBA
IC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiSlNET01XaW5kb3dCYXNlLmgiCiAjaW5jbHVkZSAi
SlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJtb2NfcXdlYmZyYW1l
LmNwcCIKICNpbmNsdWRlICJOb2RlTGlzdC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKQEAgLTIwNywxNSArMjA4LDIxIEBAIFFXZWJGcmFtZURh
dGE6OlFXZWJGcmFtZURhdGEoV2ViQ29yZTo6UGFnZSogcGFyZW50UGFnZSwgV2ViQ29yZTo6RnJh
bWUqIHBhcmVudEZyCiB2b2lkIFFXZWJGcmFtZVByaXZhdGU6OmluaXQoUVdlYkZyYW1lICpxZnJh
bWUsIFFXZWJGcmFtZURhdGEgKmZyYW1lRGF0YSkKIHsKICAgICBxID0gcWZyYW1lOwotCiAgICAg
YWxsb3dzU2Nyb2xsaW5nID0gZnJhbWVEYXRhLT5hbGxvd3NTY3JvbGxpbmc7CiAgICAgbWFyZ2lu
V2lkdGggPSBmcmFtZURhdGEtPm1hcmdpbldpZHRoOwogICAgIG1hcmdpbkhlaWdodCA9IGZyYW1l
RGF0YS0+bWFyZ2luSGVpZ2h0OwogICAgIGZyYW1lID0gZnJhbWVEYXRhLT5mcmFtZS5nZXQoKTsK
ICAgICBmcmFtZUxvYWRlckNsaWVudCA9IGZyYW1lRGF0YS0+ZnJhbWVMb2FkZXJDbGllbnQ7CiAg
ICAgZnJhbWVMb2FkZXJDbGllbnQtPnNldEZyYW1lKHFmcmFtZSwgZnJhbWUpOwotCiAgICAgZnJh
bWUtPmluaXQoKTsKKyAgICAvLyBEZWxheSB0aGUgc2lnbmFsIFFXZWJQYWdlOjpmcmFtZUNyZWF0
ZWQoUVdlYkZyYW1lKiksIGJlY2F1c2UgdGhlIFFXZWJQYWdlIG1pZ2h0IG5vdCBiZQorICAgIC8v
IGZ1bGx5IGNyZWF0ZWQgKG5vIHdheSB0byBjb25uZWN0IHRvIHRoZSBzaWduYWwpLgorICAgIFFN
ZXRhT2JqZWN0OjppbnZva2VNZXRob2QocSAsICJwcm9wYWdhdGVGcmFtZUNyZWF0ZWQiLCBRdDo6
UXVldWVkQ29ubmVjdGlvbik7Cit9CisKK3ZvaWQgUVdlYkZyYW1lUHJpdmF0ZTo6cHJvcGFnYXRl
RnJhbWVDcmVhdGVkKCkKK3sKKyAgICBlbWl0IHBhZ2UtPmZyYW1lQ3JlYXRlZChxKTsKIH0KIAog
V2ViQ29yZTo6U2Nyb2xsYmFyKiBRV2ViRnJhbWVQcml2YXRlOjpob3Jpem9udGFsU2Nyb2xsQmFy
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmggYi9XZWJLaXQv
cXQvQXBpL3F3ZWJmcmFtZS5oCmluZGV4IGU0Y2VmMDYuLjM5ODYzYzIgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9xdC9BcGkvcXdlYmZyYW1lLmgKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuaApA
QCAtMTEzLDYgKzExMyw3IEBAIGNsYXNzIFFXRUJLSVRfRVhQT1JUIFFXZWJGcmFtZSA6IHB1Ymxp
YyBRT2JqZWN0IHsKICAgICBRX1BST1BFUlRZKFFTaXplIGNvbnRlbnRzU2l6ZSBSRUFEIGNvbnRl
bnRzU2l6ZSkKICAgICBRX1BST1BFUlRZKFFQb2ludCBzY3JvbGxQb3NpdGlvbiBSRUFEIHNjcm9s
bFBvc2l0aW9uIFdSSVRFIHNldFNjcm9sbFBvc2l0aW9uKQogICAgIFFfUFJPUEVSVFkoYm9vbCBm
b2N1cyBSRUFEIGhhc0ZvY3VzKQorICAgIFFfUFJJVkFURV9TTE9UKGQsIHZvaWQgcHJvcGFnYXRl
RnJhbWVDcmVhdGVkKCkpOwogcHJpdmF0ZToKICAgICBRV2ViRnJhbWUoUVdlYlBhZ2UgKnBhcmVu
dCwgUVdlYkZyYW1lRGF0YSAqZnJhbWVEYXRhKTsKICAgICBRV2ViRnJhbWUoUVdlYkZyYW1lICpw
YXJlbnQsIFFXZWJGcmFtZURhdGEgKmZyYW1lRGF0YSk7CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQv
QXBpL3F3ZWJmcmFtZV9wLmggYi9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZV9wLmgKaW5kZXggMDgx
ZTY1ZC4uYmJiZGEwMiAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWVfcC5oCisr
KyBiL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lX3AuaApAQCAtODAsOCArODAsMTEgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIFdlYkNvcmU6OkZyYW1lKiBjb3JlKFFXZWJGcmFtZSopOwogICAgIHN0
YXRpYyBRV2ViRnJhbWUqIGtpdChXZWJDb3JlOjpGcmFtZSopOworICAgIHN0YXRpYyBRV2ViRnJh
bWUqIGdldChRV2ViRnJhbWVQcml2YXRlKiBwcml2KSB7IHJldHVybiBwcml2LT5xOyB9CisgICAg
c3RhdGljIFFXZWJGcmFtZVByaXZhdGUqIGdldChRV2ViRnJhbWUqIHB1YikgeyByZXR1cm4gcHVi
LT5kOyB9CiAKICAgICB2b2lkIHJlbmRlclByaXZhdGUoUVBhaW50ZXIqLCBRV2ViRnJhbWU6OlJl
bmRlckxheWVyLCBjb25zdCBRUmVnaW9uJiBjbGlwKTsKKyAgICB2b2lkIHByb3BhZ2F0ZUZyYW1l
Q3JlYXRlZCgpOwogCiAgICAgUVdlYkZyYW1lICpxOwogICAgIFF0OjpTY3JvbGxCYXJQb2xpY3kg
aG9yaXpvbnRhbFNjcm9sbEJhclBvbGljeTsKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdl
YnBhZ2UuY3BwIGIvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKaW5kZXggMzFkMTkzZS4uZDRk
ZGMzMCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKKysrIGIvV2ViS2l0
L3F0L0FwaS9xd2VicGFnZS5jcHAKQEAgLTMzOSw4ICszMzksNiBAQCB2b2lkIFFXZWJQYWdlUHJp
dmF0ZTo6Y3JlYXRlTWFpbkZyYW1lKCkKICAgICBpZiAoIW1haW5GcmFtZSkgewogICAgICAgICBR
V2ViRnJhbWVEYXRhIGZyYW1lRGF0YShwYWdlKTsKICAgICAgICAgbWFpbkZyYW1lID0gbmV3IFFX
ZWJGcmFtZShxLCAmZnJhbWVEYXRhKTsKLQotICAgICAgICBlbWl0IHEtPmZyYW1lQ3JlYXRlZCht
YWluRnJhbWUpOwogICAgIH0KIH0KIApAQCAtNDQ3LDcgKzQ0NSw3IEBAIHZvaWQgUVdlYlBhZ2VQ
cml2YXRlOjpfcV9jbGVhbnVwTGVha01lc3NhZ2VzKCkKIHZvaWQgUVdlYlBhZ2VQcml2YXRlOjp1
cGRhdGVBY3Rpb24oUVdlYlBhZ2U6OldlYkFjdGlvbiBhY3Rpb24pCiB7CiAgICAgUUFjdGlvbiAq
YSA9IGFjdGlvbnNbYWN0aW9uXTsKLSAgICBpZiAoIWEgfHwgIW1haW5GcmFtZSkKKyAgICBpZiAo
IWEpCiAgICAgICAgIHJldHVybjsKIAogICAgIFdlYkNvcmU6OkZyYW1lTG9hZGVyICpsb2FkZXIg
PSBtYWluRnJhbWUtPmQtPmZyYW1lLT5sb2FkZXIoKTsKQEAgLTEwODMsNyArMTA4MSw3IEBAIHZv
aWQgUVdlYlBhZ2VQcml2YXRlOjpsZWF2ZUV2ZW50KFFFdmVudCopCiB2b2lkIFFXZWJQYWdlOjpz
ZXRQYWxldHRlKGNvbnN0IFFQYWxldHRlICZwYWwpCiB7CiAgICAgZC0+cGFsZXR0ZSA9IHBhbDsK
LSAgICBpZiAoIWQtPm1haW5GcmFtZSB8fCAhZC0+bWFpbkZyYW1lLT5kLT5mcmFtZS0+dmlldygp
KQorICAgIGlmICghZC0+bWFpbkZyYW1lLT5kLT5mcmFtZS0+dmlldygpKQogICAgICAgICByZXR1
cm47CiAKICAgICBRQnJ1c2ggYnJ1c2ggPSBwYWwuYnJ1c2goUVBhbGV0dGU6OkJhc2UpOwpAQCAt
MTU4NSw2ICsxNTgzLDcgQEAgUVdlYlBhZ2U6OlFXZWJQYWdlKFFPYmplY3QgKnBhcmVudCkKICAg
ICA6IFFPYmplY3QocGFyZW50KQogICAgICwgZChuZXcgUVdlYlBhZ2VQcml2YXRlKHRoaXMpKQog
eworICAgIGQtPmNyZWF0ZU1haW5GcmFtZSgpOwogICAgIHNldFZpZXcocW9iamVjdF9jYXN0PFFX
aWRnZXQgKj4ocGFyZW50KSk7CiAKICAgICBjb25uZWN0KHRoaXMsIFNJR05BTChsb2FkUHJvZ3Jl
c3MoaW50KSksIHRoaXMsIFNMT1QoX3Ffb25Mb2FkUHJvZ3Jlc3NDaGFuZ2VkKGludCkpKTsKQEAg
LTE1OTgsNyArMTU5Nyw2IEBAIFFXZWJQYWdlOjpRV2ViUGFnZShRT2JqZWN0ICpwYXJlbnQpCiAq
LwogUVdlYlBhZ2U6On5RV2ViUGFnZSgpCiB7Ci0gICAgZC0+Y3JlYXRlTWFpbkZyYW1lKCk7CiAg
ICAgRnJhbWVMb2FkZXIgKmxvYWRlciA9IGQtPm1haW5GcmFtZS0+ZC0+ZnJhbWUtPmxvYWRlcigp
OwogICAgIGlmIChsb2FkZXIpCiAgICAgICAgIGxvYWRlci0+ZGV0YWNoRnJvbVBhcmVudCgpOwpA
QCAtMTYxNyw3ICsxNjE1LDYgQEAgUVdlYlBhZ2U6On5RV2ViUGFnZSgpCiAqLwogUVdlYkZyYW1l
ICpRV2ViUGFnZTo6bWFpbkZyYW1lKCkgY29uc3QKIHsKLSAgICBkLT5jcmVhdGVNYWluRnJhbWUo
KTsKICAgICByZXR1cm4gZC0+bWFpbkZyYW1lOwogfQogCkBAIC0xNjI4LDcgKzE2MjUsNiBAQCBR
V2ViRnJhbWUgKlFXZWJQYWdlOjptYWluRnJhbWUoKSBjb25zdAogKi8KIFFXZWJGcmFtZSAqUVdl
YlBhZ2U6OmN1cnJlbnRGcmFtZSgpIGNvbnN0CiB7Ci0gICAgZC0+Y3JlYXRlTWFpbkZyYW1lKCk7
CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQgKj4o
ZC0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5sb2FkZXIo
KS0+Y2xpZW50KCkpLT53ZWJGcmFtZSgpOwogfQogCkBAIC0xNjU0LDcgKzE2NTAsNiBAQCBRV2Vi
RnJhbWUqIFFXZWJQYWdlOjpmcmFtZUF0KGNvbnN0IFFQb2ludCYgcG9zKSBjb25zdAogKi8KIFFX
ZWJIaXN0b3J5ICpRV2ViUGFnZTo6aGlzdG9yeSgpIGNvbnN0CiB7Ci0gICAgZC0+Y3JlYXRlTWFp
bkZyYW1lKCk7CiAgICAgcmV0dXJuICZkLT5oaXN0b3J5OwogfQogCkBAIC0xOTI3LDYgKzE5MjIs
MTMgQEAgdm9pZCBRV2ViUGFnZTo6dHJpZ2dlckFjdGlvbihXZWJBY3Rpb24gYWN0aW9uLCBib29s
KQogCiBRU2l6ZSBRV2ViUGFnZTo6dmlld3BvcnRTaXplKCkgY29uc3QKIHsKKyAgICAvLyBDaGVj
ayBmb3IgZC0+bWFpbkZyYW1lIGlzIG5lY2Vzc2FyeSBoZXJlLCBiZWNhdXNlIG9mIHRoaXMgY2Fs
bCBjeWNsZToKKyAgICAvLyBRV2ViUGFnZSgpIC0+IFFXZWJGcmFtZSgpIC0+IEZyYW1lTG9hZGVy
Q2xpZW50UXQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKSAtPgorICAgIC8vIFFX
ZWJQYWdlOjp2aWV3cG9ydFNpemUoKS4gU28gaXQgbWVhbnMgdGhhdCB0byBjcmVhdGUgdGhlIG1h
aW5GcmFtZSB3ZSBoYXZlIHRvIGtub3cgYSBzaXplCisgICAgLy8gb2YgYSB2aWV3cG9ydC4gRGVm
YXVsdCBRU2l6ZSgwLCAwKSB3b3JrcyBvbmx5IGZvciBhIG5ldyBRV2ViUGFnZSBpbnN0YW5jZSwg
YnV0IGl0IHdvdWxkIGdpdmUKKyAgICAvLyB3ZWlyZCByZXN1bHRzIGZvciBvdGhlciBjYXNlcy4g
VGhlIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2Uo
KSBjb3VsZAorICAgIC8vIGJlIGNhbGxlZCBmb3IgYSBkaWZmZXJlbnQgbG9hZGluZyB0eXBlcyAo
bG9vayBhdAorICAgIC8vIEZyYW1lTG9hZGVyOjp0cmFuc2l0aW9uVG9Db21taXR0ZWQoUGFzc1Jl
ZlB0cjxDYWNoZWRQYWdlPikpLgogICAgIGlmIChkLT5tYWluRnJhbWUgJiYgZC0+bWFpbkZyYW1l
LT5kLT5mcmFtZS0+dmlldygpKQogICAgICAgICByZXR1cm4gZC0+bWFpbkZyYW1lLT5kLT5mcmFt
ZS0+dmlldygpLT5mcmFtZVJlY3QoKS5zaXplKCk7CiAKQEAgLTIwNDYsNyArMjA0OCw2IEBAIGJv
b2wgUVdlYlBhZ2U6OmFjY2VwdE5hdmlnYXRpb25SZXF1ZXN0KFFXZWJGcmFtZSAqZnJhbWUsIGNv
bnN0IFFXZWJOZXR3b3JrUmVxdWVzCiAqLwogUVN0cmluZyBRV2ViUGFnZTo6c2VsZWN0ZWRUZXh0
KCkgY29uc3QKIHsKLSAgICBkLT5jcmVhdGVNYWluRnJhbWUoKTsKICAgICByZXR1cm4gZC0+cGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5zZWxlY3RlZFRleHQo
KTsKIH0KIApAQCAtMjQ5NiwxNiArMjQ5NywxMyBAQCB2b2lkIFFXZWJQYWdlOjpzZXRDb250ZW50
RWRpdGFibGUoYm9vbCBlZGl0YWJsZSkKICAgICBpZiAoZC0+ZWRpdGFibGUgIT0gZWRpdGFibGUp
IHsKICAgICAgICAgZC0+ZWRpdGFibGUgPSBlZGl0YWJsZTsKICAgICAgICAgZC0+cGFnZS0+c2V0
VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzKCFlZGl0YWJsZSk7Ci0gICAgICAgIGlmIChkLT5t
YWluRnJhbWUpIHsKLSAgICAgICAgICAgIFdlYkNvcmU6OkZyYW1lKiBmcmFtZSA9IGQtPm1haW5G
cmFtZS0+ZC0+ZnJhbWU7Ci0gICAgICAgICAgICBpZiAoZWRpdGFibGUpIHsKLSAgICAgICAgICAg
ICAgICBmcmFtZS0+YXBwbHlFZGl0aW5nU3R5bGVUb0JvZHlFbGVtZW50KCk7Ci0gICAgICAgICAg
ICAgICAgLy8gRklYTUU6IG1hYyBwb3J0IGNhbGxzIHRoaXMgaWYgdGhlcmUgaXMgbm8gc2VsZWN0
ZWRET01SYW5nZQotICAgICAgICAgICAgICAgIC8vZnJhbWUtPnNldFNlbGVjdGlvbkZyb21Ob25l
KCk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBmcmFtZS0+cmVtb3ZlRWRp
dGluZ1N0eWxlRnJvbUJvZHlFbGVtZW50KCk7Ci0gICAgICAgIH0KLQorICAgICAgICBXZWJDb3Jl
OjpGcmFtZSogZnJhbWUgPSBkLT5tYWluRnJhbWUtPmQtPmZyYW1lOworICAgICAgICBpZiAoZWRp
dGFibGUpIHsKKyAgICAgICAgICAgIGZyYW1lLT5hcHBseUVkaXRpbmdTdHlsZVRvQm9keUVsZW1l
bnQoKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBtYWMgcG9ydCBjYWxscyB0aGlzIGlmIHRoZXJl
IGlzIG5vIHNlbGVjdGVkRE9NUmFuZ2UKKyAgICAgICAgICAgIC8vZnJhbWUtPnNldFNlbGVjdGlv
bkZyb21Ob25lKCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgZnJhbWUtPnJlbW92ZUVk
aXRpbmdTdHlsZUZyb21Cb2R5RWxlbWVudCgpOwogICAgICAgICBkLT51cGRhdGVFZGl0b3JBY3Rp
b25zKCk7CiAgICAgfQogfQpAQCAtMjYwMiw3ICsyNjAwLDYgQEAgdm9pZCBRV2ViUGFnZTo6dXBk
YXRlUG9zaXRpb25EZXBlbmRlbnRBY3Rpb25zKGNvbnN0IFFQb2ludCAmcG9zKQogICAgICAgICB9
CiAgICAgfQogCi0gICAgZC0+Y3JlYXRlTWFpbkZyYW1lKCk7CiAgICAgV2ViQ29yZTo6RnJhbWUq
IGZvY3VzZWRGcmFtZSA9IGQtPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWlu
RnJhbWUoKTsKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGZvY3VzZWRGcmFtZS0+ZXZlbnRI
YW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGZvY3VzZWRGcmFtZS0+dmlldygpLT53aW5k
b3dUb0NvbnRlbnRzKHBvcyksIC8qYWxsb3dTaGFkb3dDb250ZW50Ki8gZmFsc2UpOwogCkBAIC0y
NjM2LDcgKzI2MzMsNiBAQCB2b2lkIFFXZWJQYWdlOjp1cGRhdGVQb3NpdGlvbkRlcGVuZGVudEFj
dGlvbnMoY29uc3QgUVBvaW50ICZwb3MpCiAgICAgLy8gVGhpcyB3aG9sZSBwcm9jZXNzIGVuc3Vy
ZXMgdGhhdCBhbnkgYWN0aW9ucyBwdXQgaW50byB0byB0aGUgY29udGV4dCBtZW51IGhhcyB0aGUg
cmlnaHQKICAgICAvLyBlbmFibGVtZW50LCB3aGlsZSBhbHNvIGtlZXBpbmcgdGhlIGNvcnJlY3Qg
ZW5hYmxlbWVudCBmb3IgYWN0aW9ucyB0aGF0IHdlcmUgbGVmdCBvdXQgb2YKICAgICAvLyB0aGUg
bWVudS4KLQogfQogCiAKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaCBiL1dl
YktpdC9xdC9BcGkvcXdlYnBhZ2UuaAppbmRleCBmMmJiZGUwLi5iNWY0YzYwIDEwMDY0NAotLS0g
YS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmgKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5o
CkBAIC0zOSw2ICszOSw3IEBAIFFUX0VORF9OQU1FU1BBQ0UKIAogY2xhc3MgUVdlYkVsZW1lbnQ7
CiBjbGFzcyBRV2ViRnJhbWU7CitjbGFzcyBRV2ViRnJhbWVQcml2YXRlOwogY2xhc3MgUVdlYk5l
dHdvcmtSZXF1ZXN0OwogY2xhc3MgUVdlYkhpc3Rvcnk7CiAKQEAgLTM3NCw2ICszNzUsNyBAQCBw
cml2YXRlOgogICAgIFFXZWJQYWdlUHJpdmF0ZSAqZDsKIAogICAgIGZyaWVuZCBjbGFzcyBRV2Vi
RnJhbWU7CisgICAgZnJpZW5kIGNsYXNzIFFXZWJGcmFtZVByaXZhdGU7CiAgICAgZnJpZW5kIGNs
YXNzIFFXZWJQYWdlUHJpdmF0ZTsKICAgICBmcmllbmQgY2xhc3MgUVdlYlZpZXc7CiAgICAgZnJp
ZW5kIGNsYXNzIFFHcmFwaGljc1dlYlZpZXc7CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQ2hhbmdl
TG9nIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCBlYTAzY2JkLi5kNDJlNWU5IDEwMDY0NAot
LS0gYS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OCBAQAorMjAwOS0xMC0yMiAgSmVkcnplaiBOb3dhY2tpICA8amVkcnplai5ub3dhY2tp
QG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgbWFpbiBmcmFtZSBzaG91bGQgYmUgY3JlYXRlZCBhcyBzb29uIGFzIHBvc3NpYmxl
LgorCisgICAgICAgIFRoZSBtYWluIGZyYW1lIHNob3VsZCBiZSBjcmVhdGVkIGFzIHNvb24gYXMg
cG9zc2libGUgd2l0aCB0aGUgUVdlYlBhZ2UKKyAgICAgICAgaW5zdGFuY2UsIGJlY2F1c2UgaXQg
aXMgbmVlZGVkIGluIHRoZSBXZWJDb3JlOjpQYWdlIHdoaWNoIGlzIGEgYmFzZQorICAgICAgICBj
bGFzcy4gVGhlIGJlc3QgcGxhY2UgZm9yIGl0IGlzIFFXZWJQYWdlJ3MgY29uc3RydWN0b3IsIGJ1
dCBzdGlsbCBpdAorICAgICAgICBzaG91bGQgYmUgcG9zc2libGUgdG8gY29ubmVjdCB0aGUgZnJh
bWVDcmVhdGVkIHNpZ25hbCB0byBhIHNsb3QuCisKKyAgICAgICAgVW5uZWNlc3NhcnkgbGF6eSBp
bml0aWFsaXphdGlvbiBvZiB0aGUgbWFpbiBmcmFtZSB3YXMgcmVtb3ZlZCBhbmQKKyAgICAgICAg
dGhlIGZyYW1lIGNyZWF0aW9uIHdhcyBtb3ZlZCB0byB0aGUgUVdlYlBhZ2UgY29uc3RydWN0b3Iu
CisgICAgICAgIFJlZHVuZGFudCBjaGVja3MgZm9yIHRoZSBtYWluIGZyYW1lIGluIFFXZWJQYWdl
IHdlcmUgcmVtb3ZlZC4KKyAgICAgICAgCisgICAgICAgIEVtaXNzaW9uIG9mIHRoZSBmcmFtZUNy
ZWF0ZWQgc2lnbmFsIHdhcyBtb3ZlZCB0byBRV2ViRnJhbWU6OmluaXQoKSwKKyAgICAgICAgYmVj
YXVzZSBpdCBpcyB0aGUgbW9zdCByZWxpYWJsZSBwbGFjZS4gVGhlIG1ldGhvZCBpcyBjYWxsZWQg
ZnJvbSBib3RoCisgICAgICAgIFFXZWJGcmFtZSdzIGNvbnN0cnVjdG9ycy4KKyAgICAgICAgQXMg
dGhlIGZyYW1lQ3JlYXRlZCBzaWduYWwgaXMgZW1pdHRlZCBmcm9tIHRoZSBRV2ViUGFnZSBjb25z
dHJ1Y3RvciwgYW5kCisgICAgICAgIGl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBjb25uZWN0IGl0
IHRvIGEgc2xvdCBhZnRlciB0aGUgcGFnZSBpcworICAgICAgICBjb25zdHJ1Y3RlZCwgdGhlIGVt
aXNzaW9uIG9mIHRoZSBzaWduYWwgaXMgZGVsYXllZC4KKworICAgICAgICBOZXcgYXV0b3Rlc3Rz
IHdlcmUgY3JlYXRlZC4KKyAgICAgICAgCisgICAgICAgIEZ1bmN0aW9uYWxpdHkgd2FzIHVuY2hh
bmdlZC4gVGhpcyBwYXRjaCByZXBsYWNlcyBhIGNvbW1pdCAoY2hhbmdlc2V0IDQ4ODcxKS4KKyAg
ICAgICAgVGhpcyBpcyBhIGNsZWFuZXIgc29sdXRpb24uCisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5ODAzCisgICAgICAgIAorCisgICAgICAgICog
QXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWVQcml2YXRlOjppbml0KToKKyAg
ICAgICAgKFFXZWJGcmFtZVByaXZhdGU6OnByb3BhZ2F0ZUZyYW1lQ3JlYXRlZCk6CisgICAgICAg
ICogQXBpL3F3ZWJmcmFtZS5oOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWVfcC5oOgorICAgICAg
ICAoUVdlYkZyYW1lUHJpdmF0ZTo6Z2V0KToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgor
ICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpjcmVhdGVNYWluRnJhbWUpOgorICAgICAgICAoUVdl
YlBhZ2VQcml2YXRlOjp1cGRhdGVBY3Rpb24pOgorICAgICAgICAoUVdlYlBhZ2U6OnNldFBhbGV0
dGUpOgorICAgICAgICAoUVdlYlBhZ2U6OlFXZWJQYWdlKToKKyAgICAgICAgKFFXZWJQYWdlOjp+
UVdlYlBhZ2UpOgorICAgICAgICAoUVdlYlBhZ2U6Om1haW5GcmFtZSk6CisgICAgICAgIChRV2Vi
UGFnZTo6Y3VycmVudEZyYW1lKToKKyAgICAgICAgKFFXZWJQYWdlOjpoaXN0b3J5KToKKyAgICAg
ICAgKFFXZWJQYWdlOjp2aWV3cG9ydFNpemUpOgorICAgICAgICAoUVdlYlBhZ2U6OnNlbGVjdGVk
VGV4dCk6CisgICAgICAgIChRV2ViUGFnZTo6c2V0Q29udGVudEVkaXRhYmxlKToKKyAgICAgICAg
KFFXZWJQYWdlOjp1cGRhdGVQb3NpdGlvbkRlcGVuZGVudEFjdGlvbnMpOgorICAgICAgICAqIEFw
aS9xd2VicGFnZS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlRnJh
bWUpOgorICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6CisgICAgICAg
ICh0c3RfUVdlYlBhZ2U6OmZyYW1lQ3JlYXRlZFNpZ25hbCk6CisgICAgICAgICh0c3RfUVdlYlBh
Z2U6OmZyYW1lQ3JlYXRlZFNpZ25hbF9jb3VudCk6CisgICAgICAgIChRV2ViRnJhbWVQb2ludGVy
Q2hlY2tlcjo6Y2hlY2spOgorICAgICAgICAoUVdlYkZyYW1lUG9pbnRlckNoZWNrZXI6OlFXZWJG
cmFtZVBvaW50ZXJDaGVja2VyKToKKyAgICAgICAgKFFXZWJGcmFtZVBvaW50ZXJDaGVja2VyOjpp
c09rKToKKyAgICAgICAgKFFXZWJGcmFtZVBvaW50ZXJDaGVja2VyOjppc0ZhaWwpOgorICAgICAg
ICAoUVdlYkZyYW1lUG9pbnRlckNoZWNrZXI6OmNoZWNrUG9pbnRlcik6CisgICAgICAgICh0c3Rf
UVdlYlBhZ2U6OmZyYW1lQ3JlYXRlZFNpZ25hbF9KU2NoZWNrUG9pbnRlcl9kYXRhKToKKyAgICAg
ICAgKHRzdF9RV2ViUGFnZTo6ZnJhbWVDcmVhdGVkU2lnbmFsX0pTY2hlY2tQb2ludGVyKToKKyAg
ICAgICAgKHRzdF9RV2ViUGFnZTo6ZnJhbWVDcmVhdGVkU2lnbmFsX2NoZWNrUG9pbnRlcik6Cisg
ICAgICAgICogdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLnFyYzoKKwogMjAwOS0xMC0yMCAg
S2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgQnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAppbmRleCA4MWNjYmU4Li5hNmYzMmNlIDEwMDY0NAot
LS0gYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKKysr
IGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCkBAIC0x
MDI2LDEwICsxMDI2LDcgQEAgUGFzc1JlZlB0cjxGcmFtZT4gRnJhbWVMb2FkZXJDbGllbnRRdDo6
Y3JlYXRlRnJhbWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogCi0gICAgZW1pdCBtX3dlYkZyYW1lLT5wYWdlKCktPmZyYW1lQ3JlYXRlZCh3
ZWJGcmFtZSk7Ci0KICAgICAvLyAjIyMgc2V0IG92ZXJyaWRlIGVuY29kaW5nIGlmIHdlIGhhdmUg
b25lCi0KICAgICBmcmFtZURhdGEuZnJhbWUtPmxvYWRlcigpLT5sb2FkVVJMSW50b0NoaWxkRnJh
bWUoZnJhbWVEYXRhLnVybCwgZnJhbWVEYXRhLnJlZmVycmVyLCBmcmFtZURhdGEuZnJhbWUuZ2V0
KCkpOwogCiAgICAgLy8gVGhlIGZyYW1lJ3Mgb25sb2FkIGhhbmRsZXIgbWF5IGhhdmUgcmVtb3Zl
ZCBpdCBmcm9tIHRoZSBkb2N1bWVudC4KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC90ZXN0cy9xd2Vi
cGFnZS9mcmFtZXRlc3QvZnJhbWVfcm0xLmh0bWwgYi9XZWJLaXQvcXQvdGVzdHMvcXdlYnBhZ2Uv
ZnJhbWV0ZXN0L2ZyYW1lX3JtMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjlmODViNGQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvcXQvdGVzdHMvcXdlYnBhZ2Uv
ZnJhbWV0ZXN0L2ZyYW1lX3JtMS5odG1sCkBAIC0wLDAgKzEsOSBAQAorPGh0bWw+Cis8Ym9keSBv
bmxvYWQ9ImphdmFzY3JpcHQ6dG9wLmxvY2F0aW9uLmhyZWY9Ym90dG9tLmxvY2F0aW9uLmhyZWY7
Ij4KKzxmcmFtZXNldCBuYW1lPSJmcmFtZXMiIHJvd3M9IjcwJSwgMTUlLCAxNSUiPgorIDxmcmFt
ZSAvPgorIDxmcmFtZSAvPgorIDxmcmFtZSBuYW1lPSJib3R0b20iIC8+Cis8L2ZyYW1lc2V0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwYWdlL2Zy
YW1ldGVzdC9mcmFtZV9ybTIuaHRtbCBiL1dlYktpdC9xdC90ZXN0cy9xd2VicGFnZS9mcmFtZXRl
c3QvZnJhbWVfcm0yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzI1
Y2Q5MQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9xdC90ZXN0cy9xd2VicGFnZS9mcmFtZXRl
c3QvZnJhbWVfcm0yLmh0bWwKQEAgLTAsMCArMSwyMSBAQAorPGh0bWw+Cis8c2NyaXB0PgorZnVu
Y3Rpb24gcmVtb3ZlKCkKK3sKKyAgZnJhbWVzZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgnZnJhbWVzZXQnKVswXTsKKyAgZm9yICh2YXIgaT0wOyBpPDI1IDtpKyspIHsKKyAgICBm
cmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdmcmFtZScpWzBdOworICAgIGZy
YW1lc2V0LnJlbW92ZUNoaWxkKGZyYW1lKTsKKyAgICBmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2ZyYW1lJykKKyAgICBmcmFtZXNldC5hcHBlbmRDaGlsZChmcmFtZSk7CisgIH0KK30K
Kzwvc2NyaXB0PgorPGJvZHkgb25sb2FkPSJyZW1vdmUoKTsiPgorPGZyYW1lc2V0IG5hbWU9ImZy
YW1lcyIgcm93cz0iNzAlLCAxNSUsIDE1JSI+CisgPGZyYW1lIC8+CisgPGZyYW1lIC8+CisgPGZy
YW1lIC8+Cis8L2ZyYW1lc2V0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvV2ViS2l0
L3F0L3Rlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAgYi9XZWJLaXQvcXQvdGVzdHMvcXdl
YnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcAppbmRleCAyMWIzYmM3Li44NzljNjhiIDEwMDY0NAotLS0g
YS9XZWJLaXQvcXQvdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcAorKysgYi9XZWJLaXQv
cXQvdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcApAQCAtMTIzLDExICsxMjMsMTQgQEAg
cHJpdmF0ZSBzbG90czoKICAgICB2b2lkIGlucHV0TWV0aG9kcygpOwogICAgIHZvaWQgZGVmYXVs
dFRleHRFbmNvZGluZygpOwogICAgIHZvaWQgZXJyb3JQYWdlRXh0ZW5zaW9uKCk7Ci0KICAgICB2
b2lkIGNyYXNoVGVzdHNfTGF6eUluaXRpYWxpemF0aW9uT2ZNYWluRnJhbWUoKTsKLQogICAgIHZv
aWQgc2NyZWVuc2hvdF9kYXRhKCk7CiAgICAgdm9pZCBzY3JlZW5zaG90KCk7CisgICAgdm9pZCBm
cmFtZUNyZWF0ZWRTaWduYWwoKTsKKyAgICB2b2lkIGZyYW1lQ3JlYXRlZFNpZ25hbF9jb3VudCgp
OworICAgIHZvaWQgZnJhbWVDcmVhdGVkU2lnbmFsX0pTY2hlY2tQb2ludGVyX2RhdGEoKTsKKyAg
ICB2b2lkIGZyYW1lQ3JlYXRlZFNpZ25hbF9KU2NoZWNrUG9pbnRlcigpOworICAgIHZvaWQgZnJh
bWVDcmVhdGVkU2lnbmFsX2NoZWNrUG9pbnRlcigpOwogCiBwcml2YXRlOgogICAgIFFXZWJWaWV3
KiBtX3ZpZXc7CkBAIC0xNjA5LDUgKzE2MTIsMTAxIEBAIHZvaWQgdHN0X1FXZWJQYWdlOjpzY3Jl
ZW5zaG90KCkKICAgICBRRGlyOjpzZXRDdXJyZW50KFFBcHBsaWNhdGlvbjo6YXBwbGljYXRpb25E
aXJQYXRoKCkpOwogfQogCit2b2lkIHRzdF9RV2ViUGFnZTo6ZnJhbWVDcmVhdGVkU2lnbmFsKCkK
K3sKKyAgICAvLyBBIE1haW5GcmFtZSBzaG91bGQgYmUgY3JlYXRlZCBiZWZvcmUgflFXZWJQYWdl
IGJlY2F1c2UgdGhlIFdlYkNvcmU6OlBhZ2UgKHRoZSBiYXNlIGNsYXNzcykKKyAgICAvLyB1c2Ug
dGhlIGZyYW1lIGluIHRoZSBkZXN0cnVjdG9yLgorICAgIFFXZWJQYWdlIHBhZ2U7CisgICAgYm9v
bCBzaWduID0gd2FpdEZvclNpZ25hbCgmcGFnZSwgU0lHTkFMKGZyYW1lQ3JlYXRlZChRV2ViRnJh
bWUqKSkpOworICAgIFFWRVJJRlkyKHNpZ24sICJBIFFXZWJGcmFtZSBoYXNuJ3QgYmVlbiBjcmVh
dGVkIGJlZm9yZSB+UVdlYlBhZ2UiKTsKK30KKwordm9pZCB0c3RfUVdlYlBhZ2U6OmZyYW1lQ3Jl
YXRlZFNpZ25hbF9jb3VudCgpCit7CisgICAgUVdlYlBhZ2UqIHBhZ2UgPSBuZXcgUVdlYlBhZ2Uo
KTsKKyAgICBRU2lnbmFsU3B5IHNweShwYWdlLCBTSUdOQUwoZnJhbWVDcmVhdGVkKFFXZWJGcmFt
ZSopKSk7CisgICAgUUV2ZW50TG9vcCBsb29wOworICAgIGxvb3AuY29ubmVjdChwYWdlLCBTSUdO
QUwobG9hZEZpbmlzaGVkKGJvb2wpKSwgU0xPVChxdWl0KCkpKTsKKyAgICBwYWdlLT5tYWluRnJh
bWUoKS0+bG9hZChRVXJsKCJxcmM6Ly8vZnJhbWV0ZXN0L2lmcmFtZS5odG1sIikpOworICAgIGxv
b3AuZXhlYygpOworICAgIFFWRVJJRlkoc3B5LmNvdW50KCkgPT0gMyk7IC8vIFRoZXJlIGFyZSAz
IGlmcmFtZXMgbWFpbiArIDIgInJlY3Vyc2l2ZSIuCisgICAgZGVsZXRlIHBhZ2U7Cit9CisKKy8q
IEhlbHBlciBjbGFzcy4gQ2hlY2tzIGlmIGdpdmVuIFFXZWJGcmFtZSBwb2ludGVyIGlzIGEgY2hp
bGQgb2YgcGFnZSdzIG1haW5GcmFtZSAqLworY2xhc3MgUVdlYkZyYW1lUG9pbnRlckNoZWNrZXIK
KyAgICA6IHB1YmxpYyBRT2JqZWN0IHsKKyAgICBRX09CSkVDVAorCisgICAgUVdlYlBhZ2UqIG1f
cGFnZTsKKyAgICBib29sIG1fcmVzdWx0OworICAgIHVuc2lnbmVkIG1fY2hlY2tzQ291bnQ7CisK
KyAgICBib29sIGNoZWNrKFFXZWJGcmFtZSogbWFpbiwgUVdlYkZyYW1lKiBmcmFtZSkKKyAgICB7
CisgICAgICAgIGlmIChtYWluID09IGZyYW1lKSByZXR1cm4gdHJ1ZTsKKyAgICAgICAgUUxpc3Q8
UVdlYkZyYW1lKj46OmNvbnN0X2l0ZXJhdG9yIGkgPSBtYWluLT5jaGlsZEZyYW1lcygpLmNvbnN0
QmVnaW4oKTsKKyAgICAgICAgZm9yICg7IGkgIT0gbWFpbi0+Y2hpbGRGcmFtZXMoKS5jb25zdEVu
ZCgpOyBpKyspIHsKKyAgICAgICAgICAgIGlmICgqaSA9PSBmcmFtZSkgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICBpZiAoY2hlY2soKmksIGZyYW1lKSkgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK3B1YmxpYzoKKyAgICBRV2ViRnJhbWVQb2lu
dGVyQ2hlY2tlcihRV2ViUGFnZSogcGFnZSkKKyAgICAgICAgOiBtX3BhZ2UocGFnZSkKKyAgICAg
ICAgLCBtX3Jlc3VsdCh0cnVlKQorICAgICAgICAsIG1fY2hlY2tzQ291bnQoMCkKKyAgICB7fQor
ICAgIGJvb2wgaXNPaygpIHsgcmV0dXJuIG1fcmVzdWx0OyB9CisgICAgYm9vbCBpc0ZhaWwoKSB7
IHJldHVybiAhbV9yZXN1bHQ7IH0KK3B1YmxpYyBzbG90czoKKyAgICB2b2lkIGNoZWNrUG9pbnRl
cihRV2ViRnJhbWUqIGZyYW1lKQorICAgIHsKKyAgICAgICAgbV9jaGVja3NDb3VudCsrOworICAg
ICAgICBpZiAoaXNPaygpKQorICAgICAgICAgICAgbV9yZXN1bHQgPSBjaGVjayhtX3BhZ2UtPm1h
aW5GcmFtZSgpLCBmcmFtZSk7CisgICAgfQorfTsKKwordm9pZCB0c3RfUVdlYlBhZ2U6OmZyYW1l
Q3JlYXRlZFNpZ25hbF9KU2NoZWNrUG9pbnRlcl9kYXRhKCkKK3sKKyAgICBRVGVzdDo6YWRkQ29s
dW1uPFFVcmw+KCJ1cmwiKTsKKyAgICBRVGVzdDo6bmV3Um93KCJzaW1wbGUgaWZyYW1lcyIpIDw8
IFFVcmwoInFyYzovLy9mcmFtZXRlc3QvaWZyYW1lLmh0bWwiKTsKKyAgICBRVGVzdDo6bmV3Um93
KCJzaW1wbGUgZnJhbWVzIikgPDwgUVVybCgicXJjOi8vL2ZyYW1ldGVzdC9pbmRleC5odG1sIik7
CisgICAgUVRlc3Q6Om5ld1JvdygiZnJhbWVzIGF1dG9yZW1vdmUiKSA8PCBRVXJsKCJxcmM6Ly8v
ZnJhbWV0ZXN0L2ZyYW1lX3JtMS5odG1sIik7CisgICAgUVRlc3Q6Om5ld1JvdygiZnJhbWVzIGNy
ZWF0ZSBhbmQgcmVtb3ZlIikgPDwgUVVybCgicXJjOi8vL2ZyYW1ldGVzdC9mcmFtZV9ybTIuaHRt
bCIpOworfQorCit2b2lkIHRzdF9RV2ViUGFnZTo6ZnJhbWVDcmVhdGVkU2lnbmFsX0pTY2hlY2tQ
b2ludGVyKCkKK3sKKyAgICBRRkVUQ0goUVVybCwgdXJsKTsKKyAgICBRV2ViUGFnZSogcGFnZSA9
IG5ldyBRV2ViUGFnZSgpOworICAgIFFXZWJGcmFtZVBvaW50ZXJDaGVja2VyIGNoZWNrZXIocGFn
ZSk7CisgICAgY2hlY2tlci5jb25uZWN0KHBhZ2UsIFNJR05BTChmcmFtZUNyZWF0ZWQoUVdlYkZy
YW1lKikpLCBTTE9UKGNoZWNrUG9pbnRlcihRV2ViRnJhbWUqKSkpOworICAgIFFFdmVudExvb3Ag
bG9vcDsKKyAgICBsb29wLmNvbm5lY3QocGFnZSwgU0lHTkFMKGxvYWRGaW5pc2hlZChib29sKSks
IFNMT1QocXVpdCgpKSk7CisgICAgcGFnZS0+bWFpbkZyYW1lKCktPmxvYWQodXJsKTsKKyAgICBs
b29wLmV4ZWMoKTsKKyAgICBRVkVSSUZZKGNoZWNrZXIuaXNPaygpKTsKKyAgICBkZWxldGUgcGFn
ZTsKK30KKwordm9pZCB0c3RfUVdlYlBhZ2U6OmZyYW1lQ3JlYXRlZFNpZ25hbF9jaGVja1BvaW50
ZXIoKQoreworICAgIFFXZWJQYWdlKiBwYWdlID0gbmV3IFFXZWJQYWdlKCk7CisgICAgUVdlYkZy
YW1lKiBmcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpOworICAgIFFXZWJGcmFtZVBvaW50ZXJDaGVj
a2VyIGNoZWNrZXIocGFnZSk7CisgICAgY2hlY2tlci5jb25uZWN0KHBhZ2UsIFNJR05BTChmcmFt
ZUNyZWF0ZWQoUVdlYkZyYW1lKikpLCBTTE9UKGNoZWNrUG9pbnRlcihRV2ViRnJhbWUqKSkpOwor
ICAgIFFFdmVudExvb3AgbG9vcDsKKyAgICBsb29wLmNvbm5lY3QocGFnZSwgU0lHTkFMKGxvYWRG
aW5pc2hlZChib29sKSksIFNMT1QocXVpdCgpKSk7CisgICAgZnJhbWUtPmxvYWQoUVVybCgicXJj
Oi8vL2ZyYW1ldGVzdC9mcmFtZV9ybTIuaHRtbCIpKTsKKyAgICBmcmFtZS0+ZXZhbHVhdGVKYXZh
U2NyaXB0KCJyZW1vdmUoKTsiKTsKKyAgICBsb29wLmV4ZWMoKTsgICAgICAgIC8vIFdhaXQgZm9y
IGxvYWRGaW5pc2ggc2lnbmFsLgorICAgIFFUZXN0OjpxV2FpdCg1MDApOyAgLy8gV2FpdCBmb3Ig
YWxsIGpzIHNjcmlwdHMgYW5kIG90aGVyIHNpZ25hbHMuCisgICAgUVZFUklGWShjaGVja2VyLmlz
T2soKSk7CisgICAgZGVsZXRlIHBhZ2U7Cit9CisKIFFURVNUX01BSU4odHN0X1FXZWJQYWdlKQog
I2luY2x1ZGUgInRzdF9xd2VicGFnZS5tb2MiCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvdGVzdHMv
cXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLnFyYyBiL1dlYktpdC9xdC90ZXN0cy9xd2VicGFnZS90c3Rf
cXdlYnBhZ2UucXJjCmluZGV4IDMwODVjZTIuLjdiZDgwM2QgMTAwNjQ0Ci0tLSBhL1dlYktpdC9x
dC90ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UucXJjCisrKyBiL1dlYktpdC9xdC90ZXN0cy9x
d2VicGFnZS90c3RfcXdlYnBhZ2UucXJjCkBAIC0xLDEwICsxLDExIEBACi08IURPQ1RZUEUgUkND
PjxSQ0MgdmVyc2lvbj0iMS4wIj4KLTxxcmVzb3VyY2U+Ci0gICAgPGZpbGU+ZnJhbWV0ZXN0L2lu
ZGV4Lmh0bWw8L2ZpbGU+Ci0gICAgPGZpbGU+ZnJhbWV0ZXN0L2ZyYW1lX2EuaHRtbDwvZmlsZT4K
LSAgICA8ZmlsZT5mcmFtZXRlc3QvaWZyYW1lLmh0bWw8L2ZpbGU+Ci0gICAgPGZpbGU+ZnJhbWV0
ZXN0L2lmcmFtZTIuaHRtbDwvZmlsZT4KLSAgICA8ZmlsZT5mcmFtZXRlc3QvaWZyYW1lMy5odG1s
PC9maWxlPgotPC9xcmVzb3VyY2U+Cis8UkNDPgorICAgIDxxcmVzb3VyY2UgcHJlZml4PSIvIj4K
KyAgICAgICAgPGZpbGU+ZnJhbWV0ZXN0L2luZGV4Lmh0bWw8L2ZpbGU+CisgICAgICAgIDxmaWxl
PmZyYW1ldGVzdC9mcmFtZV9hLmh0bWw8L2ZpbGU+CisgICAgICAgIDxmaWxlPmZyYW1ldGVzdC9p
ZnJhbWUuaHRtbDwvZmlsZT4KKyAgICAgICAgPGZpbGU+ZnJhbWV0ZXN0L2lmcmFtZTIuaHRtbDwv
ZmlsZT4KKyAgICAgICAgPGZpbGU+ZnJhbWV0ZXN0L2lmcmFtZTMuaHRtbDwvZmlsZT4KKyAgICAg
ICAgPGZpbGU+ZnJhbWV0ZXN0L2ZyYW1lX3JtMi5odG1sPC9maWxlPgorICAgICAgICA8ZmlsZT5m
cmFtZXRlc3QvZnJhbWVfcm0xLmh0bWw8L2ZpbGU+CisgICAgPC9xcmVzb3VyY2U+CiA8L1JDQz4K
LQo=
</data>
<flag name="review"
          id="23094"
          type_id="1"
          status="-"
          setter="zecke"
    />
          </attachment>
      

    </bug>

</bugzilla>