<?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>151667</bug_id>
          
          <creation_ts>2015-11-30 12:08:14 -0800</creation_ts>
          <short_desc>FTL lazy slow paths should work with B3</short_desc>
          <delta_ts>2020-07-03 12:43:11 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>151668</dependson>
          <blocked>150279</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>ap</cc>
    
    <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>lohago5382</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>saam</cc>
    
    <cc>sambadseo</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1144866</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-30 12:08:14 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145061</commentid>
    <comment_count>1</comment_count>
      <attachid>266310</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-30 17:56:40 -0800</bug_when>
    <thetext>Created attachment 266310
work in progress

I haven&apos;t tried compiling it yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145089</commentid>
    <comment_count>2</comment_count>
      <attachid>266319</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-30 19:01:11 -0800</bug_when>
    <thetext>Created attachment 266319
it compiles!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145101</commentid>
    <comment_count>3</comment_count>
      <attachid>266326</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-30 19:37:59 -0800</bug_when>
    <thetext>Created attachment 266326
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145102</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-30 19:38:54 -0800</bug_when>
    <thetext>Oh man, I&apos;m playing the EWS lottery so hard - I haven&apos;t tested this with FTL_USES_B3 disabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145103</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-30 19:39:48 -0800</bug_when>
    <thetext>Attachment 266326 did not pass style-queue:


ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:7853:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:7870:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:7887:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 3 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145107</commentid>
    <comment_count>6</comment_count>
      <attachid>266326</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-11-30 19:43:19 -0800</bug_when>
    <thetext>Comment on attachment 266326
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145117</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-30 20:43:58 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/192856</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266310</attachid>
            <date>2015-11-30 17:56:40 -0800</date>
            <delta_ts>2015-11-30 19:01:11 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>18823</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NoZWNrU3BlY2lhbC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFsLmNwcAkocmV2
aXNpb24gMTkyODQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEyLDYgKzIxMiw3IEBAIENDYWxsSGVscGVyczo6SnVt
cCBDaGVja1NwZWNpYWw6OmdlbmVyYXQKICAgICAgICAgICAgICAgICBwYXJhbXMudmFsdWUgPSB2
YWx1ZTsKICAgICAgICAgICAgICAgICBwYXJhbXMucmVwcyA9IHJlcHM7CiAgICAgICAgICAgICAg
ICAgcGFyYW1zLnVzZWRSZWdpc3RlcnMgPSB2YWx1ZS0+bV91c2VkUmVnaXN0ZXJzOworICAgICAg
ICAgICAgICAgIHBhcmFtcy5jb250ZXh0ID0gJmNvbnRleHQ7CiAKICAgICAgICAgICAgICAgICB2
YWx1ZS0+bV9nZW5lcmF0b3ItPnJ1bihqaXQsIHBhcmFtcyk7CiAgICAgICAgICAgICB9KSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQYXRjaHBvaW50U3BlY2lhbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUGF0Y2hwb2ludFNwZWNpYWwu
Y3BwCShyZXZpc2lvbiAxOTI4NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQYXRj
aHBvaW50U3BlY2lhbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDYgKzk5LDcgQEAgQ0NhbGxI
ZWxwZXJzOjpKdW1wIFBhdGNocG9pbnRTcGVjaWFsOjpnZQogICAgIHBhcmFtcy52YWx1ZSA9IHZh
bHVlOwogICAgIHBhcmFtcy5yZXBzID0gcmVwczsKICAgICBwYXJhbXMudXNlZFJlZ2lzdGVycyA9
IHZhbHVlLT5tX3VzZWRSZWdpc3RlcnM7CisgICAgcGFyYW1zLmNvbnRleHQgPSAmY29udGV4dDsK
IAogICAgIHZhbHVlLT5tX2dlbmVyYXRvci0+cnVuKGppdCwgcGFyYW1zKTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBWYWx1ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwVmFsdWUuaAkocmV2aXNpb24gMTkyODQx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBWYWx1ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOSw2ICszOSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsK
IAogY2xhc3MgU3RhY2ttYXBWYWx1ZTsKIAorbmFtZXNwYWNlIEFpciB7CitzdHJ1Y3QgR2VuZXJh
dGlvbkNvbnRleHQ7Cit9CisKIHN0cnVjdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMgewogICAg
IC8vIFRoaXMgaXMgdGhlIHN0YWNrbWFwIHZhbHVlIHRoYXQgd2UncmUgZ2VuZXJhdGluZy4KICAg
ICBTdGFja21hcFZhbHVlKiB2YWx1ZTsKQEAgLTQ5LDYgKzUzLDkgQEAgc3RydWN0IFN0YWNrbWFw
R2VuZXJhdGlvblBhcmFtcyB7CiAgICAgCiAgICAgLy8gVGhpcyB0ZWxscyB5b3UgdGhlIHJlZ2lz
dGVycyB0aGF0IHdlcmUgdXNlZC4KICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzOworCisg
ICAgLy8gVGhlIEFpcjo6R2VuZXJhdGlvbkNvbnRleHQgZ2l2ZXMgeW91IGV2ZW4gbW9yZSBwb3dl
ci4KKyAgICBBaXI6OkdlbmVyYXRpb25Db250ZXh0KiBjb250ZXh0OwogfTsKIAogdHlwZWRlZiB2
b2lkIFN0YWNrbWFwR2VuZXJhdG9yRnVuY3Rpb24oQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3RhY2tt
YXBHZW5lcmF0aW9uUGFyYW1zJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExhenlTbG93UGF0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMYXp5U2xvd1BhdGguY3BwCShyZXZpc2lvbiAxOTI4NDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExhenlTbG93UGF0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDE2
ICszNCwzMSBAQAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogCiBMYXp5U2xvd1Bh
dGg6OkxhenlTbG93UGF0aCgKLSAgICBDb2RlTG9jYXRpb25MYWJlbCBwYXRjaHBvaW50LCBDb2Rl
TG9jYXRpb25MYWJlbCBleGNlcHRpb25UYXJnZXQsCi0gICAgY29uc3QgUmVnaXN0ZXJTZXQmIHVz
ZWRSZWdpc3RlcnMsIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgUmVmUHRyPEdlbmVyYXRv
cj4gZ2VuZXJhdG9yLAotICAgIEdQUlJlZyBuZXdaZXJvUmVnLCBTY3JhdGNoUmVnaXN0ZXJBbGxv
Y2F0b3Igc2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yKQorI2lmIEZUTF9VU0VTX0IzCisgICAgQ29k
ZUxvY2F0aW9uSnVtcCBwYXRjaGFibGVKdW1wLCBDb2RlTG9jYXRpb25MYWJlbCBkb25lLAorI2Vs
c2UgLy8gRlRMX1VTRVNfQjMKKyAgICBDb2RlTG9jYXRpb25MYWJlbCBwYXRjaHBvaW50LAorI2Vu
ZGlmIC8vIEZUTF9VU0VTX0IzCisgICAgQ29kZUxvY2F0aW9uTGFiZWwgZXhjZXB0aW9uVGFyZ2V0
LAorICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWxsU2l0ZUluZGV4IGNh
bGxTaXRlSW5kZXgsIFJlZlB0cjxHZW5lcmF0b3I+IGdlbmVyYXRvcgorI2lmICFGVExfVVNFU19C
MworICAgICwgR1BSUmVnIG5ld1plcm9SZWcsIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBzY3Jh
dGNoUmVnaXN0ZXJBbGxvY2F0b3IKKyNlbmRpZiAvLyAhRlRMX1VTRVNfQjMKKyAgICApCisjaWYg
RlRMX1VTRVNfQjMKKyAgICA6IG1fcGF0Y2hhYmxlSnVtcChwYXRjaGFibGVKdW1wKQorICAgICwg
bV9kb25lKGRvbmUpCisjZWxzZSAvLyBGVExfVVNFU19CMwogICAgIDogbV9wYXRjaHBvaW50KHBh
dGNocG9pbnQpCisjZW5kaWYgLy8gRlRMX1VTRVNfQjMKICAgICAsIG1fZXhjZXB0aW9uVGFyZ2V0
KGV4Y2VwdGlvblRhcmdldCkKICAgICAsIG1fdXNlZFJlZ2lzdGVycyh1c2VkUmVnaXN0ZXJzKQog
ICAgICwgbV9jYWxsU2l0ZUluZGV4KGNhbGxTaXRlSW5kZXgpCiAgICAgLCBtX2dlbmVyYXRvcihn
ZW5lcmF0b3IpCisjaWYgIUZUTF9VU0VTX0IzCiAgICAgLCBtX25ld1plcm9WYWx1ZVJlZ2lzdGVy
KG5ld1plcm9SZWcpCiAgICAgLCBtX3NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcihzY3JhdGNoUmVn
aXN0ZXJBbGxvY2F0b3IpCisjZW5kaWYgLy8gIUZUTF9VU0VTX0IzCiB7CiB9CiAKQEAgLTYzLDYg
Kzc4LDcgQEAgdm9pZCBMYXp5U2xvd1BhdGg6OmdlbmVyYXRlKENvZGVCbG9jayogYwogICAgIHBh
cmFtcy5leGNlcHRpb25KdW1wcyA9IG1fZXhjZXB0aW9uVGFyZ2V0ID8gJmV4Y2VwdGlvbkp1bXBz
IDogbnVsbHB0cjsKICAgICBwYXJhbXMubGF6eVNsb3dQYXRoID0gdGhpczsKIAorI2lmICFGVExf
VVNFU19CMwogICAgIHVuc2lnbmVkIGJ5dGVzU2F2ZWQgPSBtX3NjcmF0Y2hSZWdpc3RlckFsbG9j
YXRvci5wcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZyhqaXQsIFNjcmF0Y2hSZWdpc3Rl
ckFsbG9jYXRvcjo6RXh0cmFTdGFja1NwYWNlOjpOb0V4dHJhU3BhY2UpOwogICAgIC8vIFRoaXMg
aXMgbmVlZGVkIGJlY2F1c2UgTExWTSBtYXkgY3JlYXRlIGEgc3RhY2ttYXAgbG9jYXRpb24gdGhh
dCBpcyB0aGUgcmVnaXN0ZXIgU1AuCiAgICAgLy8gQnV0IG9uIGFybTY0LCBTUCBpcyBhbHNvIHRo
ZSBzYW1lIHJlZ2lzdGVyIG51bWJlciBhcyBaUiwgc28gTExWTSBpcyB0ZWxsaW5nIHVzIHRoYXQg
aXQgaGFzCkBAIC03MSw5ICs4NywxMSBAQCB2b2lkIExhenlTbG93UGF0aDo6Z2VuZXJhdGUoQ29k
ZUJsb2NrKiBjCiAgICAgLy8gaW50byBhIG5vbi1TUCByZWdpc3Rlci4KICAgICBpZiAobV9uZXda
ZXJvVmFsdWVSZWdpc3RlciAhPSBJbnZhbGlkR1BSUmVnKQogICAgICAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSwgbV9uZXdaZXJvVmFsdWVSZWdpc3Rlcik7CisjZW5k
aWYgLy8gIUZUTF9VU0VTX0IzCiAKICAgICBtX2dlbmVyYXRvci0+cnVuKGppdCwgcGFyYW1zKTsK
IAorI2lmICFGVExfVVNFU19CMwogICAgIENDYWxsSGVscGVyczo6TGFiZWwgZG9uZUxhYmVsOwog
ICAgIENDYWxsSGVscGVyczo6SnVtcCBqdW1wVG9FbmRPZlBhdGNocG9pbnQ7CiAgICAgaWYgKGJ5
dGVzU2F2ZWQpIHsKQEAgLTgxLDE4ICs5OSwyNyBAQCB2b2lkIExhenlTbG93UGF0aDo6Z2VuZXJh
dGUoQ29kZUJsb2NrKiBjCiAgICAgICAgIG1fc2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLnJlc3Rv
cmVSZXVzZWRSZWdpc3RlcnNCeVBvcHBpbmcoaml0LCBieXRlc1NhdmVkLCBTY3JhdGNoUmVnaXN0
ZXJBbGxvY2F0b3I6OkV4dHJhU3RhY2tTcGFjZTo6Tm9FeHRyYVNwYWNlKTsKICAgICAgICAganVt
cFRvRW5kT2ZQYXRjaHBvaW50ID0gaml0Lmp1bXAoKTsKICAgICB9CisjZW5kaWYgLy8gIUZUTF9V
U0VTX0IzCiAKICAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIodm0sIGppdCwgY29kZUJsb2NrLCBK
SVRDb21waWxhdGlvbk11c3RTdWNjZWVkKTsKKyNpZiBGVExfVVNFU19CMworICAgIGxpbmtCdWZm
ZXIubGluayhwYXJhbXMuZG9uZUp1bXBzLCBtX2RvbmUpOworI2Vsc2UgLy8gRlRMX1VTRVNfQjMK
ICAgICBpZiAoYnl0ZXNTYXZlZCkgewogICAgICAgICBsaW5rQnVmZmVyLmxpbmsocGFyYW1zLmRv
bmVKdW1wcywgbGlua0J1ZmZlci5sb2NhdGlvbk9mKGRvbmVMYWJlbCkpOwogICAgICAgICBsaW5r
QnVmZmVyLmxpbmsoanVtcFRvRW5kT2ZQYXRjaHBvaW50LCBtX3BhdGNocG9pbnQubGFiZWxBdE9m
ZnNldChNYWNyb0Fzc2VtYmxlcjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpKSk7CiAgICAgfSBl
bHNlCiAgICAgICAgIGxpbmtCdWZmZXIubGluayhwYXJhbXMuZG9uZUp1bXBzLCBtX3BhdGNocG9p
bnQubGFiZWxBdE9mZnNldChNYWNyb0Fzc2VtYmxlcjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgp
KSk7CisjZW5kaWYgLy8gRlRMX1VTRVNfQjMKICAgICBpZiAobV9leGNlcHRpb25UYXJnZXQpCiAg
ICAgICAgIGxpbmtCdWZmZXIubGluayhleGNlcHRpb25KdW1wcywgbV9leGNlcHRpb25UYXJnZXQp
OwogICAgIG1fc3R1YiA9IEZJTkFMSVpFX0NPREVfRk9SKGNvZGVCbG9jaywgbGlua0J1ZmZlciwg
KCJMYXp5IHNsb3cgcGF0aCBjYWxsIHN0dWIiKSk7CiAKKyNpZiBGVExfVVNFU19CMworICAgIE1h
Y3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChtX3BhdGNoYWJsZUp1bXAsIENvZGVMb2NhdGlvbkxh
YmVsKG1fc3R1Yi5jb2RlKCkpKTsKKyNlbHNlIC8vIEZUTF9VU0VTX0IzCiAgICAgTWFjcm9Bc3Nl
bWJsZXI6OnJlcGxhY2VXaXRoSnVtcChtX3BhdGNocG9pbnQsIENvZGVMb2NhdGlvbkxhYmVsKG1f
c3R1Yi5jb2RlKCkpKTsKKyNlbmRpZiAvLyBGVExfVVNFU19CMwogfQogCiB9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6RlRMCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExhenlTbG93
UGF0aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGF6eVNs
b3dQYXRoLmgJKHJldmlzaW9uIDE5Mjg0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTGF6eVNsb3dQYXRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDEyICs2NiwyNiBAQCBwdWJs
aWM6CiAgICAgfQogICAgIAogICAgIExhenlTbG93UGF0aCgKLSAgICAgICAgQ29kZUxvY2F0aW9u
TGFiZWwgcGF0Y2hwb2ludCwgQ29kZUxvY2F0aW9uTGFiZWwgZXhjZXB0aW9uVGFyZ2V0LCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgQ2FsbFNpdGVJbmRleCwgUmVm
UHRyPEdlbmVyYXRvcj4sIEdQUlJlZyBuZXdaZXJvUmVnLCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0
b3IpOworI2lmIEZUTF9VU0VTX0IzCisgICAgICAgIENvZGVMb2NhdGlvbkp1bXAgcGF0Y2hhYmxl
SnVtcCwgQ29kZUxvY2F0aW9uTGFiZWwgZG9uZSwKKyNlbHNlIC8vIEZMVF9VU0VTX0IzCisgICAg
ICAgIENvZGVMb2NhdGlvbkxhYmVsIHBhdGNocG9pbnQsCisjZW5kaWYgLy8gRlRMX1VTRVNfQjMK
KyAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwgZXhjZXB0aW9uVGFyZ2V0LCBjb25zdCBSZWdpc3Rl
clNldCYgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgQ2FsbFNpdGVJbmRleCwgUmVmUHRyPEdlbmVy
YXRvcj4KKyNpZiAhRlRMX1VTRVNfQjMKKyAgICAgICAgLCBHUFJSZWcgbmV3WmVyb1JlZywgU2Ny
YXRjaFJlZ2lzdGVyQWxsb2NhdG9yCisjZW5kaWYgLy8gRlRMX1VTRVNfQjMKKyAgICAgICAgKTsK
IAogICAgIH5MYXp5U2xvd1BhdGgoKTsKIAorI2lmIEZUTF9VU0VTX0IzCisgICAgQ29kZUxvY2F0
aW9uSnVtcCBwYXRjaGFibGVKdW1wKCkgY29uc3QgeyByZXR1cm4gbV9wYXRjaGFibGVKdW1wOyB9
CisgICAgQ29kZUxvY2F0aW9uTGFiZWwgZG9uZSgpIGNvbnN0IHsgcmV0dXJuIG1fZG9uZTsgfQor
I2Vsc2UgLy8gRlRMX1VTRVNfQjMKICAgICBDb2RlTG9jYXRpb25MYWJlbCBwYXRjaHBvaW50KCkg
Y29uc3QgeyByZXR1cm4gbV9wYXRjaHBvaW50OyB9CisjZW5kaWYgLy8gRlRMX1VTRVNfQjMKICAg
ICBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fdXNl
ZFJlZ2lzdGVyczsgfQogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCgpIGNvbnN0IHsg
cmV0dXJuIG1fY2FsbFNpdGVJbmRleDsgfQogCkBAIC04MCwxNCArOTQsMjEgQEAgcHVibGljOgog
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBzdHViKCkgY29uc3QgeyByZXR1cm4gbV9zdHViOyB9
CiAKIHByaXZhdGU6CisjaWYgRlRMX1VTRVNfQjMKKyAgICBDb2RlTG9jYXRpb25KdW1wIG1fcGF0
Y2hhYmxlSnVtcDsKKyAgICBDb2RlTG9jYXRpb25MYWJlbCBtX2RvbmU7CisjZWxzZSAvLyBGVExf
VVNFU19CMwogICAgIENvZGVMb2NhdGlvbkxhYmVsIG1fcGF0Y2hwb2ludDsKKyNlbmRpZiAvLyBG
VExfVVNFU19CMwogICAgIENvZGVMb2NhdGlvbkxhYmVsIG1fZXhjZXB0aW9uVGFyZ2V0OwogICAg
IFJlZ2lzdGVyU2V0IG1fdXNlZFJlZ2lzdGVyczsKICAgICBDYWxsU2l0ZUluZGV4IG1fY2FsbFNp
dGVJbmRleDsKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbV9zdHViOwogICAgIFJlZlB0cjxH
ZW5lcmF0b3I+IG1fZ2VuZXJhdG9yOworI2lmICFGVExfVVNFU19CMwogICAgIEdQUlJlZyBtX25l
d1plcm9WYWx1ZVJlZ2lzdGVyOwogICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBtX3NjcmF0
Y2hSZWdpc3RlckFsbG9jYXRvcjsKKyNlbmRpZiAvLyBGVExfVVNFU19CMwogfTsKIAogfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkZUTApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b2NhdGlvbi5jcHAJKHJldmlzaW9uIDE5Mjg0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDYgKzI4LDcgQEAKIAog
I2lmIEVOQUJMRShGVExfSklUKQogCisjaW5jbHVkZSAiQjNWYWx1ZVJlcC5oIgogI2luY2x1ZGUg
IkZUTFNhdmVSZXN0b3JlLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKICNpbmNsdWRlIDx3
dGYvQ29tbWFQcmludGVyLmg+CkBAIC0zNiw2ICszNywyNSBAQAogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIEZUTCB7CiAKK3VzaW5nIG5hbWVzcGFjZSBCMzsKKworI2lmIEZUTF9VU0VTX0Iz
CitMb2NhdGlvbiBMb2NhdGlvbjo6Zm9yVmFsdWVSZXAoY29uc3QgVmFsdWVSZXAmIHJlcCkKK3sK
KyAgICBzd2l0Y2ggKHJlcC5raW5kKCkpIHsKKyAgICBjYXNlIFJlZ2lzdGVyOgorICAgICAgICBy
ZXR1cm4gZm9yUmVnaXN0ZXIocmVwLnJlZygpKTsKKyAgICBjYXNlIFN0YWNrOgorICAgICAgICBy
ZXR1cm4gZm9ySW5kaXJlY3QoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHJlcC5vZmZzZXRG
cm9tRlAoKSk7CisgICAgY2FzZSBDb25zdGFudDoKKyAgICAgICAgcmV0dXJuIGZvckNvbnN0YW50
KHJlcC52YWx1ZSgpKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gTG9jYXRpb24oKTsKKyAgICB9Cit9CisjZW5kaWYg
Ly8gRlRMX1VTRVNfQjMKKwogTG9jYXRpb24gTG9jYXRpb246OmZvclN0YWNrbWFwcyhjb25zdCBT
dGFja01hcHMqIHN0YWNrbWFwcywgY29uc3QgU3RhY2tNYXBzOjpMb2NhdGlvbiYgbG9jYXRpb24p
CiB7CiAgICAgc3dpdGNoIChsb2NhdGlvbi5raW5kKSB7CkBAIC02Niw4ICs4Niw4IEBAIExvY2F0
aW9uIExvY2F0aW9uOjpmb3JTdGFja21hcHMoY29uc3QgU3QKIHZvaWQgTG9jYXRpb246OmR1bXAo
UHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBvdXQucHJpbnQoIigiLCBraW5kKCkpOwot
ICAgIGlmIChoYXNEd2FyZlJlZygpKQotICAgICAgICBvdXQucHJpbnQoIiwgIiwgZHdhcmZSZWco
KSk7CisgICAgaWYgKGhhc1JlZygpKQorICAgICAgICBvdXQucHJpbnQoIiwgIiwgcmVnKCkpOwog
ICAgIGlmIChoYXNPZmZzZXQoKSkKICAgICAgICAgb3V0LnByaW50KCIsICIsIG9mZnNldCgpKTsK
ICAgICBpZiAoaGFzQWRkZW5kKCkpCkBAIC04NCwyMiArMTA0LDIyIEBAIGJvb2wgTG9jYXRpb246
Omludm9sdmVzR1BSKCkgY29uc3QKIAogYm9vbCBMb2NhdGlvbjo6aXNHUFIoKSBjb25zdAogewot
ICAgIHJldHVybiBraW5kKCkgPT0gUmVnaXN0ZXIgJiYgZHdhcmZSZWcoKS5yZWcoKS5pc0dQUigp
OworICAgIHJldHVybiBraW5kKCkgPT0gUmVnaXN0ZXIgJiYgcmVnKCkuaXNHUFIoKTsKIH0KIAog
R1BSUmVnIExvY2F0aW9uOjpncHIoKSBjb25zdAogewotICAgIHJldHVybiBkd2FyZlJlZygpLnJl
ZygpLmdwcigpOworICAgIHJldHVybiByZWcoKS5ncHIoKTsKIH0KIAogYm9vbCBMb2NhdGlvbjo6
aXNGUFIoKSBjb25zdAogewotICAgIHJldHVybiBraW5kKCkgPT0gUmVnaXN0ZXIgJiYgZHdhcmZS
ZWcoKS5yZWcoKS5pc0ZQUigpOworICAgIHJldHVybiBraW5kKCkgPT0gUmVnaXN0ZXIgJiYgcmVn
KCkuaXNGUFIoKTsKIH0KIAogRlBSUmVnIExvY2F0aW9uOjpmcHIoKSBjb25zdAogewotICAgIHJl
dHVybiBkd2FyZlJlZygpLnJlZygpLmZwcigpOworICAgIHJldHVybiByZWcoKS5mcHIoKTsKIH0K
IAogdm9pZCBMb2NhdGlvbjo6cmVzdG9yZUludG8oTWFjcm9Bc3NlbWJsZXImIGppdCwgY2hhciog
c2F2ZWRSZWdpc3RlcnMsIEdQUlJlZyByZXN1bHQsIHVuc2lnbmVkIG51bUZyYW1lc1RvUG9wKSBj
b25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb2NhdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG9jYXRpb24uaAkocmV2aXNp
b24gMTkyODQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb2NhdGlvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM0LDcgKzM0LDEzIEBACiAjaW5jbHVkZSAiR1BSSW5mby5oIgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRM
IHsKK25hbWVzcGFjZSBKU0MgeworCituYW1lc3BhY2UgQjMgeworY2xhc3MgVmFsdWVSZXA7Cit9
IC8vIG5hbWVzcGFjZSBCMworCituYW1lc3BhY2UgRlRMIHsKIAogY2xhc3MgTG9jYXRpb24gewog
cHVibGljOgpAQCAtNTYsMjUgKzYyLDM1IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHUuY29u
c3RhbnQgPSAxOwogICAgIH0KLSAgICAKLSAgICBzdGF0aWMgTG9jYXRpb24gZm9yUmVnaXN0ZXIo
RFdBUkZSZWdpc3RlciBkd2FyZlJlZywgaW50MzJfdCBhZGRlbmQpCisKKyAgICBzdGF0aWMgTG9j
YXRpb24gZm9yUmVnaXN0ZXIoUmVnIHJlZywgaW50MzJfdCBhZGRlbmQpCiAgICAgewogICAgICAg
ICBMb2NhdGlvbiByZXN1bHQ7CiAgICAgICAgIHJlc3VsdC5tX2tpbmQgPSBSZWdpc3RlcjsKLSAg
ICAgICAgcmVzdWx0LnUudmFyaWFibGUuZHdhcmZSZWdOdW0gPSBkd2FyZlJlZy5kd2FyZlJlZ051
bSgpOworICAgICAgICByZXN1bHQudS52YXJpYWJsZS5yZWdJbmRleCA9IHJlZy5pbmRleCgpOwog
ICAgICAgICByZXN1bHQudS52YXJpYWJsZS5vZmZzZXQgPSBhZGRlbmQ7CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBMb2NhdGlvbiBmb3JJbmRpcmVjdChE
V0FSRlJlZ2lzdGVyIGR3YXJmUmVnLCBpbnQzMl90IG9mZnNldCkKKyAgICBzdGF0aWMgTG9jYXRp
b24gZm9yUmVnaXN0ZXIoRFdBUkZSZWdpc3RlciBkd2FyZlJlZywgaW50MzJfdCBhZGRlbmQpCisg
ICAgeworICAgICAgICByZXR1cm4gZm9yUmVnaXN0ZXIoZHdhcmZSZWcucmVnKCksIGFkZGVuZCk7
CisgICAgfQorICAgIAorICAgIHN0YXRpYyBMb2NhdGlvbiBmb3JJbmRpcmVjdChSZWcgcmVnLCBp
bnQzMl90IG9mZnNldCkKICAgICB7CiAgICAgICAgIExvY2F0aW9uIHJlc3VsdDsKICAgICAgICAg
cmVzdWx0Lm1fa2luZCA9IEluZGlyZWN0OwotICAgICAgICByZXN1bHQudS52YXJpYWJsZS5kd2Fy
ZlJlZ051bSA9IGR3YXJmUmVnLmR3YXJmUmVnTnVtKCk7CisgICAgICAgIHJlc3VsdC51LnZhcmlh
YmxlLnJlZ0luZGV4ID0gcmVnLmluZGV4KCk7CiAgICAgICAgIHJlc3VsdC51LnZhcmlhYmxlLm9m
ZnNldCA9IG9mZnNldDsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCisgICAg
c3RhdGljIExvY2F0aW9uIGZvckluZGlyZWN0KERXQVJGUmVnaXN0ZXIgZHdhcmZSZWcsIGludDMy
X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZvckluZGlyZWN0KGR3YXJmUmVnLnJl
ZygpLCBvZmZzZXQpOworICAgIH0KKyAgICAKICAgICBzdGF0aWMgTG9jYXRpb24gZm9yQ29uc3Rh
bnQoaW50NjRfdCBjb25zdGFudCkKICAgICB7CiAgICAgICAgIExvY2F0aW9uIHJlc3VsdDsKQEAg
LTgzLDIyICs5OSwyMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQog
CisjaWYgRlRMX1VTRVNfQjMKKyAgICBzdGF0aWMgTG9jYXRpb24gZm9yVmFsdWVSZXAoY29uc3Qg
QjM6OlZhbHVlUmVwJik7CisjZW5kaWYgLy8gRlRMX1VTRVNfQjMKKwogICAgIC8vIFlvdSBjYW4g
cGFzcyBhIG51bGwgU3RhY2tNYXBzIGlmIHlvdSBhcmUgY29uZmlkZW50IHRoYXQgdGhlIGxvY2F0
aW9uIGRvZXNuJ3QKICAgICAvLyBpbnZvbHZlIGEgd2lkZSBjb25zdGFudC4KICAgICBzdGF0aWMg
TG9jYXRpb24gZm9yU3RhY2ttYXBzKGNvbnN0IFN0YWNrTWFwcyosIGNvbnN0IFN0YWNrTWFwczo6
TG9jYXRpb24mKTsKICAgICAKICAgICBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7
IH0KLSAgICAKLSAgICBib29sIGhhc0R3YXJmUmVnTnVtKCkgY29uc3QgeyByZXR1cm4ga2luZCgp
ID09IFJlZ2lzdGVyIHx8IGtpbmQoKSA9PSBJbmRpcmVjdDsgfQotICAgIGludDE2X3QgZHdhcmZS
ZWdOdW0oKSBjb25zdAorCisgICAgYm9vbCBoYXNSZWcoKSBjb25zdCB7IHJldHVybiBraW5kKCkg
PT0gUmVnaXN0ZXIgfHwga2luZCgpID09IEluZGlyZWN0OyB9CisgICAgUmVnIHJlZygpIGNvbnN0
CiAgICAgewotICAgICAgICBBU1NFUlQoaGFzRHdhcmZSZWdOdW0oKSk7Ci0gICAgICAgIHJldHVy
biB1LnZhcmlhYmxlLmR3YXJmUmVnTnVtOworICAgICAgICBBU1NFUlQoaGFzUmVnKCkpOworICAg
ICAgICByZXR1cm4gUmVnKHUudmFyaWFibGUucmVnSW5kZXgpOwogICAgIH0KICAgICAKLSAgICBi
b29sIGhhc0R3YXJmUmVnKCkgY29uc3QgeyByZXR1cm4gaGFzRHdhcmZSZWdOdW0oKTsgfQotICAg
IERXQVJGUmVnaXN0ZXIgZHdhcmZSZWcoKSBjb25zdCB7IHJldHVybiBEV0FSRlJlZ2lzdGVyKGR3
YXJmUmVnTnVtKCkpOyB9Ci0gICAgCiAgICAgYm9vbCBoYXNPZmZzZXQoKSBjb25zdCB7IHJldHVy
biBraW5kKCkgPT0gSW5kaXJlY3Q7IH0KICAgICBpbnQzMl90IG9mZnNldCgpIGNvbnN0CiAgICAg
ewpAQCAtMTQyLDExICsxNTksMTEgQEAgcHVibGljOgogICAgICAgICAgICAgYnJlYWs7CiAKICAg
ICAgICAgY2FzZSBSZWdpc3RlcjoKLSAgICAgICAgICAgIHJlc3VsdCBePSB1LnZhcmlhYmxlLmR3
YXJmUmVnTnVtOworICAgICAgICAgICAgcmVzdWx0IF49IHUudmFyaWFibGUucmVnSW5kZXg7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEluZGlyZWN0Ogot
ICAgICAgICAgICAgcmVzdWx0IF49IHUudmFyaWFibGUuZHdhcmZSZWdOdW07CisgICAgICAgICAg
ICByZXN1bHQgXj0gdS52YXJpYWJsZS5yZWdJbmRleDsKICAgICAgICAgICAgIHJlc3VsdCBePSB1
LnZhcmlhYmxlLm9mZnNldDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCkBAIC0x
ODIsNyArMTk5LDcgQEAgcHJpdmF0ZToKICAgICB1bmlvbiB7CiAgICAgICAgIGludDY0X3QgY29u
c3RhbnQ7CiAgICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICBpbnQxNl90IGR3YXJmUmVnTnVt
OworICAgICAgICAgICAgdW5zaWduZWQgcmVnSW5kZXg7CiAgICAgICAgICAgICBpbnQzMl90IG9m
ZnNldDsKICAgICAgICAgfSB2YXJpYWJsZTsKICAgICB9IHU7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkocmV2aXNpb24gMTkyODQw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTc4NDAsOSArNzg0MCw2MyBAQCBwcml2YXRlOgogICAgICAgICBCMzo6
UGF0Y2hwb2ludFZhbHVlKiByZXN1bHQgPSBtX291dC5wYXRjaHBvaW50KEIzOjpJbnQ2NCk7CiAg
ICAgICAgIGZvciAoTFZhbHVlIGFyZyA6IHVzZXJBcmd1bWVudHMpCiAgICAgICAgICAgICByZXN1
bHQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZywgVmFsdWVSZXA6OlNvbWVSZWdpc3Rlcikp
OworCisgICAgICAgIC8vIEZJWE1FOiBBcyBwYXJ0IG9mIGhhbmRsaW5nIGV4Y2VwdGlvbnMsIHdl
IG5lZWQgdG8gYXBwZW5kIE9TUiBleGl0IHN0YXRlIGhlcmUuCisgICAgICAgIAorICAgICAgICBy
ZXN1bHQtPmNsb2JiZXIoTWFjcm9Bc3NlbWJsZXI6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsK
KyAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CisKICAgICAgICAgcmVzdWx0LT5z
ZXRHZW5lcmF0b3IoCi0gICAgICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBC
Mzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewotICAgICAgICAgICAgICAgIGppdC5vb3Bz
KCk7CisgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBTdGFja21hcEdlbmVyYXRp
b25QYXJhbXMgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgVmVjdG9yPExvY2F0aW9uPiBsb2Nh
dGlvbnM7CisgICAgICAgICAgICAgICAgZm9yIChjb25zdCBWYWx1ZVJlcCYgcmVwIDogcGFyYW1z
LnJlcHMpCisgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9ucy5hcHBlbmQoTG9jYXRpb246OmZv
clZhbHVlUmVwKHJlcCkpOworCisgICAgICAgICAgICAgICAgUmVmUHRyPExhenlTbG93UGF0aDo6
R2VuZXJhdG9yPiBnZW5lcmF0b3IgPSBmdW5jdG9yKGxvY2F0aW9ucyk7CisgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpQYXRjaGFibGVKdW1wIHBhdGNoYWJs
ZUp1bXAgPSBqaXQuanVtcCgpOworICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwg
ZG9uZSA9IGppdC5sYWJlbCgpOworCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IEFzIHBhcnQg
b2YgaGFuZGxpbmcgZXhjZXB0aW9ucywgd2UgbmVlZCB0byBjcmVhdGUgYSBjb25jcmV0ZSBPU1JF
eGl0IGhlcmUuCisgICAgICAgICAgICAgICAgLy8gRG9pbmcgc28gc2hvdWxkIGF1dG9tYWdpY2Fs
bHkgcmVnaXN0ZXIgbGF0ZSBwYXRocyB0aGF0IGVtaXQgZXhpdCB0aHVua3MuCisgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgcGFyYW1zLmNvbnRleHQtPmxhdGVQYXRocy5hcHBlbmQo
CisgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVNoYXJlZFRhc2s8QWlyOjpHZW5lcmF0aW9uQ29u
dGV4dDo6TGF0ZVBhdGhGdW5jdGlvbj4oCisgICAgICAgICAgICAgICAgICAgICAgICBbPV0gKEND
YWxsSGVscGVycyYgaml0LCBBaXI6OkdlbmVyYXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFs
bG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGNocG9pbnQu
bV9qdW1wLmxpbmsoaml0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bmRleCA9IHN0YXRlLT5qaXRDb2RlLT5sYXp5U2xvd1BhdGhzLnNpemUoKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0ZS0+aml0Q29kZS0+bGF6eVNsb3dQYXRocy5hcHBlbmQobnVs
bHB0cik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LnB1c2hUb1NhdmVJbW1lZGlh
dGVXaXRob3V0VG91Y2hpbmdSZWdpc3RlcnMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGluZGV4KSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGdlbmVyYXRvckp1bXAgPSBqaXQuanVtcCgp
OworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHNvIGxvbmcgYXMg
d2UncmUgaGVyZSwgd2UgZG9uJ3QgcmVhbGx5IGtub3cgaWYgb3VyIGxhdGUgcGF0aAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHJ1bnMgYmVmb3JlIG9yIGFmdGVyIGFueSBvdGhlciBs
YXRlIHBhdGhzIHRoYXQgd2UgbWlnaHQgZGVwZW5kIG9uLCBsaWtlCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gdGhlIGV4Y2VwdGlvbiB0aHVuay4KKworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGppdC5hZGRMaW5rVGFzaygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDb2RlTG9jYXRpb25KdW1wIGxpbmtlZFBhdGNoYWJsZUp1bXAgPSBDb2Rl
TG9jYXRpb25KdW1wKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxp
bmtCdWZmZXIubG9jYXRpb25PZihwYXRjaGFibGVKdW1wKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbCBsaW5rZWREb25lID0gbGlua0J1ZmZl
ci5sb2NhdGlvbk9mKGRvbmUpOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBGSVhNRTogTmVlZCBhIHN0b3J5IGZvciBleGNlcHRpb25zIGluIEZUTC1CMy4gVGhhdCBi
YXNpY2FsbHkgbWVhbnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRv
aW5nIGEgbG9va3VwIG9mIHRoZSBleGNlcHRpb24gZW50cnlwb2ludCBoZXJlLiBXZSB3aWxsIGhh
dmUgYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9TUiBleGl0IGRh
dGEgc3RydWN0dXJlIG9mIHNvbWUgc29ydC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE2ODYK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsIGV4
Y2VwdGlvblRhcmdldDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGxT
aXRlSW5kZXggY2FsbFNpdGVJbmRleCA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhdGUtPmppdENvZGUtPmNvbW1vbi5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG9y
aWdpbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXp5U2xvd1BhdGg+IGxh
enlTbG93UGF0aCA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
OjptYWtlX3VuaXF1ZTxMYXp5U2xvd1BhdGg+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsaW5rZWRQYXRjaGFibGVKdW1wLCBsaW5rZWREb25lLCBleGNlcHRp
b25UYXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh
cmFtcy51c2VkUmVnaXN0ZXJzLCBjYWxsU2l0ZUluZGV4LCBnZW5lcmF0b3IpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGF0ZS0+aml0Q29kZS0+bGF6eVNsb3dQYXRocy5hcHBlbmQoV1RGOjptb3ZlKGxh
enlTbG93UGF0aCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICByZXR1cm4g
cmVzdWx0OwogI2Vsc2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJT
ZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJT
ZXQuY3BwCShyZXZpc2lvbiAxOTI4NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Jl
Z2lzdGVyU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNiArODAsMTUgQEAgUmVnaXN0ZXJT
ZXQgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZQogICAgIHJldHVybiBSZWdpc3RlclNldChz
cGVjaWFsUmVnaXN0ZXJzKCksIHZtQ2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKIH0KIAorUmVnaXRl
clNldCBSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkKK3sKKyNpZiBDUFUoWDg2
XzY0KQorICAgIHJldHVybiBSZWdpc3RlclNldChNYWNyb0Fzc2VtYmxlcjo6c19zY3JhdGNoUmVn
aXN0ZXIpOworI2Vsc2UKKyAgICByZXR1cm4gUmVnaXN0ZXJTZXQoKTsKKyNlbmRpZgorfQorCiBS
ZWdpc3RlclNldCBSZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpCiB7CiAgICAgUmVn
aXN0ZXJTZXQgcmVzdWx0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3Rl
clNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJT
ZXQuaAkocmV2aXNpb24gMTkyODQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdp
c3RlclNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1OSw3IEBAIHB1YmxpYzoKICNlbmRp
ZgogICAgIHN0YXRpYyBSZWdpc3RlclNldCB2b2xhdGlsZVJlZ2lzdGVyc0ZvckpTQ2FsbCgpOwog
ICAgIHN0YXRpYyBSZWdpc3RlclNldCBzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKTsgLy8gVGhl
IHVuaW9uIG9mIGNhbGxlZSBzYXZlcyBhbmQgc3BlY2lhbCByZWdpc3RlcnMuCisgICAgc3RhdGlj
IFJlZ2lzdGVyU2V0IG1hY3JvU2NyYXRjaFJlZ2lzdGVycygpOwogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBSZWdpc3RlclNldCBhbGxHUFJzKCk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFJlZ2lzdGVyU2V0IGFsbEZQUnMoKTsKICAgICBzdGF0aWMgUmVnaXN0ZXJTZXQgYWxs
UmVnaXN0ZXJzKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266319</attachid>
            <date>2015-11-30 19:01:11 -0800</date>
            <delta_ts>2015-11-30 19:37:59 -0800</delta_ts>
            <desc>it compiles!</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>22964</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NoZWNrU3BlY2lhbC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFsLmNwcAkocmV2
aXNpb24gMTkyODUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEyLDYgKzIxMiw3IEBAIENDYWxsSGVscGVyczo6SnVt
cCBDaGVja1NwZWNpYWw6OmdlbmVyYXQKICAgICAgICAgICAgICAgICBwYXJhbXMudmFsdWUgPSB2
YWx1ZTsKICAgICAgICAgICAgICAgICBwYXJhbXMucmVwcyA9IHJlcHM7CiAgICAgICAgICAgICAg
ICAgcGFyYW1zLnVzZWRSZWdpc3RlcnMgPSB2YWx1ZS0+bV91c2VkUmVnaXN0ZXJzOworICAgICAg
ICAgICAgICAgIHBhcmFtcy5jb250ZXh0ID0gJmNvbnRleHQ7CiAKICAgICAgICAgICAgICAgICB2
YWx1ZS0+bV9nZW5lcmF0b3ItPnJ1bihqaXQsIHBhcmFtcyk7CiAgICAgICAgICAgICB9KSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQYXRjaHBvaW50U3BlY2lhbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUGF0Y2hwb2ludFNwZWNpYWwu
Y3BwCShyZXZpc2lvbiAxOTI4NTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQYXRj
aHBvaW50U3BlY2lhbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDYgKzk5LDcgQEAgQ0NhbGxI
ZWxwZXJzOjpKdW1wIFBhdGNocG9pbnRTcGVjaWFsOjpnZQogICAgIHBhcmFtcy52YWx1ZSA9IHZh
bHVlOwogICAgIHBhcmFtcy5yZXBzID0gcmVwczsKICAgICBwYXJhbXMudXNlZFJlZ2lzdGVycyA9
IHZhbHVlLT5tX3VzZWRSZWdpc3RlcnM7CisgICAgcGFyYW1zLmNvbnRleHQgPSAmY29udGV4dDsK
IAogICAgIHZhbHVlLT5tX2dlbmVyYXRvci0+cnVuKGppdCwgcGFyYW1zKTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBWYWx1ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwVmFsdWUuaAkocmV2aXNpb24gMTkyODUy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBWYWx1ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOSw2ICszOSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsK
IAogY2xhc3MgU3RhY2ttYXBWYWx1ZTsKIAorbmFtZXNwYWNlIEFpciB7CitzdHJ1Y3QgR2VuZXJh
dGlvbkNvbnRleHQ7Cit9CisKIHN0cnVjdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMgewogICAg
IC8vIFRoaXMgaXMgdGhlIHN0YWNrbWFwIHZhbHVlIHRoYXQgd2UncmUgZ2VuZXJhdGluZy4KICAg
ICBTdGFja21hcFZhbHVlKiB2YWx1ZTsKQEAgLTQ5LDYgKzUzLDkgQEAgc3RydWN0IFN0YWNrbWFw
R2VuZXJhdGlvblBhcmFtcyB7CiAgICAgCiAgICAgLy8gVGhpcyB0ZWxscyB5b3UgdGhlIHJlZ2lz
dGVycyB0aGF0IHdlcmUgdXNlZC4KICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzOworCisg
ICAgLy8gVGhlIEFpcjo6R2VuZXJhdGlvbkNvbnRleHQgZ2l2ZXMgeW91IGV2ZW4gbW9yZSBwb3dl
ci4KKyAgICBBaXI6OkdlbmVyYXRpb25Db250ZXh0KiBjb250ZXh0OwogfTsKIAogdHlwZWRlZiB2
b2lkIFN0YWNrbWFwR2VuZXJhdG9yRnVuY3Rpb24oQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3RhY2tt
YXBHZW5lcmF0aW9uUGFyYW1zJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29t
bW9uLmgJKHJldmlzaW9uIDE5Mjg1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewogLy8gV2UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYW4gZXhwZXJpbWVu
dGFsIHRyYW5zaXRpb24gZnJvbSBMTFZNIHRvIEIzIGFzIHRoZSBiYWNrZW5kIGZvciB0aGUgRlRM
LiBXZSBkb24ndAogLy8geWV0IGtub3cgaG93IGl0IHdpbGwgdHVybiBvdXQuIEZvciBub3csIHRo
aXMgZmxhZyB3aWxsIGNvbnRyb2wgd2hldGhlciBGVEwgdXNlcyBCMy4gUmVtZW1iZXIgdG8gc2V0
IHRoaXMKIC8vIHRvIDAgYmVmb3JlIGNvbW1pdHRpbmchCi0jZGVmaW5lIEZUTF9VU0VTX0IzIDAK
KyNkZWZpbmUgRlRMX1VTRVNfQjMgMQogCiBzdHJ1Y3QgTm9kZTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExKU1RhaWxDYWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpTVGFpbENhbGwuY3BwCShyZXZpc2lvbiAxOTI4NTIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpTVGFpbENhbGwuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MSwxMSArNzEsMTEgQEAgVmFsdWVSZWNvdmVyeSByZWNvdmVyeUZvcihjb25zdCBF
eGl0VmFsdQogICAgICAgICBzd2l0Y2ggKGxvY2F0aW9uLmtpbmQoKSkgewogICAgICAgICBjYXNl
IExvY2F0aW9uOjpSZWdpc3RlcjoKICAgICAgICAgICAgIC8vIFdlIGhhbmRsZSB0aGUgYWRkZW5k
IG91dHNpZGUKLSAgICAgICAgICAgIHJldHVybiBWYWx1ZVJlY292ZXJ5OjppblJlZ2lzdGVyKGxv
Y2F0aW9uLmR3YXJmUmVnKCkucmVnKCksIGZvcm1hdCk7CisgICAgICAgICAgICByZXR1cm4gVmFs
dWVSZWNvdmVyeTo6aW5SZWdpc3Rlcihsb2NhdGlvbi5yZWcoKSwgZm9ybWF0KTsKIAogICAgICAg
ICBjYXNlIExvY2F0aW9uOjpJbmRpcmVjdDoKICAgICAgICAgICAgIC8vIE9oIExMVk0sIHlvdSBj
cmF6eS4uLgotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobG9jYXRpb24uZHdhcmZSZWcoKS5y
ZWcoKSA9PSBSZWcoTWFjcm9Bc3NlbWJsZXI6OmZyYW1lUG9pbnRlclJlZ2lzdGVyKSk7CisgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChsb2NhdGlvbi5yZWcoKSA9PSBSZWcoTWFjcm9Bc3NlbWJs
ZXI6OmZyYW1lUG9pbnRlclJlZ2lzdGVyKSk7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
KGxvY2F0aW9uLm9mZnNldCgpICUgc2l6ZW9mKHZvaWQqKSkpOwogICAgICAgICAgICAgLy8gRGF0
YUZvcm1hdEludDMyIGFuZCBEYXRhRm9ybWF0Qm9vbGVhbiBzaG91bGQgYmUgYWxyZWFkeSBiZSBi
b3hlZC4KICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGZvcm1hdCAhPSBEYXRhRm9ybWF0SW50
MzIgJiYgZm9ybWF0ICE9IERhdGFGb3JtYXRCb29sZWFuKTsKQEAgLTI2Myw3ICsyNjMsNyBAQCB2
b2lkIEpTVGFpbENhbGw6OmVtaXQoSklUQ29kZSYgaml0Q29kZSwgCiAgICAgICAgIHNodWZmbGVE
YXRhLmFyZ3NbaV0gPSByZWNvdmVyeUZvcihtX2FyZ3VtZW50c1tpXSwgKnJlY29yZCwgaml0Q29k
ZS5zdGFja21hcHMpOwogICAgICAgICBpZiAoRlRMOjpMb2NhdGlvbiBhZGRlbmQgPSBnZXRSZWdp
c3RlcldpdGhBZGRlbmQobV9hcmd1bWVudHNbaV0sICpyZWNvcmQsIGppdENvZGUuc3RhY2ttYXBz
KSkgewogICAgICAgICAgICAgd2l0aEFkZGVuZC5hZGQoCi0gICAgICAgICAgICAgICAgYWRkZW5k
LmR3YXJmUmVnKCkucmVnKCksCisgICAgICAgICAgICAgICAgYWRkZW5kLnJlZygpLAogICAgICAg
ICAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8VmFsdWVSZWNvdmVyeSosIGludDMyX3Q+PigpKS5p
dGVyYXRvci0+dmFsdWUuYXBwZW5kKAogICAgICAgICAgICAgICAgICAgICBzdGQ6Om1ha2VfcGFp
cigmc2h1ZmZsZURhdGEuYXJnc1tpXSwgYWRkZW5kLmFkZGVuZCgpKSk7CiAgICAgICAgICAgICBu
dW1BZGRlbmRzKys7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExhenlTbG93
UGF0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMYXp5
U2xvd1BhdGguY3BwCShyZXZpc2lvbiAxOTI4NTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExhenlTbG93UGF0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDE2ICszNCwzMSBA
QAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogCiBMYXp5U2xvd1BhdGg6OkxhenlT
bG93UGF0aCgKLSAgICBDb2RlTG9jYXRpb25MYWJlbCBwYXRjaHBvaW50LCBDb2RlTG9jYXRpb25M
YWJlbCBleGNlcHRpb25UYXJnZXQsCi0gICAgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3Rl
cnMsIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgUmVmUHRyPEdlbmVyYXRvcj4gZ2VuZXJh
dG9yLAotICAgIEdQUlJlZyBuZXdaZXJvUmVnLCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3Igc2Ny
YXRjaFJlZ2lzdGVyQWxsb2NhdG9yKQorI2lmIEZUTF9VU0VTX0IzCisgICAgQ29kZUxvY2F0aW9u
SnVtcCBwYXRjaGFibGVKdW1wLCBDb2RlTG9jYXRpb25MYWJlbCBkb25lLAorI2Vsc2UgLy8gRlRM
X1VTRVNfQjMKKyAgICBDb2RlTG9jYXRpb25MYWJlbCBwYXRjaHBvaW50LAorI2VuZGlmIC8vIEZU
TF9VU0VTX0IzCisgICAgQ29kZUxvY2F0aW9uTGFiZWwgZXhjZXB0aW9uVGFyZ2V0LAorICAgIGNv
bnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5k
ZXgsIFJlZlB0cjxHZW5lcmF0b3I+IGdlbmVyYXRvcgorI2lmICFGVExfVVNFU19CMworICAgICwg
R1BSUmVnIG5ld1plcm9SZWcsIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBzY3JhdGNoUmVnaXN0
ZXJBbGxvY2F0b3IKKyNlbmRpZiAvLyAhRlRMX1VTRVNfQjMKKyAgICApCisjaWYgRlRMX1VTRVNf
QjMKKyAgICA6IG1fcGF0Y2hhYmxlSnVtcChwYXRjaGFibGVKdW1wKQorICAgICwgbV9kb25lKGRv
bmUpCisjZWxzZSAvLyBGVExfVVNFU19CMwogICAgIDogbV9wYXRjaHBvaW50KHBhdGNocG9pbnQp
CisjZW5kaWYgLy8gRlRMX1VTRVNfQjMKICAgICAsIG1fZXhjZXB0aW9uVGFyZ2V0KGV4Y2VwdGlv
blRhcmdldCkKICAgICAsIG1fdXNlZFJlZ2lzdGVycyh1c2VkUmVnaXN0ZXJzKQogICAgICwgbV9j
YWxsU2l0ZUluZGV4KGNhbGxTaXRlSW5kZXgpCiAgICAgLCBtX2dlbmVyYXRvcihnZW5lcmF0b3Ip
CisjaWYgIUZUTF9VU0VTX0IzCiAgICAgLCBtX25ld1plcm9WYWx1ZVJlZ2lzdGVyKG5ld1plcm9S
ZWcpCiAgICAgLCBtX3NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcihzY3JhdGNoUmVnaXN0ZXJBbGxv
Y2F0b3IpCisjZW5kaWYgLy8gIUZUTF9VU0VTX0IzCiB7CiB9CiAKQEAgLTYzLDYgKzc4LDcgQEAg
dm9pZCBMYXp5U2xvd1BhdGg6OmdlbmVyYXRlKENvZGVCbG9jayogYwogICAgIHBhcmFtcy5leGNl
cHRpb25KdW1wcyA9IG1fZXhjZXB0aW9uVGFyZ2V0ID8gJmV4Y2VwdGlvbkp1bXBzIDogbnVsbHB0
cjsKICAgICBwYXJhbXMubGF6eVNsb3dQYXRoID0gdGhpczsKIAorI2lmICFGVExfVVNFU19CMwog
ICAgIHVuc2lnbmVkIGJ5dGVzU2F2ZWQgPSBtX3NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5wcmVz
ZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZyhqaXQsIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRv
cjo6RXh0cmFTdGFja1NwYWNlOjpOb0V4dHJhU3BhY2UpOwogICAgIC8vIFRoaXMgaXMgbmVlZGVk
IGJlY2F1c2UgTExWTSBtYXkgY3JlYXRlIGEgc3RhY2ttYXAgbG9jYXRpb24gdGhhdCBpcyB0aGUg
cmVnaXN0ZXIgU1AuCiAgICAgLy8gQnV0IG9uIGFybTY0LCBTUCBpcyBhbHNvIHRoZSBzYW1lIHJl
Z2lzdGVyIG51bWJlciBhcyBaUiwgc28gTExWTSBpcyB0ZWxsaW5nIHVzIHRoYXQgaXQgaGFzCkBA
IC03MSw5ICs4NywxMSBAQCB2b2lkIExhenlTbG93UGF0aDo6Z2VuZXJhdGUoQ29kZUJsb2NrKiBj
CiAgICAgLy8gaW50byBhIG5vbi1TUCByZWdpc3Rlci4KICAgICBpZiAobV9uZXdaZXJvVmFsdWVS
ZWdpc3RlciAhPSBJbnZhbGlkR1BSUmVnKQogICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMigwKSwgbV9uZXdaZXJvVmFsdWVSZWdpc3Rlcik7CisjZW5kaWYgLy8gIUZU
TF9VU0VTX0IzCiAKICAgICBtX2dlbmVyYXRvci0+cnVuKGppdCwgcGFyYW1zKTsKIAorI2lmICFG
VExfVVNFU19CMwogICAgIENDYWxsSGVscGVyczo6TGFiZWwgZG9uZUxhYmVsOwogICAgIENDYWxs
SGVscGVyczo6SnVtcCBqdW1wVG9FbmRPZlBhdGNocG9pbnQ7CiAgICAgaWYgKGJ5dGVzU2F2ZWQp
IHsKQEAgLTgxLDE4ICs5OSwyNyBAQCB2b2lkIExhenlTbG93UGF0aDo6Z2VuZXJhdGUoQ29kZUJs
b2NrKiBjCiAgICAgICAgIG1fc2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLnJlc3RvcmVSZXVzZWRS
ZWdpc3RlcnNCeVBvcHBpbmcoaml0LCBieXRlc1NhdmVkLCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0
b3I6OkV4dHJhU3RhY2tTcGFjZTo6Tm9FeHRyYVNwYWNlKTsKICAgICAgICAganVtcFRvRW5kT2ZQ
YXRjaHBvaW50ID0gaml0Lmp1bXAoKTsKICAgICB9CisjZW5kaWYgLy8gIUZUTF9VU0VTX0IzCiAK
ICAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIodm0sIGppdCwgY29kZUJsb2NrLCBKSVRDb21waWxh
dGlvbk11c3RTdWNjZWVkKTsKKyNpZiBGVExfVVNFU19CMworICAgIGxpbmtCdWZmZXIubGluayhw
YXJhbXMuZG9uZUp1bXBzLCBtX2RvbmUpOworI2Vsc2UgLy8gRlRMX1VTRVNfQjMKICAgICBpZiAo
Ynl0ZXNTYXZlZCkgewogICAgICAgICBsaW5rQnVmZmVyLmxpbmsocGFyYW1zLmRvbmVKdW1wcywg
bGlua0J1ZmZlci5sb2NhdGlvbk9mKGRvbmVMYWJlbCkpOwogICAgICAgICBsaW5rQnVmZmVyLmxp
bmsoanVtcFRvRW5kT2ZQYXRjaHBvaW50LCBtX3BhdGNocG9pbnQubGFiZWxBdE9mZnNldChNYWNy
b0Fzc2VtYmxlcjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpKSk7CiAgICAgfSBlbHNlCiAgICAg
ICAgIGxpbmtCdWZmZXIubGluayhwYXJhbXMuZG9uZUp1bXBzLCBtX3BhdGNocG9pbnQubGFiZWxB
dE9mZnNldChNYWNyb0Fzc2VtYmxlcjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpKSk7CisjZW5k
aWYgLy8gRlRMX1VTRVNfQjMKICAgICBpZiAobV9leGNlcHRpb25UYXJnZXQpCiAgICAgICAgIGxp
bmtCdWZmZXIubGluayhleGNlcHRpb25KdW1wcywgbV9leGNlcHRpb25UYXJnZXQpOwogICAgIG1f
c3R1YiA9IEZJTkFMSVpFX0NPREVfRk9SKGNvZGVCbG9jaywgbGlua0J1ZmZlciwgKCJMYXp5IHNs
b3cgcGF0aCBjYWxsIHN0dWIiKSk7CiAKKyNpZiBGVExfVVNFU19CMworICAgIE1hY3JvQXNzZW1i
bGVyOjpyZXBhdGNoSnVtcChtX3BhdGNoYWJsZUp1bXAsIENvZGVMb2NhdGlvbkxhYmVsKG1fc3R1
Yi5jb2RlKCkpKTsKKyNlbHNlIC8vIEZUTF9VU0VTX0IzCiAgICAgTWFjcm9Bc3NlbWJsZXI6OnJl
cGxhY2VXaXRoSnVtcChtX3BhdGNocG9pbnQsIENvZGVMb2NhdGlvbkxhYmVsKG1fc3R1Yi5jb2Rl
KCkpKTsKKyNlbmRpZiAvLyBGVExfVVNFU19CMwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
RlRMCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExhenlTbG93UGF0aC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGF6eVNsb3dQYXRoLmgJ
KHJldmlzaW9uIDE5Mjg1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGF6eVNs
b3dQYXRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDEyICs2NiwyNiBAQCBwdWJsaWM6CiAgICAg
fQogICAgIAogICAgIExhenlTbG93UGF0aCgKLSAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwgcGF0
Y2hwb2ludCwgQ29kZUxvY2F0aW9uTGFiZWwgZXhjZXB0aW9uVGFyZ2V0LCBjb25zdCBSZWdpc3Rl
clNldCYgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgQ2FsbFNpdGVJbmRleCwgUmVmUHRyPEdlbmVy
YXRvcj4sIEdQUlJlZyBuZXdaZXJvUmVnLCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IpOworI2lm
IEZUTF9VU0VTX0IzCisgICAgICAgIENvZGVMb2NhdGlvbkp1bXAgcGF0Y2hhYmxlSnVtcCwgQ29k
ZUxvY2F0aW9uTGFiZWwgZG9uZSwKKyNlbHNlIC8vIEZMVF9VU0VTX0IzCisgICAgICAgIENvZGVM
b2NhdGlvbkxhYmVsIHBhdGNocG9pbnQsCisjZW5kaWYgLy8gRlRMX1VTRVNfQjMKKyAgICAgICAg
Q29kZUxvY2F0aW9uTGFiZWwgZXhjZXB0aW9uVGFyZ2V0LCBjb25zdCBSZWdpc3RlclNldCYgdXNl
ZFJlZ2lzdGVycywKKyAgICAgICAgQ2FsbFNpdGVJbmRleCwgUmVmUHRyPEdlbmVyYXRvcj4KKyNp
ZiAhRlRMX1VTRVNfQjMKKyAgICAgICAgLCBHUFJSZWcgbmV3WmVyb1JlZywgU2NyYXRjaFJlZ2lz
dGVyQWxsb2NhdG9yCisjZW5kaWYgLy8gRlRMX1VTRVNfQjMKKyAgICAgICAgKTsKIAogICAgIH5M
YXp5U2xvd1BhdGgoKTsKIAorI2lmIEZUTF9VU0VTX0IzCisgICAgQ29kZUxvY2F0aW9uSnVtcCBw
YXRjaGFibGVKdW1wKCkgY29uc3QgeyByZXR1cm4gbV9wYXRjaGFibGVKdW1wOyB9CisgICAgQ29k
ZUxvY2F0aW9uTGFiZWwgZG9uZSgpIGNvbnN0IHsgcmV0dXJuIG1fZG9uZTsgfQorI2Vsc2UgLy8g
RlRMX1VTRVNfQjMKICAgICBDb2RlTG9jYXRpb25MYWJlbCBwYXRjaHBvaW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9wYXRjaHBvaW50OyB9CisjZW5kaWYgLy8gRlRMX1VTRVNfQjMKICAgICBjb25zdCBS
ZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fdXNlZFJlZ2lzdGVy
czsgfQogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FsbFNpdGVJbmRleDsgfQogCkBAIC04MCwxNCArOTQsMjEgQEAgcHVibGljOgogICAgIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBzdHViKCkgY29uc3QgeyByZXR1cm4gbV9zdHViOyB9CiAKIHByaXZh
dGU6CisjaWYgRlRMX1VTRVNfQjMKKyAgICBDb2RlTG9jYXRpb25KdW1wIG1fcGF0Y2hhYmxlSnVt
cDsKKyAgICBDb2RlTG9jYXRpb25MYWJlbCBtX2RvbmU7CisjZWxzZSAvLyBGVExfVVNFU19CMwog
ICAgIENvZGVMb2NhdGlvbkxhYmVsIG1fcGF0Y2hwb2ludDsKKyNlbmRpZiAvLyBGVExfVVNFU19C
MwogICAgIENvZGVMb2NhdGlvbkxhYmVsIG1fZXhjZXB0aW9uVGFyZ2V0OwogICAgIFJlZ2lzdGVy
U2V0IG1fdXNlZFJlZ2lzdGVyczsKICAgICBDYWxsU2l0ZUluZGV4IG1fY2FsbFNpdGVJbmRleDsK
ICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbV9zdHViOwogICAgIFJlZlB0cjxHZW5lcmF0b3I+
IG1fZ2VuZXJhdG9yOworI2lmICFGVExfVVNFU19CMwogICAgIEdQUlJlZyBtX25ld1plcm9WYWx1
ZVJlZ2lzdGVyOwogICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBtX3NjcmF0Y2hSZWdpc3Rl
ckFsbG9jYXRvcjsKKyNlbmRpZiAvLyBGVExfVVNFU19CMwogfTsKIAogfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkZUTApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb2NhdGlvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb2NhdGlvbi5j
cHAJKHJldmlzaW9uIDE5Mjg1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG9j
YXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJM
RShGVExfSklUKQogCisjaW5jbHVkZSAiQjNWYWx1ZVJlcC5oIgogI2luY2x1ZGUgIkZUTFNhdmVS
ZXN0b3JlLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKICNpbmNsdWRlIDx3dGYvQ29tbWFQ
cmludGVyLmg+CkBAIC0zNiw2ICszNywyNSBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IEZUTCB7CiAKK3VzaW5nIG5hbWVzcGFjZSBCMzsKKworI2lmIEZUTF9VU0VTX0IzCitMb2NhdGlv
biBMb2NhdGlvbjo6Zm9yVmFsdWVSZXAoY29uc3QgVmFsdWVSZXAmIHJlcCkKK3sKKyAgICBzd2l0
Y2ggKHJlcC5raW5kKCkpIHsKKyAgICBjYXNlIFZhbHVlUmVwOjpSZWdpc3RlcjoKKyAgICAgICAg
cmV0dXJuIGZvclJlZ2lzdGVyKHJlcC5yZWcoKSwgMCk7CisgICAgY2FzZSBWYWx1ZVJlcDo6U3Rh
Y2s6CisgICAgICAgIHJldHVybiBmb3JJbmRpcmVjdChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
ciwgcmVwLm9mZnNldEZyb21GUCgpKTsKKyAgICBjYXNlIFZhbHVlUmVwOjpDb25zdGFudDoKKyAg
ICAgICAgcmV0dXJuIGZvckNvbnN0YW50KHJlcC52YWx1ZSgpKTsKKyAgICBkZWZhdWx0OgorICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gTG9jYXRp
b24oKTsKKyAgICB9Cit9CisjZW5kaWYgLy8gRlRMX1VTRVNfQjMKKwogTG9jYXRpb24gTG9jYXRp
b246OmZvclN0YWNrbWFwcyhjb25zdCBTdGFja01hcHMqIHN0YWNrbWFwcywgY29uc3QgU3RhY2tN
YXBzOjpMb2NhdGlvbiYgbG9jYXRpb24pCiB7CiAgICAgc3dpdGNoIChsb2NhdGlvbi5raW5kKSB7
CkBAIC02Niw4ICs4Niw4IEBAIExvY2F0aW9uIExvY2F0aW9uOjpmb3JTdGFja21hcHMoY29uc3Qg
U3QKIHZvaWQgTG9jYXRpb246OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBv
dXQucHJpbnQoIigiLCBraW5kKCkpOwotICAgIGlmIChoYXNEd2FyZlJlZygpKQotICAgICAgICBv
dXQucHJpbnQoIiwgIiwgZHdhcmZSZWcoKSk7CisgICAgaWYgKGhhc1JlZygpKQorICAgICAgICBv
dXQucHJpbnQoIiwgIiwgcmVnKCkpOwogICAgIGlmIChoYXNPZmZzZXQoKSkKICAgICAgICAgb3V0
LnByaW50KCIsICIsIG9mZnNldCgpKTsKICAgICBpZiAoaGFzQWRkZW5kKCkpCkBAIC04NCwyMiAr
MTA0LDIyIEBAIGJvb2wgTG9jYXRpb246Omludm9sdmVzR1BSKCkgY29uc3QKIAogYm9vbCBMb2Nh
dGlvbjo6aXNHUFIoKSBjb25zdAogewotICAgIHJldHVybiBraW5kKCkgPT0gUmVnaXN0ZXIgJiYg
ZHdhcmZSZWcoKS5yZWcoKS5pc0dQUigpOworICAgIHJldHVybiBraW5kKCkgPT0gUmVnaXN0ZXIg
JiYgcmVnKCkuaXNHUFIoKTsKIH0KIAogR1BSUmVnIExvY2F0aW9uOjpncHIoKSBjb25zdAogewot
ICAgIHJldHVybiBkd2FyZlJlZygpLnJlZygpLmdwcigpOworICAgIHJldHVybiByZWcoKS5ncHIo
KTsKIH0KIAogYm9vbCBMb2NhdGlvbjo6aXNGUFIoKSBjb25zdAogewotICAgIHJldHVybiBraW5k
KCkgPT0gUmVnaXN0ZXIgJiYgZHdhcmZSZWcoKS5yZWcoKS5pc0ZQUigpOworICAgIHJldHVybiBr
aW5kKCkgPT0gUmVnaXN0ZXIgJiYgcmVnKCkuaXNGUFIoKTsKIH0KIAogRlBSUmVnIExvY2F0aW9u
OjpmcHIoKSBjb25zdAogewotICAgIHJldHVybiBkd2FyZlJlZygpLnJlZygpLmZwcigpOworICAg
IHJldHVybiByZWcoKS5mcHIoKTsKIH0KIAogdm9pZCBMb2NhdGlvbjo6cmVzdG9yZUludG8oTWFj
cm9Bc3NlbWJsZXImIGppdCwgY2hhciogc2F2ZWRSZWdpc3RlcnMsIEdQUlJlZyByZXN1bHQsIHVu
c2lnbmVkIG51bUZyYW1lc1RvUG9wKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb2NhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG9jYXRpb24uaAkocmV2aXNpb24gMTkyODUyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb2NhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDEzICsyOCwyMSBA
QAogCiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAKKyNpbmNsdWRlICJERkdDb21tb24uaCIKICNpbmNs
dWRlICJGUFJJbmZvLmgiCiAjaW5jbHVkZSAiRlRMRFdBUkZSZWdpc3Rlci5oIgogI2luY2x1ZGUg
IkZUTFN0YWNrTWFwcy5oIgogI2luY2x1ZGUgIkdQUkluZm8uaCIKKyNpbmNsdWRlICJSZWcuaCIK
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZU
TCB7CituYW1lc3BhY2UgSlNDIHsKKworbmFtZXNwYWNlIEIzIHsKK2NsYXNzIFZhbHVlUmVwOwor
fSAvLyBuYW1lc3BhY2UgQjMKKworbmFtZXNwYWNlIEZUTCB7CiAKIGNsYXNzIExvY2F0aW9uIHsK
IHB1YmxpYzoKQEAgLTU2LDI1ICs2NCwzNSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICB1LmNv
bnN0YW50ID0gMTsKICAgICB9Ci0gICAgCi0gICAgc3RhdGljIExvY2F0aW9uIGZvclJlZ2lzdGVy
KERXQVJGUmVnaXN0ZXIgZHdhcmZSZWcsIGludDMyX3QgYWRkZW5kKQorCisgICAgc3RhdGljIExv
Y2F0aW9uIGZvclJlZ2lzdGVyKFJlZyByZWcsIGludDMyX3QgYWRkZW5kKQogICAgIHsKICAgICAg
ICAgTG9jYXRpb24gcmVzdWx0OwogICAgICAgICByZXN1bHQubV9raW5kID0gUmVnaXN0ZXI7Ci0g
ICAgICAgIHJlc3VsdC51LnZhcmlhYmxlLmR3YXJmUmVnTnVtID0gZHdhcmZSZWcuZHdhcmZSZWdO
dW0oKTsKKyAgICAgICAgcmVzdWx0LnUudmFyaWFibGUucmVnSW5kZXggPSByZWcuaW5kZXgoKTsK
ICAgICAgICAgcmVzdWx0LnUudmFyaWFibGUub2Zmc2V0ID0gYWRkZW5kOwogICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgTG9jYXRpb24gZm9ySW5kaXJlY3Qo
RFdBUkZSZWdpc3RlciBkd2FyZlJlZywgaW50MzJfdCBvZmZzZXQpCisgICAgc3RhdGljIExvY2F0
aW9uIGZvclJlZ2lzdGVyKERXQVJGUmVnaXN0ZXIgZHdhcmZSZWcsIGludDMyX3QgYWRkZW5kKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGZvclJlZ2lzdGVyKGR3YXJmUmVnLnJlZygpLCBhZGRlbmQp
OworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgTG9jYXRpb24gZm9ySW5kaXJlY3QoUmVnIHJlZywg
aW50MzJfdCBvZmZzZXQpCiAgICAgewogICAgICAgICBMb2NhdGlvbiByZXN1bHQ7CiAgICAgICAg
IHJlc3VsdC5tX2tpbmQgPSBJbmRpcmVjdDsKLSAgICAgICAgcmVzdWx0LnUudmFyaWFibGUuZHdh
cmZSZWdOdW0gPSBkd2FyZlJlZy5kd2FyZlJlZ051bSgpOworICAgICAgICByZXN1bHQudS52YXJp
YWJsZS5yZWdJbmRleCA9IHJlZy5pbmRleCgpOwogICAgICAgICByZXN1bHQudS52YXJpYWJsZS5v
ZmZzZXQgPSBvZmZzZXQ7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAorICAg
IHN0YXRpYyBMb2NhdGlvbiBmb3JJbmRpcmVjdChEV0FSRlJlZ2lzdGVyIGR3YXJmUmVnLCBpbnQz
Ml90IG9mZnNldCkKKyAgICB7CisgICAgICAgIHJldHVybiBmb3JJbmRpcmVjdChkd2FyZlJlZy5y
ZWcoKSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCiAgICAgc3RhdGljIExvY2F0aW9uIGZvckNvbnN0
YW50KGludDY0X3QgY29uc3RhbnQpCiAgICAgewogICAgICAgICBMb2NhdGlvbiByZXN1bHQ7CkBA
IC04MywyMiArMTAxLDIzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9
CiAKKyNpZiBGVExfVVNFU19CMworICAgIHN0YXRpYyBMb2NhdGlvbiBmb3JWYWx1ZVJlcChjb25z
dCBCMzo6VmFsdWVSZXAmKTsKKyNlbmRpZiAvLyBGVExfVVNFU19CMworCiAgICAgLy8gWW91IGNh
biBwYXNzIGEgbnVsbCBTdGFja01hcHMgaWYgeW91IGFyZSBjb25maWRlbnQgdGhhdCB0aGUgbG9j
YXRpb24gZG9lc24ndAogICAgIC8vIGludm9sdmUgYSB3aWRlIGNvbnN0YW50LgogICAgIHN0YXRp
YyBMb2NhdGlvbiBmb3JTdGFja21hcHMoY29uc3QgU3RhY2tNYXBzKiwgY29uc3QgU3RhY2tNYXBz
OjpMb2NhdGlvbiYpOwogICAgIAogICAgIEtpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2lu
ZDsgfQotICAgIAotICAgIGJvb2wgaGFzRHdhcmZSZWdOdW0oKSBjb25zdCB7IHJldHVybiBraW5k
KCkgPT0gUmVnaXN0ZXIgfHwga2luZCgpID09IEluZGlyZWN0OyB9Ci0gICAgaW50MTZfdCBkd2Fy
ZlJlZ051bSgpIGNvbnN0CisKKyAgICBib29sIGhhc1JlZygpIGNvbnN0IHsgcmV0dXJuIGtpbmQo
KSA9PSBSZWdpc3RlciB8fCBraW5kKCkgPT0gSW5kaXJlY3Q7IH0KKyAgICBSZWcgcmVnKCkgY29u
c3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChoYXNEd2FyZlJlZ051bSgpKTsKLSAgICAgICAgcmV0
dXJuIHUudmFyaWFibGUuZHdhcmZSZWdOdW07CisgICAgICAgIEFTU0VSVChoYXNSZWcoKSk7Cisg
ICAgICAgIHJldHVybiBSZWc6OmZyb21JbmRleCh1LnZhcmlhYmxlLnJlZ0luZGV4KTsKICAgICB9
CiAgICAgCi0gICAgYm9vbCBoYXNEd2FyZlJlZygpIGNvbnN0IHsgcmV0dXJuIGhhc0R3YXJmUmVn
TnVtKCk7IH0KLSAgICBEV0FSRlJlZ2lzdGVyIGR3YXJmUmVnKCkgY29uc3QgeyByZXR1cm4gRFdB
UkZSZWdpc3Rlcihkd2FyZlJlZ051bSgpKTsgfQotICAgIAogICAgIGJvb2wgaGFzT2Zmc2V0KCkg
Y29uc3QgeyByZXR1cm4ga2luZCgpID09IEluZGlyZWN0OyB9CiAgICAgaW50MzJfdCBvZmZzZXQo
KSBjb25zdAogICAgIHsKQEAgLTE0MiwxMSArMTYxLDExIEBAIHB1YmxpYzoKICAgICAgICAgICAg
IGJyZWFrOwogCiAgICAgICAgIGNhc2UgUmVnaXN0ZXI6Ci0gICAgICAgICAgICByZXN1bHQgXj0g
dS52YXJpYWJsZS5kd2FyZlJlZ051bTsKKyAgICAgICAgICAgIHJlc3VsdCBePSB1LnZhcmlhYmxl
LnJlZ0luZGV4OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2Fz
ZSBJbmRpcmVjdDoKLSAgICAgICAgICAgIHJlc3VsdCBePSB1LnZhcmlhYmxlLmR3YXJmUmVnTnVt
OworICAgICAgICAgICAgcmVzdWx0IF49IHUudmFyaWFibGUucmVnSW5kZXg7CiAgICAgICAgICAg
ICByZXN1bHQgXj0gdS52YXJpYWJsZS5vZmZzZXQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIApAQCAtMTgyLDcgKzIwMSw3IEBAIHByaXZhdGU6CiAgICAgdW5pb24gewogICAgICAg
ICBpbnQ2NF90IGNvbnN0YW50OwogICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgaW50MTZf
dCBkd2FyZlJlZ051bTsKKyAgICAgICAgICAgIHVuc2lnbmVkIHJlZ0luZGV4OwogICAgICAgICAg
ICAgaW50MzJfdCBvZmZzZXQ7CiAgICAgICAgIH0gdmFyaWFibGU7CiAgICAgfSB1OwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHJl
dmlzaW9uIDE5Mjg1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0xMVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw4IEBACiAKICNpZiBFTkFCTEUo
RlRMX0pJVCkKIAorI2luY2x1ZGUgIkFpckdlbmVyYXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAi
QWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrV2l0
aEpJVFR5cGUuaCIKICNpbmNsdWRlICJERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIgog
I2luY2x1ZGUgIkRGR0RvbWluYXRvcnMuaCIKQEAgLTEwMCw2ICsxMDIsNyBAQCBOT19SRVRVUk5f
RFVFX1RPX0NSQVNIIHN0YXRpYyB2b2lkIGZ0bFVuCiAgICAgfSB3aGlsZSAoZmFsc2UpCiAKIGNs
YXNzIExvd2VyREZHVG9MTFZNIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMb3dlckRGR1Rv
TExWTSk7CiBwdWJsaWM6CiAgICAgTG93ZXJERkdUb0xMVk0oU3RhdGUmIHN0YXRlKQogICAgICAg
ICA6IG1fZ3JhcGgoc3RhdGUuZ3JhcGgpCkBAIC03ODM1LDE0ICs3ODM4LDc1IEBAIHByaXZhdGU6
CiAgICAgTFZhbHVlIGxhenlTbG93UGF0aChjb25zdCBGdW5jdG9yJiBmdW5jdG9yLCBjb25zdCBW
ZWN0b3I8TFZhbHVlPiYgdXNlckFyZ3VtZW50cykKICAgICB7CiAjaWYgRlRMX1VTRVNfQjMKLSAg
ICAgICAgVU5VU0VEX1BBUkFNKGZ1bmN0b3IpOwotCisgICAgICAgIENvZGVPcmlnaW4gb3JpZ2lu
ID0gbV9ub2RlLT5vcmlnaW4uc2VtYW50aWM7CisgICAgICAgIAogICAgICAgICBCMzo6UGF0Y2hw
b2ludFZhbHVlKiByZXN1bHQgPSBtX291dC5wYXRjaHBvaW50KEIzOjpJbnQ2NCk7CiAgICAgICAg
IGZvciAoTFZhbHVlIGFyZyA6IHVzZXJBcmd1bWVudHMpCi0gICAgICAgICAgICByZXN1bHQtPmFw
cGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZywgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOworICAg
ICAgICAgICAgcmVzdWx0LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShhcmcsIEIzOjpWYWx1ZVJl
cDo6U29tZVJlZ2lzdGVyKSk7CisKKyAgICAgICAgLy8gRklYTUU6IEFzIHBhcnQgb2YgaGFuZGxp
bmcgZXhjZXB0aW9ucywgd2UgbmVlZCB0byBhcHBlbmQgT1NSIGV4aXQgc3RhdGUgaGVyZS4KKyAg
ICAgICAgCisgICAgICAgIHJlc3VsdC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNo
UmVnaXN0ZXJzKCkpOworICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKKwogICAg
ICAgICByZXN1bHQtPnNldEdlbmVyYXRvcigKLSAgICAgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJz
JiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7Ci0gICAgICAgICAg
ICAgICAgaml0Lm9vcHMoKTsKKyAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNv
bnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAg
VmVjdG9yPExvY2F0aW9uPiBsb2NhdGlvbnM7CisgICAgICAgICAgICAgICAgZm9yIChjb25zdCBC
Mzo6VmFsdWVSZXAmIHJlcCA6IHBhcmFtcy5yZXBzKQorICAgICAgICAgICAgICAgICAgICBsb2Nh
dGlvbnMuYXBwZW5kKExvY2F0aW9uOjpmb3JWYWx1ZVJlcChyZXApKTsKKworICAgICAgICAgICAg
ICAgIFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4gZ2VuZXJhdG9yID0gZnVuY3Rvcihs
b2NhdGlvbnMpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6UGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKKwor
ICAgICAgICAgICAgICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSBwYXJhbXMudXNlZFJl
Z2lzdGVyczsKKworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBBcyBwYXJ0IG9mIGhhbmRsaW5n
IGV4Y2VwdGlvbnMsIHdlIG5lZWQgdG8gY3JlYXRlIGEgY29uY3JldGUgT1NSRXhpdCBoZXJlLgor
ICAgICAgICAgICAgICAgIC8vIERvaW5nIHNvIHNob3VsZCBhdXRvbWFnaWNhbGx5IHJlZ2lzdGVy
IGxhdGUgcGF0aHMgdGhhdCBlbWl0IGV4aXQgdGh1bmtzLgorICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgIHBhcmFtcy5jb250ZXh0LT5sYXRlUGF0aHMuYXBwZW5kKAorICAgICAgICAg
ICAgICAgICAgICBjcmVhdGVTaGFyZWRUYXNrPEFpcjo6R2VuZXJhdGlvbkNvbnRleHQ6OkxhdGVQ
YXRoRnVuY3Rpb24+KAorICAgICAgICAgICAgICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMm
IGppdCwgQWlyOjpHZW5lcmF0aW9uQ29udGV4dCYpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0Y2hhYmxlSnVtcC5tX2p1bXAubGluaygmaml0
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9IHN0YXRlLT5q
aXRDb2RlLT5sYXp5U2xvd1BhdGhzLnNpemUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGF0ZS0+aml0Q29kZS0+bGF6eVNsb3dQYXRocy5hcHBlbmQobnVsbHB0cik7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaml0LnB1c2hUb1NhdmVJbW1lZGlhdGVXaXRob3V0VG91Y2hp
bmdSZWdpc3RlcnMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKGluZGV4KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpKdW1wIGdlbmVyYXRvckp1bXAgPSBqaXQuanVtcCgpOworCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHNvIGxvbmcgYXMgd2UncmUgaGVyZSwgd2Ug
ZG9uJ3QgcmVhbGx5IGtub3cgaWYgb3VyIGxhdGUgcGF0aAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHJ1bnMgYmVmb3JlIG9yIGFmdGVyIGFueSBvdGhlciBsYXRlIHBhdGhzIHRoYXQg
d2UgbWlnaHQgZGVwZW5kIG9uLCBsaWtlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
dGhlIGV4Y2VwdGlvbiB0aHVuay4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5h
ZGRMaW5rVGFzaygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWz1dIChMaW5rQnVm
ZmVyJiBsaW5rQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
aW5rQnVmZmVyLmxpbmsoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9ySnVtcCwgQ29kZUxvY2F0aW9uTGFiZWwoCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5ncmFwaC5tX3ZtLmdldENUSVN0dWIoCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXp5U2xvd1BhdGhH
ZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2Rl
TG9jYXRpb25KdW1wIGxpbmtlZFBhdGNoYWJsZUp1bXAgPSBDb2RlTG9jYXRpb25KdW1wKAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubG9jYXRpb25P
ZihwYXRjaGFibGVKdW1wKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
b2RlTG9jYXRpb25MYWJlbCBsaW5rZWREb25lID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKGRvbmUp
OworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogTmVlZCBh
IHN0b3J5IGZvciBleGNlcHRpb25zIGluIEZUTC1CMy4gVGhhdCBiYXNpY2FsbHkgbWVhbnMKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvaW5nIGEgbG9va3VwIG9mIHRo
ZSBleGNlcHRpb24gZW50cnlwb2ludCBoZXJlLiBXZSB3aWxsIGhhdmUgYW4KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9TUiBleGl0IGRhdGEgc3RydWN0dXJlIG9mIHNv
bWUgc29ydC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE2ODYKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsIGV4Y2VwdGlvblRhcmdldDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJ
bmRleCA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmpp
dENvZGUtPmNvbW1vbi5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG9yaWdpbik7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXp5U2xvd1BhdGg+IGxhenlTbG93UGF0aCA9CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxMYXp5
U2xvd1BhdGg+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
aW5rZWRQYXRjaGFibGVKdW1wLCBsaW5rZWREb25lLCBleGNlcHRpb25UYXJnZXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWRSZWdpc3RlcnMsIGNhbGxT
aXRlSW5kZXgsIGdlbmVyYXRvcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5qaXRDb2RlLT5s
YXp5U2xvd1BhdGhzLmFwcGVuZChXVEY6Om1vdmUobGF6eVNsb3dQYXRoKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICAgICAgfSkpOwog
ICAgICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAjZWxzZQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5jcHAJKHJldmlzaW9uIDE5Mjg1MikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTgwLDYgKzgwLDE1IEBAIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpzdHViVW5h
dmFpbGFibGUKICAgICByZXR1cm4gUmVnaXN0ZXJTZXQoc3BlY2lhbFJlZ2lzdGVycygpLCB2bUNh
bGxlZVNhdmVSZWdpc3RlcnMoKSk7CiB9CiAKK1JlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjptYWNy
b1NjcmF0Y2hSZWdpc3RlcnMoKQoreworI2lmIENQVShYODZfNjQpCisgICAgcmV0dXJuIFJlZ2lz
dGVyU2V0KE1hY3JvQXNzZW1ibGVyOjpzX3NjcmF0Y2hSZWdpc3Rlcik7CisjZWxzZQorICAgIHJl
dHVybiBSZWdpc3RlclNldCgpOworI2VuZGlmCit9CisKIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0
OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCkKIHsKICAgICBSZWdpc3RlclNldCByZXN1bHQ7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5oCShyZXZpc2lvbiAxOTI4NTIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNTksNiArNTksNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICBzdGF0aWMgUmVnaXN0
ZXJTZXQgdm9sYXRpbGVSZWdpc3RlcnNGb3JKU0NhbGwoKTsKICAgICBzdGF0aWMgUmVnaXN0ZXJT
ZXQgc3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCk7IC8vIFRoZSB1bmlvbiBvZiBjYWxsZWUgc2F2
ZXMgYW5kIHNwZWNpYWwgcmVnaXN0ZXJzLgorICAgIHN0YXRpYyBSZWdpc3RlclNldCBtYWNyb1Nj
cmF0Y2hSZWdpc3RlcnMoKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVnaXN0ZXJT
ZXQgYWxsR1BScygpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWdpc3RlclNldCBh
bGxGUFJzKCk7CiAgICAgc3RhdGljIFJlZ2lzdGVyU2V0IGFsbFJlZ2lzdGVycygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266326</attachid>
            <date>2015-11-30 19:37:59 -0800</date>
            <delta_ts>2015-11-30 19:43:19 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>26407</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTkyODU0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBA
CisyMDE1LTExLTMwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
RlRMIGxhenkgc2xvdyBwYXRocyBzaG91bGQgd29yayB3aXRoIEIzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE2NjcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGFkZHMgYWxsIG9mIHRoZSBnbHVl
IG5lY2Vzc2FyeSB0byBtYWtlIEZUTDo6TGF6eVNsb3dQYXRoIHdvcmsgd2l0aCBCMy4gVGhlIEIz
IGFwcHJvYWNoCisgICAgICAgIGFsbG93cyB1cyB0byBwdXQgYWxsIG9mIHRoZSBjb2RlIGluIEZU
TDo6TG93ZXJERkdUb0xMVk0sIGluc3RlYWQgb2YgaGF2aW5nIHN1cHBvcnRpbmcgZGF0YQorICAg
ICAgICBzdHJ1Y3R1cmVzIG9uIHRoZSBzaWRlIGFuZCBhIGJ1bmNoIG9mIGNvbXBsZXggY29kZSBp
biBGVExDb21waWxlLmNwcC4KKworICAgICAgICAqIGIzL0IzQ2hlY2tTcGVjaWFsLmNwcDoKKyAg
ICAgICAgKEpTQzo6QjM6OkNoZWNrU3BlY2lhbDo6Z2VuZXJhdGUpOgorICAgICAgICAqIGIzL0Iz
TG93ZXJUb0Fpci5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnJ1bik6
CisgICAgICAgICogYjMvQjNQYXRjaHBvaW50U3BlY2lhbC5jcHA6CisgICAgICAgIChKU0M6OkIz
OjpQYXRjaHBvaW50U3BlY2lhbDo6Z2VuZXJhdGUpOgorICAgICAgICAqIGIzL0IzU3RhY2ttYXBW
YWx1ZS5oOgorICAgICAgICAqIGZ0bC9GVExKU1RhaWxDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6OnJlY292ZXJ5Rm9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpKU1RhaWxDYWxsOjpl
bWl0KToKKyAgICAgICAgKiBmdGwvRlRMTGF6eVNsb3dQYXRoLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpMYXp5U2xvd1BhdGg6OkxhenlTbG93UGF0aCk6CisgICAgICAgIChKU0M6OkZUTDo6TGF6
eVNsb3dQYXRoOjpnZW5lcmF0ZSk6CisgICAgICAgICogZnRsL0ZUTExhenlTbG93UGF0aC5oOgor
ICAgICAgICAoSlNDOjpGVEw6OkxhenlTbG93UGF0aDo6Y3JlYXRlR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpMYXp5U2xvd1BhdGg6OnBhdGNoYWJsZUp1bXApOgorICAgICAgICAoSlND
OjpGVEw6OkxhenlTbG93UGF0aDo6ZG9uZSk6CisgICAgICAgIChKU0M6OkZUTDo6TGF6eVNsb3dQ
YXRoOjpwYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpMYXp5U2xvd1BhdGg6OnVzZWRS
ZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpGVEw6OkxhenlTbG93UGF0aDo6Y2FsbFNpdGVJbmRl
eCk6CisgICAgICAgIChKU0M6OkZUTDo6TGF6eVNsb3dQYXRoOjpzdHViKToKKyAgICAgICAgKiBm
dGwvRlRMTG9jYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkxvY2F0aW9uOjpmb3JWYWx1
ZVJlcCk6CisgICAgICAgIChKU0M6OkZUTDo6TG9jYXRpb246OmZvclN0YWNrbWFwcyk6CisgICAg
ICAgIChKU0M6OkZUTDo6TG9jYXRpb246OmR1bXApOgorICAgICAgICAoSlNDOjpGVEw6OkxvY2F0
aW9uOjppc0dQUik6CisgICAgICAgIChKU0M6OkZUTDo6TG9jYXRpb246Omdwcik6CisgICAgICAg
IChKU0M6OkZUTDo6TG9jYXRpb246OmlzRlBSKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb2NhdGlv
bjo6ZnByKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb2NhdGlvbjo6cmVzdG9yZUludG8pOgorICAg
ICAgICAqIGZ0bC9GVExMb2NhdGlvbi5oOgorICAgICAgICAoSlNDOjpGVEw6OkxvY2F0aW9uOjpM
b2NhdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6TG9jYXRpb246OmZvclJlZ2lzdGVyKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpMb2NhdGlvbjo6Zm9ySW5kaXJlY3QpOgorICAgICAgICAoSlNDOjpG
VEw6OkxvY2F0aW9uOjpmb3JDb25zdGFudCk6CisgICAgICAgIChKU0M6OkZUTDo6TG9jYXRpb246
OmtpbmQpOgorICAgICAgICAoSlNDOjpGVEw6OkxvY2F0aW9uOjpoYXNSZWcpOgorICAgICAgICAo
SlNDOjpGVEw6OkxvY2F0aW9uOjpyZWcpOgorICAgICAgICAoSlNDOjpGVEw6OkxvY2F0aW9uOjpo
YXNPZmZzZXQpOgorICAgICAgICAoSlNDOjpGVEw6OkxvY2F0aW9uOjpvZmZzZXQpOgorICAgICAg
ICAoSlNDOjpGVEw6OkxvY2F0aW9uOjpoYXNoKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb2NhdGlv
bjo6aGFzRHdhcmZSZWdOdW0pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6OkxvY2F0aW9u
Ojpkd2FyZlJlZ051bSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6TG9jYXRpb246Omhh
c0R3YXJmUmVnKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpMb2NhdGlvbjo6ZHdhcmZS
ZWcpOiBEZWxldGVkLgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6TG93ZXJERkdUb0xMVk0pOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmxhenlTbG93UGF0aCk6CisgICAg
ICAgICogaml0L1JlZ2lzdGVyU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OnN0
dWJVbmF2YWlsYWJsZVJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjptYWNy
b1NjcmF0Y2hSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6Y2FsbGVlU2F2
ZVJlZ2lzdGVycyk6CisgICAgICAgICogaml0L1JlZ2lzdGVyU2V0Lmg6CisKIDIwMTUtMTEtMzAg
IEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10g
U3BlZWQgdXAgQWlyIExpdmVuZXNzIEFuYWx5c2lzIG9uIFRtcHMKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0NoZWNrU3BlY2lhbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFsLmNwcAkocmV2aXNpb24gMTkyODUyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFsLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjEyLDYgKzIxMiw3IEBAIENDYWxsSGVscGVyczo6SnVtcCBDaGVja1NwZWNpYWw6Omdl
bmVyYXQKICAgICAgICAgICAgICAgICBwYXJhbXMudmFsdWUgPSB2YWx1ZTsKICAgICAgICAgICAg
ICAgICBwYXJhbXMucmVwcyA9IHJlcHM7CiAgICAgICAgICAgICAgICAgcGFyYW1zLnVzZWRSZWdp
c3RlcnMgPSB2YWx1ZS0+bV91c2VkUmVnaXN0ZXJzOworICAgICAgICAgICAgICAgIHBhcmFtcy5j
b250ZXh0ID0gJmNvbnRleHQ7CiAKICAgICAgICAgICAgICAgICB2YWx1ZS0+bV9nZW5lcmF0b3It
PnJ1bihqaXQsIHBhcmFtcyk7CiAgICAgICAgICAgICB9KSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAkocmV2aXNpb24gMTkyODUyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
OSw4ICsxMTksMTAgQEAgcHVibGljOgogCiAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0
aGUgc3VjY2Vzc29ycyBhcmUgc2V0IHVwIGNvcnJlY3RseS4KICAgICAgICAgICAgIEFTU0VSVChi
bG9jay0+c3VjY2Vzc29ycygpLnNpemUoKSA8PSAyKTsKLSAgICAgICAgICAgIGZvciAoQjM6OkJh
c2ljQmxvY2sqIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JCbG9ja3MoKSkKLSAgICAgICAg
ICAgICAgICBtX2Jsb2NrVG9CbG9ja1tibG9ja10tPnN1Y2Nlc3NvcnMoKS5hcHBlbmQobV9ibG9j
a1RvQmxvY2tbc3VjY2Vzc29yXSk7CisgICAgICAgICAgICBmb3IgKEIzOjpGcmVxdWVudGVkQmxv
Y2sgc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkgeworICAgICAgICAgICAgICAgIG1f
YmxvY2tUb0Jsb2NrW2Jsb2NrXS0+c3VjY2Vzc29ycygpLmFwcGVuZCgKKyAgICAgICAgICAgICAg
ICAgICAgQWlyOjpGcmVxdWVudGVkQmxvY2sobV9ibG9ja1RvQmxvY2tbc3VjY2Vzc29yLmJsb2Nr
KCldLCBzdWNjZXNzb3IuZnJlcXVlbmN5KCkpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQog
CiAgICAgICAgIEFpcjo6SW5zZXJ0aW9uU2V0IGluc2VydGlvblNldChtX2NvZGUpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUGF0Y2hwb2ludFNwZWNpYWwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1BhdGNocG9pbnRTcGVjaWFsLmNwcAko
cmV2aXNpb24gMTkyODUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUGF0Y2hwb2lu
dFNwZWNpYWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OSw2ICs5OSw3IEBAIENDYWxsSGVscGVy
czo6SnVtcCBQYXRjaHBvaW50U3BlY2lhbDo6Z2UKICAgICBwYXJhbXMudmFsdWUgPSB2YWx1ZTsK
ICAgICBwYXJhbXMucmVwcyA9IHJlcHM7CiAgICAgcGFyYW1zLnVzZWRSZWdpc3RlcnMgPSB2YWx1
ZS0+bV91c2VkUmVnaXN0ZXJzOworICAgIHBhcmFtcy5jb250ZXh0ID0gJmNvbnRleHQ7CiAKICAg
ICB2YWx1ZS0+bV9nZW5lcmF0b3ItPnJ1bihqaXQsIHBhcmFtcyk7CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFZhbHVlLmgJKHJldmlzaW9uIDE5Mjg1MikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwVmFsdWUuaAkod29ya2luZyBjb3B5
KQpAQCAtMzksNiArMzksMTAgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIGNs
YXNzIFN0YWNrbWFwVmFsdWU7CiAKK25hbWVzcGFjZSBBaXIgeworc3RydWN0IEdlbmVyYXRpb25D
b250ZXh0OworfQorCiBzdHJ1Y3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zIHsKICAgICAvLyBU
aGlzIGlzIHRoZSBzdGFja21hcCB2YWx1ZSB0aGF0IHdlJ3JlIGdlbmVyYXRpbmcuCiAgICAgU3Rh
Y2ttYXBWYWx1ZSogdmFsdWU7CkBAIC00OSw2ICs1Myw5IEBAIHN0cnVjdCBTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMgewogICAgIAogICAgIC8vIFRoaXMgdGVsbHMgeW91IHRoZSByZWdpc3RlcnMg
dGhhdCB3ZXJlIHVzZWQuCiAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVyczsKKworICAgIC8v
IFRoZSBBaXI6OkdlbmVyYXRpb25Db250ZXh0IGdpdmVzIHlvdSBldmVuIG1vcmUgcG93ZXIuCisg
ICAgQWlyOjpHZW5lcmF0aW9uQ29udGV4dCogY29udGV4dDsKIH07CiAKIHR5cGVkZWYgdm9pZCBT
dGFja21hcEdlbmVyYXRvckZ1bmN0aW9uKENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2Vu
ZXJhdGlvblBhcmFtcyYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKU1Rh
aWxDYWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpT
VGFpbENhbGwuY3BwCShyZXZpc2lvbiAxOTI4NTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTEpTVGFpbENhbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSwxMSArNzEsMTEgQEAg
VmFsdWVSZWNvdmVyeSByZWNvdmVyeUZvcihjb25zdCBFeGl0VmFsdQogICAgICAgICBzd2l0Y2gg
KGxvY2F0aW9uLmtpbmQoKSkgewogICAgICAgICBjYXNlIExvY2F0aW9uOjpSZWdpc3RlcjoKICAg
ICAgICAgICAgIC8vIFdlIGhhbmRsZSB0aGUgYWRkZW5kIG91dHNpZGUKLSAgICAgICAgICAgIHJl
dHVybiBWYWx1ZVJlY292ZXJ5OjppblJlZ2lzdGVyKGxvY2F0aW9uLmR3YXJmUmVnKCkucmVnKCks
IGZvcm1hdCk7CisgICAgICAgICAgICByZXR1cm4gVmFsdWVSZWNvdmVyeTo6aW5SZWdpc3Rlcihs
b2NhdGlvbi5yZWcoKSwgZm9ybWF0KTsKIAogICAgICAgICBjYXNlIExvY2F0aW9uOjpJbmRpcmVj
dDoKICAgICAgICAgICAgIC8vIE9oIExMVk0sIHlvdSBjcmF6eS4uLgotICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQobG9jYXRpb24uZHdhcmZSZWcoKS5yZWcoKSA9PSBSZWcoTWFjcm9Bc3NlbWJs
ZXI6OmZyYW1lUG9pbnRlclJlZ2lzdGVyKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChs
b2NhdGlvbi5yZWcoKSA9PSBSZWcoTWFjcm9Bc3NlbWJsZXI6OmZyYW1lUG9pbnRlclJlZ2lzdGVy
KSk7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghKGxvY2F0aW9uLm9mZnNldCgpICUgc2l6
ZW9mKHZvaWQqKSkpOwogICAgICAgICAgICAgLy8gRGF0YUZvcm1hdEludDMyIGFuZCBEYXRhRm9y
bWF0Qm9vbGVhbiBzaG91bGQgYmUgYWxyZWFkeSBiZSBib3hlZC4KICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGZvcm1hdCAhPSBEYXRhRm9ybWF0SW50MzIgJiYgZm9ybWF0ICE9IERhdGFGb3Jt
YXRCb29sZWFuKTsKQEAgLTI2Myw3ICsyNjMsNyBAQCB2b2lkIEpTVGFpbENhbGw6OmVtaXQoSklU
Q29kZSYgaml0Q29kZSwgCiAgICAgICAgIHNodWZmbGVEYXRhLmFyZ3NbaV0gPSByZWNvdmVyeUZv
cihtX2FyZ3VtZW50c1tpXSwgKnJlY29yZCwgaml0Q29kZS5zdGFja21hcHMpOwogICAgICAgICBp
ZiAoRlRMOjpMb2NhdGlvbiBhZGRlbmQgPSBnZXRSZWdpc3RlcldpdGhBZGRlbmQobV9hcmd1bWVu
dHNbaV0sICpyZWNvcmQsIGppdENvZGUuc3RhY2ttYXBzKSkgewogICAgICAgICAgICAgd2l0aEFk
ZGVuZC5hZGQoCi0gICAgICAgICAgICAgICAgYWRkZW5kLmR3YXJmUmVnKCkucmVnKCksCisgICAg
ICAgICAgICAgICAgYWRkZW5kLnJlZygpLAogICAgICAgICAgICAgICAgIFZlY3RvcjxzdGQ6OnBh
aXI8VmFsdWVSZWNvdmVyeSosIGludDMyX3Q+PigpKS5pdGVyYXRvci0+dmFsdWUuYXBwZW5kKAog
ICAgICAgICAgICAgICAgICAgICBzdGQ6Om1ha2VfcGFpcigmc2h1ZmZsZURhdGEuYXJnc1tpXSwg
YWRkZW5kLmFkZGVuZCgpKSk7CiAgICAgICAgICAgICBudW1BZGRlbmRzKys7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExhenlTbG93UGF0aC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMYXp5U2xvd1BhdGguY3BwCShyZXZpc2lvbiAx
OTI4NTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExhenlTbG93UGF0aC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM0LDE2ICszNCwzMSBAQAogbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBGVEwgewogCiBMYXp5U2xvd1BhdGg6OkxhenlTbG93UGF0aCgKLSAgICBDb2RlTG9jYXRp
b25MYWJlbCBwYXRjaHBvaW50LCBDb2RlTG9jYXRpb25MYWJlbCBleGNlcHRpb25UYXJnZXQsCi0g
ICAgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhbGxTaXRlSW5kZXggY2FsbFNp
dGVJbmRleCwgUmVmUHRyPEdlbmVyYXRvcj4gZ2VuZXJhdG9yLAotICAgIEdQUlJlZyBuZXdaZXJv
UmVnLCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3Igc2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yKQor
I2lmIEZUTF9VU0VTX0IzCisgICAgQ29kZUxvY2F0aW9uSnVtcCBwYXRjaGFibGVKdW1wLCBDb2Rl
TG9jYXRpb25MYWJlbCBkb25lLAorI2Vsc2UgLy8gRlRMX1VTRVNfQjMKKyAgICBDb2RlTG9jYXRp
b25MYWJlbCBwYXRjaHBvaW50LAorI2VuZGlmIC8vIEZUTF9VU0VTX0IzCisgICAgQ29kZUxvY2F0
aW9uTGFiZWwgZXhjZXB0aW9uVGFyZ2V0LAorICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVn
aXN0ZXJzLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIFJlZlB0cjxHZW5lcmF0b3I+IGdl
bmVyYXRvcgorI2lmICFGVExfVVNFU19CMworICAgICwgR1BSUmVnIG5ld1plcm9SZWcsIFNjcmF0
Y2hSZWdpc3RlckFsbG9jYXRvciBzY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IKKyNlbmRpZiAvLyAh
RlRMX1VTRVNfQjMKKyAgICApCisjaWYgRlRMX1VTRVNfQjMKKyAgICA6IG1fcGF0Y2hhYmxlSnVt
cChwYXRjaGFibGVKdW1wKQorICAgICwgbV9kb25lKGRvbmUpCisjZWxzZSAvLyBGVExfVVNFU19C
MwogICAgIDogbV9wYXRjaHBvaW50KHBhdGNocG9pbnQpCisjZW5kaWYgLy8gRlRMX1VTRVNfQjMK
ICAgICAsIG1fZXhjZXB0aW9uVGFyZ2V0KGV4Y2VwdGlvblRhcmdldCkKICAgICAsIG1fdXNlZFJl
Z2lzdGVycyh1c2VkUmVnaXN0ZXJzKQogICAgICwgbV9jYWxsU2l0ZUluZGV4KGNhbGxTaXRlSW5k
ZXgpCiAgICAgLCBtX2dlbmVyYXRvcihnZW5lcmF0b3IpCisjaWYgIUZUTF9VU0VTX0IzCiAgICAg
LCBtX25ld1plcm9WYWx1ZVJlZ2lzdGVyKG5ld1plcm9SZWcpCiAgICAgLCBtX3NjcmF0Y2hSZWdp
c3RlckFsbG9jYXRvcihzY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IpCisjZW5kaWYgLy8gIUZUTF9V
U0VTX0IzCiB7CiB9CiAKQEAgLTYzLDYgKzc4LDcgQEAgdm9pZCBMYXp5U2xvd1BhdGg6OmdlbmVy
YXRlKENvZGVCbG9jayogYwogICAgIHBhcmFtcy5leGNlcHRpb25KdW1wcyA9IG1fZXhjZXB0aW9u
VGFyZ2V0ID8gJmV4Y2VwdGlvbkp1bXBzIDogbnVsbHB0cjsKICAgICBwYXJhbXMubGF6eVNsb3dQ
YXRoID0gdGhpczsKIAorI2lmICFGVExfVVNFU19CMwogICAgIHVuc2lnbmVkIGJ5dGVzU2F2ZWQg
PSBtX3NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5wcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVz
aGluZyhqaXQsIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6RXh0cmFTdGFja1NwYWNlOjpOb0V4
dHJhU3BhY2UpOwogICAgIC8vIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2UgTExWTSBtYXkgY3JlYXRl
IGEgc3RhY2ttYXAgbG9jYXRpb24gdGhhdCBpcyB0aGUgcmVnaXN0ZXIgU1AuCiAgICAgLy8gQnV0
IG9uIGFybTY0LCBTUCBpcyBhbHNvIHRoZSBzYW1lIHJlZ2lzdGVyIG51bWJlciBhcyBaUiwgc28g
TExWTSBpcyB0ZWxsaW5nIHVzIHRoYXQgaXQgaGFzCkBAIC03MSw5ICs4NywxMSBAQCB2b2lkIExh
enlTbG93UGF0aDo6Z2VuZXJhdGUoQ29kZUJsb2NrKiBjCiAgICAgLy8gaW50byBhIG5vbi1TUCBy
ZWdpc3Rlci4KICAgICBpZiAobV9uZXdaZXJvVmFsdWVSZWdpc3RlciAhPSBJbnZhbGlkR1BSUmVn
KQogICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSwgbV9uZXda
ZXJvVmFsdWVSZWdpc3Rlcik7CisjZW5kaWYgLy8gIUZUTF9VU0VTX0IzCiAKICAgICBtX2dlbmVy
YXRvci0+cnVuKGppdCwgcGFyYW1zKTsKIAorI2lmICFGVExfVVNFU19CMwogICAgIENDYWxsSGVs
cGVyczo6TGFiZWwgZG9uZUxhYmVsOwogICAgIENDYWxsSGVscGVyczo6SnVtcCBqdW1wVG9FbmRP
ZlBhdGNocG9pbnQ7CiAgICAgaWYgKGJ5dGVzU2F2ZWQpIHsKQEAgLTgxLDE4ICs5OSwyNyBAQCB2
b2lkIExhenlTbG93UGF0aDo6Z2VuZXJhdGUoQ29kZUJsb2NrKiBjCiAgICAgICAgIG1fc2NyYXRj
aFJlZ2lzdGVyQWxsb2NhdG9yLnJlc3RvcmVSZXVzZWRSZWdpc3RlcnNCeVBvcHBpbmcoaml0LCBi
eXRlc1NhdmVkLCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OkV4dHJhU3RhY2tTcGFjZTo6Tm9F
eHRyYVNwYWNlKTsKICAgICAgICAganVtcFRvRW5kT2ZQYXRjaHBvaW50ID0gaml0Lmp1bXAoKTsK
ICAgICB9CisjZW5kaWYgLy8gIUZUTF9VU0VTX0IzCiAKICAgICBMaW5rQnVmZmVyIGxpbmtCdWZm
ZXIodm0sIGppdCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbk11c3RTdWNjZWVkKTsKKyNpZiBG
VExfVVNFU19CMworICAgIGxpbmtCdWZmZXIubGluayhwYXJhbXMuZG9uZUp1bXBzLCBtX2RvbmUp
OworI2Vsc2UgLy8gRlRMX1VTRVNfQjMKICAgICBpZiAoYnl0ZXNTYXZlZCkgewogICAgICAgICBs
aW5rQnVmZmVyLmxpbmsocGFyYW1zLmRvbmVKdW1wcywgbGlua0J1ZmZlci5sb2NhdGlvbk9mKGRv
bmVMYWJlbCkpOwogICAgICAgICBsaW5rQnVmZmVyLmxpbmsoanVtcFRvRW5kT2ZQYXRjaHBvaW50
LCBtX3BhdGNocG9pbnQubGFiZWxBdE9mZnNldChNYWNyb0Fzc2VtYmxlcjo6bWF4SnVtcFJlcGxh
Y2VtZW50U2l6ZSgpKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGxpbmtCdWZmZXIubGluayhwYXJh
bXMuZG9uZUp1bXBzLCBtX3BhdGNocG9pbnQubGFiZWxBdE9mZnNldChNYWNyb0Fzc2VtYmxlcjo6
bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpKSk7CisjZW5kaWYgLy8gRlRMX1VTRVNfQjMKICAgICBp
ZiAobV9leGNlcHRpb25UYXJnZXQpCiAgICAgICAgIGxpbmtCdWZmZXIubGluayhleGNlcHRpb25K
dW1wcywgbV9leGNlcHRpb25UYXJnZXQpOwogICAgIG1fc3R1YiA9IEZJTkFMSVpFX0NPREVfRk9S
KGNvZGVCbG9jaywgbGlua0J1ZmZlciwgKCJMYXp5IHNsb3cgcGF0aCBjYWxsIHN0dWIiKSk7CiAK
KyNpZiBGVExfVVNFU19CMworICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChtX3BhdGNo
YWJsZUp1bXAsIENvZGVMb2NhdGlvbkxhYmVsKG1fc3R1Yi5jb2RlKCkpKTsKKyNlbHNlIC8vIEZU
TF9VU0VTX0IzCiAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVtcChtX3BhdGNocG9p
bnQsIENvZGVMb2NhdGlvbkxhYmVsKG1fc3R1Yi5jb2RlKCkpKTsKKyNlbmRpZiAvLyBGVExfVVNF
U19CMwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExhenlTbG93UGF0aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTGF6eVNsb3dQYXRoLmgJKHJldmlzaW9uIDE5Mjg1MikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGF6eVNsb3dQYXRoLmgJKHdvcmtpbmcgY29weSkK
QEAgLTY2LDEyICs2NiwyNiBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIExhenlTbG93UGF0
aCgKLSAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwgcGF0Y2hwb2ludCwgQ29kZUxvY2F0aW9uTGFi
ZWwgZXhjZXB0aW9uVGFyZ2V0LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKLSAg
ICAgICAgQ2FsbFNpdGVJbmRleCwgUmVmUHRyPEdlbmVyYXRvcj4sIEdQUlJlZyBuZXdaZXJvUmVn
LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IpOworI2lmIEZUTF9VU0VTX0IzCisgICAgICAgIENv
ZGVMb2NhdGlvbkp1bXAgcGF0Y2hhYmxlSnVtcCwgQ29kZUxvY2F0aW9uTGFiZWwgZG9uZSwKKyNl
bHNlIC8vIEZMVF9VU0VTX0IzCisgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsIHBhdGNocG9pbnQs
CisjZW5kaWYgLy8gRlRMX1VTRVNfQjMKKyAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwgZXhjZXB0
aW9uVGFyZ2V0LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgQ2Fs
bFNpdGVJbmRleCwgUmVmUHRyPEdlbmVyYXRvcj4KKyNpZiAhRlRMX1VTRVNfQjMKKyAgICAgICAg
LCBHUFJSZWcgbmV3WmVyb1JlZywgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yCisjZW5kaWYgLy8g
RlRMX1VTRVNfQjMKKyAgICAgICAgKTsKIAogICAgIH5MYXp5U2xvd1BhdGgoKTsKIAorI2lmIEZU
TF9VU0VTX0IzCisgICAgQ29kZUxvY2F0aW9uSnVtcCBwYXRjaGFibGVKdW1wKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYXRjaGFibGVKdW1wOyB9CisgICAgQ29kZUxvY2F0aW9uTGFiZWwgZG9uZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZG9uZTsgfQorI2Vsc2UgLy8gRlRMX1VTRVNfQjMKICAgICBDb2RlTG9j
YXRpb25MYWJlbCBwYXRjaHBvaW50KCkgY29uc3QgeyByZXR1cm4gbV9wYXRjaHBvaW50OyB9Cisj
ZW5kaWYgLy8gRlRMX1VTRVNfQjMKICAgICBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVy
cygpIGNvbnN0IHsgcmV0dXJuIG1fdXNlZFJlZ2lzdGVyczsgfQogICAgIENhbGxTaXRlSW5kZXgg
Y2FsbFNpdGVJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbFNpdGVJbmRleDsgfQogCkBAIC04
MCwxNCArOTQsMjEgQEAgcHVibGljOgogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBzdHViKCkg
Y29uc3QgeyByZXR1cm4gbV9zdHViOyB9CiAKIHByaXZhdGU6CisjaWYgRlRMX1VTRVNfQjMKKyAg
ICBDb2RlTG9jYXRpb25KdW1wIG1fcGF0Y2hhYmxlSnVtcDsKKyAgICBDb2RlTG9jYXRpb25MYWJl
bCBtX2RvbmU7CisjZWxzZSAvLyBGVExfVVNFU19CMwogICAgIENvZGVMb2NhdGlvbkxhYmVsIG1f
cGF0Y2hwb2ludDsKKyNlbmRpZiAvLyBGVExfVVNFU19CMwogICAgIENvZGVMb2NhdGlvbkxhYmVs
IG1fZXhjZXB0aW9uVGFyZ2V0OwogICAgIFJlZ2lzdGVyU2V0IG1fdXNlZFJlZ2lzdGVyczsKICAg
ICBDYWxsU2l0ZUluZGV4IG1fY2FsbFNpdGVJbmRleDsKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgbV9zdHViOwogICAgIFJlZlB0cjxHZW5lcmF0b3I+IG1fZ2VuZXJhdG9yOworI2lmICFGVExf
VVNFU19CMwogICAgIEdQUlJlZyBtX25ld1plcm9WYWx1ZVJlZ2lzdGVyOwogICAgIFNjcmF0Y2hS
ZWdpc3RlckFsbG9jYXRvciBtX3NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjsKKyNlbmRpZiAvLyBG
VExfVVNFU19CMwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb2NhdGlvbi5jcHAJKHJldmlzaW9uIDE5Mjg1MikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShGVExfSklUKQogCisjaW5jbHVkZSAi
QjNWYWx1ZVJlcC5oIgogI2luY2x1ZGUgIkZUTFNhdmVSZXN0b3JlLmgiCiAjaW5jbHVkZSAiUmVn
aXN0ZXJTZXQuaCIKICNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CkBAIC0zNiw2ICszNywy
NSBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKK3VzaW5nIG5hbWVzcGFj
ZSBCMzsKKworI2lmIEZUTF9VU0VTX0IzCitMb2NhdGlvbiBMb2NhdGlvbjo6Zm9yVmFsdWVSZXAo
Y29uc3QgVmFsdWVSZXAmIHJlcCkKK3sKKyAgICBzd2l0Y2ggKHJlcC5raW5kKCkpIHsKKyAgICBj
YXNlIFZhbHVlUmVwOjpSZWdpc3RlcjoKKyAgICAgICAgcmV0dXJuIGZvclJlZ2lzdGVyKHJlcC5y
ZWcoKSwgMCk7CisgICAgY2FzZSBWYWx1ZVJlcDo6U3RhY2s6CisgICAgICAgIHJldHVybiBmb3JJ
bmRpcmVjdChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgcmVwLm9mZnNldEZyb21GUCgpKTsK
KyAgICBjYXNlIFZhbHVlUmVwOjpDb25zdGFudDoKKyAgICAgICAgcmV0dXJuIGZvckNvbnN0YW50
KHJlcC52YWx1ZSgpKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gTG9jYXRpb24oKTsKKyAgICB9Cit9CisjZW5kaWYg
Ly8gRlRMX1VTRVNfQjMKKwogTG9jYXRpb24gTG9jYXRpb246OmZvclN0YWNrbWFwcyhjb25zdCBT
dGFja01hcHMqIHN0YWNrbWFwcywgY29uc3QgU3RhY2tNYXBzOjpMb2NhdGlvbiYgbG9jYXRpb24p
CiB7CiAgICAgc3dpdGNoIChsb2NhdGlvbi5raW5kKSB7CkBAIC02Niw4ICs4Niw4IEBAIExvY2F0
aW9uIExvY2F0aW9uOjpmb3JTdGFja21hcHMoY29uc3QgU3QKIHZvaWQgTG9jYXRpb246OmR1bXAo
UHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBvdXQucHJpbnQoIigiLCBraW5kKCkpOwot
ICAgIGlmIChoYXNEd2FyZlJlZygpKQotICAgICAgICBvdXQucHJpbnQoIiwgIiwgZHdhcmZSZWco
KSk7CisgICAgaWYgKGhhc1JlZygpKQorICAgICAgICBvdXQucHJpbnQoIiwgIiwgcmVnKCkpOwog
ICAgIGlmIChoYXNPZmZzZXQoKSkKICAgICAgICAgb3V0LnByaW50KCIsICIsIG9mZnNldCgpKTsK
ICAgICBpZiAoaGFzQWRkZW5kKCkpCkBAIC04NCwyMiArMTA0LDIyIEBAIGJvb2wgTG9jYXRpb246
Omludm9sdmVzR1BSKCkgY29uc3QKIAogYm9vbCBMb2NhdGlvbjo6aXNHUFIoKSBjb25zdAogewot
ICAgIHJldHVybiBraW5kKCkgPT0gUmVnaXN0ZXIgJiYgZHdhcmZSZWcoKS5yZWcoKS5pc0dQUigp
OworICAgIHJldHVybiBraW5kKCkgPT0gUmVnaXN0ZXIgJiYgcmVnKCkuaXNHUFIoKTsKIH0KIAog
R1BSUmVnIExvY2F0aW9uOjpncHIoKSBjb25zdAogewotICAgIHJldHVybiBkd2FyZlJlZygpLnJl
ZygpLmdwcigpOworICAgIHJldHVybiByZWcoKS5ncHIoKTsKIH0KIAogYm9vbCBMb2NhdGlvbjo6
aXNGUFIoKSBjb25zdAogewotICAgIHJldHVybiBraW5kKCkgPT0gUmVnaXN0ZXIgJiYgZHdhcmZS
ZWcoKS5yZWcoKS5pc0ZQUigpOworICAgIHJldHVybiBraW5kKCkgPT0gUmVnaXN0ZXIgJiYgcmVn
KCkuaXNGUFIoKTsKIH0KIAogRlBSUmVnIExvY2F0aW9uOjpmcHIoKSBjb25zdAogewotICAgIHJl
dHVybiBkd2FyZlJlZygpLnJlZygpLmZwcigpOworICAgIHJldHVybiByZWcoKS5mcHIoKTsKIH0K
IAogdm9pZCBMb2NhdGlvbjo6cmVzdG9yZUludG8oTWFjcm9Bc3NlbWJsZXImIGppdCwgY2hhciog
c2F2ZWRSZWdpc3RlcnMsIEdQUlJlZyByZXN1bHQsIHVuc2lnbmVkIG51bUZyYW1lc1RvUG9wKSBj
b25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb2NhdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG9jYXRpb24uaAkocmV2aXNp
b24gMTkyODUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb2NhdGlvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDEzICsyOCwyMSBAQAogCiAjaWYgRU5BQkxFKEZUTF9KSVQp
CiAKKyNpbmNsdWRlICJERkdDb21tb24uaCIKICNpbmNsdWRlICJGUFJJbmZvLmgiCiAjaW5jbHVk
ZSAiRlRMRFdBUkZSZWdpc3Rlci5oIgogI2luY2x1ZGUgIkZUTFN0YWNrTWFwcy5oIgogI2luY2x1
ZGUgIkdQUkluZm8uaCIKKyNpbmNsdWRlICJSZWcuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CituYW1lc3BhY2UgSlNDIHsKKwor
bmFtZXNwYWNlIEIzIHsKK2NsYXNzIFZhbHVlUmVwOworfSAvLyBuYW1lc3BhY2UgQjMKKworbmFt
ZXNwYWNlIEZUTCB7CiAKIGNsYXNzIExvY2F0aW9uIHsKIHB1YmxpYzoKQEAgLTU2LDI1ICs2NCwz
NSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICB1LmNvbnN0YW50ID0gMTsKICAgICB9Ci0gICAg
Ci0gICAgc3RhdGljIExvY2F0aW9uIGZvclJlZ2lzdGVyKERXQVJGUmVnaXN0ZXIgZHdhcmZSZWcs
IGludDMyX3QgYWRkZW5kKQorCisgICAgc3RhdGljIExvY2F0aW9uIGZvclJlZ2lzdGVyKFJlZyBy
ZWcsIGludDMyX3QgYWRkZW5kKQogICAgIHsKICAgICAgICAgTG9jYXRpb24gcmVzdWx0OwogICAg
ICAgICByZXN1bHQubV9raW5kID0gUmVnaXN0ZXI7Ci0gICAgICAgIHJlc3VsdC51LnZhcmlhYmxl
LmR3YXJmUmVnTnVtID0gZHdhcmZSZWcuZHdhcmZSZWdOdW0oKTsKKyAgICAgICAgcmVzdWx0LnUu
dmFyaWFibGUucmVnSW5kZXggPSByZWcuaW5kZXgoKTsKICAgICAgICAgcmVzdWx0LnUudmFyaWFi
bGUub2Zmc2V0ID0gYWRkZW5kOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAK
LSAgICBzdGF0aWMgTG9jYXRpb24gZm9ySW5kaXJlY3QoRFdBUkZSZWdpc3RlciBkd2FyZlJlZywg
aW50MzJfdCBvZmZzZXQpCisgICAgc3RhdGljIExvY2F0aW9uIGZvclJlZ2lzdGVyKERXQVJGUmVn
aXN0ZXIgZHdhcmZSZWcsIGludDMyX3QgYWRkZW5kKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZv
clJlZ2lzdGVyKGR3YXJmUmVnLnJlZygpLCBhZGRlbmQpOworICAgIH0KKyAgICAKKyAgICBzdGF0
aWMgTG9jYXRpb24gZm9ySW5kaXJlY3QoUmVnIHJlZywgaW50MzJfdCBvZmZzZXQpCiAgICAgewog
ICAgICAgICBMb2NhdGlvbiByZXN1bHQ7CiAgICAgICAgIHJlc3VsdC5tX2tpbmQgPSBJbmRpcmVj
dDsKLSAgICAgICAgcmVzdWx0LnUudmFyaWFibGUuZHdhcmZSZWdOdW0gPSBkd2FyZlJlZy5kd2Fy
ZlJlZ051bSgpOworICAgICAgICByZXN1bHQudS52YXJpYWJsZS5yZWdJbmRleCA9IHJlZy5pbmRl
eCgpOwogICAgICAgICByZXN1bHQudS52YXJpYWJsZS5vZmZzZXQgPSBvZmZzZXQ7CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAorICAgIHN0YXRpYyBMb2NhdGlvbiBmb3JJbmRp
cmVjdChEV0FSRlJlZ2lzdGVyIGR3YXJmUmVnLCBpbnQzMl90IG9mZnNldCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBmb3JJbmRpcmVjdChkd2FyZlJlZy5yZWcoKSwgb2Zmc2V0KTsKKyAgICB9Cisg
ICAgCiAgICAgc3RhdGljIExvY2F0aW9uIGZvckNvbnN0YW50KGludDY0X3QgY29uc3RhbnQpCiAg
ICAgewogICAgICAgICBMb2NhdGlvbiByZXN1bHQ7CkBAIC04MywyMiArMTAxLDIzIEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyNpZiBGVExfVVNFU19CMworICAg
IHN0YXRpYyBMb2NhdGlvbiBmb3JWYWx1ZVJlcChjb25zdCBCMzo6VmFsdWVSZXAmKTsKKyNlbmRp
ZiAvLyBGVExfVVNFU19CMworCiAgICAgLy8gWW91IGNhbiBwYXNzIGEgbnVsbCBTdGFja01hcHMg
aWYgeW91IGFyZSBjb25maWRlbnQgdGhhdCB0aGUgbG9jYXRpb24gZG9lc24ndAogICAgIC8vIGlu
dm9sdmUgYSB3aWRlIGNvbnN0YW50LgogICAgIHN0YXRpYyBMb2NhdGlvbiBmb3JTdGFja21hcHMo
Y29uc3QgU3RhY2tNYXBzKiwgY29uc3QgU3RhY2tNYXBzOjpMb2NhdGlvbiYpOwogICAgIAogICAg
IEtpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQotICAgIAotICAgIGJvb2wgaGFz
RHdhcmZSZWdOdW0oKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gUmVnaXN0ZXIgfHwga2luZCgp
ID09IEluZGlyZWN0OyB9Ci0gICAgaW50MTZfdCBkd2FyZlJlZ051bSgpIGNvbnN0CisKKyAgICBi
b29sIGhhc1JlZygpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBSZWdpc3RlciB8fCBraW5kKCkg
PT0gSW5kaXJlY3Q7IH0KKyAgICBSZWcgcmVnKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VS
VChoYXNEd2FyZlJlZ051bSgpKTsKLSAgICAgICAgcmV0dXJuIHUudmFyaWFibGUuZHdhcmZSZWdO
dW07CisgICAgICAgIEFTU0VSVChoYXNSZWcoKSk7CisgICAgICAgIHJldHVybiBSZWc6OmZyb21J
bmRleCh1LnZhcmlhYmxlLnJlZ0luZGV4KTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBoYXNEd2Fy
ZlJlZygpIGNvbnN0IHsgcmV0dXJuIGhhc0R3YXJmUmVnTnVtKCk7IH0KLSAgICBEV0FSRlJlZ2lz
dGVyIGR3YXJmUmVnKCkgY29uc3QgeyByZXR1cm4gRFdBUkZSZWdpc3Rlcihkd2FyZlJlZ051bSgp
KTsgfQotICAgIAogICAgIGJvb2wgaGFzT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09
IEluZGlyZWN0OyB9CiAgICAgaW50MzJfdCBvZmZzZXQoKSBjb25zdAogICAgIHsKQEAgLTE0Miwx
MSArMTYxLDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
UmVnaXN0ZXI6Ci0gICAgICAgICAgICByZXN1bHQgXj0gdS52YXJpYWJsZS5kd2FyZlJlZ051bTsK
KyAgICAgICAgICAgIHJlc3VsdCBePSB1LnZhcmlhYmxlLnJlZ0luZGV4OwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBJbmRpcmVjdDoKLSAgICAgICAgICAg
IHJlc3VsdCBePSB1LnZhcmlhYmxlLmR3YXJmUmVnTnVtOworICAgICAgICAgICAgcmVzdWx0IF49
IHUudmFyaWFibGUucmVnSW5kZXg7CiAgICAgICAgICAgICByZXN1bHQgXj0gdS52YXJpYWJsZS5v
ZmZzZXQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIApAQCAtMTgyLDcgKzIwMSw3
IEBAIHByaXZhdGU6CiAgICAgdW5pb24gewogICAgICAgICBpbnQ2NF90IGNvbnN0YW50OwogICAg
ICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgaW50MTZfdCBkd2FyZlJlZ051bTsKKyAgICAgICAg
ICAgIHVuc2lnbmVkIHJlZ0luZGV4OwogICAgICAgICAgICAgaW50MzJfdCBvZmZzZXQ7CiAgICAg
ICAgIH0gdmFyaWFibGU7CiAgICAgfSB1OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvTExWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHJldmlzaW9uIDE5Mjg1MikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw2ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoRlRMX0pJVCkKIAorI2luY2x1ZGUgIkFp
ckdlbmVyYXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3Rl
clVzYWdlLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrV2l0aEpJVFR5cGUuaCIKICNpbmNsdWRlICJE
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkRGR0RvbWluYXRvcnMu
aCIKQEAgLTEwMCw2ICsxMDIsNyBAQCBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHN0YXRpYyB2b2lk
IGZ0bFVuCiAgICAgfSB3aGlsZSAoZmFsc2UpCiAKIGNsYXNzIExvd2VyREZHVG9MTFZNIHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShMb3dlckRGR1RvTExWTSk7CiBwdWJsaWM6CiAgICAgTG93
ZXJERkdUb0xMVk0oU3RhdGUmIHN0YXRlKQogICAgICAgICA6IG1fZ3JhcGgoc3RhdGUuZ3JhcGgp
CkBAIC03ODM1LDE0ICs3ODM4LDc4IEBAIHByaXZhdGU6CiAgICAgTFZhbHVlIGxhenlTbG93UGF0
aChjb25zdCBGdW5jdG9yJiBmdW5jdG9yLCBjb25zdCBWZWN0b3I8TFZhbHVlPiYgdXNlckFyZ3Vt
ZW50cykKICAgICB7CiAjaWYgRlRMX1VTRVNfQjMKLSAgICAgICAgVU5VU0VEX1BBUkFNKGZ1bmN0
b3IpOwotCisgICAgICAgIENvZGVPcmlnaW4gb3JpZ2luID0gbV9ub2RlLT5vcmlnaW4uc2VtYW50
aWM7CisgICAgICAgIAogICAgICAgICBCMzo6UGF0Y2hwb2ludFZhbHVlKiByZXN1bHQgPSBtX291
dC5wYXRjaHBvaW50KEIzOjpJbnQ2NCk7CiAgICAgICAgIGZvciAoTFZhbHVlIGFyZyA6IHVzZXJB
cmd1bWVudHMpCi0gICAgICAgICAgICByZXN1bHQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFy
ZywgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOworICAgICAgICAgICAgcmVzdWx0LT5hcHBlbmQo
Q29uc3RyYWluZWRWYWx1ZShhcmcsIEIzOjpWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7CisKKyAg
ICAgICAgLy8gRklYTUU6IEFzIHBhcnQgb2YgaGFuZGxpbmcgZXhjZXB0aW9ucywgd2UgbmVlZCB0
byBhcHBlbmQgT1NSIGV4aXQgc3RhdGUgaGVyZS4KKyAgICAgICAgCisgICAgICAgIHJlc3VsdC0+
Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBT
dGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKKwogICAgICAgICByZXN1bHQtPnNldEdlbmVyYXRv
cigKLSAgICAgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21h
cEdlbmVyYXRpb25QYXJhbXMmKSB7Ci0gICAgICAgICAgICAgICAgaml0Lm9vcHMoKTsKKyAgICAg
ICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBh
cmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgVmVjdG9yPExvY2F0aW9uPiBsb2NhdGlv
bnM7CisgICAgICAgICAgICAgICAgZm9yIChjb25zdCBCMzo6VmFsdWVSZXAmIHJlcCA6IHBhcmFt
cy5yZXBzKQorICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbnMuYXBwZW5kKExvY2F0aW9uOjpm
b3JWYWx1ZVJlcChyZXApKTsKKworICAgICAgICAgICAgICAgIFJlZlB0cjxMYXp5U2xvd1BhdGg6
OkdlbmVyYXRvcj4gZ2VuZXJhdG9yID0gZnVuY3Rvcihsb2NhdGlvbnMpOworICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6UGF0Y2hhYmxlSnVtcCBwYXRjaGFi
bGVKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKKworICAgICAgICAgICAgICAgIFJlZ2lzdGVy
U2V0IHVzZWRSZWdpc3RlcnMgPSBwYXJhbXMudXNlZFJlZ2lzdGVyczsKKworICAgICAgICAgICAg
ICAgIC8vIEZJWE1FOiBBcyBwYXJ0IG9mIGhhbmRsaW5nIGV4Y2VwdGlvbnMsIHdlIG5lZWQgdG8g
Y3JlYXRlIGEgY29uY3JldGUgT1NSRXhpdCBoZXJlLgorICAgICAgICAgICAgICAgIC8vIERvaW5n
IHNvIHNob3VsZCBhdXRvbWFnaWNhbGx5IHJlZ2lzdGVyIGxhdGUgcGF0aHMgdGhhdCBlbWl0IGV4
aXQgdGh1bmtzLgorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHBhcmFtcy5jb250
ZXh0LT5sYXRlUGF0aHMuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICBjcmVhdGVTaGFyZWRU
YXNrPEFpcjo6R2VuZXJhdGlvbkNvbnRleHQ6OkxhdGVQYXRoRnVuY3Rpb24+KAorICAgICAgICAg
ICAgICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgQWlyOjpHZW5lcmF0aW9uQ29u
dGV4dCYpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJl
Z2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGF0Y2hhYmxlSnVtcC5tX2p1bXAubGluaygmaml0KTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbmRleCA9IHN0YXRlLT5qaXRDb2RlLT5sYXp5U2xvd1BhdGhzLnNp
emUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+aml0Q29kZS0+bGF6eVNs
b3dQYXRocy5hcHBlbmQobnVsbHB0cik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0
LnB1c2hUb1NhdmVJbW1lZGlhdGVXaXRob3V0VG91Y2hpbmdSZWdpc3RlcnMoCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGluZGV4KSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGdlbmVyYXRv
ckp1bXAgPSBqaXQuanVtcCgpOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm90
ZSB0aGF0IHNvIGxvbmcgYXMgd2UncmUgaGVyZSwgd2UgZG9uJ3QgcmVhbGx5IGtub3cgaWYgb3Vy
IGxhdGUgcGF0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJ1bnMgYmVmb3JlIG9y
IGFmdGVyIGFueSBvdGhlciBsYXRlIHBhdGhzIHRoYXQgd2UgbWlnaHQgZGVwZW5kIG9uLCBsaWtl
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGV4Y2VwdGlvbiB0aHVuay4KKwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxKSVRDb2RlPiBqaXRDb2RlID0gc3Rh
dGUtPmppdENvZGU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVk0qIHZtID0gJnN0YXRl
LT5ncmFwaC5tX3ZtOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmFkZExpbmtU
YXNrKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxp
bmtCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZm
ZXIubGluaygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0
b3JKdW1wLCBDb2RlTG9jYXRpb25MYWJlbCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdm0tPmdldENUSVN0dWIoCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsYXp5U2xvd1BhdGhHZW5lcmF0aW9uVGh1bmtHZW5lcmF0
b3IpLmNvZGUoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2RlTG9jYXRpb25KdW1wIGxpbmtlZFBh
dGNoYWJsZUp1bXAgPSBDb2RlTG9jYXRpb25KdW1wKAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubG9jYXRpb25PZihwYXRjaGFibGVKdW1wKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbCBsaW5r
ZWREb25lID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKGRvbmUpOworCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogTmVlZCBhIHN0b3J5IGZvciBleGNlcHRpb25z
IGluIEZUTC1CMy4gVGhhdCBiYXNpY2FsbHkgbWVhbnMKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGRvaW5nIGEgbG9va3VwIG9mIHRoZSBleGNlcHRpb24gZW50cnlwb2lu
dCBoZXJlLiBXZSB3aWxsIGhhdmUgYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIE9TUiBleGl0IGRhdGEgc3RydWN0dXJlIG9mIHNvbWUgc29ydC4KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTE2ODYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENv
ZGVMb2NhdGlvbkxhYmVsIGV4Y2VwdGlvblRhcmdldDsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0Q29kZS0+Y29tbW9uLmFkZFVuaXF1ZUNhbGxT
aXRlSW5kZXgob3JpZ2luKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPExhenlT
bG93UGF0aD4gbGF6eVNsb3dQYXRoID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGQ6Om1ha2VfdW5pcXVlPExhenlTbG93UGF0aD4oCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtlZFBhdGNoYWJsZUp1bXAsIGxpbmtlZERv
bmUsIGV4Y2VwdGlvblRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdXNlZFJlZ2lzdGVycywgY2FsbFNpdGVJbmRleCwgZ2VuZXJhdG9yKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaml0Q29kZS0+bGF6eVNsb3dQYXRoc1tpbmRleF0gPSBXVEY6Om1vdmUobGF6
eVNsb3dQYXRoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICNlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0
LmNwcAkocmV2aXNpb24gMTkyODUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdp
c3RlclNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODAsNiArODAsMTUgQEAgUmVnaXN0ZXJT
ZXQgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZQogICAgIHJldHVybiBSZWdpc3RlclNldChz
cGVjaWFsUmVnaXN0ZXJzKCksIHZtQ2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKIH0KIAorUmVnaXN0
ZXJTZXQgUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpCit7CisjaWYgQ1BVKFg4
Nl82NCkKKyAgICByZXR1cm4gUmVnaXN0ZXJTZXQoTWFjcm9Bc3NlbWJsZXI6OnNfc2NyYXRjaFJl
Z2lzdGVyKTsKKyNlbHNlCisgICAgcmV0dXJuIFJlZ2lzdGVyU2V0KCk7CisjZW5kaWYKK30KKwog
UmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKQogewogICAgIFJl
Z2lzdGVyU2V0IHJlc3VsdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0
ZXJTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVy
U2V0LmgJKHJldmlzaW9uIDE5Mjg1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVn
aXN0ZXJTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01OSw2ICs1OSw3IEBAIHB1YmxpYzoKICNl
bmRpZgogICAgIHN0YXRpYyBSZWdpc3RlclNldCB2b2xhdGlsZVJlZ2lzdGVyc0ZvckpTQ2FsbCgp
OwogICAgIHN0YXRpYyBSZWdpc3RlclNldCBzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKTsgLy8g
VGhlIHVuaW9uIG9mIGNhbGxlZSBzYXZlcyBhbmQgc3BlY2lhbCByZWdpc3RlcnMuCisgICAgc3Rh
dGljIFJlZ2lzdGVyU2V0IG1hY3JvU2NyYXRjaFJlZ2lzdGVycygpOwogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBSZWdpc3RlclNldCBhbGxHUFJzKCk7CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFJlZ2lzdGVyU2V0IGFsbEZQUnMoKTsKICAgICBzdGF0aWMgUmVnaXN0ZXJTZXQg
YWxsUmVnaXN0ZXJzKCk7Cg==
</data>
<flag name="review"
          id="291336"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>