<?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>111288</bug_id>
          
          <creation_ts>2013-03-04 00:09:45 -0800</creation_ts>
          <short_desc>[GTK][WK2] Add webkit_web_page_get_uri to WebKit2 GTK+ API</short_desc>
          <delta_ts>2013-04-18 05:01:22 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>110614</dependson>
          <blocked>112160</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Manuel Rego Casasnovas">rego</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mrobinson</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>846187</commentid>
    <comment_count>0</comment_count>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2013-03-04 00:09:45 -0800</bug_when>
    <thetext>This is required to implement the adblock extension in Epiphnay.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846213</commentid>
    <comment_count>1</comment_count>
      <attachid>191169</attachid>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2013-03-04 01:10:39 -0800</bug_when>
    <thetext>Created attachment 191169
Patch

Patch to be applied after bug #110614.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846244</commentid>
    <comment_count>2</comment_count>
      <attachid>191169</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-03-04 02:09:01 -0800</bug_when>
    <thetext>Comment on attachment 191169
Patch

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

Patch looks good to me, thanks!

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestLoaderClient.cpp:291
&gt; +    const char* uri;
&gt; +    g_variant_get(result, &quot;(&amp;s)&quot;, &amp;uri);
&gt; +    g_assert_cmpstr(uri, ==, webkit_web_view_get_uri(test-&gt;m_webView));

Instead of testing only that the uris match, it would be interesting to test also that the uri is first /redirect and then /normal. You could add a class deriving from WebViewTest, because I think we don&apos;t need LoadTrackingTest for this particular test. The class could have a Vector of Strings where you add the current URI every time it changes. Then in the test you can use that vector to check that at 0 it&apos;s /redirect and at 1 it&apos;s /normal.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestLoaderClient.cpp:377
&gt; +

Remove this empty line.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:193
&gt; +    g_object_class_install_property(gObjectClass,

Move gObjectClass to the next line so that all parameters are lined up.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:195
&gt; +        g_param_spec_string(&quot;uri&quot;,

Ditto, move &quot;uri&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846362</commentid>
    <comment_count>3</comment_count>
      <attachid>191209</attachid>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2013-03-04 05:40:13 -0800</bug_when>
    <thetext>Created attachment 191209
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846376</commentid>
    <comment_count>4</comment_count>
      <attachid>191209</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-03-04 05:55:42 -0800</bug_when>
    <thetext>Comment on attachment 191209
Patch

Excellent!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846652</commentid>
    <comment_count>5</comment_count>
      <attachid>191209</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-03-04 11:07:32 -0800</bug_when>
    <thetext>Comment on attachment 191209
Patch

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

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestLoaderClient.cpp:297
&gt; +        const char* uri;
&gt; +        g_variant_get(result, &quot;(&amp;s)&quot;, &amp;uri);
&gt; +        g_assert_cmpstr(uri, ==, webkit_web_view_get_uri(test-&gt;m_webView));
&gt; +        test-&gt;m_URIs.append(uri);

I&apos;ve noticed that this test is flaky, it depends on whether the dbus message is received after or before the wk message. I think you could connect to WebKitWebView::notify::uri and fill another Vector. And in the test compare the vectors removing the comparison here.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestLoaderClient.cpp:329
&gt; +    g_assert_cmpstr(test-&gt;m_URIs[0].data(), ==, kServer-&gt;getURIForPath(&quot;/redirect&quot;).data());
&gt; +    g_assert_cmpstr(test-&gt;m_URIs[1].data(), ==, kServer-&gt;getURIForPath(&quot;/normal&quot;).data());

Also noticed a problem here, kServer-&gt;getURIForPath returns a temporary CString, that can&apos;t be used with g_assert_cmpstr because it&apos;s macro, not a function. See bug https://bugs.webkit.org/show_bug.cgi?id=111346. Use ASSERT_CMP_CSTRING when the patch in that bug lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846693</commentid>
    <comment_count>6</comment_count>
      <attachid>191281</attachid>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2013-03-04 11:56:30 -0800</bug_when>
    <thetext>Created attachment 191281
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847417</commentid>
    <comment_count>7</comment_count>
      <attachid>191281</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-03-05 01:25:19 -0800</bug_when>
    <thetext>Comment on attachment 191281
Patch

Perfect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847447</commentid>
    <comment_count>8</comment_count>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2013-03-05 01:45:05 -0800</bug_when>
    <thetext>Adding WebKit2 owners to the CC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848514</commentid>
    <comment_count>9</comment_count>
      <attachid>191281</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-03-05 23:43:53 -0800</bug_when>
    <thetext>Comment on attachment 191281
Patch

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

&gt; Source/WebKit2/ChangeLog:9
&gt; +

You have removed the Reviewed by line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848542</commentid>
    <comment_count>10</comment_count>
      <attachid>191666</attachid>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2013-03-06 00:10:58 -0800</bug_when>
    <thetext>Created attachment 191666
Patch

Fixed the issue in ChangeLog file. Sorry :-(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853440</commentid>
    <comment_count>11</comment_count>
      <attachid>191666</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-03-12 07:27:30 -0700</bug_when>
    <thetext>Comment on attachment 191666
Patch

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

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestLoaderClient.cpp:320
&gt; +        g_signal_connect(m_webView, &quot;notify::uri&quot;, G_CALLBACK(webViewURIChanged), this);
&gt; +    }

You should add a destructor to disconnect the signal and unsubscribe the dbus signal too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853497</commentid>
    <comment_count>12</comment_count>
      <attachid>192741</attachid>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2013-03-12 08:26:45 -0700</bug_when>
    <thetext>Created attachment 192741
Patch

New patch unsubscribing signals when the test finishes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853525</commentid>
    <comment_count>13</comment_count>
      <attachid>192741</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-03-12 09:07:36 -0700</bug_when>
    <thetext>Comment on attachment 192741
Patch

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853534</commentid>
    <comment_count>14</comment_count>
      <attachid>192741</attachid>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2013-03-12 09:13:13 -0700</bug_when>
    <thetext>Comment on attachment 192741
Patch

Remove commit‑queue flag until bug #110614 lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>875558</commentid>
    <comment_count>15</comment_count>
      <attachid>198047</attachid>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2013-04-15 03:20:11 -0700</bug_when>
    <thetext>Created attachment 198047
Patch

Upload rebased patch as bug #110614 has already landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>875560</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-15 03:21:59 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877061</commentid>
    <comment_count>17</comment_count>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2013-04-17 00:58:32 -0700</bug_when>
    <thetext>Pinging owners as this patch is quite simple, it only adds the URI property to WebKitWebPage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877426</commentid>
    <comment_count>18</comment_count>
      <attachid>198047</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-17 12:23:55 -0700</bug_when>
    <thetext>Comment on attachment 198047
Patch

Rejecting attachment 198047 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 198047, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
eeded at 233 (offset 3 lines).
Hunk #5 succeeded at 353 with fuzz 2 (offset 52 lines).
1 out of 5 hunks FAILED -- saving rejects to file Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp.rej
patching file Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.h
Hunk #1 succeeded at 60 with fuzz 2 (offset 3 lines).

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Anders Carlsson&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.appspot.com/results/31660</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877723</commentid>
    <comment_count>19</comment_count>
      <attachid>198687</attachid>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2013-04-18 00:12:54 -0700</bug_when>
    <thetext>Created attachment 198687
Patch

Rebased patch against current trunk r148658.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877817</commentid>
    <comment_count>20</comment_count>
      <attachid>198687</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-18 05:01:16 -0700</bug_when>
    <thetext>Comment on attachment 198687
Patch

Clearing flags on attachment: 198687

Committed r148666: &lt;http://trac.webkit.org/changeset/148666&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877818</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-18 05:01:22 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191169</attachid>
            <date>2013-03-04 01:10:39 -0800</date>
            <delta_ts>2013-03-04 05:40:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111288-20130304100646.patch</filename>
            <type>text/plain</type>
            <size>14076</size>
            <attacher name="Manuel Rego Casasnovas">rego</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjM2MzNiNjNhNTRjMjUw
NzhhZGQzNTExZWViMDNjNTY4Y2MwMDAwMS4uOWU1ZTAwZjVlMDM1OTJmY2EyOTc0ZDZkMzg1ODJh
MTE5YjVhNjhlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEzLTAzLTA0ICBNYW51
ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dL
Ml0gQWRkIFdlYktpdFdlYlBhZ2U6OndlYmtpdF93ZWJfcGFnZV9nZXRfdXJpIHRvIFdlYktpdDIg
R1RLKyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExMTI4OAorCisgICAgICAgIEFkZCBuZXcgcHJvcGVydHkgVVJJIHRvIFdlYktpdFdlYlBhZ2Ug
cHJvdmlkaW5nIGEgbWV0aG9kCisgICAgICAgIHdlYmtpdF93ZWJfcGFnZV9nZXRfdXJpIHRvIGdl
dCBpdCBhbmQgdGhlIHNpZ25hbCAibm90aWZ5Ojp1cmkiIHRvCisgICAgICAgIG1vbml0b3IgY2hh
bmdlcyBpbiB0aGUgVVJJLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLXNlY3Rpb25zLnR4dDogSW5jbHVkZSBuZXcgbWV0aG9kIGluCisgICAgICAgIEdUSysg
ZG9jLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RMb2FkZXJDbGllbnQu
Y3BwOgorICAgICAgICAodXJpQ2hhbmdlZENhbGxiYWNrKToKKyAgICAgICAgKHRlc3RXZWJQYWdl
VVJJKToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisgICAgICAgIChhZnRlckFsbCk6IEFkZCB0ZXN0
IHRvIGNoZWNrIHRoYXQgV2ViS2l0V2ViUGFnZSBVUkkgbWF0Y2hlcyB3aXRoCisgICAgICAgIFdl
YktpdFdlYlZpZXcgdmFsdWUuIFRoZSB0ZXN0cyBpcyBsaXN0ZW5pbmcgZm9yIGNoYW5nZXMgaW4g
V2ViS2l0V2ViUGFnZQorICAgICAgICBVUkkgdmlhIEQtQnVzIGFuZCBjaGVja3MgdGhhdCB2YWx1
ZSBpcyB0aGUgc2FtZSB0aGFuIFdlYktpdFdlYlZpZXcgVVJJLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL3Rlc3RzL1dlYkV4dGVuc2lvblRlc3QuY3BwOgorICAgICAgICAodXJpQ2hhbmdl
ZENhbGxiYWNrKToKKyAgICAgICAgKHBhZ2VDcmVhdGVkQ2FsbGJhY2spOiBBZGQgbmV3IEQtQnVz
IHNpZ25hbCAiVVJJQ2hhbmdlZCIgY29ubmVjdGVkIHRvCisgICAgICAgICJub3RpZnk6OnVyaSIg
c2lnbmFsIG9mIFdlYktpdFdlYlBhZ2UuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuY3BwOgorICAgICAgICAoX1dlYktpdFdlYlBhZ2VQ
cml2YXRlKTogQWRkIG5ldyBVUkkgYXR0cmlidXRlLgorICAgICAgICAod2Via2l0V2ViUGFnZVNl
dFVSSSk6IE1ldGhvZCB0byBzZXQgdGhlIFVSSSBhbmQgZW1pdCB0aGUgIm5vdGlmeTp1cmkiCisg
ICAgICAgIHNpZ25hbCBpZiBpdCBoYXMgY2hhbmdlZC4KKyAgICAgICAgKGRpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUpOiBBdCB0aGlzIHBvaW50IGl0IHVzZSB0aGUgdW5yZWFjaGFibGUK
KyAgICAgICAgVVJMIGZyb20gcHJvdmlzaW9uYWwgZG9jdW1lbnQgbG9hZGVyIGlmIGFueS4gT3Ro
ZXJ3aXNlLCBpdCB1c2VzIHRoZSBVUkwKKyAgICAgICAgZnJvbSBwcm92aXNpb25hbCBkb2N1bWVu
dCBsb2FkZXIuCisgICAgICAgIChkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25h
bExvYWRGb3JGcmFtZSk6IEluIHRoZSBjYXNlIG9mCisgICAgICAgIHJlZGlyZWN0aW9ucyBpdCB3
b3JrcyBsaWtlIGZvciBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIGdldHRpbmcKKyAg
ICAgICAgdGhlIHVucmVhY2hhYmxlIFVSTCBpZiBhbnkuCisgICAgICAgIChkaWRTYW1lRG9jdW1l
bnROYXZpZ2F0aW9uRm9yRnJhbWUpOiBJbiB0aGlzIGNhc2UgaXQgZ2V0cyB0aGUgVVJMIGZyb20K
KyAgICAgICAgdGhlIGRvY3VtZW50IGxvYWRlci4KKyAgICAgICAgKHdlYmtpdFdlYlBhZ2VHZXRQ
cm9wZXJ0eSk6IEFkZCBjb2RlIHJlbGF0ZWQgdG8gVVJJIHByb3BlcnR5LgorICAgICAgICAod2Vi
a2l0X3dlYl9wYWdlX2NsYXNzX2luaXQpOiBBZGQgYml0cyByZWxhdGVkIHRvIFVSSSBwcm9wZXJ0
eS4KKyAgICAgICAgKHdlYmtpdFdlYlBhZ2VDcmVhdGUpOiBJbXBsZW1lbnQgY2FsbGJhY2tzIHRv
IG1vbml0b3IgVVJJIGNoYW5nZXMuCisgICAgICAgICh3ZWJraXRfd2ViX3BhZ2VfZ2V0X3VyaSk6
IFJldHVybiBVUkkgYXR0cmlidXRlLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmg6IEFkZCBuZXcgbWV0aG9kCisgICAgICAgIGhlYWRl
ci4KKwogMjAxMy0wMi0yMyAgTWFudWVsIFJlZ28gQ2FzYXNub3ZhcyAgPHJlZ29AaWdhbGlhLmNv
bT4KIAogICAgICAgICBbR1RLXVtXSzJdIEFkZCBkb2N1bWVudC1sb2FkZWQgc2lnbmFsIHRvIFdl
YktpdFdlYlBhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CmluZGV4IGY2ZThhODQ3NzdiZTI3
YjQ1YmVkZTMwMzY1YjI0NDA5ZmIyYTI5Y2EuLjBkZWUyNWQzZDljMGE5MDIyNjEyZGMxYTJlYmIy
Y2M4MTllYzE1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dApAQCAtOTU0LDYgKzk1NCw3
IEBAIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF90eXBlCiA8RklMRT5XZWJLaXRXZWJQYWdlPC9G
SUxFPgogV2ViS2l0V2ViUGFnZQogd2Via2l0X3dlYl9wYWdlX2dldF9kb21fZG9jdW1lbnQKK3dl
YmtpdF93ZWJfcGFnZV9nZXRfdXJpCiAKIDxTVUJTRUNUSU9OIFN0YW5kYXJkPgogV2ViS2l0V2Vi
UGFnZUNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90
ZXN0cy9UZXN0TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL3Rlc3RzL1Rlc3RMb2FkZXJDbGllbnQuY3BwCmluZGV4IDhmY2YzMzAwOTI3Mjc0ZGRmNzM4
OGNhMWM0YTcwYTIyMTE1OTI5YWQuLjJkZjQ1NmY1NzE1YzZhZWI1OWMwZWM4ODFiNzM3YzVlMjlk
NWE2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3Rz
L1Rlc3RMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL3Rlc3RzL1Rlc3RMb2FkZXJDbGllbnQuY3BwCkBAIC0yMiwxMSArMjIsMTMgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUgIkxvYWRUcmFja2luZ1Rlc3QuaCIKKyNpbmNsdWRl
ICJXZWJLaXRUZXN0QnVzLmgiCiAjaW5jbHVkZSAiV2ViS2l0VGVzdFNlcnZlci5oIgogI2luY2x1
ZGUgPGd0ay9ndGsuaD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAKK3N0YXRpYyBXZWJLaXRUZXN0QnVzKiBidXM7CiBzdGF0aWMgV2Vi
S2l0VGVzdFNlcnZlcioga1NlcnZlcjsKIAogc3RhdGljIHZvaWQgdGVzdExvYWRpbmdTdGF0dXMo
TG9hZFRyYWNraW5nVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlciBkYXRhKQpAQCAtMjgyLDYgKzI4
NCwzMyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0lzTG9hZGluZyhWaWV3SXNMb2FkaW5nVGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQo
KTsKIH0KIAorc3RhdGljIHZvaWQgdXJpQ2hhbmdlZENhbGxiYWNrKEdEQnVzQ29ubmVjdGlvbios
IGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBHVmFy
aWFudCogcmVzdWx0LCBXZWJWaWV3VGVzdCogdGVzdCkKK3sKKyAgICBjb25zdCBjaGFyKiB1cmk7
CisgICAgZ192YXJpYW50X2dldChyZXN1bHQsICIoJnMpIiwgJnVyaSk7CisgICAgZ19hc3NlcnRf
Y21wc3RyKHVyaSwgPT0sIHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKHRlc3QtPm1fd2ViVmlldykp
OworfQorCitzdGF0aWMgdm9pZCB0ZXN0V2ViUGFnZVVSSShMb2FkVHJhY2tpbmdUZXN0KiB0ZXN0
LCBnY29uc3Rwb2ludGVyKQoreworICAgIEdSZWZQdHI8R0RCdXNQcm94eT4gcHJveHkgPSBhZG9w
dEdSZWYoYnVzLT5jcmVhdGVQcm94eSgib3JnLndlYmtpdC5ndGsuV2ViRXh0ZW5zaW9uVGVzdCIs
CisgICAgICAgICIvb3JnL3dlYmtpdC9ndGsvV2ViRXh0ZW5zaW9uVGVzdCIsICJvcmcud2Via2l0
Lmd0ay5XZWJFeHRlbnNpb25UZXN0IiwgdGVzdC0+bV9tYWluTG9vcCkpOworICAgIGd1aW50IGlk
ID0gZ19kYnVzX2Nvbm5lY3Rpb25fc2lnbmFsX3N1YnNjcmliZShnX2RidXNfcHJveHlfZ2V0X2Nv
bm5lY3Rpb24ocHJveHkuZ2V0KCkpLAorICAgICAgICAwLAorICAgICAgICAib3JnLndlYmtpdC5n
dGsuV2ViRXh0ZW5zaW9uVGVzdCIsCisgICAgICAgICJVUklDaGFuZ2VkIiwKKyAgICAgICAgIi9v
cmcvd2Via2l0L2d0ay9XZWJFeHRlbnNpb25UZXN0IiwKKyAgICAgICAgMCwKKyAgICAgICAgR19E
QlVTX1NJR05BTF9GTEFHU19OT05FLAorICAgICAgICByZWludGVycHJldF9jYXN0PEdEQnVzU2ln
bmFsQ2FsbGJhY2s+KHVyaUNoYW5nZWRDYWxsYmFjayksCisgICAgICAgIHRlc3QsCisgICAgICAg
IDApOworICAgIGdfYXNzZXJ0KGlkKTsKKworICAgIHRlc3QtPmxvYWRVUkkoa1NlcnZlci0+Z2V0
VVJJRm9yUGF0aCgiL3JlZGlyZWN0IikuZGF0YSgpKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2Fk
RmluaXNoZWQoKTsKK30KKwogc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciog
c2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hhc2hUYWJs
ZSosIFNvdXBDbGllbnRDb250ZXh0KiwgZ3BvaW50ZXIpCiB7CiAgICAgc3RhdGljIGNvbnN0IGNo
YXIqIHJlc3BvbnNlU3RyaW5nID0gIjxodG1sPjxib2R5PlRlc3RpbmchVGVzdGluZyFUZXN0aW5n
IVRlc3RpbmchVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchIgpAQCAtMzIwLDYgKzM0OSwxMSBAQCBz
dGF0aWMgdm9pZCBzZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdl
KiBtZXNzYWdlLCBjb25zdCBjaGFyKgogCiB2b2lkIGJlZm9yZUFsbCgpCiB7CisgICAgd2Via2l0
X3dlYl9jb250ZXh0X3NldF93ZWJfZXh0ZW5zaW9uc19kaXJlY3Rvcnkod2Via2l0X3dlYl9jb250
ZXh0X2dldF9kZWZhdWx0KCksIFdFQktJVF9URVNUX1dFQl9FWFRFTlNJT05TX0RJUik7CisgICAg
YnVzID0gbmV3IFdlYktpdFRlc3RCdXMoKTsKKyAgICBpZiAoIWJ1cy0+cnVuKCkpCisgICAgICAg
IHJldHVybjsKKwogICAgIGtTZXJ2ZXIgPSBuZXcgV2ViS2l0VGVzdFNlcnZlcigpOwogICAgIGtT
ZXJ2ZXItPnJ1bihzZXJ2ZXJDYWxsYmFjayk7CiAKQEAgLTM0MCw5ICszNzQsMTIgQEAgdm9pZCBi
ZWZvcmVBbGwoKQogICAgIFZpZXdVUklUcmFja2luZ1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIs
ICJhY3RpdmUtdXJpIiwgdGVzdFdlYlZpZXdBY3RpdmVVUkkpOwogCiAgICAgVmlld0lzTG9hZGlu
Z1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJpcy1sb2FkaW5nIiwgdGVzdFdlYlZpZXdJc0xv
YWRpbmcpOworCisgICAgTG9hZFRyYWNraW5nVGVzdDo6YWRkKCJXZWJLaXRXZWJQYWdlIiwgImdl
dC11cmkiLCB0ZXN0V2ViUGFnZVVSSSk7CiB9CiAKIHZvaWQgYWZ0ZXJBbGwoKQogeworICAgIGRl
bGV0ZSBidXM7CiAgICAgZGVsZXRlIGtTZXJ2ZXI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJFeHRlbnNpb25UZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYkV4dGVuc2lvblRlc3QuY3BwCmlu
ZGV4IGFhNjYwNDJjOGM4ZDEzMjYwZmVkYjlkZDMzODA0ODVmNjA5ZDM5OWUuLjdmMzJiM2MwNGJl
MGQ5MDAyMDI5N2FhNzQ2ZDYwYWIzYTc1ZDhkMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYkV4dGVuc2lvblRlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYkV4dGVuc2lvblRlc3QuY3BwCkBA
IC0zMSw2ICszMSw5IEBAIHN0YXRpYyBjb25zdCBjaGFyIGludHJvc3BlY3Rpb25YTUxbXSA9CiAg
ICAgIiAgIDxhcmcgdHlwZT0ncycgbmFtZT0ndGl0bGUnIGRpcmVjdGlvbj0nb3V0Jy8+IgogICAg
ICIgIDwvbWV0aG9kPiIKICAgICAiICA8c2lnbmFsIG5hbWU9J0RvY3VtZW50TG9hZGVkJy8+Igor
ICAgICIgIDxzaWduYWwgbmFtZT0nVVJJQ2hhbmdlZCc+IgorICAgICIgICA8YXJnIHR5cGU9J3Mn
IG5hbWU9J3VyaScgZGlyZWN0aW9uPSdvdXQnLz4iCisgICAgIiAgPC9zaWduYWw+IgogICAgICIg
PC9pbnRlcmZhY2U+IgogICAgICI8L25vZGU+IjsKIApAQCAtNDYsOSArNDksMjIgQEAgc3RhdGlj
IHZvaWQgZG9jdW1lbnRMb2FkZWRDYWxsYmFjayhXZWJLaXRXZWJQYWdlKiwgZ3BvaW50ZXIgdXNl
ckRhdGEpCiAgICAgZ19hc3NlcnQob2spOwogfQogCitzdGF0aWMgdm9pZCB1cmlDaGFuZ2VkQ2Fs
bGJhY2soV2ViS2l0V2ViUGFnZSogd2ViUGFnZSwgR1BhcmFtU3BlYyogcHNwZWMsIGdwb2ludGVy
IHVzZXJEYXRhKQoreworICAgIGJvb2wgb2sgPSBnX2RidXNfY29ubmVjdGlvbl9lbWl0X3NpZ25h
bChHX0RCVVNfQ09OTkVDVElPTih1c2VyRGF0YSksCisgICAgICAgIDAsCisgICAgICAgICIvb3Jn
L3dlYmtpdC9ndGsvV2ViRXh0ZW5zaW9uVGVzdCIsCisgICAgICAgICJvcmcud2Via2l0Lmd0ay5X
ZWJFeHRlbnNpb25UZXN0IiwKKyAgICAgICAgIlVSSUNoYW5nZWQiLAorICAgICAgICBnX3Zhcmlh
bnRfbmV3KCIocykiLCB3ZWJraXRfd2ViX3BhZ2VfZ2V0X3VyaSh3ZWJQYWdlKSksCisgICAgICAg
IDApOworICAgIGdfYXNzZXJ0KG9rKTsKK30KKwogc3RhdGljIHZvaWQgcGFnZUNyZWF0ZWRDYWxs
YmFjayhXZWJLaXRXZWJFeHRlbnNpb24qLCBXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlLCBncG9pbnRl
ciB1c2VyRGF0YSkKIHsKICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlBhZ2UsICJkb2N1bWVudC1s
b2FkZWQiLCBHX0NBTExCQUNLKGRvY3VtZW50TG9hZGVkQ2FsbGJhY2spLCB1c2VyRGF0YSk7Cisg
ICAgZ19zaWduYWxfY29ubmVjdCh3ZWJQYWdlLCAibm90aWZ5Ojp1cmkiLCBHX0NBTExCQUNLKHVy
aUNoYW5nZWRDYWxsYmFjayksIHVzZXJEYXRhKTsKIH0KIAogc3RhdGljIHZvaWQgbWV0aG9kQ2Fs
bENhbGxiYWNrKEdEQnVzQ29ubmVjdGlvbiogY29ubmVjdGlvbiwgY29uc3QgY2hhciogc2VuZGVy
LCBjb25zdCBjaGFyKiBvYmplY3RQYXRoLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25z
dCBjaGFyKiBtZXRob2ROYW1lLCBHVmFyaWFudCogcGFyYW1ldGVycywgR0RCdXNNZXRob2RJbnZv
Y2F0aW9uKiBpbnZvY2F0aW9uLCBncG9pbnRlciB1c2VyRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9X
ZWJLaXRXZWJQYWdlLmNwcAppbmRleCAyZDViMzM1ZTNmYzI5OTI0YzQ5Yzc0ODk1ZGI5ZWEyODY1
YjEyZmZhLi40NTYzNmJhZjU4YjhhNWQxYjhlNTFjMTZhYzE0NTkyYzFjMjg5YmU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2Vi
S2l0V2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuY3BwCkBAIC0yMywxMiArMjMsMTcgQEAKICNpbmNs
dWRlICJJbW11dGFibGVEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGUuaCIK
ICNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKKyNpbmNsdWRlICJXS0J1bmRsZUZyYW1lLmgi
CiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJLaXRET01Eb2N1bWVudFByaXZh
dGUuaCIKICNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViUGFn
ZVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9E
b2N1bWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRMb2FkZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0ZyYW1lLmg+CisjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKQEAgLTM5LDE0ICs0NCw2NCBAQCBlbnVtIHsKICAgICBMQVNUX1NJ
R05BTAogfTsKIAorZW51bSB7CisgICAgUFJPUF8wLAorCisgICAgUFJPUF9VUkkKK307CisKIHN0
cnVjdCBfV2ViS2l0V2ViUGFnZVByaXZhdGUgewogICAgIFdlYlBhZ2UqIHdlYlBhZ2U7CisKKyAg
ICBDU3RyaW5nIHVyaTsKIH07CiAKIHN0YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9
IHsgMCwgfTsKIAogV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdFdlYlBhZ2UsIHdlYmtpdF93ZWJf
cGFnZSwgR19UWVBFX09CSkVDVCkKIAorc3RhdGljIENTdHJpbmcgZ2V0UHJvdmlzaW9uYWxVUkxG
b3JGcmFtZShXZWJGcmFtZSogd2ViRnJhbWUpCit7CisgICAgRG9jdW1lbnRMb2FkZXIqIGRvY3Vt
ZW50TG9hZGVyID0gd2ViRnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS0+cHJvdmlzaW9uYWxE
b2N1bWVudExvYWRlcigpOworICAgIGlmICghZG9jdW1lbnRMb2FkZXItPnVucmVhY2hhYmxlVVJM
KCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZG9jdW1lbnRMb2FkZXItPnVucmVhY2hhYmxl
VVJMKCkuc3RyaW5nKCkudXRmOCgpOworCisgICAgcmV0dXJuIGRvY3VtZW50TG9hZGVyLT51cmwo
KS5zdHJpbmcoKS51dGY4KCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlBhZ2VTZXRVUkko
V2ViS2l0V2ViUGFnZSogd2ViUGFnZSwgY29uc3QgQ1N0cmluZyYgdXJpKQoreworICAgIGlmICh3
ZWJQYWdlLT5wcml2LT51cmkgPT0gdXJpKQorICAgICAgICByZXR1cm47CisKKyAgICB3ZWJQYWdl
LT5wcml2LT51cmkgPSB1cmk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHdlYlBhZ2Up
LCAidXJpIik7Cit9CisKK3N0YXRpYyB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYqLCBj
b25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIGlmICghV0tCdW5kbGVGcmFtZUlzTWFpbkZy
YW1lKGZyYW1lKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgd2Via2l0V2ViUGFnZVNldFVSSShX
RUJLSVRfV0VCX1BBR0UoY2xpZW50SW5mbyksIGdldFByb3Zpc2lvbmFsVVJMRm9yRnJhbWUodG9J
bXBsKGZyYW1lKSkpOworfQorCitzdGF0aWMgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RG
b3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVG
cmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmKiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5m
bykKK3sKKyAgICBpZiAoIVdLQnVuZGxlRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCisgICAgICAg
IHJldHVybjsKKworICAgIHdlYmtpdFdlYlBhZ2VTZXRVUkkoV0VCS0lUX1dFQl9QQUdFKGNsaWVu
dEluZm8pLCBnZXRQcm92aXNpb25hbFVSTEZvckZyYW1lKHRvSW1wbChmcmFtZSkpKTsKK30KKwor
c3RhdGljIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKFdLQnVuZGxlUGFn
ZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS1NhbWVEb2N1bWVudE5hdmlnYXRp
b25UeXBlIHR5cGUsIFdLVHlwZVJlZiogdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8p
Cit7CisgICAgaWYgKCFXS0J1bmRsZUZyYW1lSXNNYWluRnJhbWUoZnJhbWUpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICB3ZWJraXRXZWJQYWdlU2V0VVJJKFdFQktJVF9XRUJfUEFHRShjbGllbnRJ
bmZvKSwgdG9JbXBsKGZyYW1lKS0+Y29yZUZyYW1lKCktPmRvY3VtZW50KCktPnVybCgpLnN0cmlu
ZygpLnV0ZjgoKSk7Cit9CisKIHN0YXRpYyB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZy
YW1lKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiwgV0tUeXBlUmVmKiwgY29uc3Qg
dm9pZCAqY2xpZW50SW5mbykKIHsKICAgICBnX3NpZ25hbF9lbWl0KFdFQktJVF9XRUJfUEFHRShj
bGllbnRJbmZvKSwgc2lnbmFsc1tET0NVTUVOVF9MT0FERURdLCAwKTsKQEAgLTExMSw4ICsxNjYs
MzggQEAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRGb3JSZXNvdXJjZShXS0J1bmRsZVBhZ2VSZWYg
cGFnZSwgV0tCdW5kbGVGcmFtZVJlZiwgdWludDYKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5p
bmplY3RlZEJ1bmRsZSgpLT5wb3N0TWVzc2FnZShTdHJpbmc6OmZyb21VVEY4KCJXZWJQYWdlLkRp
ZEZhaWxMb2FkRm9yUmVzb3VyY2UiKSwgSW1tdXRhYmxlRGljdGlvbmFyeTo6YWRvcHQobWVzc2Fn
ZSkuZ2V0KCkpOwogfQogCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJQYWdlR2V0UHJvcGVydHkoR09i
amVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBh
cmFtU3BlYykKK3sKKyAgICBXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlID0gV0VCS0lUX1dFQl9QQUdF
KG9iamVjdCk7CisKKyAgICBzd2l0Y2ggKHByb3BJZCkgeworICAgIGNhc2UgUFJPUF9VUkk6Cisg
ICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyh2YWx1ZSwgd2Via2l0X3dlYl9wYWdlX2dldF91cmko
d2ViUGFnZSkpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVD
VF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSWQsIHBhcmFtU3BlYyk7Cisg
ICAgfQorfQorCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3BhZ2VfY2xhc3NfaW5pdChXZWJLaXRX
ZWJQYWdlQ2xhc3MqIGtsYXNzKQogeworICAgIEdPYmplY3RDbGFzcyogZ09iamVjdENsYXNzID0g
R19PQkpFQ1RfQ0xBU1Moa2xhc3MpOworCisgICAgZ09iamVjdENsYXNzLT5nZXRfcHJvcGVydHkg
PSB3ZWJraXRXZWJQYWdlR2V0UHJvcGVydHk7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJQ
YWdlOnVyaToKKyAgICAgKgorICAgICAqIFRoZSBjdXJyZW50IGFjdGl2ZSBVUkkgb2YgdGhlICNX
ZWJLaXRXZWJQYWdlLgorICAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVy
dHkoZ09iamVjdENsYXNzLAorICAgICAgICBQUk9QX1VSSSwKKyAgICAgICAgZ19wYXJhbV9zcGVj
X3N0cmluZygidXJpIiwKKyAgICAgICAgICAgIF8oIlVSSSIpLAorICAgICAgICAgICAgXygiVGhl
IGN1cnJlbnQgYWN0aXZlIFVSSSBvZiB0aGUgd2ViIHBhZ2UiKSwKKyAgICAgICAgICAgIDAsCisg
ICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKKwogICAgIC8qKgogICAgICAqIFdl
YktpdFdlYlBhZ2U6OmRvY3VtZW50LWxvYWRlZDoKICAgICAgKiBAd2ViX3BhZ2U6IHRoZSAjV2Vi
S2l0V2ViUGFnZSBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKQEAgLTE0MCwxNCArMjI1
LDE0IEBAIFdlYktpdFdlYlBhZ2UqIHdlYmtpdFdlYlBhZ2VDcmVhdGUoV2ViUGFnZSogd2ViUGFn
ZSkKICAgICBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQgbG9hZGVyQ2xpZW50ID0gewogICAgICAg
ICBrV0tCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50Q3VycmVudFZlcnNpb24sCiAgICAgICAg
IHBhZ2UsCi0gICAgICAgIDAsIC8vIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUKLSAg
ICAgICAgMCwgLy8gZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUKKyAgICAgICAgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSwKKyAgICAgICAg
ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUsCiAgICAg
ICAgIDAsIC8vIGRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZQogICAgICAg
ICAwLCAvLyBkaWRDb21taXRMb2FkRm9yRnJhbWUKICAgICAgICAgZGlkRmluaXNoRG9jdW1lbnRM
b2FkRm9yRnJhbWUsCiAgICAgICAgIDAsIC8vIGRpZEZpbmlzaExvYWRGb3JGcmFtZSwKICAgICAg
ICAgMCwgLy8gZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZQotICAgICAgICAwLCAvLyBkaWRT
YW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUKKyAgICAgICAgZGlkU2FtZURvY3VtZW50TmF2
aWdhdGlvbkZvckZyYW1lLAogICAgICAgICAwLCAvLyBkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZQog
ICAgICAgICAwLCAvLyBkaWRGaXJzdExheW91dEZvckZyYW1lCiAgICAgICAgIDAsIC8vIGRpZEZp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lCkBAIC0yMTAsMyArMjk1LDIyIEBAIFdl
YktpdERPTURvY3VtZW50KiB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2RvbV9kb2N1bWVudChXZWJLaXRX
ZWJQYWdlKiB3ZWJQYWdlKQogCiAgICAgcmV0dXJuIGtpdChjb3JlRnJhbWUtPmRvY3VtZW50KCkp
OwogfQorCisvKioKKyAqIHdlYmtpdF93ZWJfcGFnZV9nZXRfdXJpOgorICogQHdlYl9wYWdlOiBh
ICNXZWJLaXRXZWJQYWdlCisgKgorICogUmV0dXJucyB0aGUgY3VycmVudCBhY3RpdmUgVVJJIG9m
IEB3ZWJfcGFnZS4KKyAqCisgKiBZb3UgY2FuIG1vbml0b3IgdGhlIGFjdGl2ZSBVUkkgYnkgY29u
bmVjdGluZyB0byB0aGUgbm90aWZ5Ojp1cmkKKyAqIHNpZ25hbCBvZiBAd2ViX3BhZ2UuCisgKgor
ICogUmV0dXJuczogdGhlIGN1cnJlbnQgYWN0aXZlIFVSSSBvZiBAd2ViX3ZpZXcgb3IgJU5VTEwg
aWYgbm90aGluZyBoYXMgYmVlbgorICogICAgbG9hZGVkIHlldC4KKyAqLworY29uc3QgZ2NoYXIq
IHdlYmtpdF93ZWJfcGFnZV9nZXRfdXJpKFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UpCit7CisgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9QQUdFKHdlYlBhZ2UpLCAwKTsKKwor
ICAgIHJldHVybiB3ZWJQYWdlLT5wcml2LT51cmkuZGF0YSgpOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBh
Z2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9X
ZWJLaXRXZWJQYWdlLmgKaW5kZXggZDhmNjIzNjk3YTk0NzgxMzc5YWIyOTkwYjZlNGViNDVkZDhh
NjQyYi4uZWNjZTBhZDk1N2UwMjY5NWE1YmM1ZTk0NzFiNTc4YzhlN2NmYWI0YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktp
dFdlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5oCkBAIC01Nyw2ICs1Nyw5IEBAIHdlYmtpdF93ZWJfcGFn
ZV9nZXRfdHlwZSAgICAgICAgICh2b2lkKTsKIFdFQktJVF9BUEkgV2ViS2l0RE9NRG9jdW1lbnQg
Kgogd2Via2l0X3dlYl9wYWdlX2dldF9kb21fZG9jdW1lbnQgKFdlYktpdFdlYlBhZ2UgKndlYl9w
YWdlKTsKIAorV0VCS0lUX0FQSSBjb25zdCBnY2hhciAqCit3ZWJraXRfd2ViX3BhZ2VfZ2V0X3Vy
aSAoV2ViS2l0V2ViUGFnZSAqd2ViX3BhZ2UpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191209</attachid>
            <date>2013-03-04 05:40:13 -0800</date>
            <delta_ts>2013-03-04 11:56:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111288-20130304143620.patch</filename>
            <type>text/plain</type>
            <size>14710</size>
            <attacher name="Manuel Rego Casasnovas">rego</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjM2MzNiNjNhNTRjMjUw
NzhhZGQzNTExZWViMDNjNTY4Y2MwMDAwMS4uNmM5YWU5MDdlNjA3MGFiODE4NjhkYThkMjI0MmJi
NzllZDFmYjAxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEzLTAzLTA0ICBNYW51
ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dL
Ml0gQWRkIFdlYktpdFdlYlBhZ2U6OndlYmtpdF93ZWJfcGFnZV9nZXRfdXJpIHRvIFdlYktpdDIg
R1RLKyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExMTI4OAorCisgICAgICAgIEFkZCBuZXcgcHJvcGVydHkgVVJJIHRvIFdlYktpdFdlYlBhZ2Ug
cHJvdmlkaW5nIGEgbWV0aG9kCisgICAgICAgIHdlYmtpdF93ZWJfcGFnZV9nZXRfdXJpIHRvIGdl
dCBpdCBhbmQgdGhlIHNpZ25hbCAibm90aWZ5Ojp1cmkiIHRvCisgICAgICAgIG1vbml0b3IgY2hh
bmdlcyBpbiB0aGUgVVJJLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLXNlY3Rpb25zLnR4dDogSW5jbHVkZSBuZXcgbWV0aG9kIGluCisgICAgICAgIEdUSysg
ZG9jLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RMb2FkZXJDbGllbnQu
Y3BwOgorICAgICAgICAodGVzdFdlYlBhZ2VVUkkpOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAg
ICAgICAgKGFmdGVyQWxsKTogQWRkIHRlc3QgdG8gY2hlY2sgdGhhdCBXZWJLaXRXZWJQYWdlIFVS
SSBtYXRjaGVzIHdpdGgKKyAgICAgICAgV2ViS2l0V2ViVmlldyB2YWx1ZS4gVGhlIHRlc3RzIGlz
IGxpc3RlbmluZyBmb3IgY2hhbmdlcyBpbiBXZWJLaXRXZWJQYWdlCisgICAgICAgIFVSSSB2aWEg
RC1CdXMgYW5kIGNoZWNrcyB0aGF0IHZhbHVlIGlzIHRoZSBzYW1lIHRoYW4gV2ViS2l0V2ViVmll
dyBVUkkuCisgICAgICAgIEl0IGFsc28gY2hlY2tzIHRoYXQgdGhlIG9yZGVyIG9mIHRoZSBVUklz
IGluIGEgcmVkaXJlY3Rpb24gaXMgcmlnaHQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
dGVzdHMvV2ViRXh0ZW5zaW9uVGVzdC5jcHA6CisgICAgICAgICh1cmlDaGFuZ2VkQ2FsbGJhY2sp
OgorICAgICAgICAocGFnZUNyZWF0ZWRDYWxsYmFjayk6IEFkZCBuZXcgRC1CdXMgc2lnbmFsICJV
UklDaGFuZ2VkIiBjb25uZWN0ZWQgdG8KKyAgICAgICAgIm5vdGlmeTo6dXJpIiBzaWduYWwgb2Yg
V2ViS2l0V2ViUGFnZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvV2ViS2l0V2ViUGFnZS5jcHA6CisgICAgICAgIChfV2ViS2l0V2ViUGFnZVByaXZhdGUpOiBB
ZGQgbmV3IFVSSSBhdHRyaWJ1dGUuCisgICAgICAgICh3ZWJraXRXZWJQYWdlU2V0VVJJKTogTWV0
aG9kIHRvIHNldCB0aGUgVVJJIGFuZCBlbWl0IHRoZSAibm90aWZ5OnVyaSIKKyAgICAgICAgc2ln
bmFsIGlmIGl0IGhhcyBjaGFuZ2VkLgorICAgICAgICAoZGlkU3RhcnRQcm92aXNpb25hbExvYWRG
b3JGcmFtZSk6IEF0IHRoaXMgcG9pbnQgaXQgdXNlIHRoZSB1bnJlYWNoYWJsZQorICAgICAgICBV
UkwgZnJvbSBwcm92aXNpb25hbCBkb2N1bWVudCBsb2FkZXIgaWYgYW55LiBPdGhlcndpc2UsIGl0
IHVzZXMgdGhlIFVSTAorICAgICAgICBmcm9tIHByb3Zpc2lvbmFsIGRvY3VtZW50IGxvYWRlci4K
KyAgICAgICAgKGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lKTogSW4gdGhlIGNhc2Ugb2YKKyAgICAgICAgcmVkaXJlY3Rpb25zIGl0IHdvcmtzIGxpa2Ug
Zm9yIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgZ2V0dGluZworICAgICAgICB0aGUg
dW5yZWFjaGFibGUgVVJMIGlmIGFueS4KKyAgICAgICAgKGRpZFNhbWVEb2N1bWVudE5hdmlnYXRp
b25Gb3JGcmFtZSk6IEluIHRoaXMgY2FzZSBpdCBnZXRzIHRoZSBVUkwgZnJvbQorICAgICAgICB0
aGUgZG9jdW1lbnQgbG9hZGVyLgorICAgICAgICAod2Via2l0V2ViUGFnZUdldFByb3BlcnR5KTog
QWRkIGNvZGUgcmVsYXRlZCB0byBVUkkgcHJvcGVydHkuCisgICAgICAgICh3ZWJraXRfd2ViX3Bh
Z2VfY2xhc3NfaW5pdCk6IEFkZCBiaXRzIHJlbGF0ZWQgdG8gVVJJIHByb3BlcnR5LgorICAgICAg
ICAod2Via2l0V2ViUGFnZUNyZWF0ZSk6IEltcGxlbWVudCBjYWxsYmFja3MgdG8gbW9uaXRvciBV
UkkgY2hhbmdlcy4KKyAgICAgICAgKHdlYmtpdF93ZWJfcGFnZV9nZXRfdXJpKTogUmV0dXJuIFVS
SSBhdHRyaWJ1dGUuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L1dlYktpdFdlYlBhZ2UuaDogQWRkIG5ldyBtZXRob2QKKyAgICAgICAgaGVhZGVyLgorCiAyMDEz
LTAyLTIzICBNYW51ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHVEtdW1dLMl0gQWRkIGRvY3VtZW50LWxvYWRlZCBzaWduYWwgdG8gV2ViS2l0V2ViUGFn
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKaW5kZXggZjZlOGE4NDc3N2JlMjdiNDViZWRlMzAz
NjViMjQ0MDlmYjJhMjljYS4uMGRlZTI1ZDNkOWMwYTkwMjI2MTJkYzFhMmViYjJjYzgxOWVjMTVl
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CkBAIC05NTQsNiArOTU0LDcgQEAgd2Via2l0
X3dlYl9leHRlbnNpb25fZ2V0X3R5cGUKIDxGSUxFPldlYktpdFdlYlBhZ2U8L0ZJTEU+CiBXZWJL
aXRXZWJQYWdlCiB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2RvbV9kb2N1bWVudAord2Via2l0X3dlYl9w
YWdlX2dldF91cmkKIAogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CiBXZWJLaXRXZWJQYWdlQ2xhc3MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RM
b2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMv
VGVzdExvYWRlckNsaWVudC5jcHAKaW5kZXggOGZjZjMzMDA5MjcyNzRkZGY3Mzg4Y2ExYzRhNzBh
MjIxMTU5MjlhZC4uOTU5ODc4ZWU0YzI0N2RjOGJmOTE2OGUxYzc4Yzc5ZTk3ZDY1NDc0NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdExvYWRl
ckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMv
VGVzdExvYWRlckNsaWVudC5jcHAKQEAgLTIyLDExICsyMiwxNCBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogCiAjaW5jbHVkZSAiTG9hZFRyYWNraW5nVGVzdC5oIgorI2luY2x1ZGUgIldlYktpdFRl
c3RCdXMuaCIKICNpbmNsdWRlICJXZWJLaXRUZXN0U2VydmVyLmgiCisjaW5jbHVkZSAiV2ViVmll
d1Rlc3QuaCIKICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCitzdGF0aWMgV2ViS2l0VGVzdEJ1cyog
YnVzOwogc3RhdGljIFdlYktpdFRlc3RTZXJ2ZXIqIGtTZXJ2ZXI7CiAKIHN0YXRpYyB2b2lkIHRl
c3RMb2FkaW5nU3RhdHVzKExvYWRUcmFja2luZ1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIgZGF0
YSkKQEAgLTI4Miw2ICsyODUsNTAgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdJc0xvYWRpbmco
Vmlld0lzTG9hZGluZ1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+d2FpdFVu
dGlsTG9hZEZpbmlzaGVkKCk7CiB9CiAKK2NsYXNzIFdlYlBhZ2VVUklUZXN0OiBwdWJsaWMgV2Vi
Vmlld1Rlc3QgeworcHVibGljOgorICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoV2ViUGFnZVVS
SVRlc3QpOworCisgICAgc3RhdGljIHZvaWQgdXJpQ2hhbmdlZENhbGxiYWNrKEdEQnVzQ29ubmVj
dGlvbiosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIq
LCBHVmFyaWFudCogcmVzdWx0LCBXZWJQYWdlVVJJVGVzdCogdGVzdCkKKyAgICB7CisgICAgICAg
IGNvbnN0IGNoYXIqIHVyaTsKKyAgICAgICAgZ192YXJpYW50X2dldChyZXN1bHQsICIoJnMpIiwg
JnVyaSk7CisgICAgICAgIGdfYXNzZXJ0X2NtcHN0cih1cmksID09LCB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3VyaSh0ZXN0LT5tX3dlYlZpZXcpKTsKKyAgICAgICAgdGVzdC0+bV9VUklzLmFwcGVuZCh1
cmkpOworICAgIH0KKworICAgIFdlYlBhZ2VVUklUZXN0KCkKKyAgICB7CisgICAgICAgIEdSZWZQ
dHI8R0RCdXNQcm94eT4gcHJveHkgPSBhZG9wdEdSZWYoYnVzLT5jcmVhdGVQcm94eSgib3JnLndl
YmtpdC5ndGsuV2ViRXh0ZW5zaW9uVGVzdCIsCisgICAgICAgICAgICAiL29yZy93ZWJraXQvZ3Rr
L1dlYkV4dGVuc2lvblRlc3QiLCAib3JnLndlYmtpdC5ndGsuV2ViRXh0ZW5zaW9uVGVzdCIsIG1f
bWFpbkxvb3ApKTsKKyAgICAgICAgZ3VpbnQgaWQgPSBnX2RidXNfY29ubmVjdGlvbl9zaWduYWxf
c3Vic2NyaWJlKAorICAgICAgICAgICAgZ19kYnVzX3Byb3h5X2dldF9jb25uZWN0aW9uKHByb3h5
LmdldCgpKSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICAib3JnLndlYmtpdC5ndGsuV2Vi
RXh0ZW5zaW9uVGVzdCIsCisgICAgICAgICAgICAiVVJJQ2hhbmdlZCIsCisgICAgICAgICAgICAi
L29yZy93ZWJraXQvZ3RrL1dlYkV4dGVuc2lvblRlc3QiLAorICAgICAgICAgICAgMCwKKyAgICAg
ICAgICAgIEdfREJVU19TSUdOQUxfRkxBR1NfTk9ORSwKKyAgICAgICAgICAgIHJlaW50ZXJwcmV0
X2Nhc3Q8R0RCdXNTaWduYWxDYWxsYmFjaz4odXJpQ2hhbmdlZENhbGxiYWNrKSwKKyAgICAgICAg
ICAgIHRoaXMsCisgICAgICAgICAgICAwKTsKKyAgICAgICAgZ19hc3NlcnQoaWQpOworICAgIH0K
KworICAgIFZlY3RvcjxDU3RyaW5nPiBtX1VSSXM7CisKK307CisKK3N0YXRpYyB2b2lkIHRlc3RX
ZWJQYWdlVVJJKFdlYlBhZ2VVUklUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIHRl
c3QtPmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3JlZGlyZWN0IikuZGF0YSgpKTsK
KyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKworICAgIGdfYXNzZXJ0X2NtcGlu
dCh0ZXN0LT5tX1VSSXMuc2l6ZSgpLCA9PSwgMik7CisgICAgZ19hc3NlcnRfY21wc3RyKHRlc3Qt
Pm1fVVJJc1swXS5kYXRhKCksID09LCBrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvcmVkaXJlY3Qi
KS5kYXRhKCkpOworICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXN0LT5tX1VSSXNbMV0uZGF0YSgpLCA9
PSwga1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL25vcm1hbCIpLmRhdGEoKSk7Cit9CisKIHN0YXRp
YyB2b2lkIHNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1l
c3NhZ2UsIGNvbnN0IGNoYXIqIHBhdGgsIEdIYXNoVGFibGUqLCBTb3VwQ2xpZW50Q29udGV4dCos
IGdwb2ludGVyKQogewogICAgIHN0YXRpYyBjb25zdCBjaGFyKiByZXNwb25zZVN0cmluZyA9ICI8
aHRtbD48Ym9keT5UZXN0aW5nIVRlc3RpbmchVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGlu
ZyFUZXN0aW5nISIKQEAgLTMyMCw2ICszNjcsMTEgQEAgc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJh
Y2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhcioK
IAogdm9pZCBiZWZvcmVBbGwoKQogeworICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfd2ViX2V4
dGVuc2lvbnNfZGlyZWN0b3J5KHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgpLCBXRUJL
SVRfVEVTVF9XRUJfRVhURU5TSU9OU19ESVIpOworICAgIGJ1cyA9IG5ldyBXZWJLaXRUZXN0QnVz
KCk7CisgICAgaWYgKCFidXMtPnJ1bigpKQorICAgICAgICByZXR1cm47CisKICAgICBrU2VydmVy
ID0gbmV3IFdlYktpdFRlc3RTZXJ2ZXIoKTsKICAgICBrU2VydmVyLT5ydW4oc2VydmVyQ2FsbGJh
Y2spOwogCkBAIC0zNDAsOSArMzkyLDExIEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBWaWV3VVJJ
VHJhY2tpbmdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiYWN0aXZlLXVyaSIsIHRlc3RXZWJW
aWV3QWN0aXZlVVJJKTsKIAogICAgIFZpZXdJc0xvYWRpbmdUZXN0OjphZGQoIldlYktpdFdlYlZp
ZXciLCAiaXMtbG9hZGluZyIsIHRlc3RXZWJWaWV3SXNMb2FkaW5nKTsKKyAgICBXZWJQYWdlVVJJ
VGVzdDo6YWRkKCJXZWJLaXRXZWJQYWdlIiwgImdldC11cmkiLCB0ZXN0V2ViUGFnZVVSSSk7CiB9
CiAKIHZvaWQgYWZ0ZXJBbGwoKQogeworICAgIGRlbGV0ZSBidXM7CiAgICAgZGVsZXRlIGtTZXJ2
ZXI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0
cy9XZWJFeHRlbnNpb25UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L3Rlc3RzL1dlYkV4dGVuc2lvblRlc3QuY3BwCmluZGV4IGFhNjYwNDJjOGM4ZDEzMjYwZmVkYjlk
ZDMzODA0ODVmNjA5ZDM5OWUuLmZhODc0ZmUzZjA1OWM5YzNlZTM1MzRmNjUyNTA1YzNjMGVlMThl
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dl
YkV4dGVuc2lvblRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L3Rlc3RzL1dlYkV4dGVuc2lvblRlc3QuY3BwCkBAIC0zMSw2ICszMSw5IEBAIHN0YXRpYyBjb25z
dCBjaGFyIGludHJvc3BlY3Rpb25YTUxbXSA9CiAgICAgIiAgIDxhcmcgdHlwZT0ncycgbmFtZT0n
dGl0bGUnIGRpcmVjdGlvbj0nb3V0Jy8+IgogICAgICIgIDwvbWV0aG9kPiIKICAgICAiICA8c2ln
bmFsIG5hbWU9J0RvY3VtZW50TG9hZGVkJy8+IgorICAgICIgIDxzaWduYWwgbmFtZT0nVVJJQ2hh
bmdlZCc+IgorICAgICIgICA8YXJnIHR5cGU9J3MnIG5hbWU9J3VyaScgZGlyZWN0aW9uPSdvdXQn
Lz4iCisgICAgIiAgPC9zaWduYWw+IgogICAgICIgPC9pbnRlcmZhY2U+IgogICAgICI8L25vZGU+
IjsKIApAQCAtNDYsOSArNDksMjMgQEAgc3RhdGljIHZvaWQgZG9jdW1lbnRMb2FkZWRDYWxsYmFj
ayhXZWJLaXRXZWJQYWdlKiwgZ3BvaW50ZXIgdXNlckRhdGEpCiAgICAgZ19hc3NlcnQob2spOwog
fQogCitzdGF0aWMgdm9pZCB1cmlDaGFuZ2VkQ2FsbGJhY2soV2ViS2l0V2ViUGFnZSogd2ViUGFn
ZSwgR1BhcmFtU3BlYyogcHNwZWMsIGdwb2ludGVyIHVzZXJEYXRhKQoreworICAgIGJvb2wgb2sg
PSBnX2RidXNfY29ubmVjdGlvbl9lbWl0X3NpZ25hbCgKKyAgICAgICAgR19EQlVTX0NPTk5FQ1RJ
T04odXNlckRhdGEpLAorICAgICAgICAwLAorICAgICAgICAiL29yZy93ZWJraXQvZ3RrL1dlYkV4
dGVuc2lvblRlc3QiLAorICAgICAgICAib3JnLndlYmtpdC5ndGsuV2ViRXh0ZW5zaW9uVGVzdCIs
CisgICAgICAgICJVUklDaGFuZ2VkIiwKKyAgICAgICAgZ192YXJpYW50X25ldygiKHMpIiwgd2Vi
a2l0X3dlYl9wYWdlX2dldF91cmkod2ViUGFnZSkpLAorICAgICAgICAwKTsKKyAgICBnX2Fzc2Vy
dChvayk7Cit9CisKIHN0YXRpYyB2b2lkIHBhZ2VDcmVhdGVkQ2FsbGJhY2soV2ViS2l0V2ViRXh0
ZW5zaW9uKiwgV2ViS2l0V2ViUGFnZSogd2ViUGFnZSwgZ3BvaW50ZXIgdXNlckRhdGEpCiB7CiAg
ICAgZ19zaWduYWxfY29ubmVjdCh3ZWJQYWdlLCAiZG9jdW1lbnQtbG9hZGVkIiwgR19DQUxMQkFD
Syhkb2N1bWVudExvYWRlZENhbGxiYWNrKSwgdXNlckRhdGEpOworICAgIGdfc2lnbmFsX2Nvbm5l
Y3Qod2ViUGFnZSwgIm5vdGlmeTo6dXJpIiwgR19DQUxMQkFDSyh1cmlDaGFuZ2VkQ2FsbGJhY2sp
LCB1c2VyRGF0YSk7CiB9CiAKIHN0YXRpYyB2b2lkIG1ldGhvZENhbGxDYWxsYmFjayhHREJ1c0Nv
bm5lY3Rpb24qIGNvbm5lY3Rpb24sIGNvbnN0IGNoYXIqIHNlbmRlciwgY29uc3QgY2hhciogb2Jq
ZWN0UGF0aCwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogbWV0aG9kTmFt
ZSwgR1ZhcmlhbnQqIHBhcmFtZXRlcnMsIEdEQnVzTWV0aG9kSW52b2NhdGlvbiogaW52b2NhdGlv
biwgZ3BvaW50ZXIgdXNlckRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5jcHAK
aW5kZXggMmQ1YjMzNWUzZmMyOTkyNGM0OWM3NDg5NWRiOWVhMjg2NWIxMmZmYS4uZTEwMDRlNmFl
MGYwM2Q1Yjk4YTY2ZTE1ZTNkYmI0MzYxMWY0Zjk5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJL
aXRXZWJQYWdlLmNwcApAQCAtMjMsMTIgKzIzLDE3IEBACiAjaW5jbHVkZSAiSW1tdXRhYmxlRGlj
dGlvbmFyeS5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCiAjaW5jbHVkZSAiV0tCdW5k
bGVBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tCdW5kbGVGcmFtZS5oIgogI2luY2x1ZGUgIldlYkZy
YW1lLmgiCiAjaW5jbHVkZSAiV2ViS2l0RE9NRG9jdW1lbnRQcml2YXRlLmgiCiAjaW5jbHVkZSAi
V2ViS2l0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlBhZ2VQcml2YXRlLmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0RvY3VtZW50TG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5o
PgorI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CkBAIC0zOSwxNCArNDQsNjQgQEAgZW51bSB7CiAgICAgTEFTVF9TSUdOQUwKIH07CiAKK2VudW0g
eworICAgIFBST1BfMCwKKworICAgIFBST1BfVVJJCit9OworCiBzdHJ1Y3QgX1dlYktpdFdlYlBh
Z2VQcml2YXRlIHsKICAgICBXZWJQYWdlKiB3ZWJQYWdlOworCisgICAgQ1N0cmluZyB1cmk7CiB9
OwogCiBzdGF0aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAsIH07CiAKIFdFQktJ
VF9ERUZJTkVfVFlQRShXZWJLaXRXZWJQYWdlLCB3ZWJraXRfd2ViX3BhZ2UsIEdfVFlQRV9PQkpF
Q1QpCiAKK3N0YXRpYyBDU3RyaW5nIGdldFByb3Zpc2lvbmFsVVJMRm9yRnJhbWUoV2ViRnJhbWUq
IHdlYkZyYW1lKQoreworICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IHdlYkZy
YW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCktPnByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKTsK
KyAgICBpZiAoIWRvY3VtZW50TG9hZGVyLT51bnJlYWNoYWJsZVVSTCgpLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIGRvY3VtZW50TG9hZGVyLT51bnJlYWNoYWJsZVVSTCgpLnN0cmluZygpLnV0
ZjgoKTsKKworICAgIHJldHVybiBkb2N1bWVudExvYWRlci0+dXJsKCkuc3RyaW5nKCkudXRmOCgp
OworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJQYWdlU2V0VVJJKFdlYktpdFdlYlBhZ2UqIHdl
YlBhZ2UsIGNvbnN0IENTdHJpbmcmIHVyaSkKK3sKKyAgICBpZiAod2ViUGFnZS0+cHJpdi0+dXJp
ID09IHVyaSkKKyAgICAgICAgcmV0dXJuOworCisgICAgd2ViUGFnZS0+cHJpdi0+dXJpID0gdXJp
OworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVCh3ZWJQYWdlKSwgInVyaSIpOworfQorCitz
dGF0aWMgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdLQnVuZGxlUGFnZVJl
ZiwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmKiwgY29uc3Qgdm9pZCAqY2xpZW50
SW5mbykKK3sKKyAgICBpZiAoIVdLQnVuZGxlRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCisgICAg
ICAgIHJldHVybjsKKworICAgIHdlYmtpdFdlYlBhZ2VTZXRVUkkoV0VCS0lUX1dFQl9QQUdFKGNs
aWVudEluZm8pLCBnZXRQcm92aXNpb25hbFVSTEZvckZyYW1lKHRvSW1wbChmcmFtZSkpKTsKK30K
Kworc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdL
VHlwZVJlZiogdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCit7CisgICAgaWYgKCFX
S0J1bmRsZUZyYW1lSXNNYWluRnJhbWUoZnJhbWUpKQorICAgICAgICByZXR1cm47CisKKyAgICB3
ZWJraXRXZWJQYWdlU2V0VVJJKFdFQktJVF9XRUJfUEFHRShjbGllbnRJbmZvKSwgZ2V0UHJvdmlz
aW9uYWxVUkxGb3JGcmFtZSh0b0ltcGwoZnJhbWUpKSk7Cit9CisKK3N0YXRpYyB2b2lkIGRpZFNh
bWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5k
bGVGcmFtZVJlZiBmcmFtZSwgV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSB0eXBlLCBXS1R5
cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIGlmICghV0tC
dW5kbGVGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgd2Vi
a2l0V2ViUGFnZVNldFVSSShXRUJLSVRfV0VCX1BBR0UoY2xpZW50SW5mbyksIHRvSW1wbChmcmFt
ZSktPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKS51dGY4KCkpOworfQor
CiBzdGF0aWMgdm9pZCBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShXS0J1bmRsZVBhZ2VS
ZWYsIFdLQnVuZGxlRnJhbWVSZWYsIFdLVHlwZVJlZiosIGNvbnN0IHZvaWQgKmNsaWVudEluZm8p
CiB7CiAgICAgZ19zaWduYWxfZW1pdChXRUJLSVRfV0VCX1BBR0UoY2xpZW50SW5mbyksIHNpZ25h
bHNbRE9DVU1FTlRfTE9BREVEXSwgMCk7CkBAIC0xMTEsOCArMTY2LDQwIEBAIHN0YXRpYyB2b2lk
IGRpZEZhaWxMb2FkRm9yUmVzb3VyY2UoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJh
bWVSZWYsIHVpbnQ2CiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuaW5qZWN0ZWRCdW5kbGUoKS0+
cG9zdE1lc3NhZ2UoU3RyaW5nOjpmcm9tVVRGOCgiV2ViUGFnZS5EaWRGYWlsTG9hZEZvclJlc291
cmNlIiksIEltbXV0YWJsZURpY3Rpb25hcnk6OmFkb3B0KG1lc3NhZ2UpLmdldCgpKTsKIH0KIAor
c3RhdGljIHZvaWQgd2Via2l0V2ViUGFnZUdldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3Vp
bnQgcHJvcElkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCit7CisgICAg
V2ViS2l0V2ViUGFnZSogd2ViUGFnZSA9IFdFQktJVF9XRUJfUEFHRShvYmplY3QpOworCisgICAg
c3dpdGNoIChwcm9wSWQpIHsKKyAgICBjYXNlIFBST1BfVVJJOgorICAgICAgICBnX3ZhbHVlX3Nl
dF9zdHJpbmcodmFsdWUsIHdlYmtpdF93ZWJfcGFnZV9nZXRfdXJpKHdlYlBhZ2UpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BS
T1BFUlRZX0lEKG9iamVjdCwgcHJvcElkLCBwYXJhbVNwZWMpOworICAgIH0KK30KKwogc3RhdGlj
IHZvaWQgd2Via2l0X3dlYl9wYWdlX2NsYXNzX2luaXQoV2ViS2l0V2ViUGFnZUNsYXNzKiBrbGFz
cykKIHsKKyAgICBHT2JqZWN0Q2xhc3MqIGdPYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGts
YXNzKTsKKworICAgIGdPYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0V2ViUGFnZUdl
dFByb3BlcnR5OworCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViUGFnZTp1cmk6CisgICAgICoK
KyAgICAgKiBUaGUgY3VycmVudCBhY3RpdmUgVVJJIG9mIHRoZSAjV2ViS2l0V2ViUGFnZS4KKyAg
ICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAorICAgICAgICBnT2Jq
ZWN0Q2xhc3MsCisgICAgICAgIFBST1BfVVJJLAorICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5n
KAorICAgICAgICAgICAgInVyaSIsCisgICAgICAgICAgICBfKCJVUkkiKSwKKyAgICAgICAgICAg
IF8oIlRoZSBjdXJyZW50IGFjdGl2ZSBVUkkgb2YgdGhlIHdlYiBwYWdlIiksCisgICAgICAgICAg
ICAwLAorICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7CisKICAgICAvKioKICAg
ICAgKiBXZWJLaXRXZWJQYWdlOjpkb2N1bWVudC1sb2FkZWQ6CiAgICAgICogQHdlYl9wYWdlOiB0
aGUgI1dlYktpdFdlYlBhZ2Ugb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCkBAIC0xNDAs
MTQgKzIyNywxNCBAQCBXZWJLaXRXZWJQYWdlKiB3ZWJraXRXZWJQYWdlQ3JlYXRlKFdlYlBhZ2Uq
IHdlYlBhZ2UpCiAgICAgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50IGxvYWRlckNsaWVudCA9IHsK
ICAgICAgICAga1dLQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudEN1cnJlbnRWZXJzaW9uLAog
ICAgICAgICBwYWdlLAotICAgICAgICAwLCAvLyBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lCi0gICAgICAgIDAsIC8vIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lCisgICAgICAgIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUsCisg
ICAgICAgIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
LAogICAgICAgICAwLCAvLyBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUK
ICAgICAgICAgMCwgLy8gZGlkQ29tbWl0TG9hZEZvckZyYW1lCiAgICAgICAgIGRpZEZpbmlzaERv
Y3VtZW50TG9hZEZvckZyYW1lLAogICAgICAgICAwLCAvLyBkaWRGaW5pc2hMb2FkRm9yRnJhbWUs
CiAgICAgICAgIDAsIC8vIGRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUKLSAgICAgICAgMCwg
Ly8gZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lCisgICAgICAgIGRpZFNhbWVEb2N1
bWVudE5hdmlnYXRpb25Gb3JGcmFtZSwKICAgICAgICAgMCwgLy8gZGlkUmVjZWl2ZVRpdGxlRm9y
RnJhbWUKICAgICAgICAgMCwgLy8gZGlkRmlyc3RMYXlvdXRGb3JGcmFtZQogICAgICAgICAwLCAv
LyBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZQpAQCAtMjEwLDMgKzI5Nywy
MiBAQCBXZWJLaXRET01Eb2N1bWVudCogd2Via2l0X3dlYl9wYWdlX2dldF9kb21fZG9jdW1lbnQo
V2ViS2l0V2ViUGFnZSogd2ViUGFnZSkKIAogICAgIHJldHVybiBraXQoY29yZUZyYW1lLT5kb2N1
bWVudCgpKTsKIH0KKworLyoqCisgKiB3ZWJraXRfd2ViX3BhZ2VfZ2V0X3VyaToKKyAqIEB3ZWJf
cGFnZTogYSAjV2ViS2l0V2ViUGFnZQorICoKKyAqIFJldHVybnMgdGhlIGN1cnJlbnQgYWN0aXZl
IFVSSSBvZiBAd2ViX3BhZ2UuCisgKgorICogWW91IGNhbiBtb25pdG9yIHRoZSBhY3RpdmUgVVJJ
IGJ5IGNvbm5lY3RpbmcgdG8gdGhlIG5vdGlmeTo6dXJpCisgKiBzaWduYWwgb2YgQHdlYl9wYWdl
LgorICoKKyAqIFJldHVybnM6IHRoZSBjdXJyZW50IGFjdGl2ZSBVUkkgb2YgQHdlYl92aWV3IG9y
ICVOVUxMIGlmIG5vdGhpbmcgaGFzIGJlZW4KKyAqICAgIGxvYWRlZCB5ZXQuCisgKi8KK2NvbnN0
IGdjaGFyKiB3ZWJraXRfd2ViX3BhZ2VfZ2V0X3VyaShXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlKQor
eworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfUEFHRSh3ZWJQYWdlKSwg
MCk7CisKKyAgICByZXR1cm4gd2ViUGFnZS0+cHJpdi0+dXJpLmRhdGEoKTsKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJL
aXRXZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvV2ViS2l0V2ViUGFnZS5oCmluZGV4IGQ4ZjYyMzY5N2E5NDc4MTM3OWFiMjk5MGI2ZTRl
YjQ1ZGQ4YTY0MmIuLmVjY2UwYWQ5NTdlMDI2OTVhNWJjNWU5NDcxYjU3OGM4ZTdjZmFiNGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9XZWJLaXRXZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuaApAQCAtNTcsNiArNTcsOSBAQCB3ZWJraXRf
d2ViX3BhZ2VfZ2V0X3R5cGUgICAgICAgICAodm9pZCk7CiBXRUJLSVRfQVBJIFdlYktpdERPTURv
Y3VtZW50ICoKIHdlYmtpdF93ZWJfcGFnZV9nZXRfZG9tX2RvY3VtZW50IChXZWJLaXRXZWJQYWdl
ICp3ZWJfcGFnZSk7CiAKK1dFQktJVF9BUEkgY29uc3QgZ2NoYXIgKgord2Via2l0X3dlYl9wYWdl
X2dldF91cmkgKFdlYktpdFdlYlBhZ2UgKndlYl9wYWdlKTsKKwogR19FTkRfREVDTFMKIAogI2Vu
ZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191281</attachid>
            <date>2013-03-04 11:56:30 -0800</date>
            <delta_ts>2013-03-06 00:10:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111288-20130304205237.patch</filename>
            <type>text/plain</type>
            <size>15191</size>
            <attacher name="Manuel Rego Casasnovas">rego</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0NjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTFlNzM4ODM2ZGNhNTQ0
NGI1NWYxYjI3NGRhMmE1OWMzZjkwMmM3Ni4uNjZjMjU4ZWI4M2NhNjZkYzY5NWZmZWI2YzEwNzM3
ZTE4NTc3ZTY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEzLTAzLTA0ICBNYW51
ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dL
Ml0gQWRkIFdlYktpdFdlYlBhZ2U6OndlYmtpdF93ZWJfcGFnZV9nZXRfdXJpIHRvIFdlYktpdDIg
R1RLKyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExMTI4OAorCisgICAgICAgIEFkZCBuZXcgcHJvcGVydHkgVVJJIHRvIFdlYktpdFdlYlBhZ2Ug
cHJvdmlkaW5nIGEgbWV0aG9kCisgICAgICAgIHdlYmtpdF93ZWJfcGFnZV9nZXRfdXJpIHRvIGdl
dCBpdCBhbmQgdGhlIHNpZ25hbCAibm90aWZ5Ojp1cmkiIHRvCisgICAgICAgIG1vbml0b3IgY2hh
bmdlcyBpbiB0aGUgVVJJLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLXNlY3Rpb25zLnR4dDogSW5jbHVkZSBuZXcgbWV0aG9kIGluCisgICAgICAgIEdUSysg
ZG9jLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RMb2FkZXJDbGllbnQu
Y3BwOgorICAgICAgICAodGVzdFdlYlBhZ2VVUkkpOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAg
ICAgICAgKGFmdGVyQWxsKTogQWRkIHRlc3QgdG8gY2hlY2sgdGhhdCBXZWJLaXRXZWJQYWdlIFVS
SSBtYXRjaGVzIHdpdGgKKyAgICAgICAgV2ViS2l0V2ViVmlldyB2YWx1ZS4gVGhlIHRlc3RzIGlz
IGxpc3RlbmluZyBmb3IgY2hhbmdlcyBpbiBXZWJLaXRXZWJQYWdlCisgICAgICAgIFVSSSB2aWEg
RC1CdXMgYW5kIGNoZWNrcyB0aGF0IHZhbHVlIGlzIHRoZSBzYW1lIHRoYW4gV2ViS2l0V2ViVmll
dyBVUkkuCisgICAgICAgIEl0IGFsc28gY2hlY2tzIHRoYXQgdGhlIG9yZGVyIG9mIHRoZSBVUklz
IGluIGEgcmVkaXJlY3Rpb24gaXMgcmlnaHQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
dGVzdHMvV2ViRXh0ZW5zaW9uVGVzdC5jcHA6CisgICAgICAgICh1cmlDaGFuZ2VkQ2FsbGJhY2sp
OgorICAgICAgICAocGFnZUNyZWF0ZWRDYWxsYmFjayk6IEFkZCBuZXcgRC1CdXMgc2lnbmFsICJV
UklDaGFuZ2VkIiBjb25uZWN0ZWQgdG8KKyAgICAgICAgIm5vdGlmeTo6dXJpIiBzaWduYWwgb2Yg
V2ViS2l0V2ViUGFnZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvV2ViS2l0V2ViUGFnZS5jcHA6CisgICAgICAgIChfV2ViS2l0V2ViUGFnZVByaXZhdGUpOiBB
ZGQgbmV3IFVSSSBhdHRyaWJ1dGUuCisgICAgICAgICh3ZWJraXRXZWJQYWdlU2V0VVJJKTogTWV0
aG9kIHRvIHNldCB0aGUgVVJJIGFuZCBlbWl0IHRoZSAibm90aWZ5OnVyaSIKKyAgICAgICAgc2ln
bmFsIGlmIGl0IGhhcyBjaGFuZ2VkLgorICAgICAgICAoZGlkU3RhcnRQcm92aXNpb25hbExvYWRG
b3JGcmFtZSk6IEF0IHRoaXMgcG9pbnQgaXQgdXNlIHRoZSB1bnJlYWNoYWJsZQorICAgICAgICBV
UkwgZnJvbSBwcm92aXNpb25hbCBkb2N1bWVudCBsb2FkZXIgaWYgYW55LiBPdGhlcndpc2UsIGl0
IHVzZXMgdGhlIFVSTAorICAgICAgICBmcm9tIHByb3Zpc2lvbmFsIGRvY3VtZW50IGxvYWRlci4K
KyAgICAgICAgKGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lKTogSW4gdGhlIGNhc2Ugb2YKKyAgICAgICAgcmVkaXJlY3Rpb25zIGl0IHdvcmtzIGxpa2Ug
Zm9yIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgZ2V0dGluZworICAgICAgICB0aGUg
dW5yZWFjaGFibGUgVVJMIGlmIGFueS4KKyAgICAgICAgKGRpZFNhbWVEb2N1bWVudE5hdmlnYXRp
b25Gb3JGcmFtZSk6IEluIHRoaXMgY2FzZSBpdCBnZXRzIHRoZSBVUkwgZnJvbQorICAgICAgICB0
aGUgZG9jdW1lbnQgbG9hZGVyLgorICAgICAgICAod2Via2l0V2ViUGFnZUdldFByb3BlcnR5KTog
QWRkIGNvZGUgcmVsYXRlZCB0byBVUkkgcHJvcGVydHkuCisgICAgICAgICh3ZWJraXRfd2ViX3Bh
Z2VfY2xhc3NfaW5pdCk6IEFkZCBiaXRzIHJlbGF0ZWQgdG8gVVJJIHByb3BlcnR5LgorICAgICAg
ICAod2Via2l0V2ViUGFnZUNyZWF0ZSk6IEltcGxlbWVudCBjYWxsYmFja3MgdG8gbW9uaXRvciBV
UkkgY2hhbmdlcy4KKyAgICAgICAgKHdlYmtpdF93ZWJfcGFnZV9nZXRfdXJpKTogUmV0dXJuIFVS
SSBhdHRyaWJ1dGUuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L1dlYktpdFdlYlBhZ2UuaDogQWRkIG5ldyBtZXRob2QKKyAgICAgICAgaGVhZGVyLgorCiAyMDEz
LTAyLTIzICBNYW51ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHVEtdW1dLMl0gQWRkIGRvY3VtZW50LWxvYWRlZCBzaWduYWwgdG8gV2ViS2l0V2ViUGFn
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKaW5kZXggZjZlOGE4NDc3N2JlMjdiNDViZWRlMzAz
NjViMjQ0MDlmYjJhMjljYS4uMGRlZTI1ZDNkOWMwYTkwMjI2MTJkYzFhMmViYjJjYzgxOWVjMTVl
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CkBAIC05NTQsNiArOTU0LDcgQEAgd2Via2l0
X3dlYl9leHRlbnNpb25fZ2V0X3R5cGUKIDxGSUxFPldlYktpdFdlYlBhZ2U8L0ZJTEU+CiBXZWJL
aXRXZWJQYWdlCiB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2RvbV9kb2N1bWVudAord2Via2l0X3dlYl9w
YWdlX2dldF91cmkKIAogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CiBXZWJLaXRXZWJQYWdlQ2xhc3MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RM
b2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMv
VGVzdExvYWRlckNsaWVudC5jcHAKaW5kZXggNDJjNmI1MWRkNjM1OTU4MGNiZmMzZGEwNjA0OGYx
MTZjNjg0NzgwMS4uNjA2OGUzMmZjMTQ0MzU5Mjc5MTJmOGY4ZWI5MDMwMGM4MTc2ZmE1MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdExvYWRl
ckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMv
VGVzdExvYWRlckNsaWVudC5jcHAKQEAgLTIyLDExICsyMiwxNCBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogCiAjaW5jbHVkZSAiTG9hZFRyYWNraW5nVGVzdC5oIgorI2luY2x1ZGUgIldlYktpdFRl
c3RCdXMuaCIKICNpbmNsdWRlICJXZWJLaXRUZXN0U2VydmVyLmgiCisjaW5jbHVkZSAiV2ViVmll
d1Rlc3QuaCIKICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCitzdGF0aWMgV2ViS2l0VGVzdEJ1cyog
YnVzOwogc3RhdGljIFdlYktpdFRlc3RTZXJ2ZXIqIGtTZXJ2ZXI7CiAKIHN0YXRpYyB2b2lkIHRl
c3RMb2FkaW5nU3RhdHVzKExvYWRUcmFja2luZ1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIgZGF0
YSkKQEAgLTI4MCw2ICsyODMsNjIgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdJc0xvYWRpbmco
Vmlld0lzTG9hZGluZ1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+d2FpdFVu
dGlsTG9hZEZpbmlzaGVkKCk7CiB9CiAKK2NsYXNzIFdlYlBhZ2VVUklUZXN0OiBwdWJsaWMgV2Vi
Vmlld1Rlc3QgeworcHVibGljOgorICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoV2ViUGFnZVVS
SVRlc3QpOworCisgICAgc3RhdGljIHZvaWQgd2ViUGFnZVVSSUNoYW5nZWRDYWxsYmFjayhHREJ1
c0Nvbm5lY3Rpb24qLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25z
dCBjaGFyKiwgR1ZhcmlhbnQqIHJlc3VsdCwgV2ViUGFnZVVSSVRlc3QqIHRlc3QpCisgICAgewor
ICAgICAgICBjb25zdCBjaGFyKiB1cmk7CisgICAgICAgIGdfdmFyaWFudF9nZXQocmVzdWx0LCAi
KCZzKSIsICZ1cmkpOworICAgICAgICB0ZXN0LT5tX3dlYlBhZ2VVUklzLmFwcGVuZCh1cmkpOwor
ICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHdlYlZpZXdVUklDaGFuZ2VkKEdPYmplY3QqLCBHUGFy
YW1TcGVjKiwgV2ViUGFnZVVSSVRlc3QqIHRlc3QpCisgICAgeworICAgICAgICB0ZXN0LT5tX3dl
YlZpZXdVUklzLmFwcGVuZCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaSh0ZXN0LT5tX3dlYlZpZXcp
KTsKKyAgICB9CisKKyAgICBXZWJQYWdlVVJJVGVzdCgpCisgICAgeworICAgICAgICBHUmVmUHRy
PEdEQnVzUHJveHk+IHByb3h5ID0gYWRvcHRHUmVmKGJ1cy0+Y3JlYXRlUHJveHkoIm9yZy53ZWJr
aXQuZ3RrLldlYkV4dGVuc2lvblRlc3QiLAorICAgICAgICAgICAgIi9vcmcvd2Via2l0L2d0ay9X
ZWJFeHRlbnNpb25UZXN0IiwgIm9yZy53ZWJraXQuZ3RrLldlYkV4dGVuc2lvblRlc3QiLCBtX21h
aW5Mb29wKSk7CisgICAgICAgIGd1aW50IGlkID0gZ19kYnVzX2Nvbm5lY3Rpb25fc2lnbmFsX3N1
YnNjcmliZSgKKyAgICAgICAgICAgIGdfZGJ1c19wcm94eV9nZXRfY29ubmVjdGlvbihwcm94eS5n
ZXQoKSksCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgIm9yZy53ZWJraXQuZ3RrLldlYkV4
dGVuc2lvblRlc3QiLAorICAgICAgICAgICAgIlVSSUNoYW5nZWQiLAorICAgICAgICAgICAgIi9v
cmcvd2Via2l0L2d0ay9XZWJFeHRlbnNpb25UZXN0IiwKKyAgICAgICAgICAgIDAsCisgICAgICAg
ICAgICBHX0RCVVNfU0lHTkFMX0ZMQUdTX05PTkUsCisgICAgICAgICAgICByZWludGVycHJldF9j
YXN0PEdEQnVzU2lnbmFsQ2FsbGJhY2s+KHdlYlBhZ2VVUklDaGFuZ2VkQ2FsbGJhY2spLAorICAg
ICAgICAgICAgdGhpcywKKyAgICAgICAgICAgIDApOworICAgICAgICBnX2Fzc2VydChpZCk7CisK
KyAgICAgICAgZ19zaWduYWxfY29ubmVjdChtX3dlYlZpZXcsICJub3RpZnk6OnVyaSIsIEdfQ0FM
TEJBQ0sod2ViVmlld1VSSUNoYW5nZWQpLCB0aGlzKTsKKyAgICB9CisKKyAgICBWZWN0b3I8Q1N0
cmluZz4gbV93ZWJQYWdlVVJJczsKKyAgICBWZWN0b3I8Q1N0cmluZz4gbV93ZWJWaWV3VVJJczsK
KworfTsKKworc3RhdGljIHZvaWQgdGVzdFdlYlBhZ2VVUkkoV2ViUGFnZVVSSVRlc3QqIHRlc3Qs
IGdjb25zdHBvaW50ZXIpCit7CisgICAgdGVzdC0+bG9hZFVSSShrU2VydmVyLT5nZXRVUklGb3JQ
YXRoKCIvcmVkaXJlY3QiKS5kYXRhKCkpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hl
ZCgpOworCisgICAgZ19hc3NlcnRfY21waW50KHRlc3QtPm1fd2ViUGFnZVVSSXMuc2l6ZSgpLCA9
PSwgdGVzdC0+bV93ZWJWaWV3VVJJcy5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgdGVzdC0+bV93ZWJQYWdlVVJJcy5zaXplKCk7ICsraSkKKyAgICAgICAgQVNTRVJUX0NNUF9D
U1RSSU5HKHRlc3QtPm1fd2ViUGFnZVVSSXNbaV0sID09LCB0ZXN0LT5tX3dlYlZpZXdVUklzW2ld
KTsKKworICAgIGdfYXNzZXJ0X2NtcGludCh0ZXN0LT5tX3dlYlBhZ2VVUklzLnNpemUoKSwgPT0s
IDIpOworICAgIEFTU0VSVF9DTVBfQ1NUUklORyh0ZXN0LT5tX3dlYlBhZ2VVUklzWzBdLCA9PSwg
a1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3JlZGlyZWN0IikpOworICAgIEFTU0VSVF9DTVBfQ1NU
UklORyh0ZXN0LT5tX3dlYlBhZ2VVUklzWzFdLCA9PSwga1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgi
L25vcm1hbCIpKTsKKworfQorCiBzdGF0aWMgdm9pZCBzZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVy
KiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBjaGFyKiBwYXRoLCBHSGFzaFRh
YmxlKiwgU291cENsaWVudENvbnRleHQqLCBncG9pbnRlcikKIHsKICAgICBzdGF0aWMgY29uc3Qg
Y2hhciogcmVzcG9uc2VTdHJpbmcgPSAiPGh0bWw+PGJvZHk+VGVzdGluZyFUZXN0aW5nIVRlc3Rp
bmchVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGluZyEiCkBAIC0zMTgsNiArMzc3LDExIEBA
IHN0YXRpYyB2b2lkIHNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3Nh
Z2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqCiAKIHZvaWQgYmVmb3JlQWxsKCkKIHsKKyAgICB3ZWJr
aXRfd2ViX2NvbnRleHRfc2V0X3dlYl9leHRlbnNpb25zX2RpcmVjdG9yeSh3ZWJraXRfd2ViX2Nv
bnRleHRfZ2V0X2RlZmF1bHQoKSwgV0VCS0lUX1RFU1RfV0VCX0VYVEVOU0lPTlNfRElSKTsKKyAg
ICBidXMgPSBuZXcgV2ViS2l0VGVzdEJ1cygpOworICAgIGlmICghYnVzLT5ydW4oKSkKKyAgICAg
ICAgcmV0dXJuOworCiAgICAga1NlcnZlciA9IG5ldyBXZWJLaXRUZXN0U2VydmVyKCk7CiAgICAg
a1NlcnZlci0+cnVuKHNlcnZlckNhbGxiYWNrKTsKIApAQCAtMzM4LDkgKzQwMiwxMSBAQCB2b2lk
IGJlZm9yZUFsbCgpCiAgICAgVmlld1VSSVRyYWNraW5nVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3
IiwgImFjdGl2ZS11cmkiLCB0ZXN0V2ViVmlld0FjdGl2ZVVSSSk7CiAKICAgICBWaWV3SXNMb2Fk
aW5nVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImlzLWxvYWRpbmciLCB0ZXN0V2ViVmlld0lz
TG9hZGluZyk7CisgICAgV2ViUGFnZVVSSVRlc3Q6OmFkZCgiV2ViS2l0V2ViUGFnZSIsICJnZXQt
dXJpIiwgdGVzdFdlYlBhZ2VVUkkpOwogfQogCiB2b2lkIGFmdGVyQWxsKCkKIHsKKyAgICBkZWxl
dGUgYnVzOwogICAgIGRlbGV0ZSBrU2VydmVyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViRXh0ZW5zaW9uVGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJFeHRlbnNpb25UZXN0LmNwcAppbmRl
eCBhYTY2MDQyYzhjOGQxMzI2MGZlZGI5ZGQzMzgwNDg1ZjYwOWQzOTllLi5mYTg3NGZlM2YwNTlj
OWMzZWUzNTM0ZjY1MjUwNWMzYzBlZTE4ZTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJFeHRlbnNpb25UZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJFeHRlbnNpb25UZXN0LmNwcApAQCAt
MzEsNiArMzEsOSBAQCBzdGF0aWMgY29uc3QgY2hhciBpbnRyb3NwZWN0aW9uWE1MW10gPQogICAg
ICIgICA8YXJnIHR5cGU9J3MnIG5hbWU9J3RpdGxlJyBkaXJlY3Rpb249J291dCcvPiIKICAgICAi
ICA8L21ldGhvZD4iCiAgICAgIiAgPHNpZ25hbCBuYW1lPSdEb2N1bWVudExvYWRlZCcvPiIKKyAg
ICAiICA8c2lnbmFsIG5hbWU9J1VSSUNoYW5nZWQnPiIKKyAgICAiICAgPGFyZyB0eXBlPSdzJyBu
YW1lPSd1cmknIGRpcmVjdGlvbj0nb3V0Jy8+IgorICAgICIgIDwvc2lnbmFsPiIKICAgICAiIDwv
aW50ZXJmYWNlPiIKICAgICAiPC9ub2RlPiI7CiAKQEAgLTQ2LDkgKzQ5LDIzIEBAIHN0YXRpYyB2
b2lkIGRvY3VtZW50TG9hZGVkQ2FsbGJhY2soV2ViS2l0V2ViUGFnZSosIGdwb2ludGVyIHVzZXJE
YXRhKQogICAgIGdfYXNzZXJ0KG9rKTsKIH0KIAorc3RhdGljIHZvaWQgdXJpQ2hhbmdlZENhbGxi
YWNrKFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UsIEdQYXJhbVNwZWMqIHBzcGVjLCBncG9pbnRlciB1
c2VyRGF0YSkKK3sKKyAgICBib29sIG9rID0gZ19kYnVzX2Nvbm5lY3Rpb25fZW1pdF9zaWduYWwo
CisgICAgICAgIEdfREJVU19DT05ORUNUSU9OKHVzZXJEYXRhKSwKKyAgICAgICAgMCwKKyAgICAg
ICAgIi9vcmcvd2Via2l0L2d0ay9XZWJFeHRlbnNpb25UZXN0IiwKKyAgICAgICAgIm9yZy53ZWJr
aXQuZ3RrLldlYkV4dGVuc2lvblRlc3QiLAorICAgICAgICAiVVJJQ2hhbmdlZCIsCisgICAgICAg
IGdfdmFyaWFudF9uZXcoIihzKSIsIHdlYmtpdF93ZWJfcGFnZV9nZXRfdXJpKHdlYlBhZ2UpKSwK
KyAgICAgICAgMCk7CisgICAgZ19hc3NlcnQob2spOworfQorCiBzdGF0aWMgdm9pZCBwYWdlQ3Jl
YXRlZENhbGxiYWNrKFdlYktpdFdlYkV4dGVuc2lvbiosIFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2Us
IGdwb2ludGVyIHVzZXJEYXRhKQogewogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViUGFnZSwgImRv
Y3VtZW50LWxvYWRlZCIsIEdfQ0FMTEJBQ0soZG9jdW1lbnRMb2FkZWRDYWxsYmFjayksIHVzZXJE
YXRhKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlBhZ2UsICJub3RpZnk6OnVyaSIsIEdfQ0FM
TEJBQ0sodXJpQ2hhbmdlZENhbGxiYWNrKSwgdXNlckRhdGEpOwogfQogCiBzdGF0aWMgdm9pZCBt
ZXRob2RDYWxsQ2FsbGJhY2soR0RCdXNDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBjb25zdCBjaGFy
KiBzZW5kZXIsIGNvbnN0IGNoYXIqIG9iamVjdFBhdGgsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5h
bWUsIGNvbnN0IGNoYXIqIG1ldGhvZE5hbWUsIEdWYXJpYW50KiBwYXJhbWV0ZXJzLCBHREJ1c01l
dGhvZEludm9jYXRpb24qIGludm9jYXRpb24sIGdwb2ludGVyIHVzZXJEYXRhKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktp
dFdlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL1dlYktpdFdlYlBhZ2UuY3BwCmluZGV4IDJkNWIzMzVlM2ZjMjk5MjRjNDljNzQ4OTVk
YjllYTI4NjViMTJmZmEuLmUxMDA0ZTZhZTBmMDNkNWI5OGE2NmUxNWUzZGJiNDM2MTFmNGY5OTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9XZWJLaXRXZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5jcHAKQEAgLTIzLDEyICsyMywxNyBA
QAogI2luY2x1ZGUgIkltbXV0YWJsZURpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1
bmRsZS5oIgogI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLQnVuZGxl
RnJhbWUuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYktpdERPTURvY3Vt
ZW50UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJL
aXRXZWJQYWdlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL0RvY3VtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudExvYWRlci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KKyNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMzksMTQgKzQ0LDY0IEBAIGVudW0gewogICAg
IExBU1RfU0lHTkFMCiB9OwogCitlbnVtIHsKKyAgICBQUk9QXzAsCisKKyAgICBQUk9QX1VSSQor
fTsKKwogc3RydWN0IF9XZWJLaXRXZWJQYWdlUHJpdmF0ZSB7CiAgICAgV2ViUGFnZSogd2ViUGFn
ZTsKKworICAgIENTdHJpbmcgdXJpOwogfTsKIAogc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9T
SUdOQUxdID0geyAwLCB9OwogCiBXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0V2ViUGFnZSwgd2Vi
a2l0X3dlYl9wYWdlLCBHX1RZUEVfT0JKRUNUKQogCitzdGF0aWMgQ1N0cmluZyBnZXRQcm92aXNp
b25hbFVSTEZvckZyYW1lKFdlYkZyYW1lKiB3ZWJGcmFtZSkKK3sKKyAgICBEb2N1bWVudExvYWRl
ciogZG9jdW1lbnRMb2FkZXIgPSB3ZWJGcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLT5wcm92
aXNpb25hbERvY3VtZW50TG9hZGVyKCk7CisgICAgaWYgKCFkb2N1bWVudExvYWRlci0+dW5yZWFj
aGFibGVVUkwoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBkb2N1bWVudExvYWRlci0+dW5y
ZWFjaGFibGVVUkwoKS5zdHJpbmcoKS51dGY4KCk7CisKKyAgICByZXR1cm4gZG9jdW1lbnRMb2Fk
ZXItPnVybCgpLnN0cmluZygpLnV0ZjgoKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0V2ViUGFn
ZVNldFVSSShXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlLCBjb25zdCBDU3RyaW5nJiB1cmkpCit7Cisg
ICAgaWYgKHdlYlBhZ2UtPnByaXYtPnVyaSA9PSB1cmkpCisgICAgICAgIHJldHVybjsKKworICAg
IHdlYlBhZ2UtPnByaXYtPnVyaSA9IHVyaTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qo
d2ViUGFnZSksICJ1cmkiKTsKK30KKworc3RhdGljIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExv
YWRGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLVHlw
ZVJlZiosIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCit7CisgICAgaWYgKCFXS0J1bmRsZUZyYW1l
SXNNYWluRnJhbWUoZnJhbWUpKQorICAgICAgICByZXR1cm47CisKKyAgICB3ZWJraXRXZWJQYWdl
U2V0VVJJKFdFQktJVF9XRUJfUEFHRShjbGllbnRJbmZvKSwgZ2V0UHJvdmlzaW9uYWxVUkxGb3JG
cmFtZSh0b0ltcGwoZnJhbWUpKSk7Cit9CisKK3N0YXRpYyB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJS
ZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBX
S0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkICpj
bGllbnRJbmZvKQoreworICAgIGlmICghV0tCdW5kbGVGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgd2Via2l0V2ViUGFnZVNldFVSSShXRUJLSVRfV0VCX1BB
R0UoY2xpZW50SW5mbyksIGdldFByb3Zpc2lvbmFsVVJMRm9yRnJhbWUodG9JbXBsKGZyYW1lKSkp
OworfQorCitzdGF0aWMgdm9pZCBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoV0tC
dW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLU2FtZURvY3VtZW50
TmF2aWdhdGlvblR5cGUgdHlwZSwgV0tUeXBlUmVmKiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xp
ZW50SW5mbykKK3sKKyAgICBpZiAoIVdLQnVuZGxlRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCisg
ICAgICAgIHJldHVybjsKKworICAgIHdlYmtpdFdlYlBhZ2VTZXRVUkkoV0VCS0lUX1dFQl9QQUdF
KGNsaWVudEluZm8pLCB0b0ltcGwoZnJhbWUpLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKS0+dXJs
KCkuc3RyaW5nKCkudXRmOCgpKTsKK30KKwogc3RhdGljIHZvaWQgZGlkRmluaXNoRG9jdW1lbnRM
b2FkRm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmLCBXS1R5cGVSZWYq
LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQogewogICAgIGdfc2lnbmFsX2VtaXQoV0VCS0lUX1dF
Ql9QQUdFKGNsaWVudEluZm8pLCBzaWduYWxzW0RPQ1VNRU5UX0xPQURFRF0sIDApOwpAQCAtMTEx
LDggKzE2Niw0MCBAQCBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZEZvclJlc291cmNlKFdLQnVuZGxl
UGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmLCB1aW50NgogICAgIFdlYlByb2Nlc3M6OnNo
YXJlZCgpLmluamVjdGVkQnVuZGxlKCktPnBvc3RNZXNzYWdlKFN0cmluZzo6ZnJvbVVURjgoIldl
YlBhZ2UuRGlkRmFpbExvYWRGb3JSZXNvdXJjZSIpLCBJbW11dGFibGVEaWN0aW9uYXJ5OjphZG9w
dChtZXNzYWdlKS5nZXQoKSk7CiB9CiAKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlBhZ2VHZXRQcm9w
ZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFt
U3BlYyogcGFyYW1TcGVjKQoreworICAgIFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UgPSBXRUJLSVRf
V0VCX1BBR0Uob2JqZWN0KTsKKworICAgIHN3aXRjaCAocHJvcElkKSB7CisgICAgY2FzZSBQUk9Q
X1VSSToKKyAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCB3ZWJraXRfd2ViX3BhZ2Vf
Z2V0X3VyaSh3ZWJQYWdlKSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAg
IEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJZCwgcGFyYW1T
cGVjKTsKKyAgICB9Cit9CisKIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfcGFnZV9jbGFzc19pbml0
KFdlYktpdFdlYlBhZ2VDbGFzcyoga2xhc3MpCiB7CisgICAgR09iamVjdENsYXNzKiBnT2JqZWN0
Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhrbGFzcyk7CisKKyAgICBnT2JqZWN0Q2xhc3MtPmdldF9w
cm9wZXJ0eSA9IHdlYmtpdFdlYlBhZ2VHZXRQcm9wZXJ0eTsKKworICAgIC8qKgorICAgICAqIFdl
YktpdFdlYlBhZ2U6dXJpOgorICAgICAqCisgICAgICogVGhlIGN1cnJlbnQgYWN0aXZlIFVSSSBv
ZiB0aGUgI1dlYktpdFdlYlBhZ2UuCisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFs
bF9wcm9wZXJ0eSgKKyAgICAgICAgZ09iamVjdENsYXNzLAorICAgICAgICBQUk9QX1VSSSwKKyAg
ICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygKKyAgICAgICAgICAgICJ1cmkiLAorICAgICAgICAg
ICAgXygiVVJJIiksCisgICAgICAgICAgICBfKCJUaGUgY3VycmVudCBhY3RpdmUgVVJJIG9mIHRo
ZSB3ZWIgcGFnZSIpLAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIFdFQktJVF9QQVJBTV9S
RUFEQUJMRSkpOworCiAgICAgLyoqCiAgICAgICogV2ViS2l0V2ViUGFnZTo6ZG9jdW1lbnQtbG9h
ZGVkOgogICAgICAqIEB3ZWJfcGFnZTogdGhlICNXZWJLaXRXZWJQYWdlIG9uIHdoaWNoIHRoZSBz
aWduYWwgaXMgZW1pdHRlZApAQCAtMTQwLDE0ICsyMjcsMTQgQEAgV2ViS2l0V2ViUGFnZSogd2Vi
a2l0V2ViUGFnZUNyZWF0ZShXZWJQYWdlKiB3ZWJQYWdlKQogICAgIFdLQnVuZGxlUGFnZUxvYWRl
ckNsaWVudCBsb2FkZXJDbGllbnQgPSB7CiAgICAgICAgIGtXS0J1bmRsZVBhZ2VSZXNvdXJjZUxv
YWRDbGllbnRDdXJyZW50VmVyc2lvbiwKICAgICAgICAgcGFnZSwKLSAgICAgICAgMCwgLy8gZGlk
U3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZQotICAgICAgICAwLCAvLyBkaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZQorICAgICAgICBkaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lLAorICAgICAgICBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RG
b3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSwKICAgICAgICAgMCwgLy8gZGlkRmFpbFByb3Zpc2lv
bmFsTG9hZFdpdGhFcnJvckZvckZyYW1lCiAgICAgICAgIDAsIC8vIGRpZENvbW1pdExvYWRGb3JG
cmFtZQogICAgICAgICBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSwKICAgICAgICAgMCwg
Ly8gZGlkRmluaXNoTG9hZEZvckZyYW1lLAogICAgICAgICAwLCAvLyBkaWRGYWlsTG9hZFdpdGhF
cnJvckZvckZyYW1lCi0gICAgICAgIDAsIC8vIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JG
cmFtZQorICAgICAgICBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUsCiAgICAgICAg
IDAsIC8vIGRpZFJlY2VpdmVUaXRsZUZvckZyYW1lCiAgICAgICAgIDAsIC8vIGRpZEZpcnN0TGF5
b3V0Rm9yRnJhbWUKICAgICAgICAgMCwgLy8gZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
Rm9yRnJhbWUKQEAgLTIxMCwzICsyOTcsMjIgQEAgV2ViS2l0RE9NRG9jdW1lbnQqIHdlYmtpdF93
ZWJfcGFnZV9nZXRfZG9tX2RvY3VtZW50KFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UpCiAKICAgICBy
ZXR1cm4ga2l0KGNvcmVGcmFtZS0+ZG9jdW1lbnQoKSk7CiB9CisKKy8qKgorICogd2Via2l0X3dl
Yl9wYWdlX2dldF91cmk6CisgKiBAd2ViX3BhZ2U6IGEgI1dlYktpdFdlYlBhZ2UKKyAqCisgKiBS
ZXR1cm5zIHRoZSBjdXJyZW50IGFjdGl2ZSBVUkkgb2YgQHdlYl9wYWdlLgorICoKKyAqIFlvdSBj
YW4gbW9uaXRvciB0aGUgYWN0aXZlIFVSSSBieSBjb25uZWN0aW5nIHRvIHRoZSBub3RpZnk6OnVy
aQorICogc2lnbmFsIG9mIEB3ZWJfcGFnZS4KKyAqCisgKiBSZXR1cm5zOiB0aGUgY3VycmVudCBh
Y3RpdmUgVVJJIG9mIEB3ZWJfdmlldyBvciAlTlVMTCBpZiBub3RoaW5nIGhhcyBiZWVuCisgKiAg
ICBsb2FkZWQgeWV0LgorICovCitjb25zdCBnY2hhciogd2Via2l0X3dlYl9wYWdlX2dldF91cmko
V2ViS2l0V2ViUGFnZSogd2ViUGFnZSkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJL
SVRfSVNfV0VCX1BBR0Uod2ViUGFnZSksIDApOworCisgICAgcmV0dXJuIHdlYlBhZ2UtPnByaXYt
PnVyaS5kYXRhKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuaAppbmRleCBkOGY2
MjM2OTdhOTQ3ODEzNzlhYjI5OTBiNmU0ZWI0NWRkOGE2NDJiLi5lY2NlMGFkOTU3ZTAyNjk1YTVi
YzVlOTQ3MWI1NzhjOGU3Y2ZhYjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmgK
QEAgLTU3LDYgKzU3LDkgQEAgd2Via2l0X3dlYl9wYWdlX2dldF90eXBlICAgICAgICAgKHZvaWQp
OwogV0VCS0lUX0FQSSBXZWJLaXRET01Eb2N1bWVudCAqCiB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2Rv
bV9kb2N1bWVudCAoV2ViS2l0V2ViUGFnZSAqd2ViX3BhZ2UpOwogCitXRUJLSVRfQVBJIGNvbnN0
IGdjaGFyICoKK3dlYmtpdF93ZWJfcGFnZV9nZXRfdXJpIChXZWJLaXRXZWJQYWdlICp3ZWJfcGFn
ZSk7CisKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191666</attachid>
            <date>2013-03-06 00:10:58 -0800</date>
            <delta_ts>2013-03-12 08:26:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111288-20130306090658.patch</filename>
            <type>text/plain</type>
            <size>15230</size>
            <attacher name="Manuel Rego Casasnovas">rego</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0NjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDRlOTMzNjM5MjQ4ZjMz
ZmNlYzM3MTUxZGNhOWU1MmNjYWI0NGRkNS4uMTMyZDI4ZWU0ZWM1YTQ5OTNjZGYxYjRmZGFiNmZl
MDU2NmFkZDNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEzLTAzLTA0ICBNYW51
ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dL
Ml0gQWRkIFdlYktpdFdlYlBhZ2U6OndlYmtpdF93ZWJfcGFnZV9nZXRfdXJpIHRvIFdlYktpdDIg
R1RLKyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExMTI4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBuZXcgcHJvcGVydHkgVVJJIHRvIFdlYktpdFdlYlBhZ2UgcHJvdmlkaW5nIGEgbWV0aG9k
CisgICAgICAgIHdlYmtpdF93ZWJfcGFnZV9nZXRfdXJpIHRvIGdldCBpdCBhbmQgdGhlIHNpZ25h
bCAibm90aWZ5Ojp1cmkiIHRvCisgICAgICAgIG1vbml0b3IgY2hhbmdlcyBpbiB0aGUgVVJJLgor
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4
dDogSW5jbHVkZSBuZXcgbWV0aG9kIGluCisgICAgICAgIEdUSysgZG9jLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAodGVz
dFdlYlBhZ2VVUkkpOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAgKGFmdGVyQWxsKTog
QWRkIHRlc3QgdG8gY2hlY2sgdGhhdCBXZWJLaXRXZWJQYWdlIFVSSSBtYXRjaGVzIHdpdGgKKyAg
ICAgICAgV2ViS2l0V2ViVmlldyB2YWx1ZS4gVGhlIHRlc3RzIGlzIGxpc3RlbmluZyBmb3IgY2hh
bmdlcyBpbiBXZWJLaXRXZWJQYWdlCisgICAgICAgIFVSSSB2aWEgRC1CdXMgYW5kIGNoZWNrcyB0
aGF0IHZhbHVlIGlzIHRoZSBzYW1lIHRoYW4gV2ViS2l0V2ViVmlldyBVUkkuCisgICAgICAgIEl0
IGFsc28gY2hlY2tzIHRoYXQgdGhlIG9yZGVyIG9mIHRoZSBVUklzIGluIGEgcmVkaXJlY3Rpb24g
aXMgcmlnaHQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViRXh0ZW5zaW9u
VGVzdC5jcHA6CisgICAgICAgICh1cmlDaGFuZ2VkQ2FsbGJhY2spOgorICAgICAgICAocGFnZUNy
ZWF0ZWRDYWxsYmFjayk6IEFkZCBuZXcgRC1CdXMgc2lnbmFsICJVUklDaGFuZ2VkIiBjb25uZWN0
ZWQgdG8KKyAgICAgICAgIm5vdGlmeTo6dXJpIiBzaWduYWwgb2YgV2ViS2l0V2ViUGFnZS4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5j
cHA6CisgICAgICAgIChfV2ViS2l0V2ViUGFnZVByaXZhdGUpOiBBZGQgbmV3IFVSSSBhdHRyaWJ1
dGUuCisgICAgICAgICh3ZWJraXRXZWJQYWdlU2V0VVJJKTogTWV0aG9kIHRvIHNldCB0aGUgVVJJ
IGFuZCBlbWl0IHRoZSAibm90aWZ5OnVyaSIKKyAgICAgICAgc2lnbmFsIGlmIGl0IGhhcyBjaGFu
Z2VkLgorICAgICAgICAoZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6IEF0IHRoaXMg
cG9pbnQgaXQgdXNlIHRoZSB1bnJlYWNoYWJsZQorICAgICAgICBVUkwgZnJvbSBwcm92aXNpb25h
bCBkb2N1bWVudCBsb2FkZXIgaWYgYW55LiBPdGhlcndpc2UsIGl0IHVzZXMgdGhlIFVSTAorICAg
ICAgICBmcm9tIHByb3Zpc2lvbmFsIGRvY3VtZW50IGxvYWRlci4KKyAgICAgICAgKGRpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKTogSW4gdGhlIGNhc2Ug
b2YKKyAgICAgICAgcmVkaXJlY3Rpb25zIGl0IHdvcmtzIGxpa2UgZm9yIGRpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUgZ2V0dGluZworICAgICAgICB0aGUgdW5yZWFjaGFibGUgVVJMIGlm
IGFueS4KKyAgICAgICAgKGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSk6IEluIHRo
aXMgY2FzZSBpdCBnZXRzIHRoZSBVUkwgZnJvbQorICAgICAgICB0aGUgZG9jdW1lbnQgbG9hZGVy
LgorICAgICAgICAod2Via2l0V2ViUGFnZUdldFByb3BlcnR5KTogQWRkIGNvZGUgcmVsYXRlZCB0
byBVUkkgcHJvcGVydHkuCisgICAgICAgICh3ZWJraXRfd2ViX3BhZ2VfY2xhc3NfaW5pdCk6IEFk
ZCBiaXRzIHJlbGF0ZWQgdG8gVVJJIHByb3BlcnR5LgorICAgICAgICAod2Via2l0V2ViUGFnZUNy
ZWF0ZSk6IEltcGxlbWVudCBjYWxsYmFja3MgdG8gbW9uaXRvciBVUkkgY2hhbmdlcy4KKyAgICAg
ICAgKHdlYmtpdF93ZWJfcGFnZV9nZXRfdXJpKTogUmV0dXJuIFVSSSBhdHRyaWJ1dGUuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuaDog
QWRkIG5ldyBtZXRob2QKKyAgICAgICAgaGVhZGVyLgorCiAyMDEzLTAyLTIzICBNYW51ZWwgUmVn
byBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dLMl0gQWRk
IGRvY3VtZW50LWxvYWRlZCBzaWduYWwgdG8gV2ViS2l0V2ViUGFnZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4
dCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0
aW9ucy50eHQKaW5kZXggZjZlOGE4NDc3N2JlMjdiNDViZWRlMzAzNjViMjQ0MDlmYjJhMjljYS4u
MGRlZTI1ZDNkOWMwYTkwMjI2MTJkYzFhMmViYjJjYzgxOWVjMTVlYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4
dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGst
c2VjdGlvbnMudHh0CkBAIC05NTQsNiArOTU0LDcgQEAgd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0
X3R5cGUKIDxGSUxFPldlYktpdFdlYlBhZ2U8L0ZJTEU+CiBXZWJLaXRXZWJQYWdlCiB3ZWJraXRf
d2ViX3BhZ2VfZ2V0X2RvbV9kb2N1bWVudAord2Via2l0X3dlYl9wYWdlX2dldF91cmkKIAogPFNV
QlNFQ1RJT04gU3RhbmRhcmQ+CiBXZWJLaXRXZWJQYWdlQ2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RMb2FkZXJDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdExvYWRlckNsaWVudC5j
cHAKaW5kZXggNDJjNmI1MWRkNjM1OTU4MGNiZmMzZGEwNjA0OGYxMTZjNjg0NzgwMS4uNjA2OGUz
MmZjMTQ0MzU5Mjc5MTJmOGY4ZWI5MDMwMGM4MTc2ZmE1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdExvYWRlckNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdExvYWRlckNsaWVudC5j
cHAKQEAgLTIyLDExICsyMiwxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAi
TG9hZFRyYWNraW5nVGVzdC5oIgorI2luY2x1ZGUgIldlYktpdFRlc3RCdXMuaCIKICNpbmNsdWRl
ICJXZWJLaXRUZXN0U2VydmVyLmgiCisjaW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIKICNpbmNsdWRl
IDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogCitzdGF0aWMgV2ViS2l0VGVzdEJ1cyogYnVzOwogc3RhdGljIFdlYktp
dFRlc3RTZXJ2ZXIqIGtTZXJ2ZXI7CiAKIHN0YXRpYyB2b2lkIHRlc3RMb2FkaW5nU3RhdHVzKExv
YWRUcmFja2luZ1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIgZGF0YSkKQEAgLTI4MCw2ICsyODMs
NjIgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdJc0xvYWRpbmcoVmlld0lzTG9hZGluZ1Rlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7
CiB9CiAKK2NsYXNzIFdlYlBhZ2VVUklUZXN0OiBwdWJsaWMgV2ViVmlld1Rlc3QgeworcHVibGlj
OgorICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoV2ViUGFnZVVSSVRlc3QpOworCisgICAgc3Rh
dGljIHZvaWQgd2ViUGFnZVVSSUNoYW5nZWRDYWxsYmFjayhHREJ1c0Nvbm5lY3Rpb24qLCBjb25z
dCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgR1ZhcmlhbnQq
IHJlc3VsdCwgV2ViUGFnZVVSSVRlc3QqIHRlc3QpCisgICAgeworICAgICAgICBjb25zdCBjaGFy
KiB1cmk7CisgICAgICAgIGdfdmFyaWFudF9nZXQocmVzdWx0LCAiKCZzKSIsICZ1cmkpOworICAg
ICAgICB0ZXN0LT5tX3dlYlBhZ2VVUklzLmFwcGVuZCh1cmkpOworICAgIH0KKworICAgIHN0YXRp
YyB2b2lkIHdlYlZpZXdVUklDaGFuZ2VkKEdPYmplY3QqLCBHUGFyYW1TcGVjKiwgV2ViUGFnZVVS
SVRlc3QqIHRlc3QpCisgICAgeworICAgICAgICB0ZXN0LT5tX3dlYlZpZXdVUklzLmFwcGVuZCh3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaSh0ZXN0LT5tX3dlYlZpZXcpKTsKKyAgICB9CisKKyAgICBX
ZWJQYWdlVVJJVGVzdCgpCisgICAgeworICAgICAgICBHUmVmUHRyPEdEQnVzUHJveHk+IHByb3h5
ID0gYWRvcHRHUmVmKGJ1cy0+Y3JlYXRlUHJveHkoIm9yZy53ZWJraXQuZ3RrLldlYkV4dGVuc2lv
blRlc3QiLAorICAgICAgICAgICAgIi9vcmcvd2Via2l0L2d0ay9XZWJFeHRlbnNpb25UZXN0Iiwg
Im9yZy53ZWJraXQuZ3RrLldlYkV4dGVuc2lvblRlc3QiLCBtX21haW5Mb29wKSk7CisgICAgICAg
IGd1aW50IGlkID0gZ19kYnVzX2Nvbm5lY3Rpb25fc2lnbmFsX3N1YnNjcmliZSgKKyAgICAgICAg
ICAgIGdfZGJ1c19wcm94eV9nZXRfY29ubmVjdGlvbihwcm94eS5nZXQoKSksCisgICAgICAgICAg
ICAwLAorICAgICAgICAgICAgIm9yZy53ZWJraXQuZ3RrLldlYkV4dGVuc2lvblRlc3QiLAorICAg
ICAgICAgICAgIlVSSUNoYW5nZWQiLAorICAgICAgICAgICAgIi9vcmcvd2Via2l0L2d0ay9XZWJF
eHRlbnNpb25UZXN0IiwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBHX0RCVVNfU0lHTkFM
X0ZMQUdTX05PTkUsCisgICAgICAgICAgICByZWludGVycHJldF9jYXN0PEdEQnVzU2lnbmFsQ2Fs
bGJhY2s+KHdlYlBhZ2VVUklDaGFuZ2VkQ2FsbGJhY2spLAorICAgICAgICAgICAgdGhpcywKKyAg
ICAgICAgICAgIDApOworICAgICAgICBnX2Fzc2VydChpZCk7CisKKyAgICAgICAgZ19zaWduYWxf
Y29ubmVjdChtX3dlYlZpZXcsICJub3RpZnk6OnVyaSIsIEdfQ0FMTEJBQ0sod2ViVmlld1VSSUNo
YW5nZWQpLCB0aGlzKTsKKyAgICB9CisKKyAgICBWZWN0b3I8Q1N0cmluZz4gbV93ZWJQYWdlVVJJ
czsKKyAgICBWZWN0b3I8Q1N0cmluZz4gbV93ZWJWaWV3VVJJczsKKworfTsKKworc3RhdGljIHZv
aWQgdGVzdFdlYlBhZ2VVUkkoV2ViUGFnZVVSSVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7
CisgICAgdGVzdC0+bG9hZFVSSShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvcmVkaXJlY3QiKS5k
YXRhKCkpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworCisgICAgZ19hc3Nl
cnRfY21waW50KHRlc3QtPm1fd2ViUGFnZVVSSXMuc2l6ZSgpLCA9PSwgdGVzdC0+bV93ZWJWaWV3
VVJJcy5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdGVzdC0+bV93ZWJQYWdl
VVJJcy5zaXplKCk7ICsraSkKKyAgICAgICAgQVNTRVJUX0NNUF9DU1RSSU5HKHRlc3QtPm1fd2Vi
UGFnZVVSSXNbaV0sID09LCB0ZXN0LT5tX3dlYlZpZXdVUklzW2ldKTsKKworICAgIGdfYXNzZXJ0
X2NtcGludCh0ZXN0LT5tX3dlYlBhZ2VVUklzLnNpemUoKSwgPT0sIDIpOworICAgIEFTU0VSVF9D
TVBfQ1NUUklORyh0ZXN0LT5tX3dlYlBhZ2VVUklzWzBdLCA9PSwga1NlcnZlci0+Z2V0VVJJRm9y
UGF0aCgiL3JlZGlyZWN0IikpOworICAgIEFTU0VSVF9DTVBfQ1NUUklORyh0ZXN0LT5tX3dlYlBh
Z2VVUklzWzFdLCA9PSwga1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL25vcm1hbCIpKTsKKworfQor
CiBzdGF0aWMgdm9pZCBzZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNz
YWdlKiBtZXNzYWdlLCBjb25zdCBjaGFyKiBwYXRoLCBHSGFzaFRhYmxlKiwgU291cENsaWVudENv
bnRleHQqLCBncG9pbnRlcikKIHsKICAgICBzdGF0aWMgY29uc3QgY2hhciogcmVzcG9uc2VTdHJp
bmcgPSAiPGh0bWw+PGJvZHk+VGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGluZyFUZXN0aW5n
IVRlc3RpbmchVGVzdGluZyEiCkBAIC0zMTgsNiArMzc3LDExIEBAIHN0YXRpYyB2b2lkIHNlcnZl
ckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0
IGNoYXIqCiAKIHZvaWQgYmVmb3JlQWxsKCkKIHsKKyAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0
X3dlYl9leHRlbnNpb25zX2RpcmVjdG9yeSh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQo
KSwgV0VCS0lUX1RFU1RfV0VCX0VYVEVOU0lPTlNfRElSKTsKKyAgICBidXMgPSBuZXcgV2ViS2l0
VGVzdEJ1cygpOworICAgIGlmICghYnVzLT5ydW4oKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAg
a1NlcnZlciA9IG5ldyBXZWJLaXRUZXN0U2VydmVyKCk7CiAgICAga1NlcnZlci0+cnVuKHNlcnZl
ckNhbGxiYWNrKTsKIApAQCAtMzM4LDkgKzQwMiwxMSBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAg
Vmlld1VSSVRyYWNraW5nVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImFjdGl2ZS11cmkiLCB0
ZXN0V2ViVmlld0FjdGl2ZVVSSSk7CiAKICAgICBWaWV3SXNMb2FkaW5nVGVzdDo6YWRkKCJXZWJL
aXRXZWJWaWV3IiwgImlzLWxvYWRpbmciLCB0ZXN0V2ViVmlld0lzTG9hZGluZyk7CisgICAgV2Vi
UGFnZVVSSVRlc3Q6OmFkZCgiV2ViS2l0V2ViUGFnZSIsICJnZXQtdXJpIiwgdGVzdFdlYlBhZ2VV
UkkpOwogfQogCiB2b2lkIGFmdGVyQWxsKCkKIHsKKyAgICBkZWxldGUgYnVzOwogICAgIGRlbGV0
ZSBrU2VydmVyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvdGVzdHMvV2ViRXh0ZW5zaW9uVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay90ZXN0cy9XZWJFeHRlbnNpb25UZXN0LmNwcAppbmRleCBhYTY2MDQyYzhjOGQxMzI2
MGZlZGI5ZGQzMzgwNDg1ZjYwOWQzOTllLi5mYTg3NGZlM2YwNTljOWMzZWUzNTM0ZjY1MjUwNWMz
YzBlZTE4ZTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90
ZXN0cy9XZWJFeHRlbnNpb25UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay90ZXN0cy9XZWJFeHRlbnNpb25UZXN0LmNwcApAQCAtMzEsNiArMzEsOSBAQCBzdGF0
aWMgY29uc3QgY2hhciBpbnRyb3NwZWN0aW9uWE1MW10gPQogICAgICIgICA8YXJnIHR5cGU9J3Mn
IG5hbWU9J3RpdGxlJyBkaXJlY3Rpb249J291dCcvPiIKICAgICAiICA8L21ldGhvZD4iCiAgICAg
IiAgPHNpZ25hbCBuYW1lPSdEb2N1bWVudExvYWRlZCcvPiIKKyAgICAiICA8c2lnbmFsIG5hbWU9
J1VSSUNoYW5nZWQnPiIKKyAgICAiICAgPGFyZyB0eXBlPSdzJyBuYW1lPSd1cmknIGRpcmVjdGlv
bj0nb3V0Jy8+IgorICAgICIgIDwvc2lnbmFsPiIKICAgICAiIDwvaW50ZXJmYWNlPiIKICAgICAi
PC9ub2RlPiI7CiAKQEAgLTQ2LDkgKzQ5LDIzIEBAIHN0YXRpYyB2b2lkIGRvY3VtZW50TG9hZGVk
Q2FsbGJhY2soV2ViS2l0V2ViUGFnZSosIGdwb2ludGVyIHVzZXJEYXRhKQogICAgIGdfYXNzZXJ0
KG9rKTsKIH0KIAorc3RhdGljIHZvaWQgdXJpQ2hhbmdlZENhbGxiYWNrKFdlYktpdFdlYlBhZ2Uq
IHdlYlBhZ2UsIEdQYXJhbVNwZWMqIHBzcGVjLCBncG9pbnRlciB1c2VyRGF0YSkKK3sKKyAgICBi
b29sIG9rID0gZ19kYnVzX2Nvbm5lY3Rpb25fZW1pdF9zaWduYWwoCisgICAgICAgIEdfREJVU19D
T05ORUNUSU9OKHVzZXJEYXRhKSwKKyAgICAgICAgMCwKKyAgICAgICAgIi9vcmcvd2Via2l0L2d0
ay9XZWJFeHRlbnNpb25UZXN0IiwKKyAgICAgICAgIm9yZy53ZWJraXQuZ3RrLldlYkV4dGVuc2lv
blRlc3QiLAorICAgICAgICAiVVJJQ2hhbmdlZCIsCisgICAgICAgIGdfdmFyaWFudF9uZXcoIihz
KSIsIHdlYmtpdF93ZWJfcGFnZV9nZXRfdXJpKHdlYlBhZ2UpKSwKKyAgICAgICAgMCk7CisgICAg
Z19hc3NlcnQob2spOworfQorCiBzdGF0aWMgdm9pZCBwYWdlQ3JlYXRlZENhbGxiYWNrKFdlYktp
dFdlYkV4dGVuc2lvbiosIFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UsIGdwb2ludGVyIHVzZXJEYXRh
KQogewogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViUGFnZSwgImRvY3VtZW50LWxvYWRlZCIsIEdf
Q0FMTEJBQ0soZG9jdW1lbnRMb2FkZWRDYWxsYmFjayksIHVzZXJEYXRhKTsKKyAgICBnX3NpZ25h
bF9jb25uZWN0KHdlYlBhZ2UsICJub3RpZnk6OnVyaSIsIEdfQ0FMTEJBQ0sodXJpQ2hhbmdlZENh
bGxiYWNrKSwgdXNlckRhdGEpOwogfQogCiBzdGF0aWMgdm9pZCBtZXRob2RDYWxsQ2FsbGJhY2so
R0RCdXNDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBjb25zdCBjaGFyKiBzZW5kZXIsIGNvbnN0IGNo
YXIqIG9iamVjdFBhdGgsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIG1l
dGhvZE5hbWUsIEdWYXJpYW50KiBwYXJhbWV0ZXJzLCBHREJ1c01ldGhvZEludm9jYXRpb24qIGlu
dm9jYXRpb24sIGdwb2ludGVyIHVzZXJEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBh
Z2UuY3BwCmluZGV4IDJkNWIzMzVlM2ZjMjk5MjRjNDljNzQ4OTVkYjllYTI4NjViMTJmZmEuLmUx
MDA0ZTZhZTBmMDNkNWI5OGE2NmUxNWUzZGJiNDM2MTFmNGY5OTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvV2ViS2l0V2ViUGFnZS5jcHAKQEAgLTIzLDEyICsyMywxNyBAQAogI2luY2x1ZGUgIkltbXV0
YWJsZURpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZS5oIgogI2luY2x1ZGUg
IldLQnVuZGxlQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLQnVuZGxlRnJhbWUuaCIKICNpbmNsdWRl
ICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYktpdERPTURvY3VtZW50UHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIldlYktpdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJQYWdlUHJpdmF0ZS5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudExvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RnJhbWUuaD4KKyNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwpAQCAtMzksMTQgKzQ0LDY0IEBAIGVudW0gewogICAgIExBU1RfU0lHTkFMCiB9Owog
CitlbnVtIHsKKyAgICBQUk9QXzAsCisKKyAgICBQUk9QX1VSSQorfTsKKwogc3RydWN0IF9XZWJL
aXRXZWJQYWdlUHJpdmF0ZSB7CiAgICAgV2ViUGFnZSogd2ViUGFnZTsKKworICAgIENTdHJpbmcg
dXJpOwogfTsKIAogc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9Owog
CiBXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0V2ViUGFnZSwgd2Via2l0X3dlYl9wYWdlLCBHX1RZ
UEVfT0JKRUNUKQogCitzdGF0aWMgQ1N0cmluZyBnZXRQcm92aXNpb25hbFVSTEZvckZyYW1lKFdl
YkZyYW1lKiB3ZWJGcmFtZSkKK3sKKyAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIg
PSB3ZWJGcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLT5wcm92aXNpb25hbERvY3VtZW50TG9h
ZGVyKCk7CisgICAgaWYgKCFkb2N1bWVudExvYWRlci0+dW5yZWFjaGFibGVVUkwoKS5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiBkb2N1bWVudExvYWRlci0+dW5yZWFjaGFibGVVUkwoKS5zdHJp
bmcoKS51dGY4KCk7CisKKyAgICByZXR1cm4gZG9jdW1lbnRMb2FkZXItPnVybCgpLnN0cmluZygp
LnV0ZjgoKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0V2ViUGFnZVNldFVSSShXZWJLaXRXZWJQ
YWdlKiB3ZWJQYWdlLCBjb25zdCBDU3RyaW5nJiB1cmkpCit7CisgICAgaWYgKHdlYlBhZ2UtPnBy
aXYtPnVyaSA9PSB1cmkpCisgICAgICAgIHJldHVybjsKKworICAgIHdlYlBhZ2UtPnByaXYtPnVy
aSA9IHVyaTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qod2ViUGFnZSksICJ1cmkiKTsK
K30KKworc3RhdGljIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXS0J1bmRs
ZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiosIGNvbnN0IHZvaWQg
KmNsaWVudEluZm8pCit7CisgICAgaWYgKCFXS0J1bmRsZUZyYW1lSXNNYWluRnJhbWUoZnJhbWUp
KQorICAgICAgICByZXR1cm47CisKKyAgICB3ZWJraXRXZWJQYWdlU2V0VVJJKFdFQktJVF9XRUJf
UEFHRShjbGllbnRJbmZvKSwgZ2V0UHJvdmlzaW9uYWxVUkxGb3JGcmFtZSh0b0ltcGwoZnJhbWUp
KSk7Cit9CisKK3N0YXRpYyB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZy
YW1lLCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAg
IGlmICghV0tCdW5kbGVGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgd2Via2l0V2ViUGFnZVNldFVSSShXRUJLSVRfV0VCX1BBR0UoY2xpZW50SW5mbyksIGdl
dFByb3Zpc2lvbmFsVVJMRm9yRnJhbWUodG9JbXBsKGZyYW1lKSkpOworfQorCitzdGF0aWMgdm9p
ZCBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2Us
IFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUgdHlw
ZSwgV0tUeXBlUmVmKiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3sKKyAgICBp
ZiAoIVdLQnVuZGxlRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHdlYmtpdFdlYlBhZ2VTZXRVUkkoV0VCS0lUX1dFQl9QQUdFKGNsaWVudEluZm8pLCB0b0lt
cGwoZnJhbWUpLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkudXRmOCgp
KTsKK30KKwogc3RhdGljIHZvaWQgZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUoV0tCdW5k
bGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmLCBXS1R5cGVSZWYqLCBjb25zdCB2b2lkICpjbGll
bnRJbmZvKQogewogICAgIGdfc2lnbmFsX2VtaXQoV0VCS0lUX1dFQl9QQUdFKGNsaWVudEluZm8p
LCBzaWduYWxzW0RPQ1VNRU5UX0xPQURFRF0sIDApOwpAQCAtMTExLDggKzE2Niw0MCBAQCBzdGF0
aWMgdm9pZCBkaWRGYWlsTG9hZEZvclJlc291cmNlKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1
bmRsZUZyYW1lUmVmLCB1aW50NgogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmluamVjdGVkQnVu
ZGxlKCktPnBvc3RNZXNzYWdlKFN0cmluZzo6ZnJvbVVURjgoIldlYlBhZ2UuRGlkRmFpbExvYWRG
b3JSZXNvdXJjZSIpLCBJbW11dGFibGVEaWN0aW9uYXJ5OjphZG9wdChtZXNzYWdlKS5nZXQoKSk7
CiB9CiAKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlBhZ2VHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmpl
Y3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcGFyYW1TcGVjKQor
eworICAgIFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UgPSBXRUJLSVRfV0VCX1BBR0Uob2JqZWN0KTsK
KworICAgIHN3aXRjaCAocHJvcElkKSB7CisgICAgY2FzZSBQUk9QX1VSSToKKyAgICAgICAgZ192
YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCB3ZWJraXRfd2ViX3BhZ2VfZ2V0X3VyaSh3ZWJQYWdlKSk7
CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5W
QUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJZCwgcGFyYW1TcGVjKTsKKyAgICB9Cit9CisK
IHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfcGFnZV9jbGFzc19pbml0KFdlYktpdFdlYlBhZ2VDbGFz
cyoga2xhc3MpCiB7CisgICAgR09iamVjdENsYXNzKiBnT2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9D
TEFTUyhrbGFzcyk7CisKKyAgICBnT2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdFdl
YlBhZ2VHZXRQcm9wZXJ0eTsKKworICAgIC8qKgorICAgICAqIFdlYktpdFdlYlBhZ2U6dXJpOgor
ICAgICAqCisgICAgICogVGhlIGN1cnJlbnQgYWN0aXZlIFVSSSBvZiB0aGUgI1dlYktpdFdlYlBh
Z2UuCisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKKyAgICAg
ICAgZ09iamVjdENsYXNzLAorICAgICAgICBQUk9QX1VSSSwKKyAgICAgICAgZ19wYXJhbV9zcGVj
X3N0cmluZygKKyAgICAgICAgICAgICJ1cmkiLAorICAgICAgICAgICAgXygiVVJJIiksCisgICAg
ICAgICAgICBfKCJUaGUgY3VycmVudCBhY3RpdmUgVVJJIG9mIHRoZSB3ZWIgcGFnZSIpLAorICAg
ICAgICAgICAgMCwKKyAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOworCiAgICAg
LyoqCiAgICAgICogV2ViS2l0V2ViUGFnZTo6ZG9jdW1lbnQtbG9hZGVkOgogICAgICAqIEB3ZWJf
cGFnZTogdGhlICNXZWJLaXRXZWJQYWdlIG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZApA
QCAtMTQwLDE0ICsyMjcsMTQgQEAgV2ViS2l0V2ViUGFnZSogd2Via2l0V2ViUGFnZUNyZWF0ZShX
ZWJQYWdlKiB3ZWJQYWdlKQogICAgIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudCBsb2FkZXJDbGll
bnQgPSB7CiAgICAgICAgIGtXS0J1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnRDdXJyZW50VmVy
c2lvbiwKICAgICAgICAgcGFnZSwKLSAgICAgICAgMCwgLy8gZGlkU3RhcnRQcm92aXNpb25hbExv
YWRGb3JGcmFtZQotICAgICAgICAwLCAvLyBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92
aXNpb25hbExvYWRGb3JGcmFtZQorICAgICAgICBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lLAorICAgICAgICBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRG
b3JGcmFtZSwKICAgICAgICAgMCwgLy8gZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZv
ckZyYW1lCiAgICAgICAgIDAsIC8vIGRpZENvbW1pdExvYWRGb3JGcmFtZQogICAgICAgICBkaWRG
aW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSwKICAgICAgICAgMCwgLy8gZGlkRmluaXNoTG9hZEZv
ckZyYW1lLAogICAgICAgICAwLCAvLyBkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lCi0gICAg
ICAgIDAsIC8vIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZQorICAgICAgICBkaWRT
YW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUsCiAgICAgICAgIDAsIC8vIGRpZFJlY2VpdmVU
aXRsZUZvckZyYW1lCiAgICAgICAgIDAsIC8vIGRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUKICAgICAg
ICAgMCwgLy8gZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUKQEAgLTIxMCwz
ICsyOTcsMjIgQEAgV2ViS2l0RE9NRG9jdW1lbnQqIHdlYmtpdF93ZWJfcGFnZV9nZXRfZG9tX2Rv
Y3VtZW50KFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UpCiAKICAgICByZXR1cm4ga2l0KGNvcmVGcmFt
ZS0+ZG9jdW1lbnQoKSk7CiB9CisKKy8qKgorICogd2Via2l0X3dlYl9wYWdlX2dldF91cmk6Cisg
KiBAd2ViX3BhZ2U6IGEgI1dlYktpdFdlYlBhZ2UKKyAqCisgKiBSZXR1cm5zIHRoZSBjdXJyZW50
IGFjdGl2ZSBVUkkgb2YgQHdlYl9wYWdlLgorICoKKyAqIFlvdSBjYW4gbW9uaXRvciB0aGUgYWN0
aXZlIFVSSSBieSBjb25uZWN0aW5nIHRvIHRoZSBub3RpZnk6OnVyaQorICogc2lnbmFsIG9mIEB3
ZWJfcGFnZS4KKyAqCisgKiBSZXR1cm5zOiB0aGUgY3VycmVudCBhY3RpdmUgVVJJIG9mIEB3ZWJf
dmlldyBvciAlTlVMTCBpZiBub3RoaW5nIGhhcyBiZWVuCisgKiAgICBsb2FkZWQgeWV0LgorICov
Citjb25zdCBnY2hhciogd2Via2l0X3dlYl9wYWdlX2dldF91cmkoV2ViS2l0V2ViUGFnZSogd2Vi
UGFnZSkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1BBR0Uod2Vi
UGFnZSksIDApOworCisgICAgcmV0dXJuIHdlYlBhZ2UtPnByaXYtPnVyaS5kYXRhKCk7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvV2ViS2l0V2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuaAppbmRleCBkOGY2MjM2OTdhOTQ3ODEzNzlhYjI5
OTBiNmU0ZWI0NWRkOGE2NDJiLi5lY2NlMGFkOTU3ZTAyNjk1YTViYzVlOTQ3MWI1NzhjOGU3Y2Zh
YjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmgKQEAgLTU3LDYgKzU3LDkgQEAg
d2Via2l0X3dlYl9wYWdlX2dldF90eXBlICAgICAgICAgKHZvaWQpOwogV0VCS0lUX0FQSSBXZWJL
aXRET01Eb2N1bWVudCAqCiB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2RvbV9kb2N1bWVudCAoV2ViS2l0
V2ViUGFnZSAqd2ViX3BhZ2UpOwogCitXRUJLSVRfQVBJIGNvbnN0IGdjaGFyICoKK3dlYmtpdF93
ZWJfcGFnZV9nZXRfdXJpIChXZWJLaXRXZWJQYWdlICp3ZWJfcGFnZSk7CisKIEdfRU5EX0RFQ0xT
CiAKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192741</attachid>
            <date>2013-03-12 08:26:45 -0700</date>
            <delta_ts>2013-04-15 03:20:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111288-20130312162243.patch</filename>
            <type>text/plain</type>
            <size>17960</size>
            <attacher name="Manuel Rego Casasnovas">rego</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0NjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDRlOTMzNjM5MjQ4ZjMz
ZmNlYzM3MTUxZGNhOWU1MmNjYWI0NGRkNS4uMjQ1YzY2YzJiYjQ2MGZlZGY3ODkxNDc3MWM4OGIy
NDZhNGQ5MmIyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEzLTAzLTEyICBNYW51
ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dL
Ml0gQWRkIFdlYktpdFdlYlBhZ2U6OndlYmtpdF93ZWJfcGFnZV9nZXRfdXJpIHRvIFdlYktpdDIg
R1RLKyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExMTI4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBuZXcgcHJvcGVydHkgVVJJIHRvIFdlYktpdFdlYlBhZ2UgcHJvdmlkaW5nIGEgbWV0aG9k
CisgICAgICAgIHdlYmtpdF93ZWJfcGFnZV9nZXRfdXJpIHRvIGdldCBpdCBhbmQgdGhlIHNpZ25h
bCAibm90aWZ5Ojp1cmkiIHRvCisgICAgICAgIG1vbml0b3IgY2hhbmdlcyBpbiB0aGUgVVJJLgor
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4
dDogSW5jbHVkZSBuZXcgbWV0aG9kIGluCisgICAgICAgIEdUSysgZG9jLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAodGVz
dFdlYlBhZ2VVUkkpOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAgKGFmdGVyQWxsKTog
QWRkIHRlc3QgdG8gY2hlY2sgdGhhdCBXZWJLaXRXZWJQYWdlIFVSSSBtYXRjaGVzIHdpdGgKKyAg
ICAgICAgV2ViS2l0V2ViVmlldyB2YWx1ZS4gVGhlIHRlc3RzIGlzIGxpc3RlbmluZyBmb3IgY2hh
bmdlcyBpbiBXZWJLaXRXZWJQYWdlCisgICAgICAgIFVSSSB2aWEgRC1CdXMgYW5kIGNoZWNrcyB0
aGF0IHZhbHVlIGlzIHRoZSBzYW1lIHRoYW4gV2ViS2l0V2ViVmlldyBVUkkuCisgICAgICAgIEl0
IGFsc28gY2hlY2tzIHRoYXQgdGhlIG9yZGVyIG9mIHRoZSBVUklzIGluIGEgcmVkaXJlY3Rpb24g
aXMgcmlnaHQuCisgICAgICAgIFdoZW4gdGhlIHRlc3QgZmluaXNoZXMgdGhlIHNpZ25hbHMgYXJl
IGRpc2Nvbm5lY3RlZCBwcm9wZXJseS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0
cy9XZWJFeHRlbnNpb25UZXN0LmNwcDoKKyAgICAgICAgKHVyaUNoYW5nZWRDYWxsYmFjayk6Cisg
ICAgICAgIChwYWdlQ3JlYXRlZENhbGxiYWNrKTogQWRkIG5ldyBELUJ1cyBzaWduYWwgIlVSSUNo
YW5nZWQiIGNvbm5lY3RlZCB0bworICAgICAgICAibm90aWZ5Ojp1cmkiIHNpZ25hbCBvZiBXZWJL
aXRXZWJQYWdlLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYktpdFRlc3RC
dXMuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdEJ1czo6Z2V0T3JDcmVhdGVDb25uZWN0aW9uKTog
UmVuYW1lIG1ldGhvZCBjb25uZWN0aW9uKCkgdG8KKyAgICAgICAgZ2V0T3JDcmVhdGVDb25uZWN0
aW9uKCkuCisgICAgICAgIChXZWJLaXRUZXN0QnVzOjpjcmVhdGVQcm94eSk6IFVzZSB0aGUgbmV3
IG1ldGhvZCBuYW1lLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYktpdFRl
c3RCdXMuaDoKKyAgICAgICAgKFdlYktpdFRlc3RCdXM6OmNvbm5lY3Rpb24pOiBBZGQgcHVibGlj
IGdldHRlciBmb3IgbV9jb25uZWN0aW9uLgorICAgICAgICAoV2ViS2l0VGVzdEJ1cyk6IEFkZCBw
cml2YXRlIG1ldGhvZCBoZWFkZXIgZ2V0T3JDcmVhdGVDb25uZWN0aW9uKCkuCisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuY3BwOgorICAg
ICAgICAoX1dlYktpdFdlYlBhZ2VQcml2YXRlKTogQWRkIG5ldyBVUkkgYXR0cmlidXRlLgorICAg
ICAgICAod2Via2l0V2ViUGFnZVNldFVSSSk6IE1ldGhvZCB0byBzZXQgdGhlIFVSSSBhbmQgZW1p
dCB0aGUgIm5vdGlmeTp1cmkiCisgICAgICAgIHNpZ25hbCBpZiBpdCBoYXMgY2hhbmdlZC4KKyAg
ICAgICAgKGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOiBBdCB0aGlzIHBvaW50IGl0
IHVzZSB0aGUgdW5yZWFjaGFibGUKKyAgICAgICAgVVJMIGZyb20gcHJvdmlzaW9uYWwgZG9jdW1l
bnQgbG9hZGVyIGlmIGFueS4gT3RoZXJ3aXNlLCBpdCB1c2VzIHRoZSBVUkwKKyAgICAgICAgZnJv
bSBwcm92aXNpb25hbCBkb2N1bWVudCBsb2FkZXIuCisgICAgICAgIChkaWRSZWNlaXZlU2VydmVy
UmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6IEluIHRoZSBjYXNlIG9mCisgICAg
ICAgIHJlZGlyZWN0aW9ucyBpdCB3b3JrcyBsaWtlIGZvciBkaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lIGdldHRpbmcKKyAgICAgICAgdGhlIHVucmVhY2hhYmxlIFVSTCBpZiBhbnkuCisg
ICAgICAgIChkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUpOiBJbiB0aGlzIGNhc2Ug
aXQgZ2V0cyB0aGUgVVJMIGZyb20KKyAgICAgICAgdGhlIGRvY3VtZW50IGxvYWRlci4KKyAgICAg
ICAgKHdlYmtpdFdlYlBhZ2VHZXRQcm9wZXJ0eSk6IEFkZCBjb2RlIHJlbGF0ZWQgdG8gVVJJIHBy
b3BlcnR5LgorICAgICAgICAod2Via2l0X3dlYl9wYWdlX2NsYXNzX2luaXQpOiBBZGQgYml0cyBy
ZWxhdGVkIHRvIFVSSSBwcm9wZXJ0eS4KKyAgICAgICAgKHdlYmtpdFdlYlBhZ2VDcmVhdGUpOiBJ
bXBsZW1lbnQgY2FsbGJhY2tzIHRvIG1vbml0b3IgVVJJIGNoYW5nZXMuCisgICAgICAgICh3ZWJr
aXRfd2ViX3BhZ2VfZ2V0X3VyaSk6IFJldHVybiBVUkkgYXR0cmlidXRlLgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmg6IEFkZCBuZXcg
bWV0aG9kCisgICAgICAgIGhlYWRlci4KKwogMjAxMy0wMi0yMyAgTWFudWVsIFJlZ28gQ2FzYXNu
b3ZhcyAgPHJlZ29AaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXSzJdIEFkZCBkb2N1bWVu
dC1sb2FkZWQgc2lnbmFsIHRvIFdlYktpdFdlYlBhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0
CmluZGV4IGY2ZThhODQ3NzdiZTI3YjQ1YmVkZTMwMzY1YjI0NDA5ZmIyYTI5Y2EuLjBkZWUyNWQz
ZDljMGE5MDIyNjEyZGMxYTJlYmIyY2M4MTllYzE1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25z
LnR4dApAQCAtOTU0LDYgKzk1NCw3IEBAIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF90eXBlCiA8
RklMRT5XZWJLaXRXZWJQYWdlPC9GSUxFPgogV2ViS2l0V2ViUGFnZQogd2Via2l0X3dlYl9wYWdl
X2dldF9kb21fZG9jdW1lbnQKK3dlYmtpdF93ZWJfcGFnZV9nZXRfdXJpCiAKIDxTVUJTRUNUSU9O
IFN0YW5kYXJkPgogV2ViS2l0V2ViUGFnZUNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RMb2FkZXJDbGllbnQuY3BwCmluZGV4
IDQyYzZiNTFkZDYzNTk1ODBjYmZjM2RhMDYwNDhmMTE2YzY4NDc4MDEuLjJhOWM0ZmNiZjA2NTUw
ZWY1Y2E1MGE0YjAxMGZhNTkxYTZlMTg3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RMb2FkZXJDbGllbnQuY3BwCkBAIC0y
MiwxMSArMjIsMTQgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUgIkxvYWRUcmFj
a2luZ1Rlc3QuaCIKKyNpbmNsdWRlICJXZWJLaXRUZXN0QnVzLmgiCiAjaW5jbHVkZSAiV2ViS2l0
VGVzdFNlcnZlci5oIgorI2luY2x1ZGUgIldlYlZpZXdUZXN0LmgiCiAjaW5jbHVkZSA8Z3RrL2d0
ay5oPgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KIAorc3RhdGljIFdlYktpdFRlc3RCdXMqIGJ1czsKIHN0YXRpYyBXZWJLaXRUZXN0U2Vy
dmVyKiBrU2VydmVyOwogCiBzdGF0aWMgdm9pZCB0ZXN0TG9hZGluZ1N0YXR1cyhMb2FkVHJhY2tp
bmdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyIGRhdGEpCkBAIC0yODAsNiArMjgzLDY4IEBAIHN0
YXRpYyB2b2lkIHRlc3RXZWJWaWV3SXNMb2FkaW5nKFZpZXdJc0xvYWRpbmdUZXN0KiB0ZXN0LCBn
Y29uc3Rwb2ludGVyKQogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogfQogCitj
bGFzcyBXZWJQYWdlVVJJVGVzdDogcHVibGljIFdlYlZpZXdUZXN0IHsKK3B1YmxpYzoKKyAgICBN
QUtFX0dMSUJfVEVTVF9GSVhUVVJFKFdlYlBhZ2VVUklUZXN0KTsKKworICAgIHN0YXRpYyB2b2lk
IHdlYlBhZ2VVUklDaGFuZ2VkQ2FsbGJhY2soR0RCdXNDb25uZWN0aW9uKiwgY29uc3QgY2hhcios
IGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIEdWYXJpYW50KiByZXN1bHQs
IFdlYlBhZ2VVUklUZXN0KiB0ZXN0KQorICAgIHsKKyAgICAgICAgY29uc3QgY2hhciogdXJpOwor
ICAgICAgICBnX3ZhcmlhbnRfZ2V0KHJlc3VsdCwgIigmcykiLCAmdXJpKTsKKyAgICAgICAgdGVz
dC0+bV93ZWJQYWdlVVJJcy5hcHBlbmQodXJpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCB3
ZWJWaWV3VVJJQ2hhbmdlZChHT2JqZWN0KiwgR1BhcmFtU3BlYyosIFdlYlBhZ2VVUklUZXN0KiB0
ZXN0KQorICAgIHsKKyAgICAgICAgdGVzdC0+bV93ZWJWaWV3VVJJcy5hcHBlbmQod2Via2l0X3dl
Yl92aWV3X2dldF91cmkodGVzdC0+bV93ZWJWaWV3KSk7CisgICAgfQorCisgICAgV2ViUGFnZVVS
SVRlc3QoKQorICAgIHsKKyAgICAgICAgR1JlZlB0cjxHREJ1c1Byb3h5PiBwcm94eSA9IGFkb3B0
R1JlZihidXMtPmNyZWF0ZVByb3h5KCJvcmcud2Via2l0Lmd0ay5XZWJFeHRlbnNpb25UZXN0IiwK
KyAgICAgICAgICAgICIvb3JnL3dlYmtpdC9ndGsvV2ViRXh0ZW5zaW9uVGVzdCIsICJvcmcud2Vi
a2l0Lmd0ay5XZWJFeHRlbnNpb25UZXN0IiwgbV9tYWluTG9vcCkpOworICAgICAgICBtX3VyaUNo
YW5nZWRTaWduYWxJRCA9IGdfZGJ1c19jb25uZWN0aW9uX3NpZ25hbF9zdWJzY3JpYmUoCisgICAg
ICAgICAgICBnX2RidXNfcHJveHlfZ2V0X2Nvbm5lY3Rpb24ocHJveHkuZ2V0KCkpLAorICAgICAg
ICAgICAgMCwKKyAgICAgICAgICAgICJvcmcud2Via2l0Lmd0ay5XZWJFeHRlbnNpb25UZXN0IiwK
KyAgICAgICAgICAgICJVUklDaGFuZ2VkIiwKKyAgICAgICAgICAgICIvb3JnL3dlYmtpdC9ndGsv
V2ViRXh0ZW5zaW9uVGVzdCIsCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgR19EQlVTX1NJ
R05BTF9GTEFHU19OT05FLAorICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxHREJ1c1NpZ25h
bENhbGxiYWNrPih3ZWJQYWdlVVJJQ2hhbmdlZENhbGxiYWNrKSwKKyAgICAgICAgICAgIHRoaXMs
CisgICAgICAgICAgICAwKTsKKyAgICAgICAgZ19hc3NlcnQobV91cmlDaGFuZ2VkU2lnbmFsSUQp
OworCisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAibm90aWZ5Ojp1cmkiLCBH
X0NBTExCQUNLKHdlYlZpZXdVUklDaGFuZ2VkKSwgdGhpcyk7CisgICAgfQorCisgICAgfldlYlBh
Z2VVUklUZXN0KCkKKyAgICB7CisgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3Rf
bWF0Y2hlZChtX3dlYlZpZXcsIEdfU0lHTkFMX01BVENIX0RBVEEsIDAsIDAsIDAsIDAsIHRoaXMp
OworICAgICAgICBnX2RidXNfY29ubmVjdGlvbl9zaWduYWxfdW5zdWJzY3JpYmUoYnVzLT5jb25u
ZWN0aW9uKCksIG1fdXJpQ2hhbmdlZFNpZ25hbElEKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBt
X3VyaUNoYW5nZWRTaWduYWxJRDsKKyAgICBWZWN0b3I8Q1N0cmluZz4gbV93ZWJQYWdlVVJJczsK
KyAgICBWZWN0b3I8Q1N0cmluZz4gbV93ZWJWaWV3VVJJczsKK307CisKK3N0YXRpYyB2b2lkIHRl
c3RXZWJQYWdlVVJJKFdlYlBhZ2VVUklUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAg
IHRlc3QtPmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3JlZGlyZWN0IikuZGF0YSgp
KTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKworICAgIGdfYXNzZXJ0X2Nt
cGludCh0ZXN0LT5tX3dlYlBhZ2VVUklzLnNpemUoKSwgPT0sIHRlc3QtPm1fd2ViVmlld1VSSXMu
c2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRlc3QtPm1fd2ViUGFnZVVSSXMu
c2l6ZSgpOyArK2kpCisgICAgICAgIEFTU0VSVF9DTVBfQ1NUUklORyh0ZXN0LT5tX3dlYlBhZ2VV
UklzW2ldLCA9PSwgdGVzdC0+bV93ZWJWaWV3VVJJc1tpXSk7CisKKyAgICBnX2Fzc2VydF9jbXBp
bnQodGVzdC0+bV93ZWJQYWdlVVJJcy5zaXplKCksID09LCAyKTsKKyAgICBBU1NFUlRfQ01QX0NT
VFJJTkcodGVzdC0+bV93ZWJQYWdlVVJJc1swXSwgPT0sIGtTZXJ2ZXItPmdldFVSSUZvclBhdGgo
Ii9yZWRpcmVjdCIpKTsKKyAgICBBU1NFUlRfQ01QX0NTVFJJTkcodGVzdC0+bV93ZWJQYWdlVVJJ
c1sxXSwgPT0sIGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9ub3JtYWwiKSk7CisKK30KKwogc3Rh
dGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSog
bWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hhc2hUYWJsZSosIFNvdXBDbGllbnRDb250ZXh0
KiwgZ3BvaW50ZXIpCiB7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHJlc3BvbnNlU3RyaW5nID0g
IjxodG1sPjxib2R5PlRlc3RpbmchVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGluZyFUZXN0
aW5nIVRlc3RpbmchIgpAQCAtMzE4LDYgKzM4MywxMSBAQCBzdGF0aWMgdm9pZCBzZXJ2ZXJDYWxs
YmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBjaGFy
KgogCiB2b2lkIGJlZm9yZUFsbCgpCiB7CisgICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF93ZWJf
ZXh0ZW5zaW9uc19kaXJlY3Rvcnkod2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0KCksIFdF
QktJVF9URVNUX1dFQl9FWFRFTlNJT05TX0RJUik7CisgICAgYnVzID0gbmV3IFdlYktpdFRlc3RC
dXMoKTsKKyAgICBpZiAoIWJ1cy0+cnVuKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGtTZXJ2
ZXIgPSBuZXcgV2ViS2l0VGVzdFNlcnZlcigpOwogICAgIGtTZXJ2ZXItPnJ1bihzZXJ2ZXJDYWxs
YmFjayk7CiAKQEAgLTMzOCw5ICs0MDgsMTEgQEAgdm9pZCBiZWZvcmVBbGwoKQogICAgIFZpZXdV
UklUcmFja2luZ1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJhY3RpdmUtdXJpIiwgdGVzdFdl
YlZpZXdBY3RpdmVVUkkpOwogCiAgICAgVmlld0lzTG9hZGluZ1Rlc3Q6OmFkZCgiV2ViS2l0V2Vi
VmlldyIsICJpcy1sb2FkaW5nIiwgdGVzdFdlYlZpZXdJc0xvYWRpbmcpOworICAgIFdlYlBhZ2VV
UklUZXN0OjphZGQoIldlYktpdFdlYlBhZ2UiLCAiZ2V0LXVyaSIsIHRlc3RXZWJQYWdlVVJJKTsK
IH0KIAogdm9pZCBhZnRlckFsbCgpCiB7CisgICAgZGVsZXRlIGJ1czsKICAgICBkZWxldGUga1Nl
cnZlcjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rl
c3RzL1dlYkV4dGVuc2lvblRlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvdGVzdHMvV2ViRXh0ZW5zaW9uVGVzdC5jcHAKaW5kZXggYWE2NjA0MmM4YzhkMTMyNjBmZWRi
OWRkMzM4MDQ4NWY2MDlkMzk5ZS4uZmE4NzRmZTNmMDU5YzljM2VlMzUzNGY2NTI1MDVjM2MwZWUx
OGUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMv
V2ViRXh0ZW5zaW9uVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvdGVzdHMvV2ViRXh0ZW5zaW9uVGVzdC5jcHAKQEAgLTMxLDYgKzMxLDkgQEAgc3RhdGljIGNv
bnN0IGNoYXIgaW50cm9zcGVjdGlvblhNTFtdID0KICAgICAiICAgPGFyZyB0eXBlPSdzJyBuYW1l
PSd0aXRsZScgZGlyZWN0aW9uPSdvdXQnLz4iCiAgICAgIiAgPC9tZXRob2Q+IgogICAgICIgIDxz
aWduYWwgbmFtZT0nRG9jdW1lbnRMb2FkZWQnLz4iCisgICAgIiAgPHNpZ25hbCBuYW1lPSdVUklD
aGFuZ2VkJz4iCisgICAgIiAgIDxhcmcgdHlwZT0ncycgbmFtZT0ndXJpJyBkaXJlY3Rpb249J291
dCcvPiIKKyAgICAiICA8L3NpZ25hbD4iCiAgICAgIiA8L2ludGVyZmFjZT4iCiAgICAgIjwvbm9k
ZT4iOwogCkBAIC00Niw5ICs0OSwyMyBAQCBzdGF0aWMgdm9pZCBkb2N1bWVudExvYWRlZENhbGxi
YWNrKFdlYktpdFdlYlBhZ2UqLCBncG9pbnRlciB1c2VyRGF0YSkKICAgICBnX2Fzc2VydChvayk7
CiB9CiAKK3N0YXRpYyB2b2lkIHVyaUNoYW5nZWRDYWxsYmFjayhXZWJLaXRXZWJQYWdlKiB3ZWJQ
YWdlLCBHUGFyYW1TcGVjKiBwc3BlYywgZ3BvaW50ZXIgdXNlckRhdGEpCit7CisgICAgYm9vbCBv
ayA9IGdfZGJ1c19jb25uZWN0aW9uX2VtaXRfc2lnbmFsKAorICAgICAgICBHX0RCVVNfQ09OTkVD
VElPTih1c2VyRGF0YSksCisgICAgICAgIDAsCisgICAgICAgICIvb3JnL3dlYmtpdC9ndGsvV2Vi
RXh0ZW5zaW9uVGVzdCIsCisgICAgICAgICJvcmcud2Via2l0Lmd0ay5XZWJFeHRlbnNpb25UZXN0
IiwKKyAgICAgICAgIlVSSUNoYW5nZWQiLAorICAgICAgICBnX3ZhcmlhbnRfbmV3KCIocykiLCB3
ZWJraXRfd2ViX3BhZ2VfZ2V0X3VyaSh3ZWJQYWdlKSksCisgICAgICAgIDApOworICAgIGdfYXNz
ZXJ0KG9rKTsKK30KKwogc3RhdGljIHZvaWQgcGFnZUNyZWF0ZWRDYWxsYmFjayhXZWJLaXRXZWJF
eHRlbnNpb24qLCBXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlLCBncG9pbnRlciB1c2VyRGF0YSkKIHsK
ICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlBhZ2UsICJkb2N1bWVudC1sb2FkZWQiLCBHX0NBTExC
QUNLKGRvY3VtZW50TG9hZGVkQ2FsbGJhY2spLCB1c2VyRGF0YSk7CisgICAgZ19zaWduYWxfY29u
bmVjdCh3ZWJQYWdlLCAibm90aWZ5Ojp1cmkiLCBHX0NBTExCQUNLKHVyaUNoYW5nZWRDYWxsYmFj
ayksIHVzZXJEYXRhKTsKIH0KIAogc3RhdGljIHZvaWQgbWV0aG9kQ2FsbENhbGxiYWNrKEdEQnVz
Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgY29uc3QgY2hhciogc2VuZGVyLCBjb25zdCBjaGFyKiBv
YmplY3RQYXRoLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBtZXRob2RO
YW1lLCBHVmFyaWFudCogcGFyYW1ldGVycywgR0RCdXNNZXRob2RJbnZvY2F0aW9uKiBpbnZvY2F0
aW9uLCBncG9pbnRlciB1c2VyRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYktpdFRlc3RCdXMuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViS2l0VGVzdEJ1cy5jcHAKaW5kZXggZWY4NDg0ODliNjlm
NjUwMTVhYjBkODNhMTgxMzM4YzAyODMwMWViMC4uOGMyZDNmNjM4YjE2Y2E5ZjI5MDk2YzIzOWYy
ODZlNjJkYjI3MjBiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvdGVzdHMvV2ViS2l0VGVzdEJ1cy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvdGVzdHMvV2ViS2l0VGVzdEJ1cy5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgV2ViS2l0
VGVzdEJ1czo6fldlYktpdFRlc3RCdXMoKQogICAgICAgICBraWxsKG1fcGlkLCBTSUdURVJNKTsK
IH0KIAotR0RCdXNDb25uZWN0aW9uKiBXZWJLaXRUZXN0QnVzOjpjb25uZWN0aW9uKCkKK0dEQnVz
Q29ubmVjdGlvbiogV2ViS2l0VGVzdEJ1czo6Z2V0T3JDcmVhdGVDb25uZWN0aW9uKCkKIHsKICAg
ICBpZiAobV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm4gbV9jb25uZWN0aW9uLmdldCgpOwpA
QCAtODgsNyArODgsNyBAQCBzdGF0aWMgdm9pZCBvbk5hbWVBcHBlYXJlZChHREJ1c0Nvbm5lY3Rp
b24qLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGdwb2ludGVyCiAKIEdEQnVzUHJveHkqIFdl
YktpdFRlc3RCdXM6OmNyZWF0ZVByb3h5KGNvbnN0IGNoYXIqIHNlcnZpY2VOYW1lLCBjb25zdCBj
aGFyKiBvYmplY3RQYXRoLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBHTWFpbkxvb3AqIG1h
aW5Mb29wKQogewotICAgIHVuc2lnbmVkIHdhdGNoZXJJRCA9IGdfYnVzX3dhdGNoX25hbWVfb25f
Y29ubmVjdGlvbihjb25uZWN0aW9uKCksIHNlcnZpY2VOYW1lLCBHX0JVU19OQU1FX1dBVENIRVJf
RkxBR1NfTk9ORSwgb25OYW1lQXBwZWFyZWQsIDAsIG1haW5Mb29wLCAwKTsKKyAgICB1bnNpZ25l
ZCB3YXRjaGVySUQgPSBnX2J1c193YXRjaF9uYW1lX29uX2Nvbm5lY3Rpb24oZ2V0T3JDcmVhdGVD
b25uZWN0aW9uKCksIHNlcnZpY2VOYW1lLCBHX0JVU19OQU1FX1dBVENIRVJfRkxBR1NfTk9ORSwg
b25OYW1lQXBwZWFyZWQsIDAsIG1haW5Mb29wLCAwKTsKICAgICBnX21haW5fbG9vcF9ydW4obWFp
bkxvb3ApOwogICAgIGdfYnVzX3Vud2F0Y2hfbmFtZSh3YXRjaGVySUQpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJLaXRUZXN0QnVzLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJLaXRUZXN0QnVzLmgK
aW5kZXggNWQ5ZDliYjQ4OTBjMWVkMGNmNTQ4NDFiZjJhMmViMDYxNDkzMzNlZC4uYjlmODU2YjI3
NTNlZjJmY2ViNDZkMWZjMDQxZTlkZDQ1MTVmNjQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViS2l0VGVzdEJ1cy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYktpdFRlc3RCdXMuaApAQCAtMzEsOSAr
MzEsMTAgQEAgcHVibGljOgogCiAgICAgYm9vbCBydW4oKTsKICAgICBHREJ1c1Byb3h5KiBjcmVh
dGVQcm94eShjb25zdCBjaGFyKiBzZXJ2aWNlTmFtZSwgY29uc3QgY2hhciogb2JqZWN0UGF0aCwg
Y29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgR01haW5Mb29wKik7CisgICAgR0RCdXNDb25uZWN0
aW9uKiBjb25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9uLmdldCgpOyB9CiAK
IHByaXZhdGU6Ci0gICAgR0RCdXNDb25uZWN0aW9uKiBjb25uZWN0aW9uKCk7CisgICAgR0RCdXND
b25uZWN0aW9uKiBnZXRPckNyZWF0ZUNvbm5lY3Rpb24oKTsKIAogICAgIHBpZF90IG1fcGlkOwog
ICAgIENTdHJpbmcgbV9hZGRyZXNzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuY3Bw
CmluZGV4IDJkNWIzMzVlM2ZjMjk5MjRjNDljNzQ4OTVkYjllYTI4NjViMTJmZmEuLmUxMDA0ZTZh
ZTBmMDNkNWI5OGE2NmUxNWUzZGJiNDM2MTFmNGY5OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2Vi
S2l0V2ViUGFnZS5jcHAKQEAgLTIzLDEyICsyMywxNyBAQAogI2luY2x1ZGUgIkltbXV0YWJsZURp
Y3Rpb25hcnkuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZS5oIgogI2luY2x1ZGUgIldLQnVu
ZGxlQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLQnVuZGxlRnJhbWUuaCIKICNpbmNsdWRlICJXZWJG
cmFtZS5oIgogI2luY2x1ZGUgIldlYktpdERPTURvY3VtZW50UHJpdmF0ZS5oIgogI2luY2x1ZGUg
IldlYktpdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJQYWdlUHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9Eb2N1bWVudExvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUu
aD4KKyNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwpAQCAtMzksMTQgKzQ0LDY0IEBAIGVudW0gewogICAgIExBU1RfU0lHTkFMCiB9OwogCitlbnVt
IHsKKyAgICBQUk9QXzAsCisKKyAgICBQUk9QX1VSSQorfTsKKwogc3RydWN0IF9XZWJLaXRXZWJQ
YWdlUHJpdmF0ZSB7CiAgICAgV2ViUGFnZSogd2ViUGFnZTsKKworICAgIENTdHJpbmcgdXJpOwog
fTsKIAogc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OwogCiBXRUJL
SVRfREVGSU5FX1RZUEUoV2ViS2l0V2ViUGFnZSwgd2Via2l0X3dlYl9wYWdlLCBHX1RZUEVfT0JK
RUNUKQogCitzdGF0aWMgQ1N0cmluZyBnZXRQcm92aXNpb25hbFVSTEZvckZyYW1lKFdlYkZyYW1l
KiB3ZWJGcmFtZSkKK3sKKyAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSB3ZWJG
cmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLT5wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCk7
CisgICAgaWYgKCFkb2N1bWVudExvYWRlci0+dW5yZWFjaGFibGVVUkwoKS5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiBkb2N1bWVudExvYWRlci0+dW5yZWFjaGFibGVVUkwoKS5zdHJpbmcoKS51
dGY4KCk7CisKKyAgICByZXR1cm4gZG9jdW1lbnRMb2FkZXItPnVybCgpLnN0cmluZygpLnV0Zjgo
KTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0V2ViUGFnZVNldFVSSShXZWJLaXRXZWJQYWdlKiB3
ZWJQYWdlLCBjb25zdCBDU3RyaW5nJiB1cmkpCit7CisgICAgaWYgKHdlYlBhZ2UtPnByaXYtPnVy
aSA9PSB1cmkpCisgICAgICAgIHJldHVybjsKKworICAgIHdlYlBhZ2UtPnByaXYtPnVyaSA9IHVy
aTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qod2ViUGFnZSksICJ1cmkiKTsKK30KKwor
c3RhdGljIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXS0J1bmRsZVBhZ2VS
ZWYsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiosIGNvbnN0IHZvaWQgKmNsaWVu
dEluZm8pCit7CisgICAgaWYgKCFXS0J1bmRsZUZyYW1lSXNNYWluRnJhbWUoZnJhbWUpKQorICAg
ICAgICByZXR1cm47CisKKyAgICB3ZWJraXRXZWJQYWdlU2V0VVJJKFdFQktJVF9XRUJfUEFHRShj
bGllbnRJbmZvKSwgZ2V0UHJvdmlzaW9uYWxVUkxGb3JGcmFtZSh0b0ltcGwoZnJhbWUpKSk7Cit9
CisKK3N0YXRpYyB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBX
S1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIGlmICgh
V0tCdW5kbGVGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
d2Via2l0V2ViUGFnZVNldFVSSShXRUJLSVRfV0VCX1BBR0UoY2xpZW50SW5mbyksIGdldFByb3Zp
c2lvbmFsVVJMRm9yRnJhbWUodG9JbXBsKGZyYW1lKSkpOworfQorCitzdGF0aWMgdm9pZCBkaWRT
YW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVu
ZGxlRnJhbWVSZWYgZnJhbWUsIFdLU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUgdHlwZSwgV0tU
eXBlUmVmKiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3sKKyAgICBpZiAoIVdL
QnVuZGxlRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCisgICAgICAgIHJldHVybjsKKworICAgIHdl
YmtpdFdlYlBhZ2VTZXRVUkkoV0VCS0lUX1dFQl9QQUdFKGNsaWVudEluZm8pLCB0b0ltcGwoZnJh
bWUpLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkudXRmOCgpKTsKK30K
Kwogc3RhdGljIHZvaWQgZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUoV0tCdW5kbGVQYWdl
UmVmLCBXS0J1bmRsZUZyYW1lUmVmLCBXS1R5cGVSZWYqLCBjb25zdCB2b2lkICpjbGllbnRJbmZv
KQogewogICAgIGdfc2lnbmFsX2VtaXQoV0VCS0lUX1dFQl9QQUdFKGNsaWVudEluZm8pLCBzaWdu
YWxzW0RPQ1VNRU5UX0xPQURFRF0sIDApOwpAQCAtMTExLDggKzE2Niw0MCBAQCBzdGF0aWMgdm9p
ZCBkaWRGYWlsTG9hZEZvclJlc291cmNlKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZy
YW1lUmVmLCB1aW50NgogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmluamVjdGVkQnVuZGxlKCkt
PnBvc3RNZXNzYWdlKFN0cmluZzo6ZnJvbVVURjgoIldlYlBhZ2UuRGlkRmFpbExvYWRGb3JSZXNv
dXJjZSIpLCBJbW11dGFibGVEaWN0aW9uYXJ5OjphZG9wdChtZXNzYWdlKS5nZXQoKSk7CiB9CiAK
K3N0YXRpYyB2b2lkIHdlYmtpdFdlYlBhZ2VHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1
aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcGFyYW1TcGVjKQoreworICAg
IFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UgPSBXRUJLSVRfV0VCX1BBR0Uob2JqZWN0KTsKKworICAg
IHN3aXRjaCAocHJvcElkKSB7CisgICAgY2FzZSBQUk9QX1VSSToKKyAgICAgICAgZ192YWx1ZV9z
ZXRfc3RyaW5nKHZhbHVlLCB3ZWJraXRfd2ViX3BhZ2VfZ2V0X3VyaSh3ZWJQYWdlKSk7CisgICAg
ICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9Q
Uk9QRVJUWV9JRChvYmplY3QsIHByb3BJZCwgcGFyYW1TcGVjKTsKKyAgICB9Cit9CisKIHN0YXRp
YyB2b2lkIHdlYmtpdF93ZWJfcGFnZV9jbGFzc19pbml0KFdlYktpdFdlYlBhZ2VDbGFzcyoga2xh
c3MpCiB7CisgICAgR09iamVjdENsYXNzKiBnT2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhr
bGFzcyk7CisKKyAgICBnT2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdFdlYlBhZ2VH
ZXRQcm9wZXJ0eTsKKworICAgIC8qKgorICAgICAqIFdlYktpdFdlYlBhZ2U6dXJpOgorICAgICAq
CisgICAgICogVGhlIGN1cnJlbnQgYWN0aXZlIFVSSSBvZiB0aGUgI1dlYktpdFdlYlBhZ2UuCisg
ICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKKyAgICAgICAgZ09i
amVjdENsYXNzLAorICAgICAgICBQUk9QX1VSSSwKKyAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmlu
ZygKKyAgICAgICAgICAgICJ1cmkiLAorICAgICAgICAgICAgXygiVVJJIiksCisgICAgICAgICAg
ICBfKCJUaGUgY3VycmVudCBhY3RpdmUgVVJJIG9mIHRoZSB3ZWIgcGFnZSIpLAorICAgICAgICAg
ICAgMCwKKyAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOworCiAgICAgLyoqCiAg
ICAgICogV2ViS2l0V2ViUGFnZTo6ZG9jdW1lbnQtbG9hZGVkOgogICAgICAqIEB3ZWJfcGFnZTog
dGhlICNXZWJLaXRXZWJQYWdlIG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZApAQCAtMTQw
LDE0ICsyMjcsMTQgQEAgV2ViS2l0V2ViUGFnZSogd2Via2l0V2ViUGFnZUNyZWF0ZShXZWJQYWdl
KiB3ZWJQYWdlKQogICAgIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudCBsb2FkZXJDbGllbnQgPSB7
CiAgICAgICAgIGtXS0J1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnRDdXJyZW50VmVyc2lvbiwK
ICAgICAgICAgcGFnZSwKLSAgICAgICAgMCwgLy8gZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JG
cmFtZQotICAgICAgICAwLCAvLyBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25h
bExvYWRGb3JGcmFtZQorICAgICAgICBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lLAor
ICAgICAgICBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFt
ZSwKICAgICAgICAgMCwgLy8gZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1l
CiAgICAgICAgIDAsIC8vIGRpZENvbW1pdExvYWRGb3JGcmFtZQogICAgICAgICBkaWRGaW5pc2hE
b2N1bWVudExvYWRGb3JGcmFtZSwKICAgICAgICAgMCwgLy8gZGlkRmluaXNoTG9hZEZvckZyYW1l
LAogICAgICAgICAwLCAvLyBkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lCi0gICAgICAgIDAs
IC8vIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZQorICAgICAgICBkaWRTYW1lRG9j
dW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUsCiAgICAgICAgIDAsIC8vIGRpZFJlY2VpdmVUaXRsZUZv
ckZyYW1lCiAgICAgICAgIDAsIC8vIGRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUKICAgICAgICAgMCwg
Ly8gZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUKQEAgLTIxMCwzICsyOTcs
MjIgQEAgV2ViS2l0RE9NRG9jdW1lbnQqIHdlYmtpdF93ZWJfcGFnZV9nZXRfZG9tX2RvY3VtZW50
KFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UpCiAKICAgICByZXR1cm4ga2l0KGNvcmVGcmFtZS0+ZG9j
dW1lbnQoKSk7CiB9CisKKy8qKgorICogd2Via2l0X3dlYl9wYWdlX2dldF91cmk6CisgKiBAd2Vi
X3BhZ2U6IGEgI1dlYktpdFdlYlBhZ2UKKyAqCisgKiBSZXR1cm5zIHRoZSBjdXJyZW50IGFjdGl2
ZSBVUkkgb2YgQHdlYl9wYWdlLgorICoKKyAqIFlvdSBjYW4gbW9uaXRvciB0aGUgYWN0aXZlIFVS
SSBieSBjb25uZWN0aW5nIHRvIHRoZSBub3RpZnk6OnVyaQorICogc2lnbmFsIG9mIEB3ZWJfcGFn
ZS4KKyAqCisgKiBSZXR1cm5zOiB0aGUgY3VycmVudCBhY3RpdmUgVVJJIG9mIEB3ZWJfdmlldyBv
ciAlTlVMTCBpZiBub3RoaW5nIGhhcyBiZWVuCisgKiAgICBsb2FkZWQgeWV0LgorICovCitjb25z
dCBnY2hhciogd2Via2l0X3dlYl9wYWdlX2dldF91cmkoV2ViS2l0V2ViUGFnZSogd2ViUGFnZSkK
K3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1BBR0Uod2ViUGFnZSks
IDApOworCisgICAgcmV0dXJuIHdlYlBhZ2UtPnByaXYtPnVyaS5kYXRhKCk7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2Vi
S2l0V2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL1dlYktpdFdlYlBhZ2UuaAppbmRleCBkOGY2MjM2OTdhOTQ3ODEzNzlhYjI5OTBiNmU0
ZWI0NWRkOGE2NDJiLi5lY2NlMGFkOTU3ZTAyNjk1YTViYzVlOTQ3MWI1NzhjOGU3Y2ZhYjRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvV2ViS2l0V2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmgKQEAgLTU3LDYgKzU3LDkgQEAgd2Via2l0
X3dlYl9wYWdlX2dldF90eXBlICAgICAgICAgKHZvaWQpOwogV0VCS0lUX0FQSSBXZWJLaXRET01E
b2N1bWVudCAqCiB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2RvbV9kb2N1bWVudCAoV2ViS2l0V2ViUGFn
ZSAqd2ViX3BhZ2UpOwogCitXRUJLSVRfQVBJIGNvbnN0IGdjaGFyICoKK3dlYmtpdF93ZWJfcGFn
ZV9nZXRfdXJpIChXZWJLaXRXZWJQYWdlICp3ZWJfcGFnZSk7CisKIEdfRU5EX0RFQ0xTCiAKICNl
bmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>198047</attachid>
            <date>2013-04-15 03:20:11 -0700</date>
            <delta_ts>2013-04-18 00:12:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111288-20130415121945.patch</filename>
            <type>text/plain</type>
            <size>17758</size>
            <attacher name="Manuel Rego Casasnovas">rego</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4NDE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggODNhNWI1OWY0YThhMDUx
ZTVjN2NkNzM2MTU5N2NhZGY0OTU5YzRmMy4uMTZmNmUwYjliNzc5YjRhY2VlYzc4NGY5ODNjYjlj
NDIyY2IyYWU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEzLTAzLTEyICBNYW51
ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dL
Ml0gQWRkIFdlYktpdFdlYlBhZ2U6OndlYmtpdF93ZWJfcGFnZV9nZXRfdXJpIHRvIFdlYktpdDIg
R1RLKyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExMTI4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBuZXcgcHJvcGVydHkgVVJJIHRvIFdlYktpdFdlYlBhZ2UgcHJvdmlkaW5nIGEgbWV0aG9k
CisgICAgICAgIHdlYmtpdF93ZWJfcGFnZV9nZXRfdXJpIHRvIGdldCBpdCBhbmQgdGhlIHNpZ25h
bCAibm90aWZ5Ojp1cmkiIHRvCisgICAgICAgIG1vbml0b3IgY2hhbmdlcyBpbiB0aGUgVVJJLgor
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4
dDogSW5jbHVkZSBuZXcgbWV0aG9kIGluCisgICAgICAgIEdUSysgZG9jLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAodGVz
dFdlYlBhZ2VVUkkpOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAgKGFmdGVyQWxsKTog
QWRkIHRlc3QgdG8gY2hlY2sgdGhhdCBXZWJLaXRXZWJQYWdlIFVSSSBtYXRjaGVzIHdpdGgKKyAg
ICAgICAgV2ViS2l0V2ViVmlldyB2YWx1ZS4gVGhlIHRlc3RzIGlzIGxpc3RlbmluZyBmb3IgY2hh
bmdlcyBpbiBXZWJLaXRXZWJQYWdlCisgICAgICAgIFVSSSB2aWEgRC1CdXMgYW5kIGNoZWNrcyB0
aGF0IHZhbHVlIGlzIHRoZSBzYW1lIHRoYW4gV2ViS2l0V2ViVmlldyBVUkkuCisgICAgICAgIEl0
IGFsc28gY2hlY2tzIHRoYXQgdGhlIG9yZGVyIG9mIHRoZSBVUklzIGluIGEgcmVkaXJlY3Rpb24g
aXMgcmlnaHQuCisgICAgICAgIFdoZW4gdGhlIHRlc3QgZmluaXNoZXMgdGhlIHNpZ25hbHMgYXJl
IGRpc2Nvbm5lY3RlZCBwcm9wZXJseS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0
cy9XZWJFeHRlbnNpb25UZXN0LmNwcDoKKyAgICAgICAgKHVyaUNoYW5nZWRDYWxsYmFjayk6Cisg
ICAgICAgIChwYWdlQ3JlYXRlZENhbGxiYWNrKTogQWRkIG5ldyBELUJ1cyBzaWduYWwgIlVSSUNo
YW5nZWQiIGNvbm5lY3RlZCB0bworICAgICAgICAibm90aWZ5Ojp1cmkiIHNpZ25hbCBvZiBXZWJL
aXRXZWJQYWdlLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYktpdFRlc3RC
dXMuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdEJ1czo6Z2V0T3JDcmVhdGVDb25uZWN0aW9uKTog
UmVuYW1lIG1ldGhvZCBjb25uZWN0aW9uKCkgdG8KKyAgICAgICAgZ2V0T3JDcmVhdGVDb25uZWN0
aW9uKCkuCisgICAgICAgIChXZWJLaXRUZXN0QnVzOjpjcmVhdGVQcm94eSk6IFVzZSB0aGUgbmV3
IG1ldGhvZCBuYW1lLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYktpdFRl
c3RCdXMuaDoKKyAgICAgICAgKFdlYktpdFRlc3RCdXM6OmNvbm5lY3Rpb24pOiBBZGQgcHVibGlj
IGdldHRlciBmb3IgbV9jb25uZWN0aW9uLgorICAgICAgICAoV2ViS2l0VGVzdEJ1cyk6IEFkZCBw
cml2YXRlIG1ldGhvZCBoZWFkZXIgZ2V0T3JDcmVhdGVDb25uZWN0aW9uKCkuCisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuY3BwOgorICAg
ICAgICAoX1dlYktpdFdlYlBhZ2VQcml2YXRlKTogQWRkIG5ldyBVUkkgYXR0cmlidXRlLgorICAg
ICAgICAod2Via2l0V2ViUGFnZVNldFVSSSk6IE1ldGhvZCB0byBzZXQgdGhlIFVSSSBhbmQgZW1p
dCB0aGUgIm5vdGlmeTp1cmkiCisgICAgICAgIHNpZ25hbCBpZiBpdCBoYXMgY2hhbmdlZC4KKyAg
ICAgICAgKGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOiBBdCB0aGlzIHBvaW50IGl0
IHVzZSB0aGUgdW5yZWFjaGFibGUKKyAgICAgICAgVVJMIGZyb20gcHJvdmlzaW9uYWwgZG9jdW1l
bnQgbG9hZGVyIGlmIGFueS4gT3RoZXJ3aXNlLCBpdCB1c2VzIHRoZSBVUkwKKyAgICAgICAgZnJv
bSBwcm92aXNpb25hbCBkb2N1bWVudCBsb2FkZXIuCisgICAgICAgIChkaWRSZWNlaXZlU2VydmVy
UmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6IEluIHRoZSBjYXNlIG9mCisgICAg
ICAgIHJlZGlyZWN0aW9ucyBpdCB3b3JrcyBsaWtlIGZvciBkaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lIGdldHRpbmcKKyAgICAgICAgdGhlIHVucmVhY2hhYmxlIFVSTCBpZiBhbnkuCisg
ICAgICAgIChkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUpOiBJbiB0aGlzIGNhc2Ug
aXQgZ2V0cyB0aGUgVVJMIGZyb20KKyAgICAgICAgdGhlIGRvY3VtZW50IGxvYWRlci4KKyAgICAg
ICAgKHdlYmtpdFdlYlBhZ2VHZXRQcm9wZXJ0eSk6IEFkZCBjb2RlIHJlbGF0ZWQgdG8gVVJJIHBy
b3BlcnR5LgorICAgICAgICAod2Via2l0X3dlYl9wYWdlX2NsYXNzX2luaXQpOiBBZGQgYml0cyBy
ZWxhdGVkIHRvIFVSSSBwcm9wZXJ0eS4KKyAgICAgICAgKHdlYmtpdFdlYlBhZ2VDcmVhdGUpOiBJ
bXBsZW1lbnQgY2FsbGJhY2tzIHRvIG1vbml0b3IgVVJJIGNoYW5nZXMuCisgICAgICAgICh3ZWJr
aXRfd2ViX3BhZ2VfZ2V0X3VyaSk6IFJldHVybiBVUkkgYXR0cmlidXRlLgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmg6IEFkZCBuZXcg
bWV0aG9kCisgICAgICAgIGhlYWRlci4KKwogMjAxMy0wNC0xNCAgQ2hyaXN0b3BoZSBEdW1leiAg
PGNoLmR1bWV6QHNpc2Euc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF1bV0syXSBSZWdyZXNz
aW9uKHIxNDgyNzQpOiBCcm9rZSByZW5kZXJpbmcgaW4gdGhlIGJyb3dzZXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9u
cy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGst
c2VjdGlvbnMudHh0CmluZGV4IGY2ZThhODQ3NzdiZTI3YjQ1YmVkZTMwMzY1YjI0NDA5ZmIyYTI5
Y2EuLjBkZWUyNWQzZDljMGE5MDIyNjEyZGMxYTJlYmIyY2M4MTllYzE1ZWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9u
cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQy
Z3RrLXNlY3Rpb25zLnR4dApAQCAtOTU0LDYgKzk1NCw3IEBAIHdlYmtpdF93ZWJfZXh0ZW5zaW9u
X2dldF90eXBlCiA8RklMRT5XZWJLaXRXZWJQYWdlPC9GSUxFPgogV2ViS2l0V2ViUGFnZQogd2Vi
a2l0X3dlYl9wYWdlX2dldF9kb21fZG9jdW1lbnQKK3dlYmtpdF93ZWJfcGFnZV9nZXRfdXJpCiAK
IDxTVUJTRUNUSU9OIFN0YW5kYXJkPgogV2ViS2l0V2ViUGFnZUNsYXNzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0TG9hZGVyQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RMb2FkZXJDbGll
bnQuY3BwCmluZGV4IDQyYzZiNTFkZDYzNTk1ODBjYmZjM2RhMDYwNDhmMTE2YzY4NDc4MDEuLjJh
OWM0ZmNiZjA2NTUwZWY1Y2E1MGE0YjAxMGZhNTkxYTZlMTg3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RMb2FkZXJDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RMb2FkZXJDbGll
bnQuY3BwCkBAIC0yMiwxMSArMjIsMTQgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1
ZGUgIkxvYWRUcmFja2luZ1Rlc3QuaCIKKyNpbmNsdWRlICJXZWJLaXRUZXN0QnVzLmgiCiAjaW5j
bHVkZSAiV2ViS2l0VGVzdFNlcnZlci5oIgorI2luY2x1ZGUgIldlYlZpZXdUZXN0LmgiCiAjaW5j
bHVkZSA8Z3RrL2d0ay5oPgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KIAorc3RhdGljIFdlYktpdFRlc3RCdXMqIGJ1czsKIHN0YXRpYyBX
ZWJLaXRUZXN0U2VydmVyKiBrU2VydmVyOwogCiBzdGF0aWMgdm9pZCB0ZXN0TG9hZGluZ1N0YXR1
cyhMb2FkVHJhY2tpbmdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyIGRhdGEpCkBAIC0yODAsNiAr
MjgzLDY4IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3SXNMb2FkaW5nKFZpZXdJc0xvYWRpbmdU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hl
ZCgpOwogfQogCitjbGFzcyBXZWJQYWdlVVJJVGVzdDogcHVibGljIFdlYlZpZXdUZXN0IHsKK3B1
YmxpYzoKKyAgICBNQUtFX0dMSUJfVEVTVF9GSVhUVVJFKFdlYlBhZ2VVUklUZXN0KTsKKworICAg
IHN0YXRpYyB2b2lkIHdlYlBhZ2VVUklDaGFuZ2VkQ2FsbGJhY2soR0RCdXNDb25uZWN0aW9uKiwg
Y29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIEdWYXJp
YW50KiByZXN1bHQsIFdlYlBhZ2VVUklUZXN0KiB0ZXN0KQorICAgIHsKKyAgICAgICAgY29uc3Qg
Y2hhciogdXJpOworICAgICAgICBnX3ZhcmlhbnRfZ2V0KHJlc3VsdCwgIigmcykiLCAmdXJpKTsK
KyAgICAgICAgdGVzdC0+bV93ZWJQYWdlVVJJcy5hcHBlbmQodXJpKTsKKyAgICB9CisKKyAgICBz
dGF0aWMgdm9pZCB3ZWJWaWV3VVJJQ2hhbmdlZChHT2JqZWN0KiwgR1BhcmFtU3BlYyosIFdlYlBh
Z2VVUklUZXN0KiB0ZXN0KQorICAgIHsKKyAgICAgICAgdGVzdC0+bV93ZWJWaWV3VVJJcy5hcHBl
bmQod2Via2l0X3dlYl92aWV3X2dldF91cmkodGVzdC0+bV93ZWJWaWV3KSk7CisgICAgfQorCisg
ICAgV2ViUGFnZVVSSVRlc3QoKQorICAgIHsKKyAgICAgICAgR1JlZlB0cjxHREJ1c1Byb3h5PiBw
cm94eSA9IGFkb3B0R1JlZihidXMtPmNyZWF0ZVByb3h5KCJvcmcud2Via2l0Lmd0ay5XZWJFeHRl
bnNpb25UZXN0IiwKKyAgICAgICAgICAgICIvb3JnL3dlYmtpdC9ndGsvV2ViRXh0ZW5zaW9uVGVz
dCIsICJvcmcud2Via2l0Lmd0ay5XZWJFeHRlbnNpb25UZXN0IiwgbV9tYWluTG9vcCkpOworICAg
ICAgICBtX3VyaUNoYW5nZWRTaWduYWxJRCA9IGdfZGJ1c19jb25uZWN0aW9uX3NpZ25hbF9zdWJz
Y3JpYmUoCisgICAgICAgICAgICBnX2RidXNfcHJveHlfZ2V0X2Nvbm5lY3Rpb24ocHJveHkuZ2V0
KCkpLAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICJvcmcud2Via2l0Lmd0ay5XZWJFeHRl
bnNpb25UZXN0IiwKKyAgICAgICAgICAgICJVUklDaGFuZ2VkIiwKKyAgICAgICAgICAgICIvb3Jn
L3dlYmtpdC9ndGsvV2ViRXh0ZW5zaW9uVGVzdCIsCisgICAgICAgICAgICAwLAorICAgICAgICAg
ICAgR19EQlVTX1NJR05BTF9GTEFHU19OT05FLAorICAgICAgICAgICAgcmVpbnRlcnByZXRfY2Fz
dDxHREJ1c1NpZ25hbENhbGxiYWNrPih3ZWJQYWdlVVJJQ2hhbmdlZENhbGxiYWNrKSwKKyAgICAg
ICAgICAgIHRoaXMsCisgICAgICAgICAgICAwKTsKKyAgICAgICAgZ19hc3NlcnQobV91cmlDaGFu
Z2VkU2lnbmFsSUQpOworCisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAibm90
aWZ5Ojp1cmkiLCBHX0NBTExCQUNLKHdlYlZpZXdVUklDaGFuZ2VkKSwgdGhpcyk7CisgICAgfQor
CisgICAgfldlYlBhZ2VVUklUZXN0KCkKKyAgICB7CisgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJz
X2Rpc2Nvbm5lY3RfbWF0Y2hlZChtX3dlYlZpZXcsIEdfU0lHTkFMX01BVENIX0RBVEEsIDAsIDAs
IDAsIDAsIHRoaXMpOworICAgICAgICBnX2RidXNfY29ubmVjdGlvbl9zaWduYWxfdW5zdWJzY3Jp
YmUoYnVzLT5jb25uZWN0aW9uKCksIG1fdXJpQ2hhbmdlZFNpZ25hbElEKTsKKyAgICB9CisKKyAg
ICB1bnNpZ25lZCBtX3VyaUNoYW5nZWRTaWduYWxJRDsKKyAgICBWZWN0b3I8Q1N0cmluZz4gbV93
ZWJQYWdlVVJJczsKKyAgICBWZWN0b3I8Q1N0cmluZz4gbV93ZWJWaWV3VVJJczsKK307CisKK3N0
YXRpYyB2b2lkIHRlc3RXZWJQYWdlVVJJKFdlYlBhZ2VVUklUZXN0KiB0ZXN0LCBnY29uc3Rwb2lu
dGVyKQoreworICAgIHRlc3QtPmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3JlZGly
ZWN0IikuZGF0YSgpKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKworICAg
IGdfYXNzZXJ0X2NtcGludCh0ZXN0LT5tX3dlYlBhZ2VVUklzLnNpemUoKSwgPT0sIHRlc3QtPm1f
d2ViVmlld1VSSXMuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRlc3QtPm1f
d2ViUGFnZVVSSXMuc2l6ZSgpOyArK2kpCisgICAgICAgIEFTU0VSVF9DTVBfQ1NUUklORyh0ZXN0
LT5tX3dlYlBhZ2VVUklzW2ldLCA9PSwgdGVzdC0+bV93ZWJWaWV3VVJJc1tpXSk7CisKKyAgICBn
X2Fzc2VydF9jbXBpbnQodGVzdC0+bV93ZWJQYWdlVVJJcy5zaXplKCksID09LCAyKTsKKyAgICBB
U1NFUlRfQ01QX0NTVFJJTkcodGVzdC0+bV93ZWJQYWdlVVJJc1swXSwgPT0sIGtTZXJ2ZXItPmdl
dFVSSUZvclBhdGgoIi9yZWRpcmVjdCIpKTsKKyAgICBBU1NFUlRfQ01QX0NTVFJJTkcodGVzdC0+
bV93ZWJQYWdlVVJJc1sxXSwgPT0sIGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9ub3JtYWwiKSk7
CisKK30KKwogc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBT
b3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hhc2hUYWJsZSosIFNvdXBD
bGllbnRDb250ZXh0KiwgZ3BvaW50ZXIpCiB7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHJlc3Bv
bnNlU3RyaW5nID0gIjxodG1sPjxib2R5PlRlc3RpbmchVGVzdGluZyFUZXN0aW5nIVRlc3Rpbmch
VGVzdGluZyFUZXN0aW5nIVRlc3RpbmchIgpAQCAtMzE4LDYgKzM4MywxMSBAQCBzdGF0aWMgdm9p
ZCBzZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdl
LCBjb25zdCBjaGFyKgogCiB2b2lkIGJlZm9yZUFsbCgpCiB7CisgICAgd2Via2l0X3dlYl9jb250
ZXh0X3NldF93ZWJfZXh0ZW5zaW9uc19kaXJlY3Rvcnkod2Via2l0X3dlYl9jb250ZXh0X2dldF9k
ZWZhdWx0KCksIFdFQktJVF9URVNUX1dFQl9FWFRFTlNJT05TX0RJUik7CisgICAgYnVzID0gbmV3
IFdlYktpdFRlc3RCdXMoKTsKKyAgICBpZiAoIWJ1cy0+cnVuKCkpCisgICAgICAgIHJldHVybjsK
KwogICAgIGtTZXJ2ZXIgPSBuZXcgV2ViS2l0VGVzdFNlcnZlcigpOwogICAgIGtTZXJ2ZXItPnJ1
bihzZXJ2ZXJDYWxsYmFjayk7CiAKQEAgLTMzOCw5ICs0MDgsMTEgQEAgdm9pZCBiZWZvcmVBbGwo
KQogICAgIFZpZXdVUklUcmFja2luZ1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJhY3RpdmUt
dXJpIiwgdGVzdFdlYlZpZXdBY3RpdmVVUkkpOwogCiAgICAgVmlld0lzTG9hZGluZ1Rlc3Q6OmFk
ZCgiV2ViS2l0V2ViVmlldyIsICJpcy1sb2FkaW5nIiwgdGVzdFdlYlZpZXdJc0xvYWRpbmcpOwor
ICAgIFdlYlBhZ2VVUklUZXN0OjphZGQoIldlYktpdFdlYlBhZ2UiLCAiZ2V0LXVyaSIsIHRlc3RX
ZWJQYWdlVVJJKTsKIH0KIAogdm9pZCBhZnRlckFsbCgpCiB7CisgICAgZGVsZXRlIGJ1czsKICAg
ICBkZWxldGUga1NlcnZlcjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL3Rlc3RzL1dlYkV4dGVuc2lvblRlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViRXh0ZW5zaW9uVGVzdC5jcHAKaW5kZXggYWE2NjA0MmM4
YzhkMTMyNjBmZWRiOWRkMzM4MDQ4NWY2MDlkMzk5ZS4uZmE4NzRmZTNmMDU5YzljM2VlMzUzNGY2
NTI1MDVjM2MwZWUxOGUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvdGVzdHMvV2ViRXh0ZW5zaW9uVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViRXh0ZW5zaW9uVGVzdC5jcHAKQEAgLTMxLDYgKzMxLDkg
QEAgc3RhdGljIGNvbnN0IGNoYXIgaW50cm9zcGVjdGlvblhNTFtdID0KICAgICAiICAgPGFyZyB0
eXBlPSdzJyBuYW1lPSd0aXRsZScgZGlyZWN0aW9uPSdvdXQnLz4iCiAgICAgIiAgPC9tZXRob2Q+
IgogICAgICIgIDxzaWduYWwgbmFtZT0nRG9jdW1lbnRMb2FkZWQnLz4iCisgICAgIiAgPHNpZ25h
bCBuYW1lPSdVUklDaGFuZ2VkJz4iCisgICAgIiAgIDxhcmcgdHlwZT0ncycgbmFtZT0ndXJpJyBk
aXJlY3Rpb249J291dCcvPiIKKyAgICAiICA8L3NpZ25hbD4iCiAgICAgIiA8L2ludGVyZmFjZT4i
CiAgICAgIjwvbm9kZT4iOwogCkBAIC00Niw5ICs0OSwyMyBAQCBzdGF0aWMgdm9pZCBkb2N1bWVu
dExvYWRlZENhbGxiYWNrKFdlYktpdFdlYlBhZ2UqLCBncG9pbnRlciB1c2VyRGF0YSkKICAgICBn
X2Fzc2VydChvayk7CiB9CiAKK3N0YXRpYyB2b2lkIHVyaUNoYW5nZWRDYWxsYmFjayhXZWJLaXRX
ZWJQYWdlKiB3ZWJQYWdlLCBHUGFyYW1TcGVjKiBwc3BlYywgZ3BvaW50ZXIgdXNlckRhdGEpCit7
CisgICAgYm9vbCBvayA9IGdfZGJ1c19jb25uZWN0aW9uX2VtaXRfc2lnbmFsKAorICAgICAgICBH
X0RCVVNfQ09OTkVDVElPTih1c2VyRGF0YSksCisgICAgICAgIDAsCisgICAgICAgICIvb3JnL3dl
YmtpdC9ndGsvV2ViRXh0ZW5zaW9uVGVzdCIsCisgICAgICAgICJvcmcud2Via2l0Lmd0ay5XZWJF
eHRlbnNpb25UZXN0IiwKKyAgICAgICAgIlVSSUNoYW5nZWQiLAorICAgICAgICBnX3ZhcmlhbnRf
bmV3KCIocykiLCB3ZWJraXRfd2ViX3BhZ2VfZ2V0X3VyaSh3ZWJQYWdlKSksCisgICAgICAgIDAp
OworICAgIGdfYXNzZXJ0KG9rKTsKK30KKwogc3RhdGljIHZvaWQgcGFnZUNyZWF0ZWRDYWxsYmFj
ayhXZWJLaXRXZWJFeHRlbnNpb24qLCBXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlLCBncG9pbnRlciB1
c2VyRGF0YSkKIHsKICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlBhZ2UsICJkb2N1bWVudC1sb2Fk
ZWQiLCBHX0NBTExCQUNLKGRvY3VtZW50TG9hZGVkQ2FsbGJhY2spLCB1c2VyRGF0YSk7CisgICAg
Z19zaWduYWxfY29ubmVjdCh3ZWJQYWdlLCAibm90aWZ5Ojp1cmkiLCBHX0NBTExCQUNLKHVyaUNo
YW5nZWRDYWxsYmFjayksIHVzZXJEYXRhKTsKIH0KIAogc3RhdGljIHZvaWQgbWV0aG9kQ2FsbENh
bGxiYWNrKEdEQnVzQ29ubmVjdGlvbiogY29ubmVjdGlvbiwgY29uc3QgY2hhciogc2VuZGVyLCBj
b25zdCBjaGFyKiBvYmplY3RQYXRoLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBj
aGFyKiBtZXRob2ROYW1lLCBHVmFyaWFudCogcGFyYW1ldGVycywgR0RCdXNNZXRob2RJbnZvY2F0
aW9uKiBpbnZvY2F0aW9uLCBncG9pbnRlciB1c2VyRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYktpdFRlc3RCdXMuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViS2l0VGVzdEJ1cy5jcHAKaW5kZXgg
ZWY4NDg0ODliNjlmNjUwMTVhYjBkODNhMTgxMzM4YzAyODMwMWViMC4uOGMyZDNmNjM4YjE2Y2E5
ZjI5MDk2YzIzOWYyODZlNjJkYjI3MjBiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViS2l0VGVzdEJ1cy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViS2l0VGVzdEJ1cy5jcHAKQEAgLTY5LDcgKzY5
LDcgQEAgV2ViS2l0VGVzdEJ1czo6fldlYktpdFRlc3RCdXMoKQogICAgICAgICBraWxsKG1fcGlk
LCBTSUdURVJNKTsKIH0KIAotR0RCdXNDb25uZWN0aW9uKiBXZWJLaXRUZXN0QnVzOjpjb25uZWN0
aW9uKCkKK0dEQnVzQ29ubmVjdGlvbiogV2ViS2l0VGVzdEJ1czo6Z2V0T3JDcmVhdGVDb25uZWN0
aW9uKCkKIHsKICAgICBpZiAobV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm4gbV9jb25uZWN0
aW9uLmdldCgpOwpAQCAtODgsNyArODgsNyBAQCBzdGF0aWMgdm9pZCBvbk5hbWVBcHBlYXJlZChH
REJ1c0Nvbm5lY3Rpb24qLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGdwb2ludGVyCiAKIEdE
QnVzUHJveHkqIFdlYktpdFRlc3RCdXM6OmNyZWF0ZVByb3h5KGNvbnN0IGNoYXIqIHNlcnZpY2VO
YW1lLCBjb25zdCBjaGFyKiBvYmplY3RQYXRoLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBH
TWFpbkxvb3AqIG1haW5Mb29wKQogewotICAgIHVuc2lnbmVkIHdhdGNoZXJJRCA9IGdfYnVzX3dh
dGNoX25hbWVfb25fY29ubmVjdGlvbihjb25uZWN0aW9uKCksIHNlcnZpY2VOYW1lLCBHX0JVU19O
QU1FX1dBVENIRVJfRkxBR1NfTk9ORSwgb25OYW1lQXBwZWFyZWQsIDAsIG1haW5Mb29wLCAwKTsK
KyAgICB1bnNpZ25lZCB3YXRjaGVySUQgPSBnX2J1c193YXRjaF9uYW1lX29uX2Nvbm5lY3Rpb24o
Z2V0T3JDcmVhdGVDb25uZWN0aW9uKCksIHNlcnZpY2VOYW1lLCBHX0JVU19OQU1FX1dBVENIRVJf
RkxBR1NfTk9ORSwgb25OYW1lQXBwZWFyZWQsIDAsIG1haW5Mb29wLCAwKTsKICAgICBnX21haW5f
bG9vcF9ydW4obWFpbkxvb3ApOwogICAgIGdfYnVzX3Vud2F0Y2hfbmFtZSh3YXRjaGVySUQpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJL
aXRUZXN0QnVzLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJL
aXRUZXN0QnVzLmgKaW5kZXggNWQ5ZDliYjQ4OTBjMWVkMGNmNTQ4NDFiZjJhMmViMDYxNDkzMzNl
ZC4uYjlmODU2YjI3NTNlZjJmY2ViNDZkMWZjMDQxZTlkZDQ1MTVmNjQ1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViS2l0VGVzdEJ1cy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYktpdFRlc3RCdXMu
aApAQCAtMzEsOSArMzEsMTAgQEAgcHVibGljOgogCiAgICAgYm9vbCBydW4oKTsKICAgICBHREJ1
c1Byb3h5KiBjcmVhdGVQcm94eShjb25zdCBjaGFyKiBzZXJ2aWNlTmFtZSwgY29uc3QgY2hhciog
b2JqZWN0UGF0aCwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgR01haW5Mb29wKik7CisgICAg
R0RCdXNDb25uZWN0aW9uKiBjb25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9u
LmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgR0RCdXNDb25uZWN0aW9uKiBjb25uZWN0aW9uKCk7
CisgICAgR0RCdXNDb25uZWN0aW9uKiBnZXRPckNyZWF0ZUNvbm5lY3Rpb24oKTsKIAogICAgIHBp
ZF90IG1fcGlkOwogICAgIENTdHJpbmcgbV9hZGRyZXNzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktp
dFdlYlBhZ2UuY3BwCmluZGV4IGY1ZDZiYTUyODE2NTA4MGQ2ODExOGVjMDZmODM4M2JiYTg2Mjk2
ZjkuLjU3NTU0NzNlNmYyMzcyNGEzZjJkY2EwNTcyZDJhZThjODliNGViNWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRX
ZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5jcHAKQEAgLTI5LDcgKzI5LDExIEBACiAjaW5jbHVkZSAi
V2ViS2l0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlBhZ2VQcml2YXRlLmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0RvY3VtZW50TG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5o
PgorI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CkBAIC00MCwxNCArNDQsNjQgQEAgZW51bSB7CiAgICAgTEFTVF9TSUdOQUwKIH07CiAKK2VudW0g
eworICAgIFBST1BfMCwKKworICAgIFBST1BfVVJJCit9OworCiBzdHJ1Y3QgX1dlYktpdFdlYlBh
Z2VQcml2YXRlIHsKICAgICBXZWJQYWdlKiB3ZWJQYWdlOworCisgICAgQ1N0cmluZyB1cmk7CiB9
OwogCiBzdGF0aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAsIH07CiAKIFdFQktJ
VF9ERUZJTkVfVFlQRShXZWJLaXRXZWJQYWdlLCB3ZWJraXRfd2ViX3BhZ2UsIEdfVFlQRV9PQkpF
Q1QpCiAKK3N0YXRpYyBDU3RyaW5nIGdldFByb3Zpc2lvbmFsVVJMRm9yRnJhbWUoV2ViRnJhbWUq
IHdlYkZyYW1lKQoreworICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IHdlYkZy
YW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCktPnByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKTsK
KyAgICBpZiAoIWRvY3VtZW50TG9hZGVyLT51bnJlYWNoYWJsZVVSTCgpLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIGRvY3VtZW50TG9hZGVyLT51bnJlYWNoYWJsZVVSTCgpLnN0cmluZygpLnV0
ZjgoKTsKKworICAgIHJldHVybiBkb2N1bWVudExvYWRlci0+dXJsKCkuc3RyaW5nKCkudXRmOCgp
OworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJQYWdlU2V0VVJJKFdlYktpdFdlYlBhZ2UqIHdl
YlBhZ2UsIGNvbnN0IENTdHJpbmcmIHVyaSkKK3sKKyAgICBpZiAod2ViUGFnZS0+cHJpdi0+dXJp
ID09IHVyaSkKKyAgICAgICAgcmV0dXJuOworCisgICAgd2ViUGFnZS0+cHJpdi0+dXJpID0gdXJp
OworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVCh3ZWJQYWdlKSwgInVyaSIpOworfQorCitz
dGF0aWMgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdLQnVuZGxlUGFnZVJl
ZiwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmKiwgY29uc3Qgdm9pZCAqY2xpZW50
SW5mbykKK3sKKyAgICBpZiAoIVdLQnVuZGxlRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCisgICAg
ICAgIHJldHVybjsKKworICAgIHdlYmtpdFdlYlBhZ2VTZXRVUkkoV0VCS0lUX1dFQl9QQUdFKGNs
aWVudEluZm8pLCBnZXRQcm92aXNpb25hbFVSTEZvckZyYW1lKHRvSW1wbChmcmFtZSkpKTsKK30K
Kworc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdL
VHlwZVJlZiogdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCit7CisgICAgaWYgKCFX
S0J1bmRsZUZyYW1lSXNNYWluRnJhbWUoZnJhbWUpKQorICAgICAgICByZXR1cm47CisKKyAgICB3
ZWJraXRXZWJQYWdlU2V0VVJJKFdFQktJVF9XRUJfUEFHRShjbGllbnRJbmZvKSwgZ2V0UHJvdmlz
aW9uYWxVUkxGb3JGcmFtZSh0b0ltcGwoZnJhbWUpKSk7Cit9CisKK3N0YXRpYyB2b2lkIGRpZFNh
bWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5k
bGVGcmFtZVJlZiBmcmFtZSwgV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSB0eXBlLCBXS1R5
cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIGlmICghV0tC
dW5kbGVGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgd2Vi
a2l0V2ViUGFnZVNldFVSSShXRUJLSVRfV0VCX1BBR0UoY2xpZW50SW5mbyksIHRvSW1wbChmcmFt
ZSktPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKS51dGY4KCkpOworfQor
CiBzdGF0aWMgdm9pZCBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShXS0J1bmRsZVBhZ2VS
ZWYsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiosIGNvbnN0IHZvaWQgKmNsaWVu
dEluZm8pCiB7CiAgICAgaWYgKCFXS0J1bmRsZUZyYW1lSXNNYWluRnJhbWUoZnJhbWUpKQpAQCAt
MTE1LDggKzE2OSw0MCBAQCBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZEZvclJlc291cmNlKFdLQnVu
ZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmLCB1aW50NgogICAgIFdlYlByb2Nlc3M6
OnNoYXJlZCgpLmluamVjdGVkQnVuZGxlKCktPnBvc3RNZXNzYWdlKFN0cmluZzo6ZnJvbVVURjgo
IldlYlBhZ2UuRGlkRmFpbExvYWRGb3JSZXNvdXJjZSIpLCBJbW11dGFibGVEaWN0aW9uYXJ5Ojph
ZG9wdChtZXNzYWdlKS5nZXQoKSk7CiB9CiAKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlBhZ2VHZXRQ
cm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1ZSwgR1Bh
cmFtU3BlYyogcGFyYW1TcGVjKQoreworICAgIFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UgPSBXRUJL
SVRfV0VCX1BBR0Uob2JqZWN0KTsKKworICAgIHN3aXRjaCAocHJvcElkKSB7CisgICAgY2FzZSBQ
Uk9QX1VSSToKKyAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCB3ZWJraXRfd2ViX3Bh
Z2VfZ2V0X3VyaSh3ZWJQYWdlKSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJZCwgcGFy
YW1TcGVjKTsKKyAgICB9Cit9CisKIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfcGFnZV9jbGFzc19p
bml0KFdlYktpdFdlYlBhZ2VDbGFzcyoga2xhc3MpCiB7CisgICAgR09iamVjdENsYXNzKiBnT2Jq
ZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhrbGFzcyk7CisKKyAgICBnT2JqZWN0Q2xhc3MtPmdl
dF9wcm9wZXJ0eSA9IHdlYmtpdFdlYlBhZ2VHZXRQcm9wZXJ0eTsKKworICAgIC8qKgorICAgICAq
IFdlYktpdFdlYlBhZ2U6dXJpOgorICAgICAqCisgICAgICogVGhlIGN1cnJlbnQgYWN0aXZlIFVS
SSBvZiB0aGUgI1dlYktpdFdlYlBhZ2UuCisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5z
dGFsbF9wcm9wZXJ0eSgKKyAgICAgICAgZ09iamVjdENsYXNzLAorICAgICAgICBQUk9QX1VSSSwK
KyAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygKKyAgICAgICAgICAgICJ1cmkiLAorICAgICAg
ICAgICAgXygiVVJJIiksCisgICAgICAgICAgICBfKCJUaGUgY3VycmVudCBhY3RpdmUgVVJJIG9m
IHRoZSB3ZWIgcGFnZSIpLAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIFdFQktJVF9QQVJB
TV9SRUFEQUJMRSkpOworCiAgICAgLyoqCiAgICAgICogV2ViS2l0V2ViUGFnZTo6ZG9jdW1lbnQt
bG9hZGVkOgogICAgICAqIEB3ZWJfcGFnZTogdGhlICNXZWJLaXRXZWJQYWdlIG9uIHdoaWNoIHRo
ZSBzaWduYWwgaXMgZW1pdHRlZApAQCAtMTQ0LDE0ICsyMzAsMTQgQEAgV2ViS2l0V2ViUGFnZSog
d2Via2l0V2ViUGFnZUNyZWF0ZShXZWJQYWdlKiB3ZWJQYWdlKQogICAgIFdLQnVuZGxlUGFnZUxv
YWRlckNsaWVudCBsb2FkZXJDbGllbnQgPSB7CiAgICAgICAgIGtXS0J1bmRsZVBhZ2VSZXNvdXJj
ZUxvYWRDbGllbnRDdXJyZW50VmVyc2lvbiwKICAgICAgICAgcGFnZSwKLSAgICAgICAgMCwgLy8g
ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZQotICAgICAgICAwLCAvLyBkaWRSZWNlaXZl
U2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZQorICAgICAgICBkaWRTdGFy
dFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lLAorICAgICAgICBkaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSwKICAgICAgICAgMCwgLy8gZGlkRmFpbFByb3Zp
c2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lCiAgICAgICAgIDAsIC8vIGRpZENvbW1pdExvYWRG
b3JGcmFtZQogICAgICAgICBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSwKICAgICAgICAg
MCwgLy8gZGlkRmluaXNoTG9hZEZvckZyYW1lCiAgICAgICAgIDAsIC8vIGRpZEZhaWxMb2FkV2l0
aEVycm9yRm9yRnJhbWUKLSAgICAgICAgMCwgLy8gZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZv
ckZyYW1lCisgICAgICAgIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSwKICAgICAg
ICAgMCwgLy8gZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUKICAgICAgICAgMCwgLy8gZGlkRmlyc3RM
YXlvdXRGb3JGcmFtZQogICAgICAgICAwLCAvLyBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXRGb3JGcmFtZQpAQCAtMjE1LDMgKzMwMSwyMiBAQCBXZWJLaXRET01Eb2N1bWVudCogd2Via2l0
X3dlYl9wYWdlX2dldF9kb21fZG9jdW1lbnQoV2ViS2l0V2ViUGFnZSogd2ViUGFnZSkKIAogICAg
IHJldHVybiBraXQoY29yZUZyYW1lLT5kb2N1bWVudCgpKTsKIH0KKworLyoqCisgKiB3ZWJraXRf
d2ViX3BhZ2VfZ2V0X3VyaToKKyAqIEB3ZWJfcGFnZTogYSAjV2ViS2l0V2ViUGFnZQorICoKKyAq
IFJldHVybnMgdGhlIGN1cnJlbnQgYWN0aXZlIFVSSSBvZiBAd2ViX3BhZ2UuCisgKgorICogWW91
IGNhbiBtb25pdG9yIHRoZSBhY3RpdmUgVVJJIGJ5IGNvbm5lY3RpbmcgdG8gdGhlIG5vdGlmeTo6
dXJpCisgKiBzaWduYWwgb2YgQHdlYl9wYWdlLgorICoKKyAqIFJldHVybnM6IHRoZSBjdXJyZW50
IGFjdGl2ZSBVUkkgb2YgQHdlYl92aWV3IG9yICVOVUxMIGlmIG5vdGhpbmcgaGFzIGJlZW4KKyAq
ICAgIGxvYWRlZCB5ZXQuCisgKi8KK2NvbnN0IGdjaGFyKiB3ZWJraXRfd2ViX3BhZ2VfZ2V0X3Vy
aShXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9JU19XRUJfUEFHRSh3ZWJQYWdlKSwgMCk7CisKKyAgICByZXR1cm4gd2ViUGFnZS0+cHJp
di0+dXJpLmRhdGEoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5oCmluZGV4IGQ4
ZjYyMzY5N2E5NDc4MTM3OWFiMjk5MGI2ZTRlYjQ1ZGQ4YTY0MmIuLmVjY2UwYWQ5NTdlMDI2OTVh
NWJjNWU5NDcxYjU3OGM4ZTdjZmFiNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2Uu
aApAQCAtNTcsNiArNTcsOSBAQCB3ZWJraXRfd2ViX3BhZ2VfZ2V0X3R5cGUgICAgICAgICAodm9p
ZCk7CiBXRUJLSVRfQVBJIFdlYktpdERPTURvY3VtZW50ICoKIHdlYmtpdF93ZWJfcGFnZV9nZXRf
ZG9tX2RvY3VtZW50IChXZWJLaXRXZWJQYWdlICp3ZWJfcGFnZSk7CiAKK1dFQktJVF9BUEkgY29u
c3QgZ2NoYXIgKgord2Via2l0X3dlYl9wYWdlX2dldF91cmkgKFdlYktpdFdlYlBhZ2UgKndlYl9w
YWdlKTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>198687</attachid>
            <date>2013-04-18 00:12:54 -0700</date>
            <delta_ts>2013-04-18 05:01:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111288-20130418091224.patch</filename>
            <type>text/plain</type>
            <size>17788</size>
            <attacher name="Manuel Rego Casasnovas">rego</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4NjU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMzMyMzZlZjBiNTkxNWVi
ZjZhZmY0OGU4Y2Y3ZjFkZGI5NGM2NmYxMC4uYWU1OWI3MjQwOWU0ZDI5MjBhNjA5NTI1MzlmMWJl
N2EyZWIyM2ZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEzLTA0LTE4ICBNYW51
ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dL
Ml0gQWRkIFdlYktpdFdlYlBhZ2U6OndlYmtpdF93ZWJfcGFnZV9nZXRfdXJpIHRvIFdlYktpdDIg
R1RLKyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExMTI4OAorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KKworICAgICAg
ICBBZGQgbmV3IHByb3BlcnR5IFVSSSB0byBXZWJLaXRXZWJQYWdlIHByb3ZpZGluZyBhIG1ldGhv
ZAorICAgICAgICB3ZWJraXRfd2ViX3BhZ2VfZ2V0X3VyaSB0byBnZXQgaXQgYW5kIHRoZSBzaWdu
YWwgIm5vdGlmeTo6dXJpIiB0bworICAgICAgICBtb25pdG9yIGNoYW5nZXMgaW4gdGhlIFVSSS4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50
eHQ6IEluY2x1ZGUgbmV3IG1ldGhvZCBpbgorICAgICAgICBHVEsrIGRvYy4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0TG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKHRl
c3RXZWJQYWdlVVJJKToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisgICAgICAgIChhZnRlckFsbCk6
IEFkZCB0ZXN0IHRvIGNoZWNrIHRoYXQgV2ViS2l0V2ViUGFnZSBVUkkgbWF0Y2hlcyB3aXRoCisg
ICAgICAgIFdlYktpdFdlYlZpZXcgdmFsdWUuIFRoZSB0ZXN0cyBpcyBsaXN0ZW5pbmcgZm9yIGNo
YW5nZXMgaW4gV2ViS2l0V2ViUGFnZQorICAgICAgICBVUkkgdmlhIEQtQnVzIGFuZCBjaGVja3Mg
dGhhdCB2YWx1ZSBpcyB0aGUgc2FtZSB0aGFuIFdlYktpdFdlYlZpZXcgVVJJLgorICAgICAgICBJ
dCBhbHNvIGNoZWNrcyB0aGF0IHRoZSBvcmRlciBvZiB0aGUgVVJJcyBpbiBhIHJlZGlyZWN0aW9u
IGlzIHJpZ2h0LgorICAgICAgICBXaGVuIHRoZSB0ZXN0IGZpbmlzaGVzIHRoZSBzaWduYWxzIGFy
ZSBkaXNjb25uZWN0ZWQgcHJvcGVybHkuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVz
dHMvV2ViRXh0ZW5zaW9uVGVzdC5jcHA6CisgICAgICAgICh1cmlDaGFuZ2VkQ2FsbGJhY2spOgor
ICAgICAgICAocGFnZUNyZWF0ZWRDYWxsYmFjayk6IEFkZCBuZXcgRC1CdXMgc2lnbmFsICJVUklD
aGFuZ2VkIiBjb25uZWN0ZWQgdG8KKyAgICAgICAgIm5vdGlmeTo6dXJpIiBzaWduYWwgb2YgV2Vi
S2l0V2ViUGFnZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJLaXRUZXN0
QnVzLmNwcDoKKyAgICAgICAgKFdlYktpdFRlc3RCdXM6OmdldE9yQ3JlYXRlQ29ubmVjdGlvbik6
IFJlbmFtZSBtZXRob2QgY29ubmVjdGlvbigpIHRvCisgICAgICAgIGdldE9yQ3JlYXRlQ29ubmVj
dGlvbigpLgorICAgICAgICAoV2ViS2l0VGVzdEJ1czo6Y3JlYXRlUHJveHkpOiBVc2UgdGhlIG5l
dyBtZXRob2QgbmFtZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJLaXRU
ZXN0QnVzLmg6CisgICAgICAgIChXZWJLaXRUZXN0QnVzOjpjb25uZWN0aW9uKTogQWRkIHB1Ymxp
YyBnZXR0ZXIgZm9yIG1fY29ubmVjdGlvbi4KKyAgICAgICAgKFdlYktpdFRlc3RCdXMpOiBBZGQg
cHJpdmF0ZSBtZXRob2QgaGVhZGVyIGdldE9yQ3JlYXRlQ29ubmVjdGlvbigpLgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmNwcDoKKyAg
ICAgICAgKF9XZWJLaXRXZWJQYWdlUHJpdmF0ZSk6IEFkZCBuZXcgVVJJIGF0dHJpYnV0ZS4KKyAg
ICAgICAgKHdlYmtpdFdlYlBhZ2VTZXRVUkkpOiBNZXRob2QgdG8gc2V0IHRoZSBVUkkgYW5kIGVt
aXQgdGhlICJub3RpZnk6dXJpIgorICAgICAgICBzaWduYWwgaWYgaXQgaGFzIGNoYW5nZWQuCisg
ICAgICAgIChkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKTogQXQgdGhpcyBwb2ludCBp
dCB1c2UgdGhlIHVucmVhY2hhYmxlCisgICAgICAgIFVSTCBmcm9tIHByb3Zpc2lvbmFsIGRvY3Vt
ZW50IGxvYWRlciBpZiBhbnkuIE90aGVyd2lzZSwgaXQgdXNlcyB0aGUgVVJMCisgICAgICAgIGZy
b20gcHJvdmlzaW9uYWwgZG9jdW1lbnQgbG9hZGVyLgorICAgICAgICAoZGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOiBJbiB0aGUgY2FzZSBvZgorICAg
ICAgICByZWRpcmVjdGlvbnMgaXQgd29ya3MgbGlrZSBmb3IgZGlkU3RhcnRQcm92aXNpb25hbExv
YWRGb3JGcmFtZSBnZXR0aW5nCisgICAgICAgIHRoZSB1bnJlYWNoYWJsZSBVUkwgaWYgYW55Lgor
ICAgICAgICAoZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKTogSW4gdGhpcyBjYXNl
IGl0IGdldHMgdGhlIFVSTCBmcm9tCisgICAgICAgIHRoZSBkb2N1bWVudCBsb2FkZXIuCisgICAg
ICAgICh3ZWJraXRXZWJQYWdlR2V0UHJvcGVydHkpOiBBZGQgY29kZSByZWxhdGVkIHRvIFVSSSBw
cm9wZXJ0eS4KKyAgICAgICAgKHdlYmtpdF93ZWJfcGFnZV9jbGFzc19pbml0KTogQWRkIGJpdHMg
cmVsYXRlZCB0byBVUkkgcHJvcGVydHkuCisgICAgICAgICh3ZWJraXRXZWJQYWdlQ3JlYXRlKTog
SW1wbGVtZW50IGNhbGxiYWNrcyB0byBtb25pdG9yIFVSSSBjaGFuZ2VzLgorICAgICAgICAod2Vi
a2l0X3dlYl9wYWdlX2dldF91cmkpOiBSZXR1cm4gVVJJIGF0dHJpYnV0ZS4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5oOiBBZGQgbmV3
IG1ldGhvZAorICAgICAgICBoZWFkZXIuCisKIDIwMTMtMDQtMTcgIEpvb25lIEh1ciAgPGpvb25l
Lmh1ckBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF1bQUNdIG1fcGVuZGluZ1N1cmZhY2VSZXNp
emUgbmVlZHMgdG8gYmUgZ3VhcmRlZCBieSBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93
ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAppbmRleCBiYzAxY2Y4NDc5YjQ3NmFlY2NmY2M4NWY5NGM0
YjRlNTY4MTE3YjgxLi5kN2YzYTkzNTY2MzMyYjBlMDU3OWVmYzM4MDFjNGViY2IyZGY4MGM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKQEAgLTk2Miw2ICs5NjIsNyBAQCB3ZWJraXRfd2Vi
X2V4dGVuc2lvbl9nZXRfdHlwZQogV2ViS2l0V2ViUGFnZQogd2Via2l0X3dlYl9wYWdlX2dldF9k
b21fZG9jdW1lbnQKIHdlYmtpdF93ZWJfcGFnZV9nZXRfaWQKK3dlYmtpdF93ZWJfcGFnZV9nZXRf
dXJpCiAKIDxTVUJTRUNUSU9OIFN0YW5kYXJkPgogV2ViS2l0V2ViUGFnZUNsYXNzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0TG9hZGVyQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RMb2Fk
ZXJDbGllbnQuY3BwCmluZGV4IDQyYzZiNTFkZDYzNTk1ODBjYmZjM2RhMDYwNDhmMTE2YzY4NDc4
MDEuLjJhOWM0ZmNiZjA2NTUwZWY1Y2E1MGE0YjAxMGZhNTkxYTZlMTg3NWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RMb2FkZXJDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RMb2Fk
ZXJDbGllbnQuY3BwCkBAIC0yMiwxMSArMjIsMTQgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAog
I2luY2x1ZGUgIkxvYWRUcmFja2luZ1Rlc3QuaCIKKyNpbmNsdWRlICJXZWJLaXRUZXN0QnVzLmgi
CiAjaW5jbHVkZSAiV2ViS2l0VGVzdFNlcnZlci5oIgorI2luY2x1ZGUgIldlYlZpZXdUZXN0Lmgi
CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAorc3RhdGljIFdlYktpdFRlc3RCdXMqIGJ1czsKIHN0
YXRpYyBXZWJLaXRUZXN0U2VydmVyKiBrU2VydmVyOwogCiBzdGF0aWMgdm9pZCB0ZXN0TG9hZGlu
Z1N0YXR1cyhMb2FkVHJhY2tpbmdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyIGRhdGEpCkBAIC0y
ODAsNiArMjgzLDY4IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3SXNMb2FkaW5nKFZpZXdJc0xv
YWRpbmdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHRlc3QtPndhaXRVbnRpbExvYWRG
aW5pc2hlZCgpOwogfQogCitjbGFzcyBXZWJQYWdlVVJJVGVzdDogcHVibGljIFdlYlZpZXdUZXN0
IHsKK3B1YmxpYzoKKyAgICBNQUtFX0dMSUJfVEVTVF9GSVhUVVJFKFdlYlBhZ2VVUklUZXN0KTsK
KworICAgIHN0YXRpYyB2b2lkIHdlYlBhZ2VVUklDaGFuZ2VkQ2FsbGJhY2soR0RCdXNDb25uZWN0
aW9uKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhcios
IEdWYXJpYW50KiByZXN1bHQsIFdlYlBhZ2VVUklUZXN0KiB0ZXN0KQorICAgIHsKKyAgICAgICAg
Y29uc3QgY2hhciogdXJpOworICAgICAgICBnX3ZhcmlhbnRfZ2V0KHJlc3VsdCwgIigmcykiLCAm
dXJpKTsKKyAgICAgICAgdGVzdC0+bV93ZWJQYWdlVVJJcy5hcHBlbmQodXJpKTsKKyAgICB9CisK
KyAgICBzdGF0aWMgdm9pZCB3ZWJWaWV3VVJJQ2hhbmdlZChHT2JqZWN0KiwgR1BhcmFtU3BlYyos
IFdlYlBhZ2VVUklUZXN0KiB0ZXN0KQorICAgIHsKKyAgICAgICAgdGVzdC0+bV93ZWJWaWV3VVJJ
cy5hcHBlbmQod2Via2l0X3dlYl92aWV3X2dldF91cmkodGVzdC0+bV93ZWJWaWV3KSk7CisgICAg
fQorCisgICAgV2ViUGFnZVVSSVRlc3QoKQorICAgIHsKKyAgICAgICAgR1JlZlB0cjxHREJ1c1By
b3h5PiBwcm94eSA9IGFkb3B0R1JlZihidXMtPmNyZWF0ZVByb3h5KCJvcmcud2Via2l0Lmd0ay5X
ZWJFeHRlbnNpb25UZXN0IiwKKyAgICAgICAgICAgICIvb3JnL3dlYmtpdC9ndGsvV2ViRXh0ZW5z
aW9uVGVzdCIsICJvcmcud2Via2l0Lmd0ay5XZWJFeHRlbnNpb25UZXN0IiwgbV9tYWluTG9vcCkp
OworICAgICAgICBtX3VyaUNoYW5nZWRTaWduYWxJRCA9IGdfZGJ1c19jb25uZWN0aW9uX3NpZ25h
bF9zdWJzY3JpYmUoCisgICAgICAgICAgICBnX2RidXNfcHJveHlfZ2V0X2Nvbm5lY3Rpb24ocHJv
eHkuZ2V0KCkpLAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICJvcmcud2Via2l0Lmd0ay5X
ZWJFeHRlbnNpb25UZXN0IiwKKyAgICAgICAgICAgICJVUklDaGFuZ2VkIiwKKyAgICAgICAgICAg
ICIvb3JnL3dlYmtpdC9ndGsvV2ViRXh0ZW5zaW9uVGVzdCIsCisgICAgICAgICAgICAwLAorICAg
ICAgICAgICAgR19EQlVTX1NJR05BTF9GTEFHU19OT05FLAorICAgICAgICAgICAgcmVpbnRlcnBy
ZXRfY2FzdDxHREJ1c1NpZ25hbENhbGxiYWNrPih3ZWJQYWdlVVJJQ2hhbmdlZENhbGxiYWNrKSwK
KyAgICAgICAgICAgIHRoaXMsCisgICAgICAgICAgICAwKTsKKyAgICAgICAgZ19hc3NlcnQobV91
cmlDaGFuZ2VkU2lnbmFsSUQpOworCisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3
LCAibm90aWZ5Ojp1cmkiLCBHX0NBTExCQUNLKHdlYlZpZXdVUklDaGFuZ2VkKSwgdGhpcyk7Cisg
ICAgfQorCisgICAgfldlYlBhZ2VVUklUZXN0KCkKKyAgICB7CisgICAgICAgIGdfc2lnbmFsX2hh
bmRsZXJzX2Rpc2Nvbm5lY3RfbWF0Y2hlZChtX3dlYlZpZXcsIEdfU0lHTkFMX01BVENIX0RBVEEs
IDAsIDAsIDAsIDAsIHRoaXMpOworICAgICAgICBnX2RidXNfY29ubmVjdGlvbl9zaWduYWxfdW5z
dWJzY3JpYmUoYnVzLT5jb25uZWN0aW9uKCksIG1fdXJpQ2hhbmdlZFNpZ25hbElEKTsKKyAgICB9
CisKKyAgICB1bnNpZ25lZCBtX3VyaUNoYW5nZWRTaWduYWxJRDsKKyAgICBWZWN0b3I8Q1N0cmlu
Zz4gbV93ZWJQYWdlVVJJczsKKyAgICBWZWN0b3I8Q1N0cmluZz4gbV93ZWJWaWV3VVJJczsKK307
CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJQYWdlVVJJKFdlYlBhZ2VVUklUZXN0KiB0ZXN0LCBnY29u
c3Rwb2ludGVyKQoreworICAgIHRlc3QtPmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgi
L3JlZGlyZWN0IikuZGF0YSgpKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsK
KworICAgIGdfYXNzZXJ0X2NtcGludCh0ZXN0LT5tX3dlYlBhZ2VVUklzLnNpemUoKSwgPT0sIHRl
c3QtPm1fd2ViVmlld1VSSXMuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRl
c3QtPm1fd2ViUGFnZVVSSXMuc2l6ZSgpOyArK2kpCisgICAgICAgIEFTU0VSVF9DTVBfQ1NUUklO
Ryh0ZXN0LT5tX3dlYlBhZ2VVUklzW2ldLCA9PSwgdGVzdC0+bV93ZWJWaWV3VVJJc1tpXSk7CisK
KyAgICBnX2Fzc2VydF9jbXBpbnQodGVzdC0+bV93ZWJQYWdlVVJJcy5zaXplKCksID09LCAyKTsK
KyAgICBBU1NFUlRfQ01QX0NTVFJJTkcodGVzdC0+bV93ZWJQYWdlVVJJc1swXSwgPT0sIGtTZXJ2
ZXItPmdldFVSSUZvclBhdGgoIi9yZWRpcmVjdCIpKTsKKyAgICBBU1NFUlRfQ01QX0NTVFJJTkco
dGVzdC0+bV93ZWJQYWdlVVJJc1sxXSwgPT0sIGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9ub3Jt
YWwiKSk7CisKK30KKwogc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2Vy
dmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hhc2hUYWJsZSos
IFNvdXBDbGllbnRDb250ZXh0KiwgZ3BvaW50ZXIpCiB7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIq
IHJlc3BvbnNlU3RyaW5nID0gIjxodG1sPjxib2R5PlRlc3RpbmchVGVzdGluZyFUZXN0aW5nIVRl
c3RpbmchVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchIgpAQCAtMzE4LDYgKzM4MywxMSBAQCBzdGF0
aWMgdm9pZCBzZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBt
ZXNzYWdlLCBjb25zdCBjaGFyKgogCiB2b2lkIGJlZm9yZUFsbCgpCiB7CisgICAgd2Via2l0X3dl
Yl9jb250ZXh0X3NldF93ZWJfZXh0ZW5zaW9uc19kaXJlY3Rvcnkod2Via2l0X3dlYl9jb250ZXh0
X2dldF9kZWZhdWx0KCksIFdFQktJVF9URVNUX1dFQl9FWFRFTlNJT05TX0RJUik7CisgICAgYnVz
ID0gbmV3IFdlYktpdFRlc3RCdXMoKTsKKyAgICBpZiAoIWJ1cy0+cnVuKCkpCisgICAgICAgIHJl
dHVybjsKKwogICAgIGtTZXJ2ZXIgPSBuZXcgV2ViS2l0VGVzdFNlcnZlcigpOwogICAgIGtTZXJ2
ZXItPnJ1bihzZXJ2ZXJDYWxsYmFjayk7CiAKQEAgLTMzOCw5ICs0MDgsMTEgQEAgdm9pZCBiZWZv
cmVBbGwoKQogICAgIFZpZXdVUklUcmFja2luZ1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJh
Y3RpdmUtdXJpIiwgdGVzdFdlYlZpZXdBY3RpdmVVUkkpOwogCiAgICAgVmlld0lzTG9hZGluZ1Rl
c3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJpcy1sb2FkaW5nIiwgdGVzdFdlYlZpZXdJc0xvYWRp
bmcpOworICAgIFdlYlBhZ2VVUklUZXN0OjphZGQoIldlYktpdFdlYlBhZ2UiLCAiZ2V0LXVyaSIs
IHRlc3RXZWJQYWdlVVJJKTsKIH0KIAogdm9pZCBhZnRlckFsbCgpCiB7CisgICAgZGVsZXRlIGJ1
czsKICAgICBkZWxldGUga1NlcnZlcjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYkV4dGVuc2lvblRlc3QuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViRXh0ZW5zaW9uVGVzdC5jcHAKaW5kZXggODc3
ZGUxODcwYzc2OWMxMGZhMjg3ZWI4YmNmNGQ2ZjQwOGE4OTVlMy4uYWFkNmUwYjk1NTFkNTYyMGVm
NjEyNTAzODA4M2MyMDBlNWRkNDFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvdGVzdHMvV2ViRXh0ZW5zaW9uVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViRXh0ZW5zaW9uVGVzdC5jcHAKQEAgLTMxLDYg
KzMxLDkgQEAgc3RhdGljIGNvbnN0IGNoYXIgaW50cm9zcGVjdGlvblhNTFtdID0KICAgICAiICAg
PGFyZyB0eXBlPSdzJyBuYW1lPSd0aXRsZScgZGlyZWN0aW9uPSdvdXQnLz4iCiAgICAgIiAgPC9t
ZXRob2Q+IgogICAgICIgIDxzaWduYWwgbmFtZT0nRG9jdW1lbnRMb2FkZWQnLz4iCisgICAgIiAg
PHNpZ25hbCBuYW1lPSdVUklDaGFuZ2VkJz4iCisgICAgIiAgIDxhcmcgdHlwZT0ncycgbmFtZT0n
dXJpJyBkaXJlY3Rpb249J291dCcvPiIKKyAgICAiICA8L3NpZ25hbD4iCiAgICAgIiA8L2ludGVy
ZmFjZT4iCiAgICAgIjwvbm9kZT4iOwogCkBAIC00Niw5ICs0OSwyMyBAQCBzdGF0aWMgdm9pZCBk
b2N1bWVudExvYWRlZENhbGxiYWNrKFdlYktpdFdlYlBhZ2UqLCBncG9pbnRlciB1c2VyRGF0YSkK
ICAgICBnX2Fzc2VydChvayk7CiB9CiAKK3N0YXRpYyB2b2lkIHVyaUNoYW5nZWRDYWxsYmFjayhX
ZWJLaXRXZWJQYWdlKiB3ZWJQYWdlLCBHUGFyYW1TcGVjKiBwc3BlYywgZ3BvaW50ZXIgdXNlckRh
dGEpCit7CisgICAgYm9vbCBvayA9IGdfZGJ1c19jb25uZWN0aW9uX2VtaXRfc2lnbmFsKAorICAg
ICAgICBHX0RCVVNfQ09OTkVDVElPTih1c2VyRGF0YSksCisgICAgICAgIDAsCisgICAgICAgICIv
b3JnL3dlYmtpdC9ndGsvV2ViRXh0ZW5zaW9uVGVzdCIsCisgICAgICAgICJvcmcud2Via2l0Lmd0
ay5XZWJFeHRlbnNpb25UZXN0IiwKKyAgICAgICAgIlVSSUNoYW5nZWQiLAorICAgICAgICBnX3Zh
cmlhbnRfbmV3KCIocykiLCB3ZWJraXRfd2ViX3BhZ2VfZ2V0X3VyaSh3ZWJQYWdlKSksCisgICAg
ICAgIDApOworICAgIGdfYXNzZXJ0KG9rKTsKK30KKwogc3RhdGljIHZvaWQgcGFnZUNyZWF0ZWRD
YWxsYmFjayhXZWJLaXRXZWJFeHRlbnNpb24qLCBXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlLCBncG9p
bnRlciB1c2VyRGF0YSkKIHsKICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlBhZ2UsICJkb2N1bWVu
dC1sb2FkZWQiLCBHX0NBTExCQUNLKGRvY3VtZW50TG9hZGVkQ2FsbGJhY2spLCB1c2VyRGF0YSk7
CisgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJQYWdlLCAibm90aWZ5Ojp1cmkiLCBHX0NBTExCQUNL
KHVyaUNoYW5nZWRDYWxsYmFjayksIHVzZXJEYXRhKTsKIH0KIAogc3RhdGljIHZvaWQgbWV0aG9k
Q2FsbENhbGxiYWNrKEdEQnVzQ29ubmVjdGlvbiogY29ubmVjdGlvbiwgY29uc3QgY2hhciogc2Vu
ZGVyLCBjb25zdCBjaGFyKiBvYmplY3RQYXRoLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBj
b25zdCBjaGFyKiBtZXRob2ROYW1lLCBHVmFyaWFudCogcGFyYW1ldGVycywgR0RCdXNNZXRob2RJ
bnZvY2F0aW9uKiBpbnZvY2F0aW9uLCBncG9pbnRlciB1c2VyRGF0YSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYktpdFRlc3RCdXMuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViS2l0VGVzdEJ1cy5jcHAK
aW5kZXggZWY4NDg0ODliNjlmNjUwMTVhYjBkODNhMTgxMzM4YzAyODMwMWViMC4uOGMyZDNmNjM4
YjE2Y2E5ZjI5MDk2YzIzOWYyODZlNjJkYjI3MjBiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViS2l0VGVzdEJ1cy5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViS2l0VGVzdEJ1cy5jcHAKQEAgLTY5
LDcgKzY5LDcgQEAgV2ViS2l0VGVzdEJ1czo6fldlYktpdFRlc3RCdXMoKQogICAgICAgICBraWxs
KG1fcGlkLCBTSUdURVJNKTsKIH0KIAotR0RCdXNDb25uZWN0aW9uKiBXZWJLaXRUZXN0QnVzOjpj
b25uZWN0aW9uKCkKK0dEQnVzQ29ubmVjdGlvbiogV2ViS2l0VGVzdEJ1czo6Z2V0T3JDcmVhdGVD
b25uZWN0aW9uKCkKIHsKICAgICBpZiAobV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm4gbV9j
b25uZWN0aW9uLmdldCgpOwpAQCAtODgsNyArODgsNyBAQCBzdGF0aWMgdm9pZCBvbk5hbWVBcHBl
YXJlZChHREJ1c0Nvbm5lY3Rpb24qLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGdwb2ludGVy
CiAKIEdEQnVzUHJveHkqIFdlYktpdFRlc3RCdXM6OmNyZWF0ZVByb3h5KGNvbnN0IGNoYXIqIHNl
cnZpY2VOYW1lLCBjb25zdCBjaGFyKiBvYmplY3RQYXRoLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VO
YW1lLCBHTWFpbkxvb3AqIG1haW5Mb29wKQogewotICAgIHVuc2lnbmVkIHdhdGNoZXJJRCA9IGdf
YnVzX3dhdGNoX25hbWVfb25fY29ubmVjdGlvbihjb25uZWN0aW9uKCksIHNlcnZpY2VOYW1lLCBH
X0JVU19OQU1FX1dBVENIRVJfRkxBR1NfTk9ORSwgb25OYW1lQXBwZWFyZWQsIDAsIG1haW5Mb29w
LCAwKTsKKyAgICB1bnNpZ25lZCB3YXRjaGVySUQgPSBnX2J1c193YXRjaF9uYW1lX29uX2Nvbm5l
Y3Rpb24oZ2V0T3JDcmVhdGVDb25uZWN0aW9uKCksIHNlcnZpY2VOYW1lLCBHX0JVU19OQU1FX1dB
VENIRVJfRkxBR1NfTk9ORSwgb25OYW1lQXBwZWFyZWQsIDAsIG1haW5Mb29wLCAwKTsKICAgICBn
X21haW5fbG9vcF9ydW4obWFpbkxvb3ApOwogICAgIGdfYnVzX3Vud2F0Y2hfbmFtZSh3YXRjaGVy
SUQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0
cy9XZWJLaXRUZXN0QnVzLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0
cy9XZWJLaXRUZXN0QnVzLmgKaW5kZXggNWQ5ZDliYjQ4OTBjMWVkMGNmNTQ4NDFiZjJhMmViMDYx
NDkzMzNlZC4uYjlmODU2YjI3NTNlZjJmY2ViNDZkMWZjMDQxZTlkZDQ1MTVmNjQ1NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViS2l0VGVzdEJ1
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYktpdFRl
c3RCdXMuaApAQCAtMzEsOSArMzEsMTAgQEAgcHVibGljOgogCiAgICAgYm9vbCBydW4oKTsKICAg
ICBHREJ1c1Byb3h5KiBjcmVhdGVQcm94eShjb25zdCBjaGFyKiBzZXJ2aWNlTmFtZSwgY29uc3Qg
Y2hhciogb2JqZWN0UGF0aCwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgR01haW5Mb29wKik7
CisgICAgR0RCdXNDb25uZWN0aW9uKiBjb25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb25u
ZWN0aW9uLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgR0RCdXNDb25uZWN0aW9uKiBjb25uZWN0
aW9uKCk7CisgICAgR0RCdXNDb25uZWN0aW9uKiBnZXRPckNyZWF0ZUNvbm5lY3Rpb24oKTsKIAog
ICAgIHBpZF90IG1fcGlkOwogICAgIENTdHJpbmcgbV9hZGRyZXNzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBh
Z2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L1dlYktpdFdlYlBhZ2UuY3BwCmluZGV4IDBlOWExMzAwZGE4ZmU3YTc3Njg2NTI3NTk3NTQyOGQx
ZWFmMjE5NzIuLjk0YzU3NGFkZGE3NGUzZWE5MmM5YjBhZDRkMDdkMjJlYjc0NjI0NWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9X
ZWJLaXRXZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5jcHAKQEAgLTMxLDggKzMxLDEyIEBACiAjaW5j
bHVkZSAiV2ViS2l0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlBhZ2VQcml2YXRlLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50TG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9G
cmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CisjaW5jbHVkZSA8Z2xpYi9n
aTE4bi1saWIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTQzLDE0ICs0Nyw2NCBA
QCBlbnVtIHsKICAgICBMQVNUX1NJR05BTAogfTsKIAorZW51bSB7CisgICAgUFJPUF8wLAorCisg
ICAgUFJPUF9VUkkKK307CisKIHN0cnVjdCBfV2ViS2l0V2ViUGFnZVByaXZhdGUgewogICAgIFdl
YlBhZ2UqIHdlYlBhZ2U7CisKKyAgICBDU3RyaW5nIHVyaTsKIH07CiAKIHN0YXRpYyBndWludCBz
aWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKIAogV0VCS0lUX0RFRklORV9UWVBFKFdlYktp
dFdlYlBhZ2UsIHdlYmtpdF93ZWJfcGFnZSwgR19UWVBFX09CSkVDVCkKIAorc3RhdGljIENTdHJp
bmcgZ2V0UHJvdmlzaW9uYWxVUkxGb3JGcmFtZShXZWJGcmFtZSogd2ViRnJhbWUpCit7CisgICAg
RG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gd2ViRnJhbWUtPmNvcmVGcmFtZSgpLT5s
b2FkZXIoKS0+cHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigpOworICAgIGlmICghZG9jdW1lbnRM
b2FkZXItPnVucmVhY2hhYmxlVVJMKCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZG9jdW1l
bnRMb2FkZXItPnVucmVhY2hhYmxlVVJMKCkuc3RyaW5nKCkudXRmOCgpOworCisgICAgcmV0dXJu
IGRvY3VtZW50TG9hZGVyLT51cmwoKS5zdHJpbmcoKS51dGY4KCk7Cit9CisKK3N0YXRpYyB2b2lk
IHdlYmtpdFdlYlBhZ2VTZXRVUkkoV2ViS2l0V2ViUGFnZSogd2ViUGFnZSwgY29uc3QgQ1N0cmlu
ZyYgdXJpKQoreworICAgIGlmICh3ZWJQYWdlLT5wcml2LT51cmkgPT0gdXJpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICB3ZWJQYWdlLT5wcml2LT51cmkgPSB1cmk7CisgICAgZ19vYmplY3Rfbm90
aWZ5KEdfT0JKRUNUKHdlYlBhZ2UpLCAidXJpIik7Cit9CisKK3N0YXRpYyB2b2lkIGRpZFN0YXJ0
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVm
IGZyYW1lLCBXS1R5cGVSZWYqLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIGlmICgh
V0tCdW5kbGVGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
d2Via2l0V2ViUGFnZVNldFVSSShXRUJLSVRfV0VCX1BBR0UoY2xpZW50SW5mbyksIGdldFByb3Zp
c2lvbmFsVVJMRm9yRnJhbWUodG9JbXBsKGZyYW1lKSkpOworfQorCitzdGF0aWMgdm9pZCBkaWRS
ZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXS0J1bmRsZVBh
Z2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmKiB1c2VyRGF0YSwg
Y29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3sKKyAgICBpZiAoIVdLQnVuZGxlRnJhbWVJc01haW5G
cmFtZShmcmFtZSkpCisgICAgICAgIHJldHVybjsKKworICAgIHdlYmtpdFdlYlBhZ2VTZXRVUkko
V0VCS0lUX1dFQl9QQUdFKGNsaWVudEluZm8pLCBnZXRQcm92aXNpb25hbFVSTEZvckZyYW1lKHRv
SW1wbChmcmFtZSkpKTsKK30KKworc3RhdGljIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlv
bkZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBX
S1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlIHR5cGUsIFdLVHlwZVJlZiogdXNlckRhdGEsIGNv
bnN0IHZvaWQgKmNsaWVudEluZm8pCit7CisgICAgaWYgKCFXS0J1bmRsZUZyYW1lSXNNYWluRnJh
bWUoZnJhbWUpKQorICAgICAgICByZXR1cm47CisKKyAgICB3ZWJraXRXZWJQYWdlU2V0VVJJKFdF
QktJVF9XRUJfUEFHRShjbGllbnRJbmZvKSwgdG9JbXBsKGZyYW1lKS0+Y29yZUZyYW1lKCktPmRv
Y3VtZW50KCktPnVybCgpLnN0cmluZygpLnV0ZjgoKSk7Cit9CisKIHN0YXRpYyB2b2lkIGRpZEZp
bmlzaERvY3VtZW50TG9hZEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJl
ZiBmcmFtZSwgV0tUeXBlUmVmKiwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKIHsKICAgICBpZiAo
IVdLQnVuZGxlRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCkBAIC0xMTgsOCArMTcyLDQwIEBAIHN0
YXRpYyB2b2lkIGRpZEZhaWxMb2FkRm9yUmVzb3VyY2UoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdL
QnVuZGxlRnJhbWVSZWYsIHVpbnQ2CiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuaW5qZWN0ZWRC
dW5kbGUoKS0+cG9zdE1lc3NhZ2UoU3RyaW5nOjpmcm9tVVRGOCgiV2ViUGFnZS5EaWRGYWlsTG9h
ZEZvclJlc291cmNlIiksIEltbXV0YWJsZURpY3Rpb25hcnk6OmFkb3B0KG1lc3NhZ2UpLmdldCgp
KTsKIH0KIAorc3RhdGljIHZvaWQgd2Via2l0V2ViUGFnZUdldFByb3BlcnR5KEdPYmplY3QqIG9i
amVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMp
Cit7CisgICAgV2ViS2l0V2ViUGFnZSogd2ViUGFnZSA9IFdFQktJVF9XRUJfUEFHRShvYmplY3Qp
OworCisgICAgc3dpdGNoIChwcm9wSWQpIHsKKyAgICBjYXNlIFBST1BfVVJJOgorICAgICAgICBn
X3ZhbHVlX3NldF9zdHJpbmcodmFsdWUsIHdlYmtpdF93ZWJfcGFnZV9nZXRfdXJpKHdlYlBhZ2Up
KTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9J
TlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElkLCBwYXJhbVNwZWMpOworICAgIH0KK30K
Kwogc3RhdGljIHZvaWQgd2Via2l0X3dlYl9wYWdlX2NsYXNzX2luaXQoV2ViS2l0V2ViUGFnZUNs
YXNzKiBrbGFzcykKIHsKKyAgICBHT2JqZWN0Q2xhc3MqIGdPYmplY3RDbGFzcyA9IEdfT0JKRUNU
X0NMQVNTKGtsYXNzKTsKKworICAgIGdPYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0
V2ViUGFnZUdldFByb3BlcnR5OworCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViUGFnZTp1cmk6
CisgICAgICoKKyAgICAgKiBUaGUgY3VycmVudCBhY3RpdmUgVVJJIG9mIHRoZSAjV2ViS2l0V2Vi
UGFnZS4KKyAgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAorICAg
ICAgICBnT2JqZWN0Q2xhc3MsCisgICAgICAgIFBST1BfVVJJLAorICAgICAgICBnX3BhcmFtX3Nw
ZWNfc3RyaW5nKAorICAgICAgICAgICAgInVyaSIsCisgICAgICAgICAgICBfKCJVUkkiKSwKKyAg
ICAgICAgICAgIF8oIlRoZSBjdXJyZW50IGFjdGl2ZSBVUkkgb2YgdGhlIHdlYiBwYWdlIiksCisg
ICAgICAgICAgICAwLAorICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7CisKICAg
ICAvKioKICAgICAgKiBXZWJLaXRXZWJQYWdlOjpkb2N1bWVudC1sb2FkZWQ6CiAgICAgICogQHdl
Yl9wYWdlOiB0aGUgI1dlYktpdFdlYlBhZ2Ugb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVk
CkBAIC0xNDcsMTQgKzIzMywxNCBAQCBXZWJLaXRXZWJQYWdlKiB3ZWJraXRXZWJQYWdlQ3JlYXRl
KFdlYlBhZ2UqIHdlYlBhZ2UpCiAgICAgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50IGxvYWRlckNs
aWVudCA9IHsKICAgICAgICAga1dLQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudEN1cnJlbnRW
ZXJzaW9uLAogICAgICAgICBwYWdlLAotICAgICAgICAwLCAvLyBkaWRTdGFydFByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lCi0gICAgICAgIDAsIC8vIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lCisgICAgICAgIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUsCisgICAgICAgIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lLAogICAgICAgICAwLCAvLyBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9y
Rm9yRnJhbWUKICAgICAgICAgMCwgLy8gZGlkQ29tbWl0TG9hZEZvckZyYW1lCiAgICAgICAgIGRp
ZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lLAogICAgICAgICAwLCAvLyBkaWRGaW5pc2hMb2Fk
Rm9yRnJhbWUKICAgICAgICAgMCwgLy8gZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZQotICAg
ICAgICAwLCAvLyBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUKKyAgICAgICAgZGlk
U2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lLAogICAgICAgICAwLCAvLyBkaWRSZWNlaXZl
VGl0bGVGb3JGcmFtZQogICAgICAgICAwLCAvLyBkaWRGaXJzdExheW91dEZvckZyYW1lCiAgICAg
ICAgIDAsIC8vIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lCkBAIC0yNjcs
MyArMzUzLDIyIEBAIGd1aW50NjQgd2Via2l0X3dlYl9wYWdlX2dldF9pZChXZWJLaXRXZWJQYWdl
KiB3ZWJQYWdlKQogCiAgICAgcmV0dXJuIHdlYlBhZ2UtPnByaXYtPndlYlBhZ2UtPnBhZ2VJRCgp
OwogfQorCisvKioKKyAqIHdlYmtpdF93ZWJfcGFnZV9nZXRfdXJpOgorICogQHdlYl9wYWdlOiBh
ICNXZWJLaXRXZWJQYWdlCisgKgorICogUmV0dXJucyB0aGUgY3VycmVudCBhY3RpdmUgVVJJIG9m
IEB3ZWJfcGFnZS4KKyAqCisgKiBZb3UgY2FuIG1vbml0b3IgdGhlIGFjdGl2ZSBVUkkgYnkgY29u
bmVjdGluZyB0byB0aGUgbm90aWZ5Ojp1cmkKKyAqIHNpZ25hbCBvZiBAd2ViX3BhZ2UuCisgKgor
ICogUmV0dXJuczogdGhlIGN1cnJlbnQgYWN0aXZlIFVSSSBvZiBAd2ViX3ZpZXcgb3IgJU5VTEwg
aWYgbm90aGluZyBoYXMgYmVlbgorICogICAgbG9hZGVkIHlldC4KKyAqLworY29uc3QgZ2NoYXIq
IHdlYmtpdF93ZWJfcGFnZV9nZXRfdXJpKFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UpCit7CisgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9QQUdFKHdlYlBhZ2UpLCAwKTsKKwor
ICAgIHJldHVybiB3ZWJQYWdlLT5wcml2LT51cmkuZGF0YSgpOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBh
Z2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9X
ZWJLaXRXZWJQYWdlLmgKaW5kZXggYTE1YjFjOWFiMjMxMDQ5MmRlZGVjMDUwODIyZjVhZDBlYmE0
YjE1Ni4uMzY1ZmY0ZmQ3NzZkMWI0Y2JmZWNiM2JiODZkYTY3ZjBiNzJiYWE0OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktp
dFdlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5oCkBAIC02MCw2ICs2MCw5IEBAIHdlYmtpdF93ZWJfcGFn
ZV9nZXRfZG9tX2RvY3VtZW50IChXZWJLaXRXZWJQYWdlICp3ZWJfcGFnZSk7CiBXRUJLSVRfQVBJ
IGd1aW50NjQKIHdlYmtpdF93ZWJfcGFnZV9nZXRfaWQgICAgICAgICAgIChXZWJLaXRXZWJQYWdl
ICp3ZWJfcGFnZSk7CiAKK1dFQktJVF9BUEkgY29uc3QgZ2NoYXIgKgord2Via2l0X3dlYl9wYWdl
X2dldF91cmkgKFdlYktpdFdlYlBhZ2UgKndlYl9wYWdlKTsKKwogR19FTkRfREVDTFMKIAogI2Vu
ZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>