<?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>144096</bug_id>
          
          <creation_ts>2015-04-23 05:16:08 -0700</creation_ts>
          <short_desc>[UNIX] Do not allow copies of IPC::Attachment</short_desc>
          <delta_ts>2015-06-15 08:46:43 -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>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>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>145967</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>darin</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1087796</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-04-23 05:16:08 -0700</bug_when>
    <thetext>See discussion in bug #144046. It ensures that the file descriptor ownership is always correctly transfered. This way we can remove the dispose() method to explicitly close the file descriptor and always close it in the Attachment destructor (unless explicitly transferred to IPC::Connection or SharedMemory). It simplifies the code and ensure we don&apos;t leak file descriptors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087798</commentid>
    <comment_count>1</comment_count>
      <attachid>251427</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-04-23 05:27:05 -0700</bug_when>
    <thetext>Created attachment 251427
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087817</commentid>
    <comment_count>2</comment_count>
      <attachid>251427</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-23 08:05:33 -0700</bug_when>
    <thetext>Comment on attachment 251427
Patch

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

This is OK, but could be improved.

&gt; Source/WebKit2/Platform/IPC/ArgumentDecoder.cpp:217
&gt; +    attachment = WTF::move(m_attachments.last());
&gt;      m_attachments.removeLast();

Should instead be:

    attachment = m_attachments.takeLast();

&gt; Source/WebKit2/Platform/IPC/Attachment.cpp:59
&gt; +    encoder.addAttachment(Attachment(*this));
&gt; +#if USE(UNIX_DOMAIN_SOCKETS)
&gt; +    // The encoder takes the onwership of our file descriptor.
&gt; +    m_fileDescriptor = -1;
&gt; +#endif

Should instead be:

    encoding.addAttachment(WTF::move(*this));

&gt; Source/WebKit2/Platform/IPC/Attachment.h:85
&gt; +    Attachment(const Attachment&amp;) = default;
&gt; +    Attachment&amp; operator=(Attachment&amp;) = default;

Why default? Why not delete? I think this is only needed because of the incorrect code in Attachment::encode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087820</commentid>
    <comment_count>3</comment_count>
      <attachid>251427</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-23 08:12:22 -0700</bug_when>
    <thetext>Comment on attachment 251427
Patch

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

&gt;&gt; Source/WebKit2/Platform/IPC/Attachment.cpp:59
&gt;&gt; +#endif
&gt; 
&gt; Should instead be:
&gt; 
&gt;     encoding.addAttachment(WTF::move(*this));

Might require const_cast. It’s a design problem, I think, that encoding modifies the attachment, but the encode function is marked const.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087822</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-04-23 08:25:56 -0700</bug_when>
    <thetext>Yes, I didn&apos;t know how to do the move(this), but this:

encoder.addAttachment(WTF::move(*const_cast&lt;Attachment*&gt;(this)));

made the trick :-) Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087823</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-04-23 08:26:52 -0700</bug_when>
    <thetext>I don&apos;t think we need to use = delete, because that&apos;s the default when the move constructor and assignment operation are defined.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087825</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-04-23 08:34:36 -0700</bug_when>
    <thetext>And we don&apos;t need to make the file descriptor mutable either</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087829</commentid>
    <comment_count>7</comment_count>
      <attachid>251437</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-04-23 08:40:13 -0700</bug_when>
    <thetext>Created attachment 251437
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087857</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-04-23 09:54:22 -0700</bug_when>
    <thetext>Committed r183189: &lt;http://trac.webkit.org/changeset/183189&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251427</attachid>
            <date>2015-04-23 05:27:05 -0700</date>
            <delta_ts>2015-04-23 08:40:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-attachments.diff</filename>
            <type>text/plain</type>
            <size>12686</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBlNWFjMjk2Li41OWRkNmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNTYg
QEAKIDIwMTUtMDQtMjMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtVTklYXSBEbyBub3QgYWxsb3cgY29waWVzIG9mIElQQzo6QXR0YWNobWVu
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0MDk2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSXQgZW5z
dXJlcyB0aGF0IHRoZSBmaWxlIGRlc2NyaXB0b3Igb3duZXJzaGlwIGlzIGFsd2F5cyBjb3JyZWN0
bHkKKyAgICAgICAgdHJhbnNmZXJyZWQuIFRoaXMgd2F5IHdlIGNhbiByZW1vdmUgdGhlIGRpc3Bv
c2UoKSBtZXRob2QgdG8KKyAgICAgICAgZXhwbGljaXRseSBjbG9zZSB0aGUgZmlsZSBkZXNjcmlw
dG9yIGFuZCBhbHdheXMgY2xvc2UgaXQgaW4gdGhlCisgICAgICAgIEF0dGFjaG1lbnQgZGVzdHJ1
Y3RvciAodW5sZXNzIGV4cGxpY2l0bHkgdHJhbnNmZXJyZWQgdG8KKyAgICAgICAgSVBDOjpDb25u
ZWN0aW9uIG9yIFNoYXJlZE1lbW9yeSkuIEl0IHNpbXBsaWZpZXMgdGhlIGNvZGUgYW5kCisgICAg
ICAgIGVuc3VyZSB3ZSBkb24ndCBsZWFrIGZpbGUgZGVzY3JpcHRvcnMuCisKKyAgICAgICAgKiBQ
bGF0Zm9ybS9JUEMvQXJndW1lbnREZWNvZGVyLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRE
ZWNvZGVyOjp+QXJndW1lbnREZWNvZGVyKTogUmVtb3ZlIHRoZSBjb2RlIHRvCisgICAgICAgIGV4
cGxpY2l0bHkgZGlzcG9zZSBhdHRhY2htZW50cy4KKyAgICAgICAgKElQQzo6QXJndW1lbnREZWNv
ZGVyOjpyZW1vdmVBdHRhY2htZW50KTogVXNlIFdURjo6bW92ZSgpLgorICAgICAgICAqIFBsYXRm
b3JtL0lQQy9Bcmd1bWVudEVuY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudEVuY29k
ZXI6On5Bcmd1bWVudEVuY29kZXIpOiBSZW1vdmUgdGhlIGNvZGUgdG8KKyAgICAgICAgZXhwbGlj
aXRseSBkaXNwb3NlIGF0dGFjaG1lbnRzLgorICAgICAgICAoSVBDOjpBcmd1bWVudEVuY29kZXI6
OmFkZEF0dGFjaG1lbnQpOiBVc2UgV1RGOjptb3ZlKCkuCisgICAgICAgIChJUEM6OkFyZ3VtZW50
RW5jb2Rlcjo6cmVsZWFzZUF0dGFjaG1lbnRzKTogU2ltcGxpZnkgYnkgdXNpbmcgV1RGOjptb3Zl
KCkuCisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50RW5jb2Rlci5oOgorICAgICAgICAq
IFBsYXRmb3JtL0lQQy9BdHRhY2htZW50LmNwcDoKKyAgICAgICAgKElQQzo6QXR0YWNobWVudDo6
ZW5jb2RlKTogTW92ZSBhIGNvcHkgb2YgdGhlIGF0dGFjaG1lbnQsIGFuZAorICAgICAgICByZXNl
dCB0aGUgZmlsZSBkZXNjcmlwdG9yLCBzaW5jZSB0aGUgb3duZXJzaGlwIGlzIHBhc3NlZCB0byB0
aGUgZW5jb2Rlci4KKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQXR0YWNobWVudC5oOiBNYWtlIGNv
cHkgY29uc3RydWN0b3IgYW5kIGFzc2lnbm1lbnQKKyAgICAgICAgcHJpdmF0ZSB0byBub3QgYWxs
b3cgcHVibGljIGNvcGllcy4gVGhlIG9ubHkgY29weSBhbGxvd2VkIGlzIGRvbmUKKyAgICAgICAg
YnkgQXR0YWNobWVudDo6ZW5jb2RlKCkuIE1ha2UgbV9maWxlRGVzY3JpcHRvciBtdXRhYmxlIHNv
IHRoYXQgd2UKKyAgICAgICAgY2FuIHJlc2V0IGl0IGluIEF0dGFjaG1lbnQ6OmVuY29kZSgpIGFm
dGVyIHBhc3NpbmcgdGhlIG93bmVyc2hpcAorICAgICAgICB0byB0aGUgZW5jb2Rlci4KKyAgICAg
ICAgKiBQbGF0Zm9ybS9JUEMvdW5peC9BdHRhY2htZW50VW5peC5jcHA6CisgICAgICAgIChJUEM6
OkF0dGFjaG1lbnQ6On5BdHRhY2htZW50KTogQ2xvc2UgdGhlIGZpbGUgZGVzY3JpcHRvciBpZiBp
dAorICAgICAgICBoYXNuJ3QgYmVlbiByZWxlYXNlZCBleHBsaWNpdGx5LgorICAgICAgICAoSVBD
OjpBdHRhY2htZW50OjpkaXNwb3NlKTogRGVsZXRlZC4KKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMv
dW5peC9Db25uZWN0aW9uVW5peC5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnByb2Nl
c3NNZXNzYWdlKTogRG8gbm90IHVzZSBBdHRhY2htZW50UmVzb3VyY2VHdWFyZC4KKyAgICAgICAg
KElQQzo6Q29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZSk6IERpdHRvLgorICAgICAgICAo
SVBDOjpBdHRhY2htZW50UmVzb3VyY2VHdWFyZDo6QXR0YWNobWVudFJlc291cmNlR3VhcmQpOiBE
ZWxldGVkLgorICAgICAgICAoSVBDOjpBdHRhY2htZW50UmVzb3VyY2VHdWFyZDo6fkF0dGFjaG1l
bnRSZXNvdXJjZUd1YXJkKTogRGVsZXRlZC4KKyAgICAgICAgKiBQbGF0Zm9ybS91bml4L1NoYXJl
ZE1lbW9yeVVuaXguY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZTo6
fkhhbmRsZSk6IERvIG5vdCBjYWxsIGNsZWFyKCkuCisgICAgICAgIChXZWJLaXQ6OlNoYXJlZE1l
bW9yeTo6SGFuZGxlOjpjbGVhcik6IFJlc2V0IHRoZSBhdHRhY2htZW50LgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3Bl
Y3RvclByb3h5OjpjcmVhdGVJbnNwZWN0b3JQYWdlKTogVXNlIFdURjo6bW92ZSgpLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmdldFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgQ2FsbCByZWxlYXNlRmlsZURlc2NyaXB0
b3IoKSBpbnN0ZWFkIG9mIGZpbGVEZXNjcml0cHJvKCkgc2luY2UgdGhlCisgICAgICAgIG93bmVy
c2hpcCBpcyBwYXNzZWQgdG8gdGhlIGNvbm5lY3Rpb24uCisKKzIwMTUtMDQtMjMgIENhcmxvcyBH
YXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCiAgICAgICAgIFVucmV2aWV3ZWQu
IEZpeCBkZWJ1ZyBidWlsZCBhZnRlciByMTgzMTc2LgogCiAgICAgICAgICogUGxhdGZvcm0vdW5p
eC9TaGFyZWRNZW1vcnlVbml4LmNwcDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0lQQy9Bcmd1bWVudERlY29kZXIuY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBD
L0FyZ3VtZW50RGVjb2Rlci5jcHAKaW5kZXggNDEwNWE3MC4uN2NhOTdiYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0FyZ3VtZW50RGVjb2Rlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0FyZ3VtZW50RGVjb2Rlci5jcHAKQEAgLTQ3LDEzICs0
Nyw3IEBAIEFyZ3VtZW50RGVjb2Rlcjo6fkFyZ3VtZW50RGVjb2RlcigpCiB7CiAgICAgQVNTRVJU
KG1fYnVmZmVyKTsKICAgICBmcmVlKG1fYnVmZmVyKTsKLSNpZiAhVVNFKFVOSVhfRE9NQUlOX1NP
Q0tFVFMpCiAgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gZGlzcG9zZSBvZiB0aGUgbWFjaCBwb3J0
cyBpbiBjYXNlcyBvZiBmYWlsdXJlLgotI2Vsc2UKLSAgICBWZWN0b3I8QXR0YWNobWVudD46Oml0
ZXJhdG9yIGVuZCA9IG1fYXR0YWNobWVudHMuZW5kKCk7Ci0gICAgZm9yIChWZWN0b3I8QXR0YWNo
bWVudD46Oml0ZXJhdG9yIGl0ID0gbV9hdHRhY2htZW50cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsr
aXQpCi0gICAgICAgIGl0LT5kaXNwb3NlKCk7Ci0jZW5kaWYKIH0KIAogc3RhdGljIGlubGluZSB1
aW50OF90KiByb3VuZFVwVG9BbGlnbm1lbnQodWludDhfdCogcHRyLCB1bnNpZ25lZCBhbGlnbm1l
bnQpCkBAIC0yMTksNyArMjEzLDcgQEAgYm9vbCBBcmd1bWVudERlY29kZXI6OnJlbW92ZUF0dGFj
aG1lbnQoQXR0YWNobWVudCYgYXR0YWNobWVudCkKICAgICBpZiAobV9hdHRhY2htZW50cy5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF0dGFjaG1lbnQgPSBtX2F0dGFj
aG1lbnRzLmxhc3QoKTsKKyAgICBhdHRhY2htZW50ID0gV1RGOjptb3ZlKG1fYXR0YWNobWVudHMu
bGFzdCgpKTsKICAgICBtX2F0dGFjaG1lbnRzLnJlbW92ZUxhc3QoKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Bcmd1bWVudEVu
Y29kZXIuY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0FyZ3VtZW50RW5jb2Rlci5j
cHAKaW5kZXggZDU1Zjc0Mi4uNTg0ODdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vSVBDL0FyZ3VtZW50RW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vSVBDL0FyZ3VtZW50RW5jb2Rlci5jcHAKQEAgLTcwLDEzICs3MCw3IEBAIEFyZ3VtZW50RW5j
b2Rlcjo6fkFyZ3VtZW50RW5jb2RlcigpCiB7CiAgICAgaWYgKG1fYnVmZmVyICE9IG1faW5saW5l
QnVmZmVyKQogICAgICAgICBmcmVlQnVmZmVyKG1fYnVmZmVyLCBtX2J1ZmZlckNhcGFjaXR5KTsK
LQotI2lmICFVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKICAgICAvLyBGSVhNRTogV2UgbmVlZCB0
byBkaXNwb3NlIG9mIHRoZSBhdHRhY2htZW50cyBpbiBjYXNlcyBvZiBmYWlsdXJlLgotI2Vsc2UK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYXR0YWNobWVudHMuc2l6ZSgpOyArK2kpCi0g
ICAgICAgIG1fYXR0YWNobWVudHNbaV0uZGlzcG9zZSgpOwotI2VuZGlmCiB9CiAKIHN0YXRpYyBp
bmxpbmUgc2l6ZV90IHJvdW5kVXBUb0FsaWdubWVudChzaXplX3QgdmFsdWUsIHVuc2lnbmVkIGFs
aWdubWVudCkKQEAgLTE5MSwxNiArMTg1LDE0IEBAIHZvaWQgQXJndW1lbnRFbmNvZGVyOjplbmNv
ZGUoZG91YmxlIG4pCiAgICAgY29weVZhbHVlVG9CdWZmZXIobiwgYnVmZmVyKTsKIH0KIAotdm9p
ZCBBcmd1bWVudEVuY29kZXI6OmFkZEF0dGFjaG1lbnQoY29uc3QgQXR0YWNobWVudCYgYXR0YWNo
bWVudCkKK3ZvaWQgQXJndW1lbnRFbmNvZGVyOjphZGRBdHRhY2htZW50KEF0dGFjaG1lbnQmJiBh
dHRhY2htZW50KQogewotICAgIG1fYXR0YWNobWVudHMuYXBwZW5kKGF0dGFjaG1lbnQpOworICAg
IG1fYXR0YWNobWVudHMuYXBwZW5kKFdURjo6bW92ZShhdHRhY2htZW50KSk7CiB9CiAKIFZlY3Rv
cjxBdHRhY2htZW50PiBBcmd1bWVudEVuY29kZXI6OnJlbGVhc2VBdHRhY2htZW50cygpCiB7Ci0g
ICAgVmVjdG9yPEF0dGFjaG1lbnQ+IG5ld0xpc3Q7Ci0gICAgbmV3TGlzdC5zd2FwKG1fYXR0YWNo
bWVudHMpOwotICAgIHJldHVybiBuZXdMaXN0OworICAgIHJldHVybiBXVEY6Om1vdmUobV9hdHRh
Y2htZW50cyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vSVBDL0FyZ3VtZW50RW5jb2Rlci5oIGIvU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vSVBDL0FyZ3VtZW50RW5jb2Rlci5oCmluZGV4IDcwODg1MDYuLjIxMWMxOTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Bcmd1bWVudEVuY29kZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXJndW1lbnRFbmNvZGVyLmgKQEAgLTY1LDcg
KzY1LDcgQEAgcHVibGljOgogICAgIHVpbnQ4X3QqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyOyB9CiAgICAgc2l6ZV90IGJ1ZmZlclNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
clNpemU7IH0KIAotICAgIHZvaWQgYWRkQXR0YWNobWVudChjb25zdCBBdHRhY2htZW50Jik7Cisg
ICAgdm9pZCBhZGRBdHRhY2htZW50KEF0dGFjaG1lbnQmJik7CiAgICAgVmVjdG9yPEF0dGFjaG1l
bnQ+IHJlbGVhc2VBdHRhY2htZW50cygpOwogICAgIHZvaWQgcmVzZXJ2ZShzaXplX3QpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXR0YWNobWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXR0YWNobWVudC5jcHAKaW5kZXggOTM2N2IxYS4u
M2FlZDg4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0F0dGFjaG1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9BdHRhY2htZW50LmNwcApA
QCAtNTIsNyArNTIsMTEgQEAgdm9pZCBBdHRhY2htZW50OjpyZWxlYXNlKCkKIAogdm9pZCBBdHRh
Y2htZW50OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVu
Y29kZXIuYWRkQXR0YWNobWVudCgqdGhpcyk7CisgICAgZW5jb2Rlci5hZGRBdHRhY2htZW50KEF0
dGFjaG1lbnQoKnRoaXMpKTsKKyNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKKyAgICAvLyBU
aGUgZW5jb2RlciB0YWtlcyB0aGUgb253ZXJzaGlwIG9mIG91ciBmaWxlIGRlc2NyaXB0b3IuCisg
ICAgbV9maWxlRGVzY3JpcHRvciA9IC0xOworI2VuZGlmCiB9CiAKIGJvb2wgQXR0YWNobWVudDo6
ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgQXR0YWNobWVudCYgYXR0YWNobWVudCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9BdHRhY2htZW50LmggYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXR0YWNobWVudC5oCmluZGV4IGE2YjE1OTMuLjY2
NGY5MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9BdHRhY2htZW50
LmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0F0dGFjaG1lbnQuaApAQCAtNTUs
MTAgKzU1LDkgQEAgcHVibGljOgogI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAg
QXR0YWNobWVudChBdHRhY2htZW50JiYpOwogICAgIEF0dGFjaG1lbnQmIG9wZXJhdG9yPShBdHRh
Y2htZW50JiYpOwotICAgIEF0dGFjaG1lbnQoY29uc3QgQXR0YWNobWVudCYpID0gZGVmYXVsdDsK
LSAgICBBdHRhY2htZW50JiBvcGVyYXRvcj0oQXR0YWNobWVudCYpID0gZGVmYXVsdDsKICAgICBB
dHRhY2htZW50KGludCBmaWxlRGVzY3JpcHRvciwgc2l6ZV90KTsKICAgICBBdHRhY2htZW50KGlu
dCBmaWxlRGVzY3JpcHRvcik7CisgICAgfkF0dGFjaG1lbnQoKTsKICNlbmRpZgogCiAgICAgVHlw
ZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CkBAIC03NSwyMSArNzQsMjQgQEAgcHVi
bGljOgogCiAgICAgaW50IHJlbGVhc2VGaWxlRGVzY3JpcHRvcigpIHsgaW50IHRlbXAgPSBtX2Zp
bGVEZXNjcmlwdG9yOyBtX2ZpbGVEZXNjcmlwdG9yID0gLTE7IHJldHVybiB0ZW1wOyB9CiAgICAg
aW50IGZpbGVEZXNjcmlwdG9yKCkgY29uc3QgeyByZXR1cm4gbV9maWxlRGVzY3JpcHRvcjsgfQot
Ci0gICAgdm9pZCBkaXNwb3NlKCk7CiAjZW5kaWYKIAogICAgIHZvaWQgZW5jb2RlKEFyZ3VtZW50
RW5jb2RlciYpIGNvbnN0OwogICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIm
LCBBdHRhY2htZW50Jik7CiAgICAgCiBwcml2YXRlOgorI2lmIFVTRShVTklYX0RPTUFJTl9TT0NL
RVRTKQorICAgIEF0dGFjaG1lbnQoY29uc3QgQXR0YWNobWVudCYpID0gZGVmYXVsdDsKKyAgICBB
dHRhY2htZW50JiBvcGVyYXRvcj0oQXR0YWNobWVudCYpID0gZGVmYXVsdDsKKyNlbmRpZgorCiAg
ICAgVHlwZSBtX3R5cGU7CiAKICNpZiBPUyhEQVJXSU4pCiAgICAgbWFjaF9wb3J0X25hbWVfdCBt
X3BvcnQ7CiAgICAgbWFjaF9tc2dfdHlwZV9uYW1lX3QgbV9kaXNwb3NpdGlvbjsKICNlbGlmIFVT
RShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgIGludCBtX2ZpbGVEZXNjcmlwdG9yIHsgLTEgfTsK
KyAgICBtdXRhYmxlIGludCBtX2ZpbGVEZXNjcmlwdG9yIHsgLTEgfTsKICAgICBzaXplX3QgbV9z
aXplOwogI2VuZGlmCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBD
L3VuaXgvQXR0YWNobWVudFVuaXguY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL3Vu
aXgvQXR0YWNobWVudFVuaXguY3BwCmluZGV4IGU2N2VkNjQuLjIxODcxMTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy91bml4L0F0dGFjaG1lbnRVbml4LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvdW5peC9BdHRhY2htZW50VW5peC5jcHAKQEAg
LTY3LDEzICs2NywxMCBAQCBBdHRhY2htZW50JiBBdHRhY2htZW50OjpvcGVyYXRvcj0oQXR0YWNo
bWVudCYmIGF0dGFjaG1lbnQpCiAgICAgcmV0dXJuICp0aGlzOwogfQogCi12b2lkIEF0dGFjaG1l
bnQ6OmRpc3Bvc2UoKQorQXR0YWNobWVudDo6fkF0dGFjaG1lbnQoKQogewotICAgIGlmIChtX2Zp
bGVEZXNjcmlwdG9yID09IC0xKQotICAgICAgICByZXR1cm47Ci0KLSAgICBjbG9zZVdpdGhSZXRy
eShtX2ZpbGVEZXNjcmlwdG9yKTsKLSAgICBtX2ZpbGVEZXNjcmlwdG9yID0gLTE7CisgICAgaWYg
KG1fZmlsZURlc2NyaXB0b3IgIT0gLTEpCisgICAgICAgIGNsb3NlV2l0aFJldHJ5KG1fZmlsZURl
c2NyaXB0b3IpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAppbmRleCBlODhiYTU4Li5m
YzVmNjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvdW5peC9Db25u
ZWN0aW9uVW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL3VuaXgvQ29u
bmVjdGlvblVuaXguY3BwCkBAIC0xNTUsMjMgKzE1NSw2IEBAIHZvaWQgQ29ubmVjdGlvbjo6cGxh
dGZvcm1JbnZhbGlkYXRlKCkKICAgICBtX2lzQ29ubmVjdGVkID0gZmFsc2U7CiB9CiAKLXRlbXBs
YXRlPGNsYXNzIFQsIGNsYXNzIGl0ZXJhdG9yPgotY2xhc3MgQXR0YWNobWVudFJlc291cmNlR3Vh
cmQgewotcHVibGljOgotICAgIEF0dGFjaG1lbnRSZXNvdXJjZUd1YXJkKFQmIGF0dGFjaG1lbnRz
KQotICAgICAgICA6IG1fYXR0YWNobWVudHMoYXR0YWNobWVudHMpCi0gICAgewotICAgIH0KLSAg
ICB+QXR0YWNobWVudFJlc291cmNlR3VhcmQoKQotICAgIHsKLSAgICAgICAgaXRlcmF0b3IgZW5k
ID0gbV9hdHRhY2htZW50cy5lbmQoKTsKLSAgICAgICAgZm9yIChpdGVyYXRvciBpID0gbV9hdHRh
Y2htZW50cy5iZWdpbigpOyBpICE9IGVuZDsgKytpKQotICAgICAgICAgICAgaS0+ZGlzcG9zZSgp
OwotICAgIH0KLXByaXZhdGU6Ci0gICAgVCYgbV9hdHRhY2htZW50czsKLX07Ci0KIGJvb2wgQ29u
bmVjdGlvbjo6cHJvY2Vzc01lc3NhZ2UoKQogewogICAgIGlmIChtX3JlYWRCdWZmZXJTaXplIDwg
c2l6ZW9mKE1lc3NhZ2VJbmZvKSkKQEAgLTIxNCw3ICsxOTcsNiBAQCBib29sIENvbm5lY3Rpb246
OnByb2Nlc3NNZXNzYWdlKCkKICAgICB9CiAKICAgICBWZWN0b3I8QXR0YWNobWVudD4gYXR0YWNo
bWVudHMoYXR0YWNobWVudENvdW50KTsKLSAgICBBdHRhY2htZW50UmVzb3VyY2VHdWFyZDxWZWN0
b3I8QXR0YWNobWVudD4sIFZlY3RvcjxBdHRhY2htZW50Pjo6aXRlcmF0b3I+IGF0dGFjaGVtZW50
RGlzcG9zZXIoYXR0YWNobWVudHMpOwogICAgIFJlZlB0cjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4g
b29sTWVzc2FnZUJvZHk7CiAKICAgICBzaXplX3QgZmRJbmRleCA9IDA7CkBAIC00MjMsOCArNDA1
LDYgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0
cjxNZXNzYWdlRW5jb2Rlcj4gZW5jb2RlcikKICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoTWVz
c2FnZUluZm8pICsgYXR0YWNobWVudE1heEFtb3VudCAqIHNpemVvZihzaXplX3QpIDw9IG1lc3Nh
Z2VNYXhTaXplLCBBdHRhY2htZW50c0ZpdFRvTWVzc2FnZUlubGluZSk7CiAKICAgICBWZWN0b3I8
QXR0YWNobWVudD4gYXR0YWNobWVudHMgPSBlbmNvZGVyLT5yZWxlYXNlQXR0YWNobWVudHMoKTsK
LSAgICBBdHRhY2htZW50UmVzb3VyY2VHdWFyZDxWZWN0b3I8QXR0YWNobWVudD4sIFZlY3RvcjxB
dHRhY2htZW50Pjo6aXRlcmF0b3I+IGF0dGFjaGVtZW50RGlzcG9zZXIoYXR0YWNobWVudHMpOwot
CiAgICAgaWYgKGF0dGFjaG1lbnRzLnNpemUoKSA+IChhdHRhY2htZW50TWF4QW1vdW50IC0gMSkp
IHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL3VuaXgvU2hhcmVkTWVtb3J5VW5p
eC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS91bml4L1NoYXJlZE1lbW9yeVVuaXguY3Bw
CmluZGV4IDBmMDdhNGEuLjc3ZmQzYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL3VuaXgvU2hhcmVkTWVtb3J5VW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcApAQCAtNTIsMTIgKzUyLDExIEBAIFNoYXJlZE1l
bW9yeTo6SGFuZGxlOjpIYW5kbGUoKQogCiBTaGFyZWRNZW1vcnk6OkhhbmRsZTo6fkhhbmRsZSgp
CiB7Ci0gICAgY2xlYXIoKTsKIH0KIAogdm9pZCBTaGFyZWRNZW1vcnk6OkhhbmRsZTo6Y2xlYXIo
KQogewotICAgIG1fYXR0YWNobWVudC5kaXNwb3NlKCk7CisgICAgbV9hdHRhY2htZW50ID0gSVBD
OjpBdHRhY2htZW50KCk7CiB9CiAKIGJvb2wgU2hhcmVkTWVtb3J5OjpIYW5kbGU6OmlzTnVsbCgp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9y
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNw
cAppbmRleCA5YjFlYjIxLi5iYmY3YzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lkIFdlYkluc3Bl
Y3RvclByb3h5OjpjcmVhdGVJbnNwZWN0b3JQYWdlKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9u
SWRlbnRpZmllcgogICAgICAgICByZXR1cm47CiAKICAgICBtX3VuZGVyVGVzdCA9IHVuZGVyVGVz
dDsKLSAgICBtX2Nvbm5lY3Rpb25JZGVudGlmaWVyID0gY29ubmVjdGlvbklkZW50aWZpZXI7Cisg
ICAgbV9jb25uZWN0aW9uSWRlbnRpZmllciA9IFdURjo6bW92ZShjb25uZWN0aW9uSWRlbnRpZmll
cik7CiAKICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3JVSTo6RXN0YWJsaXNoQ29ubmVjdGlvbihtX2Nvbm5lY3Rpb25JZGVudGlmaWVyLCBt
X2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpLCBtX3VuZGVyVGVzdCksIG1faW5zcGVjdG9yUGFnZS0+
cGFnZUlEKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCmluZGV4
IGQ0ODIxNWUuLjM5M2U2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIu
Y3BwCkBAIC03NiwxMyArNzYsMTEgQEAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24qIFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3QKIAogI2lmIE9T
KERBUldJTikKICAgICBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50
aWZpZXIoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSk7Ci0gICAgaWYgKElQQzo6
Q29ubmVjdGlvbjo6aWRlbnRpZmllcklzTnVsbChjb25uZWN0aW9uSWRlbnRpZmllcikpCi0gICAg
ICAgIHJldHVybiAwOwogI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAgSVBDOjpD
b25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyID0gZW5jb2RlZENvbm5l
Y3Rpb25JZGVudGlmaWVyLmZpbGVEZXNjcmlwdG9yKCk7Ci0gICAgaWYgKGNvbm5lY3Rpb25JZGVu
dGlmaWVyID09IC0xKQotICAgICAgICByZXR1cm4gMDsKKyAgICBJUEM6OkNvbm5lY3Rpb246Oklk
ZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIgPSBlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZp
ZXIucmVsZWFzZUZpbGVEZXNjcmlwdG9yKCk7CiAjZW5kaWYKKyAgICBpZiAoSVBDOjpDb25uZWN0
aW9uOjppZGVudGlmaWVySXNOdWxsKGNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICBSZWZQdHI8UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24+IHBsdWdp
blByb2Nlc3NDb25uZWN0aW9uID0gUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSh0aGlz
LCBwbHVnaW5Qcm9jZXNzVG9rZW4sIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5j
aHJvbm91c0luaXRpYWxpemF0aW9uKTsKICAgICBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9ucy5h
cHBlbmQocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOwo=
</data>
<flag name="review"
          id="276218"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251437</attachid>
            <date>2015-04-23 08:40:13 -0700</date>
            <delta_ts>2015-04-23 08:40:13 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>wk2-attachments.diff</filename>
            <type>text/plain</type>
            <size>12113</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBlNWFjMjk2Li42NDE4NGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNTYg
QEAKIDIwMTUtMDQtMjMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtVTklYXSBEbyBub3QgYWxsb3cgY29waWVzIG9mIElQQzo6QXR0YWNobWVu
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0MDk2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgSXQgZW5zdXJl
cyB0aGF0IHRoZSBmaWxlIGRlc2NyaXB0b3Igb3duZXJzaGlwIGlzIGFsd2F5cyBjb3JyZWN0bHkK
KyAgICAgICAgdHJhbnNmZXJyZWQuIFRoaXMgd2F5IHdlIGNhbiByZW1vdmUgdGhlIGRpc3Bvc2Uo
KSBtZXRob2QgdG8KKyAgICAgICAgZXhwbGljaXRseSBjbG9zZSB0aGUgZmlsZSBkZXNjcmlwdG9y
IGFuZCBhbHdheXMgY2xvc2UgaXQgaW4gdGhlCisgICAgICAgIEF0dGFjaG1lbnQgZGVzdHJ1Y3Rv
ciAodW5sZXNzIGV4cGxpY2l0bHkgdHJhbnNmZXJyZWQgdG8KKyAgICAgICAgSVBDOjpDb25uZWN0
aW9uIG9yIFNoYXJlZE1lbW9yeSkuIEl0IHNpbXBsaWZpZXMgdGhlIGNvZGUgYW5kCisgICAgICAg
IGVuc3VyZSB3ZSBkb24ndCBsZWFrIGZpbGUgZGVzY3JpcHRvcnMuCisKKyAgICAgICAgKiBQbGF0
Zm9ybS9JUEMvQXJndW1lbnREZWNvZGVyLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnREZWNv
ZGVyOjp+QXJndW1lbnREZWNvZGVyKTogUmVtb3ZlIHRoZSBjb2RlIHRvCisgICAgICAgIGV4cGxp
Y2l0bHkgZGlzcG9zZSBhdHRhY2htZW50cy4KKyAgICAgICAgKElQQzo6QXJndW1lbnREZWNvZGVy
OjpyZW1vdmVBdHRhY2htZW50KTogVXNlIFdURjo6bW92ZSgpLgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9Bcmd1bWVudEVuY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudEVuY29kZXI6
On5Bcmd1bWVudEVuY29kZXIpOiBSZW1vdmUgdGhlIGNvZGUgdG8KKyAgICAgICAgZXhwbGljaXRs
eSBkaXNwb3NlIGF0dGFjaG1lbnRzLgorICAgICAgICAoSVBDOjpBcmd1bWVudEVuY29kZXI6OmFk
ZEF0dGFjaG1lbnQpOiBVc2UgV1RGOjptb3ZlKCkuCisgICAgICAgIChJUEM6OkFyZ3VtZW50RW5j
b2Rlcjo6cmVsZWFzZUF0dGFjaG1lbnRzKTogU2ltcGxpZnkgYnkgdXNpbmcgV1RGOjptb3ZlKCku
CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50RW5jb2Rlci5oOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9BdHRhY2htZW50LmNwcDoKKyAgICAgICAgKElQQzo6QXR0YWNobWVudDo6ZW5j
b2RlKTogTW92ZSBhIGNvcHkgb2YgdGhlIGF0dGFjaG1lbnQsIGFuZAorICAgICAgICByZXNldCB0
aGUgZmlsZSBkZXNjcmlwdG9yLCBzaW5jZSB0aGUgb3duZXJzaGlwIGlzIHBhc3NlZCB0byB0aGUg
ZW5jb2Rlci4KKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQXR0YWNobWVudC5oOiBNYWtlIGNvcHkg
Y29uc3RydWN0b3IgYW5kIGFzc2lnbm1lbnQKKyAgICAgICAgcHJpdmF0ZSB0byBub3QgYWxsb3cg
cHVibGljIGNvcGllcy4gVGhlIG9ubHkgY29weSBhbGxvd2VkIGlzIGRvbmUKKyAgICAgICAgYnkg
QXR0YWNobWVudDo6ZW5jb2RlKCkuIE1ha2UgbV9maWxlRGVzY3JpcHRvciBtdXRhYmxlIHNvIHRo
YXQgd2UKKyAgICAgICAgY2FuIHJlc2V0IGl0IGluIEF0dGFjaG1lbnQ6OmVuY29kZSgpIGFmdGVy
IHBhc3NpbmcgdGhlIG93bmVyc2hpcAorICAgICAgICB0byB0aGUgZW5jb2Rlci4KKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvdW5peC9BdHRhY2htZW50VW5peC5jcHA6CisgICAgICAgIChJUEM6OkF0
dGFjaG1lbnQ6On5BdHRhY2htZW50KTogQ2xvc2UgdGhlIGZpbGUgZGVzY3JpcHRvciBpZiBpdAor
ICAgICAgICBoYXNuJ3QgYmVlbiByZWxlYXNlZCBleHBsaWNpdGx5LgorICAgICAgICAoSVBDOjpB
dHRhY2htZW50OjpkaXNwb3NlKTogRGVsZXRlZC4KKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvdW5p
eC9Db25uZWN0aW9uVW5peC5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NN
ZXNzYWdlKTogRG8gbm90IHVzZSBBdHRhY2htZW50UmVzb3VyY2VHdWFyZC4KKyAgICAgICAgKElQ
Qzo6Q29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZSk6IERpdHRvLgorICAgICAgICAoSVBD
OjpBdHRhY2htZW50UmVzb3VyY2VHdWFyZDo6QXR0YWNobWVudFJlc291cmNlR3VhcmQpOiBEZWxl
dGVkLgorICAgICAgICAoSVBDOjpBdHRhY2htZW50UmVzb3VyY2VHdWFyZDo6fkF0dGFjaG1lbnRS
ZXNvdXJjZUd1YXJkKTogRGVsZXRlZC4KKyAgICAgICAgKiBQbGF0Zm9ybS91bml4L1NoYXJlZE1l
bW9yeVVuaXguY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZTo6fkhh
bmRsZSk6IERvIG5vdCBjYWxsIGNsZWFyKCkuCisgICAgICAgIChXZWJLaXQ6OlNoYXJlZE1lbW9y
eTo6SGFuZGxlOjpjbGVhcik6IFJlc2V0IHRoZSBhdHRhY2htZW50LgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clByb3h5OjpjcmVhdGVJbnNwZWN0b3JQYWdlKTogVXNlIFdURjo6bW92ZSgpLgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmdldFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgQ2FsbCByZWxlYXNlRmlsZURlc2NyaXB0b3Io
KSBpbnN0ZWFkIG9mIGZpbGVEZXNjcml0cHJvKCkgc2luY2UgdGhlCisgICAgICAgIG93bmVyc2hp
cCBpcyBwYXNzZWQgdG8gdGhlIGNvbm5lY3Rpb24uCisKKzIwMTUtMDQtMjMgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCiAgICAgICAgIFVucmV2aWV3ZWQuIEZp
eCBkZWJ1ZyBidWlsZCBhZnRlciByMTgzMTc2LgogCiAgICAgICAgICogUGxhdGZvcm0vdW5peC9T
aGFyZWRNZW1vcnlVbml4LmNwcDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0lQQy9Bcmd1bWVudERlY29kZXIuY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Fy
Z3VtZW50RGVjb2Rlci5jcHAKaW5kZXggNDEwNWE3MC4uN2Q5ZTM4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0FyZ3VtZW50RGVjb2Rlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vSVBDL0FyZ3VtZW50RGVjb2Rlci5jcHAKQEAgLTQ3LDEzICs0Nyw3
IEBAIEFyZ3VtZW50RGVjb2Rlcjo6fkFyZ3VtZW50RGVjb2RlcigpCiB7CiAgICAgQVNTRVJUKG1f
YnVmZmVyKTsKICAgICBmcmVlKG1fYnVmZmVyKTsKLSNpZiAhVVNFKFVOSVhfRE9NQUlOX1NPQ0tF
VFMpCiAgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gZGlzcG9zZSBvZiB0aGUgbWFjaCBwb3J0cyBp
biBjYXNlcyBvZiBmYWlsdXJlLgotI2Vsc2UKLSAgICBWZWN0b3I8QXR0YWNobWVudD46Oml0ZXJh
dG9yIGVuZCA9IG1fYXR0YWNobWVudHMuZW5kKCk7Ci0gICAgZm9yIChWZWN0b3I8QXR0YWNobWVu
dD46Oml0ZXJhdG9yIGl0ID0gbV9hdHRhY2htZW50cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
Ci0gICAgICAgIGl0LT5kaXNwb3NlKCk7Ci0jZW5kaWYKIH0KIAogc3RhdGljIGlubGluZSB1aW50
OF90KiByb3VuZFVwVG9BbGlnbm1lbnQodWludDhfdCogcHRyLCB1bnNpZ25lZCBhbGlnbm1lbnQp
CkBAIC0yMTksOCArMjEzLDcgQEAgYm9vbCBBcmd1bWVudERlY29kZXI6OnJlbW92ZUF0dGFjaG1l
bnQoQXR0YWNobWVudCYgYXR0YWNobWVudCkKICAgICBpZiAobV9hdHRhY2htZW50cy5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF0dGFjaG1lbnQgPSBtX2F0dGFjaG1l
bnRzLmxhc3QoKTsKLSAgICBtX2F0dGFjaG1lbnRzLnJlbW92ZUxhc3QoKTsKKyAgICBhdHRhY2ht
ZW50ID0gbV9hdHRhY2htZW50cy50YWtlTGFzdCgpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXJndW1lbnRFbmNvZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Bcmd1bWVudEVuY29kZXIuY3BwCmluZGV4
IGQ1NWY3NDIuLjU4NDg3YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQ
Qy9Bcmd1bWVudEVuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9B
cmd1bWVudEVuY29kZXIuY3BwCkBAIC03MCwxMyArNzAsNyBAQCBBcmd1bWVudEVuY29kZXI6On5B
cmd1bWVudEVuY29kZXIoKQogewogICAgIGlmIChtX2J1ZmZlciAhPSBtX2lubGluZUJ1ZmZlcikK
ICAgICAgICAgZnJlZUJ1ZmZlcihtX2J1ZmZlciwgbV9idWZmZXJDYXBhY2l0eSk7Ci0KLSNpZiAh
VVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gZGlzcG9z
ZSBvZiB0aGUgYXR0YWNobWVudHMgaW4gY2FzZXMgb2YgZmFpbHVyZS4KLSNlbHNlCi0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2F0dGFjaG1lbnRzLnNpemUoKTsgKytpKQotICAgICAgICBt
X2F0dGFjaG1lbnRzW2ldLmRpc3Bvc2UoKTsKLSNlbmRpZgogfQogCiBzdGF0aWMgaW5saW5lIHNp
emVfdCByb3VuZFVwVG9BbGlnbm1lbnQoc2l6ZV90IHZhbHVlLCB1bnNpZ25lZCBhbGlnbm1lbnQp
CkBAIC0xOTEsMTYgKzE4NSwxNCBAQCB2b2lkIEFyZ3VtZW50RW5jb2Rlcjo6ZW5jb2RlKGRvdWJs
ZSBuKQogICAgIGNvcHlWYWx1ZVRvQnVmZmVyKG4sIGJ1ZmZlcik7CiB9CiAKLXZvaWQgQXJndW1l
bnRFbmNvZGVyOjphZGRBdHRhY2htZW50KGNvbnN0IEF0dGFjaG1lbnQmIGF0dGFjaG1lbnQpCit2
b2lkIEFyZ3VtZW50RW5jb2Rlcjo6YWRkQXR0YWNobWVudChBdHRhY2htZW50JiYgYXR0YWNobWVu
dCkKIHsKLSAgICBtX2F0dGFjaG1lbnRzLmFwcGVuZChhdHRhY2htZW50KTsKKyAgICBtX2F0dGFj
aG1lbnRzLmFwcGVuZChXVEY6Om1vdmUoYXR0YWNobWVudCkpOwogfQogCiBWZWN0b3I8QXR0YWNo
bWVudD4gQXJndW1lbnRFbmNvZGVyOjpyZWxlYXNlQXR0YWNobWVudHMoKQogewotICAgIFZlY3Rv
cjxBdHRhY2htZW50PiBuZXdMaXN0OwotICAgIG5ld0xpc3Quc3dhcChtX2F0dGFjaG1lbnRzKTsK
LSAgICByZXR1cm4gbmV3TGlzdDsKKyAgICByZXR1cm4gV1RGOjptb3ZlKG1fYXR0YWNobWVudHMp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0lQQy9Bcmd1bWVudEVuY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQ
Qy9Bcmd1bWVudEVuY29kZXIuaAppbmRleCA3MDg4NTA2Li4yMTFjMTk1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXJndW1lbnRFbmNvZGVyLmgKKysrIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vSVBDL0FyZ3VtZW50RW5jb2Rlci5oCkBAIC02NSw3ICs2NSw3IEBA
IHB1YmxpYzoKICAgICB1aW50OF90KiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsg
fQogICAgIHNpemVfdCBidWZmZXJTaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXJTaXplOyB9
CiAKLSAgICB2b2lkIGFkZEF0dGFjaG1lbnQoY29uc3QgQXR0YWNobWVudCYpOworICAgIHZvaWQg
YWRkQXR0YWNobWVudChBdHRhY2htZW50JiYpOwogICAgIFZlY3RvcjxBdHRhY2htZW50PiByZWxl
YXNlQXR0YWNobWVudHMoKTsKICAgICB2b2lkIHJlc2VydmUoc2l6ZV90KTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0F0dGFjaG1lbnQuY3BwIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vSVBDL0F0dGFjaG1lbnQuY3BwCmluZGV4IDkzNjdiMWEuLmJlMDhiMWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9BdHRhY2htZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXR0YWNobWVudC5jcHAKQEAgLTUyLDcg
KzUyLDcgQEAgdm9pZCBBdHRhY2htZW50OjpyZWxlYXNlKCkKIAogdm9pZCBBdHRhY2htZW50Ojpl
bmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIuYWRk
QXR0YWNobWVudCgqdGhpcyk7CisgICAgZW5jb2Rlci5hZGRBdHRhY2htZW50KFdURjo6bW92ZSgq
Y29uc3RfY2FzdDxBdHRhY2htZW50Kj4odGhpcykpKTsKIH0KIAogYm9vbCBBdHRhY2htZW50Ojpk
ZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBBdHRhY2htZW50JiBhdHRhY2htZW50KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0F0dGFjaG1lbnQuaCBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9BdHRhY2htZW50LmgKaW5kZXggYTZiMTU5My4uMTky
MjQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0F0dGFjaG1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXR0YWNobWVudC5oCkBAIC01NSwx
MCArNTUsOSBAQCBwdWJsaWM6CiAjZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKICAgICBB
dHRhY2htZW50KEF0dGFjaG1lbnQmJik7CiAgICAgQXR0YWNobWVudCYgb3BlcmF0b3I9KEF0dGFj
aG1lbnQmJik7Ci0gICAgQXR0YWNobWVudChjb25zdCBBdHRhY2htZW50JikgPSBkZWZhdWx0Owot
ICAgIEF0dGFjaG1lbnQmIG9wZXJhdG9yPShBdHRhY2htZW50JikgPSBkZWZhdWx0OwogICAgIEF0
dGFjaG1lbnQoaW50IGZpbGVEZXNjcmlwdG9yLCBzaXplX3QpOwogICAgIEF0dGFjaG1lbnQoaW50
IGZpbGVEZXNjcmlwdG9yKTsKKyAgICB+QXR0YWNobWVudCgpOwogI2VuZGlmCiAKICAgICBUeXBl
IHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KQEAgLTc1LDggKzc0LDYgQEAgcHVibGlj
OgogCiAgICAgaW50IHJlbGVhc2VGaWxlRGVzY3JpcHRvcigpIHsgaW50IHRlbXAgPSBtX2ZpbGVE
ZXNjcmlwdG9yOyBtX2ZpbGVEZXNjcmlwdG9yID0gLTE7IHJldHVybiB0ZW1wOyB9CiAgICAgaW50
IGZpbGVEZXNjcmlwdG9yKCkgY29uc3QgeyByZXR1cm4gbV9maWxlRGVzY3JpcHRvcjsgfQotCi0g
ICAgdm9pZCBkaXNwb3NlKCk7CiAjZW5kaWYKIAogICAgIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5j
b2RlciYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL3Vu
aXgvQXR0YWNobWVudFVuaXguY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL3VuaXgv
QXR0YWNobWVudFVuaXguY3BwCmluZGV4IGU2N2VkNjQuLjIxODcxMTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy91bml4L0F0dGFjaG1lbnRVbml4LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvdW5peC9BdHRhY2htZW50VW5peC5jcHAKQEAgLTY3
LDEzICs2NywxMCBAQCBBdHRhY2htZW50JiBBdHRhY2htZW50OjpvcGVyYXRvcj0oQXR0YWNobWVu
dCYmIGF0dGFjaG1lbnQpCiAgICAgcmV0dXJuICp0aGlzOwogfQogCi12b2lkIEF0dGFjaG1lbnQ6
OmRpc3Bvc2UoKQorQXR0YWNobWVudDo6fkF0dGFjaG1lbnQoKQogewotICAgIGlmIChtX2ZpbGVE
ZXNjcmlwdG9yID09IC0xKQotICAgICAgICByZXR1cm47Ci0KLSAgICBjbG9zZVdpdGhSZXRyeSht
X2ZpbGVEZXNjcmlwdG9yKTsKLSAgICBtX2ZpbGVEZXNjcmlwdG9yID0gLTE7CisgICAgaWYgKG1f
ZmlsZURlc2NyaXB0b3IgIT0gLTEpCisgICAgICAgIGNsb3NlV2l0aFJldHJ5KG1fZmlsZURlc2Ny
aXB0b3IpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAppbmRleCBlODhiYTU4Li5mYzVm
NjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0
aW9uVW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVj
dGlvblVuaXguY3BwCkBAIC0xNTUsMjMgKzE1NSw2IEBAIHZvaWQgQ29ubmVjdGlvbjo6cGxhdGZv
cm1JbnZhbGlkYXRlKCkKICAgICBtX2lzQ29ubmVjdGVkID0gZmFsc2U7CiB9CiAKLXRlbXBsYXRl
PGNsYXNzIFQsIGNsYXNzIGl0ZXJhdG9yPgotY2xhc3MgQXR0YWNobWVudFJlc291cmNlR3VhcmQg
ewotcHVibGljOgotICAgIEF0dGFjaG1lbnRSZXNvdXJjZUd1YXJkKFQmIGF0dGFjaG1lbnRzKQot
ICAgICAgICA6IG1fYXR0YWNobWVudHMoYXR0YWNobWVudHMpCi0gICAgewotICAgIH0KLSAgICB+
QXR0YWNobWVudFJlc291cmNlR3VhcmQoKQotICAgIHsKLSAgICAgICAgaXRlcmF0b3IgZW5kID0g
bV9hdHRhY2htZW50cy5lbmQoKTsKLSAgICAgICAgZm9yIChpdGVyYXRvciBpID0gbV9hdHRhY2ht
ZW50cy5iZWdpbigpOyBpICE9IGVuZDsgKytpKQotICAgICAgICAgICAgaS0+ZGlzcG9zZSgpOwot
ICAgIH0KLXByaXZhdGU6Ci0gICAgVCYgbV9hdHRhY2htZW50czsKLX07Ci0KIGJvb2wgQ29ubmVj
dGlvbjo6cHJvY2Vzc01lc3NhZ2UoKQogewogICAgIGlmIChtX3JlYWRCdWZmZXJTaXplIDwgc2l6
ZW9mKE1lc3NhZ2VJbmZvKSkKQEAgLTIxNCw3ICsxOTcsNiBAQCBib29sIENvbm5lY3Rpb246OnBy
b2Nlc3NNZXNzYWdlKCkKICAgICB9CiAKICAgICBWZWN0b3I8QXR0YWNobWVudD4gYXR0YWNobWVu
dHMoYXR0YWNobWVudENvdW50KTsKLSAgICBBdHRhY2htZW50UmVzb3VyY2VHdWFyZDxWZWN0b3I8
QXR0YWNobWVudD4sIFZlY3RvcjxBdHRhY2htZW50Pjo6aXRlcmF0b3I+IGF0dGFjaGVtZW50RGlz
cG9zZXIoYXR0YWNobWVudHMpOwogICAgIFJlZlB0cjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4gb29s
TWVzc2FnZUJvZHk7CiAKICAgICBzaXplX3QgZmRJbmRleCA9IDA7CkBAIC00MjMsOCArNDA1LDYg
QEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxN
ZXNzYWdlRW5jb2Rlcj4gZW5jb2RlcikKICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoTWVzc2Fn
ZUluZm8pICsgYXR0YWNobWVudE1heEFtb3VudCAqIHNpemVvZihzaXplX3QpIDw9IG1lc3NhZ2VN
YXhTaXplLCBBdHRhY2htZW50c0ZpdFRvTWVzc2FnZUlubGluZSk7CiAKICAgICBWZWN0b3I8QXR0
YWNobWVudD4gYXR0YWNobWVudHMgPSBlbmNvZGVyLT5yZWxlYXNlQXR0YWNobWVudHMoKTsKLSAg
ICBBdHRhY2htZW50UmVzb3VyY2VHdWFyZDxWZWN0b3I8QXR0YWNobWVudD4sIFZlY3RvcjxBdHRh
Y2htZW50Pjo6aXRlcmF0b3I+IGF0dGFjaGVtZW50RGlzcG9zZXIoYXR0YWNobWVudHMpOwotCiAg
ICAgaWYgKGF0dGFjaG1lbnRzLnNpemUoKSA+IChhdHRhY2htZW50TWF4QW1vdW50IC0gMSkpIHsK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL3VuaXgvU2hhcmVkTWVtb3J5VW5peC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS91bml4L1NoYXJlZE1lbW9yeVVuaXguY3BwCmlu
ZGV4IDBmMDdhNGEuLjc3ZmQzYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L3VuaXgvU2hhcmVkTWVtb3J5VW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
dW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcApAQCAtNTIsMTIgKzUyLDExIEBAIFNoYXJlZE1lbW9y
eTo6SGFuZGxlOjpIYW5kbGUoKQogCiBTaGFyZWRNZW1vcnk6OkhhbmRsZTo6fkhhbmRsZSgpCiB7
Ci0gICAgY2xlYXIoKTsKIH0KIAogdm9pZCBTaGFyZWRNZW1vcnk6OkhhbmRsZTo6Y2xlYXIoKQog
ewotICAgIG1fYXR0YWNobWVudC5kaXNwb3NlKCk7CisgICAgbV9hdHRhY2htZW50ID0gSVBDOjpB
dHRhY2htZW50KCk7CiB9CiAKIGJvb2wgU2hhcmVkTWVtb3J5OjpIYW5kbGU6OmlzTnVsbCgpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcApp
bmRleCA5YjFlYjIxLi5iYmY3YzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJJbnNwZWN0b3JQcm94eS5jcHAKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lkIFdlYkluc3BlY3Rv
clByb3h5OjpjcmVhdGVJbnNwZWN0b3JQYWdlKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRl
bnRpZmllcgogICAgICAgICByZXR1cm47CiAKICAgICBtX3VuZGVyVGVzdCA9IHVuZGVyVGVzdDsK
LSAgICBtX2Nvbm5lY3Rpb25JZGVudGlmaWVyID0gY29ubmVjdGlvbklkZW50aWZpZXI7CisgICAg
bV9jb25uZWN0aW9uSWRlbnRpZmllciA9IFdURjo6bW92ZShjb25uZWN0aW9uSWRlbnRpZmllcik7
CiAKICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3JVSTo6RXN0YWJsaXNoQ29ubmVjdGlvbihtX2Nvbm5lY3Rpb25JZGVudGlmaWVyLCBtX2lu
c3BlY3RlZFBhZ2UtPnBhZ2VJRCgpLCBtX3VuZGVyVGVzdCksIG1faW5zcGVjdG9yUGFnZS0+cGFn
ZUlEKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCmluZGV4IGQ0
ODIxNWUuLjM5M2U2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3Bw
CkBAIC03NiwxMyArNzYsMTEgQEAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24qIFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3QKIAogI2lmIE9TKERB
UldJTikKICAgICBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZp
ZXIoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSk7Ci0gICAgaWYgKElQQzo6Q29u
bmVjdGlvbjo6aWRlbnRpZmllcklzTnVsbChjb25uZWN0aW9uSWRlbnRpZmllcikpCi0gICAgICAg
IHJldHVybiAwOwogI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAgSVBDOjpDb25u
ZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyID0gZW5jb2RlZENvbm5lY3Rp
b25JZGVudGlmaWVyLmZpbGVEZXNjcmlwdG9yKCk7Ci0gICAgaWYgKGNvbm5lY3Rpb25JZGVudGlm
aWVyID09IC0xKQotICAgICAgICByZXR1cm4gMDsKKyAgICBJUEM6OkNvbm5lY3Rpb246OklkZW50
aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIgPSBlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIu
cmVsZWFzZUZpbGVEZXNjcmlwdG9yKCk7CiAjZW5kaWYKKyAgICBpZiAoSVBDOjpDb25uZWN0aW9u
OjppZGVudGlmaWVySXNOdWxsKGNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBSZWZQdHI8UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24+IHBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uID0gUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSh0aGlzLCBw
bHVnaW5Qcm9jZXNzVG9rZW4sIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJv
bm91c0luaXRpYWxpemF0aW9uKTsKICAgICBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9ucy5hcHBl
bmQocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>