<?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>65328</bug_id>
          
          <creation_ts>2011-07-28 11:23:38 -0700</creation_ts>
          <short_desc>[Qt] QtTestBrowser: add support for saving cookies on disk</short_desc>
          <delta_ts>2011-08-05 07:04:01 -0700</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>P5</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ademar Reis">ademar</reporter>
          <assigned_to name="Ademar Reis">ademar</assigned_to>
          <cc>rafael.lobo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>443570</commentid>
    <comment_count>0</comment_count>
    <who name="Ademar Reis">ademar</who>
    <bug_when>2011-07-28 11:23:38 -0700</bug_when>
    <thetext>Patch is on the way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443575</commentid>
    <comment_count>1</comment_count>
      <attachid>102273</attachid>
    <who name="Ademar Reis">ademar</who>
    <bug_when>2011-07-28 11:29:32 -0700</bug_when>
    <thetext>Created attachment 102273
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443624</commentid>
    <comment_count>2</comment_count>
      <attachid>102273</attachid>
    <who name="Rafael Brandao">rafael.lobo</who>
    <bug_when>2011-07-28 13:07:27 -0700</bug_when>
    <thetext>Comment on attachment 102273
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=102273&amp;action=review

&gt; Tools/QtTestBrowser/cookiejar.cpp:41
&gt; +       syscalls in sequence (when loading pages which sets multiple cookies) */

Comment style.

&gt; Tools/QtTestBrowser/cookiejar.cpp:47
&gt; +    QDir foo; /* QDir::mkpath() is not static :( */

Shame on QDir, but you could use a better name for it. :)

&gt; Tools/QtTestBrowser/cookiejar.cpp:73
&gt; +    /* when disabling, save current cookies */

Comment style.

&gt; Tools/QtTestBrowser/cookiejar.cpp:78
&gt; +void TestBrowserCookieJar::saveToDisk()

saveToDisk() doesn&apos;t really save anything, you should rename it.

&gt; Tools/QtTestBrowser/cookiejar.cpp:83
&gt; +    /* non optimal, we could use some database and incremental save */

Comment style.

&gt; Tools/QtTestBrowser/launcherwindow.cpp:36
&gt; +#include &quot;cookiejar.h&quot;

This include should precede &quot;launcherwindow.h&quot;, to keep it sorted.

&gt; Tools/QtTestBrowser/launcherwindow.cpp:56
&gt; +static TestBrowserCookieJar* testBrowserCookieJarinstance()

You should use testBrowserCookieJarInstance instead.

&gt; Tools/QtTestBrowser/launcherwindow.cpp:135
&gt; +    /* we reuse the same cookieJar on multiple QNAMs, which is OK */

Comment style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443627</commentid>
    <comment_count>3</comment_count>
      <attachid>102289</attachid>
    <who name="Ademar Reis">ademar</who>
    <bug_when>2011-07-28 13:09:49 -0700</bug_when>
    <thetext>Created attachment 102289
patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443628</commentid>
    <comment_count>4</comment_count>
      <attachid>102273</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-07-28 13:11:21 -0700</bug_when>
    <thetext>Comment on attachment 102273
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=102273&amp;action=review

&gt;&gt; Tools/QtTestBrowser/launcherwindow.cpp:36
&gt;&gt; +#include &quot;cookiejar.h&quot;
&gt; 
&gt; This include should precede &quot;launcherwindow.h&quot;, to keep it sorted.

No as the includes rules say that the h file which define the current cpp file as to be before all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443630</commentid>
    <comment_count>5</comment_count>
    <who name="Rafael Brandao">rafael.lobo</who>
    <bug_when>2011-07-28 13:13:11 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 102273 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=102273&amp;action=review
&gt; 
&gt; &gt;&gt; Tools/QtTestBrowser/launcherwindow.cpp:36
&gt; &gt;&gt; +#include &quot;cookiejar.h&quot;
&gt; &gt; 
&gt; &gt; This include should precede &quot;launcherwindow.h&quot;, to keep it sorted.
&gt; 
&gt; No as the includes rules say that the h file which define the current cpp file as to be before all.

Sure, nevermind then. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443633</commentid>
    <comment_count>6</comment_count>
    <who name="Ademar Reis">ademar</who>
    <bug_when>2011-07-28 13:17:09 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 102273 [details])
&gt; &gt; Tools/QtTestBrowser/cookiejar.cpp:47
&gt; &gt; +    QDir foo; /* QDir::mkpath() is not static :( */
&gt; 
&gt; Shame on QDir, but you could use a better name for it. :)

What&apos;s wrong with foo? :P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443634</commentid>
    <comment_count>7</comment_count>
      <attachid>102273</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-07-28 13:17:24 -0700</bug_when>
    <thetext>Comment on attachment 102273
patch

Attachment 102273 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9266264</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443637</commentid>
    <comment_count>8</comment_count>
      <attachid>102291</attachid>
    <who name="Ademar Reis">ademar</who>
    <bug_when>2011-07-28 13:25:06 -0700</bug_when>
    <thetext>Created attachment 102291
patch v3 (fix misinterpretation of the coding style)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443638</commentid>
    <comment_count>9</comment_count>
    <who name="Ademar Reis">ademar</who>
    <bug_when>2011-07-28 13:27:32 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #2)
&gt; &gt; (From update of attachment 102273 [details] [details])
&gt; &gt; &gt; Tools/QtTestBrowser/cookiejar.cpp:47
&gt; &gt; &gt; +    QDir foo; /* QDir::mkpath() is not static :( */
&gt; &gt; 
&gt; &gt; Shame on QDir, but you could use a better name for it. :)
&gt; 
&gt; What&apos;s wrong with foo? :P

I was just kidding. I don&apos;t think the name makes any difference in that context, but I changed it from QDir foo to QDir d in patch-v3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443681</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-28 15:41:27 -0700</bug_when>
    <thetext>Attachment 102289 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/QtTestBrowser/Qt...&quot; exit_code: 1

Tools/QtTestBrowser/cookiejar.cpp:28:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443684</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-28 15:43:31 -0700</bug_when>
    <thetext>Attachment 102291 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/QtTestBrowser/Qt...&quot; exit_code: 1

Tools/QtTestBrowser/cookiejar.cpp:28:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443918</commentid>
    <comment_count>12</comment_count>
    <who name="Ademar Reis">ademar</who>
    <bug_when>2011-07-29 06:19:04 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Tools/QtTestBrowser/cookiejar.cpp:28:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
&gt; Total errors found: 1 in 7 files
&gt;
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

False positive, opened bug 65372 for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446627</commentid>
    <comment_count>13</comment_count>
      <attachid>102291</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-08-04 11:01:00 -0700</bug_when>
    <thetext>Comment on attachment 102291
patch v3 (fix misinterpretation of the coding style)

View in context: https://bugs.webkit.org/attachment.cgi?id=102291&amp;action=review

r=me with some nitpicks.

&gt; Tools/QtTestBrowser/cookiejar.cpp:33
&gt; +#include &lt;QTimer&gt;

Already included by the cookiejar.h

&gt; Tools/QtTestBrowser/cookiejar.cpp:40
&gt; +    /* We use a timer for the real disk write to avoid multiple IO
&gt; +       syscalls in sequence (when loading pages which set multiple cookies). */

C++ style comments are preferred.

&gt; Tools/QtTestBrowser/cookiejar.cpp:43
&gt; +    m_timer.setInterval(10000);
&gt; +    m_timer.setSingleShot(true);
&gt; +    connect(&amp;m_timer, SIGNAL(timeout()), this, SLOT(saveToDisk()));

We typically use QObject::timerEvent() instead of mucking with QTimer, but I&apos;m not super fussed.

&gt; Tools/QtTestBrowser/cookiejar.cpp:47
&gt; +    QDir d; // QDir::mkpath() is not static. :(
&gt; +    d.mkpath(path);

Wow, really? Bleh.
Would look slightly better as QDir().mkpath(path); I guess.

&gt; Tools/QtTestBrowser/cookiejar.cpp:83
&gt; +    foreach (QNetworkCookie cookie, cookies) {

foreach (const QNetworkCookie&amp; cookie, cookies) {

&gt; Tools/QtTestBrowser/cookiejar.cpp:97
&gt; +        foreach (QByteArray cookie, m_rawCookies)

foreach (const QByteArray&amp; cookie, cookies) {

&gt; Tools/QtTestBrowser/cookiejar.cpp:114
&gt; +            cookies.append(QNetworkCookie::parseCookies(in.readLine().toAscii()));

Why toAscii() and not toLatin1()?

&gt; Tools/QtTestBrowser/cookiejar.h:42
&gt; +    virtual bool setCookiesFromUrl(const QList&lt;QNetworkCookie&gt;&amp; cookieList, const QUrl&amp;);

The &apos;cookieList&apos; argument name is superfluous.

&gt; Tools/QtTestBrowser/cookiejar.h:44
&gt; +    void enableDiskStorage(bool enabled);

I&apos;d prefer setDiskStorageEnabled(bool);

&gt; Tools/QtTestBrowser/launcherwindow.cpp:39
&gt; +#include &lt;QApplication&gt;

QCoreApplication would be enough, I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446721</commentid>
    <comment_count>14</comment_count>
    <who name="Ademar Reis">ademar</who>
    <bug_when>2011-08-04 13:12:32 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 102291 [details])

&gt; &gt; Tools/QtTestBrowser/cookiejar.cpp:43
&gt; &gt; +    m_timer.setInterval(10000);
&gt; &gt; +    m_timer.setSingleShot(true);
&gt; &gt; +    connect(&amp;m_timer, SIGNAL(timeout()), this, SLOT(saveToDisk()));
&gt; 
&gt; We typically use QObject::timerEvent() instead of mucking with QTimer, but I&apos;m not super fussed.

It&apos;s a singleShot timer, it would be cumbersome to do that with timerEvent().

&gt; &gt; Tools/QtTestBrowser/cookiejar.cpp:114
&gt; &gt; +            cookies.append(QNetworkCookie::parseCookies(in.readLine().toAscii()));
&gt; 
&gt; Why toAscii() and not toLatin1()?
&gt; 

Actually it should be toUtf8(), fixed.

(everything else was fixed, thanks!)

I also fixed a race in the destructor: it should not call saveCookies() directly, as this (private) method expects m_rawCookies to be filled. Fixed it by introducing extractRawCookies(), which is called from scheduleSaveToDisk() and the destructor.

(I can&apos;t call scheduleSaveToDisk() from the destructor because by the time the cookiejar is destroyed there&apos;s no mainloop anymore and I get a warning because of m_timer.start()).

Also added a comment to clarify why we don&apos;t extract the rawcookies directly at saveToDisk():

    // We extract the raw cookies here because the user may
    // enable/disable/clear cookies while the timer is running.

Will upload the patch again with r? because of these changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446725</commentid>
    <comment_count>15</comment_count>
      <attachid>102965</attachid>
    <who name="Ademar Reis">ademar</who>
    <bug_when>2011-08-04 13:14:16 -0700</bug_when>
    <thetext>Created attachment 102965
patch v4 (fixex from Kling&apos;s review + fix for a race in the destructor)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446729</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-04 13:17:05 -0700</bug_when>
    <thetext>Attachment 102965 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/QtTestBrowser/Qt...&quot; exit_code: 1

Tools/QtTestBrowser/cookiejar.cpp:28:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446731</commentid>
    <comment_count>17</comment_count>
    <who name="Ademar Reis">ademar</who>
    <bug_when>2011-08-04 13:20:10 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Attachment 102965 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/QtTestBrowser/Qt...&quot; exit_code: 1
&gt; 
&gt; Tools/QtTestBrowser/cookiejar.cpp:28:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
&gt; Total errors found: 1 in 7 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

False positive, opened bug 65372 for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447160</commentid>
    <comment_count>18</comment_count>
      <attachid>102965</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-08-05 05:16:53 -0700</bug_when>
    <thetext>Comment on attachment 102965
patch v4 (fixex from Kling&apos;s review + fix for a race in the destructor)

View in context: https://bugs.webkit.org/attachment.cgi?id=102965&amp;action=review

Kool!

&gt; Tools/QtTestBrowser/cookiejar.cpp:90
&gt; +    foreach (const QNetworkCookie cookie, cookies) {

Iterator should be a const-reference :)

&gt; Tools/QtTestBrowser/cookiejar.cpp:102
&gt; +        foreach (const QByteArray cookie, m_rawCookies)

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447170</commentid>
    <comment_count>19</comment_count>
      <attachid>103066</attachid>
    <who name="Ademar Reis">ademar</who>
    <bug_when>2011-08-05 06:05:27 -0700</bug_when>
    <thetext>Created attachment 103066
patch v5 (fix foreach)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447190</commentid>
    <comment_count>20</comment_count>
      <attachid>103066</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-05 07:03:55 -0700</bug_when>
    <thetext>Comment on attachment 103066
patch v5 (fix foreach)

Clearing flags on attachment: 103066

Committed r92478: &lt;http://trac.webkit.org/changeset/92478&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447191</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-05 07:04:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102273</attachid>
            <date>2011-07-28 11:29:32 -0700</date>
            <delta_ts>2011-07-28 13:25:06 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-Qt-QtTestBrowser-Add-support-for-saving-cookies-on-d.patch</filename>
            <type>text/plain</type>
            <size>14242</size>
            <attacher name="Ademar Reis">ademar</attacher>
            
              <data encoding="base64">RnJvbSAzOGRjN2FhY2M3MWQ4YmFlZTVmM2JkNmYzMmVlNTQ2ZjYzYmFjZjcyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGVtYXIgZGUgU291emEgUmVpcyBKciA8YWRlbWFyLnJlaXNA
b3BlbmJvc3NhLm9yZz4KRGF0ZTogV2VkLCAyNyBKdWwgMjAxMSAxNzowMDoxMCAtMDMwMApTdWJq
ZWN0OiBbUEFUQ0hdIFtRdF0gUXRUZXN0QnJvd3NlcjogQWRkIHN1cHBvcnQgZm9yIHNhdmluZyBj
b29raWVzIG9uIGRpc2sKCi0tLQogVG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDIxICsrKysrCiBUb29scy9RdFRlc3RCcm93c2VyL1F0VGVzdEJyb3dzZXIucHJvICB8
ICAgIDIgKwogVG9vbHMvUXRUZXN0QnJvd3Nlci9jb29raWVqYXIuY3BwICAgICAgfCAgMTI4ICsr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBUb29scy9RdFRlc3RCcm93c2VyL2Nvb2tp
ZWphci5oICAgICAgICB8ICAgNjEgKysrKysrKysrKysrKysrCiBUb29scy9RdFRlc3RCcm93c2Vy
L2xhdW5jaGVyd2luZG93LmNwcCB8ICAgMzIgKysrKysrKysKIFRvb2xzL1F0VGVzdEJyb3dzZXIv
bGF1bmNoZXJ3aW5kb3cuaCAgIHwgICAgNCArCiBUb29scy9RdFRlc3RCcm93c2VyL21haW4uY3Bw
ICAgICAgICAgICB8ICAgIDYgKy0KIDcgZmlsZXMgY2hhbmdlZCwgMjUzIGluc2VydGlvbnMoKyks
IDEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgVG9vbHMvUXRUZXN0QnJvd3Nlci9j
b29raWVqYXIuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgVG9vbHMvUXRUZXN0QnJvd3Nlci9jb29r
aWVqYXIuaAoKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCAxZTI1MjU5Li5kN2RiYTRhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDctMjggIEFkZW1hciBkZSBT
b3V6YSBSZWlzIEpyICA8YWRlbWFyLnJlaXNAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBbUXRd
IFF0VGVzdEJyb3dzZXI6IEFkZCBzdXBwb3J0IGZvciBzYXZpbmcgY29va2llcyBvbiBkaXNrCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTMyOAorCisg
ICAgICAgIFNpbXBsZSBjb29raWVqYXIgdGhhdCBzYXZlcyBjb29raWVzIG9uIGRpc2suCisKKyAg
ICAgICAgQWRkZWQgbWVudSBvcHRpb25zIHRvIGNsZWFyIGNvb2tpZXMgKEVkaXQtPkNsZWFyIGNv
b2tpZXMpIGFuZCAKKyAgICAgICAgZGlzYWJsZSBkaXNrIGNvb2tpZXMgKFNldHRpbmdzLT5bIF1T
YXZlIENvb2tpZXMgb24gRGlzaykuCisKKyAgICAgICAgT3B0aW9uIC1uby1kaXNrLWNvb2tpZXMg
aXMgYWxzbyBhdmFpbGFibGUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBRdFRlc3RCcm93c2VyL1F0VGVzdEJyb3dzZXIucHJvOgorICAgICAgICAq
IFF0VGVzdEJyb3dzZXIvY29va2llamFyLmNwcDogQWRkZWQuCisgICAgICAgICogUXRUZXN0QnJv
d3Nlci9jb29raWVqYXIuaDogQWRkZWQuCisgICAgICAgICogUXRUZXN0QnJvd3Nlci9sYXVuY2hl
cndpbmRvdy5jcHA6CisgICAgICAgICogUXRUZXN0QnJvd3Nlci9sYXVuY2hlcndpbmRvdy5oOgor
ICAgICAgICAqIFF0VGVzdEJyb3dzZXIvbWFpbi5jcHA6CisKIDIwMTEtMDctMjcgIFNoZXJpZmYg
Qm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJvbGxpbmcgb3V0IHI5MTc5Mi4KZGlmZiAtLWdpdCBhL1Rvb2xzL1F0VGVzdEJyb3dzZXIvUXRU
ZXN0QnJvd3Nlci5wcm8gYi9Ub29scy9RdFRlc3RCcm93c2VyL1F0VGVzdEJyb3dzZXIucHJvCmlu
ZGV4IGE3ODI2ZTUuLjY4Y2M4ZjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1F0VGVzdEJyb3dzZXIvUXRU
ZXN0QnJvd3Nlci5wcm8KKysrIGIvVG9vbHMvUXRUZXN0QnJvd3Nlci9RdFRlc3RCcm93c2VyLnBy
bwpAQCAtMTAsNiArMTAsNyBAQCBTT1VSQ0VTICs9IFwKICAgICB3ZWJwYWdlLmNwcCBcCiAgICAg
d2Vidmlldy5jcHAgXAogICAgIGZwc3RpbWVyLmNwcCBcCisgICAgY29va2llamFyLmNwcAogCiBI
RUFERVJTICs9IFwKICAgICBsb2NhdGlvbmVkaXQuaCBcCkBAIC0yMSw2ICsyMiw3IEBAIEhFQURF
UlMgKz0gXAogICAgIHdlYnBhZ2UuaCBcCiAgICAgd2Vidmlldy5oIFwKICAgICBmcHN0aW1lci5o
IFwKKyAgICBjb29raWVqYXIuaAogCiAhaXNFcXVhbChRVF9BUkNILHNoNCk6IENPTkZJRyArPSB1
aXRvb2xzCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1F0VGVzdEJyb3dzZXIvY29va2llamFyLmNwcCBi
L1Rvb2xzL1F0VGVzdEJyb3dzZXIvY29va2llamFyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4zZmY0NTJhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvUXRUZXN0QnJv
d3Nlci9jb29raWVqYXIuY3BwCkBAIC0wLDAgKzEsMTI4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoK
KyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgImNvb2tpZWphci5oIgorCisjaW5jbHVkZSA8UURlc2t0b3BTZXJ2aWNlcz4KKyNpbmNs
dWRlIDxRRGlyPgorI2luY2x1ZGUgPFFUZXh0U3RyZWFtPgorI2luY2x1ZGUgPFFUaW1lcj4KKwor
VGVzdEJyb3dzZXJDb29raWVKYXI6OlRlc3RCcm93c2VyQ29va2llSmFyKFFPYmplY3QqIHBhcmVu
dCkKKyAgICA6IFFOZXR3b3JrQ29va2llSmFyKHBhcmVudCkKKyAgICAsIG1fc3RvcmFnZUVuYWJs
ZWQoZmFsc2UpCit7CisgICAgLyogd2UgdXNlIGEgdGltZXIgZm9yIHRoZSByZWFsIGRpc2sgd3Jp
dGUgdG8gYXZvaWQgbXVsdGlwbGUgSU8KKyAgICAgICBzeXNjYWxscyBpbiBzZXF1ZW5jZSAod2hl
biBsb2FkaW5nIHBhZ2VzIHdoaWNoIHNldHMgbXVsdGlwbGUgY29va2llcykgKi8KKyAgICBtX3Rp
bWVyLnNldEludGVydmFsKDEwMDAwKTsKKyAgICBtX3RpbWVyLnNldFNpbmdsZVNob3QodHJ1ZSk7
CisgICAgY29ubmVjdCgmbV90aW1lciwgU0lHTkFMKHRpbWVvdXQoKSksIHRoaXMsIFNMT1Qoc2F2
ZVRvRGlza0ZvclJlYWwoKSkpOworCisgICAgUVN0cmluZyBwYXRoID0gUURlc2t0b3BTZXJ2aWNl
czo6c3RvcmFnZUxvY2F0aW9uKFFEZXNrdG9wU2VydmljZXM6OkNhY2hlTG9jYXRpb24pOworICAg
IFFEaXIgZm9vOyAvKiBRRGlyOjpta3BhdGgoKSBpcyBub3Qgc3RhdGljIDooICovCisgICAgZm9v
Lm1rcGF0aChwYXRoKTsKKyAgICBtX2ZpbGUuc2V0RmlsZU5hbWUocGF0aCArICIvY29va2llSmFy
Iik7Cit9CisKK1Rlc3RCcm93c2VyQ29va2llSmFyOjp+VGVzdEJyb3dzZXJDb29raWVKYXIoKQor
eworICAgIGlmIChtX3N0b3JhZ2VFbmFibGVkKQorICAgICAgICBzYXZlVG9EaXNrRm9yUmVhbCgp
OworfQorCitib29sIFRlc3RCcm93c2VyQ29va2llSmFyOjpzZXRDb29raWVzRnJvbVVybChjb25z
dCBRTGlzdDxRTmV0d29ya0Nvb2tpZT4mIGNvb2tpZUxpc3QsIGNvbnN0IFFVcmwmIHVybCkKK3sK
KyAgICBib29sIHN0YXR1cyA9IFFOZXR3b3JrQ29va2llSmFyOjpzZXRDb29raWVzRnJvbVVybChj
b29raWVMaXN0LCB1cmwpOworICAgIGlmIChzdGF0dXMgJiYgbV9zdG9yYWdlRW5hYmxlZCkKKyAg
ICAgICAgc2F2ZVRvRGlzaygpOworICAgIHJldHVybiBzdGF0dXM7Cit9CisKK3ZvaWQgVGVzdEJy
b3dzZXJDb29raWVKYXI6OmVuYWJsZURpc2tTdG9yYWdlKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBt
X3N0b3JhZ2VFbmFibGVkID0gZW5hYmxlZDsKKworICAgIGlmIChlbmFibGVkICYmIGFsbENvb2tp
ZXMoKS5pc0VtcHR5KCkpCisgICAgICAgIGxvYWRGcm9tRGlzaygpOworCisgICAgLyogd2hlbiBk
aXNhYmxpbmcsIHNhdmUgY3VycmVudCBjb29raWVzICovCisgICAgaWYgKCFlbmFibGVkICYmICFh
bGxDb29raWVzKCkuaXNFbXB0eSgpKQorICAgICAgICBzYXZlVG9EaXNrRm9yUmVhbCgpOworfQor
Cit2b2lkIFRlc3RCcm93c2VyQ29va2llSmFyOjpzYXZlVG9EaXNrKCkKK3sKKyAgICBRTGlzdDxR
TmV0d29ya0Nvb2tpZT4gY29va2llcyA9IGFsbENvb2tpZXMoKTsKKyAgICBtX3Jhd0Nvb2tpZXMu
Y2xlYXIoKTsKKworICAgIC8qIG5vbiBvcHRpbWFsLCB3ZSBjb3VsZCB1c2Ugc29tZSBkYXRhYmFz
ZSBhbmQgaW5jcmVtZW50YWwgc2F2ZSAqLworICAgIGZvcmVhY2ggKFFOZXR3b3JrQ29va2llIGNv
b2tpZSwgY29va2llcykgeworICAgICAgICBpZiAoIWNvb2tpZS5pc1Nlc3Npb25Db29raWUoKSkK
KyAgICAgICAgICAgIG1fcmF3Q29va2llcy5hcHBlbmQoY29va2llLnRvUmF3Rm9ybSgpKTsKKyAg
ICB9CisKKyAgICBtX3RpbWVyLnN0YXJ0KCk7Cit9CisKK3ZvaWQgVGVzdEJyb3dzZXJDb29raWVK
YXI6OnNhdmVUb0Rpc2tGb3JSZWFsKCkKK3sKKyAgICBtX3RpbWVyLnN0b3AoKTsKKworICAgIGlm
IChtX2ZpbGUub3BlbihRSU9EZXZpY2U6OldyaXRlT25seSB8IFFJT0RldmljZTo6VGV4dCkpIHsK
KyAgICAgICAgUVRleHRTdHJlYW0gb3V0KCZtX2ZpbGUpOworICAgICAgICBmb3JlYWNoIChRQnl0
ZUFycmF5IGNvb2tpZSwgbV9yYXdDb29raWVzKQorICAgICAgICAgICAgb3V0IDw8IGNvb2tpZSAr
ICJcbiI7CisgICAgICAgIG1fZmlsZS5jbG9zZSgpOworICAgIH0gZWxzZQorICAgICAgICBxV2Fy
bmluZygiSU8gZXJyb3IgaGFuZGxpbmcgY29va2llamFyIGZpbGUiKTsKK30KKwordm9pZCBUZXN0
QnJvd3NlckNvb2tpZUphcjo6bG9hZEZyb21EaXNrKCkKK3sKKyAgICBpZiAoIW1fZmlsZS5leGlz
dHMoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUUxpc3Q8UU5ldHdvcmtDb29raWU+IGNvb2tp
ZXM7CisKKyAgICBpZiAobV9maWxlLm9wZW4oUUlPRGV2aWNlOjpSZWFkT25seSB8IFFJT0Rldmlj
ZTo6VGV4dCkpIHsKKyAgICAgICAgUVRleHRTdHJlYW0gaW4oJm1fZmlsZSk7CisgICAgICAgIHdo
aWxlICghaW4uYXRFbmQoKSkKKyAgICAgICAgICAgIGNvb2tpZXMuYXBwZW5kKFFOZXR3b3JrQ29v
a2llOjpwYXJzZUNvb2tpZXMoaW4ucmVhZExpbmUoKS50b0FzY2lpKCkpKTsKKyAgICAgICAgbV9m
aWxlLmNsb3NlKCk7CisgICAgfSBlbHNlCisgICAgICAgIHFXYXJuaW5nKCJJTyBlcnJvciBoYW5k
bGluZyBjb29raWVqYXIgZmlsZSIpOworCisgICAgc2V0QWxsQ29va2llcyhjb29raWVzKTsKK30K
Kwordm9pZCBUZXN0QnJvd3NlckNvb2tpZUphcjo6cmVzZXQoKQoreworICAgIHNldEFsbENvb2tp
ZXMoUUxpc3Q8UU5ldHdvcmtDb29raWU+KCkpOworICAgIGlmIChtX3N0b3JhZ2VFbmFibGVkKQor
ICAgICAgICBzYXZlVG9EaXNrKCk7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9RdFRlc3RCcm93c2Vy
L2Nvb2tpZWphci5oIGIvVG9vbHMvUXRUZXN0QnJvd3Nlci9jb29raWVqYXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODIyNmRhCi0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvUXRUZXN0QnJvd3Nlci9jb29raWVqYXIuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgt
aWVzKQorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBjb29raWVq
YXJfaAorI2RlZmluZSBjb29raWVqYXJfaAorCisjaW5jbHVkZSA8UUZpbGU+CisjaW5jbHVkZSA8
UU5ldHdvcmtDb29raWVKYXI+CisjaW5jbHVkZSA8UVRpbWVyPgorCitjbGFzcyBUZXN0QnJvd3Nl
ckNvb2tpZUphciA6IHB1YmxpYyBRTmV0d29ya0Nvb2tpZUphciB7CisgICAgUV9PQkpFQ1QKKwor
cHVibGljOgorICAgIFRlc3RCcm93c2VyQ29va2llSmFyKFFPYmplY3QqIHBhcmVudCA9IDApOwor
ICAgIHZpcnR1YWwgflRlc3RCcm93c2VyQ29va2llSmFyKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wg
c2V0Q29va2llc0Zyb21VcmwoY29uc3QgUUxpc3Q8UU5ldHdvcmtDb29raWU+JiBjb29raWVMaXN0
LCBjb25zdCBRVXJsJik7CisKKyAgICB2b2lkIGVuYWJsZURpc2tTdG9yYWdlKGJvb2wgZW5hYmxl
ZCk7CisKK3B1YmxpYyBzbG90czoKKyAgICB2b2lkIHNhdmVUb0Rpc2soKTsKKyAgICB2b2lkIGxv
YWRGcm9tRGlzaygpOworICAgIHZvaWQgcmVzZXQoKTsKKworcHJpdmF0ZSBzbG90czoKKyAgICB2
b2lkIHNhdmVUb0Rpc2tGb3JSZWFsKCk7CisKK3ByaXZhdGU6CisgICAgUUxpc3Q8UUJ5dGVBcnJh
eT4gbV9yYXdDb29raWVzOworICAgIGJvb2wgbV9zdG9yYWdlRW5hYmxlZDsKKyAgICBRRmlsZSBt
X2ZpbGU7CisgICAgUVRpbWVyIG1fdGltZXI7Cit9OworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Rv
b2xzL1F0VGVzdEJyb3dzZXIvbGF1bmNoZXJ3aW5kb3cuY3BwIGIvVG9vbHMvUXRUZXN0QnJvd3Nl
ci9sYXVuY2hlcndpbmRvdy5jcHAKaW5kZXggOTEwNjViYy4uODZlMWIxMyAxMDA2NDQKLS0tIGEv
VG9vbHMvUXRUZXN0QnJvd3Nlci9sYXVuY2hlcndpbmRvdy5jcHAKKysrIGIvVG9vbHMvUXRUZXN0
QnJvd3Nlci9sYXVuY2hlcndpbmRvdy5jcHAKQEAgLTMzLDggKzMzLDExIEBACiAgKi8KIAogI2lu
Y2x1ZGUgImxhdW5jaGVyd2luZG93LmgiCisjaW5jbHVkZSAiY29va2llamFyLmgiCiAjaW5jbHVk
ZSAidXJsbG9hZGVyLmgiCiAKKyNpbmNsdWRlIDxRQXBwbGljYXRpb24+CisKICNpZiAhZGVmaW5l
ZChRVF9OT19GSUxFRElBTE9HKSAmJiAhZGVmaW5lZChRVF9OT19NRVNTQUdFQk9YKQogI2luY2x1
ZGUgPFFGaWxlRGlhbG9nPgogI2luY2x1ZGUgPFFGaWxlSW5mbz4KQEAgLTUwLDYgKzUzLDEyIEBA
CiBjb25zdCBpbnQgZ0V4aXRDbGlja0FyZWEgPSA4MDsKIFFWZWN0b3I8aW50PiBMYXVuY2hlcldp
bmRvdzo6bV96b29tTGV2ZWxzOwogCitzdGF0aWMgVGVzdEJyb3dzZXJDb29raWVKYXIqIHRlc3RC
cm93c2VyQ29va2llSmFyaW5zdGFuY2UoKQoreworICAgIHN0YXRpYyBUZXN0QnJvd3NlckNvb2tp
ZUphciogY29va2llSmFyID0gbmV3IFRlc3RCcm93c2VyQ29va2llSmFyKHFBcHApOworICAgIHJl
dHVybiBjb29raWVKYXI7Cit9CisKIExhdW5jaGVyV2luZG93OjpMYXVuY2hlcldpbmRvdyhXaW5k
b3dPcHRpb25zKiBkYXRhLCBRR3JhcGhpY3NTY2VuZSogc2hhcmVkU2NlbmUpCiAgICAgOiBNYWlu
V2luZG93KCkKICAgICAsIG1fY3VycmVudFpvb20oMTAwKQpAQCAtMTIxLDYgKzEzMCwxMiBAQCB2
b2lkIExhdW5jaGVyV2luZG93Ojppbml0aWFsaXplVmlldygpCiAgICAgUVVybCB1cmwgPSBwYWdl
KCktPm1haW5GcmFtZSgpLT51cmwoKTsKICAgICBzZXRQYWdlKG5ldyBXZWJQYWdlKHRoaXMpKTsK
ICAgICBzZXREaXNrQ2FjaGUobV93aW5kb3dPcHRpb25zLnVzZURpc2tDYWNoZSk7CisgICAgc2V0
VXNlRGlza0Nvb2tpZXMobV93aW5kb3dPcHRpb25zLnVzZURpc2tDb29raWVzKTsKKworICAgIC8q
IHdlIHJldXNlIHRoZSBzYW1lIGNvb2tpZUphciBvbiBtdWx0aXBsZSBRTkFNcywgd2hpY2ggaXMg
T0sgKi8KKyAgICBRT2JqZWN0KiBjb29raWVKYXJQYXJlbnQgPSB0ZXN0QnJvd3NlckNvb2tpZUph
cmluc3RhbmNlKCktPnBhcmVudCgpOworICAgIHBhZ2UoKS0+bmV0d29ya0FjY2Vzc01hbmFnZXIo
KS0+c2V0Q29va2llSmFyKHRlc3RCcm93c2VyQ29va2llSmFyaW5zdGFuY2UoKSk7CisgICAgdGVz
dEJyb3dzZXJDb29raWVKYXJpbnN0YW5jZSgpLT5zZXRQYXJlbnQoY29va2llSmFyUGFyZW50KTsK
IAogICAgIFFTcGxpdHRlciogc3BsaXR0ZXIgPSBzdGF0aWNfY2FzdDxRU3BsaXR0ZXIqPihjZW50
cmFsV2lkZ2V0KCkpOwogCkBAIC0yMjYsNiArMjQxLDggQEAgdm9pZCBMYXVuY2hlcldpbmRvdzo6
Y3JlYXRlQ2hyb21lKCkKICAgICBRQWN0aW9uKiBzZXRFZGl0YWJsZSA9IGVkaXRNZW51LT5hZGRB
Y3Rpb24oIlNldCBFZGl0YWJsZSIsIHRoaXMsIFNMT1Qoc2V0RWRpdGFibGUoYm9vbCkpKTsKICAg
ICBzZXRFZGl0YWJsZS0+c2V0Q2hlY2thYmxlKHRydWUpOwogCisgICAgZWRpdE1lbnUtPmFkZEFj
dGlvbigiQ2xlYXIgQ29va2llcyIsIHRoaXMsIFNMT1QoY2xlYXJDb29raWVzKCkpKTsKKwogICAg
IFFNZW51KiB2aWV3TWVudSA9IG1lbnVCYXIoKS0+YWRkTWVudSgiJlZpZXciKTsKICAgICB2aWV3
TWVudS0+YWRkQWN0aW9uKHBhZ2UoKS0+YWN0aW9uKFFXZWJQYWdlOjpTdG9wKSk7CiAgICAgdmll
d01lbnUtPmFkZEFjdGlvbihwYWdlKCktPmFjdGlvbihRV2ViUGFnZTo6UmVsb2FkKSk7CkBAIC00
MzksNiArNDU2LDExIEBAIHZvaWQgTGF1bmNoZXJXaW5kb3c6OmNyZWF0ZUNocm9tZSgpCiAgICAg
UUFjdGlvbiogdG9nZ2xlSmF2YXNjcmlwdENhbk9wZW5XaW5kb3dzID0gc2V0dGluZ3NNZW51LT5h
ZGRBY3Rpb24oIkVuYWJsZSBqcyBwb3B1cCB3aW5kb3dzIiwgdGhpcywgU0xPVCh0b2dnbGVKYXZh
c2NyaXB0Q2FuT3BlbldpbmRvd3MoYm9vbCkpKTsKICAgICB0b2dnbGVKYXZhc2NyaXB0Q2FuT3Bl
bldpbmRvd3MtPnNldENoZWNrYWJsZSh0cnVlKTsKICAgICB0b2dnbGVKYXZhc2NyaXB0Q2FuT3Bl
bldpbmRvd3MtPnNldENoZWNrZWQoZmFsc2UpOworCisgICAgUUFjdGlvbiogdG9nZ2xlVXNlRGlz
a0Nvb2tpZXMgPSBzZXR0aW5nc01lbnUtPmFkZEFjdGlvbigiU2F2ZSBDb29raWVzIG9uIERpc2si
LCB0aGlzLCBTTE9UKHNldFVzZURpc2tDb29raWVzKGJvb2wpKSk7CisgICAgdG9nZ2xlVXNlRGlz
a0Nvb2tpZXMtPnNldENoZWNrYWJsZSh0cnVlKTsKKyAgICB0b2dnbGVVc2VEaXNrQ29va2llcy0+
c2V0Q2hlY2tlZChtX3dpbmRvd09wdGlvbnMudXNlRGlza0Nvb2tpZXMpOworCiAjaWZuZGVmIFFU
X05PX0xJTkVFRElUCiAgICAgbV9maW5kQmFyID0gbmV3IFFUb29sQmFyKCJGaW5kIiwgdGhpcyk7
CiAgICAgYWRkVG9vbEJhcihRdDo6Qm90dG9tVG9vbEJhckFyZWEsIG1fZmluZEJhcik7CkBAIC04
ODUsNiArOTA3LDE2IEBAIHZvaWQgTGF1bmNoZXJXaW5kb3c6OnRvZ2dsZUphdmFzY3JpcHRDYW5P
cGVuV2luZG93cyhib29sIGVuYWJsZSkKICAgICBwYWdlKCktPnNldHRpbmdzKCktPnNldEF0dHJp
YnV0ZShRV2ViU2V0dGluZ3M6OkphdmFzY3JpcHRDYW5PcGVuV2luZG93cywgZW5hYmxlKTsKIH0K
IAordm9pZCBMYXVuY2hlcldpbmRvdzo6c2V0VXNlRGlza0Nvb2tpZXMoYm9vbCBlbmFibGUpCit7
CisgICAgdGVzdEJyb3dzZXJDb29raWVKYXJpbnN0YW5jZSgpLT5lbmFibGVEaXNrU3RvcmFnZShl
bmFibGUpOworfQorCit2b2lkIExhdW5jaGVyV2luZG93OjpjbGVhckNvb2tpZXMoKQoreworICAg
IHRlc3RCcm93c2VyQ29va2llSmFyaW5zdGFuY2UoKS0+cmVzZXQoKTsKK30KKwogdm9pZCBMYXVu
Y2hlcldpbmRvdzo6dG9nZ2xlQXV0b0xvYWRJbWFnZXMoYm9vbCBlbmFibGUpCiB7CiAgICAgcGFn
ZSgpLT5zZXR0aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpBdXRvTG9hZEltYWdl
cywgIWVuYWJsZSk7CmRpZmYgLS1naXQgYS9Ub29scy9RdFRlc3RCcm93c2VyL2xhdW5jaGVyd2lu
ZG93LmggYi9Ub29scy9RdFRlc3RCcm93c2VyL2xhdW5jaGVyd2luZG93LmgKaW5kZXggNTI3Zjhm
Yi4uOWEzNmZkZiAxMDA2NDQKLS0tIGEvVG9vbHMvUXRUZXN0QnJvd3Nlci9sYXVuY2hlcndpbmRv
dy5oCisrKyBiL1Rvb2xzL1F0VGVzdEJyb3dzZXIvbGF1bmNoZXJ3aW5kb3cuaApAQCAtOTcsNiAr
OTcsNyBAQCBwdWJsaWM6CiAgICAgICAgICwgdXNlTG9jYWxTdG9yYWdlKGZhbHNlKQogICAgICAg
ICAsIHVzZU9mZmxpbmVTdG9yYWdlRGF0YWJhc2UoZmFsc2UpCiAgICAgICAgICwgdXNlT2ZmbGlu
ZVdlYkFwcGxpY2F0aW9uQ2FjaGUoZmFsc2UpCisgICAgICAgICwgdXNlRGlza0Nvb2tpZXModHJ1
ZSkKICAgICAgICAgLCBvZmZsaW5lU3RvcmFnZURlZmF1bHRRdW90YVNpemUoMCkKICNpZiBkZWZp
bmVkKFFUX0NPTkZJR1VSRURfV0lUSF9PUEVOR0wpCiAgICAgICAgICwgdXNlUUdMV2lkZ2V0Vmll
d3BvcnQoZmFsc2UpCkBAIC0xMjYsNiArMTI3LDcgQEAgcHVibGljOgogICAgIGJvb2wgdXNlTG9j
YWxTdG9yYWdlOwogICAgIGJvb2wgdXNlT2ZmbGluZVN0b3JhZ2VEYXRhYmFzZTsKICAgICBib29s
IHVzZU9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlOworICAgIGJvb2wgdXNlRGlza0Nvb2tpZXM7
CiAgICAgcXVpbnQ2NCBvZmZsaW5lU3RvcmFnZURlZmF1bHRRdW90YVNpemU7CiAjaWYgZGVmaW5l
ZChRVF9DT05GSUdVUkVEX1dJVEhfT1BFTkdMKQogICAgIGJvb2wgdXNlUUdMV2lkZ2V0Vmlld3Bv
cnQ7CkBAIC0xODgsNiArMTkwLDggQEAgcHJvdGVjdGVkIHNsb3RzOgogICAgIHZvaWQgdG9nZ2xl
SW50ZXJydXB0aW5nSmF2YVNjcmlwdEVuYWJsZWQoYm9vbCBlbmFibGUpOwogICAgIHZvaWQgdG9n
Z2xlSmF2YXNjcmlwdENhbk9wZW5XaW5kb3dzKGJvb2wgZW5hYmxlKTsKICAgICB2b2lkIHRvZ2ds
ZUF1dG9Mb2FkSW1hZ2VzKGJvb2wgZW5hYmxlKTsKKyAgICB2b2lkIHNldFVzZURpc2tDb29raWVz
KGJvb2wgZW5hYmxlKTsKKyAgICB2b2lkIGNsZWFyQ29va2llcygpOwogICAgIHZvaWQgdG9nZ2xl
UGx1Z2lucyhib29sIGVuYWJsZSk7CiAgICAgdm9pZCB0b2dnbGVMb2NhbFN0b3JhZ2UoYm9vbCB0
b2dnbGUpOwogICAgIHZvaWQgdG9nZ2xlT2ZmbGluZVN0b3JhZ2VEYXRhYmFzZShib29sIHRvZ2ds
ZSk7CmRpZmYgLS1naXQgYS9Ub29scy9RdFRlc3RCcm93c2VyL21haW4uY3BwIGIvVG9vbHMvUXRU
ZXN0QnJvd3Nlci9tYWluLmNwcAppbmRleCA2NjExNDM1Li5mYjQyNzk5IDEwMDY0NAotLS0gYS9U
b29scy9RdFRlc3RCcm93c2VyL21haW4uY3BwCisrKyBiL1Rvb2xzL1F0VGVzdEJyb3dzZXIvbWFp
bi5jcHAKQEAgLTE5NSw2ICsxOTUsNyBAQCB2b2lkIExhdW5jaGVyQXBwbGljYXRpb246OmhhbmRs
ZVVzZXJPcHRpb25zKCkKICAgICAgICAgICAgICA8PCAiWy10aWxlZC1iYWNraW5nLXN0b3JlXSIK
ICAgICAgICAgICAgICA8PCAiWy1yZXNpemVzLXRvLWNvbnRlbnRzXSIKICAgICAgICAgICAgICA8
PCAiWy1sb2NhbC1zdG9yYWdlLWVuYWJsZWRdIgorICAgICAgICAgICAgIDw8ICJbLW5vLWRpc2st
Y29va2llc10iCiAgICAgICAgICAgICAgPDwgIlstb2ZmbGluZS1zdG9yYWdlLWRhdGFiYXNlLWVu
YWJsZWRdIgogICAgICAgICAgICAgIDw8ICJbLW9mZmxpbmUtd2ViLWFwcGxpY2F0aW9uLWNhY2hl
LWVuYWJsZWRdIgogICAgICAgICAgICAgIDw8ICJbLXNldC1vZmZsaW5lLXN0b3JhZ2UtZGVmYXVs
dC1xdW90YSBtYXhTaXplXSIKQEAgLTI0NSw3ICsyNDYsMTAgQEAgdm9pZCBMYXVuY2hlckFwcGxp
Y2F0aW9uOjpoYW5kbGVVc2VyT3B0aW9ucygpCiAgICAgCiAgICAgaWYgKGFyZ3MuY29udGFpbnMo
Ii1sb2NhbC1zdG9yYWdlLWVuYWJsZWQiKSkKICAgICAgICAgd2luZG93T3B0aW9ucy51c2VMb2Nh
bFN0b3JhZ2UgPSB0cnVlOwotICAgICAgICAKKworICAgIGlmIChhcmdzLmNvbnRhaW5zKCItbm8t
ZGlzay1jb29raWVzIikpCisgICAgICAgIHdpbmRvd09wdGlvbnMudXNlRGlza0Nvb2tpZXMgPSBm
YWxzZTsKKwogICAgIGlmIChhcmdzLmNvbnRhaW5zKCItbWF4aW1pemUiKSkKICAgICAgICAgd2lu
ZG93T3B0aW9ucy5zdGFydE1heGltaXplZCA9IHRydWU7CiAKLS0gCjEuNy4zLjQKCg==
</data>
<flag name="commit-queue"
          id="97505"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102289</attachid>
            <date>2011-07-28 13:09:49 -0700</date>
            <delta_ts>2011-07-28 13:25:06 -0700</delta_ts>
            <desc>patch v2</desc>
            <filename>0001-Qt-QtTestBrowser-Add-support-for-saving-cookies-on-d.patch</filename>
            <type>text/plain</type>
            <size>14250</size>
            <attacher name="Ademar Reis">ademar</attacher>
            
              <data encoding="base64">RnJvbSA3NmJlOTllZDE4OGZkMGZiYzUwZDgxODViZjdlZmVhZGIxNDVkZDllIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGVtYXIgZGUgU291emEgUmVpcyBKciA8YWRlbWFyLnJlaXNA
b3BlbmJvc3NhLm9yZz4KRGF0ZTogV2VkLCAyNyBKdWwgMjAxMSAxNzowMDoxMCAtMDMwMApTdWJq
ZWN0OiBbUEFUQ0hdIFtRdF0gUXRUZXN0QnJvd3NlcjogQWRkIHN1cHBvcnQgZm9yIHNhdmluZyBj
b29raWVzIG9uIGRpc2sKCi0tLQogVG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDIxICsrKysrCiBUb29scy9RdFRlc3RCcm93c2VyL1F0VGVzdEJyb3dzZXIucHJvICB8
ICAgIDIgKwogVG9vbHMvUXRUZXN0QnJvd3Nlci9jb29raWVqYXIuY3BwICAgICAgfCAgMTI3ICsr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBUb29scy9RdFRlc3RCcm93c2VyL2Nvb2tp
ZWphci5oICAgICAgICB8ICAgNjEgKysrKysrKysrKysrKysrCiBUb29scy9RdFRlc3RCcm93c2Vy
L2xhdW5jaGVyd2luZG93LmNwcCB8ICAgMzIgKysrKysrKysKIFRvb2xzL1F0VGVzdEJyb3dzZXIv
bGF1bmNoZXJ3aW5kb3cuaCAgIHwgICAgNCArCiBUb29scy9RdFRlc3RCcm93c2VyL21haW4uY3Bw
ICAgICAgICAgICB8ICAgIDYgKy0KIDcgZmlsZXMgY2hhbmdlZCwgMjUyIGluc2VydGlvbnMoKyks
IDEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgVG9vbHMvUXRUZXN0QnJvd3Nlci9j
b29raWVqYXIuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgVG9vbHMvUXRUZXN0QnJvd3Nlci9jb29r
aWVqYXIuaAoKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCBmZmZjMzQ1Li5kZTdhYTZhYyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDExLTA3LTI4ICBBZGVtYXIgZGUg
U291emEgUmVpcyBKciAgPGFkZW1hci5yZWlzQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1F0
XSBRdFRlc3RCcm93c2VyOiBBZGQgc3VwcG9ydCBmb3Igc2F2aW5nIGNvb2tpZXMgb24gZGlzawor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUzMjgKKwor
ICAgICAgICBTaW1wbGUgY29va2llamFyIHRoYXQgc2F2ZXMgY29va2llcyBvbiBkaXNrLgorCisg
ICAgICAgIEFkZGVkIG1lbnUgb3B0aW9ucyB0byBjbGVhciBjb29raWVzIChFZGl0LT5DbGVhciBj
b29raWVzKSBhbmQKKyAgICAgICAgZGlzYWJsZSBkaXNrIGNvb2tpZXMgKFNldHRpbmdzLT5bIF1T
YXZlIENvb2tpZXMgb24gRGlzaykuCisKKyAgICAgICAgT3B0aW9uIC1uby1kaXNrLWNvb2tpZXMg
aXMgYWxzbyBhdmFpbGFibGUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBRdFRlc3RCcm93c2VyL1F0VGVzdEJyb3dzZXIucHJvOgorICAgICAgICAq
IFF0VGVzdEJyb3dzZXIvY29va2llamFyLmNwcDogQWRkZWQuCisgICAgICAgICogUXRUZXN0QnJv
d3Nlci9jb29raWVqYXIuaDogQWRkZWQuCisgICAgICAgICogUXRUZXN0QnJvd3Nlci9sYXVuY2hl
cndpbmRvdy5jcHA6CisgICAgICAgICogUXRUZXN0QnJvd3Nlci9sYXVuY2hlcndpbmRvdy5oOgor
ICAgICAgICAqIFF0VGVzdEJyb3dzZXIvbWFpbi5jcHA6CisKIDIwMTEtMDctMjcgIFJ5dWFuIENo
b2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFN0eWxlIGJvdCBjb21wbGFp
bnMgYWJvdXQgRUZMLXNwZWNpZmljIGZvcndhcmQgZGVjbGFyYXRpb24gbmFtaW5nLgpkaWZmIC0t
Z2l0IGEvVG9vbHMvUXRUZXN0QnJvd3Nlci9RdFRlc3RCcm93c2VyLnBybyBiL1Rvb2xzL1F0VGVz
dEJyb3dzZXIvUXRUZXN0QnJvd3Nlci5wcm8KaW5kZXggYTc4MjZlNS4uNjhjYzhmOSAxMDA2NDQK
LS0tIGEvVG9vbHMvUXRUZXN0QnJvd3Nlci9RdFRlc3RCcm93c2VyLnBybworKysgYi9Ub29scy9R
dFRlc3RCcm93c2VyL1F0VGVzdEJyb3dzZXIucHJvCkBAIC0xMCw2ICsxMCw3IEBAIFNPVVJDRVMg
Kz0gXAogICAgIHdlYnBhZ2UuY3BwIFwKICAgICB3ZWJ2aWV3LmNwcCBcCiAgICAgZnBzdGltZXIu
Y3BwIFwKKyAgICBjb29raWVqYXIuY3BwCiAKIEhFQURFUlMgKz0gXAogICAgIGxvY2F0aW9uZWRp
dC5oIFwKQEAgLTIxLDYgKzIyLDcgQEAgSEVBREVSUyArPSBcCiAgICAgd2VicGFnZS5oIFwKICAg
ICB3ZWJ2aWV3LmggXAogICAgIGZwc3RpbWVyLmggXAorICAgIGNvb2tpZWphci5oCiAKICFpc0Vx
dWFsKFFUX0FSQ0gsc2g0KTogQ09ORklHICs9IHVpdG9vbHMKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
UXRUZXN0QnJvd3Nlci9jb29raWVqYXIuY3BwIGIvVG9vbHMvUXRUZXN0QnJvd3Nlci9jb29raWVq
YXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlM2JmNmMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9RdFRlc3RCcm93c2VyL2Nvb2tpZWphci5jcHAKQEAgLTAsMCAr
MSwxMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29va2llamFyLmgiCisKKyNpbmNsdWRlIDxRRGVza3RvcFNlcnZpY2Vz
PgorI2luY2x1ZGUgPFFEaXI+CisjaW5jbHVkZSA8UVRleHRTdHJlYW0+CisjaW5jbHVkZSA8UVRp
bWVyPgorCitUZXN0QnJvd3NlckNvb2tpZUphcjo6VGVzdEJyb3dzZXJDb29raWVKYXIoUU9iamVj
dCogcGFyZW50KQorICAgIDogUU5ldHdvcmtDb29raWVKYXIocGFyZW50KQorICAgICwgbV9zdG9y
YWdlRW5hYmxlZChmYWxzZSkKK3sKKyAgICAvKiBXZSB1c2UgYSB0aW1lciBmb3IgdGhlIHJlYWwg
ZGlzayB3cml0ZSB0byBhdm9pZCBtdWx0aXBsZSBJTworICAgICAgIHN5c2NhbGxzIGluIHNlcXVl
bmNlICh3aGVuIGxvYWRpbmcgcGFnZXMgd2hpY2ggc2V0IG11bHRpcGxlIGNvb2tpZXMpLiAqLwor
ICAgIG1fdGltZXIuc2V0SW50ZXJ2YWwoMTAwMDApOworICAgIG1fdGltZXIuc2V0U2luZ2xlU2hv
dCh0cnVlKTsKKyAgICBjb25uZWN0KCZtX3RpbWVyLCBTSUdOQUwodGltZW91dCgpKSwgdGhpcywg
U0xPVChzYXZlVG9EaXNrKCkpKTsKKworICAgIFFTdHJpbmcgcGF0aCA9IFFEZXNrdG9wU2Vydmlj
ZXM6OnN0b3JhZ2VMb2NhdGlvbihRRGVza3RvcFNlcnZpY2VzOjpDYWNoZUxvY2F0aW9uKTsKKyAg
ICBRRGlyIGZvbzsgLyogUURpcjo6bWtwYXRoKCkgaXMgbm90IHN0YXRpYy4gOiggKi8KKyAgICBm
b28ubWtwYXRoKHBhdGgpOworICAgIG1fZmlsZS5zZXRGaWxlTmFtZShwYXRoICsgIi9jb29raWVK
YXIiKTsKK30KKworVGVzdEJyb3dzZXJDb29raWVKYXI6On5UZXN0QnJvd3NlckNvb2tpZUphcigp
Cit7CisgICAgaWYgKG1fc3RvcmFnZUVuYWJsZWQpCisgICAgICAgIHNhdmVUb0Rpc2soKTsKK30K
KworYm9vbCBUZXN0QnJvd3NlckNvb2tpZUphcjo6c2V0Q29va2llc0Zyb21VcmwoY29uc3QgUUxp
c3Q8UU5ldHdvcmtDb29raWU+JiBjb29raWVMaXN0LCBjb25zdCBRVXJsJiB1cmwpCit7CisgICAg
Ym9vbCBzdGF0dXMgPSBRTmV0d29ya0Nvb2tpZUphcjo6c2V0Q29va2llc0Zyb21VcmwoY29va2ll
TGlzdCwgdXJsKTsKKyAgICBpZiAoc3RhdHVzICYmIG1fc3RvcmFnZUVuYWJsZWQpCisgICAgICAg
IHNjaGVkdWxlU2F2ZVRvRGlzaygpOworICAgIHJldHVybiBzdGF0dXM7Cit9CisKK3ZvaWQgVGVz
dEJyb3dzZXJDb29raWVKYXI6OmVuYWJsZURpc2tTdG9yYWdlKGJvb2wgZW5hYmxlZCkKK3sKKyAg
ICBtX3N0b3JhZ2VFbmFibGVkID0gZW5hYmxlZDsKKworICAgIGlmIChlbmFibGVkICYmIGFsbENv
b2tpZXMoKS5pc0VtcHR5KCkpCisgICAgICAgIGxvYWRGcm9tRGlzaygpOworCisgICAgLyogV2hl
biBkaXNhYmxpbmcsIHNhdmUgY3VycmVudCBjb29raWVzLiAqLworICAgIGlmICghZW5hYmxlZCAm
JiAhYWxsQ29va2llcygpLmlzRW1wdHkoKSkKKyAgICAgICAgc2F2ZVRvRGlzaygpOworfQorCit2
b2lkIFRlc3RCcm93c2VyQ29va2llSmFyOjpzY2hlZHVsZVNhdmVUb0Rpc2soKQoreworICAgIFFM
aXN0PFFOZXR3b3JrQ29va2llPiBjb29raWVzID0gYWxsQ29va2llcygpOworICAgIG1fcmF3Q29v
a2llcy5jbGVhcigpOworCisgICAgLyogTm9uIG9wdGltYWwsIHdlIGNvdWxkIHVzZSBzb21lIGRh
dGFiYXNlIGFuZCBpbmNyZW1lbnRhbCBzYXZlLiAqLworICAgIGZvcmVhY2ggKFFOZXR3b3JrQ29v
a2llIGNvb2tpZSwgY29va2llcykgeworICAgICAgICBpZiAoIWNvb2tpZS5pc1Nlc3Npb25Db29r
aWUoKSkKKyAgICAgICAgICAgIG1fcmF3Q29va2llcy5hcHBlbmQoY29va2llLnRvUmF3Rm9ybSgp
KTsKKyAgICB9CisKKyAgICBtX3RpbWVyLnN0YXJ0KCk7Cit9CisKK3ZvaWQgVGVzdEJyb3dzZXJD
b29raWVKYXI6OnNhdmVUb0Rpc2soKQoreworICAgIG1fdGltZXIuc3RvcCgpOworCisgICAgaWYg
KG1fZmlsZS5vcGVuKFFJT0RldmljZTo6V3JpdGVPbmx5IHwgUUlPRGV2aWNlOjpUZXh0KSkgewor
ICAgICAgICBRVGV4dFN0cmVhbSBvdXQoJm1fZmlsZSk7CisgICAgICAgIGZvcmVhY2ggKFFCeXRl
QXJyYXkgY29va2llLCBtX3Jhd0Nvb2tpZXMpCisgICAgICAgICAgICBvdXQgPDwgY29va2llICsg
IlxuIjsKKyAgICAgICAgbV9maWxlLmNsb3NlKCk7CisgICAgfSBlbHNlCisgICAgICAgIHFXYXJu
aW5nKCJJTyBlcnJvciBoYW5kbGluZyBjb29raWVqYXIgZmlsZSIpOworfQorCit2b2lkIFRlc3RC
cm93c2VyQ29va2llSmFyOjpsb2FkRnJvbURpc2soKQoreworICAgIGlmICghbV9maWxlLmV4aXN0
cygpKQorICAgICAgICByZXR1cm47CisKKyAgICBRTGlzdDxRTmV0d29ya0Nvb2tpZT4gY29va2ll
czsKKworICAgIGlmIChtX2ZpbGUub3BlbihRSU9EZXZpY2U6OlJlYWRPbmx5IHwgUUlPRGV2aWNl
OjpUZXh0KSkgeworICAgICAgICBRVGV4dFN0cmVhbSBpbigmbV9maWxlKTsKKyAgICAgICAgd2hp
bGUgKCFpbi5hdEVuZCgpKQorICAgICAgICAgICAgY29va2llcy5hcHBlbmQoUU5ldHdvcmtDb29r
aWU6OnBhcnNlQ29va2llcyhpbi5yZWFkTGluZSgpLnRvQXNjaWkoKSkpOworICAgICAgICBtX2Zp
bGUuY2xvc2UoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcVdhcm5pbmcoIklPIGVycm9yIGhhbmRs
aW5nIGNvb2tpZWphciBmaWxlIik7CisKKyAgICBzZXRBbGxDb29raWVzKGNvb2tpZXMpOworfQor
Cit2b2lkIFRlc3RCcm93c2VyQ29va2llSmFyOjpyZXNldCgpCit7CisgICAgc2V0QWxsQ29va2ll
cyhRTGlzdDxRTmV0d29ya0Nvb2tpZT4oKSk7CisgICAgaWYgKG1fc3RvcmFnZUVuYWJsZWQpCisg
ICAgICAgIHNjaGVkdWxlU2F2ZVRvRGlzaygpOworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvUXRUZXN0
QnJvd3Nlci9jb29raWVqYXIuaCBiL1Rvb2xzL1F0VGVzdEJyb3dzZXIvY29va2llamFyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzIzOTdhMAotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1F0VGVzdEJyb3dzZXIvY29va2llamFyLmgKQEAgLTAsMCArMSw2MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNp
ZGlhcnkoLWllcykKKyAqCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
Y29va2llamFyX2gKKyNkZWZpbmUgY29va2llamFyX2gKKworI2luY2x1ZGUgPFFGaWxlPgorI2lu
Y2x1ZGUgPFFOZXR3b3JrQ29va2llSmFyPgorI2luY2x1ZGUgPFFUaW1lcj4KKworY2xhc3MgVGVz
dEJyb3dzZXJDb29raWVKYXIgOiBwdWJsaWMgUU5ldHdvcmtDb29raWVKYXIgeworICAgIFFfT0JK
RUNUCisKK3B1YmxpYzoKKyAgICBUZXN0QnJvd3NlckNvb2tpZUphcihRT2JqZWN0KiBwYXJlbnQg
PSAwKTsKKyAgICB2aXJ0dWFsIH5UZXN0QnJvd3NlckNvb2tpZUphcigpOworCisgICAgdmlydHVh
bCBib29sIHNldENvb2tpZXNGcm9tVXJsKGNvbnN0IFFMaXN0PFFOZXR3b3JrQ29va2llPiYgY29v
a2llTGlzdCwgY29uc3QgUVVybCYpOworCisgICAgdm9pZCBlbmFibGVEaXNrU3RvcmFnZShib29s
IGVuYWJsZWQpOworCitwdWJsaWMgc2xvdHM6CisgICAgdm9pZCBzY2hlZHVsZVNhdmVUb0Rpc2so
KTsKKyAgICB2b2lkIGxvYWRGcm9tRGlzaygpOworICAgIHZvaWQgcmVzZXQoKTsKKworcHJpdmF0
ZSBzbG90czoKKyAgICB2b2lkIHNhdmVUb0Rpc2soKTsKKworcHJpdmF0ZToKKyAgICBRTGlzdDxR
Qnl0ZUFycmF5PiBtX3Jhd0Nvb2tpZXM7CisgICAgYm9vbCBtX3N0b3JhZ2VFbmFibGVkOworICAg
IFFGaWxlIG1fZmlsZTsKKyAgICBRVGltZXIgbV90aW1lcjsKK307CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvVG9vbHMvUXRUZXN0QnJvd3Nlci9sYXVuY2hlcndpbmRvdy5jcHAgYi9Ub29scy9RdFRl
c3RCcm93c2VyL2xhdW5jaGVyd2luZG93LmNwcAppbmRleCA5MTA2NWJjLi40NzA4YzAyIDEwMDY0
NAotLS0gYS9Ub29scy9RdFRlc3RCcm93c2VyL2xhdW5jaGVyd2luZG93LmNwcAorKysgYi9Ub29s
cy9RdFRlc3RCcm93c2VyL2xhdW5jaGVyd2luZG93LmNwcApAQCAtMzMsOCArMzMsMTEgQEAKICAq
LwogCiAjaW5jbHVkZSAibGF1bmNoZXJ3aW5kb3cuaCIKKyNpbmNsdWRlICJjb29raWVqYXIuaCIK
ICNpbmNsdWRlICJ1cmxsb2FkZXIuaCIKIAorI2luY2x1ZGUgPFFBcHBsaWNhdGlvbj4KKwogI2lm
ICFkZWZpbmVkKFFUX05PX0ZJTEVESUFMT0cpICYmICFkZWZpbmVkKFFUX05PX01FU1NBR0VCT1gp
CiAjaW5jbHVkZSA8UUZpbGVEaWFsb2c+CiAjaW5jbHVkZSA8UUZpbGVJbmZvPgpAQCAtNTAsNiAr
NTMsMTIgQEAKIGNvbnN0IGludCBnRXhpdENsaWNrQXJlYSA9IDgwOwogUVZlY3RvcjxpbnQ+IExh
dW5jaGVyV2luZG93OjptX3pvb21MZXZlbHM7CiAKK3N0YXRpYyBUZXN0QnJvd3NlckNvb2tpZUph
ciogdGVzdEJyb3dzZXJDb29raWVKYXJJbnN0YW5jZSgpCit7CisgICAgc3RhdGljIFRlc3RCcm93
c2VyQ29va2llSmFyKiBjb29raWVKYXIgPSBuZXcgVGVzdEJyb3dzZXJDb29raWVKYXIocUFwcCk7
CisgICAgcmV0dXJuIGNvb2tpZUphcjsKK30KKwogTGF1bmNoZXJXaW5kb3c6OkxhdW5jaGVyV2lu
ZG93KFdpbmRvd09wdGlvbnMqIGRhdGEsIFFHcmFwaGljc1NjZW5lKiBzaGFyZWRTY2VuZSkKICAg
ICA6IE1haW5XaW5kb3coKQogICAgICwgbV9jdXJyZW50Wm9vbSgxMDApCkBAIC0xMjEsNiArMTMw
LDEyIEBAIHZvaWQgTGF1bmNoZXJXaW5kb3c6OmluaXRpYWxpemVWaWV3KCkKICAgICBRVXJsIHVy
bCA9IHBhZ2UoKS0+bWFpbkZyYW1lKCktPnVybCgpOwogICAgIHNldFBhZ2UobmV3IFdlYlBhZ2Uo
dGhpcykpOwogICAgIHNldERpc2tDYWNoZShtX3dpbmRvd09wdGlvbnMudXNlRGlza0NhY2hlKTsK
KyAgICBzZXRVc2VEaXNrQ29va2llcyhtX3dpbmRvd09wdGlvbnMudXNlRGlza0Nvb2tpZXMpOwor
CisgICAgLyogd2UgcmV1c2UgdGhlIHNhbWUgY29va2llSmFyIG9uIG11bHRpcGxlIFFOQU1zLCB3
aGljaCBpcyBPSyAqLworICAgIFFPYmplY3QqIGNvb2tpZUphclBhcmVudCA9IHRlc3RCcm93c2Vy
Q29va2llSmFySW5zdGFuY2UoKS0+cGFyZW50KCk7CisgICAgcGFnZSgpLT5uZXR3b3JrQWNjZXNz
TWFuYWdlcigpLT5zZXRDb29raWVKYXIodGVzdEJyb3dzZXJDb29raWVKYXJJbnN0YW5jZSgpKTsK
KyAgICB0ZXN0QnJvd3NlckNvb2tpZUphckluc3RhbmNlKCktPnNldFBhcmVudChjb29raWVKYXJQ
YXJlbnQpOwogCiAgICAgUVNwbGl0dGVyKiBzcGxpdHRlciA9IHN0YXRpY19jYXN0PFFTcGxpdHRl
cio+KGNlbnRyYWxXaWRnZXQoKSk7CiAKQEAgLTIyNiw2ICsyNDEsOCBAQCB2b2lkIExhdW5jaGVy
V2luZG93OjpjcmVhdGVDaHJvbWUoKQogICAgIFFBY3Rpb24qIHNldEVkaXRhYmxlID0gZWRpdE1l
bnUtPmFkZEFjdGlvbigiU2V0IEVkaXRhYmxlIiwgdGhpcywgU0xPVChzZXRFZGl0YWJsZShib29s
KSkpOwogICAgIHNldEVkaXRhYmxlLT5zZXRDaGVja2FibGUodHJ1ZSk7CiAKKyAgICBlZGl0TWVu
dS0+YWRkQWN0aW9uKCJDbGVhciBDb29raWVzIiwgdGhpcywgU0xPVChjbGVhckNvb2tpZXMoKSkp
OworCiAgICAgUU1lbnUqIHZpZXdNZW51ID0gbWVudUJhcigpLT5hZGRNZW51KCImVmlldyIpOwog
ICAgIHZpZXdNZW51LT5hZGRBY3Rpb24ocGFnZSgpLT5hY3Rpb24oUVdlYlBhZ2U6OlN0b3ApKTsK
ICAgICB2aWV3TWVudS0+YWRkQWN0aW9uKHBhZ2UoKS0+YWN0aW9uKFFXZWJQYWdlOjpSZWxvYWQp
KTsKQEAgLTQzOSw2ICs0NTYsMTEgQEAgdm9pZCBMYXVuY2hlcldpbmRvdzo6Y3JlYXRlQ2hyb21l
KCkKICAgICBRQWN0aW9uKiB0b2dnbGVKYXZhc2NyaXB0Q2FuT3BlbldpbmRvd3MgPSBzZXR0aW5n
c01lbnUtPmFkZEFjdGlvbigiRW5hYmxlIGpzIHBvcHVwIHdpbmRvd3MiLCB0aGlzLCBTTE9UKHRv
Z2dsZUphdmFzY3JpcHRDYW5PcGVuV2luZG93cyhib29sKSkpOwogICAgIHRvZ2dsZUphdmFzY3Jp
cHRDYW5PcGVuV2luZG93cy0+c2V0Q2hlY2thYmxlKHRydWUpOwogICAgIHRvZ2dsZUphdmFzY3Jp
cHRDYW5PcGVuV2luZG93cy0+c2V0Q2hlY2tlZChmYWxzZSk7CisKKyAgICBRQWN0aW9uKiB0b2dn
bGVVc2VEaXNrQ29va2llcyA9IHNldHRpbmdzTWVudS0+YWRkQWN0aW9uKCJTYXZlIENvb2tpZXMg
b24gRGlzayIsIHRoaXMsIFNMT1Qoc2V0VXNlRGlza0Nvb2tpZXMoYm9vbCkpKTsKKyAgICB0b2dn
bGVVc2VEaXNrQ29va2llcy0+c2V0Q2hlY2thYmxlKHRydWUpOworICAgIHRvZ2dsZVVzZURpc2tD
b29raWVzLT5zZXRDaGVja2VkKG1fd2luZG93T3B0aW9ucy51c2VEaXNrQ29va2llcyk7CisKICNp
Zm5kZWYgUVRfTk9fTElORUVESVQKICAgICBtX2ZpbmRCYXIgPSBuZXcgUVRvb2xCYXIoIkZpbmQi
LCB0aGlzKTsKICAgICBhZGRUb29sQmFyKFF0OjpCb3R0b21Ub29sQmFyQXJlYSwgbV9maW5kQmFy
KTsKQEAgLTg4NSw2ICs5MDcsMTYgQEAgdm9pZCBMYXVuY2hlcldpbmRvdzo6dG9nZ2xlSmF2YXNj
cmlwdENhbk9wZW5XaW5kb3dzKGJvb2wgZW5hYmxlKQogICAgIHBhZ2UoKS0+c2V0dGluZ3MoKS0+
c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6SmF2YXNjcmlwdENhbk9wZW5XaW5kb3dzLCBlbmFi
bGUpOwogfQogCit2b2lkIExhdW5jaGVyV2luZG93OjpzZXRVc2VEaXNrQ29va2llcyhib29sIGVu
YWJsZSkKK3sKKyAgICB0ZXN0QnJvd3NlckNvb2tpZUphckluc3RhbmNlKCktPmVuYWJsZURpc2tT
dG9yYWdlKGVuYWJsZSk7Cit9CisKK3ZvaWQgTGF1bmNoZXJXaW5kb3c6OmNsZWFyQ29va2llcygp
Cit7CisgICAgdGVzdEJyb3dzZXJDb29raWVKYXJJbnN0YW5jZSgpLT5yZXNldCgpOworfQorCiB2
b2lkIExhdW5jaGVyV2luZG93Ojp0b2dnbGVBdXRvTG9hZEltYWdlcyhib29sIGVuYWJsZSkKIHsK
ICAgICBwYWdlKCktPnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OkF1dG9M
b2FkSW1hZ2VzLCAhZW5hYmxlKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1F0VGVzdEJyb3dzZXIvbGF1
bmNoZXJ3aW5kb3cuaCBiL1Rvb2xzL1F0VGVzdEJyb3dzZXIvbGF1bmNoZXJ3aW5kb3cuaAppbmRl
eCA1MjdmOGZiLi45YTM2ZmRmIDEwMDY0NAotLS0gYS9Ub29scy9RdFRlc3RCcm93c2VyL2xhdW5j
aGVyd2luZG93LmgKKysrIGIvVG9vbHMvUXRUZXN0QnJvd3Nlci9sYXVuY2hlcndpbmRvdy5oCkBA
IC05Nyw2ICs5Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgLCB1c2VMb2NhbFN0b3JhZ2UoZmFsc2Up
CiAgICAgICAgICwgdXNlT2ZmbGluZVN0b3JhZ2VEYXRhYmFzZShmYWxzZSkKICAgICAgICAgLCB1
c2VPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZShmYWxzZSkKKyAgICAgICAgLCB1c2VEaXNrQ29v
a2llcyh0cnVlKQogICAgICAgICAsIG9mZmxpbmVTdG9yYWdlRGVmYXVsdFF1b3RhU2l6ZSgwKQog
I2lmIGRlZmluZWQoUVRfQ09ORklHVVJFRF9XSVRIX09QRU5HTCkKICAgICAgICAgLCB1c2VRR0xX
aWRnZXRWaWV3cG9ydChmYWxzZSkKQEAgLTEyNiw2ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCB1c2VMb2NhbFN0b3JhZ2U7CiAgICAgYm9vbCB1c2VPZmZsaW5lU3RvcmFnZURhdGFiYXNlOwog
ICAgIGJvb2wgdXNlT2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGU7CisgICAgYm9vbCB1c2VEaXNr
Q29va2llczsKICAgICBxdWludDY0IG9mZmxpbmVTdG9yYWdlRGVmYXVsdFF1b3RhU2l6ZTsKICNp
ZiBkZWZpbmVkKFFUX0NPTkZJR1VSRURfV0lUSF9PUEVOR0wpCiAgICAgYm9vbCB1c2VRR0xXaWRn
ZXRWaWV3cG9ydDsKQEAgLTE4OCw2ICsxOTAsOCBAQCBwcm90ZWN0ZWQgc2xvdHM6CiAgICAgdm9p
ZCB0b2dnbGVJbnRlcnJ1cHRpbmdKYXZhU2NyaXB0RW5hYmxlZChib29sIGVuYWJsZSk7CiAgICAg
dm9pZCB0b2dnbGVKYXZhc2NyaXB0Q2FuT3BlbldpbmRvd3MoYm9vbCBlbmFibGUpOwogICAgIHZv
aWQgdG9nZ2xlQXV0b0xvYWRJbWFnZXMoYm9vbCBlbmFibGUpOworICAgIHZvaWQgc2V0VXNlRGlz
a0Nvb2tpZXMoYm9vbCBlbmFibGUpOworICAgIHZvaWQgY2xlYXJDb29raWVzKCk7CiAgICAgdm9p
ZCB0b2dnbGVQbHVnaW5zKGJvb2wgZW5hYmxlKTsKICAgICB2b2lkIHRvZ2dsZUxvY2FsU3RvcmFn
ZShib29sIHRvZ2dsZSk7CiAgICAgdm9pZCB0b2dnbGVPZmZsaW5lU3RvcmFnZURhdGFiYXNlKGJv
b2wgdG9nZ2xlKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1F0VGVzdEJyb3dzZXIvbWFpbi5jcHAgYi9U
b29scy9RdFRlc3RCcm93c2VyL21haW4uY3BwCmluZGV4IDY2MTE0MzUuLmZiNDI3OTkgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1F0VGVzdEJyb3dzZXIvbWFpbi5jcHAKKysrIGIvVG9vbHMvUXRUZXN0QnJv
d3Nlci9tYWluLmNwcApAQCAtMTk1LDYgKzE5NSw3IEBAIHZvaWQgTGF1bmNoZXJBcHBsaWNhdGlv
bjo6aGFuZGxlVXNlck9wdGlvbnMoKQogICAgICAgICAgICAgIDw8ICJbLXRpbGVkLWJhY2tpbmct
c3RvcmVdIgogICAgICAgICAgICAgIDw8ICJbLXJlc2l6ZXMtdG8tY29udGVudHNdIgogICAgICAg
ICAgICAgIDw8ICJbLWxvY2FsLXN0b3JhZ2UtZW5hYmxlZF0iCisgICAgICAgICAgICAgPDwgIlst
bm8tZGlzay1jb29raWVzXSIKICAgICAgICAgICAgICA8PCAiWy1vZmZsaW5lLXN0b3JhZ2UtZGF0
YWJhc2UtZW5hYmxlZF0iCiAgICAgICAgICAgICAgPDwgIlstb2ZmbGluZS13ZWItYXBwbGljYXRp
b24tY2FjaGUtZW5hYmxlZF0iCiAgICAgICAgICAgICAgPDwgIlstc2V0LW9mZmxpbmUtc3RvcmFn
ZS1kZWZhdWx0LXF1b3RhIG1heFNpemVdIgpAQCAtMjQ1LDcgKzI0NiwxMCBAQCB2b2lkIExhdW5j
aGVyQXBwbGljYXRpb246OmhhbmRsZVVzZXJPcHRpb25zKCkKICAgICAKICAgICBpZiAoYXJncy5j
b250YWlucygiLWxvY2FsLXN0b3JhZ2UtZW5hYmxlZCIpKQogICAgICAgICB3aW5kb3dPcHRpb25z
LnVzZUxvY2FsU3RvcmFnZSA9IHRydWU7Ci0gICAgICAgIAorCisgICAgaWYgKGFyZ3MuY29udGFp
bnMoIi1uby1kaXNrLWNvb2tpZXMiKSkKKyAgICAgICAgd2luZG93T3B0aW9ucy51c2VEaXNrQ29v
a2llcyA9IGZhbHNlOworCiAgICAgaWYgKGFyZ3MuY29udGFpbnMoIi1tYXhpbWl6ZSIpKQogICAg
ICAgICB3aW5kb3dPcHRpb25zLnN0YXJ0TWF4aW1pemVkID0gdHJ1ZTsKIAotLSAKMS43LjMuNAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102291</attachid>
            <date>2011-07-28 13:25:06 -0700</date>
            <delta_ts>2011-08-04 13:14:16 -0700</delta_ts>
            <desc>patch v3 (fix misinterpretation of the coding style)</desc>
            <filename>0001-Qt-QtTestBrowser-Add-support-for-saving-cookies-on-d.patch</filename>
            <type>text/plain</type>
            <size>14235</size>
            <attacher name="Ademar Reis">ademar</attacher>
            
              <data encoding="base64">RnJvbSBkZGQ3NDJiM2QxMTBmMGQ2Y2ViYzk2OWFiNDQzY2RlNDM2N2UyZDUxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGVtYXIgZGUgU291emEgUmVpcyBKciA8YWRlbWFyLnJlaXNA
b3BlbmJvc3NhLm9yZz4KRGF0ZTogV2VkLCAyNyBKdWwgMjAxMSAxNzowMDoxMCAtMDMwMApTdWJq
ZWN0OiBbUEFUQ0hdIFtRdF0gUXRUZXN0QnJvd3NlcjogQWRkIHN1cHBvcnQgZm9yIHNhdmluZyBj
b29raWVzIG9uIGRpc2sKCi0tLQogVG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDIxICsrKysrCiBUb29scy9RdFRlc3RCcm93c2VyL1F0VGVzdEJyb3dzZXIucHJvICB8
ICAgIDIgKwogVG9vbHMvUXRUZXN0QnJvd3Nlci9jb29raWVqYXIuY3BwICAgICAgfCAgMTI3ICsr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBUb29scy9RdFRlc3RCcm93c2VyL2Nvb2tp
ZWphci5oICAgICAgICB8ICAgNjEgKysrKysrKysrKysrKysrCiBUb29scy9RdFRlc3RCcm93c2Vy
L2xhdW5jaGVyd2luZG93LmNwcCB8ICAgMzIgKysrKysrKysKIFRvb2xzL1F0VGVzdEJyb3dzZXIv
bGF1bmNoZXJ3aW5kb3cuaCAgIHwgICAgNCArCiBUb29scy9RdFRlc3RCcm93c2VyL21haW4uY3Bw
ICAgICAgICAgICB8ICAgIDYgKy0KIDcgZmlsZXMgY2hhbmdlZCwgMjUyIGluc2VydGlvbnMoKyks
IDEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgVG9vbHMvUXRUZXN0QnJvd3Nlci9j
b29raWVqYXIuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgVG9vbHMvUXRUZXN0QnJvd3Nlci9jb29r
aWVqYXIuaAoKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCBmZmZjMzQ1Li5kZTdhYTZhYyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDExLTA3LTI4ICBBZGVtYXIgZGUg
U291emEgUmVpcyBKciAgPGFkZW1hci5yZWlzQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1F0
XSBRdFRlc3RCcm93c2VyOiBBZGQgc3VwcG9ydCBmb3Igc2F2aW5nIGNvb2tpZXMgb24gZGlzawor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUzMjgKKwor
ICAgICAgICBTaW1wbGUgY29va2llamFyIHRoYXQgc2F2ZXMgY29va2llcyBvbiBkaXNrLgorCisg
ICAgICAgIEFkZGVkIG1lbnUgb3B0aW9ucyB0byBjbGVhciBjb29raWVzIChFZGl0LT5DbGVhciBj
b29raWVzKSBhbmQKKyAgICAgICAgZGlzYWJsZSBkaXNrIGNvb2tpZXMgKFNldHRpbmdzLT5bIF1T
YXZlIENvb2tpZXMgb24gRGlzaykuCisKKyAgICAgICAgT3B0aW9uIC1uby1kaXNrLWNvb2tpZXMg
aXMgYWxzbyBhdmFpbGFibGUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBRdFRlc3RCcm93c2VyL1F0VGVzdEJyb3dzZXIucHJvOgorICAgICAgICAq
IFF0VGVzdEJyb3dzZXIvY29va2llamFyLmNwcDogQWRkZWQuCisgICAgICAgICogUXRUZXN0QnJv
d3Nlci9jb29raWVqYXIuaDogQWRkZWQuCisgICAgICAgICogUXRUZXN0QnJvd3Nlci9sYXVuY2hl
cndpbmRvdy5jcHA6CisgICAgICAgICogUXRUZXN0QnJvd3Nlci9sYXVuY2hlcndpbmRvdy5oOgor
ICAgICAgICAqIFF0VGVzdEJyb3dzZXIvbWFpbi5jcHA6CisKIDIwMTEtMDctMjcgIFJ5dWFuIENo
b2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFN0eWxlIGJvdCBjb21wbGFp
bnMgYWJvdXQgRUZMLXNwZWNpZmljIGZvcndhcmQgZGVjbGFyYXRpb24gbmFtaW5nLgpkaWZmIC0t
Z2l0IGEvVG9vbHMvUXRUZXN0QnJvd3Nlci9RdFRlc3RCcm93c2VyLnBybyBiL1Rvb2xzL1F0VGVz
dEJyb3dzZXIvUXRUZXN0QnJvd3Nlci5wcm8KaW5kZXggYTc4MjZlNS4uNjhjYzhmOSAxMDA2NDQK
LS0tIGEvVG9vbHMvUXRUZXN0QnJvd3Nlci9RdFRlc3RCcm93c2VyLnBybworKysgYi9Ub29scy9R
dFRlc3RCcm93c2VyL1F0VGVzdEJyb3dzZXIucHJvCkBAIC0xMCw2ICsxMCw3IEBAIFNPVVJDRVMg
Kz0gXAogICAgIHdlYnBhZ2UuY3BwIFwKICAgICB3ZWJ2aWV3LmNwcCBcCiAgICAgZnBzdGltZXIu
Y3BwIFwKKyAgICBjb29raWVqYXIuY3BwCiAKIEhFQURFUlMgKz0gXAogICAgIGxvY2F0aW9uZWRp
dC5oIFwKQEAgLTIxLDYgKzIyLDcgQEAgSEVBREVSUyArPSBcCiAgICAgd2VicGFnZS5oIFwKICAg
ICB3ZWJ2aWV3LmggXAogICAgIGZwc3RpbWVyLmggXAorICAgIGNvb2tpZWphci5oCiAKICFpc0Vx
dWFsKFFUX0FSQ0gsc2g0KTogQ09ORklHICs9IHVpdG9vbHMKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
UXRUZXN0QnJvd3Nlci9jb29raWVqYXIuY3BwIGIvVG9vbHMvUXRUZXN0QnJvd3Nlci9jb29raWVq
YXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4OGRhMDcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9RdFRlc3RCcm93c2VyL2Nvb2tpZWphci5jcHAKQEAgLTAsMCAr
MSwxMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29va2llamFyLmgiCisKKyNpbmNsdWRlIDxRRGVza3RvcFNlcnZpY2Vz
PgorI2luY2x1ZGUgPFFEaXI+CisjaW5jbHVkZSA8UVRleHRTdHJlYW0+CisjaW5jbHVkZSA8UVRp
bWVyPgorCitUZXN0QnJvd3NlckNvb2tpZUphcjo6VGVzdEJyb3dzZXJDb29raWVKYXIoUU9iamVj
dCogcGFyZW50KQorICAgIDogUU5ldHdvcmtDb29raWVKYXIocGFyZW50KQorICAgICwgbV9zdG9y
YWdlRW5hYmxlZChmYWxzZSkKK3sKKyAgICAvKiBXZSB1c2UgYSB0aW1lciBmb3IgdGhlIHJlYWwg
ZGlzayB3cml0ZSB0byBhdm9pZCBtdWx0aXBsZSBJTworICAgICAgIHN5c2NhbGxzIGluIHNlcXVl
bmNlICh3aGVuIGxvYWRpbmcgcGFnZXMgd2hpY2ggc2V0IG11bHRpcGxlIGNvb2tpZXMpLiAqLwor
ICAgIG1fdGltZXIuc2V0SW50ZXJ2YWwoMTAwMDApOworICAgIG1fdGltZXIuc2V0U2luZ2xlU2hv
dCh0cnVlKTsKKyAgICBjb25uZWN0KCZtX3RpbWVyLCBTSUdOQUwodGltZW91dCgpKSwgdGhpcywg
U0xPVChzYXZlVG9EaXNrKCkpKTsKKworICAgIFFTdHJpbmcgcGF0aCA9IFFEZXNrdG9wU2Vydmlj
ZXM6OnN0b3JhZ2VMb2NhdGlvbihRRGVza3RvcFNlcnZpY2VzOjpDYWNoZUxvY2F0aW9uKTsKKyAg
ICBRRGlyIGQ7IC8vIFFEaXI6Om1rcGF0aCgpIGlzIG5vdCBzdGF0aWMuIDooCisgICAgZC5ta3Bh
dGgocGF0aCk7CisgICAgbV9maWxlLnNldEZpbGVOYW1lKHBhdGggKyAiL2Nvb2tpZUphciIpOwor
fQorCitUZXN0QnJvd3NlckNvb2tpZUphcjo6flRlc3RCcm93c2VyQ29va2llSmFyKCkKK3sKKyAg
ICBpZiAobV9zdG9yYWdlRW5hYmxlZCkKKyAgICAgICAgc2F2ZVRvRGlzaygpOworfQorCitib29s
IFRlc3RCcm93c2VyQ29va2llSmFyOjpzZXRDb29raWVzRnJvbVVybChjb25zdCBRTGlzdDxRTmV0
d29ya0Nvb2tpZT4mIGNvb2tpZUxpc3QsIGNvbnN0IFFVcmwmIHVybCkKK3sKKyAgICBib29sIHN0
YXR1cyA9IFFOZXR3b3JrQ29va2llSmFyOjpzZXRDb29raWVzRnJvbVVybChjb29raWVMaXN0LCB1
cmwpOworICAgIGlmIChzdGF0dXMgJiYgbV9zdG9yYWdlRW5hYmxlZCkKKyAgICAgICAgc2NoZWR1
bGVTYXZlVG9EaXNrKCk7CisgICAgcmV0dXJuIHN0YXR1czsKK30KKwordm9pZCBUZXN0QnJvd3Nl
ckNvb2tpZUphcjo6ZW5hYmxlRGlza1N0b3JhZ2UoYm9vbCBlbmFibGVkKQoreworICAgIG1fc3Rv
cmFnZUVuYWJsZWQgPSBlbmFibGVkOworCisgICAgaWYgKGVuYWJsZWQgJiYgYWxsQ29va2llcygp
LmlzRW1wdHkoKSkKKyAgICAgICAgbG9hZEZyb21EaXNrKCk7CisKKyAgICAvLyBXaGVuIGRpc2Fi
bGluZywgc2F2ZSBjdXJyZW50IGNvb2tpZXMuCisgICAgaWYgKCFlbmFibGVkICYmICFhbGxDb29r
aWVzKCkuaXNFbXB0eSgpKQorICAgICAgICBzYXZlVG9EaXNrKCk7Cit9CisKK3ZvaWQgVGVzdEJy
b3dzZXJDb29raWVKYXI6OnNjaGVkdWxlU2F2ZVRvRGlzaygpCit7CisgICAgUUxpc3Q8UU5ldHdv
cmtDb29raWU+IGNvb2tpZXMgPSBhbGxDb29raWVzKCk7CisgICAgbV9yYXdDb29raWVzLmNsZWFy
KCk7CisKKyAgICAvLyBOb24gb3B0aW1hbCwgd2UgY291bGQgdXNlIHNvbWUgZGF0YWJhc2UgYW5k
IGluY3JlbWVudGFsIHNhdmUuCisgICAgZm9yZWFjaCAoUU5ldHdvcmtDb29raWUgY29va2llLCBj
b29raWVzKSB7CisgICAgICAgIGlmICghY29va2llLmlzU2Vzc2lvbkNvb2tpZSgpKQorICAgICAg
ICAgICAgbV9yYXdDb29raWVzLmFwcGVuZChjb29raWUudG9SYXdGb3JtKCkpOworICAgIH0KKwor
ICAgIG1fdGltZXIuc3RhcnQoKTsKK30KKwordm9pZCBUZXN0QnJvd3NlckNvb2tpZUphcjo6c2F2
ZVRvRGlzaygpCit7CisgICAgbV90aW1lci5zdG9wKCk7CisKKyAgICBpZiAobV9maWxlLm9wZW4o
UUlPRGV2aWNlOjpXcml0ZU9ubHkgfCBRSU9EZXZpY2U6OlRleHQpKSB7CisgICAgICAgIFFUZXh0
U3RyZWFtIG91dCgmbV9maWxlKTsKKyAgICAgICAgZm9yZWFjaCAoUUJ5dGVBcnJheSBjb29raWUs
IG1fcmF3Q29va2llcykKKyAgICAgICAgICAgIG91dCA8PCBjb29raWUgKyAiXG4iOworICAgICAg
ICBtX2ZpbGUuY2xvc2UoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcVdhcm5pbmcoIklPIGVycm9y
IGhhbmRsaW5nIGNvb2tpZWphciBmaWxlIik7Cit9CisKK3ZvaWQgVGVzdEJyb3dzZXJDb29raWVK
YXI6OmxvYWRGcm9tRGlzaygpCit7CisgICAgaWYgKCFtX2ZpbGUuZXhpc3RzKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIFFMaXN0PFFOZXR3b3JrQ29va2llPiBjb29raWVzOworCisgICAgaWYg
KG1fZmlsZS5vcGVuKFFJT0RldmljZTo6UmVhZE9ubHkgfCBRSU9EZXZpY2U6OlRleHQpKSB7Cisg
ICAgICAgIFFUZXh0U3RyZWFtIGluKCZtX2ZpbGUpOworICAgICAgICB3aGlsZSAoIWluLmF0RW5k
KCkpCisgICAgICAgICAgICBjb29raWVzLmFwcGVuZChRTmV0d29ya0Nvb2tpZTo6cGFyc2VDb29r
aWVzKGluLnJlYWRMaW5lKCkudG9Bc2NpaSgpKSk7CisgICAgICAgIG1fZmlsZS5jbG9zZSgpOwor
ICAgIH0gZWxzZQorICAgICAgICBxV2FybmluZygiSU8gZXJyb3IgaGFuZGxpbmcgY29va2llamFy
IGZpbGUiKTsKKworICAgIHNldEFsbENvb2tpZXMoY29va2llcyk7Cit9CisKK3ZvaWQgVGVzdEJy
b3dzZXJDb29raWVKYXI6OnJlc2V0KCkKK3sKKyAgICBzZXRBbGxDb29raWVzKFFMaXN0PFFOZXR3
b3JrQ29va2llPigpKTsKKyAgICBpZiAobV9zdG9yYWdlRW5hYmxlZCkKKyAgICAgICAgc2NoZWR1
bGVTYXZlVG9EaXNrKCk7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9RdFRlc3RCcm93c2VyL2Nvb2tp
ZWphci5oIGIvVG9vbHMvUXRUZXN0QnJvd3Nlci9jb29raWVqYXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5jMjM5N2EwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvUXRU
ZXN0QnJvd3Nlci9jb29raWVqYXIuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQor
ICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBjb29raWVqYXJfaAor
I2RlZmluZSBjb29raWVqYXJfaAorCisjaW5jbHVkZSA8UUZpbGU+CisjaW5jbHVkZSA8UU5ldHdv
cmtDb29raWVKYXI+CisjaW5jbHVkZSA8UVRpbWVyPgorCitjbGFzcyBUZXN0QnJvd3NlckNvb2tp
ZUphciA6IHB1YmxpYyBRTmV0d29ya0Nvb2tpZUphciB7CisgICAgUV9PQkpFQ1QKKworcHVibGlj
OgorICAgIFRlc3RCcm93c2VyQ29va2llSmFyKFFPYmplY3QqIHBhcmVudCA9IDApOworICAgIHZp
cnR1YWwgflRlc3RCcm93c2VyQ29va2llSmFyKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgc2V0Q29v
a2llc0Zyb21VcmwoY29uc3QgUUxpc3Q8UU5ldHdvcmtDb29raWU+JiBjb29raWVMaXN0LCBjb25z
dCBRVXJsJik7CisKKyAgICB2b2lkIGVuYWJsZURpc2tTdG9yYWdlKGJvb2wgZW5hYmxlZCk7CisK
K3B1YmxpYyBzbG90czoKKyAgICB2b2lkIHNjaGVkdWxlU2F2ZVRvRGlzaygpOworICAgIHZvaWQg
bG9hZEZyb21EaXNrKCk7CisgICAgdm9pZCByZXNldCgpOworCitwcml2YXRlIHNsb3RzOgorICAg
IHZvaWQgc2F2ZVRvRGlzaygpOworCitwcml2YXRlOgorICAgIFFMaXN0PFFCeXRlQXJyYXk+IG1f
cmF3Q29va2llczsKKyAgICBib29sIG1fc3RvcmFnZUVuYWJsZWQ7CisgICAgUUZpbGUgbV9maWxl
OworICAgIFFUaW1lciBtX3RpbWVyOworfTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9R
dFRlc3RCcm93c2VyL2xhdW5jaGVyd2luZG93LmNwcCBiL1Rvb2xzL1F0VGVzdEJyb3dzZXIvbGF1
bmNoZXJ3aW5kb3cuY3BwCmluZGV4IDkxMDY1YmMuLmM3ZTZiNzAgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1F0VGVzdEJyb3dzZXIvbGF1bmNoZXJ3aW5kb3cuY3BwCisrKyBiL1Rvb2xzL1F0VGVzdEJyb3dz
ZXIvbGF1bmNoZXJ3aW5kb3cuY3BwCkBAIC0zMyw4ICszMywxMSBAQAogICovCiAKICNpbmNsdWRl
ICJsYXVuY2hlcndpbmRvdy5oIgorI2luY2x1ZGUgImNvb2tpZWphci5oIgogI2luY2x1ZGUgInVy
bGxvYWRlci5oIgogCisjaW5jbHVkZSA8UUFwcGxpY2F0aW9uPgorCiAjaWYgIWRlZmluZWQoUVRf
Tk9fRklMRURJQUxPRykgJiYgIWRlZmluZWQoUVRfTk9fTUVTU0FHRUJPWCkKICNpbmNsdWRlIDxR
RmlsZURpYWxvZz4KICNpbmNsdWRlIDxRRmlsZUluZm8+CkBAIC01MCw2ICs1MywxMiBAQAogY29u
c3QgaW50IGdFeGl0Q2xpY2tBcmVhID0gODA7CiBRVmVjdG9yPGludD4gTGF1bmNoZXJXaW5kb3c6
Om1fem9vbUxldmVsczsKIAorc3RhdGljIFRlc3RCcm93c2VyQ29va2llSmFyKiB0ZXN0QnJvd3Nl
ckNvb2tpZUphckluc3RhbmNlKCkKK3sKKyAgICBzdGF0aWMgVGVzdEJyb3dzZXJDb29raWVKYXIq
IGNvb2tpZUphciA9IG5ldyBUZXN0QnJvd3NlckNvb2tpZUphcihxQXBwKTsKKyAgICByZXR1cm4g
Y29va2llSmFyOworfQorCiBMYXVuY2hlcldpbmRvdzo6TGF1bmNoZXJXaW5kb3coV2luZG93T3B0
aW9ucyogZGF0YSwgUUdyYXBoaWNzU2NlbmUqIHNoYXJlZFNjZW5lKQogICAgIDogTWFpbldpbmRv
dygpCiAgICAgLCBtX2N1cnJlbnRab29tKDEwMCkKQEAgLTEyMSw2ICsxMzAsMTIgQEAgdm9pZCBM
YXVuY2hlcldpbmRvdzo6aW5pdGlhbGl6ZVZpZXcoKQogICAgIFFVcmwgdXJsID0gcGFnZSgpLT5t
YWluRnJhbWUoKS0+dXJsKCk7CiAgICAgc2V0UGFnZShuZXcgV2ViUGFnZSh0aGlzKSk7CiAgICAg
c2V0RGlza0NhY2hlKG1fd2luZG93T3B0aW9ucy51c2VEaXNrQ2FjaGUpOworICAgIHNldFVzZURp
c2tDb29raWVzKG1fd2luZG93T3B0aW9ucy51c2VEaXNrQ29va2llcyk7CisKKyAgICAvLyBXZSBy
ZXVzZSB0aGUgc2FtZSBjb29raWVKYXIgb24gbXVsdGlwbGUgUU5BTXMsIHdoaWNoIGlzIE9LLgor
ICAgIFFPYmplY3QqIGNvb2tpZUphclBhcmVudCA9IHRlc3RCcm93c2VyQ29va2llSmFySW5zdGFu
Y2UoKS0+cGFyZW50KCk7CisgICAgcGFnZSgpLT5uZXR3b3JrQWNjZXNzTWFuYWdlcigpLT5zZXRD
b29raWVKYXIodGVzdEJyb3dzZXJDb29raWVKYXJJbnN0YW5jZSgpKTsKKyAgICB0ZXN0QnJvd3Nl
ckNvb2tpZUphckluc3RhbmNlKCktPnNldFBhcmVudChjb29raWVKYXJQYXJlbnQpOwogCiAgICAg
UVNwbGl0dGVyKiBzcGxpdHRlciA9IHN0YXRpY19jYXN0PFFTcGxpdHRlcio+KGNlbnRyYWxXaWRn
ZXQoKSk7CiAKQEAgLTIyNiw2ICsyNDEsOCBAQCB2b2lkIExhdW5jaGVyV2luZG93OjpjcmVhdGVD
aHJvbWUoKQogICAgIFFBY3Rpb24qIHNldEVkaXRhYmxlID0gZWRpdE1lbnUtPmFkZEFjdGlvbigi
U2V0IEVkaXRhYmxlIiwgdGhpcywgU0xPVChzZXRFZGl0YWJsZShib29sKSkpOwogICAgIHNldEVk
aXRhYmxlLT5zZXRDaGVja2FibGUodHJ1ZSk7CiAKKyAgICBlZGl0TWVudS0+YWRkQWN0aW9uKCJD
bGVhciBDb29raWVzIiwgdGhpcywgU0xPVChjbGVhckNvb2tpZXMoKSkpOworCiAgICAgUU1lbnUq
IHZpZXdNZW51ID0gbWVudUJhcigpLT5hZGRNZW51KCImVmlldyIpOwogICAgIHZpZXdNZW51LT5h
ZGRBY3Rpb24ocGFnZSgpLT5hY3Rpb24oUVdlYlBhZ2U6OlN0b3ApKTsKICAgICB2aWV3TWVudS0+
YWRkQWN0aW9uKHBhZ2UoKS0+YWN0aW9uKFFXZWJQYWdlOjpSZWxvYWQpKTsKQEAgLTQzOSw2ICs0
NTYsMTEgQEAgdm9pZCBMYXVuY2hlcldpbmRvdzo6Y3JlYXRlQ2hyb21lKCkKICAgICBRQWN0aW9u
KiB0b2dnbGVKYXZhc2NyaXB0Q2FuT3BlbldpbmRvd3MgPSBzZXR0aW5nc01lbnUtPmFkZEFjdGlv
bigiRW5hYmxlIGpzIHBvcHVwIHdpbmRvd3MiLCB0aGlzLCBTTE9UKHRvZ2dsZUphdmFzY3JpcHRD
YW5PcGVuV2luZG93cyhib29sKSkpOwogICAgIHRvZ2dsZUphdmFzY3JpcHRDYW5PcGVuV2luZG93
cy0+c2V0Q2hlY2thYmxlKHRydWUpOwogICAgIHRvZ2dsZUphdmFzY3JpcHRDYW5PcGVuV2luZG93
cy0+c2V0Q2hlY2tlZChmYWxzZSk7CisKKyAgICBRQWN0aW9uKiB0b2dnbGVVc2VEaXNrQ29va2ll
cyA9IHNldHRpbmdzTWVudS0+YWRkQWN0aW9uKCJTYXZlIENvb2tpZXMgb24gRGlzayIsIHRoaXMs
IFNMT1Qoc2V0VXNlRGlza0Nvb2tpZXMoYm9vbCkpKTsKKyAgICB0b2dnbGVVc2VEaXNrQ29va2ll
cy0+c2V0Q2hlY2thYmxlKHRydWUpOworICAgIHRvZ2dsZVVzZURpc2tDb29raWVzLT5zZXRDaGVj
a2VkKG1fd2luZG93T3B0aW9ucy51c2VEaXNrQ29va2llcyk7CisKICNpZm5kZWYgUVRfTk9fTElO
RUVESVQKICAgICBtX2ZpbmRCYXIgPSBuZXcgUVRvb2xCYXIoIkZpbmQiLCB0aGlzKTsKICAgICBh
ZGRUb29sQmFyKFF0OjpCb3R0b21Ub29sQmFyQXJlYSwgbV9maW5kQmFyKTsKQEAgLTg4NSw2ICs5
MDcsMTYgQEAgdm9pZCBMYXVuY2hlcldpbmRvdzo6dG9nZ2xlSmF2YXNjcmlwdENhbk9wZW5XaW5k
b3dzKGJvb2wgZW5hYmxlKQogICAgIHBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFX
ZWJTZXR0aW5nczo6SmF2YXNjcmlwdENhbk9wZW5XaW5kb3dzLCBlbmFibGUpOwogfQogCit2b2lk
IExhdW5jaGVyV2luZG93OjpzZXRVc2VEaXNrQ29va2llcyhib29sIGVuYWJsZSkKK3sKKyAgICB0
ZXN0QnJvd3NlckNvb2tpZUphckluc3RhbmNlKCktPmVuYWJsZURpc2tTdG9yYWdlKGVuYWJsZSk7
Cit9CisKK3ZvaWQgTGF1bmNoZXJXaW5kb3c6OmNsZWFyQ29va2llcygpCit7CisgICAgdGVzdEJy
b3dzZXJDb29raWVKYXJJbnN0YW5jZSgpLT5yZXNldCgpOworfQorCiB2b2lkIExhdW5jaGVyV2lu
ZG93Ojp0b2dnbGVBdXRvTG9hZEltYWdlcyhib29sIGVuYWJsZSkKIHsKICAgICBwYWdlKCktPnNl
dHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OkF1dG9Mb2FkSW1hZ2VzLCAhZW5h
YmxlKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1F0VGVzdEJyb3dzZXIvbGF1bmNoZXJ3aW5kb3cuaCBi
L1Rvb2xzL1F0VGVzdEJyb3dzZXIvbGF1bmNoZXJ3aW5kb3cuaAppbmRleCA1MjdmOGZiLi45YTM2
ZmRmIDEwMDY0NAotLS0gYS9Ub29scy9RdFRlc3RCcm93c2VyL2xhdW5jaGVyd2luZG93LmgKKysr
IGIvVG9vbHMvUXRUZXN0QnJvd3Nlci9sYXVuY2hlcndpbmRvdy5oCkBAIC05Nyw2ICs5Nyw3IEBA
IHB1YmxpYzoKICAgICAgICAgLCB1c2VMb2NhbFN0b3JhZ2UoZmFsc2UpCiAgICAgICAgICwgdXNl
T2ZmbGluZVN0b3JhZ2VEYXRhYmFzZShmYWxzZSkKICAgICAgICAgLCB1c2VPZmZsaW5lV2ViQXBw
bGljYXRpb25DYWNoZShmYWxzZSkKKyAgICAgICAgLCB1c2VEaXNrQ29va2llcyh0cnVlKQogICAg
ICAgICAsIG9mZmxpbmVTdG9yYWdlRGVmYXVsdFF1b3RhU2l6ZSgwKQogI2lmIGRlZmluZWQoUVRf
Q09ORklHVVJFRF9XSVRIX09QRU5HTCkKICAgICAgICAgLCB1c2VRR0xXaWRnZXRWaWV3cG9ydChm
YWxzZSkKQEAgLTEyNiw2ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCB1c2VMb2NhbFN0b3Jh
Z2U7CiAgICAgYm9vbCB1c2VPZmZsaW5lU3RvcmFnZURhdGFiYXNlOwogICAgIGJvb2wgdXNlT2Zm
bGluZVdlYkFwcGxpY2F0aW9uQ2FjaGU7CisgICAgYm9vbCB1c2VEaXNrQ29va2llczsKICAgICBx
dWludDY0IG9mZmxpbmVTdG9yYWdlRGVmYXVsdFF1b3RhU2l6ZTsKICNpZiBkZWZpbmVkKFFUX0NP
TkZJR1VSRURfV0lUSF9PUEVOR0wpCiAgICAgYm9vbCB1c2VRR0xXaWRnZXRWaWV3cG9ydDsKQEAg
LTE4OCw2ICsxOTAsOCBAQCBwcm90ZWN0ZWQgc2xvdHM6CiAgICAgdm9pZCB0b2dnbGVJbnRlcnJ1
cHRpbmdKYXZhU2NyaXB0RW5hYmxlZChib29sIGVuYWJsZSk7CiAgICAgdm9pZCB0b2dnbGVKYXZh
c2NyaXB0Q2FuT3BlbldpbmRvd3MoYm9vbCBlbmFibGUpOwogICAgIHZvaWQgdG9nZ2xlQXV0b0xv
YWRJbWFnZXMoYm9vbCBlbmFibGUpOworICAgIHZvaWQgc2V0VXNlRGlza0Nvb2tpZXMoYm9vbCBl
bmFibGUpOworICAgIHZvaWQgY2xlYXJDb29raWVzKCk7CiAgICAgdm9pZCB0b2dnbGVQbHVnaW5z
KGJvb2wgZW5hYmxlKTsKICAgICB2b2lkIHRvZ2dsZUxvY2FsU3RvcmFnZShib29sIHRvZ2dsZSk7
CiAgICAgdm9pZCB0b2dnbGVPZmZsaW5lU3RvcmFnZURhdGFiYXNlKGJvb2wgdG9nZ2xlKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1F0VGVzdEJyb3dzZXIvbWFpbi5jcHAgYi9Ub29scy9RdFRlc3RCcm93
c2VyL21haW4uY3BwCmluZGV4IDY2MTE0MzUuLmZiNDI3OTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1F0
VGVzdEJyb3dzZXIvbWFpbi5jcHAKKysrIGIvVG9vbHMvUXRUZXN0QnJvd3Nlci9tYWluLmNwcApA
QCAtMTk1LDYgKzE5NSw3IEBAIHZvaWQgTGF1bmNoZXJBcHBsaWNhdGlvbjo6aGFuZGxlVXNlck9w
dGlvbnMoKQogICAgICAgICAgICAgIDw8ICJbLXRpbGVkLWJhY2tpbmctc3RvcmVdIgogICAgICAg
ICAgICAgIDw8ICJbLXJlc2l6ZXMtdG8tY29udGVudHNdIgogICAgICAgICAgICAgIDw8ICJbLWxv
Y2FsLXN0b3JhZ2UtZW5hYmxlZF0iCisgICAgICAgICAgICAgPDwgIlstbm8tZGlzay1jb29raWVz
XSIKICAgICAgICAgICAgICA8PCAiWy1vZmZsaW5lLXN0b3JhZ2UtZGF0YWJhc2UtZW5hYmxlZF0i
CiAgICAgICAgICAgICAgPDwgIlstb2ZmbGluZS13ZWItYXBwbGljYXRpb24tY2FjaGUtZW5hYmxl
ZF0iCiAgICAgICAgICAgICAgPDwgIlstc2V0LW9mZmxpbmUtc3RvcmFnZS1kZWZhdWx0LXF1b3Rh
IG1heFNpemVdIgpAQCAtMjQ1LDcgKzI0NiwxMCBAQCB2b2lkIExhdW5jaGVyQXBwbGljYXRpb246
OmhhbmRsZVVzZXJPcHRpb25zKCkKICAgICAKICAgICBpZiAoYXJncy5jb250YWlucygiLWxvY2Fs
LXN0b3JhZ2UtZW5hYmxlZCIpKQogICAgICAgICB3aW5kb3dPcHRpb25zLnVzZUxvY2FsU3RvcmFn
ZSA9IHRydWU7Ci0gICAgICAgIAorCisgICAgaWYgKGFyZ3MuY29udGFpbnMoIi1uby1kaXNrLWNv
b2tpZXMiKSkKKyAgICAgICAgd2luZG93T3B0aW9ucy51c2VEaXNrQ29va2llcyA9IGZhbHNlOwor
CiAgICAgaWYgKGFyZ3MuY29udGFpbnMoIi1tYXhpbWl6ZSIpKQogICAgICAgICB3aW5kb3dPcHRp
b25zLnN0YXJ0TWF4aW1pemVkID0gdHJ1ZTsKIAotLSAKMS43LjMuNAoK
</data>
<flag name="review"
          id="97506"
          type_id="1"
          status="+"
          setter="kling"
    />
    <flag name="commit-queue"
          id="97507"
          type_id="3"
          status="-"
          setter="kling"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102965</attachid>
            <date>2011-08-04 13:14:16 -0700</date>
            <delta_ts>2011-08-05 06:05:27 -0700</delta_ts>
            <desc>patch v4 (fixex from Kling&apos;s review + fix for a race in the destructor)</desc>
            <filename>0001-Qt-QtTestBrowser-Add-support-for-saving-cookies-on-d.patch</filename>
            <type>text/plain</type>
            <size>14399</size>
            <attacher name="Ademar Reis">ademar</attacher>
            
              <data encoding="base64">RnJvbSA0OWJhMWJlOGRhZDBhZWUzZDc1ODNmMjlhN2YzYzExNDVjNDFmN2MzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGVtYXIgZGUgU291emEgUmVpcyBKciA8YWRlbWFyLnJlaXNA
b3BlbmJvc3NhLm9yZz4KRGF0ZTogV2VkLCAyNyBKdWwgMjAxMSAxNzowMDoxMCAtMDMwMApTdWJq
ZWN0OiBbUEFUQ0hdIFtRdF0gUXRUZXN0QnJvd3NlcjogQWRkIHN1cHBvcnQgZm9yIHNhdmluZyBj
b29raWVzIG9uIGRpc2sKCi0tLQogVG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDIxICsrKysrCiBUb29scy9RdFRlc3RCcm93c2VyL1F0VGVzdEJyb3dzZXIucHJvICB8
ICAgIDIgKwogVG9vbHMvUXRUZXN0QnJvd3Nlci9jb29raWVqYXIuY3BwICAgICAgfCAgMTMyICsr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBUb29scy9RdFRlc3RCcm93c2VyL2Nvb2tp
ZWphci5oICAgICAgICB8ICAgNjMgKysrKysrKysrKysrKysrCiBUb29scy9RdFRlc3RCcm93c2Vy
L2xhdW5jaGVyd2luZG93LmNwcCB8ICAgMzIgKysrKysrKysKIFRvb2xzL1F0VGVzdEJyb3dzZXIv
bGF1bmNoZXJ3aW5kb3cuaCAgIHwgICAgNCArCiBUb29scy9RdFRlc3RCcm93c2VyL21haW4uY3Bw
ICAgICAgICAgICB8ICAgIDYgKy0KIDcgZmlsZXMgY2hhbmdlZCwgMjU5IGluc2VydGlvbnMoKyks
IDEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgVG9vbHMvUXRUZXN0QnJvd3Nlci9j
b29raWVqYXIuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgVG9vbHMvUXRUZXN0QnJvd3Nlci9jb29r
aWVqYXIuaAoKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCBlM2Y5MDM1Li4xODUyMDM5IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDctMjggIEFkZW1hciBkZSBT
b3V6YSBSZWlzIEpyICA8YWRlbWFyLnJlaXNAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBbUXRd
IFF0VGVzdEJyb3dzZXI6IEFkZCBzdXBwb3J0IGZvciBzYXZpbmcgY29va2llcyBvbiBkaXNrCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTMyOAorCisg
ICAgICAgIFNpbXBsZSBjb29raWVqYXIgdGhhdCBzYXZlcyBjb29raWVzIG9uIGRpc2suCisKKyAg
ICAgICAgQWRkZWQgbWVudSBvcHRpb25zIHRvIGNsZWFyIGNvb2tpZXMgKEVkaXQtPkNsZWFyIGNv
b2tpZXMpIGFuZAorICAgICAgICBkaXNhYmxlIGRpc2sgY29va2llcyAoU2V0dGluZ3MtPlsgXVNh
dmUgQ29va2llcyBvbiBEaXNrKS4KKworICAgICAgICBPcHRpb24gLW5vLWRpc2stY29va2llcyBp
cyBhbHNvIGF2YWlsYWJsZS4KKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgor
CisgICAgICAgICogUXRUZXN0QnJvd3Nlci9RdFRlc3RCcm93c2VyLnBybzoKKyAgICAgICAgKiBR
dFRlc3RCcm93c2VyL2Nvb2tpZWphci5jcHA6IEFkZGVkLgorICAgICAgICAqIFF0VGVzdEJyb3dz
ZXIvY29va2llamFyLmg6IEFkZGVkLgorICAgICAgICAqIFF0VGVzdEJyb3dzZXIvbGF1bmNoZXJ3
aW5kb3cuY3BwOgorICAgICAgICAqIFF0VGVzdEJyb3dzZXIvbGF1bmNoZXJ3aW5kb3cuaDoKKyAg
ICAgICAgKiBRdFRlc3RCcm93c2VyL21haW4uY3BwOgorCiAyMDExLTA4LTAzICBEaW1pdHJpIEds
YXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVGVhY2ggQnVpbGRlclRv
UG9ydCB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIFJlbGVhc2UgYW5kIERlYnVnIGJ1aWxkZXJzLgpk
aWZmIC0tZ2l0IGEvVG9vbHMvUXRUZXN0QnJvd3Nlci9RdFRlc3RCcm93c2VyLnBybyBiL1Rvb2xz
L1F0VGVzdEJyb3dzZXIvUXRUZXN0QnJvd3Nlci5wcm8KaW5kZXggYTc4MjZlNS4uNjhjYzhmOSAx
MDA2NDQKLS0tIGEvVG9vbHMvUXRUZXN0QnJvd3Nlci9RdFRlc3RCcm93c2VyLnBybworKysgYi9U
b29scy9RdFRlc3RCcm93c2VyL1F0VGVzdEJyb3dzZXIucHJvCkBAIC0xMCw2ICsxMCw3IEBAIFNP
VVJDRVMgKz0gXAogICAgIHdlYnBhZ2UuY3BwIFwKICAgICB3ZWJ2aWV3LmNwcCBcCiAgICAgZnBz
dGltZXIuY3BwIFwKKyAgICBjb29raWVqYXIuY3BwCiAKIEhFQURFUlMgKz0gXAogICAgIGxvY2F0
aW9uZWRpdC5oIFwKQEAgLTIxLDYgKzIyLDcgQEAgSEVBREVSUyArPSBcCiAgICAgd2VicGFnZS5o
IFwKICAgICB3ZWJ2aWV3LmggXAogICAgIGZwc3RpbWVyLmggXAorICAgIGNvb2tpZWphci5oCiAK
ICFpc0VxdWFsKFFUX0FSQ0gsc2g0KTogQ09ORklHICs9IHVpdG9vbHMKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvUXRUZXN0QnJvd3Nlci9jb29raWVqYXIuY3BwIGIvVG9vbHMvUXRUZXN0QnJvd3Nlci9j
b29raWVqYXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhNmVkMjMK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9RdFRlc3RCcm93c2VyL2Nvb2tpZWphci5jcHAKQEAg
LTAsMCArMSwxMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRp
b24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29va2llamFyLmgiCisKKyNpbmNsdWRlIDxRRGVza3RvcFNl
cnZpY2VzPgorI2luY2x1ZGUgPFFEaXI+CisjaW5jbHVkZSA8UVRleHRTdHJlYW0+CisKK1Rlc3RC
cm93c2VyQ29va2llSmFyOjpUZXN0QnJvd3NlckNvb2tpZUphcihRT2JqZWN0KiBwYXJlbnQpCisg
ICAgOiBRTmV0d29ya0Nvb2tpZUphcihwYXJlbnQpCisgICAgLCBtX3N0b3JhZ2VFbmFibGVkKGZh
bHNlKQoreworICAgIC8vIFdlIHVzZSBhIHRpbWVyIGZvciB0aGUgcmVhbCBkaXNrIHdyaXRlIHRv
IGF2b2lkIG11bHRpcGxlIElPCisgICAgLy8gc3lzY2FsbHMgaW4gc2VxdWVuY2UgKHdoZW4gbG9h
ZGluZyBwYWdlcyB3aGljaCBzZXQgbXVsdGlwbGUgY29va2llcykuCisgICAgbV90aW1lci5zZXRJ
bnRlcnZhbCgxMDAwMCk7CisgICAgbV90aW1lci5zZXRTaW5nbGVTaG90KHRydWUpOworICAgIGNv
bm5lY3QoJm1fdGltZXIsIFNJR05BTCh0aW1lb3V0KCkpLCB0aGlzLCBTTE9UKHNhdmVUb0Rpc2so
KSkpOworCisgICAgUVN0cmluZyBwYXRoID0gUURlc2t0b3BTZXJ2aWNlczo6c3RvcmFnZUxvY2F0
aW9uKFFEZXNrdG9wU2VydmljZXM6OkNhY2hlTG9jYXRpb24pOworICAgIFFEaXIoKS5ta3BhdGgo
cGF0aCk7CisgICAgbV9maWxlLnNldEZpbGVOYW1lKHBhdGggKyAiL2Nvb2tpZUphciIpOworfQor
CitUZXN0QnJvd3NlckNvb2tpZUphcjo6flRlc3RCcm93c2VyQ29va2llSmFyKCkKK3sKKyAgICBp
ZiAobV9zdG9yYWdlRW5hYmxlZCkgeworICAgICAgICBleHRyYWN0UmF3Q29va2llcygpOworICAg
ICAgICBzYXZlVG9EaXNrKCk7CisgICAgfQorfQorCitib29sIFRlc3RCcm93c2VyQ29va2llSmFy
OjpzZXRDb29raWVzRnJvbVVybChjb25zdCBRTGlzdDxRTmV0d29ya0Nvb2tpZT4mIGNvb2tpZUxp
c3QsIGNvbnN0IFFVcmwmIHVybCkKK3sKKyAgICBib29sIHN0YXR1cyA9IFFOZXR3b3JrQ29va2ll
SmFyOjpzZXRDb29raWVzRnJvbVVybChjb29raWVMaXN0LCB1cmwpOworICAgIGlmIChzdGF0dXMg
JiYgbV9zdG9yYWdlRW5hYmxlZCkKKyAgICAgICAgc2NoZWR1bGVTYXZlVG9EaXNrKCk7CisgICAg
cmV0dXJuIHN0YXR1czsKK30KKwordm9pZCBUZXN0QnJvd3NlckNvb2tpZUphcjo6c2V0RGlza1N0
b3JhZ2VFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX3N0b3JhZ2VFbmFibGVkID0gZW5h
YmxlZDsKKworICAgIGlmIChlbmFibGVkICYmIGFsbENvb2tpZXMoKS5pc0VtcHR5KCkpCisgICAg
ICAgIGxvYWRGcm9tRGlzaygpOworCisgICAgLy8gV2hlbiBkaXNhYmxpbmcsIHNhdmUgY3VycmVu
dCBjb29raWVzLgorICAgIGlmICghZW5hYmxlZCAmJiAhYWxsQ29va2llcygpLmlzRW1wdHkoKSkK
KyAgICAgICAgc2NoZWR1bGVTYXZlVG9EaXNrKCk7Cit9CisKK3ZvaWQgVGVzdEJyb3dzZXJDb29r
aWVKYXI6OnNjaGVkdWxlU2F2ZVRvRGlzaygpCit7CisgICAgLy8gV2UgZXh0cmFjdCB0aGUgcmF3
IGNvb2tpZXMgaGVyZSBiZWNhdXNlIHRoZSB1c2VyIG1heQorICAgIC8vIGVuYWJsZS9kaXNhYmxl
L2NsZWFyIGNvb2tpZXMgd2hpbGUgdGhlIHRpbWVyIGlzIHJ1bm5pbmcuCisgICAgZXh0cmFjdFJh
d0Nvb2tpZXMoKTsKKyAgICBtX3RpbWVyLnN0YXJ0KCk7Cit9CisKK3ZvaWQgVGVzdEJyb3dzZXJD
b29raWVKYXI6OmV4dHJhY3RSYXdDb29raWVzKCkKK3sKKyAgICBRTGlzdDxRTmV0d29ya0Nvb2tp
ZT4gY29va2llcyA9IGFsbENvb2tpZXMoKTsKKyAgICBtX3Jhd0Nvb2tpZXMuY2xlYXIoKTsKKwor
ICAgIGZvcmVhY2ggKGNvbnN0IFFOZXR3b3JrQ29va2llIGNvb2tpZSwgY29va2llcykgeworICAg
ICAgICBpZiAoIWNvb2tpZS5pc1Nlc3Npb25Db29raWUoKSkKKyAgICAgICAgICAgIG1fcmF3Q29v
a2llcy5hcHBlbmQoY29va2llLnRvUmF3Rm9ybSgpKTsKKyAgICB9Cit9CisKK3ZvaWQgVGVzdEJy
b3dzZXJDb29raWVKYXI6OnNhdmVUb0Rpc2soKQoreworICAgIG1fdGltZXIuc3RvcCgpOworCisg
ICAgaWYgKG1fZmlsZS5vcGVuKFFJT0RldmljZTo6V3JpdGVPbmx5IHwgUUlPRGV2aWNlOjpUZXh0
KSkgeworICAgICAgICBRVGV4dFN0cmVhbSBvdXQoJm1fZmlsZSk7CisgICAgICAgIGZvcmVhY2gg
KGNvbnN0IFFCeXRlQXJyYXkgY29va2llLCBtX3Jhd0Nvb2tpZXMpCisgICAgICAgICAgICBvdXQg
PDwgY29va2llICsgIlxuIjsKKyAgICAgICAgbV9maWxlLmNsb3NlKCk7CisgICAgfSBlbHNlCisg
ICAgICAgIHFXYXJuaW5nKCJJTyBlcnJvciBoYW5kbGluZyBjb29raWVqYXIgZmlsZSIpOworfQor
Cit2b2lkIFRlc3RCcm93c2VyQ29va2llSmFyOjpsb2FkRnJvbURpc2soKQoreworICAgIGlmICgh
bV9maWxlLmV4aXN0cygpKQorICAgICAgICByZXR1cm47CisKKyAgICBRTGlzdDxRTmV0d29ya0Nv
b2tpZT4gY29va2llczsKKworICAgIGlmIChtX2ZpbGUub3BlbihRSU9EZXZpY2U6OlJlYWRPbmx5
IHwgUUlPRGV2aWNlOjpUZXh0KSkgeworICAgICAgICBRVGV4dFN0cmVhbSBpbigmbV9maWxlKTsK
KyAgICAgICAgd2hpbGUgKCFpbi5hdEVuZCgpKQorICAgICAgICAgICAgY29va2llcy5hcHBlbmQo
UU5ldHdvcmtDb29raWU6OnBhcnNlQ29va2llcyhpbi5yZWFkTGluZSgpLnRvVXRmOCgpKSk7Cisg
ICAgICAgIG1fZmlsZS5jbG9zZSgpOworICAgIH0gZWxzZQorICAgICAgICBxV2FybmluZygiSU8g
ZXJyb3IgaGFuZGxpbmcgY29va2llamFyIGZpbGUiKTsKKworICAgIHNldEFsbENvb2tpZXMoY29v
a2llcyk7Cit9CisKK3ZvaWQgVGVzdEJyb3dzZXJDb29raWVKYXI6OnJlc2V0KCkKK3sKKyAgICBz
ZXRBbGxDb29raWVzKFFMaXN0PFFOZXR3b3JrQ29va2llPigpKTsKKyAgICBpZiAobV9zdG9yYWdl
RW5hYmxlZCkKKyAgICAgICAgc2NoZWR1bGVTYXZlVG9EaXNrKCk7Cit9CmRpZmYgLS1naXQgYS9U
b29scy9RdFRlc3RCcm93c2VyL2Nvb2tpZWphci5oIGIvVG9vbHMvUXRUZXN0QnJvd3Nlci9jb29r
aWVqYXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDZiZDNjCi0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvUXRUZXN0QnJvd3Nlci9jb29raWVqYXIuaApAQCAtMCwwICsx
LDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9v
ciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBjb29raWVqYXJfaAorI2RlZmluZSBjb29raWVqYXJfaAorCisjaW5jbHVkZSA8
UUZpbGU+CisjaW5jbHVkZSA8UU5ldHdvcmtDb29raWVKYXI+CisjaW5jbHVkZSA8UVRpbWVyPgor
CitjbGFzcyBUZXN0QnJvd3NlckNvb2tpZUphciA6IHB1YmxpYyBRTmV0d29ya0Nvb2tpZUphciB7
CisgICAgUV9PQkpFQ1QKKworcHVibGljOgorICAgIFRlc3RCcm93c2VyQ29va2llSmFyKFFPYmpl
Y3QqIHBhcmVudCA9IDApOworICAgIHZpcnR1YWwgflRlc3RCcm93c2VyQ29va2llSmFyKCk7CisK
KyAgICB2aXJ0dWFsIGJvb2wgc2V0Q29va2llc0Zyb21VcmwoY29uc3QgUUxpc3Q8UU5ldHdvcmtD
b29raWU+JiwgY29uc3QgUVVybCYpOworCisgICAgdm9pZCBzZXREaXNrU3RvcmFnZUVuYWJsZWQo
Ym9vbCk7CisKK3B1YmxpYyBzbG90czoKKyAgICB2b2lkIHNjaGVkdWxlU2F2ZVRvRGlzaygpOwor
ICAgIHZvaWQgbG9hZEZyb21EaXNrKCk7CisgICAgdm9pZCByZXNldCgpOworCitwcml2YXRlIHNs
b3RzOgorICAgIHZvaWQgc2F2ZVRvRGlzaygpOworCitwcml2YXRlOgorICAgIHZvaWQgZXh0cmFj
dFJhd0Nvb2tpZXMoKTsKKworICAgIFFMaXN0PFFCeXRlQXJyYXk+IG1fcmF3Q29va2llczsKKyAg
ICBib29sIG1fc3RvcmFnZUVuYWJsZWQ7CisgICAgUUZpbGUgbV9maWxlOworICAgIFFUaW1lciBt
X3RpbWVyOworfTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9RdFRlc3RCcm93c2VyL2xh
dW5jaGVyd2luZG93LmNwcCBiL1Rvb2xzL1F0VGVzdEJyb3dzZXIvbGF1bmNoZXJ3aW5kb3cuY3Bw
CmluZGV4IDkxMDY1YmMuLjg2ZjE1ZmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1F0VGVzdEJyb3dzZXIv
bGF1bmNoZXJ3aW5kb3cuY3BwCisrKyBiL1Rvb2xzL1F0VGVzdEJyb3dzZXIvbGF1bmNoZXJ3aW5k
b3cuY3BwCkBAIC0zMyw4ICszMywxMSBAQAogICovCiAKICNpbmNsdWRlICJsYXVuY2hlcndpbmRv
dy5oIgorI2luY2x1ZGUgImNvb2tpZWphci5oIgogI2luY2x1ZGUgInVybGxvYWRlci5oIgogCisj
aW5jbHVkZSA8UUNvcmVBcHBsaWNhdGlvbj4KKwogI2lmICFkZWZpbmVkKFFUX05PX0ZJTEVESUFM
T0cpICYmICFkZWZpbmVkKFFUX05PX01FU1NBR0VCT1gpCiAjaW5jbHVkZSA8UUZpbGVEaWFsb2c+
CiAjaW5jbHVkZSA8UUZpbGVJbmZvPgpAQCAtNTAsNiArNTMsMTIgQEAKIGNvbnN0IGludCBnRXhp
dENsaWNrQXJlYSA9IDgwOwogUVZlY3RvcjxpbnQ+IExhdW5jaGVyV2luZG93OjptX3pvb21MZXZl
bHM7CiAKK3N0YXRpYyBUZXN0QnJvd3NlckNvb2tpZUphciogdGVzdEJyb3dzZXJDb29raWVKYXJJ
bnN0YW5jZSgpCit7CisgICAgc3RhdGljIFRlc3RCcm93c2VyQ29va2llSmFyKiBjb29raWVKYXIg
PSBuZXcgVGVzdEJyb3dzZXJDb29raWVKYXIocUFwcCk7CisgICAgcmV0dXJuIGNvb2tpZUphcjsK
K30KKwogTGF1bmNoZXJXaW5kb3c6OkxhdW5jaGVyV2luZG93KFdpbmRvd09wdGlvbnMqIGRhdGEs
IFFHcmFwaGljc1NjZW5lKiBzaGFyZWRTY2VuZSkKICAgICA6IE1haW5XaW5kb3coKQogICAgICwg
bV9jdXJyZW50Wm9vbSgxMDApCkBAIC0xMjEsNiArMTMwLDEyIEBAIHZvaWQgTGF1bmNoZXJXaW5k
b3c6OmluaXRpYWxpemVWaWV3KCkKICAgICBRVXJsIHVybCA9IHBhZ2UoKS0+bWFpbkZyYW1lKCkt
PnVybCgpOwogICAgIHNldFBhZ2UobmV3IFdlYlBhZ2UodGhpcykpOwogICAgIHNldERpc2tDYWNo
ZShtX3dpbmRvd09wdGlvbnMudXNlRGlza0NhY2hlKTsKKyAgICBzZXRVc2VEaXNrQ29va2llcyht
X3dpbmRvd09wdGlvbnMudXNlRGlza0Nvb2tpZXMpOworCisgICAgLy8gV2UgcmV1c2UgdGhlIHNh
bWUgY29va2llSmFyIG9uIG11bHRpcGxlIFFOQU1zLCB3aGljaCBpcyBPSy4KKyAgICBRT2JqZWN0
KiBjb29raWVKYXJQYXJlbnQgPSB0ZXN0QnJvd3NlckNvb2tpZUphckluc3RhbmNlKCktPnBhcmVu
dCgpOworICAgIHBhZ2UoKS0+bmV0d29ya0FjY2Vzc01hbmFnZXIoKS0+c2V0Q29va2llSmFyKHRl
c3RCcm93c2VyQ29va2llSmFySW5zdGFuY2UoKSk7CisgICAgdGVzdEJyb3dzZXJDb29raWVKYXJJ
bnN0YW5jZSgpLT5zZXRQYXJlbnQoY29va2llSmFyUGFyZW50KTsKIAogICAgIFFTcGxpdHRlciog
c3BsaXR0ZXIgPSBzdGF0aWNfY2FzdDxRU3BsaXR0ZXIqPihjZW50cmFsV2lkZ2V0KCkpOwogCkBA
IC0yMjYsNiArMjQxLDggQEAgdm9pZCBMYXVuY2hlcldpbmRvdzo6Y3JlYXRlQ2hyb21lKCkKICAg
ICBRQWN0aW9uKiBzZXRFZGl0YWJsZSA9IGVkaXRNZW51LT5hZGRBY3Rpb24oIlNldCBFZGl0YWJs
ZSIsIHRoaXMsIFNMT1Qoc2V0RWRpdGFibGUoYm9vbCkpKTsKICAgICBzZXRFZGl0YWJsZS0+c2V0
Q2hlY2thYmxlKHRydWUpOwogCisgICAgZWRpdE1lbnUtPmFkZEFjdGlvbigiQ2xlYXIgQ29va2ll
cyIsIHRoaXMsIFNMT1QoY2xlYXJDb29raWVzKCkpKTsKKwogICAgIFFNZW51KiB2aWV3TWVudSA9
IG1lbnVCYXIoKS0+YWRkTWVudSgiJlZpZXciKTsKICAgICB2aWV3TWVudS0+YWRkQWN0aW9uKHBh
Z2UoKS0+YWN0aW9uKFFXZWJQYWdlOjpTdG9wKSk7CiAgICAgdmlld01lbnUtPmFkZEFjdGlvbihw
YWdlKCktPmFjdGlvbihRV2ViUGFnZTo6UmVsb2FkKSk7CkBAIC00MzksNiArNDU2LDExIEBAIHZv
aWQgTGF1bmNoZXJXaW5kb3c6OmNyZWF0ZUNocm9tZSgpCiAgICAgUUFjdGlvbiogdG9nZ2xlSmF2
YXNjcmlwdENhbk9wZW5XaW5kb3dzID0gc2V0dGluZ3NNZW51LT5hZGRBY3Rpb24oIkVuYWJsZSBq
cyBwb3B1cCB3aW5kb3dzIiwgdGhpcywgU0xPVCh0b2dnbGVKYXZhc2NyaXB0Q2FuT3BlbldpbmRv
d3MoYm9vbCkpKTsKICAgICB0b2dnbGVKYXZhc2NyaXB0Q2FuT3BlbldpbmRvd3MtPnNldENoZWNr
YWJsZSh0cnVlKTsKICAgICB0b2dnbGVKYXZhc2NyaXB0Q2FuT3BlbldpbmRvd3MtPnNldENoZWNr
ZWQoZmFsc2UpOworCisgICAgUUFjdGlvbiogdG9nZ2xlVXNlRGlza0Nvb2tpZXMgPSBzZXR0aW5n
c01lbnUtPmFkZEFjdGlvbigiU2F2ZSBDb29raWVzIG9uIERpc2siLCB0aGlzLCBTTE9UKHNldFVz
ZURpc2tDb29raWVzKGJvb2wpKSk7CisgICAgdG9nZ2xlVXNlRGlza0Nvb2tpZXMtPnNldENoZWNr
YWJsZSh0cnVlKTsKKyAgICB0b2dnbGVVc2VEaXNrQ29va2llcy0+c2V0Q2hlY2tlZChtX3dpbmRv
d09wdGlvbnMudXNlRGlza0Nvb2tpZXMpOworCiAjaWZuZGVmIFFUX05PX0xJTkVFRElUCiAgICAg
bV9maW5kQmFyID0gbmV3IFFUb29sQmFyKCJGaW5kIiwgdGhpcyk7CiAgICAgYWRkVG9vbEJhcihR
dDo6Qm90dG9tVG9vbEJhckFyZWEsIG1fZmluZEJhcik7CkBAIC04ODUsNiArOTA3LDE2IEBAIHZv
aWQgTGF1bmNoZXJXaW5kb3c6OnRvZ2dsZUphdmFzY3JpcHRDYW5PcGVuV2luZG93cyhib29sIGVu
YWJsZSkKICAgICBwYWdlKCktPnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6
OkphdmFzY3JpcHRDYW5PcGVuV2luZG93cywgZW5hYmxlKTsKIH0KIAordm9pZCBMYXVuY2hlcldp
bmRvdzo6c2V0VXNlRGlza0Nvb2tpZXMoYm9vbCBlbmFibGUpCit7CisgICAgdGVzdEJyb3dzZXJD
b29raWVKYXJJbnN0YW5jZSgpLT5zZXREaXNrU3RvcmFnZUVuYWJsZWQoZW5hYmxlKTsKK30KKwor
dm9pZCBMYXVuY2hlcldpbmRvdzo6Y2xlYXJDb29raWVzKCkKK3sKKyAgICB0ZXN0QnJvd3NlckNv
b2tpZUphckluc3RhbmNlKCktPnJlc2V0KCk7Cit9CisKIHZvaWQgTGF1bmNoZXJXaW5kb3c6OnRv
Z2dsZUF1dG9Mb2FkSW1hZ2VzKGJvb2wgZW5hYmxlKQogewogICAgIHBhZ2UoKS0+c2V0dGluZ3Mo
KS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6QXV0b0xvYWRJbWFnZXMsICFlbmFibGUpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvUXRUZXN0QnJvd3Nlci9sYXVuY2hlcndpbmRvdy5oIGIvVG9vbHMv
UXRUZXN0QnJvd3Nlci9sYXVuY2hlcndpbmRvdy5oCmluZGV4IDUyN2Y4ZmIuLjlhMzZmZGYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1F0VGVzdEJyb3dzZXIvbGF1bmNoZXJ3aW5kb3cuaAorKysgYi9Ub29s
cy9RdFRlc3RCcm93c2VyL2xhdW5jaGVyd2luZG93LmgKQEAgLTk3LDYgKzk3LDcgQEAgcHVibGlj
OgogICAgICAgICAsIHVzZUxvY2FsU3RvcmFnZShmYWxzZSkKICAgICAgICAgLCB1c2VPZmZsaW5l
U3RvcmFnZURhdGFiYXNlKGZhbHNlKQogICAgICAgICAsIHVzZU9mZmxpbmVXZWJBcHBsaWNhdGlv
bkNhY2hlKGZhbHNlKQorICAgICAgICAsIHVzZURpc2tDb29raWVzKHRydWUpCiAgICAgICAgICwg
b2ZmbGluZVN0b3JhZ2VEZWZhdWx0UXVvdGFTaXplKDApCiAjaWYgZGVmaW5lZChRVF9DT05GSUdV
UkVEX1dJVEhfT1BFTkdMKQogICAgICAgICAsIHVzZVFHTFdpZGdldFZpZXdwb3J0KGZhbHNlKQpA
QCAtMTI2LDYgKzEyNyw3IEBAIHB1YmxpYzoKICAgICBib29sIHVzZUxvY2FsU3RvcmFnZTsKICAg
ICBib29sIHVzZU9mZmxpbmVTdG9yYWdlRGF0YWJhc2U7CiAgICAgYm9vbCB1c2VPZmZsaW5lV2Vi
QXBwbGljYXRpb25DYWNoZTsKKyAgICBib29sIHVzZURpc2tDb29raWVzOwogICAgIHF1aW50NjQg
b2ZmbGluZVN0b3JhZ2VEZWZhdWx0UXVvdGFTaXplOwogI2lmIGRlZmluZWQoUVRfQ09ORklHVVJF
RF9XSVRIX09QRU5HTCkKICAgICBib29sIHVzZVFHTFdpZGdldFZpZXdwb3J0OwpAQCAtMTg4LDYg
KzE5MCw4IEBAIHByb3RlY3RlZCBzbG90czoKICAgICB2b2lkIHRvZ2dsZUludGVycnVwdGluZ0ph
dmFTY3JpcHRFbmFibGVkKGJvb2wgZW5hYmxlKTsKICAgICB2b2lkIHRvZ2dsZUphdmFzY3JpcHRD
YW5PcGVuV2luZG93cyhib29sIGVuYWJsZSk7CiAgICAgdm9pZCB0b2dnbGVBdXRvTG9hZEltYWdl
cyhib29sIGVuYWJsZSk7CisgICAgdm9pZCBzZXRVc2VEaXNrQ29va2llcyhib29sIGVuYWJsZSk7
CisgICAgdm9pZCBjbGVhckNvb2tpZXMoKTsKICAgICB2b2lkIHRvZ2dsZVBsdWdpbnMoYm9vbCBl
bmFibGUpOwogICAgIHZvaWQgdG9nZ2xlTG9jYWxTdG9yYWdlKGJvb2wgdG9nZ2xlKTsKICAgICB2
b2lkIHRvZ2dsZU9mZmxpbmVTdG9yYWdlRGF0YWJhc2UoYm9vbCB0b2dnbGUpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvUXRUZXN0QnJvd3Nlci9tYWluLmNwcCBiL1Rvb2xzL1F0VGVzdEJyb3dzZXIvbWFp
bi5jcHAKaW5kZXggNjYxMTQzNS4uZmI0Mjc5OSAxMDA2NDQKLS0tIGEvVG9vbHMvUXRUZXN0QnJv
d3Nlci9tYWluLmNwcAorKysgYi9Ub29scy9RdFRlc3RCcm93c2VyL21haW4uY3BwCkBAIC0xOTUs
NiArMTk1LDcgQEAgdm9pZCBMYXVuY2hlckFwcGxpY2F0aW9uOjpoYW5kbGVVc2VyT3B0aW9ucygp
CiAgICAgICAgICAgICAgPDwgIlstdGlsZWQtYmFja2luZy1zdG9yZV0iCiAgICAgICAgICAgICAg
PDwgIlstcmVzaXplcy10by1jb250ZW50c10iCiAgICAgICAgICAgICAgPDwgIlstbG9jYWwtc3Rv
cmFnZS1lbmFibGVkXSIKKyAgICAgICAgICAgICA8PCAiWy1uby1kaXNrLWNvb2tpZXNdIgogICAg
ICAgICAgICAgIDw8ICJbLW9mZmxpbmUtc3RvcmFnZS1kYXRhYmFzZS1lbmFibGVkXSIKICAgICAg
ICAgICAgICA8PCAiWy1vZmZsaW5lLXdlYi1hcHBsaWNhdGlvbi1jYWNoZS1lbmFibGVkXSIKICAg
ICAgICAgICAgICA8PCAiWy1zZXQtb2ZmbGluZS1zdG9yYWdlLWRlZmF1bHQtcXVvdGEgbWF4U2l6
ZV0iCkBAIC0yNDUsNyArMjQ2LDEwIEBAIHZvaWQgTGF1bmNoZXJBcHBsaWNhdGlvbjo6aGFuZGxl
VXNlck9wdGlvbnMoKQogICAgIAogICAgIGlmIChhcmdzLmNvbnRhaW5zKCItbG9jYWwtc3RvcmFn
ZS1lbmFibGVkIikpCiAgICAgICAgIHdpbmRvd09wdGlvbnMudXNlTG9jYWxTdG9yYWdlID0gdHJ1
ZTsKLSAgICAgICAgCisKKyAgICBpZiAoYXJncy5jb250YWlucygiLW5vLWRpc2stY29va2llcyIp
KQorICAgICAgICB3aW5kb3dPcHRpb25zLnVzZURpc2tDb29raWVzID0gZmFsc2U7CisKICAgICBp
ZiAoYXJncy5jb250YWlucygiLW1heGltaXplIikpCiAgICAgICAgIHdpbmRvd09wdGlvbnMuc3Rh
cnRNYXhpbWl6ZWQgPSB0cnVlOwogCi0tIAoxLjcuMy40Cgo=
</data>
<flag name="review"
          id="98383"
          type_id="1"
          status="+"
          setter="kling"
    />
    <flag name="commit-queue"
          id="98384"
          type_id="3"
          status="-"
          setter="kling"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103066</attachid>
            <date>2011-08-05 06:05:27 -0700</date>
            <delta_ts>2011-08-05 07:03:55 -0700</delta_ts>
            <desc>patch v5 (fix foreach)</desc>
            <filename>0001-Qt-QtTestBrowser-Add-support-for-saving-cookies-on-d.patch</filename>
            <type>text/plain</type>
            <size>14401</size>
            <attacher name="Ademar Reis">ademar</attacher>
            
              <data encoding="base64">RnJvbSBlODNlMWM0MzY1MTU2NGExNDBmZGYyMDA0NDg4MWY5ZWQ4ODdjZDQ3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGVtYXIgZGUgU291emEgUmVpcyBKciA8YWRlbWFyLnJlaXNA
b3BlbmJvc3NhLm9yZz4KRGF0ZTogV2VkLCAyNyBKdWwgMjAxMSAxNzowMDoxMCAtMDMwMApTdWJq
ZWN0OiBbUEFUQ0hdIFtRdF0gUXRUZXN0QnJvd3NlcjogQWRkIHN1cHBvcnQgZm9yIHNhdmluZyBj
b29raWVzIG9uIGRpc2sKCi0tLQogVG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDIxICsrKysrCiBUb29scy9RdFRlc3RCcm93c2VyL1F0VGVzdEJyb3dzZXIucHJvICB8
ICAgIDIgKwogVG9vbHMvUXRUZXN0QnJvd3Nlci9jb29raWVqYXIuY3BwICAgICAgfCAgMTMyICsr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBUb29scy9RdFRlc3RCcm93c2VyL2Nvb2tp
ZWphci5oICAgICAgICB8ICAgNjMgKysrKysrKysrKysrKysrCiBUb29scy9RdFRlc3RCcm93c2Vy
L2xhdW5jaGVyd2luZG93LmNwcCB8ICAgMzIgKysrKysrKysKIFRvb2xzL1F0VGVzdEJyb3dzZXIv
bGF1bmNoZXJ3aW5kb3cuaCAgIHwgICAgNCArCiBUb29scy9RdFRlc3RCcm93c2VyL21haW4uY3Bw
ICAgICAgICAgICB8ICAgIDYgKy0KIDcgZmlsZXMgY2hhbmdlZCwgMjU5IGluc2VydGlvbnMoKyks
IDEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgVG9vbHMvUXRUZXN0QnJvd3Nlci9j
b29raWVqYXIuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgVG9vbHMvUXRUZXN0QnJvd3Nlci9jb29r
aWVqYXIuaAoKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCBlM2Y5MDM1Li4xODUyMDM5IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDctMjggIEFkZW1hciBkZSBT
b3V6YSBSZWlzIEpyICA8YWRlbWFyLnJlaXNAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBbUXRd
IFF0VGVzdEJyb3dzZXI6IEFkZCBzdXBwb3J0IGZvciBzYXZpbmcgY29va2llcyBvbiBkaXNrCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTMyOAorCisg
ICAgICAgIFNpbXBsZSBjb29raWVqYXIgdGhhdCBzYXZlcyBjb29raWVzIG9uIGRpc2suCisKKyAg
ICAgICAgQWRkZWQgbWVudSBvcHRpb25zIHRvIGNsZWFyIGNvb2tpZXMgKEVkaXQtPkNsZWFyIGNv
b2tpZXMpIGFuZAorICAgICAgICBkaXNhYmxlIGRpc2sgY29va2llcyAoU2V0dGluZ3MtPlsgXVNh
dmUgQ29va2llcyBvbiBEaXNrKS4KKworICAgICAgICBPcHRpb24gLW5vLWRpc2stY29va2llcyBp
cyBhbHNvIGF2YWlsYWJsZS4KKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgor
CisgICAgICAgICogUXRUZXN0QnJvd3Nlci9RdFRlc3RCcm93c2VyLnBybzoKKyAgICAgICAgKiBR
dFRlc3RCcm93c2VyL2Nvb2tpZWphci5jcHA6IEFkZGVkLgorICAgICAgICAqIFF0VGVzdEJyb3dz
ZXIvY29va2llamFyLmg6IEFkZGVkLgorICAgICAgICAqIFF0VGVzdEJyb3dzZXIvbGF1bmNoZXJ3
aW5kb3cuY3BwOgorICAgICAgICAqIFF0VGVzdEJyb3dzZXIvbGF1bmNoZXJ3aW5kb3cuaDoKKyAg
ICAgICAgKiBRdFRlc3RCcm93c2VyL21haW4uY3BwOgorCiAyMDExLTA4LTAzICBEaW1pdHJpIEds
YXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVGVhY2ggQnVpbGRlclRv
UG9ydCB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIFJlbGVhc2UgYW5kIERlYnVnIGJ1aWxkZXJzLgpk
aWZmIC0tZ2l0IGEvVG9vbHMvUXRUZXN0QnJvd3Nlci9RdFRlc3RCcm93c2VyLnBybyBiL1Rvb2xz
L1F0VGVzdEJyb3dzZXIvUXRUZXN0QnJvd3Nlci5wcm8KaW5kZXggYTc4MjZlNS4uNjhjYzhmOSAx
MDA2NDQKLS0tIGEvVG9vbHMvUXRUZXN0QnJvd3Nlci9RdFRlc3RCcm93c2VyLnBybworKysgYi9U
b29scy9RdFRlc3RCcm93c2VyL1F0VGVzdEJyb3dzZXIucHJvCkBAIC0xMCw2ICsxMCw3IEBAIFNP
VVJDRVMgKz0gXAogICAgIHdlYnBhZ2UuY3BwIFwKICAgICB3ZWJ2aWV3LmNwcCBcCiAgICAgZnBz
dGltZXIuY3BwIFwKKyAgICBjb29raWVqYXIuY3BwCiAKIEhFQURFUlMgKz0gXAogICAgIGxvY2F0
aW9uZWRpdC5oIFwKQEAgLTIxLDYgKzIyLDcgQEAgSEVBREVSUyArPSBcCiAgICAgd2VicGFnZS5o
IFwKICAgICB3ZWJ2aWV3LmggXAogICAgIGZwc3RpbWVyLmggXAorICAgIGNvb2tpZWphci5oCiAK
ICFpc0VxdWFsKFFUX0FSQ0gsc2g0KTogQ09ORklHICs9IHVpdG9vbHMKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvUXRUZXN0QnJvd3Nlci9jb29raWVqYXIuY3BwIGIvVG9vbHMvUXRUZXN0QnJvd3Nlci9j
b29raWVqYXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwOGZhMWYK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9RdFRlc3RCcm93c2VyL2Nvb2tpZWphci5jcHAKQEAg
LTAsMCArMSwxMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRp
b24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29va2llamFyLmgiCisKKyNpbmNsdWRlIDxRRGVza3RvcFNl
cnZpY2VzPgorI2luY2x1ZGUgPFFEaXI+CisjaW5jbHVkZSA8UVRleHRTdHJlYW0+CisKK1Rlc3RC
cm93c2VyQ29va2llSmFyOjpUZXN0QnJvd3NlckNvb2tpZUphcihRT2JqZWN0KiBwYXJlbnQpCisg
ICAgOiBRTmV0d29ya0Nvb2tpZUphcihwYXJlbnQpCisgICAgLCBtX3N0b3JhZ2VFbmFibGVkKGZh
bHNlKQoreworICAgIC8vIFdlIHVzZSBhIHRpbWVyIGZvciB0aGUgcmVhbCBkaXNrIHdyaXRlIHRv
IGF2b2lkIG11bHRpcGxlIElPCisgICAgLy8gc3lzY2FsbHMgaW4gc2VxdWVuY2UgKHdoZW4gbG9h
ZGluZyBwYWdlcyB3aGljaCBzZXQgbXVsdGlwbGUgY29va2llcykuCisgICAgbV90aW1lci5zZXRJ
bnRlcnZhbCgxMDAwMCk7CisgICAgbV90aW1lci5zZXRTaW5nbGVTaG90KHRydWUpOworICAgIGNv
bm5lY3QoJm1fdGltZXIsIFNJR05BTCh0aW1lb3V0KCkpLCB0aGlzLCBTTE9UKHNhdmVUb0Rpc2so
KSkpOworCisgICAgUVN0cmluZyBwYXRoID0gUURlc2t0b3BTZXJ2aWNlczo6c3RvcmFnZUxvY2F0
aW9uKFFEZXNrdG9wU2VydmljZXM6OkNhY2hlTG9jYXRpb24pOworICAgIFFEaXIoKS5ta3BhdGgo
cGF0aCk7CisgICAgbV9maWxlLnNldEZpbGVOYW1lKHBhdGggKyAiL2Nvb2tpZUphciIpOworfQor
CitUZXN0QnJvd3NlckNvb2tpZUphcjo6flRlc3RCcm93c2VyQ29va2llSmFyKCkKK3sKKyAgICBp
ZiAobV9zdG9yYWdlRW5hYmxlZCkgeworICAgICAgICBleHRyYWN0UmF3Q29va2llcygpOworICAg
ICAgICBzYXZlVG9EaXNrKCk7CisgICAgfQorfQorCitib29sIFRlc3RCcm93c2VyQ29va2llSmFy
OjpzZXRDb29raWVzRnJvbVVybChjb25zdCBRTGlzdDxRTmV0d29ya0Nvb2tpZT4mIGNvb2tpZUxp
c3QsIGNvbnN0IFFVcmwmIHVybCkKK3sKKyAgICBib29sIHN0YXR1cyA9IFFOZXR3b3JrQ29va2ll
SmFyOjpzZXRDb29raWVzRnJvbVVybChjb29raWVMaXN0LCB1cmwpOworICAgIGlmIChzdGF0dXMg
JiYgbV9zdG9yYWdlRW5hYmxlZCkKKyAgICAgICAgc2NoZWR1bGVTYXZlVG9EaXNrKCk7CisgICAg
cmV0dXJuIHN0YXR1czsKK30KKwordm9pZCBUZXN0QnJvd3NlckNvb2tpZUphcjo6c2V0RGlza1N0
b3JhZ2VFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX3N0b3JhZ2VFbmFibGVkID0gZW5h
YmxlZDsKKworICAgIGlmIChlbmFibGVkICYmIGFsbENvb2tpZXMoKS5pc0VtcHR5KCkpCisgICAg
ICAgIGxvYWRGcm9tRGlzaygpOworCisgICAgLy8gV2hlbiBkaXNhYmxpbmcsIHNhdmUgY3VycmVu
dCBjb29raWVzLgorICAgIGlmICghZW5hYmxlZCAmJiAhYWxsQ29va2llcygpLmlzRW1wdHkoKSkK
KyAgICAgICAgc2NoZWR1bGVTYXZlVG9EaXNrKCk7Cit9CisKK3ZvaWQgVGVzdEJyb3dzZXJDb29r
aWVKYXI6OnNjaGVkdWxlU2F2ZVRvRGlzaygpCit7CisgICAgLy8gV2UgZXh0cmFjdCB0aGUgcmF3
IGNvb2tpZXMgaGVyZSBiZWNhdXNlIHRoZSB1c2VyIG1heQorICAgIC8vIGVuYWJsZS9kaXNhYmxl
L2NsZWFyIGNvb2tpZXMgd2hpbGUgdGhlIHRpbWVyIGlzIHJ1bm5pbmcuCisgICAgZXh0cmFjdFJh
d0Nvb2tpZXMoKTsKKyAgICBtX3RpbWVyLnN0YXJ0KCk7Cit9CisKK3ZvaWQgVGVzdEJyb3dzZXJD
b29raWVKYXI6OmV4dHJhY3RSYXdDb29raWVzKCkKK3sKKyAgICBRTGlzdDxRTmV0d29ya0Nvb2tp
ZT4gY29va2llcyA9IGFsbENvb2tpZXMoKTsKKyAgICBtX3Jhd0Nvb2tpZXMuY2xlYXIoKTsKKwor
ICAgIGZvcmVhY2ggKGNvbnN0IFFOZXR3b3JrQ29va2llICZjb29raWUsIGNvb2tpZXMpIHsKKyAg
ICAgICAgaWYgKCFjb29raWUuaXNTZXNzaW9uQ29va2llKCkpCisgICAgICAgICAgICBtX3Jhd0Nv
b2tpZXMuYXBwZW5kKGNvb2tpZS50b1Jhd0Zvcm0oKSk7CisgICAgfQorfQorCit2b2lkIFRlc3RC
cm93c2VyQ29va2llSmFyOjpzYXZlVG9EaXNrKCkKK3sKKyAgICBtX3RpbWVyLnN0b3AoKTsKKwor
ICAgIGlmIChtX2ZpbGUub3BlbihRSU9EZXZpY2U6OldyaXRlT25seSB8IFFJT0RldmljZTo6VGV4
dCkpIHsKKyAgICAgICAgUVRleHRTdHJlYW0gb3V0KCZtX2ZpbGUpOworICAgICAgICBmb3JlYWNo
IChjb25zdCBRQnl0ZUFycmF5ICZjb29raWUsIG1fcmF3Q29va2llcykKKyAgICAgICAgICAgIG91
dCA8PCBjb29raWUgKyAiXG4iOworICAgICAgICBtX2ZpbGUuY2xvc2UoKTsKKyAgICB9IGVsc2UK
KyAgICAgICAgcVdhcm5pbmcoIklPIGVycm9yIGhhbmRsaW5nIGNvb2tpZWphciBmaWxlIik7Cit9
CisKK3ZvaWQgVGVzdEJyb3dzZXJDb29raWVKYXI6OmxvYWRGcm9tRGlzaygpCit7CisgICAgaWYg
KCFtX2ZpbGUuZXhpc3RzKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFFMaXN0PFFOZXR3b3Jr
Q29va2llPiBjb29raWVzOworCisgICAgaWYgKG1fZmlsZS5vcGVuKFFJT0RldmljZTo6UmVhZE9u
bHkgfCBRSU9EZXZpY2U6OlRleHQpKSB7CisgICAgICAgIFFUZXh0U3RyZWFtIGluKCZtX2ZpbGUp
OworICAgICAgICB3aGlsZSAoIWluLmF0RW5kKCkpCisgICAgICAgICAgICBjb29raWVzLmFwcGVu
ZChRTmV0d29ya0Nvb2tpZTo6cGFyc2VDb29raWVzKGluLnJlYWRMaW5lKCkudG9VdGY4KCkpKTsK
KyAgICAgICAgbV9maWxlLmNsb3NlKCk7CisgICAgfSBlbHNlCisgICAgICAgIHFXYXJuaW5nKCJJ
TyBlcnJvciBoYW5kbGluZyBjb29raWVqYXIgZmlsZSIpOworCisgICAgc2V0QWxsQ29va2llcyhj
b29raWVzKTsKK30KKwordm9pZCBUZXN0QnJvd3NlckNvb2tpZUphcjo6cmVzZXQoKQoreworICAg
IHNldEFsbENvb2tpZXMoUUxpc3Q8UU5ldHdvcmtDb29raWU+KCkpOworICAgIGlmIChtX3N0b3Jh
Z2VFbmFibGVkKQorICAgICAgICBzY2hlZHVsZVNhdmVUb0Rpc2soKTsKK30KZGlmZiAtLWdpdCBh
L1Rvb2xzL1F0VGVzdEJyb3dzZXIvY29va2llamFyLmggYi9Ub29scy9RdFRlc3RCcm93c2VyL2Nv
b2tpZWphci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkNmJkM2MKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9RdFRlc3RCcm93c2VyL2Nvb2tpZWphci5oCkBAIC0wLDAg
KzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIGNvb2tpZWphcl9oCisjZGVmaW5lIGNvb2tpZWphcl9oCisKKyNpbmNsdWRl
IDxRRmlsZT4KKyNpbmNsdWRlIDxRTmV0d29ya0Nvb2tpZUphcj4KKyNpbmNsdWRlIDxRVGltZXI+
CisKK2NsYXNzIFRlc3RCcm93c2VyQ29va2llSmFyIDogcHVibGljIFFOZXR3b3JrQ29va2llSmFy
IHsKKyAgICBRX09CSkVDVAorCitwdWJsaWM6CisgICAgVGVzdEJyb3dzZXJDb29raWVKYXIoUU9i
amVjdCogcGFyZW50ID0gMCk7CisgICAgdmlydHVhbCB+VGVzdEJyb3dzZXJDb29raWVKYXIoKTsK
KworICAgIHZpcnR1YWwgYm9vbCBzZXRDb29raWVzRnJvbVVybChjb25zdCBRTGlzdDxRTmV0d29y
a0Nvb2tpZT4mLCBjb25zdCBRVXJsJik7CisKKyAgICB2b2lkIHNldERpc2tTdG9yYWdlRW5hYmxl
ZChib29sKTsKKworcHVibGljIHNsb3RzOgorICAgIHZvaWQgc2NoZWR1bGVTYXZlVG9EaXNrKCk7
CisgICAgdm9pZCBsb2FkRnJvbURpc2soKTsKKyAgICB2b2lkIHJlc2V0KCk7CisKK3ByaXZhdGUg
c2xvdHM6CisgICAgdm9pZCBzYXZlVG9EaXNrKCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBleHRy
YWN0UmF3Q29va2llcygpOworCisgICAgUUxpc3Q8UUJ5dGVBcnJheT4gbV9yYXdDb29raWVzOwor
ICAgIGJvb2wgbV9zdG9yYWdlRW5hYmxlZDsKKyAgICBRRmlsZSBtX2ZpbGU7CisgICAgUVRpbWVy
IG1fdGltZXI7Cit9OworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1F0VGVzdEJyb3dzZXIv
bGF1bmNoZXJ3aW5kb3cuY3BwIGIvVG9vbHMvUXRUZXN0QnJvd3Nlci9sYXVuY2hlcndpbmRvdy5j
cHAKaW5kZXggOTEwNjViYy4uODZmMTVmZSAxMDA2NDQKLS0tIGEvVG9vbHMvUXRUZXN0QnJvd3Nl
ci9sYXVuY2hlcndpbmRvdy5jcHAKKysrIGIvVG9vbHMvUXRUZXN0QnJvd3Nlci9sYXVuY2hlcndp
bmRvdy5jcHAKQEAgLTMzLDggKzMzLDExIEBACiAgKi8KIAogI2luY2x1ZGUgImxhdW5jaGVyd2lu
ZG93LmgiCisjaW5jbHVkZSAiY29va2llamFyLmgiCiAjaW5jbHVkZSAidXJsbG9hZGVyLmgiCiAK
KyNpbmNsdWRlIDxRQ29yZUFwcGxpY2F0aW9uPgorCiAjaWYgIWRlZmluZWQoUVRfTk9fRklMRURJ
QUxPRykgJiYgIWRlZmluZWQoUVRfTk9fTUVTU0FHRUJPWCkKICNpbmNsdWRlIDxRRmlsZURpYWxv
Zz4KICNpbmNsdWRlIDxRRmlsZUluZm8+CkBAIC01MCw2ICs1MywxMiBAQAogY29uc3QgaW50IGdF
eGl0Q2xpY2tBcmVhID0gODA7CiBRVmVjdG9yPGludD4gTGF1bmNoZXJXaW5kb3c6Om1fem9vbUxl
dmVsczsKIAorc3RhdGljIFRlc3RCcm93c2VyQ29va2llSmFyKiB0ZXN0QnJvd3NlckNvb2tpZUph
ckluc3RhbmNlKCkKK3sKKyAgICBzdGF0aWMgVGVzdEJyb3dzZXJDb29raWVKYXIqIGNvb2tpZUph
ciA9IG5ldyBUZXN0QnJvd3NlckNvb2tpZUphcihxQXBwKTsKKyAgICByZXR1cm4gY29va2llSmFy
OworfQorCiBMYXVuY2hlcldpbmRvdzo6TGF1bmNoZXJXaW5kb3coV2luZG93T3B0aW9ucyogZGF0
YSwgUUdyYXBoaWNzU2NlbmUqIHNoYXJlZFNjZW5lKQogICAgIDogTWFpbldpbmRvdygpCiAgICAg
LCBtX2N1cnJlbnRab29tKDEwMCkKQEAgLTEyMSw2ICsxMzAsMTIgQEAgdm9pZCBMYXVuY2hlcldp
bmRvdzo6aW5pdGlhbGl6ZVZpZXcoKQogICAgIFFVcmwgdXJsID0gcGFnZSgpLT5tYWluRnJhbWUo
KS0+dXJsKCk7CiAgICAgc2V0UGFnZShuZXcgV2ViUGFnZSh0aGlzKSk7CiAgICAgc2V0RGlza0Nh
Y2hlKG1fd2luZG93T3B0aW9ucy51c2VEaXNrQ2FjaGUpOworICAgIHNldFVzZURpc2tDb29raWVz
KG1fd2luZG93T3B0aW9ucy51c2VEaXNrQ29va2llcyk7CisKKyAgICAvLyBXZSByZXVzZSB0aGUg
c2FtZSBjb29raWVKYXIgb24gbXVsdGlwbGUgUU5BTXMsIHdoaWNoIGlzIE9LLgorICAgIFFPYmpl
Y3QqIGNvb2tpZUphclBhcmVudCA9IHRlc3RCcm93c2VyQ29va2llSmFySW5zdGFuY2UoKS0+cGFy
ZW50KCk7CisgICAgcGFnZSgpLT5uZXR3b3JrQWNjZXNzTWFuYWdlcigpLT5zZXRDb29raWVKYXIo
dGVzdEJyb3dzZXJDb29raWVKYXJJbnN0YW5jZSgpKTsKKyAgICB0ZXN0QnJvd3NlckNvb2tpZUph
ckluc3RhbmNlKCktPnNldFBhcmVudChjb29raWVKYXJQYXJlbnQpOwogCiAgICAgUVNwbGl0dGVy
KiBzcGxpdHRlciA9IHN0YXRpY19jYXN0PFFTcGxpdHRlcio+KGNlbnRyYWxXaWRnZXQoKSk7CiAK
QEAgLTIyNiw2ICsyNDEsOCBAQCB2b2lkIExhdW5jaGVyV2luZG93OjpjcmVhdGVDaHJvbWUoKQog
ICAgIFFBY3Rpb24qIHNldEVkaXRhYmxlID0gZWRpdE1lbnUtPmFkZEFjdGlvbigiU2V0IEVkaXRh
YmxlIiwgdGhpcywgU0xPVChzZXRFZGl0YWJsZShib29sKSkpOwogICAgIHNldEVkaXRhYmxlLT5z
ZXRDaGVja2FibGUodHJ1ZSk7CiAKKyAgICBlZGl0TWVudS0+YWRkQWN0aW9uKCJDbGVhciBDb29r
aWVzIiwgdGhpcywgU0xPVChjbGVhckNvb2tpZXMoKSkpOworCiAgICAgUU1lbnUqIHZpZXdNZW51
ID0gbWVudUJhcigpLT5hZGRNZW51KCImVmlldyIpOwogICAgIHZpZXdNZW51LT5hZGRBY3Rpb24o
cGFnZSgpLT5hY3Rpb24oUVdlYlBhZ2U6OlN0b3ApKTsKICAgICB2aWV3TWVudS0+YWRkQWN0aW9u
KHBhZ2UoKS0+YWN0aW9uKFFXZWJQYWdlOjpSZWxvYWQpKTsKQEAgLTQzOSw2ICs0NTYsMTEgQEAg
dm9pZCBMYXVuY2hlcldpbmRvdzo6Y3JlYXRlQ2hyb21lKCkKICAgICBRQWN0aW9uKiB0b2dnbGVK
YXZhc2NyaXB0Q2FuT3BlbldpbmRvd3MgPSBzZXR0aW5nc01lbnUtPmFkZEFjdGlvbigiRW5hYmxl
IGpzIHBvcHVwIHdpbmRvd3MiLCB0aGlzLCBTTE9UKHRvZ2dsZUphdmFzY3JpcHRDYW5PcGVuV2lu
ZG93cyhib29sKSkpOwogICAgIHRvZ2dsZUphdmFzY3JpcHRDYW5PcGVuV2luZG93cy0+c2V0Q2hl
Y2thYmxlKHRydWUpOwogICAgIHRvZ2dsZUphdmFzY3JpcHRDYW5PcGVuV2luZG93cy0+c2V0Q2hl
Y2tlZChmYWxzZSk7CisKKyAgICBRQWN0aW9uKiB0b2dnbGVVc2VEaXNrQ29va2llcyA9IHNldHRp
bmdzTWVudS0+YWRkQWN0aW9uKCJTYXZlIENvb2tpZXMgb24gRGlzayIsIHRoaXMsIFNMT1Qoc2V0
VXNlRGlza0Nvb2tpZXMoYm9vbCkpKTsKKyAgICB0b2dnbGVVc2VEaXNrQ29va2llcy0+c2V0Q2hl
Y2thYmxlKHRydWUpOworICAgIHRvZ2dsZVVzZURpc2tDb29raWVzLT5zZXRDaGVja2VkKG1fd2lu
ZG93T3B0aW9ucy51c2VEaXNrQ29va2llcyk7CisKICNpZm5kZWYgUVRfTk9fTElORUVESVQKICAg
ICBtX2ZpbmRCYXIgPSBuZXcgUVRvb2xCYXIoIkZpbmQiLCB0aGlzKTsKICAgICBhZGRUb29sQmFy
KFF0OjpCb3R0b21Ub29sQmFyQXJlYSwgbV9maW5kQmFyKTsKQEAgLTg4NSw2ICs5MDcsMTYgQEAg
dm9pZCBMYXVuY2hlcldpbmRvdzo6dG9nZ2xlSmF2YXNjcmlwdENhbk9wZW5XaW5kb3dzKGJvb2wg
ZW5hYmxlKQogICAgIHBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5n
czo6SmF2YXNjcmlwdENhbk9wZW5XaW5kb3dzLCBlbmFibGUpOwogfQogCit2b2lkIExhdW5jaGVy
V2luZG93OjpzZXRVc2VEaXNrQ29va2llcyhib29sIGVuYWJsZSkKK3sKKyAgICB0ZXN0QnJvd3Nl
ckNvb2tpZUphckluc3RhbmNlKCktPnNldERpc2tTdG9yYWdlRW5hYmxlZChlbmFibGUpOworfQor
Cit2b2lkIExhdW5jaGVyV2luZG93OjpjbGVhckNvb2tpZXMoKQoreworICAgIHRlc3RCcm93c2Vy
Q29va2llSmFySW5zdGFuY2UoKS0+cmVzZXQoKTsKK30KKwogdm9pZCBMYXVuY2hlcldpbmRvdzo6
dG9nZ2xlQXV0b0xvYWRJbWFnZXMoYm9vbCBlbmFibGUpCiB7CiAgICAgcGFnZSgpLT5zZXR0aW5n
cygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpBdXRvTG9hZEltYWdlcywgIWVuYWJsZSk7
CmRpZmYgLS1naXQgYS9Ub29scy9RdFRlc3RCcm93c2VyL2xhdW5jaGVyd2luZG93LmggYi9Ub29s
cy9RdFRlc3RCcm93c2VyL2xhdW5jaGVyd2luZG93LmgKaW5kZXggNTI3ZjhmYi4uOWEzNmZkZiAx
MDA2NDQKLS0tIGEvVG9vbHMvUXRUZXN0QnJvd3Nlci9sYXVuY2hlcndpbmRvdy5oCisrKyBiL1Rv
b2xzL1F0VGVzdEJyb3dzZXIvbGF1bmNoZXJ3aW5kb3cuaApAQCAtOTcsNiArOTcsNyBAQCBwdWJs
aWM6CiAgICAgICAgICwgdXNlTG9jYWxTdG9yYWdlKGZhbHNlKQogICAgICAgICAsIHVzZU9mZmxp
bmVTdG9yYWdlRGF0YWJhc2UoZmFsc2UpCiAgICAgICAgICwgdXNlT2ZmbGluZVdlYkFwcGxpY2F0
aW9uQ2FjaGUoZmFsc2UpCisgICAgICAgICwgdXNlRGlza0Nvb2tpZXModHJ1ZSkKICAgICAgICAg
LCBvZmZsaW5lU3RvcmFnZURlZmF1bHRRdW90YVNpemUoMCkKICNpZiBkZWZpbmVkKFFUX0NPTkZJ
R1VSRURfV0lUSF9PUEVOR0wpCiAgICAgICAgICwgdXNlUUdMV2lkZ2V0Vmlld3BvcnQoZmFsc2Up
CkBAIC0xMjYsNiArMTI3LDcgQEAgcHVibGljOgogICAgIGJvb2wgdXNlTG9jYWxTdG9yYWdlOwog
ICAgIGJvb2wgdXNlT2ZmbGluZVN0b3JhZ2VEYXRhYmFzZTsKICAgICBib29sIHVzZU9mZmxpbmVX
ZWJBcHBsaWNhdGlvbkNhY2hlOworICAgIGJvb2wgdXNlRGlza0Nvb2tpZXM7CiAgICAgcXVpbnQ2
NCBvZmZsaW5lU3RvcmFnZURlZmF1bHRRdW90YVNpemU7CiAjaWYgZGVmaW5lZChRVF9DT05GSUdV
UkVEX1dJVEhfT1BFTkdMKQogICAgIGJvb2wgdXNlUUdMV2lkZ2V0Vmlld3BvcnQ7CkBAIC0xODgs
NiArMTkwLDggQEAgcHJvdGVjdGVkIHNsb3RzOgogICAgIHZvaWQgdG9nZ2xlSW50ZXJydXB0aW5n
SmF2YVNjcmlwdEVuYWJsZWQoYm9vbCBlbmFibGUpOwogICAgIHZvaWQgdG9nZ2xlSmF2YXNjcmlw
dENhbk9wZW5XaW5kb3dzKGJvb2wgZW5hYmxlKTsKICAgICB2b2lkIHRvZ2dsZUF1dG9Mb2FkSW1h
Z2VzKGJvb2wgZW5hYmxlKTsKKyAgICB2b2lkIHNldFVzZURpc2tDb29raWVzKGJvb2wgZW5hYmxl
KTsKKyAgICB2b2lkIGNsZWFyQ29va2llcygpOwogICAgIHZvaWQgdG9nZ2xlUGx1Z2lucyhib29s
IGVuYWJsZSk7CiAgICAgdm9pZCB0b2dnbGVMb2NhbFN0b3JhZ2UoYm9vbCB0b2dnbGUpOwogICAg
IHZvaWQgdG9nZ2xlT2ZmbGluZVN0b3JhZ2VEYXRhYmFzZShib29sIHRvZ2dsZSk7CmRpZmYgLS1n
aXQgYS9Ub29scy9RdFRlc3RCcm93c2VyL21haW4uY3BwIGIvVG9vbHMvUXRUZXN0QnJvd3Nlci9t
YWluLmNwcAppbmRleCA2NjExNDM1Li5mYjQyNzk5IDEwMDY0NAotLS0gYS9Ub29scy9RdFRlc3RC
cm93c2VyL21haW4uY3BwCisrKyBiL1Rvb2xzL1F0VGVzdEJyb3dzZXIvbWFpbi5jcHAKQEAgLTE5
NSw2ICsxOTUsNyBAQCB2b2lkIExhdW5jaGVyQXBwbGljYXRpb246OmhhbmRsZVVzZXJPcHRpb25z
KCkKICAgICAgICAgICAgICA8PCAiWy10aWxlZC1iYWNraW5nLXN0b3JlXSIKICAgICAgICAgICAg
ICA8PCAiWy1yZXNpemVzLXRvLWNvbnRlbnRzXSIKICAgICAgICAgICAgICA8PCAiWy1sb2NhbC1z
dG9yYWdlLWVuYWJsZWRdIgorICAgICAgICAgICAgIDw8ICJbLW5vLWRpc2stY29va2llc10iCiAg
ICAgICAgICAgICAgPDwgIlstb2ZmbGluZS1zdG9yYWdlLWRhdGFiYXNlLWVuYWJsZWRdIgogICAg
ICAgICAgICAgIDw8ICJbLW9mZmxpbmUtd2ViLWFwcGxpY2F0aW9uLWNhY2hlLWVuYWJsZWRdIgog
ICAgICAgICAgICAgIDw8ICJbLXNldC1vZmZsaW5lLXN0b3JhZ2UtZGVmYXVsdC1xdW90YSBtYXhT
aXplXSIKQEAgLTI0NSw3ICsyNDYsMTAgQEAgdm9pZCBMYXVuY2hlckFwcGxpY2F0aW9uOjpoYW5k
bGVVc2VyT3B0aW9ucygpCiAgICAgCiAgICAgaWYgKGFyZ3MuY29udGFpbnMoIi1sb2NhbC1zdG9y
YWdlLWVuYWJsZWQiKSkKICAgICAgICAgd2luZG93T3B0aW9ucy51c2VMb2NhbFN0b3JhZ2UgPSB0
cnVlOwotICAgICAgICAKKworICAgIGlmIChhcmdzLmNvbnRhaW5zKCItbm8tZGlzay1jb29raWVz
IikpCisgICAgICAgIHdpbmRvd09wdGlvbnMudXNlRGlza0Nvb2tpZXMgPSBmYWxzZTsKKwogICAg
IGlmIChhcmdzLmNvbnRhaW5zKCItbWF4aW1pemUiKSkKICAgICAgICAgd2luZG93T3B0aW9ucy5z
dGFydE1heGltaXplZCA9IHRydWU7CiAKLS0gCjEuNy4zLjQKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>