<?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>91482</bug_id>
          
          <creation_ts>2012-07-17 03:03:48 -0700</creation_ts>
          <short_desc>[GTK] No main resource in WebView on load committed when page has been loaded from history cache</short_desc>
          <delta_ts>2012-08-02 08:01:40 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>91220</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>gustavo</cc>
    
    <cc>mrobinson</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>671114</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-07-17 03:03:48 -0700</bug_when>
    <thetext>This is similar to bug #91478, but we were not only assuming we have a main resource with a response when page is loaded, but also when load-committed is emitted. Again, this is true for normal loads and reloads, but not for pages loaded from the history cache. See also bug #91220 that fixed a crash because of this assumption.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671121</commentid>
    <comment_count>1</comment_count>
      <attachid>152725</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-07-17 03:15:37 -0700</bug_when>
    <thetext>Created attachment 152725
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681391</commentid>
    <comment_count>2</comment_count>
      <attachid>152725</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-07-28 04:40:21 -0700</bug_when>
    <thetext>Comment on attachment 152725
Patch

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

Looks good overall. I wonder if it would make sense to fix this behavior in WebCore or WebKit2 instead though. Regardless, I have a few suggestions below.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1148
&gt; +        // Finish a possible previous load waiting for main resource.
&gt; +        webkitWebViewEmitDelayedLoadEvents(webView);

What sort of situation does WEBKIT_LOAD_STARTED happen without the main resource response happening? It might be good to specify this situation directly in this comment. Right now it answers the &quot;What?&quot; but not the &quot;Why?&quot;

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1155
&gt; +        setCertificateToMainResourceOrWait(webView);

I think it might be good to move

priv-&gt;waitingForMainResource = true;

to here and get rid of setCertificateToMainResourceOrWait. Right now it feels like it&apos;s a side-effect of setCertificateToMainResourceOrWait, while it affects more than just certificate handling (also emitting delayed loading events), so it&apos;s somewhat &quot;hidden&quot; away.

Also above that line I believe a comment explaining why we sometimes wait for the resource to load -- explaining the situation of back and forward with cached resources.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682876</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-07-31 02:48:53 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 152725 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=152725&amp;action=review
&gt; 
&gt; Looks good overall. I wonder if it would make sense to fix this behavior in WebCore or WebKit2 instead though. Regardless, I have a few suggestions below.

It&apos;s not necessarily a bug in WebCore, it has always worked that way. This also happens in wk1 indeed, but in wk1 you can get the main resource directly from the loader, so you don&apos;t need to wait until load resource signals are emitted.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1148
&gt; &gt; +        // Finish a possible previous load waiting for main resource.
&gt; &gt; +        webkitWebViewEmitDelayedLoadEvents(webView);
&gt; 
&gt; What sort of situation does WEBKIT_LOAD_STARTED happen without the main resource response happening? It might be good to specify this situation directly in this comment. Right now it answers the &quot;What?&quot; but not the &quot;Why?&quot;

I think this was a paranoid check, I&apos;m not sure that situation can happen.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1155
&gt; &gt; +        setCertificateToMainResourceOrWait(webView);
&gt; 
&gt; I think it might be good to move
&gt; 
&gt; priv-&gt;waitingForMainResource = true;
&gt; 
&gt; to here and get rid of setCertificateToMainResourceOrWait. Right now it feels like it&apos;s a side-effect of setCertificateToMainResourceOrWait, while it affects more than just certificate handling (also emitting delayed loading events), so it&apos;s somewhat &quot;hidden&quot; away.

So, are you proposing to move the contents of the helper function here?

&gt; Also above that line I believe a comment explaining why we sometimes wait for the resource to load -- explaining the situation of back and forward with cached resources.

Fair enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682887</commentid>
    <comment_count>4</comment_count>
      <attachid>152725</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-07-31 03:10:22 -0700</bug_when>
    <thetext>Comment on attachment 152725
Patch

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

&gt;&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1155
&gt;&gt;&gt; +        setCertificateToMainResourceOrWait(webView);
&gt;&gt; 
&gt;&gt; I think it might be good to move
&gt;&gt; 
&gt;&gt; priv-&gt;waitingForMainResource = true;
&gt;&gt; 
&gt;&gt; to here and get rid of setCertificateToMainResourceOrWait. Right now it feels like it&apos;s a side-effect of setCertificateToMainResourceOrWait, while it affects more than just certificate handling (also emitting delayed loading events), so it&apos;s somewhat &quot;hidden&quot; away.
&gt;&gt; 
&gt;&gt; Also above that line I believe a comment explaining why we sometimes wait for the resource to load -- explaining the situation of back and forward with cached resources.
&gt; 
&gt; So, are you proposing to move the contents of the helper function here?

Sure, I think it would be sufficient just to move the contents of setCertificateToMainResourceOrWait here and to keep setCertificateToMainResource. It&apos;s mostly just the name, in fact, setCertificateToMainResourceOrWait is also important in situations when there is no certificate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684143</commentid>
    <comment_count>5</comment_count>
      <attachid>155796</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-08-01 06:27:13 -0700</bug_when>
    <thetext>Created attachment 155796
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684145</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-01 06:29:16 -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>685392</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-08-02 08:01:40 -0700</bug_when>
    <thetext>Committed r124456: &lt;http://trac.webkit.org/changeset/124456&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152725</attachid>
            <date>2012-07-17 03:15:37 -0700</date>
            <delta_ts>2012-08-01 06:27:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-load-signals-delayed.diff</filename>
            <type>text/plain</type>
            <size>17375</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA5YjYzZmE3Li4yYzExNTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjEg
QEAKKzIwMTItMDctMTcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIE5vIG1haW4gcmVzb3VyY2UgaW4gV2ViVmlldyBvbiBsb2FkIGNv
bW1pdHRlZCB3aGVuIHBhZ2UgaGFzIGJlZW4gbG9hZGVkIGZyb20gaGlzdG9yeSBjYWNoZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE0ODIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBhc3N1bWUgdGhh
dCBvbiBsb2FkIGNvbW1pdHRlZCwgd2UgYWxyZWFkeSBoYXZlIGEgbWFpbiByZXNvdXJjZQorICAg
ICAgICBpbiB0aGUgd2ViIHZpZXcsIGFuZCBpdCBoYXMgYWxyZWFkeSByZWNlaXZlZCBhIHJlc3Bv
bnNlLiBUaGlzIGlzCisgICAgICAgIG5vdCB0cnVlIGZvciBwYWdlcyBsb2FkZWQgZnJvbSB0aGUg
aGlzdG9yeSBjYWNoZSwgc28gd2hlbiBnb2luZworICAgICAgICBiYWNrL2ZvcndhcmQsIHdlIGRv
bid0IGhhdmUgYSBtYWluIHJlc291cmNlIHdoZW4gdGhlCisgICAgICAgIGxvYWQtY29tbWl0dGVk
IHNpZ25hbCBpcyBlbWl0dGVkLiBXZSBtdXN0IGVuc3VyZSB0aGF0IHRoZSBsb2FkaW5nCisgICAg
ICAgIHByb2Nlc3MgZG9jdW1lbnRlZCBpbiB0aGUgQVBJIGlzIHRoZSBzYW1lIGZvciBwYWdlcyBs
b2FkZWQgZnJvbQorICAgICAgICB0aGUgaGlzdG9yeSBjYWNoZSB0b28uCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoZGlkQ29t
bWl0TG9hZEZvckZyYW1lKTogQ2FsbCB3ZWJraXRXZWJWaWV3TG9hZENoYW5nZWQoKSBhbmQgbGV0
CisgICAgICAgIHRociB3ZWIgdmlldyBoYW5kbGUgdGhlIGNlcnRpZmljYXRlLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlJlc291cmNlLmNwcDoKKyAgICAgICAgKHdlYmtp
dFdlYlJlc291cmNlR2V0RnJhbWUpOiBIZWxwZXIgcHJpdmF0ZSBmdW5jdGlvbiB0byBlYXNpbHkg
Z2V0CisgICAgICAgIHRoZSBXS0ZyYW1lIGFzc29jaWF0ZWQgd2l0aCBhIFdlYlJlc291cmNlLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlJlc291cmNlUHJpdmF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAo
d2Via2l0V2ViVmlld0Rpc2Nvbm5lY3RNYWluUmVzb3VyY2VSZXNwb25zZUNoYW5nZWRTaWduYWxI
YW5kbGVyKToKKyAgICAgICAgRGlzY29ubmVjdCB0aGUgbm90aWZ5OjpyZXNwb25zZSBzaWduYWwg
b2YgdGhlIG1haW4gcmVzb3VyY2UuCisgICAgICAgICh3ZWJraXRXZWJWaWV3RmluYWxpemUpOiBD
YWxsCisgICAgICAgIHdlYmtpdFdlYlZpZXdEaXNjb25uZWN0TWFpblJlc291cmNlUmVzcG9uc2VD
aGFuZ2VkU2lnbmFsSGFuZGxlcigpLgorICAgICAgICAoc2V0Q2VydGlmaWNhdGVUb01haW5SZXNv
dXJjZSk6IFNldCB0aGUgVExTIGNlcnRpZmljYXRlIG9uIHRoZQorICAgICAgICByZXNwb25zZSBv
ZiB0aGUgbWFpbiByZXNvdXJjZS4KKyAgICAgICAgKHNldENlcnRpZmljYXRlVG9NYWluUmVzb3Vy
Y2VPcldhaXQpOiBTZXQgdGhlIFRMUyBjZXJ0aWZpY2F0ZSBpZgorICAgICAgICB3ZSBhbHJlYWR5
IGhhdmUgYSBtYWluIHJlc291cmNlIG9yIHdhaXQgdW50aWwgd2UgaGF2ZSB0aGUgbWFpbgorICAg
ICAgICByZXNvdXJjZSB3aXRoIGEgcmVzcG9uc2UuCisgICAgICAgICh3ZWJraXRXZWJWaWV3RW1p
dExvYWRDaGFuZ2VkKTogSGVscGVyIGZ1bmN0aW9uIHRvIGVtaXQKKyAgICAgICAgbG9hZC1jaGFu
Y2dlZCBzaWduYWwuCisgICAgICAgICh3ZWJraXRXZWJWaWV3RW1pdERlbGF5ZWRMb2FkRXZlbnRz
KTogSWYgd2Ugd2VyZSB3YWl0aW5nIGZvciB0aGUKKyAgICAgICAgbWFpbiByZXNvdXJjZSwgZW1p
dCB0aGUgc2lnbmFscyB0aGF0IHdlcmUgZGVsYXllZC4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdM
b2FkQ2hhbmdlZCk6IERvIG5vdCBlbWl0IGNvbW1pdHRlZCBvciBmaW5pc2hlZCBpZgorICAgICAg
ICB3ZSBhcmUgc3RpbGwgd2FpdGluZyBmb3IgdGhlIG1haW4gcmVzb3VyY2UuCisgICAgICAgICht
YWluUmVzb3VyY2VSZXNwb25zZUNoYW5nZWRDYWxsYmFjayk6IEVtaXR0ZWQgd2hlbiB0aGUgbWFp
bgorICAgICAgICByZXNvdXJjZXMgcmVjZWl2ZWQgdGhlIHJlc3BvbnNlLiBTZXQgdGhlIGNlcnRp
ZmljYXRlIG9uIHRoZQorICAgICAgICByZXNwb25zZSBhbmQgZW1pdCBsb2FkIHNpZ25hbHMgZGVs
YXllZC4KKyAgICAgICAgKHdhaXRGb3JNYWluUmVzb3VyY2VSZXNwb25zZUlmV2FpdGluZ0ZvclJl
c291cmNlKTogSWYgd2UgYXJlCisgICAgICAgIHdhaXRpbmcgZm9yIHRoZSBtYWluIHJlc291cmNl
LCBjb25uZWN0IHRvIHRoZSBub3RpZnk6OnJlc3BvbnNlCisgICAgICAgIHNpZ25hbCBvZiB0aGUg
V2ViUmVzb3VyY2UgdG8gbWFrZSBzdXJlIGl0IGhhcyBhIHJlc3BvbnNlIGFscmVhZHkKKyAgICAg
ICAgd2hlbiBsb2FkIHNpZ25hbCBkZWxheWVkIGFyZSBlbWl0dGVkLgorICAgICAgICAod2Via2l0
V2ViVmlld1Jlc291cmNlTG9hZFN0YXJ0ZWQpOiBDYWxsCisgICAgICAgIHdhaXRGb3JNYWluUmVz
b3VyY2VSZXNwb25zZUlmV2FpdGluZ0ZvclJlc291cmNlKCkuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvdGVzdHMvTG9hZFRyYWNraW5nVGVzdC5jcHA6CisgICAgICAgIChsb2FkQ2hhbmdl
ZENhbGxiYWNrKToKKyAgICAgICAgKExvYWRUcmFja2luZ1Rlc3Q6OmdvQmFjayk6CisgICAgICAg
IChMb2FkVHJhY2tpbmdUZXN0Ojpnb0ZvcndhcmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL3Rlc3RzL0xvYWRUcmFja2luZ1Rlc3QuaDoKKyAgICAgICAgKExvYWRUcmFja2luZ1Rlc3Qp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RMb2FkZXJDbGllbnQuY3Bw
OgorICAgICAgICAodGVzdFdlYlZpZXdIaXN0b3J5TG9hZCk6CisgICAgICAgIChzZXJ2ZXJDYWxs
YmFjayk6CisgICAgICAgIChiZWZvcmVBbGwpOgorCiAyMDEyLTA3LTE2ICBHeXV5b3VuZyBLaW0g
IDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgQWRkIFJlZ2lzdGVyUHJvdG9j
b2xIYW5kbGVyQ2xpZW50IHRvIHRoZSBNb2R1bGVzL3Byb3RvY29saGFuZGxlcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TG9hZGVyQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdExvYWRlckNsaWVudC5j
cHAKaW5kZXggOGNkMTQ5Yy4uNmMzYmY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRMb2FkZXJDbGllbnQuY3BwCkBAIC02NSwxNiArNjUs
NyBAQCBzdGF0aWMgdm9pZCBkaWRDb21taXRMb2FkRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdL
RnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1cwogICAgIGlmICghV0tGcmFtZUlzTWFpbkZyYW1l
KGZyYW1lKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9
IFdFQktJVF9XRUJfVklFVyhjbGllbnRJbmZvKTsKLSAgICBXZWJLaXRXZWJSZXNvdXJjZSogcmVz
b3VyY2UgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fcmVzb3VyY2Uod2ViVmlldyk7Ci0gICAg
aWYgKHJlc291cmNlKSB7Ci0gICAgICAgIC8vIFdlIG1pZ2h0IG5vdCBoYXZlIGEgcmVzb3VyY2Ug
aWYgdGhpcyBsb2FkIGlzIGEgY29udGVudCByZXBsYWNlbWVudC4KLSAgICAgICAgLy8gRklYTUU6
IEZvciBzb21lIHJlYXNvbiwgd2hlbiBnb2luZyBiYWNrL2ZvcndhcmQgdGhpcyBjYWxsYmFjayBp
cyBlbWl0dGVkIGV2ZW4gYmVmb3JlCi0gICAgICAgIC8vIGRpZEluaXRpYXRlTG9hZEZvclJlc291
cmNlKCksIHNvIHdlIGRvbid0IGhhdmUgYSBtYWluIHJlc291cmNlIGF0IHRoaXMgcG9pbnQgZWl0
aGVyLgotICAgICAgICB3ZWJraXRVUklSZXNwb25zZVNldENlcnRpZmljYXRlSW5mbyh3ZWJraXRf
d2ViX3Jlc291cmNlX2dldF9yZXNwb25zZShyZXNvdXJjZSksIFdLRnJhbWVHZXRDZXJ0aWZpY2F0
ZUluZm8oZnJhbWUpKTsKLSAgICB9Ci0KLSAgICB3ZWJraXRXZWJWaWV3TG9hZENoYW5nZWQod2Vi
VmlldywgV0VCS0lUX0xPQURfQ09NTUlUVEVEKTsKKyAgICB3ZWJraXRXZWJWaWV3TG9hZENoYW5n
ZWQoV0VCS0lUX1dFQl9WSUVXKGNsaWVudEluZm8pLCBXRUJLSVRfTE9BRF9DT01NSVRURUQpOwog
fQogCiBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdL
RnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5m
bykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlJlc291cmNlLmNwcAppbmRleCA3ZmJlMjhhLi41Y2E1ZTk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJSZXNvdXJjZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViUmVzb3VyY2UuY3BwCkBAIC0y
NDMsNiArMjQzLDExIEBAIHZvaWQgd2Via2l0V2ViUmVzb3VyY2VGYWlsZWQoV2ViS2l0V2ViUmVz
b3VyY2UqIHJlc291cmNlLCBHRXJyb3IqIGVycm9yKQogICAgIGdfc2lnbmFsX2VtaXQocmVzb3Vy
Y2UsIHNpZ25hbHNbRklOSVNIRURdLCAwLCBOVUxMKTsKIH0KIAorV0tGcmFtZVJlZiB3ZWJraXRX
ZWJSZXNvdXJjZUdldEZyYW1lKFdlYktpdFdlYlJlc291cmNlKiByZXNvdXJjZSkKK3sKKyAgICBy
ZXR1cm4gcmVzb3VyY2UtPnByaXYtPndrRnJhbWUuZ2V0KCk7Cit9CisKIC8qKgogICogd2Via2l0
X3dlYl9yZXNvdXJjZV9nZXRfdXJpOgogICogQHJlc291cmNlOiBhICNXZWJLaXRXZWJSZXNvdXJj
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
UmVzb3VyY2VQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJSZXNvdXJjZVByaXZhdGUuaAppbmRleCA1MDExYWU0Li5lZDFmZTAyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJSZXNvdXJjZVByaXZh
dGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJSZXNv
dXJjZVByaXZhdGUuaApAQCAtMjksNiArMjksNyBAQCB2b2lkIHdlYmtpdFdlYlJlc291cmNlU2V0
UmVzcG9uc2UoV2ViS2l0V2ViUmVzb3VyY2UqLCBXZWJLaXRVUklSZXNwb25zZSopOwogdm9pZCB3
ZWJraXRXZWJSZXNvdXJjZU5vdGlmeVByb2dyZXNzKFdlYktpdFdlYlJlc291cmNlKiwgZ3VpbnQ2
NCBieXRlc1JlY2VpdmVkKTsKIHZvaWQgd2Via2l0V2ViUmVzb3VyY2VGaW5pc2hlZChXZWJLaXRX
ZWJSZXNvdXJjZSopOwogdm9pZCB3ZWJraXRXZWJSZXNvdXJjZUZhaWxlZChXZWJLaXRXZWJSZXNv
dXJjZSosIEdFcnJvciopOworV0tGcmFtZVJlZiB3ZWJraXRXZWJSZXNvdXJjZUdldEZyYW1lKFdl
YktpdFdlYlJlc291cmNlKik7CiAKIAogI2VuZGlmIC8vIFdlYktpdFdlYlJlc291cmNlUHJpdmF0
ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXcuY3BwCmluZGV4IGEyMDY1NzMuLjZkNTA5M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0xMjEsNiArMTIxLDEwIEBA
IHN0cnVjdCBfV2ViS2l0V2ViVmlld1ByaXZhdGUgewogICAgIENTdHJpbmcgYWN0aXZlVVJJOwog
ICAgIFJlcGxhY2VDb250ZW50U3RhdHVzIHJlcGxhY2VDb250ZW50U3RhdHVzOwogCisgICAgYm9v
bCB3YWl0aW5nRm9yTWFpblJlc291cmNlOworICAgIGd1bG9uZyBtYWluUmVzb3VyY2VSZXNwb25z
ZUhhbmRsZXJJRDsKKyAgICBXZWJLaXRMb2FkRXZlbnQgbGFzdERlbGF5ZWRFdmVudDsKKwogICAg
IEdSZWZQdHI8V2ViS2l0QmFja0ZvcndhcmRMaXN0PiBiYWNrRm9yd2FyZExpc3Q7CiAgICAgR1Jl
ZlB0cjxXZWJLaXRTZXR0aW5ncz4gc2V0dGluZ3M7CiAgICAgR1JlZlB0cjxXZWJLaXRXaW5kb3dQ
cm9wZXJ0aWVzPiB3aW5kb3dQcm9wZXJ0aWVzOwpAQCAtMjY1LDYgKzI2OSwxNCBAQCBzdGF0aWMg
dm9pZCB3ZWJraXRXZWJWaWV3RGlzY29ubmVjdFNldHRpbmdzU2lnbmFsSGFuZGxlcnMoV2ViS2l0
V2ViVmlldyogd2ViVmlldwogCiB9CiAKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdEaXNjb25u
ZWN0TWFpblJlc291cmNlUmVzcG9uc2VDaGFuZ2VkU2lnbmFsSGFuZGxlcihXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3KQoreworICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+
cHJpdjsKKyAgICBpZiAocHJpdi0+bWFpblJlc291cmNlUmVzcG9uc2VIYW5kbGVySUQpCisgICAg
ICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChwcml2LT5tYWluUmVzb3VyY2UuZ2V0KCks
IHByaXYtPm1haW5SZXNvdXJjZVJlc3BvbnNlSGFuZGxlcklEKTsKKyAgICBwcml2LT5tYWluUmVz
b3VyY2VSZXNwb25zZUhhbmRsZXJJRCA9IDA7Cit9CisKIHN0YXRpYyB2b2lkIGZpbGVDaG9vc2Vy
RGlhbG9nUmVzcG9uc2VDYWxsYmFjayhHdGtEaWFsb2cqIGRpYWxvZywgZ2ludCByZXNwb25zZUlE
LCBXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QqIHJlcXVlc3QpCiB7CiAgICAgR1JlZlB0cjxXZWJL
aXRGaWxlQ2hvb3NlclJlcXVlc3Q+IGFkb3B0ZWRSZXF1ZXN0ID0gYWRvcHRHUmVmKHJlcXVlc3Qp
OwpAQCAtMzc4LDcgKzM5MCw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdHZXRQcm9wZXJ0
eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1CiAKIHN0YXRpYyB2
b2lkIHdlYmtpdFdlYlZpZXdGaW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCiB7Ci0gICAgV2ViS2l0
V2ViVmlld1ByaXZhdGUqIHByaXYgPSBXRUJLSVRfV0VCX1ZJRVcob2JqZWN0KS0+cHJpdjsKKyAg
ICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKG9iamVjdCk7CisgICAg
V2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OwogCiAgICAgaWYgKHBy
aXYtPmphdmFzY3JpcHRHbG9iYWxDb250ZXh0KQogICAgICAgICBKU0dsb2JhbENvbnRleHRSZWxl
YXNlKHByaXYtPmphdmFzY3JpcHRHbG9iYWxDb250ZXh0KTsKQEAgLTM4Nyw3ICs0MDAsOCBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3RmluYWxpemUoR09iamVjdCogb2JqZWN0KQogICAgIGlm
IChwcml2LT5tb2RhbExvb3AgJiYgZ19tYWluX2xvb3BfaXNfcnVubmluZyhwcml2LT5tb2RhbExv
b3AuZ2V0KCkpKQogICAgICAgICBnX21haW5fbG9vcF9xdWl0KHByaXYtPm1vZGFsTG9vcC5nZXQo
KSk7CiAKLSAgICB3ZWJraXRXZWJWaWV3RGlzY29ubmVjdFNldHRpbmdzU2lnbmFsSGFuZGxlcnMo
V0VCS0lUX1dFQl9WSUVXKG9iamVjdCkpOworICAgIHdlYmtpdFdlYlZpZXdEaXNjb25uZWN0TWFp
blJlc291cmNlUmVzcG9uc2VDaGFuZ2VkU2lnbmFsSGFuZGxlcih3ZWJWaWV3KTsKKyAgICB3ZWJr
aXRXZWJWaWV3RGlzY29ubmVjdFNldHRpbmdzU2lnbmFsSGFuZGxlcnMod2ViVmlldyk7CiAKICAg
ICBwcml2LT5+V2ViS2l0V2ViVmlld1ByaXZhdGUoKTsKICAgICBHX09CSkVDVF9DTEFTUyh3ZWJr
aXRfd2ViX3ZpZXdfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKQEAgLTEwODEsMjAg
KzEwOTUsNzMgQEAgc3RhdGljIGJvb2wgdXBkYXRlUmVwbGFjZUNvbnRlbnRTdGF0dXMoV2ViS2l0
V2ViVmlldyogd2ViVmlldywgV2ViS2l0TG9hZEV2ZW50IGwKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKK3N0YXRpYyB2b2lkIHNldENlcnRpZmljYXRlVG9NYWluUmVzb3VyY2UoV2ViS2l0V2ViVmll
dyogd2ViVmlldykKK3sKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXct
PnByaXY7CisgICAgQVNTRVJUKHByaXYtPm1haW5SZXNvdXJjZS5nZXQoKSk7CisKKyAgICB3ZWJr
aXRVUklSZXNwb25zZVNldENlcnRpZmljYXRlSW5mbyh3ZWJraXRfd2ViX3Jlc291cmNlX2dldF9y
ZXNwb25zZShwcml2LT5tYWluUmVzb3VyY2UuZ2V0KCkpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdLRnJhbWVHZXRDZXJ0aWZpY2F0ZUluZm8od2Via2l0V2ViUmVz
b3VyY2VHZXRGcmFtZShwcml2LT5tYWluUmVzb3VyY2UuZ2V0KCkpKSk7Cit9CisKK3N0YXRpYyB2
b2lkIHNldENlcnRpZmljYXRlVG9NYWluUmVzb3VyY2VPcldhaXQoV2ViS2l0V2ViVmlldyogd2Vi
VmlldykKK3sKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7
CisgICAgaWYgKHByaXYtPnJlcGxhY2VDb250ZW50U3RhdHVzID09IFJlcGxhY2luZ0NvbnRlbnQp
CisgICAgICAgIHJldHVybjsKKworICAgIGlmICghcHJpdi0+bWFpblJlc291cmNlKSB7CisgICAg
ICAgIHByaXYtPndhaXRpbmdGb3JNYWluUmVzb3VyY2UgPSB0cnVlOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgc2V0Q2VydGlmaWNhdGVUb01haW5SZXNvdXJjZSh3ZWJWaWV3KTsKK30K
Kworc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0VtaXRMb2FkQ2hhbmdlZChXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBXZWJLaXRMb2FkRXZlbnQgbG9hZEV2ZW50KQoreworICAgIGlmIChsb2FkRXZl
bnQgPT0gV0VCS0lUX0xPQURfRklOSVNIRUQpIHsKKyAgICAgICAgd2ViVmlldy0+cHJpdi0+d2Fp
dGluZ0Zvck1haW5SZXNvdXJjZSA9IGZhbHNlOworICAgICAgICB3ZWJraXRXZWJWaWV3RGlzY29u
bmVjdE1haW5SZXNvdXJjZVJlc3BvbnNlQ2hhbmdlZFNpZ25hbEhhbmRsZXIod2ViVmlldyk7Cisg
ICAgfSBlbHNlCisgICAgICAgIHdlYmtpdFdlYlZpZXdVcGRhdGVVUkkod2ViVmlldyk7CisgICAg
Z19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW0xPQURfQ0hBTkdFRF0sIDAsIGxvYWRFdmVu
dCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdFbWl0RGVsYXllZExvYWRFdmVudHMo
V2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJp
diA9IHdlYlZpZXctPnByaXY7CisgICAgaWYgKCF3ZWJWaWV3LT5wcml2LT53YWl0aW5nRm9yTWFp
blJlc291cmNlKQorICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKHByaXYtPmxhc3REZWxheWVk
RXZlbnQgPT0gV0VCS0lUX0xPQURfQ09NTUlUVEVEIHx8IHByaXYtPmxhc3REZWxheWVkRXZlbnQg
PT0gV0VCS0lUX0xPQURfRklOSVNIRUQpOworCisgICAgaWYgKHByaXYtPmxhc3REZWxheWVkRXZl
bnQgPT0gV0VCS0lUX0xPQURfRklOSVNIRUQpCisgICAgICAgIHdlYmtpdFdlYlZpZXdFbWl0TG9h
ZENoYW5nZWQod2ViVmlldywgV0VCS0lUX0xPQURfQ09NTUlUVEVEKTsKKyAgICB3ZWJraXRXZWJW
aWV3RW1pdExvYWRDaGFuZ2VkKHdlYlZpZXcsIHByaXYtPmxhc3REZWxheWVkRXZlbnQpOworICAg
IHdlYlZpZXctPnByaXYtPndhaXRpbmdGb3JNYWluUmVzb3VyY2UgPSBmYWxzZTsKK30KKwogdm9p
ZCB3ZWJraXRXZWJWaWV3TG9hZENoYW5nZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0
TG9hZEV2ZW50IGxvYWRFdmVudCkKIHsKICAgICBpZiAobG9hZEV2ZW50ID09IFdFQktJVF9MT0FE
X1NUQVJURUQpIHsKKyAgICAgICAgLy8gRmluaXNoIGEgcG9zc2libGUgcHJldmlvdXMgbG9hZCB3
YWl0aW5nIGZvciBtYWluIHJlc291cmNlLgorICAgICAgICB3ZWJraXRXZWJWaWV3RW1pdERlbGF5
ZWRMb2FkRXZlbnRzKHdlYlZpZXcpOworCiAgICAgICAgIHdlYlZpZXctPnByaXYtPmxvYWRpbmdS
ZXNvdXJjZXNNYXAuY2xlYXIoKTsKICAgICAgICAgd2ViVmlldy0+cHJpdi0+bWFpblJlc291cmNl
ID0gMDsKLSAgICB9IGVsc2UgaWYgKGxvYWRFdmVudCA9PSBXRUJLSVRfTE9BRF9DT01NSVRURUQp
CisgICAgICAgIHdlYlZpZXctPnByaXYtPndhaXRpbmdGb3JNYWluUmVzb3VyY2UgPSBmYWxzZTsK
KyAgICB9IGVsc2UgaWYgKGxvYWRFdmVudCA9PSBXRUJLSVRfTE9BRF9DT01NSVRURUQpIHsKICAg
ICAgICAgd2ViVmlldy0+cHJpdi0+c3VicmVzb3VyY2VzTWFwLmNsZWFyKCk7CisgICAgICAgIHNl
dENlcnRpZmljYXRlVG9NYWluUmVzb3VyY2VPcldhaXQod2ViVmlldyk7CisgICAgfQogCiAgICAg
aWYgKHVwZGF0ZVJlcGxhY2VDb250ZW50U3RhdHVzKHdlYlZpZXcsIGxvYWRFdmVudCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGlmIChsb2FkRXZlbnQgIT0gV0VCS0lUX0xPQURfRklOSVNIRUQp
Ci0gICAgICAgIHdlYmtpdFdlYlZpZXdVcGRhdGVVUkkod2ViVmlldyk7Ci0gICAgZ19zaWduYWxf
ZW1pdCh3ZWJWaWV3LCBzaWduYWxzW0xPQURfQ0hBTkdFRF0sIDAsIGxvYWRFdmVudCk7CisgICAg
aWYgKHdlYlZpZXctPnByaXYtPndhaXRpbmdGb3JNYWluUmVzb3VyY2UpCisgICAgICAgIHdlYlZp
ZXctPnByaXYtPmxhc3REZWxheWVkRXZlbnQgPSBsb2FkRXZlbnQ7CisgICAgZWxzZQorICAgICAg
ICB3ZWJraXRXZWJWaWV3RW1pdExvYWRDaGFuZ2VkKHdlYlZpZXcsIGxvYWRFdmVudCk7CiB9CiAK
IHZvaWQgd2Via2l0V2ViVmlld0xvYWRGYWlsZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2Vi
S2l0TG9hZEV2ZW50IGxvYWRFdmVudCwgY29uc3QgY2hhciogZmFpbGluZ1VSSSwgR0Vycm9yICpl
cnJvcikKQEAgLTEyMzgsNiArMTMwNSwyNCBAQCB2b2lkIHdlYmtpdFdlYlZpZXdQcmludEZyYW1l
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdLRnJhbWVSZWYgd2tGcmFtZSkKICAgICBnX3NpZ25h
bF9jb25uZWN0KHByaW50T3BlcmF0aW9uLmxlYWtSZWYoKSwgImZpbmlzaGVkIiwgR19DQUxMQkFD
SyhnX29iamVjdF91bnJlZiksIDApOwogfQogCitzdGF0aWMgdm9pZCBtYWluUmVzb3VyY2VSZXNw
b25zZUNoYW5nZWRDYWxsYmFjayhXZWJLaXRXZWJSZXNvdXJjZSosIEdQYXJhbVNwZWMqLCBXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIHdlYmtpdFdlYlZpZXdEaXNjb25uZWN0TWFpblJl
c291cmNlUmVzcG9uc2VDaGFuZ2VkU2lnbmFsSGFuZGxlcih3ZWJWaWV3KTsKKyAgICBzZXRDZXJ0
aWZpY2F0ZVRvTWFpblJlc291cmNlKHdlYlZpZXcpOworICAgIHdlYmtpdFdlYlZpZXdFbWl0RGVs
YXllZExvYWRFdmVudHMod2ViVmlldyk7Cit9CisKK3N0YXRpYyB2b2lkIHdhaXRGb3JNYWluUmVz
b3VyY2VSZXNwb25zZUlmV2FpdGluZ0ZvclJlc291cmNlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcp
Cit7CisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OworICAg
IGlmICghcHJpdi0+d2FpdGluZ0Zvck1haW5SZXNvdXJjZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgd2Via2l0V2ViVmlld0Rpc2Nvbm5lY3RNYWluUmVzb3VyY2VSZXNwb25zZUNoYW5nZWRTaWdu
YWxIYW5kbGVyKHdlYlZpZXcpOworICAgIHByaXYtPm1haW5SZXNvdXJjZVJlc3BvbnNlSGFuZGxl
cklEID0KKyAgICAgICAgZ19zaWduYWxfY29ubmVjdChwcml2LT5tYWluUmVzb3VyY2UuZ2V0KCks
ICJub3RpZnk6OnJlc3BvbnNlIiwgR19DQUxMQkFDSyhtYWluUmVzb3VyY2VSZXNwb25zZUNoYW5n
ZWRDYWxsYmFjayksIHdlYlZpZXcpOworfQorCiBzdGF0aWMgaW5saW5lIGJvb2wgd2Via2l0V2Vi
Vmlld0lzUmVwbGFjaW5nQ29udGVudE9yRGlkUmVwbGFjZUNvbnRlbnQoV2ViS2l0V2ViVmlldyog
d2ViVmlldykKIHsKICAgICByZXR1cm4gKHdlYlZpZXctPnByaXYtPnJlcGxhY2VDb250ZW50U3Rh
dHVzID09IFJlcGxhY2luZ0NvbnRlbnQgfHwgd2ViVmlldy0+cHJpdi0+cmVwbGFjZUNvbnRlbnRT
dGF0dXMgPT0gRGlkUmVwbGFjZUNvbnRlbnQpOwpAQCAtMTI1MCw4ICsxMzM1LDEwIEBAIHZvaWQg
d2Via2l0V2ViVmlld1Jlc291cmNlTG9hZFN0YXJ0ZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldywg
V0tGcmFtZVJlZiB3a0ZyYW1lCiAKICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdl
YlZpZXctPnByaXY7CiAgICAgV2ViS2l0V2ViUmVzb3VyY2UqIHJlc291cmNlID0gd2Via2l0V2Vi
UmVzb3VyY2VDcmVhdGUod2tGcmFtZSwgcmVxdWVzdCwgaXNNYWluUmVzb3VyY2UpOwotICAgIGlm
IChXS0ZyYW1lSXNNYWluRnJhbWUod2tGcmFtZSkgJiYgKGlzTWFpblJlc291cmNlIHx8ICFwcml2
LT5tYWluUmVzb3VyY2UpKQorICAgIGlmIChXS0ZyYW1lSXNNYWluRnJhbWUod2tGcmFtZSkgJiYg
KGlzTWFpblJlc291cmNlIHx8ICFwcml2LT5tYWluUmVzb3VyY2UpKSB7CiAgICAgICAgIHByaXYt
Pm1haW5SZXNvdXJjZSA9IHJlc291cmNlOworICAgICAgICB3YWl0Rm9yTWFpblJlc291cmNlUmVz
cG9uc2VJZldhaXRpbmdGb3JSZXNvdXJjZSh3ZWJWaWV3KTsKKyAgICB9CiAgICAgcHJpdi0+bG9h
ZGluZ1Jlc291cmNlc01hcC5zZXQocmVzb3VyY2VJZGVudGlmaWVyLCBhZG9wdEdSZWYocmVzb3Vy
Y2UpKTsKICAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNbUkVTT1VSQ0VfTE9BRF9T
VEFSVEVEXSwgMCwgcmVzb3VyY2UsIHJlcXVlc3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvTG9hZFRyYWNraW5nVGVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9Mb2FkVHJhY2tpbmdUZXN0LmNwcApp
bmRleCBhMzVjODc0Li5kMzcwZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay90ZXN0cy9Mb2FkVHJhY2tpbmdUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9Mb2FkVHJhY2tpbmdUZXN0LmNwcApAQCAtMzUsMTAg
KzM1LDE3IEBAIHN0YXRpYyB2b2lkIGxvYWRDaGFuZ2VkQ2FsbGJhY2soV2ViS2l0V2ViVmlldyog
d2ViVmlldywgV2ViS2l0TG9hZEV2ZW50IGxvYWRFdmVuCiAgICAgICAgICAgICBnX2Fzc2VydF9j
bXBzdHIodGVzdC0+bV9yZWRpcmVjdFVSSS5kYXRhKCksID09LCB0ZXN0LT5tX2FjdGl2ZVVSSS5k
YXRhKCkpOwogICAgICAgICB0ZXN0LT5wcm92aXNpb25hbExvYWRSZWNlaXZlZFNlcnZlclJlZGly
ZWN0KCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgV0VCS0lUX0xPQURfQ09NTUlUVEVEOgor
ICAgIGNhc2UgV0VCS0lUX0xPQURfQ09NTUlUVEVEOiB7CiAgICAgICAgIGdfYXNzZXJ0X2NtcHN0
cih0ZXN0LT5tX2FjdGl2ZVVSSS5kYXRhKCksID09LCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaSh3
ZWJWaWV3KSk7CisKKyAgICAgICAgLy8gQ2hlY2sgdGhhdCBvbiBjb21taXR0ZWQgd2UgYWx3YXlz
IGhhdmUgYSBtYWluIHJlc291cmNlIHdpdGggYSByZXNwb25zZS4KKyAgICAgICAgV2ViS2l0V2Vi
UmVzb3VyY2UqIHJlc291cmNlID0gd2Via2l0X3dlYl92aWV3X2dldF9tYWluX3Jlc291cmNlKHdl
YlZpZXcpOworICAgICAgICBnX2Fzc2VydChyZXNvdXJjZSk7CisgICAgICAgIGdfYXNzZXJ0KHdl
YmtpdF93ZWJfcmVzb3VyY2VfZ2V0X3Jlc3BvbnNlKHJlc291cmNlKSk7CisKICAgICAgICAgdGVz
dC0+bG9hZENvbW1pdHRlZCgpOwogICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBXRUJL
SVRfTE9BRF9GSU5JU0hFRDoKICAgICAgICAgaWYgKCF0ZXN0LT5tX2xvYWRGYWlsZWQpCiAgICAg
ICAgICAgICBnX2Fzc2VydF9jbXBzdHIodGVzdC0+bV9hY3RpdmVVUkkuZGF0YSgpLCA9PSwgd2Vi
a2l0X3dlYl92aWV3X2dldF91cmkod2ViVmlldykpOwpAQCAtMTcwLDMgKzE3NywxNyBAQCB2b2lk
IExvYWRUcmFja2luZ1Rlc3Q6OnJlbG9hZCgpCiAgICAgbV9lc3RpbWF0ZWRQcm9ncmVzcyA9IDA7
CiAgICAgd2Via2l0X3dlYl92aWV3X3JlbG9hZChtX3dlYlZpZXcpOwogfQorCit2b2lkIExvYWRU
cmFja2luZ1Rlc3Q6OmdvQmFjaygpCit7CisgICAgbV9sb2FkRXZlbnRzLmNsZWFyKCk7CisgICAg
bV9lc3RpbWF0ZWRQcm9ncmVzcyA9IDA7CisgICAgV2ViVmlld1Rlc3Q6OmdvQmFjaygpOworfQor
Cit2b2lkIExvYWRUcmFja2luZ1Rlc3Q6OmdvRm9yd2FyZCgpCit7CisgICAgbV9sb2FkRXZlbnRz
LmNsZWFyKCk7CisgICAgbV9lc3RpbWF0ZWRQcm9ncmVzcyA9IDA7CisgICAgV2ViVmlld1Rlc3Q6
OmdvRm9yd2FyZCgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvdGVzdHMvTG9hZFRyYWNraW5nVGVzdC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvdGVzdHMvTG9hZFRyYWNraW5nVGVzdC5oCmluZGV4IDJkOTVjNDguLjU2MmY3ZjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0xvYWRU
cmFja2luZ1Rlc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0
cy9Mb2FkVHJhY2tpbmdUZXN0LmgKQEAgLTQ0LDYgKzQ0LDggQEAgcHVibGljOgogICAgIHZvaWQg
bG9hZFBsYWluVGV4dChjb25zdCBjaGFyKiBwbGFpblRleHQpOwogICAgIHZvaWQgbG9hZFJlcXVl
c3QoV2ViS2l0VVJJUmVxdWVzdCopOwogICAgIHZvaWQgcmVsb2FkKCk7CisgICAgdm9pZCBnb0Jh
Y2soKTsKKyAgICB2b2lkIGdvRm9yd2FyZCgpOwogCiAgICAgdm9pZCBzZXRSZWRpcmVjdFVSSShj
b25zdCBjaGFyKiB1cmkpIHsgbV9yZWRpcmVjdFVSSSA9IHVyaTsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0TG9hZGVyQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RMb2FkZXJDbGll
bnQuY3BwCmluZGV4IDNhZmEyYjkuLjU5ZWVkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RMb2FkZXJDbGllbnQuY3BwCkBA
IC0xNDQsNiArMTQ0LDI2IEBAIHN0YXRpYyB2b2lkIHRlc3RMb2FkUHJvZ3Jlc3MoTG9hZFRyYWNr
aW5nVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9jbXBmbG9hdCh0ZXN0
LT5tX2VzdGltYXRlZFByb2dyZXNzLCA9PSwgMSk7CiB9CiAKK3N0YXRpYyB2b2lkIHRlc3RXZWJW
aWV3SGlzdG9yeUxvYWQoTG9hZFRyYWNraW5nVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sK
KyAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9ub3JtYWwiKS5kYXRh
KCkpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIGFzc2VydE5vcm1h
bExvYWRIYXBwZW5lZCh0ZXN0LT5tX2xvYWRFdmVudHMpOworCisgICAgdGVzdC0+bG9hZFVSSShr
U2VydmVyLT5nZXRVUklGb3JQYXRoKCIvbm9ybWFsMiIpLmRhdGEoKSk7CisgICAgdGVzdC0+d2Fp
dFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgYXNzZXJ0Tm9ybWFsTG9hZEhhcHBlbmVkKHRlc3Qt
Pm1fbG9hZEV2ZW50cyk7CisKKyAgICAvLyBDaGVjayB0aGF0IGxvYWQgcHJvY2VzcyBpcyB0aGUg
c2FtZSBmb3IgcGFnZXMgbG9hZGVkIGZyb20gaGlzdG9yeSBjYWNoZS4KKyAgICB0ZXN0LT5nb0Jh
Y2soKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICBhc3NlcnROb3Jt
YWxMb2FkSGFwcGVuZWQodGVzdC0+bV9sb2FkRXZlbnRzKTsKKworICAgIHRlc3QtPmdvRm9yd2Fy
ZCgpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIGFzc2VydE5vcm1h
bExvYWRIYXBwZW5lZCh0ZXN0LT5tX2xvYWRFdmVudHMpOworfQorCiBjbGFzcyBWaWV3VVJJVHJh
Y2tpbmdUZXN0OiBwdWJsaWMgTG9hZFRyYWNraW5nVGVzdCB7CiBwdWJsaWM6CiAgICAgTUFLRV9H
TElCX1RFU1RfRklYVFVSRShWaWV3VVJJVHJhY2tpbmdUZXN0KTsKQEAgLTIxNyw3ICsyMzcsNyBA
QCBzdGF0aWMgdm9pZCBzZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNz
YWdlKiBtZXNzYWdlLCBjb25zdCBjaGFyKgogCiAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMo
bWVzc2FnZSwgU09VUF9TVEFUVVNfT0spOwogCi0gICAgaWYgKGdfc3RyX2VxdWFsKHBhdGgsICIv
bm9ybWFsIikpCisgICAgaWYgKGdfc3RyX2hhc19wcmVmaXgocGF0aCwgIi9ub3JtYWwiKSkKICAg
ICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHksIFNP
VVBfTUVNT1JZX1NUQVRJQywgcmVzcG9uc2VTdHJpbmcsIHN0cmxlbihyZXNwb25zZVN0cmluZykp
OwogICAgIGVsc2UgaWYgKGdfc3RyX2VxdWFsKHBhdGgsICIvZXJyb3IiKSkKICAgICAgICAgc291
cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfQ0FOVF9DT05ORUNUKTsK
QEAgLTI0OCw2ICsyNjgsNyBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAgTG9hZFRyYWNraW5nVGVz
dDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInRpdGxlIiwgdGVzdFdlYlZpZXdUaXRsZSk7CiAgICAg
TG9hZFRyYWNraW5nVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInByb2dyZXNzIiwgdGVzdExv
YWRQcm9ncmVzcyk7CiAgICAgTG9hZFRyYWNraW5nVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3Iiwg
InJlbG9hZCIsIHRlc3RXZWJWaWV3UmVsb2FkKTsKKyAgICBMb2FkVHJhY2tpbmdUZXN0OjphZGQo
IldlYktpdFdlYlZpZXciLCAiaGlzdG9yeS1sb2FkIiwgdGVzdFdlYlZpZXdIaXN0b3J5TG9hZCk7
CiAKICAgICAvLyBUaGlzIHRlc3QgY2hlY2tzIHRoYXQgd2ViIHZpZXcgbm90aWZ5Ojp1cmkgc2ln
bmFsIGlzIGNvcnJlY3RseSBlbWl0dGVkCiAgICAgLy8gYW5kIHRoZSB1cmkgaXMgYWxyZWFkeSB1
cGRhdGVkIHdoZW4gbG9hZGVyIGNsaWVudCBzaWduYWxzIGFyZSBlbWl0dGVkLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155796</attachid>
            <date>2012-08-01 06:27:13 -0700</date>
            <delta_ts>2012-08-02 04:26:30 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk2-main-resource-bf-cache.diff</filename>
            <type>text/plain</type>
            <size>17625</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAwNjkwYTY4Li4zZjBjN2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNjIg
QEAKIDIwMTItMDgtMDEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtHVEtdIE5vIG1haW4gcmVzb3VyY2UgaW4gV2ViVmlldyBvbiBsb2FkIGNv
bW1pdHRlZCB3aGVuIHBhZ2UgaGFzIGJlZW4gbG9hZGVkIGZyb20gaGlzdG9yeSBjYWNoZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE0ODIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBhc3N1bWUgdGhh
dCBvbiBsb2FkIGNvbW1pdHRlZCwgd2UgYWxyZWFkeSBoYXZlIGEgbWFpbiByZXNvdXJjZQorICAg
ICAgICBpbiB0aGUgd2ViIHZpZXcsIGFuZCBpdCBoYXMgYWxyZWFkeSByZWNlaXZlZCBhIHJlc3Bv
bnNlLiBUaGlzIGlzCisgICAgICAgIG5vdCB0cnVlIGZvciBwYWdlcyBsb2FkZWQgZnJvbSB0aGUg
aGlzdG9yeSBjYWNoZSwgc28gd2hlbiBnb2luZworICAgICAgICBiYWNrL2ZvcndhcmQsIHdlIGRv
bid0IGhhdmUgYSBtYWluIHJlc291cmNlIHdoZW4gdGhlCisgICAgICAgIGxvYWQtY29tbWl0dGVk
IHNpZ25hbCBpcyBlbWl0dGVkLiBXZSBtdXN0IGVuc3VyZSB0aGF0IHRoZSBsb2FkaW5nCisgICAg
ICAgIHByb2Nlc3MgZG9jdW1lbnRlZCBpbiB0aGUgQVBJIGlzIHRoZSBzYW1lIGZvciBwYWdlcyBs
b2FkZWQgZnJvbQorICAgICAgICB0aGUgaGlzdG9yeSBjYWNoZSB0b28uCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoZGlkQ29t
bWl0TG9hZEZvckZyYW1lKTogQ2FsbCB3ZWJraXRXZWJWaWV3TG9hZENoYW5nZWQoKSBhbmQgbGV0
CisgICAgICAgIHRoZSB3ZWIgdmlldyBoYW5kbGUgdGhlIGNlcnRpZmljYXRlLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlJlc291cmNlLmNwcDoKKyAgICAgICAgKHdlYmtp
dFdlYlJlc291cmNlR2V0RnJhbWUpOiBIZWxwZXIgcHJpdmF0ZSBmdW5jdGlvbiB0byBlYXNpbHkg
Z2V0CisgICAgICAgIHRoZSBXS0ZyYW1lIGFzc29jaWF0ZWQgd2l0aCBhIFdlYlJlc291cmNlLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlJlc291cmNlUHJpdmF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAo
d2Via2l0V2ViVmlld0Rpc2Nvbm5lY3RNYWluUmVzb3VyY2VSZXNwb25zZUNoYW5nZWRTaWduYWxI
YW5kbGVyKToKKyAgICAgICAgRGlzY29ubmVjdCB0aGUgbm90aWZ5OjpyZXNwb25zZSBzaWduYWwg
b2YgdGhlIG1haW4gcmVzb3VyY2UuCisgICAgICAgICh3ZWJraXRXZWJWaWV3RmluYWxpemUpOiBD
YWxsCisgICAgICAgIHdlYmtpdFdlYlZpZXdEaXNjb25uZWN0TWFpblJlc291cmNlUmVzcG9uc2VD
aGFuZ2VkU2lnbmFsSGFuZGxlcigpLgorICAgICAgICAoc2V0Q2VydGlmaWNhdGVUb01haW5SZXNv
dXJjZSk6IFNldCB0aGUgVExTIGNlcnRpZmljYXRlIG9uIHRoZQorICAgICAgICByZXNwb25zZSBv
ZiB0aGUgbWFpbiByZXNvdXJjZS4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdFbWl0TG9hZENoYW5n
ZWQpOiBIZWxwZXIgZnVuY3Rpb24gdG8gZW1pdAorICAgICAgICBsb2FkLWNoYW5jZ2VkIHNpZ25h
bC4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdFbWl0RGVsYXllZExvYWRFdmVudHMpOiBJZiB3ZSB3
ZXJlIHdhaXRpbmcgZm9yIHRoZQorICAgICAgICBtYWluIHJlc291cmNlLCBlbWl0IHRoZSBzaWdu
YWxzIHRoYXQgd2VyZSBkZWxheWVkLgorICAgICAgICAod2Via2l0V2ViVmlld0xvYWRDaGFuZ2Vk
KTogRG8gbm90IGVtaXQgY29tbWl0dGVkIG9yIGZpbmlzaGVkIGlmCisgICAgICAgIHdlIGFyZSBz
dGlsbCB3YWl0aW5nIGZvciB0aGUgbWFpbiByZXNvdXJjZS4gU2V0IHRoZSBUTFMKKyAgICAgICAg
Y2VydGlmaWNhdGUgaWYgd2UgYWxyZWFkeSBoYXZlIGEgbWFpbiByZXNvdXJjZSBvciB3YWl0IHVu
dGlsIHdlCisgICAgICAgIGhhdmUgdGhlIG1haW4gcmVzb3VyY2Ugd2l0aCBhIHJlc3BvbnNlLgor
ICAgICAgICAobWFpblJlc291cmNlUmVzcG9uc2VDaGFuZ2VkQ2FsbGJhY2spOiBFbWl0dGVkIHdo
ZW4gdGhlIG1haW4KKyAgICAgICAgcmVzb3VyY2UgcmVjZWl2ZWQgdGhlIHJlc3BvbnNlLiBTZXQg
dGhlIGNlcnRpZmljYXRlIG9uIHRoZQorICAgICAgICByZXNwb25zZSBhbmQgZW1pdCBsb2FkIHNp
Z25hbHMgZGVsYXllZC4KKyAgICAgICAgKHdhaXRGb3JNYWluUmVzb3VyY2VSZXNwb25zZUlmV2Fp
dGluZ0ZvclJlc291cmNlKTogSWYgd2UgYXJlCisgICAgICAgIHdhaXRpbmcgZm9yIHRoZSBtYWlu
IHJlc291cmNlLCBjb25uZWN0IHRvIHRoZSBub3RpZnk6OnJlc3BvbnNlCisgICAgICAgIHNpZ25h
bCBvZiB0aGUgV2ViUmVzb3VyY2UgdG8gbWFrZSBzdXJlIGl0IGhhcyBhIHJlc3BvbnNlIGFscmVh
ZHkKKyAgICAgICAgd2hlbiBsb2FkIHNpZ25hbCBkZWxheWVkIGFyZSBlbWl0dGVkLgorICAgICAg
ICAod2Via2l0V2ViVmlld1Jlc291cmNlTG9hZFN0YXJ0ZWQpOiBDYWxsCisgICAgICAgIHdhaXRG
b3JNYWluUmVzb3VyY2VSZXNwb25zZUlmV2FpdGluZ0ZvclJlc291cmNlKCkuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvTG9hZFRyYWNraW5nVGVzdC5jcHA6CisgICAgICAgIChs
b2FkQ2hhbmdlZENhbGxiYWNrKToKKyAgICAgICAgKExvYWRUcmFja2luZ1Rlc3Q6OmdvQmFjayk6
CisgICAgICAgIChMb2FkVHJhY2tpbmdUZXN0Ojpnb0ZvcndhcmQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL3Rlc3RzL0xvYWRUcmFja2luZ1Rlc3QuaDoKKyAgICAgICAgKExvYWRUcmFj
a2luZ1Rlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RMb2FkZXJD
bGllbnQuY3BwOgorICAgICAgICAodGVzdFdlYlZpZXdIaXN0b3J5TG9hZCk6CisgICAgICAgIChz
ZXJ2ZXJDYWxsYmFjayk6CisgICAgICAgIChiZWZvcmVBbGwpOgorCisyMDEyLTA4LTAxICBDYXJs
b3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKwogICAgICAgICBVbnJldmll
d2VkLiBGaXggR1RLKyBidWlsZCB3aXRoIHJlY2VudCB2ZXJzaW9uIG9mIEdUSysuCiAKICAgICAg
ICAgVXNlIGdfdGhyZWFkc19lbnRlci9sZWF2ZSBpbnN0ZWFkIG9mIHRoZSB3cmFwcGVyIG1hY3Jv
cy4gVGhpcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdExvYWRlckNsaWVudC5jcHAKaW5kZXggOGNkMTQ5Yy4uNmMzYmY5MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TG9hZGVyQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRMb2FkZXJDbGllbnQu
Y3BwCkBAIC02NSwxNiArNjUsNyBAQCBzdGF0aWMgdm9pZCBkaWRDb21taXRMb2FkRm9yRnJhbWUo
V0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1cwogICAgIGlmICgh
V0tGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViS2l0
V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhjbGllbnRJbmZvKTsKLSAgICBXZWJL
aXRXZWJSZXNvdXJjZSogcmVzb3VyY2UgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fcmVzb3Vy
Y2Uod2ViVmlldyk7Ci0gICAgaWYgKHJlc291cmNlKSB7Ci0gICAgICAgIC8vIFdlIG1pZ2h0IG5v
dCBoYXZlIGEgcmVzb3VyY2UgaWYgdGhpcyBsb2FkIGlzIGEgY29udGVudCByZXBsYWNlbWVudC4K
LSAgICAgICAgLy8gRklYTUU6IEZvciBzb21lIHJlYXNvbiwgd2hlbiBnb2luZyBiYWNrL2Zvcndh
cmQgdGhpcyBjYWxsYmFjayBpcyBlbWl0dGVkIGV2ZW4gYmVmb3JlCi0gICAgICAgIC8vIGRpZElu
aXRpYXRlTG9hZEZvclJlc291cmNlKCksIHNvIHdlIGRvbid0IGhhdmUgYSBtYWluIHJlc291cmNl
IGF0IHRoaXMgcG9pbnQgZWl0aGVyLgotICAgICAgICB3ZWJraXRVUklSZXNwb25zZVNldENlcnRp
ZmljYXRlSW5mbyh3ZWJraXRfd2ViX3Jlc291cmNlX2dldF9yZXNwb25zZShyZXNvdXJjZSksIFdL
RnJhbWVHZXRDZXJ0aWZpY2F0ZUluZm8oZnJhbWUpKTsKLSAgICB9Ci0KLSAgICB3ZWJraXRXZWJW
aWV3TG9hZENoYW5nZWQod2ViVmlldywgV0VCS0lUX0xPQURfQ09NTUlUVEVEKTsKKyAgICB3ZWJr
aXRXZWJWaWV3TG9hZENoYW5nZWQoV0VCS0lUX1dFQl9WSUVXKGNsaWVudEluZm8pLCBXRUJLSVRf
TE9BRF9DT01NSVRURUQpOwogfQogCiBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUo
V0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlJlc291cmNlLmNwcAppbmRleCA3ZmJlMjhhLi41Y2E1ZTk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJSZXNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
UmVzb3VyY2UuY3BwCkBAIC0yNDMsNiArMjQzLDExIEBAIHZvaWQgd2Via2l0V2ViUmVzb3VyY2VG
YWlsZWQoV2ViS2l0V2ViUmVzb3VyY2UqIHJlc291cmNlLCBHRXJyb3IqIGVycm9yKQogICAgIGdf
c2lnbmFsX2VtaXQocmVzb3VyY2UsIHNpZ25hbHNbRklOSVNIRURdLCAwLCBOVUxMKTsKIH0KIAor
V0tGcmFtZVJlZiB3ZWJraXRXZWJSZXNvdXJjZUdldEZyYW1lKFdlYktpdFdlYlJlc291cmNlKiBy
ZXNvdXJjZSkKK3sKKyAgICByZXR1cm4gcmVzb3VyY2UtPnByaXYtPndrRnJhbWUuZ2V0KCk7Cit9
CisKIC8qKgogICogd2Via2l0X3dlYl9yZXNvdXJjZV9nZXRfdXJpOgogICogQHJlc291cmNlOiBh
ICNXZWJLaXRXZWJSZXNvdXJjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViUmVzb3VyY2VQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJSZXNvdXJjZVByaXZhdGUuaAppbmRleCA1MDExYWU0Li5l
ZDFmZTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJSZXNvdXJjZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJSZXNvdXJjZVByaXZhdGUuaApAQCAtMjksNiArMjksNyBAQCB2b2lkIHdl
YmtpdFdlYlJlc291cmNlU2V0UmVzcG9uc2UoV2ViS2l0V2ViUmVzb3VyY2UqLCBXZWJLaXRVUklS
ZXNwb25zZSopOwogdm9pZCB3ZWJraXRXZWJSZXNvdXJjZU5vdGlmeVByb2dyZXNzKFdlYktpdFdl
YlJlc291cmNlKiwgZ3VpbnQ2NCBieXRlc1JlY2VpdmVkKTsKIHZvaWQgd2Via2l0V2ViUmVzb3Vy
Y2VGaW5pc2hlZChXZWJLaXRXZWJSZXNvdXJjZSopOwogdm9pZCB3ZWJraXRXZWJSZXNvdXJjZUZh
aWxlZChXZWJLaXRXZWJSZXNvdXJjZSosIEdFcnJvciopOworV0tGcmFtZVJlZiB3ZWJraXRXZWJS
ZXNvdXJjZUdldEZyYW1lKFdlYktpdFdlYlJlc291cmNlKik7CiAKIAogI2VuZGlmIC8vIFdlYktp
dFdlYlJlc291cmNlUHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IDZlNmM2YWMuLmJmN2ZjN2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCkBA
IC0xMjQsNiArMTI0LDEwIEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld1ByaXZhdGUgewogICAgIENT
dHJpbmcgYWN0aXZlVVJJOwogICAgIFJlcGxhY2VDb250ZW50U3RhdHVzIHJlcGxhY2VDb250ZW50
U3RhdHVzOwogCisgICAgYm9vbCB3YWl0aW5nRm9yTWFpblJlc291cmNlOworICAgIGd1bG9uZyBt
YWluUmVzb3VyY2VSZXNwb25zZUhhbmRsZXJJRDsKKyAgICBXZWJLaXRMb2FkRXZlbnQgbGFzdERl
bGF5ZWRFdmVudDsKKwogICAgIEdSZWZQdHI8V2ViS2l0QmFja0ZvcndhcmRMaXN0PiBiYWNrRm9y
d2FyZExpc3Q7CiAgICAgR1JlZlB0cjxXZWJLaXRTZXR0aW5ncz4gc2V0dGluZ3M7CiAgICAgR1Jl
ZlB0cjxXZWJLaXRXaW5kb3dQcm9wZXJ0aWVzPiB3aW5kb3dQcm9wZXJ0aWVzOwpAQCAtMjY4LDYg
KzI3MiwxNCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3RGlzY29ubmVjdFNldHRpbmdzU2ln
bmFsSGFuZGxlcnMoV2ViS2l0V2ViVmlldyogd2ViVmlldwogCiB9CiAKK3N0YXRpYyB2b2lkIHdl
YmtpdFdlYlZpZXdEaXNjb25uZWN0TWFpblJlc291cmNlUmVzcG9uc2VDaGFuZ2VkU2lnbmFsSGFu
ZGxlcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIFdlYktpdFdlYlZpZXdQcml2YXRl
KiBwcml2ID0gd2ViVmlldy0+cHJpdjsKKyAgICBpZiAocHJpdi0+bWFpblJlc291cmNlUmVzcG9u
c2VIYW5kbGVySUQpCisgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChwcml2LT5t
YWluUmVzb3VyY2UuZ2V0KCksIHByaXYtPm1haW5SZXNvdXJjZVJlc3BvbnNlSGFuZGxlcklEKTsK
KyAgICBwcml2LT5tYWluUmVzb3VyY2VSZXNwb25zZUhhbmRsZXJJRCA9IDA7Cit9CisKIHN0YXRp
YyB2b2lkIGZpbGVDaG9vc2VyRGlhbG9nUmVzcG9uc2VDYWxsYmFjayhHdGtEaWFsb2cqIGRpYWxv
ZywgZ2ludCByZXNwb25zZUlELCBXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QqIHJlcXVlc3QpCiB7
CiAgICAgR1JlZlB0cjxXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3Q+IGFkb3B0ZWRSZXF1ZXN0ID0g
YWRvcHRHUmVmKHJlcXVlc3QpOwpAQCAtMzgyLDcgKzM5NCw4IEBAIHN0YXRpYyB2b2lkIHdlYmtp
dFdlYlZpZXdHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVl
KiB2YWx1CiAKIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdGaW5hbGl6ZShHT2JqZWN0KiBvYmpl
Y3QpCiB7Ci0gICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSBXRUJLSVRfV0VCX1ZJRVco
b2JqZWN0KS0+cHJpdjsKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9W
SUVXKG9iamVjdCk7CisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5w
cml2OwogCiAgICAgaWYgKHByaXYtPmphdmFzY3JpcHRHbG9iYWxDb250ZXh0KQogICAgICAgICBK
U0dsb2JhbENvbnRleHRSZWxlYXNlKHByaXYtPmphdmFzY3JpcHRHbG9iYWxDb250ZXh0KTsKQEAg
LTM5MSw3ICs0MDQsOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3RmluYWxpemUoR09iamVj
dCogb2JqZWN0KQogICAgIGlmIChwcml2LT5tb2RhbExvb3AgJiYgZ19tYWluX2xvb3BfaXNfcnVu
bmluZyhwcml2LT5tb2RhbExvb3AuZ2V0KCkpKQogICAgICAgICBnX21haW5fbG9vcF9xdWl0KHBy
aXYtPm1vZGFsTG9vcC5nZXQoKSk7CiAKLSAgICB3ZWJraXRXZWJWaWV3RGlzY29ubmVjdFNldHRp
bmdzU2lnbmFsSGFuZGxlcnMoV0VCS0lUX1dFQl9WSUVXKG9iamVjdCkpOworICAgIHdlYmtpdFdl
YlZpZXdEaXNjb25uZWN0TWFpblJlc291cmNlUmVzcG9uc2VDaGFuZ2VkU2lnbmFsSGFuZGxlcih3
ZWJWaWV3KTsKKyAgICB3ZWJraXRXZWJWaWV3RGlzY29ubmVjdFNldHRpbmdzU2lnbmFsSGFuZGxl
cnMod2ViVmlldyk7CiAKICAgICBwcml2LT5+V2ViS2l0V2ViVmlld1ByaXZhdGUoKTsKICAgICBH
X09CSkVDVF9DTEFTUyh3ZWJraXRfd2ViX3ZpZXdfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2Jq
ZWN0KTsKQEAgLTExMTIsMjAgKzExMjYsNjggQEAgc3RhdGljIGJvb2wgdXBkYXRlUmVwbGFjZUNv
bnRlbnRTdGF0dXMoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0TG9hZEV2ZW50IGwKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKK3N0YXRpYyB2b2lkIHNldENlcnRpZmljYXRlVG9NYWluUmVz
b3VyY2UoV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0
ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CisgICAgQVNTRVJUKHByaXYtPm1haW5SZXNvdXJjZS5n
ZXQoKSk7CisKKyAgICB3ZWJraXRVUklSZXNwb25zZVNldENlcnRpZmljYXRlSW5mbyh3ZWJraXRf
d2ViX3Jlc291cmNlX2dldF9yZXNwb25zZShwcml2LT5tYWluUmVzb3VyY2UuZ2V0KCkpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdLRnJhbWVHZXRDZXJ0aWZpY2F0
ZUluZm8od2Via2l0V2ViUmVzb3VyY2VHZXRGcmFtZShwcml2LT5tYWluUmVzb3VyY2UuZ2V0KCkp
KSk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdFbWl0TG9hZENoYW5nZWQoV2ViS2l0
V2ViVmlldyogd2ViVmlldywgV2ViS2l0TG9hZEV2ZW50IGxvYWRFdmVudCkKK3sKKyAgICBpZiAo
bG9hZEV2ZW50ID09IFdFQktJVF9MT0FEX0ZJTklTSEVEKSB7CisgICAgICAgIHdlYlZpZXctPnBy
aXYtPndhaXRpbmdGb3JNYWluUmVzb3VyY2UgPSBmYWxzZTsKKyAgICAgICAgd2Via2l0V2ViVmll
d0Rpc2Nvbm5lY3RNYWluUmVzb3VyY2VSZXNwb25zZUNoYW5nZWRTaWduYWxIYW5kbGVyKHdlYlZp
ZXcpOworICAgIH0gZWxzZQorICAgICAgICB3ZWJraXRXZWJWaWV3VXBkYXRlVVJJKHdlYlZpZXcp
OworICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tMT0FEX0NIQU5HRURdLCAwLCBs
b2FkRXZlbnQpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3RW1pdERlbGF5ZWRMb2Fk
RXZlbnRzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgV2ViS2l0V2ViVmlld1ByaXZh
dGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OworICAgIGlmICghcHJpdi0+d2FpdGluZ0Zvck1haW5S
ZXNvdXJjZSkKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChwcml2LT5sYXN0RGVsYXllZEV2
ZW50ID09IFdFQktJVF9MT0FEX0NPTU1JVFRFRCB8fCBwcml2LT5sYXN0RGVsYXllZEV2ZW50ID09
IFdFQktJVF9MT0FEX0ZJTklTSEVEKTsKKworICAgIGlmIChwcml2LT5sYXN0RGVsYXllZEV2ZW50
ID09IFdFQktJVF9MT0FEX0ZJTklTSEVEKQorICAgICAgICB3ZWJraXRXZWJWaWV3RW1pdExvYWRD
aGFuZ2VkKHdlYlZpZXcsIFdFQktJVF9MT0FEX0NPTU1JVFRFRCk7CisgICAgd2Via2l0V2ViVmll
d0VtaXRMb2FkQ2hhbmdlZCh3ZWJWaWV3LCBwcml2LT5sYXN0RGVsYXllZEV2ZW50KTsKKyAgICBw
cml2LT53YWl0aW5nRm9yTWFpblJlc291cmNlID0gZmFsc2U7Cit9CisKIHZvaWQgd2Via2l0V2Vi
Vmlld0xvYWRDaGFuZ2VkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdExvYWRFdmVudCBs
b2FkRXZlbnQpCiB7CiAgICAgaWYgKGxvYWRFdmVudCA9PSBXRUJLSVRfTE9BRF9TVEFSVEVEKSB7
CisgICAgICAgIC8vIEZpbmlzaCBhIHBvc3NpYmxlIHByZXZpb3VzIGxvYWQgd2FpdGluZyBmb3Ig
bWFpbiByZXNvdXJjZS4KKyAgICAgICAgd2Via2l0V2ViVmlld0VtaXREZWxheWVkTG9hZEV2ZW50
cyh3ZWJWaWV3KTsKKwogICAgICAgICB3ZWJWaWV3LT5wcml2LT5sb2FkaW5nUmVzb3VyY2VzTWFw
LmNsZWFyKCk7CiAgICAgICAgIHdlYlZpZXctPnByaXYtPm1haW5SZXNvdXJjZSA9IDA7Ci0gICAg
fSBlbHNlIGlmIChsb2FkRXZlbnQgPT0gV0VCS0lUX0xPQURfQ09NTUlUVEVEKQorICAgICAgICB3
ZWJWaWV3LT5wcml2LT53YWl0aW5nRm9yTWFpblJlc291cmNlID0gZmFsc2U7CisgICAgfSBlbHNl
IGlmIChsb2FkRXZlbnQgPT0gV0VCS0lUX0xPQURfQ09NTUlUVEVEKSB7CiAgICAgICAgIHdlYlZp
ZXctPnByaXYtPnN1YnJlc291cmNlc01hcC5jbGVhcigpOworICAgICAgICBpZiAod2ViVmlldy0+
cHJpdi0+cmVwbGFjZUNvbnRlbnRTdGF0dXMgIT0gUmVwbGFjaW5nQ29udGVudCkgeworICAgICAg
ICAgICAgaWYgKCF3ZWJWaWV3LT5wcml2LT5tYWluUmVzb3VyY2UpIHsKKyAgICAgICAgICAgICAg
ICAvLyBXaGVuIGEgcGFnZSBpcyBsb2FkZWQgZnJvbSB0aGUgaGlzdG9yeSBjYWNoZSwgdGhlIG1h
aW4gcmVzb3VyY2UgbG9hZCBjYWxsYmFja3MKKyAgICAgICAgICAgICAgICAvLyBhcmUgY2FsbGVk
IHdoZW4gdGhlIG1haW4gZnJhbWUgbG9hZCBpcyBmaW5pc2hlZC4gV2Ugd2FudCB0byBtYWtlIHN1
cmUgdGhlcmUncyBhCisgICAgICAgICAgICAgICAgLy8gbWFpbiByZXNvdXJjZSBhdmFpbGFibGUg
d2hlbiBsb2FkIGhhcyBiZWVuIGNvbW1pdHRlZCwgc28gd2UgZGVsYXkgdGhlIGVtaXNzaW9uIG9m
CisgICAgICAgICAgICAgICAgLy8gbG9hZC1jaGFuZ2VkIHNpZ25hbCB1bnRpbCBtYWluIHJlc291
cmNlIG9iamVjdCBoYXMgYmVlbiBjcmVhdGVkLgorICAgICAgICAgICAgICAgIHdlYlZpZXctPnBy
aXYtPndhaXRpbmdGb3JNYWluUmVzb3VyY2UgPSB0cnVlOworICAgICAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICAgICAgc2V0Q2VydGlmaWNhdGVUb01haW5SZXNvdXJjZSh3ZWJWaWV3KTsKKyAg
ICAgICAgfQorICAgIH0KIAogICAgIGlmICh1cGRhdGVSZXBsYWNlQ29udGVudFN0YXR1cyh3ZWJW
aWV3LCBsb2FkRXZlbnQpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobG9hZEV2ZW50ICE9
IFdFQktJVF9MT0FEX0ZJTklTSEVEKQotICAgICAgICB3ZWJraXRXZWJWaWV3VXBkYXRlVVJJKHdl
YlZpZXcpOwotICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tMT0FEX0NIQU5HRURd
LCAwLCBsb2FkRXZlbnQpOworICAgIGlmICh3ZWJWaWV3LT5wcml2LT53YWl0aW5nRm9yTWFpblJl
c291cmNlKQorICAgICAgICB3ZWJWaWV3LT5wcml2LT5sYXN0RGVsYXllZEV2ZW50ID0gbG9hZEV2
ZW50OworICAgIGVsc2UKKyAgICAgICAgd2Via2l0V2ViVmlld0VtaXRMb2FkQ2hhbmdlZCh3ZWJW
aWV3LCBsb2FkRXZlbnQpOwogfQogCiB2b2lkIHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdExvYWRFdmVudCBsb2FkRXZlbnQsIGNvbnN0IGNoYXIq
IGZhaWxpbmdVUkksIEdFcnJvciAqZXJyb3IpCkBAIC0xMjY5LDYgKzEzMzEsMjQgQEAgdm9pZCB3
ZWJraXRXZWJWaWV3UHJpbnRGcmFtZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXS0ZyYW1lUmVm
IHdrRnJhbWUpCiAgICAgZ19zaWduYWxfY29ubmVjdChwcmludE9wZXJhdGlvbi5sZWFrUmVmKCks
ICJmaW5pc2hlZCIsIEdfQ0FMTEJBQ0soZ19vYmplY3RfdW5yZWYpLCAwKTsKIH0KIAorc3RhdGlj
IHZvaWQgbWFpblJlc291cmNlUmVzcG9uc2VDaGFuZ2VkQ2FsbGJhY2soV2ViS2l0V2ViUmVzb3Vy
Y2UqLCBHUGFyYW1TcGVjKiwgV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICB3ZWJraXRX
ZWJWaWV3RGlzY29ubmVjdE1haW5SZXNvdXJjZVJlc3BvbnNlQ2hhbmdlZFNpZ25hbEhhbmRsZXIo
d2ViVmlldyk7CisgICAgc2V0Q2VydGlmaWNhdGVUb01haW5SZXNvdXJjZSh3ZWJWaWV3KTsKKyAg
ICB3ZWJraXRXZWJWaWV3RW1pdERlbGF5ZWRMb2FkRXZlbnRzKHdlYlZpZXcpOworfQorCitzdGF0
aWMgdm9pZCB3YWl0Rm9yTWFpblJlc291cmNlUmVzcG9uc2VJZldhaXRpbmdGb3JSZXNvdXJjZShX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2
ID0gd2ViVmlldy0+cHJpdjsKKyAgICBpZiAoIXByaXYtPndhaXRpbmdGb3JNYWluUmVzb3VyY2Up
CisgICAgICAgIHJldHVybjsKKworICAgIHdlYmtpdFdlYlZpZXdEaXNjb25uZWN0TWFpblJlc291
cmNlUmVzcG9uc2VDaGFuZ2VkU2lnbmFsSGFuZGxlcih3ZWJWaWV3KTsKKyAgICBwcml2LT5tYWlu
UmVzb3VyY2VSZXNwb25zZUhhbmRsZXJJRCA9CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QocHJp
di0+bWFpblJlc291cmNlLmdldCgpLCAibm90aWZ5OjpyZXNwb25zZSIsIEdfQ0FMTEJBQ0sobWFp
blJlc291cmNlUmVzcG9uc2VDaGFuZ2VkQ2FsbGJhY2spLCB3ZWJWaWV3KTsKK30KKwogc3RhdGlj
IGlubGluZSBib29sIHdlYmtpdFdlYlZpZXdJc1JlcGxhY2luZ0NvbnRlbnRPckRpZFJlcGxhY2VD
b250ZW50KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgcmV0dXJuICh3ZWJWaWV3LT5w
cml2LT5yZXBsYWNlQ29udGVudFN0YXR1cyA9PSBSZXBsYWNpbmdDb250ZW50IHx8IHdlYlZpZXct
PnByaXYtPnJlcGxhY2VDb250ZW50U3RhdHVzID09IERpZFJlcGxhY2VDb250ZW50KTsKQEAgLTEy
ODEsOCArMTM2MSwxMCBAQCB2b2lkIHdlYmtpdFdlYlZpZXdSZXNvdXJjZUxvYWRTdGFydGVkKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcsIFdLRnJhbWVSZWYgd2tGcmFtZQogCiAgICAgV2ViS2l0V2Vi
Vmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OwogICAgIFdlYktpdFdlYlJlc291cmNl
KiByZXNvdXJjZSA9IHdlYmtpdFdlYlJlc291cmNlQ3JlYXRlKHdrRnJhbWUsIHJlcXVlc3QsIGlz
TWFpblJlc291cmNlKTsKLSAgICBpZiAoV0tGcmFtZUlzTWFpbkZyYW1lKHdrRnJhbWUpICYmIChp
c01haW5SZXNvdXJjZSB8fCAhcHJpdi0+bWFpblJlc291cmNlKSkKKyAgICBpZiAoV0tGcmFtZUlz
TWFpbkZyYW1lKHdrRnJhbWUpICYmIChpc01haW5SZXNvdXJjZSB8fCAhcHJpdi0+bWFpblJlc291
cmNlKSkgewogICAgICAgICBwcml2LT5tYWluUmVzb3VyY2UgPSByZXNvdXJjZTsKKyAgICAgICAg
d2FpdEZvck1haW5SZXNvdXJjZVJlc3BvbnNlSWZXYWl0aW5nRm9yUmVzb3VyY2Uod2ViVmlldyk7
CisgICAgfQogICAgIHByaXYtPmxvYWRpbmdSZXNvdXJjZXNNYXAuc2V0KHJlc291cmNlSWRlbnRp
ZmllciwgYWRvcHRHUmVmKHJlc291cmNlKSk7CiAgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBz
aWduYWxzW1JFU09VUkNFX0xPQURfU1RBUlRFRF0sIDAsIHJlc291cmNlLCByZXF1ZXN0KTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0xvYWRU
cmFja2luZ1Rlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMv
TG9hZFRyYWNraW5nVGVzdC5jcHAKaW5kZXggYTM1Yzg3NC4uZDM3MGRlOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvTG9hZFRyYWNraW5nVGVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvTG9hZFRyYWNr
aW5nVGVzdC5jcHAKQEAgLTM1LDEwICszNSwxNyBAQCBzdGF0aWMgdm9pZCBsb2FkQ2hhbmdlZENh
bGxiYWNrKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdExvYWRFdmVudCBsb2FkRXZlbgog
ICAgICAgICAgICAgZ19hc3NlcnRfY21wc3RyKHRlc3QtPm1fcmVkaXJlY3RVUkkuZGF0YSgpLCA9
PSwgdGVzdC0+bV9hY3RpdmVVUkkuZGF0YSgpKTsKICAgICAgICAgdGVzdC0+cHJvdmlzaW9uYWxM
b2FkUmVjZWl2ZWRTZXJ2ZXJSZWRpcmVjdCgpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFdF
QktJVF9MT0FEX0NPTU1JVFRFRDoKKyAgICBjYXNlIFdFQktJVF9MT0FEX0NPTU1JVFRFRDogewog
ICAgICAgICBnX2Fzc2VydF9jbXBzdHIodGVzdC0+bV9hY3RpdmVVUkkuZGF0YSgpLCA9PSwgd2Vi
a2l0X3dlYl92aWV3X2dldF91cmkod2ViVmlldykpOworCisgICAgICAgIC8vIENoZWNrIHRoYXQg
b24gY29tbWl0dGVkIHdlIGFsd2F5cyBoYXZlIGEgbWFpbiByZXNvdXJjZSB3aXRoIGEgcmVzcG9u
c2UuCisgICAgICAgIFdlYktpdFdlYlJlc291cmNlKiByZXNvdXJjZSA9IHdlYmtpdF93ZWJfdmll
d19nZXRfbWFpbl9yZXNvdXJjZSh3ZWJWaWV3KTsKKyAgICAgICAgZ19hc3NlcnQocmVzb3VyY2Up
OworICAgICAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3Jlc291cmNlX2dldF9yZXNwb25zZShyZXNv
dXJjZSkpOworCiAgICAgICAgIHRlc3QtPmxvYWRDb21taXR0ZWQoKTsKICAgICAgICAgYnJlYWs7
CisgICAgfQogICAgIGNhc2UgV0VCS0lUX0xPQURfRklOSVNIRUQ6CiAgICAgICAgIGlmICghdGVz
dC0+bV9sb2FkRmFpbGVkKQogICAgICAgICAgICAgZ19hc3NlcnRfY21wc3RyKHRlc3QtPm1fYWN0
aXZlVVJJLmRhdGEoKSwgPT0sIHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKHdlYlZpZXcpKTsKQEAg
LTE3MCwzICsxNzcsMTcgQEAgdm9pZCBMb2FkVHJhY2tpbmdUZXN0OjpyZWxvYWQoKQogICAgIG1f
ZXN0aW1hdGVkUHJvZ3Jlc3MgPSAwOwogICAgIHdlYmtpdF93ZWJfdmlld19yZWxvYWQobV93ZWJW
aWV3KTsKIH0KKwordm9pZCBMb2FkVHJhY2tpbmdUZXN0Ojpnb0JhY2soKQoreworICAgIG1fbG9h
ZEV2ZW50cy5jbGVhcigpOworICAgIG1fZXN0aW1hdGVkUHJvZ3Jlc3MgPSAwOworICAgIFdlYlZp
ZXdUZXN0Ojpnb0JhY2soKTsKK30KKwordm9pZCBMb2FkVHJhY2tpbmdUZXN0Ojpnb0ZvcndhcmQo
KQoreworICAgIG1fbG9hZEV2ZW50cy5jbGVhcigpOworICAgIG1fZXN0aW1hdGVkUHJvZ3Jlc3Mg
PSAwOworICAgIFdlYlZpZXdUZXN0Ojpnb0ZvcndhcmQoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0xvYWRUcmFja2luZ1Rlc3QuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0xvYWRUcmFja2luZ1Rlc3QuaApp
bmRleCAyZDk1YzQ4Li41NjJmN2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay90ZXN0cy9Mb2FkVHJhY2tpbmdUZXN0LmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvTG9hZFRyYWNraW5nVGVzdC5oCkBAIC00NCw2ICs0NCw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWRQbGFpblRleHQoY29uc3QgY2hhciogcGxhaW5UZXh0
KTsKICAgICB2b2lkIGxvYWRSZXF1ZXN0KFdlYktpdFVSSVJlcXVlc3QqKTsKICAgICB2b2lkIHJl
bG9hZCgpOworICAgIHZvaWQgZ29CYWNrKCk7CisgICAgdm9pZCBnb0ZvcndhcmQoKTsKIAogICAg
IHZvaWQgc2V0UmVkaXJlY3RVUkkoY29uc3QgY2hhciogdXJpKSB7IG1fcmVkaXJlY3RVUkkgPSB1
cmk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVz
dHMvVGVzdExvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay90ZXN0cy9UZXN0TG9hZGVyQ2xpZW50LmNwcAppbmRleCAzYWZhMmI5Li41OWVlZDc2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0TG9hZGVy
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9U
ZXN0TG9hZGVyQ2xpZW50LmNwcApAQCAtMTQ0LDYgKzE0NCwyNiBAQCBzdGF0aWMgdm9pZCB0ZXN0
TG9hZFByb2dyZXNzKExvYWRUcmFja2luZ1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAg
Z19hc3NlcnRfY21wZmxvYXQodGVzdC0+bV9lc3RpbWF0ZWRQcm9ncmVzcywgPT0sIDEpOwogfQog
CitzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0hpc3RvcnlMb2FkKExvYWRUcmFja2luZ1Rlc3QqIHRl
c3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgdGVzdC0+bG9hZFVSSShrU2VydmVyLT5nZXRVUklG
b3JQYXRoKCIvbm9ybWFsIikuZGF0YSgpKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNo
ZWQoKTsKKyAgICBhc3NlcnROb3JtYWxMb2FkSGFwcGVuZWQodGVzdC0+bV9sb2FkRXZlbnRzKTsK
KworICAgIHRlc3QtPmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL25vcm1hbDIiKS5k
YXRhKCkpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIGFzc2VydE5v
cm1hbExvYWRIYXBwZW5lZCh0ZXN0LT5tX2xvYWRFdmVudHMpOworCisgICAgLy8gQ2hlY2sgdGhh
dCBsb2FkIHByb2Nlc3MgaXMgdGhlIHNhbWUgZm9yIHBhZ2VzIGxvYWRlZCBmcm9tIGhpc3Rvcnkg
Y2FjaGUuCisgICAgdGVzdC0+Z29CYWNrKCk7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlz
aGVkKCk7CisgICAgYXNzZXJ0Tm9ybWFsTG9hZEhhcHBlbmVkKHRlc3QtPm1fbG9hZEV2ZW50cyk7
CisKKyAgICB0ZXN0LT5nb0ZvcndhcmQoKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNo
ZWQoKTsKKyAgICBhc3NlcnROb3JtYWxMb2FkSGFwcGVuZWQodGVzdC0+bV9sb2FkRXZlbnRzKTsK
K30KKwogY2xhc3MgVmlld1VSSVRyYWNraW5nVGVzdDogcHVibGljIExvYWRUcmFja2luZ1Rlc3Qg
ewogcHVibGljOgogICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoVmlld1VSSVRyYWNraW5nVGVz
dCk7CkBAIC0yMTcsNyArMjM3LDcgQEAgc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNl
cnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhcioKIAogICAgIHNv
dXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX09LKTsKIAotICAgIGlm
IChnX3N0cl9lcXVhbChwYXRoLCAiL25vcm1hbCIpKQorICAgIGlmIChnX3N0cl9oYXNfcHJlZml4
KHBhdGgsICIvbm9ybWFsIikpCiAgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZChtZXNz
YWdlLT5yZXNwb25zZV9ib2R5LCBTT1VQX01FTU9SWV9TVEFUSUMsIHJlc3BvbnNlU3RyaW5nLCBz
dHJsZW4ocmVzcG9uc2VTdHJpbmcpKTsKICAgICBlbHNlIGlmIChnX3N0cl9lcXVhbChwYXRoLCAi
L2Vycm9yIikpCiAgICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBf
U1RBVFVTX0NBTlRfQ09OTkVDVCk7CkBAIC0yNDgsNiArMjY4LDcgQEAgdm9pZCBiZWZvcmVBbGwo
KQogICAgIExvYWRUcmFja2luZ1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJ0aXRsZSIsIHRl
c3RXZWJWaWV3VGl0bGUpOwogICAgIExvYWRUcmFja2luZ1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmll
dyIsICJwcm9ncmVzcyIsIHRlc3RMb2FkUHJvZ3Jlc3MpOwogICAgIExvYWRUcmFja2luZ1Rlc3Q6
OmFkZCgiV2ViS2l0V2ViVmlldyIsICJyZWxvYWQiLCB0ZXN0V2ViVmlld1JlbG9hZCk7CisgICAg
TG9hZFRyYWNraW5nVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImhpc3RvcnktbG9hZCIsIHRl
c3RXZWJWaWV3SGlzdG9yeUxvYWQpOwogCiAgICAgLy8gVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IHdl
YiB2aWV3IG5vdGlmeTo6dXJpIHNpZ25hbCBpcyBjb3JyZWN0bHkgZW1pdHRlZAogICAgIC8vIGFu
ZCB0aGUgdXJpIGlzIGFscmVhZHkgdXBkYXRlZCB3aGVuIGxvYWRlciBjbGllbnQgc2lnbmFscyBh
cmUgZW1pdHRlZC4K
</data>
<flag name="review"
          id="165332"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>