<?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>22886</bug_id>
          
          <creation_ts>2008-12-16 14:55:13 -0800</creation_ts>
          <short_desc>JIT doesn&apos;t compile on x86-64.  Make it do so.</short_desc>
          <delta_ts>2008-12-16 16:03:48 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>102707</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2008-12-16 14:55:13 -0800</bug_when>
    <thetext>*Compile*, not run, don&apos;t get too excited folks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102718</commentid>
    <comment_count>1</comment_count>
      <attachid>26074</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2008-12-16 15:28:44 -0800</bug_when>
    <thetext>Created attachment 26074
The patch

There is something slightly weird going on in JSImmediate.h, but I&apos;m not changing current behaviour, &amp; I&apos;ve raised a separate bug to explore this.  Will have a quick look at the problem this afternoon.

https://bugs.webkit.org/show_bug.cgi?id=22889</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102720</commentid>
    <comment_count>2</comment_count>
      <attachid>26074</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-12-16 15:41:58 -0800</bug_when>
    <thetext>Comment on attachment 26074
The patch

&gt; repathcing property access code

There is a typo in &quot;repathcing&quot;.

I think you should include a description of what you did in Interpreter.cpp, since diff seems to have hated you so much.

&gt; // DEBUG ME!: Why does the result of this need be a 64-bit value?

We use FIXME to identify issues that need to be reexamined in the future. Using the same thing everywhere makes it easier to search for.

Other than that, r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102721</commentid>
    <comment_count>3</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2008-12-16 16:03:48 -0800</bug_when>
    <thetext>Sending        JavaScriptCore/ChangeLog
Sending        JavaScriptCore/assembler/AssemblerBuffer.h
Sending        JavaScriptCore/assembler/MacroAssembler.h
Sending        JavaScriptCore/assembler/X86Assembler.h
Sending        JavaScriptCore/interpreter/Interpreter.cpp
Sending        JavaScriptCore/jit/JIT.cpp
Sending        JavaScriptCore/jit/JITCall.cpp
Sending        JavaScriptCore/jit/JITPropertyAccess.cpp
Sending        JavaScriptCore/runtime/JSImmediate.h
Transmitting file data .........
Committed revision 39342.

</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26074</attachid>
            <date>2008-12-16 15:28:44 -0800</date>
            <delta_ts>2008-12-16 15:41:58 -0800</delta_ts>
            <desc>The patch</desc>
            <filename>patch.jcomp64.txt</filename>
            <type>text/plain</type>
            <size>38812</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM5MzQx
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjQgQEAKKzIwMDgtMTIt
MTYgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgdGhlIEpJVCBjb21w
aWxlIG9uIHg4Ni02NC4KKyAgICAgICAgVGhpcyBsYXJnZWx5IGludm9sdmVzIHBvcHVsdGluZyB0
aGUgbWlzc2luZyBjYWxscyBpbiBNYWNyb0Fzc2VtYmxlci5oLgorICAgICAgICBJbiBhZGRpdGlv
biBzb21lIHJlaW50ZXJwcmV0X2Nhc3RzIG5lZWQgcmVtb3ZpbmcgZnJvbSB0aGUgSklULCBhbmQg
dGhlCisgICAgICAgIHJlcGF0aGNpbmcgcHJvcGVydHkgYWNjZXNzIGNvZGUgd2lsbCBuZWVkIHRv
IGJlIGZ1bGx5IGNvbXBpbGVkIG91dCBmb3IKKyAgICAgICAgbm93LgorCisgICAgICAgIE5vIHBl
cmZvcm1hbmNlIGltcGFjdC4KKworICAgICAgICAqIGFzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIu
aDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibGVyQnVmZmVyOjpwdXRJbnQ2NFVuY2hlY2tlZCk6Cisg
ICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyOjpsb2FkUHRyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OmxvYWQz
Mik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpzdG9yZVB0cik6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyOjpzdG9yZVB0cldpdGhSZXBhdGNoKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXI6OnN0b3JlMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6
cG9rZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyOjptb3ZlKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXI6OnRlc3RJbW02NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyOjpqZVB0cik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpqbmVQdHIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6am56UHRyKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXI6Omp6UHRyKToKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6Cisg
ICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6KToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVy
OjpjbXBxX3JyKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpjbXBxX3JtKToKKyAgICAg
ICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpjbXBxX2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1i
bGVyOjp0ZXN0cV9pMzJtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjptb3ZsX21FQVgp
OgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Om1vdmxfaTMycik6CisgICAgICAgIChKU0M6
Olg4NkFzc2VtYmxlcjo6bW92bF9FQVhtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpt
b3ZxX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjptb3ZxX21FQVgpOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om1vdnFfbXIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJs
ZXI6Om1vdnFfaTY0cik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6bW92bF9tcik6Cisg
ICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6Om9uZUJ5
dGVPcDY0KToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZJbnN0cnVjdGlvbkZvcm1h
dHRlcjo6aW1tZWRpYXRlNjQpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNw
cDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmN0aV9vcF9wdXRfYnlfaWRfZ2VuZXJpYyk6
CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpjdGlfb3BfZ2V0X2J5X2lkX2dlbmVyaWMpOgor
ICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Y3RpX29wX3B1dF9ieV9pZCk6CisgICAgICAgIChK
U0M6OkludGVycHJldGVyOjpjdGlfb3BfcHV0X2J5X2lkX3NlY29uZCk6CisgICAgICAgICogaml0
L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6Cisg
ICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGUpOgorICAgICAgICAoSlNDOjpKSVQ6OnBy
aXZhdGVDb21waWxlQ1RJTWFjaGluZVRyYW1wb2xpbmVzKToKKyAgICAgICAgKiBqaXQvSklUQ2Fs
bC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbFNldHVwQXJncyk6CisgICAg
ICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5
QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlR2V0QnlJZEhvdFBhdGgpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVQdXRCeUlkSG90UGF0aCk6CisgICAgICAgICogcnVu
dGltZS9KU0ltbWVkaWF0ZS5oOgorICAgICAgICAoSlNDOjpKU0ltbWVkaWF0ZTo6bWFrZUludCk6
CisKIDIwMDgtMTItMTYgIENhbWVyb24gWndhcmljaCAgPHp3YXJpY2hAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogYXNzZW1ibGVyL0Fzc2VtYmxl
ckJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIGFzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIuaAkocmV2
aXNpb24gMzkzMzMpCisrKyBhc3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTk4LDYgKzk4LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgbV9zaXpl
ICs9IDQ7CiAgICAgICAgIH0KIAorICAgICAgICB2b2lkIHB1dEludDY0VW5jaGVja2VkKGludDY0
X3QgdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgICpyZWludGVycHJldF9jYXN0PGludDY0
X3QqPigmbV9idWZmZXJbbV9zaXplXSkgPSB2YWx1ZTsKKyAgICAgICAgICAgIG1fc2l6ZSArPSA4
OworICAgICAgICB9CisKICAgICAgICAgdm9pZCBwdXRJbnQoaW50IHZhbHVlKQogICAgICAgICB7
CiAgICAgICAgICAgICBpZiAobV9zaXplID4gbV9jYXBhY2l0eSAtIDQpCkluZGV4OiBhc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXIuaAkocmV2aXNpb24gMzkzMzMpCisrKyBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMzgsNiArMzgsMTAgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXIgewogcHJv
dGVjdGVkOgogICAgIFg4NkFzc2VtYmxlciBtX2Fzc2VtYmxlcjsKIAorI2lmIFBMQVRGT1JNKFg4
Nl82NCkKKyAgICBzdGF0aWMgY29uc3QgWDg2OjpSZWdpc3RlcklEIHNjcmF0Y2hSZWdpc3RlciA9
IFg4Njo6cjExOworI2VuZGlmCisKIHB1YmxpYzoKICAgICB0eXBlZGVmIFg4Njo6UmVnaXN0ZXJJ
RCBSZWdpc3RlcklEOwogCkBAIC01MjEsMjEgKzUyNSwzMyBAQCBwdWJsaWM6CiAjaWYgUExBVEZP
Uk0oWDg2XzY0KQogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX21yKGFkZHJlc3Mub2Zmc2V0LCBh
ZGRyZXNzLmJhc2UsIGRlc3QpOwogI2Vsc2UKLSAgICBsb2FkMzIoYWRkcmVzcywgZGVzdCk7Cisg
ICAgICAgIGxvYWQzMihhZGRyZXNzLCBkZXN0KTsKICNlbmRpZgogICAgIH0KIAotI2lmICFQTEFU
Rk9STShYODZfNjQpCiAgICAgdm9pZCBsb2FkUHRyKEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3Rl
cklEIGRlc3QpCiAgICAgeworI2lmIFBMQVRGT1JNKFg4Nl82NCkKKyAgICAgICAgbV9hc3NlbWJs
ZXIubW92cV9tcihhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBh
ZGRyZXNzLnNjYWxlLCBkZXN0KTsKKyNlbHNlCiAgICAgICAgIGxvYWQzMihhZGRyZXNzLCBkZXN0
KTsKKyNlbmRpZgogICAgIH0KIAogICAgIHZvaWQgbG9hZFB0cih2b2lkKiBhZGRyZXNzLCBSZWdp
c3RlcklEIGRlc3QpCiAgICAgeworI2lmIFBMQVRGT1JNKFg4Nl82NCkKKyAgICAgICAgaWYgKGRl
c3QgPT0gWDg2OjplYXgpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX21FQVgoYWRkcmVz
cyk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbW92ZShYODY6OmVheCwgZGVzdCk7Cisg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX21FQVgoYWRkcmVzcyk7CisgICAgICAgICAgICBz
d2FwKFg4Njo6ZWF4LCBkZXN0KTsKKyAgICAgICAgfQorI2Vsc2UKICAgICAgICAgbG9hZDMyKGFk
ZHJlc3MsIGRlc3QpOwotICAgIH0KICNlbmRpZgorICAgIH0KIAogICAgIHZvaWQgbG9hZDMyKElt
cGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewpAQCAtNTQ3LDEy
ICs1NjMsMjAgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsX21yKGFkZHJlc3Mu
b2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUsIGRlc3Qp
OwogICAgIH0KIAotI2lmICFQTEFURk9STShYODZfNjQpCiAgICAgdm9pZCBsb2FkMzIodm9pZCog
YWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKKyNpZiBQTEFURk9STShYODZfNjQpCisg
ICAgICAgIGlmIChkZXN0ID09IFg4Njo6ZWF4KQorICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92
bF9tRUFYKGFkZHJlc3MpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1vdmUoWDg2Ojpl
YXgsIGRlc3QpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92bF9tRUFYKGFkZHJlc3MpOwor
ICAgICAgICAgICAgc3dhcChYODY6OmVheCwgZGVzdCk7CisgICAgICAgIH0KKyNlbHNlCiAgICAg
ICAgIG1fYXNzZW1ibGVyLm1vdmxfbXIoYWRkcmVzcywgZGVzdCk7Ci0gICAgfQogI2VuZGlmCisg
ICAgfQogCiAgICAgdm9pZCBsb2FkMTYoQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7CkBAIC01NjQsMjcgKzU4OCw0MSBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oWDg2
XzY0KQogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX3JtKHNyYywgYWRkcmVzcy5vZmZzZXQsIGFk
ZHJlc3MuYmFzZSk7CiAjZWxzZQotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsX3JtKHNyYywgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgICAgIHN0b3JlMzIoc3JjLCBhZGRyZXNz
KTsKICNlbmRpZgogICAgIH0KLSAgICAKLSNpZiAhUExBVEZPUk0oWDg2XzY0KQotICAgIHZvaWQg
c3RvcmVQdHIoSW1tUHRyIGltbSwgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCi0gICAgewotICAg
ICAgICBtX2Fzc2VtYmxlci5tb3ZsX2kzMm0ocmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZD4oaW1t
Lm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKLSAgICB9CiAKICAgICB2
b2lkIHN0b3JlUHRyKFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKICAgICB7Cisj
aWYgUExBVEZPUk0oWDg2XzY0KQorICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX3JtKHNyYywgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7
CisjZWxzZQogICAgICAgICBzdG9yZTMyKHNyYywgYWRkcmVzcyk7CisjZW5kaWYKKyAgICB9CisK
KyAgICB2b2lkIHN0b3JlUHRyKEltbVB0ciBpbW0sIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQor
ICAgIHsKKyNpZiBQTEFURk9STShYODZfNjQpCisgICAgICAgIG1vdmUoaW1tLCBzY3JhdGNoUmVn
aXN0ZXIpOworICAgICAgICBzdG9yZVB0cihzY3JhdGNoUmVnaXN0ZXIsIGFkZHJlc3MpOworI2Vs
c2UKKyAgICAgICAgbV9hc3NlbWJsZXIubW92bF9pMzJtKHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWdu
ZWQ+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisjZW5kaWYK
ICAgICB9CiAKICAgICBEYXRhTGFiZWxQdHIgc3RvcmVQdHJXaXRoUmVwYXRjaChBZGRyZXNzIGFk
ZHJlc3MpCiAgICAgeworI2lmIFBMQVRGT1JNKFg4Nl82NCkKKyAgICAgICAgbV9hc3NlbWJsZXIu
bW92cV9pNjRyKDAsIHNjcmF0Y2hSZWdpc3Rlcik7CisgICAgICAgIERhdGFMYWJlbFB0ciBsYWJl
bCh0aGlzKTsKKyAgICAgICAgc3RvcmVQdHIoc2NyYXRjaFJlZ2lzdGVyLCBhZGRyZXNzKTsKKyAg
ICAgICAgcmV0dXJuIGxhYmVsOworI2Vsc2UKICAgICAgICAgbV9hc3NlbWJsZXIubW92bF9pMzJt
KDAsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOwogICAgICAgICByZXR1cm4gRGF0YUxh
YmVsUHRyKHRoaXMpOwotICAgIH0KICNlbmRpZgorICAgIH0KIAogICAgIHZvaWQgc3RvcmUzMihS
ZWdpc3RlcklEIHNyYywgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCiAgICAgewpAQCAtNjAxLDEy
ICs2MzksMTcgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsX2kzMm0oaW1tLm1f
dmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOwogICAgIH0KICAgICAKLSNpZiAh
UExBVEZPUk0oWDg2XzY0KQogICAgIHZvaWQgc3RvcmUzMihJbW0zMiBpbW0sIHZvaWQqIGFkZHJl
c3MpCiAgICAgeworI2lmIFBMQVRGT1JNKFg4Nl82NCkKKyAgICAgICAgbW92ZShYODY6OmVheCwg
c2NyYXRjaFJlZ2lzdGVyKTsKKyAgICAgICAgbW92ZShpbW0sIFg4Njo6ZWF4KTsKKyAgICAgICAg
bV9hc3NlbWJsZXIubW92bF9FQVhtKGFkZHJlc3MpOworICAgICAgICBtb3ZlKHNjcmF0Y2hSZWdp
c3RlciwgWDg2OjplYXgpOworI2Vsc2UKICAgICAgICAgbV9hc3NlbWJsZXIubW92bF9pMzJtKGlt
bS5tX3ZhbHVlLCBhZGRyZXNzKTsKLSAgICB9CiAjZW5kaWYKKyAgICB9CiAKIAogICAgIC8vIFN0
YWNrIG1hbmlwdWxhdGlvbiBvcGVyYXRpb25zOgpAQCAtNjQ3LDEyICs2OTAsMTAgQEAgcHVibGlj
OgogICAgICAgICBzdG9yZTMyKHZhbHVlLCBBZGRyZXNzKFg4Njo6ZXNwLCAoaW5kZXggKiBzaXpl
b2Yodm9pZCAqKSkpKTsKICAgICB9CiAKLSNpZiAhUExBVEZPUk0oWDg2XzY0KQogICAgIHZvaWQg
cG9rZShJbW1QdHIgaW1tLCBpbnQgaW5kZXggPSAwKQogICAgIHsKICAgICAgICAgc3RvcmVQdHIo
aW1tLCBBZGRyZXNzKFg4Njo6ZXNwLCAoaW5kZXggKiBzaXplb2Yodm9pZCAqKSkpKTsKICAgICB9
Ci0jZW5kaWYKIAogICAgIC8vIFJlZ2lzdGVyIG1vdmUgb3BlcmF0aW9uczoKICAgICAvLwpAQCAt
Njc5LDEyICs3MjAsMTQgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogCi0jaWYgIVBMQVRGT1JN
KFg4Nl82NCkKICAgICB2b2lkIG1vdmUoSW1tUHRyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAg
IHsKKyNpZiBQTEFURk9STShYODZfNjQpCisgICAgICAgIG1fYXNzZW1ibGVyLm1vdnFfaTY0cihy
ZWludGVycHJldF9jYXN0PGludDY0X3Q+KGltbS5tX3ZhbHVlKSwgZGVzdCk7CisjZWxzZQogICAg
ICAgICBtX2Fzc2VtYmxlci5tb3ZsX2kzMnIocmVpbnRlcnByZXRfY2FzdDxpbnQzMl90PihpbW0u
bV92YWx1ZSksIGRlc3QpOwotICAgIH0KICNlbmRpZgorICAgIH0KIAogICAgIHZvaWQgc3dhcChS
ZWdpc3RlcklEIHJlZzEsIFJlZ2lzdGVySUQgcmVnMikKICAgICB7CkBAIC03NzEsNiArODE0LDIy
IEBAIHByaXZhdGU6CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRlc3Rx
X2kzMnIobWFzay5tX3ZhbHVlLCByZWcpOwogICAgIH0KKworICAgIHZvaWQgdGVzdEltbTY0KEFk
ZHJlc3MgYWRkcmVzcywgSW1tMzIgbWFzaykKKyAgICB7CisgICAgICAgIGlmIChtYXNrLm1fdmFs
dWUgPT0gLTEpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXBxX2ltKDAsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxl
ci50ZXN0cV9pMzJtKG1hc2subV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7
CisgICAgfQorCisgICAgdm9pZCB0ZXN0SW1tNjQoQmFzZUluZGV4IGFkZHJlc3MsIEltbTMyIG1h
c2spCisgICAgeworICAgICAgICBpZiAobWFzay5tX3ZhbHVlID09IC0xKQorICAgICAgICAgICAg
bV9hc3NlbWJsZXIuY21wcV9pbSgwLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRy
ZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9h
c3NlbWJsZXIudGVzdHFfaTMybShtYXNrLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KICNlbmRpZgogCiBw
dWJsaWM6CkBAIC03OTgsMTIgKzg1NywxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBKdW1w
KG1fYXNzZW1ibGVyLmpiKCkpOwogICAgIH0KICAgICAKLSNpZiAhUExBVEZPUk0oWDg2XzY0KQog
ICAgIEp1bXAgamVQdHIoUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyKQogICAgIHsKKyNp
ZiBQTEFURk9STShYODZfNjQpCisgICAgICAgIG1fYXNzZW1ibGVyLmNtcHFfcnIob3AxLCBvcDIp
OworICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qZSgpKTsKKyNlbHNlCiAgICAgICAg
IHJldHVybiBqZTMyKG9wMSwgb3AyKTsKLSAgICB9CiAjZW5kaWYKKyAgICB9CiAKICAgICBKdW1w
IGplMzIoUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyKQogICAgIHsKQEAgLTg4MywxOCAr
OTQ1LDQ1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuamxlKCkp
OwogICAgIH0KIAotI2lmICFQTEFURk9STShYODZfNjQpCisgICAgSnVtcCBqbmVQdHIoUmVnaXN0
ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyKQorICAgIHsKKyNpZiBQTEFURk9STShYODZfNjQpCisg
ICAgICAgIG1fYXNzZW1ibGVyLmNtcHFfcnIob3AxLCBvcDIpOworICAgICAgICByZXR1cm4gSnVt
cChtX2Fzc2VtYmxlci5qbmUoKSk7CisjZWxzZQorICAgICAgICByZXR1cm4gam5lMzIob3AxLCBv
cDIpOworI2VuZGlmCisgICAgfQorCiAgICAgSnVtcCBqbmVQdHIoUmVnaXN0ZXJJRCByZWcsIEFk
ZHJlc3MgYWRkcmVzcykKICAgICB7CisjaWYgUExBVEZPUk0oWDg2XzY0KQorICAgICAgICBtX2Fz
c2VtYmxlci5jbXBxX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisjZWxz
ZQogICAgICAgICBtX2Fzc2VtYmxlci5jbXBsX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJl
c3MuYmFzZSk7CisjZW5kaWYKICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuam5lKCkp
OwogICAgIH0KIAorICAgIEp1bXAgam5lUHRyKFJlZ2lzdGVySUQgcmVnLCBJbW1QdHIgaW1tKQor
ICAgIHsKKyNpZiBQTEFURk9STShYODZfNjQpCisgICAgICAgIG1vdmUoaW1tLCBzY3JhdGNoUmVn
aXN0ZXIpOworICAgICAgICByZXR1cm4gam5lUHRyKHNjcmF0Y2hSZWdpc3RlciwgcmVnKTsKKyNl
bHNlCisgICAgICAgIHJldHVybiBqbmUzMihyZWcsIEltbTMyKHJlaW50ZXJwcmV0X2Nhc3Q8aW50
MzJfdD4oaW1tLm1fdmFsdWUpKSk7CisjZW5kaWYKKyAgICB9CisKICAgICBKdW1wIGpuZVB0cihB
ZGRyZXNzIGFkZHJlc3MsIEltbVB0ciBpbW0pCiAgICAgeworI2lmIFBMQVRGT1JNKFg4Nl82NCkK
KyAgICAgICAgbW92ZShpbW0sIHNjcmF0Y2hSZWdpc3Rlcik7CisgICAgICAgIHJldHVybiBqbmVQ
dHIoc2NyYXRjaFJlZ2lzdGVyLCBhZGRyZXNzKTsKKyNlbHNlCiAgICAgICAgIHJldHVybiBqbmUz
MihhZGRyZXNzLCBJbW0zMihyZWludGVycHJldF9jYXN0PGludDMyX3Q+KGltbS5tX3ZhbHVlKSkp
OwotICAgIH0KICNlbmRpZgorICAgIH0KIAogICAgIEp1bXAgam5lMzIoUmVnaXN0ZXJJRCBvcDEs
IFJlZ2lzdGVySUQgb3AyKQogICAgIHsKQEAgLTkzMCwxMiArMTAxOSwxNSBAQCBwdWJsaWM6CiAj
ZW5kaWYKICAgICB9CiAKLSNpZiAhUExBVEZPUk0oWDg2XzY0KQogICAgIEp1bXAgam56UHRyKEFk
ZHJlc3MgYWRkcmVzcywgSW1tMzIgbWFzayA9IEltbTMyKC0xKSkKICAgICB7CisjaWYgUExBVEZP
Uk0oWDg2XzY0KQorICAgICAgICB0ZXN0SW1tNjQoYWRkcmVzcywgbWFzayk7CisgICAgICAgIHJl
dHVybiBKdW1wKG1fYXNzZW1ibGVyLmpuZSgpKTsKKyNlbHNlCiAgICAgICAgIHJldHVybiBqbnoz
MihhZGRyZXNzLCBtYXNrKTsKLSAgICB9CiAjZW5kaWYKKyAgICB9CiAKICAgICBKdW1wIGpuejMy
KFJlZ2lzdGVySUQgcmVnLCBJbW0zMiBtYXNrID0gSW1tMzIoLTEpKQogICAgIHsKQEAgLTk0OSwy
MiArMTA0MSwzNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpu
ZSgpKTsKICAgICB9CiAKLSNpZiAhUExBVEZPUk0oWDg2XzY0KQogICAgIEp1bXAganpQdHIoUmVn
aXN0ZXJJRCByZWcsIEltbTMyIG1hc2sgPSBJbW0zMigtMSkpCiAgICAgeworI2lmIFBMQVRGT1JN
KFg4Nl82NCkKKyAgICAgICAgdGVzdEltbTY0KHJlZywgbWFzayk7CisgICAgICAgIHJldHVybiBK
dW1wKG1fYXNzZW1ibGVyLmplKCkpOworI2Vsc2UKICAgICAgICAgcmV0dXJuIGp6MzIocmVnLCBt
YXNrKTsKKyNlbmRpZgogICAgIH0KIAogICAgIEp1bXAganpQdHIoQWRkcmVzcyBhZGRyZXNzLCBJ
bW0zMiBtYXNrID0gSW1tMzIoLTEpKQogICAgIHsKKyNpZiBQTEFURk9STShYODZfNjQpCisgICAg
ICAgIHRlc3RJbW02NChhZGRyZXNzLCBtYXNrKTsKKyAgICAgICAgcmV0dXJuIEp1bXAobV9hc3Nl
bWJsZXIuamUoKSk7CisjZWxzZQogICAgICAgICByZXR1cm4ganozMihhZGRyZXNzLCBtYXNrKTsK
KyNlbmRpZgogICAgIH0KIAogICAgIEp1bXAganpQdHIoQmFzZUluZGV4IGFkZHJlc3MsIEltbTMy
IG1hc2sgPSBJbW0zMigtMSkpCiAgICAgeworI2lmIFBMQVRGT1JNKFg4Nl82NCkKKyAgICAgICAg
dGVzdEltbTY0KGFkZHJlc3MsIG1hc2spOworICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxl
ci5qZSgpKTsKKyNlbHNlCiAgICAgICAgIHJldHVybiBqejMyKGFkZHJlc3MsIG1hc2spOwotICAg
IH0KICNlbmRpZgorICAgIH0KIAogICAgIEp1bXAganozMihSZWdpc3RlcklEIHJlZywgSW1tMzIg
bWFzayA9IEltbTMyKC0xKSkKICAgICB7CkBAIC0xMDQ1LDEyICsxMTUwLDEwIEBAIHB1YmxpYzoK
ICAgICAgICAgam5lMzIob3AxLCBpbW0pLmxpbmtUbyh0YXJnZXQsIHRoaXMpOwogICAgIH0KIAot
I2lmICFQTEFURk9STShYODZfNjQpCiAgICAgdm9pZCBqelB0cihSZWdpc3RlcklEIHJlZywgTGFi
ZWwgdGFyZ2V0KQogICAgIHsKICAgICAgICAganpQdHIocmVnKS5saW5rVG8odGFyZ2V0LCB0aGlz
KTsKICAgICB9Ci0jZW5kaWYKIAogICAgIHZvaWQganVtcChMYWJlbCB0YXJnZXQpCiAgICAgewpJ
bmRleDogYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGFzc2VtYmxlci9Y
ODZBc3NlbWJsZXIuaAkocmV2aXNpb24gMzkzMzMpCisrKyBhc3NlbWJsZXIvWDg2QXNzZW1ibGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMCw2ICsxMTAsOSBAQCBwdWJsaWM6CiAgICAgICAgIE9Q
X0xFQSAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDhELAogICAgICAgICBPUF9HUk9VUDFB
X0V2ICAgICAgICAgICAgICAgICAgID0gMHg4RiwKICAgICAgICAgT1BfQ0RRICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IDB4OTksCisgICAgICAgIE9QX01PVl9FQVhPdiAgICAgICAgICAgICAg
ICAgICAgPSAweEExLAorICAgICAgICBPUF9NT1ZfT3ZFQVggICAgICAgICAgICAgICAgICAgID0g
MHhBMywKKyAgICAgICAgT1BfTU9WX0VBWEl2ICAgICAgICAgICAgICAgICAgICA9IDB4QjgsCiAg
ICAgICAgIE9QX0dST1VQMl9FdkliICAgICAgICAgICAgICAgICAgPSAweEMxLAogICAgICAgICBP
UF9SRVQgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHhDMywKICAgICAgICAgT1BfR1JPVVAx
MV9Fdkl6ICAgICAgICAgICAgICAgICA9IDB4QzcsCkBAIC00OTgsNyArNTAxLDM5IEBAIHB1Ymxp
YzoKICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKICAgICB9CiAKLSNpZiAh
UExBVEZPUk0oWDg2XzY0KQorI2lmIFBMQVRGT1JNKFg4Nl82NCkKKyAgICB2b2lkIGNtcHFfcnIo
UmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wNjQoT1BfQ01QX0V2R3YsIHNyYywgZHN0KTsKKyAgICB9CisKKyAgICB2b2lk
IGNtcHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0NNUF9Fdkd2LCBzcmMsIGJh
c2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBjbXBxX2ltKGludCBpbW0sIGludCBvZmZz
ZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRf
OF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9V
UDFfRXZJYiwgR1JPVVAxX09QX0NNUCwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9y
bWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfQ01QLCBiYXNl
LCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIHZvaWQgY21wcV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAg
ICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX0NNUCwgYmFzZSwgaW5k
ZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChp
bW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
NjQoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9DTVAsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zm
c2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAg
IH0KKyAgICB9CisjZWxzZQogICAgIHZvaWQgY21wbF9pbShpbnQgaW1tLCB2b2lkKiBhZGRyKQog
ICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKQEAgLTU1MSw2
ICs1ODYsMTggQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9H
Uk9VUDFfRXZJeiwgR1JPVVAzX09QX1RFU1QsIGRzdCk7CiAgICAgICAgIG1fZm9ybWF0dGVyLmlt
bWVkaWF0ZTMyKGltbSk7CiAgICAgfQorCisgICAgdm9pZCB0ZXN0cV9pMzJtKGludCBpbW0sIGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcDY0KE9QX0dST1VQM19Fdkl6LCBHUk9VUDNfT1BfVEVTVCwgYmFzZSwgb2Zmc2V0KTsK
KyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICB9CisKKyAgICB2b2lk
IHRlc3RxX2kzMm0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3Rl
cklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3A2NChPUF9HUk9VUDNfRXZJeiwgR1JPVVAzX09QX1RFU1QsIGJhc2UsIGluZGV4LCBzY2FsZSwg
b2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICB9CiAj
ZW5kaWYgCiAKICAgICB2b2lkIHRlc3RiX2k4cihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkKQEAg
LTYxMyw2ICs2NjAsMTYgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3Ao
T1BfTU9WX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOwogICAgIH0KICAg
ICAKKyAgICB2b2lkIG1vdmxfbUVBWCh2b2lkKiBhZGRyKQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wKE9QX01PVl9FQVhPdik7CisjaWYgUExBVEZPUk0oWDg2XzY0KQorICAg
ICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU2NChyZWludGVycHJldF9jYXN0PGludDY0X3Q+KGFk
ZHIpKTsKKyNlbHNlCisgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKHJlaW50ZXJwcmV0
X2Nhc3Q8aW50PihhZGRyKSk7CisjZW5kaWYKKyAgICB9CisKICAgICB2b2lkIG1vdmxfbXIoaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9NT1ZfR3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQpOwpA
QCAtNjI1LDcgKzY4Miw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbW92bF9pMzJyKGludCBpbW0s
IFJlZ2lzdGVySUQgZHN0KQogICAgIHsKLSAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9Q
X0dST1VQMTFfRXZJeiwgR1JPVVAxMV9NT1YsIGRzdCk7CisgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcChPUF9NT1ZfRUFYSXYsIGRzdCk7CiAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0
ZTMyKGltbSk7CiAgICAgfQogCkBAIC02MzUsNiArNjkyLDE2IEBAIHB1YmxpYzoKICAgICAgICAg
bV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKICAgICB9CiAKKyAgICB2b2lkIG1vdmxfRUFY
bSh2b2lkKiBhZGRyKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX01P
Vl9PdkVBWCk7CisjaWYgUExBVEZPUk0oWDg2XzY0KQorICAgICAgICBtX2Zvcm1hdHRlci5pbW1l
ZGlhdGU2NChyZWludGVycHJldF9jYXN0PGludDY0X3Q+KGFkZHIpKTsKKyNlbHNlCisgICAgICAg
IG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKHJlaW50ZXJwcmV0X2Nhc3Q8aW50PihhZGRyKSk7Cisj
ZW5kaWYKKyAgICB9CisKICNpZiBQTEFURk9STShYODZfNjQpCiAgICAgdm9pZCBtb3ZxX3JyKFJl
Z2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CkBAIC02NDYsMTQgKzcxMywzOSBA
QCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX01PVl9Fdkd2LCBz
cmMsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBtb3ZxX3JtKFJlZ2lzdGVySUQg
c3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX01PVl9Fdkd2
LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG1v
dnFfbUVBWCh2b2lkKiBhZGRyKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
NjQoT1BfTU9WX0VBWE92KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlNjQocmVpbnRl
cnByZXRfY2FzdDxpbnQ2NF90PihhZGRyKSk7CisgICAgfQorCiAgICAgdm9pZCBtb3ZxX21yKGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9NT1ZfR3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQp
OwogICAgIH0KKworICAgIHZvaWQgbW92cV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Us
IFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9NT1ZfR3ZFdiwgZHN0LCBiYXNlLCBpbmRl
eCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBtb3ZxX2k2NHIoaW50NjRfdCBp
bW0sIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
NjQoT1BfTU9WX0VBWEl2LCBkc3QpOworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU2NChp
bW0pOworICAgIH0KICNlbHNlCiAgICAgdm9pZCBtb3ZsX21yKHZvaWQqIGFkZHIsIFJlZ2lzdGVy
SUQgZHN0KQogICAgIHsKLSAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX01PVl9HdkV2
LCBkc3QsIGFkZHIpOworICAgICAgICBpZiAoZHN0ID09IFg4Njo6ZWF4KQorICAgICAgICAgICAg
bW92bF9tRUFYKGFkZHIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3AoT1BfTU9WX0d2RXYsIGRzdCwgYWRkcik7CiAgICAgfQogCiAgICAgdm9pZCBtb3Zs
X2kzMm0oaW50IGltbSwgdm9pZCogYWRkcikKQEAgLTExMDMsNiArMTE5NSwyMCBAQCBwcml2YXRl
OgogICAgICAgICAvLyBXaGVuIHBsYW50aW5nIGQ2NCBvciBmNjQgaW5zdHJ1Y3Rpb25zLCBub3Qg
cmVxdWlyaW5nIGEgUkVYLncgcHJlZml4LAogICAgICAgICAvLyB0aGUgbm9ybWFsIChub24tJzY0
Jy1wb3N0Zml4ZWQpIGZvcm1hdHRlcnMgc2hvdWxkIGJlIHVzZWQuCiAKKyAgICAgICAgdm9pZCBv
bmVCeXRlT3A2NChPbmVCeXRlT3Bjb2RlSUQgb3Bjb2RlKQorICAgICAgICB7CisgICAgICAgICAg
ICBtX2J1ZmZlci5lbnN1cmVTcGFjZShtYXhJbnN0cnVjdGlvblNpemUpOworICAgICAgICAgICAg
ZW1pdFJleFcoMCwgMCwgMCk7CisgICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVja2Vk
KG9wY29kZSk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIG9uZUJ5dGVPcDY0KE9uZUJ5dGVP
cGNvZGVJRCBvcGNvZGUsIFJlZ2lzdGVySUQgcmVnKQorICAgICAgICB7CisgICAgICAgICAgICBt
X2J1ZmZlci5lbnN1cmVTcGFjZShtYXhJbnN0cnVjdGlvblNpemUpOworICAgICAgICAgICAgZW1p
dFJleFcocmVnLCAwLCAwKTsKKyAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQo
b3Bjb2RlICsgcmVnKTsKKyAgICAgICAgfQorCiAgICAgICAgIHZvaWQgb25lQnl0ZU9wNjQoT25l
Qnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBybSkKICAgICAgICAgewog
ICAgICAgICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2UobWF4SW5zdHJ1Y3Rpb25TaXplKTsKQEAg
LTExOTQsNiArMTMwMCwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9idWZmZXIucHV0SW50
VW5jaGVja2VkKGltbSk7CiAgICAgICAgIH0KIAorICAgICAgICB2b2lkIGltbWVkaWF0ZTY0KGlu
dDY0X3QgaW1tKQorICAgICAgICB7CisgICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnQ2NFVuY2hl
Y2tlZChpbW0pOworICAgICAgICB9CisKICAgICAgICAgSm1wU3JjIGltbWVkaWF0ZVJlbDMyKCkK
ICAgICAgICAgewogICAgICAgICAgICAgbV9idWZmZXIucHV0SW50VW5jaGVja2VkKDApOwpJbmRl
eDogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGludGVycHJldGVy
L0ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMzkzMzMpCisrKyBpbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwNTEsNiArNDA1MSw4IEBAIENhbGxGcmFtZSog
SW50ZXJwcmV0ZXI6OmZpbmRGdW5jdGlvbkNhbGwKIAogI2lmIEVOQUJMRShKSVQpCiAKKyNpZiBF
TkFCTEUoSklUX09QVElNSVpFX1BST1BFUlRZX0FDQ0VTUykKKwogTkVWRVJfSU5MSU5FIHZvaWQg
SW50ZXJwcmV0ZXI6OnRyeUNUSUNhY2hlUHV0QnlJRChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIHZvaWQqIHJldHVybkFkZHJlc3MsIEpTVmFsdWUqIGJhc2VWYWx1
ZSwgY29uc3QgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIC8vIFRoZSBpbnRlcnByZXRl
ciBjaGVja3MgZm9yIHJlY3Vyc2lvbiBoZXJlOyBJIGRvIG5vdCBiZWxpZXZlIHRoaXMgY2FuIG9j
Y3VyIGluIENUSS4KQEAgLTQyMDIsNiArNDIwNCw4IEBAIE5FVkVSX0lOTElORSB2b2lkIEludGVy
cHJldGVyOjp0cnlDVElDYWMKICAgICBKSVQ6OmNvbXBpbGVHZXRCeUlkQ2hhaW4oY2FsbEZyYW1l
LT5zY29wZUNoYWluKCktPmdsb2JhbERhdGEsIGNhbGxGcmFtZSwgY29kZUJsb2NrLCBzdHViSW5m
bywgc3RydWN0dXJlLCBjaGFpbiwgY291bnQsIHNsb3QuY2FjaGVkT2Zmc2V0KCksIHJldHVybkFk
ZHJlc3MpOwogfQogCisjZW5kaWYKKwogI2lmbmRlZiBOREVCVUcKIAogZXh0ZXJuICJDIiB7CkBA
IC00NDMwLDM3ICs0NDM0LDU0IEBAIEpTT2JqZWN0KiBJbnRlcnByZXRlcjo6Y3RpX29wX25ld19v
YmplY3QKICAgICByZXR1cm4gY29uc3RydWN0RW1wdHlPYmplY3QoQVJHX2NhbGxGcmFtZSk7CiB9
CiAKLXZvaWQgSW50ZXJwcmV0ZXI6OmN0aV9vcF9wdXRfYnlfaWQoQ1RJX0FSR1MpCit2b2lkIElu
dGVycHJldGVyOjpjdGlfb3BfcHV0X2J5X2lkX2dlbmVyaWMoQ1RJX0FSR1MpCit7CisgICAgQ1RJ
X1NUQUNLX0hBQ0soKTsKKworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90OworICAgIEFSR19zcmMx
LT5wdXQoQVJHX2NhbGxGcmFtZSwgKkFSR19pZDIsIEFSR19zcmMzLCBzbG90KTsKKyAgICBDSEVD
S19GT1JfRVhDRVBUSU9OX0FUX0VORCgpOworfQorCitKU1ZhbHVlKiBJbnRlcnByZXRlcjo6Y3Rp
X29wX2dldF9ieV9pZF9nZW5lcmljKENUSV9BUkdTKQogewogICAgIENUSV9TVEFDS19IQUNLKCk7
CiAKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IEFSR19jYWxsRnJhbWU7CiAgICAgSWRlbnRp
ZmllciYgaWRlbnQgPSAqQVJHX2lkMjsKIAotICAgIFB1dFByb3BlcnR5U2xvdCBzbG90OwotICAg
IEFSR19zcmMxLT5wdXQoY2FsbEZyYW1lLCBpZGVudCwgQVJHX3NyYzMsIHNsb3QpOwotCi0gICAg
Y3RpUmVwYXRjaENhbGxCeVJldHVybkFkZHJlc3MoQ1RJX1JFVFVSTl9BRERSRVNTLCByZWludGVy
cHJldF9jYXN0PHZvaWQqPihjdGlfb3BfcHV0X2J5X2lkX3NlY29uZCkpOworICAgIEpTVmFsdWUq
IGJhc2VWYWx1ZSA9IEFSR19zcmMxOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7
CisgICAgSlNWYWx1ZSogcmVzdWx0ID0gYmFzZVZhbHVlLT5nZXQoY2FsbEZyYW1lLCBpZGVudCwg
c2xvdCk7CiAKICAgICBDSEVDS19GT1JfRVhDRVBUSU9OX0FUX0VORCgpOworICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLXZvaWQgSW50ZXJwcmV0ZXI6OmN0aV9vcF9wdXRfYnlfaWRfc2Vjb25kKENU
SV9BUkdTKQorI2lmIEVOQUJMRShKSVRfT1BUSU1JWkVfUFJPUEVSVFlfQUNDRVNTKQorCit2b2lk
IEludGVycHJldGVyOjpjdGlfb3BfcHV0X2J5X2lkKENUSV9BUkdTKQogewogICAgIENUSV9TVEFD
S19IQUNLKCk7CiAKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IEFSR19jYWxsRnJhbWU7Cisg
ICAgSWRlbnRpZmllciYgaWRlbnQgPSAqQVJHX2lkMjsKKwogICAgIFB1dFByb3BlcnR5U2xvdCBz
bG90OwotICAgIEFSR19zcmMxLT5wdXQoQVJHX2NhbGxGcmFtZSwgKkFSR19pZDIsIEFSR19zcmMz
LCBzbG90KTsKLSAgICBBUkdfZ2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXItPnRyeUNUSUNhY2hlUHV0
QnlJRChBUkdfY2FsbEZyYW1lLCBBUkdfY2FsbEZyYW1lLT5jb2RlQmxvY2soKSwgQ1RJX1JFVFVS
Tl9BRERSRVNTLCBBUkdfc3JjMSwgc2xvdCk7CisgICAgQVJHX3NyYzEtPnB1dChjYWxsRnJhbWUs
IGlkZW50LCBBUkdfc3JjMywgc2xvdCk7CisKKyAgICBjdGlSZXBhdGNoQ2FsbEJ5UmV0dXJuQWRk
cmVzcyhDVElfUkVUVVJOX0FERFJFU1MsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGN0aV9vcF9w
dXRfYnlfaWRfc2Vjb25kKSk7CisKICAgICBDSEVDS19GT1JfRVhDRVBUSU9OX0FUX0VORCgpOwog
fQogCi12b2lkIEludGVycHJldGVyOjpjdGlfb3BfcHV0X2J5X2lkX2dlbmVyaWMoQ1RJX0FSR1Mp
Cit2b2lkIEludGVycHJldGVyOjpjdGlfb3BfcHV0X2J5X2lkX3NlY29uZChDVElfQVJHUykKIHsK
ICAgICBDVElfU1RBQ0tfSEFDSygpOwogCiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7CiAgICAg
QVJHX3NyYzEtPnB1dChBUkdfY2FsbEZyYW1lLCAqQVJHX2lkMiwgQVJHX3NyYzMsIHNsb3QpOwor
ICAgIEFSR19nbG9iYWxEYXRhLT5pbnRlcnByZXRlci0+dHJ5Q1RJQ2FjaGVQdXRCeUlEKEFSR19j
YWxsRnJhbWUsIEFSR19jYWxsRnJhbWUtPmNvZGVCbG9jaygpLCBDVElfUkVUVVJOX0FERFJFU1Ms
IEFSR19zcmMxLCBzbG90KTsKICAgICBDSEVDS19GT1JfRVhDRVBUSU9OX0FUX0VORCgpOwogfQog
CkBAIC00NTExLDIxICs0NTMyLDYgQEAgSlNWYWx1ZSogSW50ZXJwcmV0ZXI6OmN0aV9vcF9nZXRf
YnlfaWRfcwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUpTVmFsdWUqIEludGVycHJldGVyOjpj
dGlfb3BfZ2V0X2J5X2lkX2dlbmVyaWMoQ1RJX0FSR1MpCi17Ci0gICAgQ1RJX1NUQUNLX0hBQ0so
KTsKLQotICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gQVJHX2NhbGxGcmFtZTsKLSAgICBJZGVu
dGlmaWVyJiBpZGVudCA9ICpBUkdfaWQyOwotCi0gICAgSlNWYWx1ZSogYmFzZVZhbHVlID0gQVJH
X3NyYzE7Ci0gICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlKTsKLSAgICBKU1ZhbHVlKiBy
ZXN1bHQgPSBiYXNlVmFsdWUtPmdldChjYWxsRnJhbWUsIGlkZW50LCBzbG90KTsKLQotICAgIENI
RUNLX0ZPUl9FWENFUFRJT05fQVRfRU5EKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogSlNW
YWx1ZSogSW50ZXJwcmV0ZXI6OmN0aV9vcF9nZXRfYnlfaWRfc2VsZl9mYWlsKENUSV9BUkdTKQog
ewogICAgIENUSV9TVEFDS19IQUNLKCk7CkBAIC00NzEwLDYgKzQ3MTYsOCBAQCBKU1ZhbHVlKiBJ
bnRlcnByZXRlcjo6Y3RpX29wX2dldF9ieV9pZF9zCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAor
I2VuZGlmCisKIEpTVmFsdWUqIEludGVycHJldGVyOjpjdGlfb3BfaW5zdGFuY2VvZihDVElfQVJH
UykKIHsKICAgICBDVElfU1RBQ0tfSEFDSygpOwpJbmRleDogaml0L0pJVC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gaml0L0pJVC5jcHAJKHJldmlzaW9uIDM5MzMzKQorKysgaml0L0pJVC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTk4LDYgKzk4LDI2IEBAIFNZTUJPTF9TVFJJTkcoY3RpVk1UaHJvd1RyYW1w
b2xpbmUpICI6IiAKICAgICAicmV0IiAiXG4iCiApOwogICAgIAorI2VsaWYgQ09NUElMRVIoR0ND
KSAmJiBQTEFURk9STShYODZfNjQpCisKKyNpZiBQTEFURk9STShEQVJXSU4pCisjZGVmaW5lIFNZ
TUJPTF9TVFJJTkcobmFtZSkgIl8iICNuYW1lCisjZWxzZQorI2RlZmluZSBTWU1CT0xfU1RSSU5H
KG5hbWUpICNuYW1lCisjZW5kaWYKKworYXNtKAorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoY3Rp
VHJhbXBvbGluZSkgIlxuIgorU1lNQk9MX1NUUklORyhjdGlUcmFtcG9saW5lKSAiOiIgIlxuIgor
ICAgICJpbnQzIiAiXG4iCispOworCithc20oCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhjdGlW
TVRocm93VHJhbXBvbGluZSkgIlxuIgorU1lNQk9MX1NUUklORyhjdGlWTVRocm93VHJhbXBvbGlu
ZSkgIjoiICJcbiIKKyAgICAiaW50MyIgIlxuIgorKTsKKyAgICAKICNlbGlmIENPTVBJTEVSKE1T
VkMpCiAKIGV4dGVybiAiQyIgewpAQCAtNDIxLDcgKzQ0MSw3IEBAIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgY2FzZSBvcF9kZWxfYnlfaWQ6IHsKICAgICAgICAg
ICAgIGVtaXRQdXRKSVRTdHViQXJnRnJvbVZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rp
b25bMl0udS5vcGVyYW5kLCAxLCBYODY6OmVjeCk7CiAgICAgICAgICAgICBJZGVudGlmaWVyKiBp
ZGVudCA9ICYobV9jb2RlQmxvY2stPmlkZW50aWZpZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUu
b3BlcmFuZCkpOwotICAgICAgICAgICAgZW1pdFB1dEpJVFN0dWJBcmdDb25zdGFudChyZWludGVy
cHJldF9jYXN0PHVuc2lnbmVkPihpZGVudCksIDIpOworICAgICAgICAgICAgZW1pdFB1dEpJVFN0
dWJBcmdDb25zdGFudChpZGVudCwgMik7CiAgICAgICAgICAgICBlbWl0Q1RJQ2FsbChJbnRlcnBy
ZXRlcjo6Y3RpX29wX2RlbF9ieV9pZCk7CiAgICAgICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lz
dGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgTkVYVF9P
UENPREUob3BfZGVsX2J5X2lkKTsKQEAgLTQ1Niw3ICs0NzYsNyBAQCB2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9uZXdfZnVuYzog
ewogICAgICAgICAgICAgRnVuY0RlY2xOb2RlKiBmdW5jID0gbV9jb2RlQmxvY2stPmZ1bmN0aW9u
KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwotICAgICAgICAgICAgZW1pdFB1dEpJ
VFN0dWJBcmdDb25zdGFudChyZWludGVycHJldF9jYXN0PHVuc2lnbmVkPihmdW5jKSwgMSk7Cisg
ICAgICAgICAgICBlbWl0UHV0SklUU3R1YkFyZ0NvbnN0YW50KGZ1bmMsIDEpOwogICAgICAgICAg
ICAgZW1pdENUSUNhbGwoSW50ZXJwcmV0ZXI6OmN0aV9vcF9uZXdfZnVuYyk7CiAgICAgICAgICAg
ICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQp
OwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbmV3X2Z1bmMpOwpAQCAtNTQ5LDcgKzU2OSw3
IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgfQogICAgICAg
ICBjYXNlIG9wX3Jlc29sdmU6IHsKICAgICAgICAgICAgIElkZW50aWZpZXIqIGlkZW50ID0gJiht
X2NvZGVCbG9jay0+aWRlbnRpZmllcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7
Ci0gICAgICAgICAgICBlbWl0UHV0SklUU3R1YkFyZ0NvbnN0YW50KHJlaW50ZXJwcmV0X2Nhc3Q8
dW5zaWduZWQ+KGlkZW50KSwgMSk7CisgICAgICAgICAgICBlbWl0UHV0SklUU3R1YkFyZ0NvbnN0
YW50KGlkZW50LCAxKTsKICAgICAgICAgICAgIGVtaXRDVElDYWxsKEludGVycHJldGVyOjpjdGlf
b3BfcmVzb2x2ZSk7CiAgICAgICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcmVz
b2x2ZSk7CkBAIC01ODEsNyArNjAxLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBh
c3MoKQogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcmVzb2x2ZV9mdW5jOiB7CiAgICAgICAg
ICAgICBJZGVudGlmaWVyKiBpZGVudCA9ICYobV9jb2RlQmxvY2stPmlkZW50aWZpZXIoY3VycmVu
dEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOwotICAgICAgICAgICAgZW1pdFB1dEpJVFN0dWJB
cmdDb25zdGFudChyZWludGVycHJldF9jYXN0PHVuc2lnbmVkPihpZGVudCksIDEpOworICAgICAg
ICAgICAgZW1pdFB1dEpJVFN0dWJBcmdDb25zdGFudChpZGVudCwgMSk7CiAgICAgICAgICAgICBl
bWl0Q1RJQ2FsbChJbnRlcnByZXRlcjo6Y3RpX29wX3Jlc29sdmVfZnVuYyk7CiAgICAgICAgICAg
ICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQs
IFg4Njo6ZWR4KTsKICAgICAgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CkBAIC02MzIsNyArNjUyLDcgQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICB9OwogICAgICAgICBjYXNlIG9wX3Jlc29s
dmVfYmFzZTogewogICAgICAgICAgICAgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fY29kZUJsb2Nr
LT5pZGVudGlmaWVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKLSAgICAgICAg
ICAgIGVtaXRQdXRKSVRTdHViQXJnQ29uc3RhbnQocmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZD4o
aWRlbnQpLCAxKTsKKyAgICAgICAgICAgIGVtaXRQdXRKSVRTdHViQXJnQ29uc3RhbnQoaWRlbnQs
IDEpOwogICAgICAgICAgICAgZW1pdENUSUNhbGwoSW50ZXJwcmV0ZXI6OmN0aV9vcF9yZXNvbHZl
X2Jhc2UpOwogICAgICAgICAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3Jlc29sdmVf
YmFzZSk7CkBAIC02NDUsNyArNjY1LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBh
c3MoKQogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcmVzb2x2ZV9za2lwOiB7CiAgICAgICAg
ICAgICBJZGVudGlmaWVyKiBpZGVudCA9ICYobV9jb2RlQmxvY2stPmlkZW50aWZpZXIoY3VycmVu
dEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOwotICAgICAgICAgICAgZW1pdFB1dEpJVFN0dWJB
cmdDb25zdGFudChyZWludGVycHJldF9jYXN0PHVuc2lnbmVkPihpZGVudCksIDEpOworICAgICAg
ICAgICAgZW1pdFB1dEpJVFN0dWJBcmdDb25zdGFudChpZGVudCwgMSk7CiAgICAgICAgICAgICBl
bWl0UHV0SklUU3R1YkFyZ0NvbnN0YW50KGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQg
KyBtX2NvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpLCAyKTsKICAgICAgICAgICAgIGVt
aXRDVElDYWxsKEludGVycHJldGVyOjpjdGlfb3BfcmVzb2x2ZV9za2lwKTsKICAgICAgICAgICAg
IGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7
CkBAIC02NzUsNyArNjk1LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQog
ICAgICAgICAgICAgLy8gU2xvdyBjYXNlCiAgICAgICAgICAgICBub01hdGNoLmxpbmsodGhpcyk7
CiAgICAgICAgICAgICBlbWl0UHV0SklUU3R1YkFyZ0NvbnN0YW50KGdsb2JhbE9iamVjdCwgMSk7
Ci0gICAgICAgICAgICBlbWl0UHV0SklUU3R1YkFyZ0NvbnN0YW50KHJlaW50ZXJwcmV0X2Nhc3Q8
dW5zaWduZWQ+KGlkZW50KSwgMik7CisgICAgICAgICAgICBlbWl0UHV0SklUU3R1YkFyZ0NvbnN0
YW50KGlkZW50LCAyKTsKICAgICAgICAgICAgIGVtaXRQdXRKSVRTdHViQXJnQ29uc3RhbnQoY3Vy
cmVudEluZGV4LCAzKTsKICAgICAgICAgICAgIGVtaXRDVElDYWxsKEludGVycHJldGVyOjpjdGlf
b3BfcmVzb2x2ZV9nbG9iYWwpOwogICAgICAgICAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKQEAgLTg2NCw3ICs4ODQsNyBAQCB2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIH0KICAgICAgICAgY2FzZSBv
cF9yZXNvbHZlX3dpdGhfYmFzZTogewogICAgICAgICAgICAgSWRlbnRpZmllciogaWRlbnQgPSAm
KG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQp
KTsKLSAgICAgICAgICAgIGVtaXRQdXRKSVRTdHViQXJnQ29uc3RhbnQocmVpbnRlcnByZXRfY2Fz
dDx1bnNpZ25lZD4oaWRlbnQpLCAxKTsKKyAgICAgICAgICAgIGVtaXRQdXRKSVRTdHViQXJnQ29u
c3RhbnQoaWRlbnQsIDEpOwogICAgICAgICAgICAgZW1pdENUSUNhbGwoSW50ZXJwcmV0ZXI6OmN0
aV9vcF9yZXNvbHZlX3dpdGhfYmFzZSk7CiAgICAgICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lz
dGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQsIFg4Njo6ZWR4KTsKICAgICAgICAg
ICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZCk7CkBAIC04NzIsNyArODkyLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3Mo
KQogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOiB7CiAgICAgICAgICAg
ICBGdW5jRXhwck5vZGUqIGZ1bmMgPSBtX2NvZGVCbG9jay0+ZnVuY3Rpb25FeHByZXNzaW9uKGN1
cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwotICAgICAgICAgICAgZW1pdFB1dEpJVFN0
dWJBcmdDb25zdGFudChyZWludGVycHJldF9jYXN0PHVuc2lnbmVkPihmdW5jKSwgMSk7CisgICAg
ICAgICAgICBlbWl0UHV0SklUU3R1YkFyZ0NvbnN0YW50KGZ1bmMsIDEpOwogICAgICAgICAgICAg
ZW1pdENUSUNhbGwoSW50ZXJwcmV0ZXI6OmN0aV9vcF9uZXdfZnVuY19leHApOwogICAgICAgICAg
ICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
KTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19mdW5jX2V4cCk7CkBAIC05MzQsNyAr
OTU0LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICB9CiAg
ICAgICAgIGNhc2Ugb3BfbmV3X3JlZ2V4cDogewogICAgICAgICAgICAgUmVnRXhwKiByZWdFeHAg
PSBtX2NvZGVCbG9jay0+cmVnZXhwKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwot
ICAgICAgICAgICAgZW1pdFB1dEpJVFN0dWJBcmdDb25zdGFudChyZWludGVycHJldF9jYXN0PHVu
c2lnbmVkPihyZWdFeHApLCAxKTsKKyAgICAgICAgICAgIGVtaXRQdXRKSVRTdHViQXJnQ29uc3Rh
bnQocmVnRXhwLCAxKTsKICAgICAgICAgICAgIGVtaXRDVElDYWxsKEludGVycHJldGVyOjpjdGlf
b3BfbmV3X3JlZ2V4cCk7CiAgICAgICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3Bf
bmV3X3JlZ2V4cCk7CkBAIC0xMDE1LDcgKzEwMzUsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVNYWluUGFzcygpCiAgICAgICAgIENUSV9DT01QSUxFX0JJTkFSWV9PUChvcF9pbikKICAgICAg
ICAgY2FzZSBvcF9wdXNoX25ld19zY29wZTogewogICAgICAgICAgICAgSWRlbnRpZmllciogaWRl
bnQgPSAmKG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9w
ZXJhbmQpKTsKLSAgICAgICAgICAgIGVtaXRQdXRKSVRTdHViQXJnQ29uc3RhbnQocmVpbnRlcnBy
ZXRfY2FzdDx1bnNpZ25lZD4oaWRlbnQpLCAxKTsKKyAgICAgICAgICAgIGVtaXRQdXRKSVRTdHVi
QXJnQ29uc3RhbnQoaWRlbnQsIDEpOwogICAgICAgICAgICAgZW1pdFB1dEpJVFN0dWJBcmdGcm9t
VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQsIDIsIFg4Njo6
ZWN4KTsKICAgICAgICAgICAgIGVtaXRDVElDYWxsKEludGVycHJldGVyOjpjdGlfb3BfcHVzaF9u
ZXdfc2NvcGUpOwogICAgICAgICAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKQEAgLTEwOTgsNyArMTExOCw3IEBAIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgY2FzZSBvcF9wdXRfZ2V0dGVyOiB7CiAg
ICAgICAgICAgICBlbWl0UHV0SklUU3R1YkFyZ0Zyb21WaXJ0dWFsUmVnaXN0ZXIoY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCwgMSwgWDg2OjplY3gpOwogICAgICAgICAgICAgSWRlbnRp
ZmllciogaWRlbnQgPSAmKG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGN1cnJlbnRJbnN0cnVjdGlv
blsyXS51Lm9wZXJhbmQpKTsKLSAgICAgICAgICAgIGVtaXRQdXRKSVRTdHViQXJnQ29uc3RhbnQo
cmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZD4oaWRlbnQpLCAyKTsKKyAgICAgICAgICAgIGVtaXRQ
dXRKSVRTdHViQXJnQ29uc3RhbnQoaWRlbnQsIDIpOwogICAgICAgICAgICAgZW1pdFB1dEpJVFN0
dWJBcmdGcm9tVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQs
IDMsIFg4Njo6ZWN4KTsKICAgICAgICAgICAgIGVtaXRDVElDYWxsKEludGVycHJldGVyOjpjdGlf
b3BfcHV0X2dldHRlcik7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wdXRfZ2V0dGVyKTsK
QEAgLTExMDYsNyArMTEyNiw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkK
ICAgICAgICAgY2FzZSBvcF9wdXRfc2V0dGVyOiB7CiAgICAgICAgICAgICBlbWl0UHV0SklUU3R1
YkFyZ0Zyb21WaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwg
MSwgWDg2OjplY3gpOwogICAgICAgICAgICAgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fY29kZUJs
b2NrLT5pZGVudGlmaWVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKLSAgICAg
ICAgICAgIGVtaXRQdXRKSVRTdHViQXJnQ29uc3RhbnQocmVpbnRlcnByZXRfY2FzdDx1bnNpZ25l
ZD4oaWRlbnQpLCAyKTsKKyAgICAgICAgICAgIGVtaXRQdXRKSVRTdHViQXJnQ29uc3RhbnQoaWRl
bnQsIDIpOwogICAgICAgICAgICAgZW1pdFB1dEpJVFN0dWJBcmdGcm9tVmlydHVhbFJlZ2lzdGVy
KGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQsIDMsIFg4Njo6ZWN4KTsKICAgICAgICAg
ICAgIGVtaXRDVElDYWxsKEludGVycHJldGVyOjpjdGlfb3BfcHV0X3NldHRlcik7CiAgICAgICAg
ICAgICBORVhUX09QQ09ERShvcF9wdXRfc2V0dGVyKTsKQEAgLTExMTQsNyArMTEzNCw3IEBAIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgY2FzZSBvcF9uZXdfZXJy
b3I6IHsKICAgICAgICAgICAgIEpTVmFsdWUqIG1lc3NhZ2UgPSBtX2NvZGVCbG9jay0+dW5leHBl
Y3RlZENvbnN0YW50KGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwogICAgICAgICAg
ICAgZW1pdFB1dEpJVFN0dWJBcmdDb25zdGFudChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVy
YW5kLCAxKTsKLSAgICAgICAgICAgIGVtaXRQdXRKSVRTdHViQXJnQ29uc3RhbnQoYXNJbnRlZ2Vy
KG1lc3NhZ2UpLCAyKTsKKyAgICAgICAgICAgIGVtaXRQdXRKSVRTdHViQXJnQ29uc3RhbnQobWVz
c2FnZSwgMik7CiAgICAgICAgICAgICBlbWl0UHV0SklUU3R1YkFyZ0NvbnN0YW50KG1fY29kZUJs
b2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQobV9ieXRlY29kZUluZGV4KSwgMyk7CiAg
ICAgICAgICAgICBlbWl0Q1RJQ2FsbChJbnRlcnByZXRlcjo6Y3RpX29wX25ld19lcnJvcik7CiAg
ICAgICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQpOwpAQCAtMTgyNSwxMSArMTg0NSwxMyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGUoKQogICAgIGZvciAoVmVjdG9yPEpTUkluZm8+OjppdGVyYXRvciBpdGVyID0gbV9qc3JTaXRl
cy5iZWdpbigpOyBpdGVyICE9IG1fanNyU2l0ZXMuZW5kKCk7ICsraXRlcikKICAgICAgICAgcmVw
YXRjaEJ1ZmZlci5zZXRQdHIoaXRlci0+c3RvcmVMb2NhdGlvbiwgcmVwYXRjaEJ1ZmZlci5hZGRy
ZXNzT2YoaXRlci0+dGFyZ2V0KSk7CiAKKyNpZiBFTkFCTEUoSklUX09QVElNSVpFX1BST1BFUlRZ
X0FDQ0VTUykKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9jb2RlQmxvY2stPm51bWJl
ck9mU3RydWN0dXJlU3R1YkluZm9zKCk7ICsraSkgewogICAgICAgICBTdHJ1Y3R1cmVTdHViSW5m
byYgaW5mbyA9IG1fY29kZUJsb2NrLT5zdHJ1Y3R1cmVTdHViSW5mbyhpKTsKICAgICAgICAgaW5m
by5jYWxsUmV0dXJuTG9jYXRpb24gPSBYODZBc3NlbWJsZXI6OmdldFJlbG9jYXRlZEFkZHJlc3Mo
Y29kZSwgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mb1tpXS5jYWxsUmV0dXJuTG9jYXRp
b24pOwogICAgICAgICBpbmZvLmhvdFBhdGhCZWdpbiA9IFg4NkFzc2VtYmxlcjo6Z2V0UmVsb2Nh
dGVkQWRkcmVzcyhjb2RlLCBtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25JbmZvW2ldLmhvdFBh
dGhCZWdpbik7CiAgICAgfQorI2VuZGlmCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
Y29kZUJsb2NrLT5udW1iZXJPZkNhbGxMaW5rSW5mb3MoKTsgKytpKSB7CiAgICAgICAgIENhbGxM
aW5rSW5mbyYgaW5mbyA9IG1fY29kZUJsb2NrLT5jYWxsTGlua0luZm8oaSk7CiAgICAgICAgIGlu
Zm8uY2FsbFJldHVybkxvY2F0aW9uID0gWDg2QXNzZW1ibGVyOjpnZXRSZWxvY2F0ZWRBZGRyZXNz
KGNvZGUsIG1fY2FsbFN0cnVjdHVyZVN0dWJDb21waWxhdGlvbkluZm9baV0uY2FsbFJldHVybkxv
Y2F0aW9uKTsKQEAgLTE4NDMsNyArMTg2NSw5IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZSgp
CiAKIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUNUSU1hY2hpbmVUcmFtcG9saW5lcygpCiB7Cisj
aWYgRU5BQkxFKEpJVF9PUFRJTUlaRV9QUk9QRVJUWV9BQ0NFU1MpCiAgICAgLy8gKDEpIFRoZSBm
aXJzdCBmdW5jdGlvbiBwcm92aWRlcyBmYXN0IHByb3BlcnR5IGFjY2VzcyBmb3IgYXJyYXkgbGVu
Z3RoCisgICAgWDg2QXNzZW1ibGVyOjpKbXBEc3QgYXJyYXlMZW5ndGhCZWdpbiA9IF9fIGFsaWdu
KDE2KTsKICAgICAKICAgICAvLyBDaGVjayBlYXggaXMgYW4gYXJyYXkKICAgICBYODZBc3NlbWJs
ZXI6OkptcFNyYyBhcnJheV9mYWlsdXJlQ2FzZXMxID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChYODY6
OmVheCk7CkBAIC0xODYzLDcgKzE4ODcsNiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVDVElN
YWNoaW5lVHJhbXBvCiAgICAgX18gcmV0KCk7CiAKICAgICAvLyAoMikgVGhlIHNlY29uZCBmdW5j
dGlvbiBwcm92aWRlcyBmYXN0IHByb3BlcnR5IGFjY2VzcyBmb3Igc3RyaW5nIGxlbmd0aAotICAg
IAogICAgIFg4NkFzc2VtYmxlcjo6Sm1wRHN0IHN0cmluZ0xlbmd0aEJlZ2luID0gX18gYWxpZ24o
MTYpOwogCiAgICAgLy8gQ2hlY2sgZWF4IGlzIGEgc3RyaW5nCkBAIC0xODgyLDYgKzE5MDUsNyBA
QCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVDVElNYWNoaW5lVHJhbXBvCiAgICAgX18gYWRkbF9p
cigxLCBYODY6OmVheCk7CiAgICAgCiAgICAgX18gcmV0KCk7CisjZW5kaWYKIAogICAgIC8vICgz
KSBUcmFtcG9saW5lcyBmb3IgdGhlIHNsb3cgY2FzZXMgb2Ygb3BfY2FsbCAvIG9wX2NhbGxfZXZh
bCAvIG9wX2NvbnN0cnVjdC4KICAgICAKQEAgLTIwMTEsMTIgKzIwMzUsMTggQEAgdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlQ1RJTWFjaGluZVRyYW1wbwogICAgIG1faW50ZXJwcmV0ZXItPm1fZXhl
Y3V0YWJsZVBvb2wgPSBtX2dsb2JhbERhdGEtPnBvb2xGb3JTaXplKF9fIHNpemUoKSk7CiAgICAg
dm9pZCogY29kZSA9IF9fIGV4ZWN1dGFibGVDb3B5KG1faW50ZXJwcmV0ZXItPm1fZXhlY3V0YWJs
ZVBvb2wuZ2V0KCkpOwogCisjaWYgRU5BQkxFKEpJVF9PUFRJTUlaRV9QUk9QRVJUWV9BQ0NFU1Mp
CiAgICAgWDg2QXNzZW1ibGVyOjpsaW5rKGNvZGUsIGFycmF5X2ZhaWx1cmVDYXNlczEsIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KEludGVycHJldGVyOjpjdGlfb3BfZ2V0X2J5X2lkX2FycmF5X2Zh
aWwpKTsKICAgICBYODZBc3NlbWJsZXI6OmxpbmsoY29kZSwgYXJyYXlfZmFpbHVyZUNhc2VzMiwg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oSW50ZXJwcmV0ZXI6OmN0aV9vcF9nZXRfYnlfaWRfYXJy
YXlfZmFpbCkpOwogICAgIFg4NkFzc2VtYmxlcjo6bGluayhjb2RlLCBhcnJheV9mYWlsdXJlQ2Fz
ZXMzLCByZWludGVycHJldF9jYXN0PHZvaWQqPihJbnRlcnByZXRlcjo6Y3RpX29wX2dldF9ieV9p
ZF9hcnJheV9mYWlsKSk7CiAgICAgWDg2QXNzZW1ibGVyOjpsaW5rKGNvZGUsIHN0cmluZ19mYWls
dXJlQ2FzZXMxLCByZWludGVycHJldF9jYXN0PHZvaWQqPihJbnRlcnByZXRlcjo6Y3RpX29wX2dl
dF9ieV9pZF9zdHJpbmdfZmFpbCkpOwogICAgIFg4NkFzc2VtYmxlcjo6bGluayhjb2RlLCBzdHJp
bmdfZmFpbHVyZUNhc2VzMiwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oSW50ZXJwcmV0ZXI6OmN0
aV9vcF9nZXRfYnlfaWRfc3RyaW5nX2ZhaWwpKTsKICAgICBYODZBc3NlbWJsZXI6OmxpbmsoY29k
ZSwgc3RyaW5nX2ZhaWx1cmVDYXNlczMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEludGVycHJl
dGVyOjpjdGlfb3BfZ2V0X2J5X2lkX3N0cmluZ19mYWlsKSk7CisKKyAgICBtX2ludGVycHJldGVy
LT5tX2N0aUFycmF5TGVuZ3RoVHJhbXBvbGluZSA9IFg4NkFzc2VtYmxlcjo6Z2V0UmVsb2NhdGVk
QWRkcmVzcyhjb2RlLCBhcnJheUxlbmd0aEJlZ2luKTsKKyAgICBtX2ludGVycHJldGVyLT5tX2N0
aVN0cmluZ0xlbmd0aFRyYW1wb2xpbmUgPSBYODZBc3NlbWJsZXI6OmdldFJlbG9jYXRlZEFkZHJl
c3MoY29kZSwgc3RyaW5nTGVuZ3RoQmVnaW4pOworI2VuZGlmICAgIAorCiAgICAgWDg2QXNzZW1i
bGVyOjpsaW5rKGNvZGUsIGNhbGxBcml0eUNoZWNrMSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
SW50ZXJwcmV0ZXI6OmN0aV9vcF9jYWxsX2FyaXR5Q2hlY2spKTsKICAgICBYODZBc3NlbWJsZXI6
OmxpbmsoY29kZSwgY2FsbEFyaXR5Q2hlY2syLCByZWludGVycHJldF9jYXN0PHZvaWQqPihJbnRl
cnByZXRlcjo6Y3RpX29wX2NhbGxfYXJpdHlDaGVjaykpOwogICAgIFg4NkFzc2VtYmxlcjo6bGlu
ayhjb2RlLCBjYWxsQXJpdHlDaGVjazMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEludGVycHJl
dGVyOjpjdGlfb3BfY2FsbF9hcml0eUNoZWNrKSk7CkBAIC0yMDI2LDggKzIwNTYsNiBAQCB2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVDVElNYWNoaW5lVHJhbXBvCiAgICAgWDg2QXNzZW1ibGVyOjps
aW5rKGNvZGUsIGNhbGxEb250TGF6eUxpbmtDYWxsLCByZWludGVycHJldF9jYXN0PHZvaWQqPihJ
bnRlcnByZXRlcjo6Y3RpX3ZtX2RvbnRMYXp5TGlua0NhbGwpKTsKICAgICBYODZBc3NlbWJsZXI6
OmxpbmsoY29kZSwgY2FsbExhenlMaW5rQ2FsbCwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oSW50
ZXJwcmV0ZXI6OmN0aV92bV9sYXp5TGlua0NhbGwpKTsKIAotICAgIG1faW50ZXJwcmV0ZXItPm1f
Y3RpQXJyYXlMZW5ndGhUcmFtcG9saW5lID0gY29kZTsKLSAgICBtX2ludGVycHJldGVyLT5tX2N0
aVN0cmluZ0xlbmd0aFRyYW1wb2xpbmUgPSBYODZBc3NlbWJsZXI6OmdldFJlbG9jYXRlZEFkZHJl
c3MoY29kZSwgc3RyaW5nTGVuZ3RoQmVnaW4pOwogICAgIG1faW50ZXJwcmV0ZXItPm1fY3RpVmly
dHVhbENhbGxQcmVMaW5rID0gWDg2QXNzZW1ibGVyOjpnZXRSZWxvY2F0ZWRBZGRyZXNzKGNvZGUs
IHZpcnR1YWxDYWxsUHJlTGlua0JlZ2luKTsKICAgICBtX2ludGVycHJldGVyLT5tX2N0aVZpcnR1
YWxDYWxsTGluayA9IFg4NkFzc2VtYmxlcjo6Z2V0UmVsb2NhdGVkQWRkcmVzcyhjb2RlLCB2aXJ0
dWFsQ2FsbExpbmtCZWdpbik7CiAgICAgbV9pbnRlcnByZXRlci0+bV9jdGlWaXJ0dWFsQ2FsbCA9
IFg4NkFzc2VtYmxlcjo6Z2V0UmVsb2NhdGVkQWRkcmVzcyhjb2RlLCB2aXJ0dWFsQ2FsbEJlZ2lu
KTsKSW5kZXg6IGppdC9KSVRDYWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBqaXQvSklUQ2FsbC5jcHAJ
KHJldmlzaW9uIDM5MzMzKQorKysgaml0L0pJVENhbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
MSw3ICs5MSw3IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsU2V0dXBBcmdzKEluc3RydWMKICAg
ICBlbWl0UHV0SklUU3R1YkFyZyhYODY6OmVjeCwgMSk7CiAgICAgZW1pdFB1dEpJVFN0dWJBcmdD
b25zdGFudChyZWdpc3Rlck9mZnNldCwgMik7CiAgICAgZW1pdFB1dEpJVFN0dWJBcmdDb25zdGFu
dChhcmdDb3VudCwgMyk7Ci0gICAgZW1pdFB1dEpJVFN0dWJBcmdDb25zdGFudChyZWludGVycHJl
dF9jYXN0PHVuc2lnbmVkPihpbnN0cnVjdGlvbiksIDQpOworICAgIGVtaXRQdXRKSVRTdHViQXJn
Q29uc3RhbnQoaW5zdHJ1Y3Rpb24sIDQpOwogfQogCiB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbEV2
YWxTZXR1cEFyZ3MoSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQpAQCAtMTM2LDcgKzEzNiw3IEBA
IHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29kZUkKICAgICAgICAgY29tcGls
ZU9wQ2FsbEV2YWxTZXR1cEFyZ3MoaW5zdHJ1Y3Rpb24pOwogCiAgICAgICAgIGVtaXRDVElDYWxs
KEludGVycHJldGVyOjpjdGlfb3BfY2FsbF9ldmFsKTsKLSAgICAgICAgd2FzRXZhbCA9IGpuZVB0
cihJbW1QdHIoSlNJbW1lZGlhdGU6OmltcG9zc2libGVWYWx1ZSgpKSwgWDg2OjplYXgpOworICAg
ICAgICB3YXNFdmFsID0gam5lUHRyKFg4Njo6ZWF4LCBJbW1QdHIoSlNJbW1lZGlhdGU6OmltcG9z
c2libGVWYWx1ZSgpKSk7CiAgICAgfQogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjYWxs
ZWUsIFg4Njo6ZWN4KTsKSW5kZXg6IGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMzkzMzMpCisrKyBqaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3IEBAIHZv
aWQgSklUOjpjb21waWxlR2V0QnlJZEhvdFBhdGgoaW50IHJlc3UKICAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKGJhc2VWUmVnLCBYODY6OmVheCk7CiAKICAgICBlbWl0UHV0SklUU3R1YkFyZyhY
ODY6OmVheCwgMSk7Ci0gICAgZW1pdFB1dEpJVFN0dWJBcmdDb25zdGFudChyZWludGVycHJldF9j
YXN0PHVuc2lnbmVkPihpZGVudCksIDIpOworICAgIGVtaXRQdXRKSVRTdHViQXJnQ29uc3RhbnQo
aWRlbnQsIDIpOwogICAgIGVtaXRDVElDYWxsKEludGVycHJldGVyOjpjdGlfb3BfZ2V0X2J5X2lk
X2dlbmVyaWMpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJlZyk7CiB9CkBA
IC04MCw3ICs4MCw3IEBAIHZvaWQgSklUOjpjb21waWxlUHV0QnlJZEhvdFBhdGgoaW50IGJhc2UK
IAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKGJhc2VWUmVnLCBYODY6OmVheCwgdmFsdWVW
UmVnLCBYODY6OmVkeCk7CiAKLSAgICBlbWl0UHV0SklUU3R1YkFyZ0NvbnN0YW50KHJlaW50ZXJw
cmV0X2Nhc3Q8dW5zaWduZWQ+KGlkZW50KSwgMik7CisgICAgZW1pdFB1dEpJVFN0dWJBcmdDb25z
dGFudChpZGVudCwgMik7CiAgICAgZW1pdFB1dEpJVFN0dWJBcmcoWDg2OjplYXgsIDEpOwogICAg
IGVtaXRQdXRKSVRTdHViQXJnKFg4Njo6ZWR4LCAzKTsKICAgICBlbWl0Q1RJQ2FsbChJbnRlcnBy
ZXRlcjo6Y3RpX29wX3B1dF9ieV9pZF9nZW5lcmljKTsKQEAgLTE4Miw4ICsxODIsNiBAQCB2b2lk
IEpJVDo6Y29tcGlsZVB1dEJ5SWRTbG93Q2FzZShpbnQgYmFzCiAgICAgbV9wcm9wZXJ0eUFjY2Vz
c0NvbXBpbGF0aW9uSW5mb1twcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uSW5kZXhdLmNhbGxSZXR1
cm5Mb2NhdGlvbiA9IGNhbGw7CiB9CiAKLSNlbmRpZgotCiBzdGF0aWMgSlNPYmplY3QqIHJlc2l6
ZVByb3BlcnR5U3RvcmFnZShKU09iamVjdCogYmFzZU9iamVjdCwgc2l6ZV90IG9sZFNpemUsIHNp
emVfdCBuZXdTaXplKQogewogICAgIGJhc2VPYmplY3QtPmFsbG9jYXRlUHJvcGVydHlTdG9yYWdl
SW5saW5lKG9sZFNpemUsIG5ld1NpemUpOwpAQCAtNjc2LDYgKzY3NCw4IEBAIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZVB1dEJ5SWRSZXBsYWNlKFMKICAgICBjdGlSZXBhdGNoQ2FsbEJ5UmV0dXJu
QWRkcmVzcyhyZXR1cm5BZGRyZXNzLCBjb2RlKTsKIH0KIAorI2VuZGlmCisKIH0gLy8gbmFtZXNw
YWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKSW5kZXg6IHJ1bnRpbWUvSlNJbW1lZGlh
dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBydW50aW1lL0pTSW1tZWRpYXRlLmgJKHJldmlzaW9uIDM5MzMz
KQorKysgcnVudGltZS9KU0ltbWVkaWF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04OCwyMyArODgs
MjMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNz
IEpJVDsKICAgICAKLSAgICAgICAgc3RhdGljIGNvbnN0IHVpbnRwdHJfdCBUYWdNYXNrICAgICAg
ICAgICA9IDB4M3U7IC8vIHByaW1hcnkgdGFnIGlzIDIgYml0cyBsb25nCi0gICAgICAgIHN0YXRp
YyBjb25zdCB1aW50cHRyX3QgVGFnQml0VHlwZUludGVnZXIgPSAweDF1OyAvLyBib3R0b20gYml0
IHNldCBpbmRpY2F0ZXMgaW50ZWdlciwgdGhpcyBkb21pbmF0ZXMgdGhlIGZvbGxvd2luZyBiaXQK
LSAgICAgICAgc3RhdGljIGNvbnN0IHVpbnRwdHJfdCBUYWdCaXRUeXBlT3RoZXIgICA9IDB4MnU7
IC8vIHNlY29uZCBiaXQgc2V0IGluZGljYXRlcyBpbW1lZGlhdGUgb3RoZXIgdGhhbiBhbiBpbnRl
Z2VyCi0KLSAgICAgICAgc3RhdGljIGNvbnN0IHVpbnRwdHJfdCBFeHRlbmRlZFRhZ01hc2sgICAg
ICAgICA9IDB4Q3U7IC8vIGV4dGVuZGVkIHRhZyBob2xkcyBhIGZ1cnRoZXIgdHdvIGJpdHMKLSAg
ICAgICAgc3RhdGljIGNvbnN0IHVpbnRwdHJfdCBFeHRlbmRlZFRhZ0JpdEJvb2wgICAgICA9IDB4
NHU7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1aW50cHRyX3QgRXh0ZW5kZWRUYWdCaXRVbmRlZmlu
ZWQgPSAweDh1OwotCi0gICAgICAgIHN0YXRpYyBjb25zdCB1aW50cHRyX3QgRnVsbFRhZ1R5cGVN
YXNrICAgICAgPSBUYWdNYXNrIHwgRXh0ZW5kZWRUYWdNYXNrOwotICAgICAgICBzdGF0aWMgY29u
c3QgdWludHB0cl90IEZ1bGxUYWdUeXBlQm9vbCAgICAgID0gVGFnQml0VHlwZU90aGVyIHwgRXh0
ZW5kZWRUYWdCaXRCb29sOwotICAgICAgICBzdGF0aWMgY29uc3QgdWludHB0cl90IEZ1bGxUYWdU
eXBlVW5kZWZpbmVkID0gVGFnQml0VHlwZU90aGVyIHwgRXh0ZW5kZWRUYWdCaXRVbmRlZmluZWQ7
Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1aW50cHRyX3QgRnVsbFRhZ1R5cGVOdWxsICAgICAgPSBU
YWdCaXRUeXBlT3RoZXI7CisgICAgICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBUYWdNYXNrICAg
ICAgICAgICA9IDB4M3U7IC8vIHByaW1hcnkgdGFnIGlzIDIgYml0cyBsb25nCisgICAgICAgIHN0
YXRpYyBjb25zdCB1aW50MzJfdCBUYWdCaXRUeXBlSW50ZWdlciA9IDB4MXU7IC8vIGJvdHRvbSBi
aXQgc2V0IGluZGljYXRlcyBpbnRlZ2VyLCB0aGlzIGRvbWluYXRlcyB0aGUgZm9sbG93aW5nIGJp
dAorICAgICAgICBzdGF0aWMgY29uc3QgdWludDMyX3QgVGFnQml0VHlwZU90aGVyICAgPSAweDJ1
OyAvLyBzZWNvbmQgYml0IHNldCBpbmRpY2F0ZXMgaW1tZWRpYXRlIG90aGVyIHRoYW4gYW4gaW50
ZWdlcgorCisgICAgICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBFeHRlbmRlZFRhZ01hc2sgICAg
ICAgICA9IDB4Q3U7IC8vIGV4dGVuZGVkIHRhZyBob2xkcyBhIGZ1cnRoZXIgdHdvIGJpdHMKKyAg
ICAgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IEV4dGVuZGVkVGFnQml0Qm9vbCAgICAgID0gMHg0
dTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IEV4dGVuZGVkVGFnQml0VW5kZWZpbmVk
ID0gMHg4dTsKKworICAgICAgICBzdGF0aWMgY29uc3QgdWludDMyX3QgRnVsbFRhZ1R5cGVNYXNr
ICAgICAgPSBUYWdNYXNrIHwgRXh0ZW5kZWRUYWdNYXNrOworICAgICAgICBzdGF0aWMgY29uc3Qg
dWludDMyX3QgRnVsbFRhZ1R5cGVCb29sICAgICAgPSBUYWdCaXRUeXBlT3RoZXIgfCBFeHRlbmRl
ZFRhZ0JpdEJvb2w7CisgICAgICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBGdWxsVGFnVHlwZVVu
ZGVmaW5lZCA9IFRhZ0JpdFR5cGVPdGhlciB8IEV4dGVuZGVkVGFnQml0VW5kZWZpbmVkOworICAg
ICAgICBzdGF0aWMgY29uc3QgdWludDMyX3QgRnVsbFRhZ1R5cGVOdWxsICAgICAgPSBUYWdCaXRU
eXBlT3RoZXI7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IEludGVnZXJQYXlsb2Fk
U2hpZnQgID0gMXU7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBFeHRlbmRlZFBheWxv
YWRTaGlmdCA9IDR1OwogCi0gICAgICAgIHN0YXRpYyBjb25zdCB1aW50cHRyX3QgRXh0ZW5kZWRQ
YXlsb2FkQml0Qm9vbFZhbHVlID0gMSA8PCBFeHRlbmRlZFBheWxvYWRTaGlmdDsKKyAgICAgICAg
c3RhdGljIGNvbnN0IHVpbnQzMl90IEV4dGVuZGVkUGF5bG9hZEJpdEJvb2xWYWx1ZSA9IDEgPDwg
RXh0ZW5kZWRQYXlsb2FkU2hpZnQ7CiAgCiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgQUxX
QVlTX0lOTElORSBib29sIGlzSW1tZWRpYXRlKEpTVmFsdWUqIHYpCkBAIC0yNjYsNyArMjY2LDkg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1
ZSogbWFrZUludChpbnQzMl90IHZhbHVlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
bWFrZVZhbHVlKCh2YWx1ZSA8PCBJbnRlZ2VyUGF5bG9hZFNoaWZ0KSB8IFRhZ0JpdFR5cGVJbnRl
Z2VyKTsKKyAgICAgICAgICAgIC8vIERFQlVHIE1FITogV2h5IGRvZXMgdGhlIHJlc3VsdCBvZiB0
aGlzIG5lZWQgYmUgYSA2NC1iaXQgdmFsdWU/CisgICAgICAgICAgICAvLyBJbnRlZ2VyIGltbWVk
aWF0ZXMgYXJlIHN0aWxsIG9ubHkgMzEtYml0IG9uIHg4Ni02NC4KKyAgICAgICAgICAgIHJldHVy
biBtYWtlVmFsdWUoKHZhbHVlIDw8IEludGVnZXJQYXlsb2FkU2hpZnQpIHwgc3RhdGljX2Nhc3Q8
dWludHB0cl90PihUYWdCaXRUeXBlSW50ZWdlcikpOwogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlKiBtYWtlQm9vbChib29sIGIpCg==
</data>
<flag name="review"
          id="12287"
          type_id="1"
          status="+"
          setter="zwarich"
    />
          </attachment>
      

    </bug>

</bugzilla>