<?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>152468</bug_id>
          
          <creation_ts>2015-12-20 12:33:00 -0800</creation_ts>
          <short_desc>FTL B3 should do vararg calls</short_desc>
          <delta_ts>2015-12-21 14:48:26 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>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>
          
          <blocked>150279</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>ossy</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1150658</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-20 12:33:00 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150659</commentid>
    <comment_count>1</comment_count>
      <attachid>267723</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-20 12:33:50 -0800</bug_when>
    <thetext>Created attachment 267723
it begins</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150672</commentid>
    <comment_count>2</comment_count>
      <attachid>267727</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-20 17:00:04 -0800</bug_when>
    <thetext>Created attachment 267727
a bit more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150675</commentid>
    <comment_count>3</comment_count>
      <attachid>267728</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-20 17:35:45 -0800</bug_when>
    <thetext>Created attachment 267728
almost done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150696</commentid>
    <comment_count>4</comment_count>
      <attachid>267737</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-20 22:39:19 -0800</bug_when>
    <thetext>Created attachment 267737
it compiles</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150756</commentid>
    <comment_count>5</comment_count>
      <attachid>267754</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-21 10:28:01 -0800</bug_when>
    <thetext>Created attachment 267754
it seems to work</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150757</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-21 10:29:35 -0800</bug_when>
    <thetext>Attachment 267754 did not pass style-queue:


ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:5139:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:5227:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:5233:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:5322:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 4 in 7 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>1150763</commentid>
    <comment_count>7</comment_count>
      <attachid>267754</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-21 10:47:58 -0800</bug_when>
    <thetext>Comment on attachment 267754
it seems to work

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

I am not familiar with the JS calling convention but nothing looks crazy here.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:5112
&gt; +            // different register for the late for the post-clobbering version of the value. This gives
&gt; +            // the compiler to spill these values without having to burn any callee-saves.

&quot;to spill&quot;-&gt;&quot;a chance to spill&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150765</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-21 10:53:24 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 267754 [details]
&gt; it seems to work
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=267754&amp;action=review
&gt; 
&gt; I am not familiar with the JS calling convention but nothing looks crazy
&gt; here.
&gt; 
&gt; &gt; Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:5112
&gt; &gt; +            // different register for the late for the post-clobbering version of the value. This gives
&gt; &gt; +            // the compiler to spill these values without having to burn any callee-saves.
&gt; 
&gt; &quot;to spill&quot;-&gt;&quot;a chance to spill&quot;?

Yeah, that&apos;s what I meant!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150766</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-21 10:57:35 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/194334</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150796</commentid>
    <comment_count>10</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-12-21 13:23:53 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Landed in http://trac.webkit.org/changeset/194334

It broke the EFL build:
https://build.webkit.org/builders/EFL%20Linux%2064-bit%20Release%20WK2/builds/26013

../../Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp: In member function ‘void JSC::FTL::{anonymous}::LowerDFGToLLVM::compileCallOrConstructVarargs()’:
../../Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:5084:14: error: variable ‘forwarding’ set but not used [-Werror=unused-but-set-variable]
         bool forwarding = false;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150797</commentid>
    <comment_count>11</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-12-21 13:24:38 -0800</bug_when>
    <thetext>Fix landed in https://trac.webkit.org/changeset/194347</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150808</commentid>
    <comment_count>12</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-21 14:48:26 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; Fix landed in https://trac.webkit.org/changeset/194347

Thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267723</attachid>
            <date>2015-12-20 12:33:50 -0800</date>
            <delta_ts>2015-12-20 17:00:04 -0800</delta_ts>
            <desc>it begins</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>9557</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAkocmV2aXNpb24gMTk0MzIw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAkod29ya2luZyBjb3B5
KQpAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAvLyBX
ZSBhcmUgaW4gdGhlIG1pZGRsZSBvZiBhbiBleHBlcmltZW50YWwgdHJhbnNpdGlvbiBmcm9tIExM
Vk0gdG8gQjMgYXMgdGhlIGJhY2tlbmQgZm9yIHRoZSBGVEwuIFdlIGRvbid0CiAvLyB5ZXQga25v
dyBob3cgaXQgd2lsbCB0dXJuIG91dC4gRm9yIG5vdywgdGhpcyBmbGFnIHdpbGwgY29udHJvbCB3
aGV0aGVyIEZUTCB1c2VzIEIzLiBSZW1lbWJlciB0byBzZXQgdGhpcwogLy8gdG8gMCBiZWZvcmUg
Y29tbWl0dGluZyEKLSNkZWZpbmUgRlRMX1VTRVNfQjMgMAorI2RlZmluZSBGVExfVVNFU19CMyAx
CiAKIHN0cnVjdCBOb2RlOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9MTFZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9MTFZNLmNwcAkocmV2aXNpb24gMTk0MzIwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIw
NSw4ICsyMDUsOCBAQCBwdWJsaWM6CiAjZW5kaWYgLy8gRlRMX1VTRV9CMwogCiAgICAgICAgIGF1
dG8gcHJlT3JkZXIgPSBtX2dyYXBoLmJsb2Nrc0luUHJlT3JkZXIoKTsKLSAgICAgICAgCi0gICAg
ICAgIC8vIElmIHdlIGhhdmUgYW55IENhbGxWYXJhcmdzIHRoZW4gd2UgbmVlZCB0byBoYXZlIGEg
c3BpbGwgc2xvdCBmb3IgaXQuCisKKyNpZiAhRlRMX1VTRVNfQjMKICAgICAgICAgYm9vbCBoYXNW
YXJhcmdzID0gZmFsc2U7CiAgICAgICAgIHNpemVfdCBtYXhOdW1iZXJPZkNhdGNoU3BpbGxzID0g
MDsKICAgICAgICAgZm9yIChERkc6OkJhc2ljQmxvY2sqIGJsb2NrIDogcHJlT3JkZXIpIHsKQEAg
LTI3MCwxMCArMjcwLDggQEAgcHVibGljOgogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSNp
ZiBGVExfVVNFU19CMwotICAgICAgICBVTlVTRURfUEFSQU0oaGFzVmFyYXJncyk7Ci0gICAgICAg
IC8vIEZJWE1FCi0jZWxzZQorICAgICAgICAvLyBCMyBkb2Vzbid0IG5lZWQgdGhlIHZhcmFyZ3Mg
c3BpbGwgc2xvdCBiZWNhdXNlIHdlIGp1c3QgdXNlIGNhbGwgYXJnIGFyZWEgc2l6ZSBhcyBhIHdh
eSB0bworICAgICAgICAvLyByZXF1ZXN0IHNwaWxsIHNsb3RzLgogICAgICAgICBpZiAoaGFzVmFy
YXJncykgewogICAgICAgICAgICAgTFZhbHVlIHZhcmFyZ3NTcGlsbFNsb3RzID0gbV9vdXQuYWxs
b2NhKAogICAgICAgICAgICAgICAgIGFycmF5VHlwZShtX291dC5pbnQ2NCwgSlNDYWxsVmFyYXJn
czo6bnVtU3BpbGxTbG90c05lZWRlZCgpKSk7CkBAIC0yODQsNiArMjgyLDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgICAgIG1fb3V0LmludDMyWmVybywgdmFyYXJnc1NwaWxsU2xvdHMpOwogICAg
ICAgICB9CiAKKyAgICAgICAgLy8gQjMgZG9lc24ndCBuZWVkIHRoZSBleGNlcHRpb24gc3BpbGwg
c2xvdCBiZWNhdXNlIHdlIGp1c3QgdXNlIHRoZSAKICAgICAgICAgaWYgKG1fZ3JhcGgubV9oYXNF
eGNlcHRpb25IYW5kbGVycyAmJiBtYXhOdW1iZXJPZkNhdGNoU3BpbGxzKSB7CiAgICAgICAgICAg
ICBSZWdpc3RlclNldCB2b2xhdGlsZVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0Ojp2b2xhdGlsZVJl
Z2lzdGVyc0ZvckpTQ2FsbCgpOwogICAgICAgICAgICAgbWF4TnVtYmVyT2ZDYXRjaFNwaWxscyA9
IHN0ZDo6bWluKHZvbGF0aWxlUmVnaXN0ZXJzLm51bWJlck9mU2V0UmVnaXN0ZXJzKCksIG1heE51
bWJlck9mQ2F0Y2hTcGlsbHMpOwpAQCAtMjk2LDcgKzI5NSw3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICBtX291dC5jb25zdEludDY0KG1fZnRsU3RhdGUuZXhjZXB0aW9uSGFuZGxpbmdTcGls
bFNsb3RTdGFja21hcElEKSwKICAgICAgICAgICAgICAgICBtX291dC5pbnQzMlplcm8sIGV4Y2Vw
dGlvbkhhbmRsaW5nVm9sYXRpbGVSZWdpc3RlcnNTcGlsbFNsb3RzKTsKICAgICAgICAgfQotI2Vu
ZGlmCisjZW5kaWYgLy8gIUZUTF9VU0VTX0IzCiAgICAgICAgIAogICAgICAgICAvLyBXZSBzaG91
bGQgbm90IGNyZWF0ZSBhbnkgYWxsb2NhJ3MgYWZ0ZXIgdGhpcyBwb2ludCwgc2luY2UgdGhleSB3
aWxsIGNlYXNlIHRvCiAgICAgICAgIC8vIGJlIG1lbTJyZWcgY2FuZGlkYXRlcy4KQEAgLTUwNjks
MjEgKzUwNjgsMTggQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGNvbXBpbGVDYWxsT3JDb25z
dHJ1Y3RWYXJhcmdzKCkKICAgICB7Ci0jaWYgRlRMX1VTRVNfQjMKLSAgICAgICAgaWYgKHZlcmJv
c2VDb21waWxhdGlvbkVuYWJsZWQoKSB8fCAhdmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZCgpKQot
ICAgICAgICAgICAgQ1JBU0goKTsKLSNlbHNlCisgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7
CiAgICAgICAgIExWYWx1ZSBqc0NhbGxlZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7
CiAgICAgICAgIExWYWx1ZSB0aGlzQXJnID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMygpKTsK
ICAgICAgICAgCiAgICAgICAgIExWYWx1ZSBqc0FyZ3VtZW50cyA9IG51bGxwdHI7CiAgICAgICAg
IAotICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+b3AoKSkgeworICAgICAgICBzd2l0Y2ggKG5vZGUt
Pm9wKCkpIHsKICAgICAgICAgY2FzZSBDYWxsVmFyYXJnczoKICAgICAgICAgY2FzZSBUYWlsQ2Fs
bFZhcmFyZ3M6CiAgICAgICAgIGNhc2UgVGFpbENhbGxWYXJhcmdzSW5saW5lZENhbGxlcjoKICAg
ICAgICAgY2FzZSBDb25zdHJ1Y3RWYXJhcmdzOgotICAgICAgICAgICAganNBcmd1bWVudHMgPSBs
b3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAganNBcmd1bWVudHMgPSBs
b3dKU1ZhbHVlKG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIENhbGxGb3J3YXJkVmFyYXJnczoKICAgICAgICAgY2FzZSBUYWlsQ2FsbEZvcndhcmRWYXJh
cmdzOgpAQCAtNTA5MSwxMCArNTA4NywxMDUgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDb25z
dHJ1Y3RGb3J3YXJkVmFyYXJnczoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgImJhZCBub2RlIHR5cGUi
KTsKKyAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBub2RlLCAiYmFkIG5vZGUgdHlwZSIp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCisjaWYgRlRMX1VTRVNf
QjMKKyAgICAgICAgLy8gRklYTUU6IE5lZWQgYSBzdG9yeSBmb3IgZXhjZXB0aW9ucy4KKyAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTY4NgorCisg
ICAgICAgIFBhdGNrcG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoSW50
NjQpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoanNDYWxsZWUsIFZhbHVlUmVwOjpTb21l
UmVnaXN0ZXIpOworICAgICAgICBpZiAoanNBcmd1bWVudHMpCisgICAgICAgICAgICBwYXRjaHBv
aW50LT5hcHBlbmQoanNBcmd1bWVudHMsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpOworICAgICAg
ICBwYXRjaHBvaW50LT5hcHBlbmQodGhpc0FyZywgVmFsdWVSZXA6OlNvbWVSZWdpc3Rlcik7CisK
KyAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVn
aXN0ZXJzKCkpOworICAgICAgICBwYXJjaHBvaW50LT5jbG9iYmVyTGF0ZShSZWdpc3RlclNldDo6
dm9sYXRpbGVSZWdpc3RlcnNGb3JKU0NhbGwoKSk7CisgICAgICAgIHBhdGNocG9pbnQtPnJlc3Vs
dENvbnN0cmFpbnQgPSBWYWx1ZVJlcDo6cmVnKEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKwor
ICAgICAgICAvLyBUaGlzIGlzIHRoZSBtaW5pbXVtIGFtb3VudCBvZiBjYWxsIGFyZyBhcmVhIHN0
YWNrIHNwYWNlIHRoYXQgYWxsIEpTLT5KUyBjYWxscyBhbHdheXMgaGF2ZS4KKyAgICAgICAgdW5z
aWduZWQgbWluaW11bUpTQ2FsbEFyZWFTaXplID0KKyAgICAgICAgICAgIHNpemVvZihDYWxsZXJG
cmFtZUFuZFBDKSArCisgICAgICAgICAgICBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tB
bGlnbm1lbnRCeXRlcygpLCA1ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSk7CisKKyAgICAgICAg
Ly8gVGhpcyBpcyB0aGUgbnVtYmVyIG9mIHNwaWxsIHNsb3RzIHdlIHdpbGwgd2FudC4KKyAgICAg
ICAgdW5zaWduZWQgc3BpbGxBcmVhU2l6ZSA9IDMgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOwor
ICAgICAgICAKKyAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gY29kZU9yaWdpbkRlc2Ny
aXB0aW9uT2ZDYWxsU2l0ZSgpOworICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsK
KyAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAorICAgICAgICAgICAgWz1dIChDQ2Fs
bEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsK
KyAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3Jh
dGNoKGppdCk7CisgICAgICAgICAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0K
KyAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmppdENvZGUtPmNvbW1vbi5hZGRVbmlxdWVDYWxs
U2l0ZUluZGV4KGNvZGVPcmlnaW4pOworCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIHdv
dWxkIGFzayB0aGUgT1NSIGV4aXQgZGVzY3JpcHRvciB0byBwcmVwYXJlIGFuZCB0aGVuIHdlIHdv
dWxkIG1vZGlmeQorICAgICAgICAgICAgICAgIC8vIHRoZSBPU1JFeGl0IGRhdGEgc3RydWN0dXJl
IGluc2lkZSB0aGUgT1NSRXhpdEhhbmRsZSB0byBsaW5rIGl0IHVwIHRvIHRoaXMgY2FsbC4KKyAg
ICAgICAgICAgICAgICAvLyBBbHNvLCB0aGUgZXhjZXB0aW9uIGNoZWNrcyBKdW1wTGlzdCBzaG91
bGQgYmUgbGlua2VkIHRvIHNvbWV3aGVyZS4KKyAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNjg2CisgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdCBleGNlcHRpb25zOworCisgICAgICAgICAgICAgICAgaml0LnN0
b3JlMzIoCisgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGNh
bGxTaXRlSW5kZXguYml0cygpKSwKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0
YWdGb3IoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKSk7CisKKyAgICAg
ICAgICAgICAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGppdC5jb2RlQmxvY2soKS0+
YWRkQ2FsbExpbmtJbmZvKCk7CisgICAgICAgICAgICAgICAgQ2FsbFZhcmFyZ3NEYXRhKiBkYXRh
ID0gbm9kZS0+Y2FsbFZhcmFyZ3NEYXRhKCk7CisKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBh
cmdJbmRleCA9IDE7CisgICAgICAgICAgICAgICAgR1BSUmVnIGNhbGxlZUdQUiA9IHBhcmFtc1th
cmdJbmRleCsrXS5ncHIoKTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgYXJndW1lbnRzR1BSID0g
SW52YWxpZEdQUlJlZzsKKyAgICAgICAgICAgICAgICBib29sIGZvcndhcmRpbmcgPSBmYWxzZTsK
KyAgICAgICAgICAgICAgICBpZiAoanNBcmd1bWVudHMpCisgICAgICAgICAgICAgICAgICAgIGFy
Z3VtZW50c0dQUiA9IHBhcmFtc1thcmdJbmRleCsrXS5ncHIoKTsKKyAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgIGZvcndhcmRpbmcgPSB0cnVlOworICAgICAgICAgICAg
ICAgIEdQUlJlZyB0aGlzR1BSID0gcGFyYW1zW2FyZ0luZGV4KytdLmdwcigpOworCisgICAgICAg
ICAgICAgICAgLy8gR2V0IHNvbWUgc2NyYXRjaCByZWdpc3RlcnMuCisgICAgICAgICAgICAgICAg
UmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVyczsKKyAgICAgICAgICAgICAgICB1c2VkUmVnaXN0ZXJz
Lm1lcmdlKFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpKTsKKyAgICAgICAgICAgICAgICB1
c2VkUmVnaXN0ZXJzLm1lcmdlKFJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJz
KCkpOworICAgICAgICAgICAgICAgIHVzZWRSZWdpc3RlcnMubWVyZ2UoUmVnaXN0ZXJTZXQ6OmNh
bGxlZVNhdmVSZWdpc3RlcnMoKSk7CisgICAgICAgICAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQo
Y2FsbGVlR1BSKTsKKyAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRzR1BSICE9IEludmFsaWRH
UFJSZWcpCisgICAgICAgICAgICAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KGFyZ3VtZW50c0dQ
Uik7CisgICAgICAgICAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQodGhpc0dQUik7CisgICAgICAg
ICAgICAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yIGFsbG9jYXRvcih1c2VkUmVnaXN0ZXJz
KTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUjEgPSBhbGxvY2F0b3IuYWxsb2Nh
dGVTY3JhdGNoR1BSKCk7CisgICAgICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIyID0gYWxs
b2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOworICAgICAgICAgICAgICAgIEdQUlJlZyBzY3Jh
dGNoR1BSMyA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKKyAgICAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVCghYWxsb2NhdG9yLm51bWJlck9mUmV1c2VkUmVnaXN0ZXJzKCkpOwor
CisgICAgICAgICAgICAgICAgYXV0byBjb21wdXRlVXNlZFN0YWNrID0gWyZdIChHUFJSZWcgdGFy
Z2V0R1BSLCB1bnNpZ25lZCBleHRyYSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoaXNBUk02
NCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBIYXZlIHRvIGRvIHRoaXMgdGhlIHdl
aXJkIHdheSBiZWNhdXNlICVzcCBvbiBBUk02NCBtZWFucyB6ZXJvIHdoZW4gdXNlZCBpbgorICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gYSBzdWJ0cmFjdGlvbi4KKyAgICAgICAgICAgICAgICAg
ICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIHRhcmdl
dEdQUik7CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQubmVnUHRyKHRhcmdldEdQUik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBqaXQuYWRkUHRyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCB0YXJnZXRHUFIpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICAgICAgaml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHRhcmdl
dEdQUik7CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQuc3ViUHRyKENDYWxsSGVscGVyczo6
c3RhY2tQb2ludGVyUmVnaXN0ZXIsIHRhcmdldEdQUik7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgaWYgKGV4dHJhKQorICAgICAgICAgICAgICAgICAgICAgICAg
aml0LnN1YlB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihleHRyYSksIHRhcmdldEdQUik7
CisgICAgICAgICAgICAgICAgICAgIGppdC51cnNoaWZ0UHRyKENDYWxsSGVscGVyczo6SW1tMzIo
MyksIHRhcmdldEdQUik7CisgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgIGF1
dG8gY2FsbFdpdGhFeGNlcHRpb25DaGVjayA9IFsmXSAodm9pZCogY2FsbGVlKSB7CisgICAgICAg
ICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsZWUp
LCBHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25Bcmd1bWVudEdQUik7CisgICAgICAgICAgICAgICAg
ICAgIGppdC5jYWxsKEdQUkluZm86Om5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BSKTsKKyAgICAg
ICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5hcHBlbmQoaml0LmVtaXRFeGNlcHRpb25DaGVjayhB
c3NlbWJseUhlbHBlcnM6Ok5vcm1hbEV4Y2VwdGlvbkNoZWNrLCBBc3NlbWJseUhlbHBlcnM6OkZh
ckp1bXBXaWR0aCkpOworICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICB1bnNp
Z25lZCBvcmlnaW5hbFN0YWNrSGVpZ2h0ID0gcGFyYW1zLnByb2MoKS5mcmFtZVNpemUoKTsKKwor
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGV4dHJhU3RhY2sgPSBzaXplb2YoQ2FsbGVyRnJhbWVB
bmRQQykgKyBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCA1
ICogc2l6ZW9mKHZvaWQqKSk7CisgICAgICAgICAgICB9KTsKKyNlbHNlCiAgICAgICAgIHVuc2ln
bmVkIHN0YWNrbWFwSUQgPSBtX3N0YWNrbWFwSURzKys7CiAgICAgICAgIAogICAgICAgICBTdGFj
a21hcEFyZ3VtZW50TGlzdCBhcmd1bWVudHM7CkBAIC01MTA4LDE1ICs1MTk5LDE1IEBAIHByaXZh
dGU6CiAKICAgICAgICAgYXJndW1lbnRzLmluc2VydCgwLCBtX291dC5jb25zdEludDMyKDIgKyAh
IWpzQXJndW1lbnRzKSk7CiAgICAgICAgIGFyZ3VtZW50cy5pbnNlcnQoMCwgY29uc3ROdWxsKG1f
b3V0LnJlZjgpKTsKLSAgICAgICAgYXJndW1lbnRzLmluc2VydCgwLCBtX291dC5jb25zdEludDMy
KHNpemVPZklDRm9yKG1fbm9kZSkpKTsKKyAgICAgICAgYXJndW1lbnRzLmluc2VydCgwLCBtX291
dC5jb25zdEludDMyKHNpemVPZklDRm9yKG5vZGUpKSk7CiAgICAgICAgIGFyZ3VtZW50cy5pbnNl
cnQoMCwgbV9vdXQuY29uc3RJbnQ2NChzdGFja21hcElEKSk7CiAgICAgICAgIAogICAgICAgICBM
VmFsdWUgY2FsbCA9IG1fb3V0LmNhbGwobV9vdXQuaW50NjQsIG1fb3V0LnBhdGNocG9pbnRJbnQ2
NEludHJpbnNpYygpLCBhcmd1bWVudHMpOwogICAgICAgICBzZXRJbnN0cnVjdGlvbkNhbGxpbmdD
b252ZW50aW9uKGNhbGwsIExMVk1DQ2FsbENvbnYpOwogICAgICAgICAKLSAgICAgICAgbV9mdGxT
dGF0ZS5qc0NhbGxWYXJhcmdzZXMuYXBwZW5kKEpTQ2FsbFZhcmFyZ3Moc3RhY2ttYXBJRCwgbV9u
b2RlLCBjb2RlT3JpZ2luRGVzY3JpcHRpb25PZkNhbGxTaXRlKCkpKTsKKyAgICAgICAgbV9mdGxT
dGF0ZS5qc0NhbGxWYXJhcmdzZXMuYXBwZW5kKEpTQ2FsbFZhcmFyZ3Moc3RhY2ttYXBJRCwgbm9k
ZSwgY29kZU9yaWdpbkRlc2NyaXB0aW9uT2ZDYWxsU2l0ZSgpKSk7CiAKLSAgICAgICAgc3dpdGNo
IChtX25vZGUtPm9wKCkpIHsKKyAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgICAg
IGNhc2UgVGFpbENhbGxWYXJhcmdzOgogICAgICAgICBjYXNlIFRhaWxDYWxsRm9yd2FyZFZhcmFy
Z3M6CiAgICAgICAgICAgICBtX291dC51bnJlYWNoYWJsZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267727</attachid>
            <date>2015-12-20 17:00:04 -0800</date>
            <delta_ts>2015-12-20 17:35:45 -0800</delta_ts>
            <desc>a bit more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>15372</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlUmVwLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZVJlcC5jcHAJKHJldmlzaW9uIDE5
NDMyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlUmVwLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsNiArMjgsOCBAQAogCiAjaWYgRU5BQkxFKEIzX0pJVCkKIAorI2luY2x1
ZGUgIkFzc2VtYmx5SGVscGVycy5oIgorCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsK
IAogdm9pZCBWYWx1ZVJlcDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdApAQCAtNTUsNiAr
NTcsNDkgQEAgdm9pZCBWYWx1ZVJlcDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjbwogICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK3ZvaWQgVmFsdWVSZXA6OmVtaXRSZXN0
b3JlKEFzc2VtYmx5SGVscGVycyYgaml0LCBSZWcgcmVnKQoreworICAgIGlmIChyZWcuaXNHUFIo
KSkgeworICAgICAgICBzd2l0Y2ggKGtpbmQoKSkgeworICAgICAgICBjYXNlIFJlZ2lzdGVyOgor
ICAgICAgICAgICAgaWYgKGlzR1BSKCkpCisgICAgICAgICAgICAgICAgaml0Lm1vdmUoZ3ByKCks
IHJlZy5ncHIoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaml0Lm1vdmVE
b3VibGVUbzY0KGZwcigpLCByZWcuZ3ByKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgU3RhY2s6CisgICAgICAgICAgICBqaXQubG9hZDY0KEFzc2VtYmx5SGVscGVyczo6QWRk
cmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwgb2Zmc2V0RnJvbUZQKCkpLCByZWcuZ3By
KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29uc3RhbnQ6CisgICAgICAg
ICAgICBqaXQubW92ZShUcnVzdGVkSW1tNjQodmFsdWUoKSksIHJlZy5ncHIoKSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIAorICAgIHN3aXRjaCAoa2luZCgpKSB7CisgICAgY2FzZSBSZWdp
c3RlcjoKKyAgICAgICAgaWYgKGlzR1BSKCkpCisgICAgICAgICAgICBqaXQubW92ZTY0VG9Eb3Vi
bGUoZ3ByKCksIHJlZy5mcHIoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGppdC5tb3Zl
RG91YmxlKGZwcigpLCByZWcuZnByKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0YWNr
OgorICAgICAgICBqaXQubG9hZERvdWJsZShBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIG9mZnNldEZyb21GUCgpKSwgcmVnLmZwcigpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBDb25zdGFudDoKKyAgICAgICAgaml0Lm1vdmUoVHJ1c3RlZElt
bTY0KHZhbHVlKCkpLCBqaXQuc2NyYXRjaFJlZ2lzdGVyKCkpOworICAgICAgICBqaXQubW92ZTY0
VG9Eb3VibGUoaml0LnNjcmF0Y2hSZWdpc3RlcigpLCByZWcuZnByKCkpOworICAgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICBicmVhazsKKyAgICB9Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCiBu
YW1lc3BhY2UgV1RGIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlUmVw
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVSZXAuaAko
cmV2aXNpb24gMTk0MzIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVSZXAu
aAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsMTEgQEAKICNpbmNsdWRlICJSZWcuaCIKICNp
bmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBC
MyB7CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQXNzZW1ibHlIZWxwZXJzOworCituYW1lc3Bh
Y2UgQjMgewogCiAvLyBXZSB1c2UgdGhpcyBjbGFzcyB0byBkZXNjcmliZSB2YWx1ZSByZXByZXNl
bnRhdGlvbnMgYXQgc3RhY2ttYXBzLiBJdCdzIHVzZWQgYm90aCB0byBmb3JjZSBhCiAvLyByZXBy
ZXNlbnRhdGlvbiBhbmQgdG8gZ2V0IHRoZSByZXByZXNlbnRhdGlvbi4gV2hlbiB0aGUgQjMgY2xp
ZW50IGZvcmNlcyBhIHJlcHJlc2VudGF0aW9uLCB3ZSBzYXkKQEAgLTIxNiw2ICsyMjAsMTAgQEAg
cHVibGljOgogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wKFByaW50U3RyZWFtJikg
Y29uc3Q7CiAKKyAgICAvLyBUaGlzIGhhcyBhIHNpbXBsZSBjb250cmFjdDogaXQgZW1pdHMgY29k
ZSB0byByZXN0b3JlIHRoZSB2YWx1ZSBpbnRvIHRoZSBnaXZlbiByZWdpc3Rlci4gVGhpcworICAg
IC8vIHdpbGwgd29yayBldmVuIGlmIGl0IHJlcXVpcmVzIG1vdmluZyBiZXR3ZWVuIGJpdHMgYSBH
UFIgYW5kIGEgRlBSLgorICAgIHZvaWQgZW1pdFJlc3RvcmUoQXNzZW1ibHlIZWxwZXJzJiwgUmVn
KTsKKwogcHJpdmF0ZToKICAgICBLaW5kIG1fa2luZDsKICAgICB1bmlvbiBVIHsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAkocmV2aXNpb24gMTk0MzIwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzgs
NyArMzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAvLyBXZSBhcmUgaW4g
dGhlIG1pZGRsZSBvZiBhbiBleHBlcmltZW50YWwgdHJhbnNpdGlvbiBmcm9tIExMVk0gdG8gQjMg
YXMgdGhlIGJhY2tlbmQgZm9yIHRoZSBGVEwuIFdlIGRvbid0CiAvLyB5ZXQga25vdyBob3cgaXQg
d2lsbCB0dXJuIG91dC4gRm9yIG5vdywgdGhpcyBmbGFnIHdpbGwgY29udHJvbCB3aGV0aGVyIEZU
TCB1c2VzIEIzLiBSZW1lbWJlciB0byBzZXQgdGhpcwogLy8gdG8gMCBiZWZvcmUgY29tbWl0dGlu
ZyEKLSNkZWZpbmUgRlRMX1VTRVNfQjMgMAorI2RlZmluZSBGVExfVVNFU19CMyAxCiAKIHN0cnVj
dCBOb2RlOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9M
TFZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9MTFZNLmNwcAkocmV2aXNpb24gMTk0MzIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNSw4ICsyMDUs
OCBAQCBwdWJsaWM6CiAjZW5kaWYgLy8gRlRMX1VTRV9CMwogCiAgICAgICAgIGF1dG8gcHJlT3Jk
ZXIgPSBtX2dyYXBoLmJsb2Nrc0luUHJlT3JkZXIoKTsKLSAgICAgICAgCi0gICAgICAgIC8vIElm
IHdlIGhhdmUgYW55IENhbGxWYXJhcmdzIHRoZW4gd2UgbmVlZCB0byBoYXZlIGEgc3BpbGwgc2xv
dCBmb3IgaXQuCisKKyNpZiAhRlRMX1VTRVNfQjMKICAgICAgICAgYm9vbCBoYXNWYXJhcmdzID0g
ZmFsc2U7CiAgICAgICAgIHNpemVfdCBtYXhOdW1iZXJPZkNhdGNoU3BpbGxzID0gMDsKICAgICAg
ICAgZm9yIChERkc6OkJhc2ljQmxvY2sqIGJsb2NrIDogcHJlT3JkZXIpIHsKQEAgLTI3MCwxMCAr
MjcwLDggQEAgcHVibGljOgogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSNpZiBGVExfVVNF
U19CMwotICAgICAgICBVTlVTRURfUEFSQU0oaGFzVmFyYXJncyk7Ci0gICAgICAgIC8vIEZJWE1F
Ci0jZWxzZQorICAgICAgICAvLyBCMyBkb2Vzbid0IG5lZWQgdGhlIHZhcmFyZ3Mgc3BpbGwgc2xv
dCBiZWNhdXNlIHdlIGp1c3QgdXNlIGNhbGwgYXJnIGFyZWEgc2l6ZSBhcyBhIHdheSB0bworICAg
ICAgICAvLyByZXF1ZXN0IHNwaWxsIHNsb3RzLgogICAgICAgICBpZiAoaGFzVmFyYXJncykgewog
ICAgICAgICAgICAgTFZhbHVlIHZhcmFyZ3NTcGlsbFNsb3RzID0gbV9vdXQuYWxsb2NhKAogICAg
ICAgICAgICAgICAgIGFycmF5VHlwZShtX291dC5pbnQ2NCwgSlNDYWxsVmFyYXJnczo6bnVtU3Bp
bGxTbG90c05lZWRlZCgpKSk7CkBAIC0yODQsNiArMjgyLDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgICAgIG1fb3V0LmludDMyWmVybywgdmFyYXJnc1NwaWxsU2xvdHMpOwogICAgICAgICB9CiAK
KyAgICAgICAgLy8gQjMgZG9lc24ndCBuZWVkIHRoZSBleGNlcHRpb24gc3BpbGwgc2xvdCBiZWNh
dXNlIHdlIGp1c3QgdXNlIHRoZSAKICAgICAgICAgaWYgKG1fZ3JhcGgubV9oYXNFeGNlcHRpb25I
YW5kbGVycyAmJiBtYXhOdW1iZXJPZkNhdGNoU3BpbGxzKSB7CiAgICAgICAgICAgICBSZWdpc3Rl
clNldCB2b2xhdGlsZVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0Ojp2b2xhdGlsZVJlZ2lzdGVyc0Zv
ckpTQ2FsbCgpOwogICAgICAgICAgICAgbWF4TnVtYmVyT2ZDYXRjaFNwaWxscyA9IHN0ZDo6bWlu
KHZvbGF0aWxlUmVnaXN0ZXJzLm51bWJlck9mU2V0UmVnaXN0ZXJzKCksIG1heE51bWJlck9mQ2F0
Y2hTcGlsbHMpOwpAQCAtMjk2LDcgKzI5NSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBt
X291dC5jb25zdEludDY0KG1fZnRsU3RhdGUuZXhjZXB0aW9uSGFuZGxpbmdTcGlsbFNsb3RTdGFj
a21hcElEKSwKICAgICAgICAgICAgICAgICBtX291dC5pbnQzMlplcm8sIGV4Y2VwdGlvbkhhbmRs
aW5nVm9sYXRpbGVSZWdpc3RlcnNTcGlsbFNsb3RzKTsKICAgICAgICAgfQotI2VuZGlmCisjZW5k
aWYgLy8gIUZUTF9VU0VTX0IzCiAgICAgICAgIAogICAgICAgICAvLyBXZSBzaG91bGQgbm90IGNy
ZWF0ZSBhbnkgYWxsb2NhJ3MgYWZ0ZXIgdGhpcyBwb2ludCwgc2luY2UgdGhleSB3aWxsIGNlYXNl
IHRvCiAgICAgICAgIC8vIGJlIG1lbTJyZWcgY2FuZGlkYXRlcy4KQEAgLTUwNjksMzIgKzUwNjgs
MTc0IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBjb21waWxlQ2FsbE9yQ29uc3RydWN0VmFy
YXJncygpCiAgICAgewotI2lmIEZUTF9VU0VTX0IzCi0gICAgICAgIGlmICh2ZXJib3NlQ29tcGls
YXRpb25FbmFibGVkKCkgfHwgIXZlcmJvc2VDb21waWxhdGlvbkVuYWJsZWQoKSkKLSAgICAgICAg
ICAgIENSQVNIKCk7Ci0jZWxzZQorICAgICAgICBOb2RlKiBub2RlID0gbV9ub2RlOwogICAgICAg
ICBMVmFsdWUganNDYWxsZWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAg
ICBMVmFsdWUgdGhpc0FyZyA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDMoKSk7CiAgICAgICAg
IAogICAgICAgICBMVmFsdWUganNBcmd1bWVudHMgPSBudWxscHRyOworICAgICAgICBib29sIGZv
cndhcmRpbmcgPSBmYWxzZTsKICAgICAgICAgCi0gICAgICAgIHN3aXRjaCAobV9ub2RlLT5vcCgp
KSB7CisgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgICAgICBjYXNlIENhbGxWYXJh
cmdzOgogICAgICAgICBjYXNlIFRhaWxDYWxsVmFyYXJnczoKICAgICAgICAgY2FzZSBUYWlsQ2Fs
bFZhcmFyZ3NJbmxpbmVkQ2FsbGVyOgogICAgICAgICBjYXNlIENvbnN0cnVjdFZhcmFyZ3M6Ci0g
ICAgICAgICAgICBqc0FyZ3VtZW50cyA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7Cisg
ICAgICAgICAgICBqc0FyZ3VtZW50cyA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQyKCkpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ2FsbEZvcndhcmRWYXJhcmdzOgogICAgICAg
ICBjYXNlIFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3M6CiAgICAgICAgIGNhc2UgVGFpbENhbGxGb3J3
YXJkVmFyYXJnc0lubGluZWRDYWxsZXI6CiAgICAgICAgIGNhc2UgQ29uc3RydWN0Rm9yd2FyZFZh
cmFyZ3M6CisgICAgICAgICAgICBmb3J3YXJkaW5nID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9k
ZSwgImJhZCBub2RlIHR5cGUiKTsKKyAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBub2Rl
LCAiYmFkIG5vZGUgdHlwZSIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgCisjaWYgRlRMX1VTRVNfQjMKKyAgICAgICAgLy8gRklYTUU6IE5lZWQgYSBzdG9yeSBmb3Ig
ZXhjZXB0aW9ucy4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1MTY4NgorCisgICAgICAgIFBhdGNrcG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1f
b3V0LnBhdGNocG9pbnQoSW50NjQpOworCisgICAgICAgIC8vIEFwcGVuZCB0aGUgZm9ybXMgb2Yg
dGhlIGFyZ3VtZW50cyB0aGF0IHdlIHdpbGwgdXNlIGJlZm9yZSBhbnkgY2xvYmJlcmluZyBoYXBw
ZW5zLgorICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoanNDYWxsZWUsIFZhbHVlUmVwOjpTb21l
UmVnaXN0ZXIpOworICAgICAgICBpZiAoanNBcmd1bWVudHMpCisgICAgICAgICAgICBwYXRjaHBv
aW50LT5hcHBlbmQoanNBcmd1bWVudHMsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpOworICAgICAg
ICBwYXRjaHBvaW50LT5hcHBlbmQodGhpc0FyZywgVmFsdWVSZXA6OlNvbWVSZWdpc3Rlcik7CisK
KyAgICAgICAgaWYgKCFmb3J3YXJkaW5nKSB7CisgICAgICAgICAgICAvLyBOb3cgYXBwZW5kIHRo
ZW0gYWdhaW4gZm9yIGFmdGVyIGNsb2JiZXJpbmcuIE5vdGUgdGhhdCB0aGUgY29tcGlsZXIgbWF5
IGFzayB1cyB0byB1c2UgYQorICAgICAgICAgICAgLy8gZGlmZmVyZW50IHJlZ2lzdGVyIGZvciB0
aGUgbGF0ZSBmb3IgdGhlIHBvc3QtY2xvYmJlcmluZyB2ZXJzaW9uIG9mIHRoZSB2YWx1ZS4gVGhp
cyBnaXZlcworICAgICAgICAgICAgLy8gdGhlIGNvbXBpbGVyIHRvIHNwaWxsIHRoZXNlIHZhbHVl
cyB3aXRob3V0IGhhdmluZyB0byBidXJuIGFueSBjYWxsZWUtc2F2ZXMuCisgICAgICAgICAgICBw
YXRjaHBvaW50LT5hcHBlbmQoanNDYWxsZWUsIFZhbHVlUmVwOjpMYXRlQ29sZEFueSk7CisgICAg
ICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoanNBcmd1bWVudHMsIFZhbHVlUmVwOjpMYXRlQ29s
ZEFueSk7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQodGhpc0FyZywgVmFsdWVSZXA6
OkxhdGVDb2xkQW55KTsKKyAgICAgICAgfQorCisgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIo
UmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGFyY2hwb2lu
dC0+Y2xvYmJlckxhdGUoUmVnaXN0ZXJTZXQ6OnZvbGF0aWxlUmVnaXN0ZXJzRm9ySlNDYWxsKCkp
OworICAgICAgICBwYXRjaHBvaW50LT5yZXN1bHRDb25zdHJhaW50ID0gVmFsdWVSZXA6OnJlZyhH
UFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgLy8gVGhpcyBpcyB0aGUgbWluaW11
bSBhbW91bnQgb2YgY2FsbCBhcmcgYXJlYSBzdGFjayBzcGFjZSB0aGF0IGFsbCBKUy0+SlMgY2Fs
bHMgYWx3YXlzIGhhdmUuCisgICAgICAgIHVuc2lnbmVkIG1pbmltdW1KU0NhbGxBcmVhU2l6ZSA9
CisgICAgICAgICAgICBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykgKworICAgICAgICAgICAgV1RG
Ojpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgNSAqIHNpemVvZihF
bmNvZGVkSlNWYWx1ZSkpOworCisgICAgICAgIG1fcHJvYy5yZXF1ZXN0Q2FsbEFyZ0FyZWFTaXpl
KG1pbmltdW1KU0NhbGxBcmVhU2l6ZSk7CisgICAgICAgIAorICAgICAgICBDb2RlT3JpZ2luIGNv
ZGVPcmlnaW4gPSBjb2RlT3JpZ2luRGVzY3JpcHRpb25PZkNhbGxTaXRlKCk7CisgICAgICAgIFN0
YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOworICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0
b3IoCisgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdl
bmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3Jh
dGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAgICAgICAgICBDYWxs
U2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPQorICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+aml0
Q29kZS0+Y29tbW9uLmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgoY29kZU9yaWdpbik7CisKKyAgICAg
ICAgICAgICAgICAvLyBGSVhNRTogV2Ugd291bGQgYXNrIHRoZSBPU1IgZXhpdCBkZXNjcmlwdG9y
IHRvIHByZXBhcmUgYW5kIHRoZW4gd2Ugd291bGQgbW9kaWZ5CisgICAgICAgICAgICAgICAgLy8g
dGhlIE9TUkV4aXQgZGF0YSBzdHJ1Y3R1cmUgaW5zaWRlIHRoZSBPU1JFeGl0SGFuZGxlIHRvIGxp
bmsgaXQgdXAgdG8gdGhpcyBjYWxsLgorICAgICAgICAgICAgICAgIC8vIEFsc28sIHRoZSBleGNl
cHRpb24gY2hlY2tzIEp1bXBMaXN0IHNob3VsZCBiZSBsaW5rZWQgdG8gc29tZXdoZXJlLgorICAg
ICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTE2ODYKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGV4Y2VwdGlvbnM7
CisKKyAgICAgICAgICAgICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY2FsbFNpdGVJbmRleC5iaXRzKCkpLAorICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoSlNTdGFjazo6
QXJndW1lbnRDb3VudCkpKTsKKworICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExp
bmtJbmZvID0gaml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKKyAgICAgICAgICAg
ICAgICBDYWxsVmFyYXJnc0RhdGEqIGRhdGEgPSBub2RlLT5jYWxsVmFyYXJnc0RhdGEoKTsKKwor
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGFyZ0luZGV4ID0gMTsKKyAgICAgICAgICAgICAgICBH
UFJSZWcgY2FsbGVlR1BSID0gcGFyYW1zW2FyZ0luZGV4KytdLmdwcigpOworICAgICAgICAgICAg
ICAgIEdQUlJlZyBhcmd1bWVudHNHUFIgPSBqc0FyZ3VtZW50cyA/IHBhcmFtc1thcmdJbmRleCsr
XS5ncHIoKSA6IEludmFsaWRHUFJSZWc7CisgICAgICAgICAgICAgICAgR1BSUmVnIHRoaXNHUFIg
PSBwYXJhbXNbYXJnSW5kZXgrK10uZ3ByKCk7CisKKyAgICAgICAgICAgICAgICBCMzo6VmFsdWVS
ZXAgY2FsbGVlTGF0ZVJlcDsKKyAgICAgICAgICAgICAgICBCMzo6VmFsdWVSZXAgYXJndW1lbnRz
TGF0ZVJlcDsKKyAgICAgICAgICAgICAgICBCMzo6VmFsdWVSZXAgdGhpc0xhdGVSZXA7CisgICAg
ICAgICAgICAgICAgaWYgKCFmb3J3YXJkaW5nKSB7CisgICAgICAgICAgICAgICAgICAgIGNhbGxl
ZUxhdGVSZXAgPSBwYXJhbXNbYXJnSW5kZXgrK107CisgICAgICAgICAgICAgICAgICAgIGFyZ3Vt
ZW50c0xhdGVSZXAgPSBwYXJhbXNbYXJnSW5kZXgrK107CisgICAgICAgICAgICAgICAgICAgIHRo
aXNMYXRlUmVwID0gcGFyYW1zW2FyZ0luZGV4KytdOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIC8vIEdldCBzb21lIHNjcmF0Y2ggcmVnaXN0ZXJzLgorICAgICAgICAgICAg
ICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnM7CisgICAgICAgICAgICAgICAgdXNlZFJlZ2lz
dGVycy5tZXJnZShSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSk7CisgICAgICAgICAgICAg
ICAgdXNlZFJlZ2lzdGVycy5tZXJnZShSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lz
dGVycygpKTsKKyAgICAgICAgICAgICAgICB1c2VkUmVnaXN0ZXJzLm1lcmdlKFJlZ2lzdGVyU2V0
OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOworICAgICAgICAgICAgICAgIHVzZWRSZWdpc3RlcnMu
c2V0KGNhbGxlZUdQUik7CisgICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50c0dQUiAhPSBJbnZh
bGlkR1BSUmVnKQorICAgICAgICAgICAgICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChhcmd1bWVu
dHNHUFIpOworICAgICAgICAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KHRoaXNHUFIpOworICAg
ICAgICAgICAgICAgIGlmIChjYWxsZWVMYXRlUmVwLmlzUmVnKCkpCisgICAgICAgICAgICAgICAg
ICAgIHVzZWRSZWdpc3RlcnMuc2V0KGNhbGxlZUxhdGVSZXAucmVnKCkpOworICAgICAgICAgICAg
ICAgIGlmIChhcmd1bWVudHNMYXRlUmVwLmlzUmVnKCkpCisgICAgICAgICAgICAgICAgICAgIHVz
ZWRSZWdpc3RlcnMuc2V0KGFyZ3VtZW50c0xhdGVSZXAucmVnKCkpOworICAgICAgICAgICAgICAg
IGlmICh0aGlzTGF0ZVJlcC5pc1JlZygpKQorICAgICAgICAgICAgICAgICAgICB1c2VkUmVnaXN0
ZXJzLnNldCh0aGlzTGF0ZVJlcC5yZWcoKSk7CisgICAgICAgICAgICAgICAgU2NyYXRjaFJlZ2lz
dGVyQWxsb2NhdG9yIGFsbG9jYXRvcih1c2VkUmVnaXN0ZXJzKTsKKyAgICAgICAgICAgICAgICBH
UFJSZWcgc2NyYXRjaEdQUjEgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CisgICAg
ICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIyID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRj
aEdQUigpOworICAgICAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSMyA9IGZvcndhcmRpbmcg
PyBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCkgOiBJbnZhbGlkR1BSUmVnOworICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFhbGxvY2F0b3IubnVtYmVyT2ZSZXVzZWRSZWdpc3Rl
cnMoKSk7CisKKyAgICAgICAgICAgICAgICBhdXRvIGNhbGxXaXRoRXhjZXB0aW9uQ2hlY2sgPSBb
Jl0gKHZvaWQqIGNhbGxlZSkgeworICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbGVlKSwgR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uQXJn
dW1lbnRHUFIpOworICAgICAgICAgICAgICAgICAgICBqaXQuY2FsbChHUFJJbmZvOjpub25QcmVz
ZXJ2ZWROb25Bcmd1bWVudEdQUik7CisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuYXBw
ZW5kKGppdC5lbWl0RXhjZXB0aW9uQ2hlY2soQXNzZW1ibHlIZWxwZXJzOjpOb3JtYWxFeGNlcHRp
b25DaGVjaywgQXNzZW1ibHlIZWxwZXJzOjpGYXJKdW1wV2lkdGgpKTsKKyAgICAgICAgICAgICAg
ICB9OworCisgICAgICAgICAgICAgICAgYXV0byBhZGp1c3RTdGFjayA9IFsmXSAoR1BSUmVnIGFt
b3VudCkgeworICAgICAgICAgICAgICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTMyKHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIGFtb3VudCwgQ0NhbGxIZWxwZXJz
OjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIG9yaWdpbmFsU3RhY2tIZWlnaHQgPSBwYXJhbXMucHJvYygpLmZyYW1l
U2l6ZSgpOworCisgICAgICAgICAgICAgICAgaWYgKGZvcndhcmRpbmcpIHsKKyAgICAgICAgICAg
ICAgICAgICAgaml0Lm1vdmUoVHJ1c3RlZEltbTMyKG9yaWdpbmFsU3RhY2tIZWlnaHQgLyBzaXpl
b2YoRW5jb2RlZEpTVmFsdWUpKSwgc2NyYXRjaEdQUjIpOworICAgICAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBzbG93Q2FzZTsKKyAg
ICAgICAgICAgICAgICAgICAgZW1pdFNldHVwVmFyYXJnc0ZyYW1lRmFzdENhc2Uoaml0LCBzY3Jh
dGNoR1BSMiwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBzY3JhdGNoR1BSMywgbm9kZS0+Y2hp
bGQyKCktPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUsIGRhdGEtPmZpcnN0VmFyQXJn
T2Zmc2V0LCBzbG93Q2FzZSk7CisKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpK
dW1wIGRvbmUgPSBqaXQuanVtcCgpOworICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZS5saW5r
KCZqaXQpOworICAgICAgICAgICAgICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHNFeGVjU3RhdGUo
KTsKKyAgICAgICAgICAgICAgICAgICAgY2FsbFdpdGhFeGNlcHRpb25DaGVjayhiaXR3aXNlX2Nh
c3Q8dm9pZCo+KG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0ZvclZhcmFyZ3MpKTsKKyAgICAg
ICAgICAgICAgICAgICAgaml0LmFib3J0V2l0aFJlYXNvbihERkdWYXJhcmdzVGhyb3dpbmdQYXRo
RGlkTm90VGhyb3cpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAg
ZG9uZS5saW5rKCZqaXQpOworCisgICAgICAgICAgICAgICAgICAgIGFkanVzdFN0YWNrKHNjcmF0
Y2hHUFIyKTsKKyAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoY2FsbGVlR1BSLCBHUFJJbmZv
OjpyZWdUMCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
aml0Lm1vdmUoVHJ1c3RlZEltbTMyKG9yaWdpbmFsU3RhY2tIZWlnaHQgLyBzaXplb2YoRW5jb2Rl
ZEpTVmFsdWUpKSwgc2NyYXRjaEdQUjEpOworICAgICAgICAgICAgICAgICAgICBqaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZ3VtZW50c0dQUiwgc2NyYXRjaEdQUjEsIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKGRhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0KSk7CisgICAgICAgICAg
ICAgICAgICAgIGNhbGxXaXRoRXhjZXB0aW9uQ2hlY2soYml0d2lzZV9jYXN0PHZvaWQqPihvcGVy
YXRpb25TaXplRnJhbWVGb3JWYXJhcmdzKSk7CisKKyAgICAgICAgICAgICAgICAgICAgaml0Lm1v
dmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIHNjcmF0Y2hHUFIxKTsKKyAgICAgICAgICAgICAg
ICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIob3JpZ2luYWxTdGFja0hl
aWdodCAvIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpLCBzY3JhdGNoR1BSMik7CisgICAgICAgICAg
ICAgICAgICAgIGFyZ3VtZW50c0xhdGVSZXAuZW1pdFJlc3RvcmUoaml0LCBhcmd1bWVudHNHUFIp
OworICAgICAgICAgICAgICAgICAgICBlbWl0U2V0VmFyYXJnc0ZyYW1lKGppdCwgc2NyYXRjaEdQ
UjEsIGZhbHNlLCBzY3JhdGNoR1BSMiwgc2NyYXRjaEdQUjIpOworICAgICAgICAgICAgICAgICAg
ICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC1taW5pbXVtSlNDYWxsQXJl
YVNpemUpLCBzY3JhdGNoR1BSMiwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7
CisgICAgICAgICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoc2Ny
YXRjaEdQUjIsIGFyZ3VtZW50c0dQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoZGF0YS0+
Zmlyc3RWYXJBcmdPZmZzZXQpLCBzY3JhdGNoR1BSMSk7CisgICAgICAgICAgICAgICAgICAgIGNh
bGxXaXRoRXhjZXB0aW9uQ2hlY2soYml0d2lzZV9jYXN0PHZvaWQqPihvcGVyYXRpb25TZXR1cFZh
cmFyZ3NGcmFtZSkpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAg
YWRqdXN0U3RhY2soR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworCisgICAgICAgICAgICAgICAg
ICAgIC8vIE5vdyB3ZSBuZWVkIHRvIGR1bXAgdGhpc0xhdGVSZXAgaW50byB0aGUgc3RhY2sgYW5k
IHdlIG5lZWQgdG8gcHV0IHRoZSBjYWxsZWUKKyAgICAgICAgICAgICAgICAgICAgLy8gaW50byBy
ZWdUMC4gTm90ZSB0aGF0IG5laXRoZXIgb2YgdGhlIExhdGVSZXAncyBjYW4gdXNlIHZvbGF0aWxl
IHJlZ2lzdGVycywgc28KKyAgICAgICAgICAgICAgICAgICAgLy8gdGFraW5nIGNhcmUgb2YgY2Fs
bGVlIGZpcnN0IGlzIHdpc2UuCisgICAgICAgICAgICAgICAgICAgIGNhbGxlZUxhdGVSZXAuZW1p
dFJlc3RvcmUoaml0LCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgICAgICB0aGlzTGF0ZVJlcC5lbWl0UmVzdG9yZShqaXQsIHRoaXNHUFIpOyAv
LyBUaGlzIG1heSBub3QgZW1pdCBjb2RlIGlmIHRoaXNHUFIgZ290IGEgY2FsbGVlLXNhdmUuCisg
ICAgICAgICAgICAgICAgICAgIGppdC5zdG9yZTY0KHRoaXNHUFIsIENDYWxsSGVscGVyczo6Y2Fs
bGVlQXJndW1lbnRTbG90KDApKTsKKworICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRSBtb3Jl
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7CisjZWxzZQogICAgICAgICB1bnNp
Z25lZCBzdGFja21hcElEID0gbV9zdGFja21hcElEcysrOwogICAgICAgICAKICAgICAgICAgU3Rh
Y2ttYXBBcmd1bWVudExpc3QgYXJndW1lbnRzOwpAQCAtNTEwOCwxNSArNTI0OSwxNSBAQCBwcml2
YXRlOgogCiAgICAgICAgIGFyZ3VtZW50cy5pbnNlcnQoMCwgbV9vdXQuY29uc3RJbnQzMigyICsg
ISFqc0FyZ3VtZW50cykpOwogICAgICAgICBhcmd1bWVudHMuaW5zZXJ0KDAsIGNvbnN0TnVsbCht
X291dC5yZWY4KSk7Ci0gICAgICAgIGFyZ3VtZW50cy5pbnNlcnQoMCwgbV9vdXQuY29uc3RJbnQz
MihzaXplT2ZJQ0ZvcihtX25vZGUpKSk7CisgICAgICAgIGFyZ3VtZW50cy5pbnNlcnQoMCwgbV9v
dXQuY29uc3RJbnQzMihzaXplT2ZJQ0Zvcihub2RlKSkpOwogICAgICAgICBhcmd1bWVudHMuaW5z
ZXJ0KDAsIG1fb3V0LmNvbnN0SW50NjQoc3RhY2ttYXBJRCkpOwogICAgICAgICAKICAgICAgICAg
TFZhbHVlIGNhbGwgPSBtX291dC5jYWxsKG1fb3V0LmludDY0LCBtX291dC5wYXRjaHBvaW50SW50
NjRJbnRyaW5zaWMoKSwgYXJndW1lbnRzKTsKICAgICAgICAgc2V0SW5zdHJ1Y3Rpb25DYWxsaW5n
Q29udmVudGlvbihjYWxsLCBMTFZNQ0NhbGxDb252KTsKICAgICAgICAgCi0gICAgICAgIG1fZnRs
U3RhdGUuanNDYWxsVmFyYXJnc2VzLmFwcGVuZChKU0NhbGxWYXJhcmdzKHN0YWNrbWFwSUQsIG1f
bm9kZSwgY29kZU9yaWdpbkRlc2NyaXB0aW9uT2ZDYWxsU2l0ZSgpKSk7CisgICAgICAgIG1fZnRs
U3RhdGUuanNDYWxsVmFyYXJnc2VzLmFwcGVuZChKU0NhbGxWYXJhcmdzKHN0YWNrbWFwSUQsIG5v
ZGUsIGNvZGVPcmlnaW5EZXNjcmlwdGlvbk9mQ2FsbFNpdGUoKSkpOwogCi0gICAgICAgIHN3aXRj
aCAobV9ub2RlLT5vcCgpKSB7CisgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgICAg
ICBjYXNlIFRhaWxDYWxsVmFyYXJnczoKICAgICAgICAgY2FzZSBUYWlsQ2FsbEZvcndhcmRWYXJh
cmdzOgogICAgICAgICAgICAgbV9vdXQudW5yZWFjaGFibGUoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267728</attachid>
            <date>2015-12-20 17:35:45 -0800</date>
            <delta_ts>2015-12-20 22:39:19 -0800</delta_ts>
            <desc>almost done</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>17638</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlUmVwLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZVJlcC5jcHAJKHJldmlzaW9uIDE5
NDMyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlUmVwLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsNiArMjgsOCBAQAogCiAjaWYgRU5BQkxFKEIzX0pJVCkKIAorI2luY2x1
ZGUgIkFzc2VtYmx5SGVscGVycy5oIgorCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsK
IAogdm9pZCBWYWx1ZVJlcDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdApAQCAtNTUsNiAr
NTcsNDkgQEAgdm9pZCBWYWx1ZVJlcDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjbwogICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK3ZvaWQgVmFsdWVSZXA6OmVtaXRSZXN0
b3JlKEFzc2VtYmx5SGVscGVycyYgaml0LCBSZWcgcmVnKQoreworICAgIGlmIChyZWcuaXNHUFIo
KSkgeworICAgICAgICBzd2l0Y2ggKGtpbmQoKSkgeworICAgICAgICBjYXNlIFJlZ2lzdGVyOgor
ICAgICAgICAgICAgaWYgKGlzR1BSKCkpCisgICAgICAgICAgICAgICAgaml0Lm1vdmUoZ3ByKCks
IHJlZy5ncHIoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaml0Lm1vdmVE
b3VibGVUbzY0KGZwcigpLCByZWcuZ3ByKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgU3RhY2s6CisgICAgICAgICAgICBqaXQubG9hZDY0KEFzc2VtYmx5SGVscGVyczo6QWRk
cmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwgb2Zmc2V0RnJvbUZQKCkpLCByZWcuZ3By
KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29uc3RhbnQ6CisgICAgICAg
ICAgICBqaXQubW92ZShUcnVzdGVkSW1tNjQodmFsdWUoKSksIHJlZy5ncHIoKSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIAorICAgIHN3aXRjaCAoa2luZCgpKSB7CisgICAgY2FzZSBSZWdp
c3RlcjoKKyAgICAgICAgaWYgKGlzR1BSKCkpCisgICAgICAgICAgICBqaXQubW92ZTY0VG9Eb3Vi
bGUoZ3ByKCksIHJlZy5mcHIoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGppdC5tb3Zl
RG91YmxlKGZwcigpLCByZWcuZnByKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0YWNr
OgorICAgICAgICBqaXQubG9hZERvdWJsZShBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIG9mZnNldEZyb21GUCgpKSwgcmVnLmZwcigpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBDb25zdGFudDoKKyAgICAgICAgaml0Lm1vdmUoVHJ1c3RlZElt
bTY0KHZhbHVlKCkpLCBqaXQuc2NyYXRjaFJlZ2lzdGVyKCkpOworICAgICAgICBqaXQubW92ZTY0
VG9Eb3VibGUoaml0LnNjcmF0Y2hSZWdpc3RlcigpLCByZWcuZnByKCkpOworICAgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICBicmVhazsKKyAgICB9Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCiBu
YW1lc3BhY2UgV1RGIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlUmVw
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVSZXAuaAko
cmV2aXNpb24gMTk0MzIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVSZXAu
aAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsMTEgQEAKICNpbmNsdWRlICJSZWcuaCIKICNp
bmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBC
MyB7CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQXNzZW1ibHlIZWxwZXJzOworCituYW1lc3Bh
Y2UgQjMgewogCiAvLyBXZSB1c2UgdGhpcyBjbGFzcyB0byBkZXNjcmliZSB2YWx1ZSByZXByZXNl
bnRhdGlvbnMgYXQgc3RhY2ttYXBzLiBJdCdzIHVzZWQgYm90aCB0byBmb3JjZSBhCiAvLyByZXBy
ZXNlbnRhdGlvbiBhbmQgdG8gZ2V0IHRoZSByZXByZXNlbnRhdGlvbi4gV2hlbiB0aGUgQjMgY2xp
ZW50IGZvcmNlcyBhIHJlcHJlc2VudGF0aW9uLCB3ZSBzYXkKQEAgLTIxNiw2ICsyMjAsMTAgQEAg
cHVibGljOgogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wKFByaW50U3RyZWFtJikg
Y29uc3Q7CiAKKyAgICAvLyBUaGlzIGhhcyBhIHNpbXBsZSBjb250cmFjdDogaXQgZW1pdHMgY29k
ZSB0byByZXN0b3JlIHRoZSB2YWx1ZSBpbnRvIHRoZSBnaXZlbiByZWdpc3Rlci4gVGhpcworICAg
IC8vIHdpbGwgd29yayBldmVuIGlmIGl0IHJlcXVpcmVzIG1vdmluZyBiZXR3ZWVuIGJpdHMgYSBH
UFIgYW5kIGEgRlBSLgorICAgIHZvaWQgZW1pdFJlc3RvcmUoQXNzZW1ibHlIZWxwZXJzJiwgUmVn
KTsKKwogcHJpdmF0ZToKICAgICBLaW5kIG1fa2luZDsKICAgICB1bmlvbiBVIHsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAkocmV2aXNpb24gMTk0MzIwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzgs
NyArMzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAvLyBXZSBhcmUgaW4g
dGhlIG1pZGRsZSBvZiBhbiBleHBlcmltZW50YWwgdHJhbnNpdGlvbiBmcm9tIExMVk0gdG8gQjMg
YXMgdGhlIGJhY2tlbmQgZm9yIHRoZSBGVEwuIFdlIGRvbid0CiAvLyB5ZXQga25vdyBob3cgaXQg
d2lsbCB0dXJuIG91dC4gRm9yIG5vdywgdGhpcyBmbGFnIHdpbGwgY29udHJvbCB3aGV0aGVyIEZU
TCB1c2VzIEIzLiBSZW1lbWJlciB0byBzZXQgdGhpcwogLy8gdG8gMCBiZWZvcmUgY29tbWl0dGlu
ZyEKLSNkZWZpbmUgRlRMX1VTRVNfQjMgMAorI2RlZmluZSBGVExfVVNFU19CMyAxCiAKIHN0cnVj
dCBOb2RlOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9M
TFZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9MTFZNLmNwcAkocmV2aXNpb24gMTk0MzIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNSw4ICsyMDUs
OCBAQCBwdWJsaWM6CiAjZW5kaWYgLy8gRlRMX1VTRV9CMwogCiAgICAgICAgIGF1dG8gcHJlT3Jk
ZXIgPSBtX2dyYXBoLmJsb2Nrc0luUHJlT3JkZXIoKTsKLSAgICAgICAgCi0gICAgICAgIC8vIElm
IHdlIGhhdmUgYW55IENhbGxWYXJhcmdzIHRoZW4gd2UgbmVlZCB0byBoYXZlIGEgc3BpbGwgc2xv
dCBmb3IgaXQuCisKKyNpZiAhRlRMX1VTRVNfQjMKICAgICAgICAgYm9vbCBoYXNWYXJhcmdzID0g
ZmFsc2U7CiAgICAgICAgIHNpemVfdCBtYXhOdW1iZXJPZkNhdGNoU3BpbGxzID0gMDsKICAgICAg
ICAgZm9yIChERkc6OkJhc2ljQmxvY2sqIGJsb2NrIDogcHJlT3JkZXIpIHsKQEAgLTI3MCwxMCAr
MjcwLDggQEAgcHVibGljOgogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSNpZiBGVExfVVNF
U19CMwotICAgICAgICBVTlVTRURfUEFSQU0oaGFzVmFyYXJncyk7Ci0gICAgICAgIC8vIEZJWE1F
Ci0jZWxzZQorICAgICAgICAvLyBCMyBkb2Vzbid0IG5lZWQgdGhlIHZhcmFyZ3Mgc3BpbGwgc2xv
dCBiZWNhdXNlIHdlIGp1c3QgdXNlIGNhbGwgYXJnIGFyZWEgc2l6ZSBhcyBhIHdheSB0bworICAg
ICAgICAvLyByZXF1ZXN0IHNwaWxsIHNsb3RzLgogICAgICAgICBpZiAoaGFzVmFyYXJncykgewog
ICAgICAgICAgICAgTFZhbHVlIHZhcmFyZ3NTcGlsbFNsb3RzID0gbV9vdXQuYWxsb2NhKAogICAg
ICAgICAgICAgICAgIGFycmF5VHlwZShtX291dC5pbnQ2NCwgSlNDYWxsVmFyYXJnczo6bnVtU3Bp
bGxTbG90c05lZWRlZCgpKSk7CkBAIC0yODQsNiArMjgyLDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgICAgIG1fb3V0LmludDMyWmVybywgdmFyYXJnc1NwaWxsU2xvdHMpOwogICAgICAgICB9CiAK
KyAgICAgICAgLy8gQjMgZG9lc24ndCBuZWVkIHRoZSBleGNlcHRpb24gc3BpbGwgc2xvdCBiZWNh
dXNlIHdlIGp1c3QgdXNlIHRoZSAKICAgICAgICAgaWYgKG1fZ3JhcGgubV9oYXNFeGNlcHRpb25I
YW5kbGVycyAmJiBtYXhOdW1iZXJPZkNhdGNoU3BpbGxzKSB7CiAgICAgICAgICAgICBSZWdpc3Rl
clNldCB2b2xhdGlsZVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0Ojp2b2xhdGlsZVJlZ2lzdGVyc0Zv
ckpTQ2FsbCgpOwogICAgICAgICAgICAgbWF4TnVtYmVyT2ZDYXRjaFNwaWxscyA9IHN0ZDo6bWlu
KHZvbGF0aWxlUmVnaXN0ZXJzLm51bWJlck9mU2V0UmVnaXN0ZXJzKCksIG1heE51bWJlck9mQ2F0
Y2hTcGlsbHMpOwpAQCAtMjk2LDcgKzI5NSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBt
X291dC5jb25zdEludDY0KG1fZnRsU3RhdGUuZXhjZXB0aW9uSGFuZGxpbmdTcGlsbFNsb3RTdGFj
a21hcElEKSwKICAgICAgICAgICAgICAgICBtX291dC5pbnQzMlplcm8sIGV4Y2VwdGlvbkhhbmRs
aW5nVm9sYXRpbGVSZWdpc3RlcnNTcGlsbFNsb3RzKTsKICAgICAgICAgfQotI2VuZGlmCisjZW5k
aWYgLy8gIUZUTF9VU0VTX0IzCiAgICAgICAgIAogICAgICAgICAvLyBXZSBzaG91bGQgbm90IGNy
ZWF0ZSBhbnkgYWxsb2NhJ3MgYWZ0ZXIgdGhpcyBwb2ludCwgc2luY2UgdGhleSB3aWxsIGNlYXNl
IHRvCiAgICAgICAgIC8vIGJlIG1lbTJyZWcgY2FuZGlkYXRlcy4KQEAgLTUwNjksMzIgKzUwNjgs
MjE2IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBjb21waWxlQ2FsbE9yQ29uc3RydWN0VmFy
YXJncygpCiAgICAgewotI2lmIEZUTF9VU0VTX0IzCi0gICAgICAgIGlmICh2ZXJib3NlQ29tcGls
YXRpb25FbmFibGVkKCkgfHwgIXZlcmJvc2VDb21waWxhdGlvbkVuYWJsZWQoKSkKLSAgICAgICAg
ICAgIENSQVNIKCk7Ci0jZWxzZQorICAgICAgICBOb2RlKiBub2RlID0gbV9ub2RlOwogICAgICAg
ICBMVmFsdWUganNDYWxsZWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAg
ICBMVmFsdWUgdGhpc0FyZyA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDMoKSk7CiAgICAgICAg
IAogICAgICAgICBMVmFsdWUganNBcmd1bWVudHMgPSBudWxscHRyOworICAgICAgICBib29sIGZv
cndhcmRpbmcgPSBmYWxzZTsKICAgICAgICAgCi0gICAgICAgIHN3aXRjaCAobV9ub2RlLT5vcCgp
KSB7CisgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgICAgICBjYXNlIENhbGxWYXJh
cmdzOgogICAgICAgICBjYXNlIFRhaWxDYWxsVmFyYXJnczoKICAgICAgICAgY2FzZSBUYWlsQ2Fs
bFZhcmFyZ3NJbmxpbmVkQ2FsbGVyOgogICAgICAgICBjYXNlIENvbnN0cnVjdFZhcmFyZ3M6Ci0g
ICAgICAgICAgICBqc0FyZ3VtZW50cyA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7Cisg
ICAgICAgICAgICBqc0FyZ3VtZW50cyA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQyKCkpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ2FsbEZvcndhcmRWYXJhcmdzOgogICAgICAg
ICBjYXNlIFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3M6CiAgICAgICAgIGNhc2UgVGFpbENhbGxGb3J3
YXJkVmFyYXJnc0lubGluZWRDYWxsZXI6CiAgICAgICAgIGNhc2UgQ29uc3RydWN0Rm9yd2FyZFZh
cmFyZ3M6CisgICAgICAgICAgICBmb3J3YXJkaW5nID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9k
ZSwgImJhZCBub2RlIHR5cGUiKTsKKyAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBub2Rl
LCAiYmFkIG5vZGUgdHlwZSIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgCisjaWYgRlRMX1VTRVNfQjMKKyAgICAgICAgLy8gRklYTUU6IE5lZWQgYSBzdG9yeSBmb3Ig
ZXhjZXB0aW9ucy4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1MTY4NgorCisgICAgICAgIFBhdGNrcG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1f
b3V0LnBhdGNocG9pbnQoSW50NjQpOworCisgICAgICAgIC8vIEFwcGVuZCB0aGUgZm9ybXMgb2Yg
dGhlIGFyZ3VtZW50cyB0aGF0IHdlIHdpbGwgdXNlIGJlZm9yZSBhbnkgY2xvYmJlcmluZyBoYXBw
ZW5zLgorICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoanNDYWxsZWUsIFZhbHVlUmVwOjpTb21l
UmVnaXN0ZXIpOworICAgICAgICBpZiAoanNBcmd1bWVudHMpCisgICAgICAgICAgICBwYXRjaHBv
aW50LT5hcHBlbmQoanNBcmd1bWVudHMsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpOworICAgICAg
ICBwYXRjaHBvaW50LT5hcHBlbmQodGhpc0FyZywgVmFsdWVSZXA6OlNvbWVSZWdpc3Rlcik7CisK
KyAgICAgICAgaWYgKCFmb3J3YXJkaW5nKSB7CisgICAgICAgICAgICAvLyBOb3cgYXBwZW5kIHRo
ZW0gYWdhaW4gZm9yIGFmdGVyIGNsb2JiZXJpbmcuIE5vdGUgdGhhdCB0aGUgY29tcGlsZXIgbWF5
IGFzayB1cyB0byB1c2UgYQorICAgICAgICAgICAgLy8gZGlmZmVyZW50IHJlZ2lzdGVyIGZvciB0
aGUgbGF0ZSBmb3IgdGhlIHBvc3QtY2xvYmJlcmluZyB2ZXJzaW9uIG9mIHRoZSB2YWx1ZS4gVGhp
cyBnaXZlcworICAgICAgICAgICAgLy8gdGhlIGNvbXBpbGVyIHRvIHNwaWxsIHRoZXNlIHZhbHVl
cyB3aXRob3V0IGhhdmluZyB0byBidXJuIGFueSBjYWxsZWUtc2F2ZXMuCisgICAgICAgICAgICBw
YXRjaHBvaW50LT5hcHBlbmQoanNDYWxsZWUsIFZhbHVlUmVwOjpMYXRlQ29sZEFueSk7CisgICAg
ICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoanNBcmd1bWVudHMsIFZhbHVlUmVwOjpMYXRlQ29s
ZEFueSk7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQodGhpc0FyZywgVmFsdWVSZXA6
OkxhdGVDb2xkQW55KTsKKyAgICAgICAgfQorCisgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIo
UmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGFyY2hwb2lu
dC0+Y2xvYmJlckxhdGUoUmVnaXN0ZXJTZXQ6OnZvbGF0aWxlUmVnaXN0ZXJzRm9ySlNDYWxsKCkp
OworICAgICAgICBwYXRjaHBvaW50LT5yZXN1bHRDb25zdHJhaW50ID0gVmFsdWVSZXA6OnJlZyhH
UFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgLy8gVGhpcyBpcyB0aGUgbWluaW11
bSBhbW91bnQgb2YgY2FsbCBhcmcgYXJlYSBzdGFjayBzcGFjZSB0aGF0IGFsbCBKUy0+SlMgY2Fs
bHMgYWx3YXlzIGhhdmUuCisgICAgICAgIHVuc2lnbmVkIG1pbmltdW1KU0NhbGxBcmVhU2l6ZSA9
CisgICAgICAgICAgICBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykgKworICAgICAgICAgICAgV1RG
Ojpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgNSAqIHNpemVvZihF
bmNvZGVkSlNWYWx1ZSkpOworCisgICAgICAgIG1fcHJvYy5yZXF1ZXN0Q2FsbEFyZ0FyZWFTaXpl
KG1pbmltdW1KU0NhbGxBcmVhU2l6ZSk7CisgICAgICAgIAorICAgICAgICBDb2RlT3JpZ2luIGNv
ZGVPcmlnaW4gPSBjb2RlT3JpZ2luRGVzY3JpcHRpb25PZkNhbGxTaXRlKCk7CisgICAgICAgIFN0
YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOworICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0
b3IoCisgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdl
bmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3Jh
dGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAgICAgICAgICBDYWxs
U2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPQorICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+aml0
Q29kZS0+Y29tbW9uLmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgoY29kZU9yaWdpbik7CisKKyAgICAg
ICAgICAgICAgICAvLyBGSVhNRTogV2Ugd291bGQgYXNrIHRoZSBPU1IgZXhpdCBkZXNjcmlwdG9y
IHRvIHByZXBhcmUgYW5kIHRoZW4gd2Ugd291bGQgbW9kaWZ5CisgICAgICAgICAgICAgICAgLy8g
dGhlIE9TUkV4aXQgZGF0YSBzdHJ1Y3R1cmUgaW5zaWRlIHRoZSBPU1JFeGl0SGFuZGxlIHRvIGxp
bmsgaXQgdXAgdG8gdGhpcyBjYWxsLgorICAgICAgICAgICAgICAgIC8vIEFsc28sIHRoZSBleGNl
cHRpb24gY2hlY2tzIEp1bXBMaXN0IHNob3VsZCBiZSBsaW5rZWQgdG8gc29tZXdoZXJlLgorICAg
ICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTE2ODYKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGV4Y2VwdGlvbnM7
CisKKyAgICAgICAgICAgICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY2FsbFNpdGVJbmRleC5iaXRzKCkpLAorICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoSlNTdGFjazo6
QXJndW1lbnRDb3VudCkpKTsKKworICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExp
bmtJbmZvID0gaml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKKyAgICAgICAgICAg
ICAgICBDYWxsVmFyYXJnc0RhdGEqIGRhdGEgPSBub2RlLT5jYWxsVmFyYXJnc0RhdGEoKTsKKwor
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGFyZ0luZGV4ID0gMTsKKyAgICAgICAgICAgICAgICBH
UFJSZWcgY2FsbGVlR1BSID0gcGFyYW1zW2FyZ0luZGV4KytdLmdwcigpOworICAgICAgICAgICAg
ICAgIEdQUlJlZyBhcmd1bWVudHNHUFIgPSBqc0FyZ3VtZW50cyA/IHBhcmFtc1thcmdJbmRleCsr
XS5ncHIoKSA6IEludmFsaWRHUFJSZWc7CisgICAgICAgICAgICAgICAgR1BSUmVnIHRoaXNHUFIg
PSBwYXJhbXNbYXJnSW5kZXgrK10uZ3ByKCk7CisKKyAgICAgICAgICAgICAgICBCMzo6VmFsdWVS
ZXAgY2FsbGVlTGF0ZVJlcDsKKyAgICAgICAgICAgICAgICBCMzo6VmFsdWVSZXAgYXJndW1lbnRz
TGF0ZVJlcDsKKyAgICAgICAgICAgICAgICBCMzo6VmFsdWVSZXAgdGhpc0xhdGVSZXA7CisgICAg
ICAgICAgICAgICAgaWYgKCFmb3J3YXJkaW5nKSB7CisgICAgICAgICAgICAgICAgICAgIGNhbGxl
ZUxhdGVSZXAgPSBwYXJhbXNbYXJnSW5kZXgrK107CisgICAgICAgICAgICAgICAgICAgIGFyZ3Vt
ZW50c0xhdGVSZXAgPSBwYXJhbXNbYXJnSW5kZXgrK107CisgICAgICAgICAgICAgICAgICAgIHRo
aXNMYXRlUmVwID0gcGFyYW1zW2FyZ0luZGV4KytdOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIC8vIEdldCBzb21lIHNjcmF0Y2ggcmVnaXN0ZXJzLgorICAgICAgICAgICAg
ICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnM7CisgICAgICAgICAgICAgICAgdXNlZFJlZ2lz
dGVycy5tZXJnZShSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSk7CisgICAgICAgICAgICAg
ICAgdXNlZFJlZ2lzdGVycy5tZXJnZShSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lz
dGVycygpKTsKKyAgICAgICAgICAgICAgICB1c2VkUmVnaXN0ZXJzLm1lcmdlKFJlZ2lzdGVyU2V0
OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOworICAgICAgICAgICAgICAgIHVzZWRSZWdpc3RlcnMu
c2V0KGNhbGxlZUdQUik7CisgICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50c0dQUiAhPSBJbnZh
bGlkR1BSUmVnKQorICAgICAgICAgICAgICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChhcmd1bWVu
dHNHUFIpOworICAgICAgICAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KHRoaXNHUFIpOworICAg
ICAgICAgICAgICAgIGlmIChjYWxsZWVMYXRlUmVwLmlzUmVnKCkpCisgICAgICAgICAgICAgICAg
ICAgIHVzZWRSZWdpc3RlcnMuc2V0KGNhbGxlZUxhdGVSZXAucmVnKCkpOworICAgICAgICAgICAg
ICAgIGlmIChhcmd1bWVudHNMYXRlUmVwLmlzUmVnKCkpCisgICAgICAgICAgICAgICAgICAgIHVz
ZWRSZWdpc3RlcnMuc2V0KGFyZ3VtZW50c0xhdGVSZXAucmVnKCkpOworICAgICAgICAgICAgICAg
IGlmICh0aGlzTGF0ZVJlcC5pc1JlZygpKQorICAgICAgICAgICAgICAgICAgICB1c2VkUmVnaXN0
ZXJzLnNldCh0aGlzTGF0ZVJlcC5yZWcoKSk7CisgICAgICAgICAgICAgICAgU2NyYXRjaFJlZ2lz
dGVyQWxsb2NhdG9yIGFsbG9jYXRvcih1c2VkUmVnaXN0ZXJzKTsKKyAgICAgICAgICAgICAgICBH
UFJSZWcgc2NyYXRjaEdQUjEgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CisgICAg
ICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIyID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRj
aEdQUigpOworICAgICAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSMyA9IGZvcndhcmRpbmcg
PyBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCkgOiBJbnZhbGlkR1BSUmVnOworICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFhbGxvY2F0b3IubnVtYmVyT2ZSZXVzZWRSZWdpc3Rl
cnMoKSk7CisKKyAgICAgICAgICAgICAgICBhdXRvIGNhbGxXaXRoRXhjZXB0aW9uQ2hlY2sgPSBb
Jl0gKHZvaWQqIGNhbGxlZSkgeworICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbGVlKSwgR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uQXJn
dW1lbnRHUFIpOworICAgICAgICAgICAgICAgICAgICBqaXQuY2FsbChHUFJJbmZvOjpub25QcmVz
ZXJ2ZWROb25Bcmd1bWVudEdQUik7CisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuYXBw
ZW5kKGppdC5lbWl0RXhjZXB0aW9uQ2hlY2soQXNzZW1ibHlIZWxwZXJzOjpOb3JtYWxFeGNlcHRp
b25DaGVjaywgQXNzZW1ibHlIZWxwZXJzOjpGYXJKdW1wV2lkdGgpKTsKKyAgICAgICAgICAgICAg
ICB9OworCisgICAgICAgICAgICAgICAgYXV0byBhZGp1c3RTdGFjayA9IFsmXSAoR1BSUmVnIGFt
b3VudCkgeworICAgICAgICAgICAgICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTMyKHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIGFtb3VudCwgQ0NhbGxIZWxwZXJz
OjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIG9yaWdpbmFsU3RhY2tIZWlnaHQgPSBwYXJhbXMucHJvYygpLmZyYW1l
U2l6ZSgpOworCisgICAgICAgICAgICAgICAgaWYgKGZvcndhcmRpbmcpIHsKKyAgICAgICAgICAg
ICAgICAgICAgaml0Lm1vdmUoVHJ1c3RlZEltbTMyKG9yaWdpbmFsU3RhY2tIZWlnaHQgLyBzaXpl
b2YoRW5jb2RlZEpTVmFsdWUpKSwgc2NyYXRjaEdQUjIpOworICAgICAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBzbG93Q2FzZTsKKyAg
ICAgICAgICAgICAgICAgICAgZW1pdFNldHVwVmFyYXJnc0ZyYW1lRmFzdENhc2Uoaml0LCBzY3Jh
dGNoR1BSMiwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBzY3JhdGNoR1BSMywgbm9kZS0+Y2hp
bGQyKCktPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUsIGRhdGEtPmZpcnN0VmFyQXJn
T2Zmc2V0LCBzbG93Q2FzZSk7CisKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpK
dW1wIGRvbmUgPSBqaXQuanVtcCgpOworICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZS5saW5r
KCZqaXQpOworICAgICAgICAgICAgICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHNFeGVjU3RhdGUo
KTsKKyAgICAgICAgICAgICAgICAgICAgY2FsbFdpdGhFeGNlcHRpb25DaGVjayhiaXR3aXNlX2Nh
c3Q8dm9pZCo+KG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0ZvclZhcmFyZ3MpKTsKKyAgICAg
ICAgICAgICAgICAgICAgaml0LmFib3J0V2l0aFJlYXNvbihERkdWYXJhcmdzVGhyb3dpbmdQYXRo
RGlkTm90VGhyb3cpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAg
ZG9uZS5saW5rKCZqaXQpOworCisgICAgICAgICAgICAgICAgICAgIGFkanVzdFN0YWNrKHNjcmF0
Y2hHUFIyKTsKKyAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoY2FsbGVlR1BSLCBHUFJJbmZv
OjpyZWdUMCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
aml0Lm1vdmUoVHJ1c3RlZEltbTMyKG9yaWdpbmFsU3RhY2tIZWlnaHQgLyBzaXplb2YoRW5jb2Rl
ZEpTVmFsdWUpKSwgc2NyYXRjaEdQUjEpOworICAgICAgICAgICAgICAgICAgICBqaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZ3VtZW50c0dQUiwgc2NyYXRjaEdQUjEsIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKGRhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0KSk7CisgICAgICAgICAg
ICAgICAgICAgIGNhbGxXaXRoRXhjZXB0aW9uQ2hlY2soYml0d2lzZV9jYXN0PHZvaWQqPihvcGVy
YXRpb25TaXplRnJhbWVGb3JWYXJhcmdzKSk7CisKKyAgICAgICAgICAgICAgICAgICAgaml0Lm1v
dmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIHNjcmF0Y2hHUFIxKTsKKyAgICAgICAgICAgICAg
ICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIob3JpZ2luYWxTdGFja0hl
aWdodCAvIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpLCBzY3JhdGNoR1BSMik7CisgICAgICAgICAg
ICAgICAgICAgIGFyZ3VtZW50c0xhdGVSZXAuZW1pdFJlc3RvcmUoaml0LCBhcmd1bWVudHNHUFIp
OworICAgICAgICAgICAgICAgICAgICBlbWl0U2V0VmFyYXJnc0ZyYW1lKGppdCwgc2NyYXRjaEdQ
UjEsIGZhbHNlLCBzY3JhdGNoR1BSMiwgc2NyYXRjaEdQUjIpOworICAgICAgICAgICAgICAgICAg
ICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC1taW5pbXVtSlNDYWxsQXJl
YVNpemUpLCBzY3JhdGNoR1BSMiwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7
CisgICAgICAgICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoc2Ny
YXRjaEdQUjIsIGFyZ3VtZW50c0dQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoZGF0YS0+
Zmlyc3RWYXJBcmdPZmZzZXQpLCBzY3JhdGNoR1BSMSk7CisgICAgICAgICAgICAgICAgICAgIGNh
bGxXaXRoRXhjZXB0aW9uQ2hlY2soYml0d2lzZV9jYXN0PHZvaWQqPihvcGVyYXRpb25TZXR1cFZh
cmFyZ3NGcmFtZSkpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAg
YWRqdXN0U3RhY2soR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworCisgICAgICAgICAgICAgICAg
ICAgIC8vIE5vdyB3ZSBuZWVkIHRvIGR1bXAgdGhpc0xhdGVSZXAgaW50byB0aGUgc3RhY2sgYW5k
IHdlIG5lZWQgdG8gcHV0IHRoZSBjYWxsZWUKKyAgICAgICAgICAgICAgICAgICAgLy8gaW50byBy
ZWdUMC4gTm90ZSB0aGF0IG5laXRoZXIgb2YgdGhlIExhdGVSZXAncyBjYW4gdXNlIHZvbGF0aWxl
IHJlZ2lzdGVycywgc28KKyAgICAgICAgICAgICAgICAgICAgLy8gdGFraW5nIGNhcmUgb2YgY2Fs
bGVlIGZpcnN0IGlzIHdpc2UuCisgICAgICAgICAgICAgICAgICAgIGNhbGxlZUxhdGVSZXAuZW1p
dFJlc3RvcmUoaml0LCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgICAgICB0aGlzTGF0ZVJlcC5lbWl0UmVzdG9yZShqaXQsIHRoaXNHUFIpOyAv
LyBUaGlzIG1heSBub3QgZW1pdCBjb2RlIGlmIHRoaXNHUFIgZ290IGEgY2FsbGVlLXNhdmUuCisg
ICAgICAgICAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBDQ2FsbEhlbHBl
cnM6OmNhbGxlZUZyYW1lU2xvdChKU1N0YWNrOjpDYWxsZWUpKTsKKyAgICAgICAgICAgICAgICAg
ICAgaml0LnN0b3JlNjQodGhpc0dQUiwgQ0NhbGxIZWxwZXJzOjpjYWxsZWVBcmd1bWVudFNsb3Qo
MCkpOworCisgICAgICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0g
aml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKKworICAgICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OkRhdGVMYWJlbFB0ciB0YXJnZXRUb0NoZWNrOworICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgc2xvd1BhdGggPSBqaXQuYnJhbmNoUHRyV2l0aFBh
dGNoKAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgR1BS
SW5mbzo6cmVnVDAsIHRhcmdldFRvQ2hlY2ssCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoMCkpOworCisgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6SnVtcCBmYXN0Q2FsbCA9IGppdC5uZWFyQ2FsbCgpOworICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9uZSA9IGppdC5qdW1wKCk7CisKKyAgICAgICAgICAg
ICAgICAgICAgc2xvd1BhdGgubGluaygmaml0KTsKKworICAgICAgICAgICAgICAgICAgICBqaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvLCBHUFJJbmZvOjpy
ZWdUMikpOworICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd0NhbGwg
PSBqaXQubmVhckNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwor
CisgICAgICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbzo6Q2FsbFR5cGUgY2FsbFR5cGU7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IENvbnN0cnVjdFZhcmFyZ3MgfHwg
bm9kZS0+b3AoKSA9PSBDb25zdHJ1Y3RGb3J3YXJkVmFyYXJncykKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNhbGxUeXBlID0gQ2FsbExpbmtJbmZvOjpDb25zdHJ1Y3RWYXJhcmdzOworICAgICAg
ICAgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5vcCgpID09IFRhaWxDYWxsVmFyYXJncyB8fCBu
b2RlLT5vcCgpID09IFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3MpCisgICAgICAgICAgICAgICAgICAg
ICAgICBjYWxsVHlwZSA9IENhbGxMaW5rSW5mbzo6VGFpbENhbGxWYXJhcmdzOworICAgICAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBjYWxsVHlwZSA9IENhbGxM
aW5rSW5mbzo6Q2FsbFZhcmFyZ3M7CisgICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+
c2V0VXBDYWxsKGNhbGxUeXBlLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIEdQUkluZm86OnJlZ1Qw
KTsKKworICAgICAgICAgICAgICAgICAgICBqaXQuYWRkUHRyKAorICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoLW9yaWdpbmFsU3RhY2tIZWlnaHQpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxs
SGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworCisgICAgICAgICAgICAgICAgICAgIGpp
dC5hZGRMaW5rVGFzaygKKyAgICAgICAgICAgICAgICAgICAgICAgIFs9XSAoTGlua0J1ZmZlciYg
bGlua0J1ZmZlcikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0ciBsaW5rQ2FsbCA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtC
dWZmZXIudm0oKS5nZXRDVElTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLmNvZGUoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoc2xvd0NhbGwsIEZ1bmN0
aW9uUHRyKGxpbmtDYWxsLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKKworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0Q2FsbExvY2F0aW9ucygKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGwoc2xvd0Nh
bGwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxvY2F0aW9u
T2YodGFyZ2V0VG9DaGVjayksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtC
dWZmZXIubG9jYXRpb25PZk5lYXJDYWxsKGZhc3RDYWxsKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KTsKKworICAgICAgICBz
ZXRKU1ZhbHVlKHBhdGNocG9pbnQpOworI2Vsc2UKICAgICAgICAgdW5zaWduZWQgc3RhY2ttYXBJ
RCA9IG1fc3RhY2ttYXBJRHMrKzsKICAgICAgICAgCiAgICAgICAgIFN0YWNrbWFwQXJndW1lbnRM
aXN0IGFyZ3VtZW50czsKQEAgLTUxMDgsMTUgKzUyOTEsMTUgQEAgcHJpdmF0ZToKIAogICAgICAg
ICBhcmd1bWVudHMuaW5zZXJ0KDAsIG1fb3V0LmNvbnN0SW50MzIoMiArICEhanNBcmd1bWVudHMp
KTsKICAgICAgICAgYXJndW1lbnRzLmluc2VydCgwLCBjb25zdE51bGwobV9vdXQucmVmOCkpOwot
ICAgICAgICBhcmd1bWVudHMuaW5zZXJ0KDAsIG1fb3V0LmNvbnN0SW50MzIoc2l6ZU9mSUNGb3Io
bV9ub2RlKSkpOworICAgICAgICBhcmd1bWVudHMuaW5zZXJ0KDAsIG1fb3V0LmNvbnN0SW50MzIo
c2l6ZU9mSUNGb3Iobm9kZSkpKTsKICAgICAgICAgYXJndW1lbnRzLmluc2VydCgwLCBtX291dC5j
b25zdEludDY0KHN0YWNrbWFwSUQpKTsKICAgICAgICAgCiAgICAgICAgIExWYWx1ZSBjYWxsID0g
bV9vdXQuY2FsbChtX291dC5pbnQ2NCwgbV9vdXQucGF0Y2hwb2ludEludDY0SW50cmluc2ljKCks
IGFyZ3VtZW50cyk7CiAgICAgICAgIHNldEluc3RydWN0aW9uQ2FsbGluZ0NvbnZlbnRpb24oY2Fs
bCwgTExWTUNDYWxsQ29udik7CiAgICAgICAgIAotICAgICAgICBtX2Z0bFN0YXRlLmpzQ2FsbFZh
cmFyZ3Nlcy5hcHBlbmQoSlNDYWxsVmFyYXJncyhzdGFja21hcElELCBtX25vZGUsIGNvZGVPcmln
aW5EZXNjcmlwdGlvbk9mQ2FsbFNpdGUoKSkpOworICAgICAgICBtX2Z0bFN0YXRlLmpzQ2FsbFZh
cmFyZ3Nlcy5hcHBlbmQoSlNDYWxsVmFyYXJncyhzdGFja21hcElELCBub2RlLCBjb2RlT3JpZ2lu
RGVzY3JpcHRpb25PZkNhbGxTaXRlKCkpKTsKIAotICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+b3Ao
KSkgeworICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICAgICAgY2FzZSBUYWlsQ2Fs
bFZhcmFyZ3M6CiAgICAgICAgIGNhc2UgVGFpbENhbGxGb3J3YXJkVmFyYXJnczoKICAgICAgICAg
ICAgIG1fb3V0LnVucmVhY2hhYmxlKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267737</attachid>
            <date>2015-12-20 22:39:19 -0800</date>
            <delta_ts>2015-12-21 10:28:01 -0800</delta_ts>
            <desc>it compiles</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>18706</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlUmVwLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZVJlcC5jcHAJKHJldmlzaW9uIDE5
NDMyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlUmVwLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsNiArMjgsOCBAQAogCiAjaWYgRU5BQkxFKEIzX0pJVCkKIAorI2luY2x1
ZGUgIkFzc2VtYmx5SGVscGVycy5oIgorCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsK
IAogdm9pZCBWYWx1ZVJlcDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdApAQCAtNTUsNiAr
NTcsNDkgQEAgdm9pZCBWYWx1ZVJlcDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjbwogICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK3ZvaWQgVmFsdWVSZXA6OmVtaXRSZXN0
b3JlKEFzc2VtYmx5SGVscGVycyYgaml0LCBSZWcgcmVnKQoreworICAgIGlmIChyZWcuaXNHUFIo
KSkgeworICAgICAgICBzd2l0Y2ggKGtpbmQoKSkgeworICAgICAgICBjYXNlIFJlZ2lzdGVyOgor
ICAgICAgICAgICAgaWYgKGlzR1BSKCkpCisgICAgICAgICAgICAgICAgaml0Lm1vdmUoZ3ByKCks
IHJlZy5ncHIoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaml0Lm1vdmVE
b3VibGVUbzY0KGZwcigpLCByZWcuZ3ByKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgU3RhY2s6CisgICAgICAgICAgICBqaXQubG9hZDY0KEFzc2VtYmx5SGVscGVyczo6QWRk
cmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwgb2Zmc2V0RnJvbUZQKCkpLCByZWcuZ3By
KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29uc3RhbnQ6CisgICAgICAg
ICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW02NCh2YWx1ZSgpKSwgcmVn
LmdwcigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgc3dpdGNoIChraW5kKCkp
IHsKKyAgICBjYXNlIFJlZ2lzdGVyOgorICAgICAgICBpZiAoaXNHUFIoKSkKKyAgICAgICAgICAg
IGppdC5tb3ZlNjRUb0RvdWJsZShncHIoKSwgcmVnLmZwcigpKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgaml0Lm1vdmVEb3VibGUoZnByKCksIHJlZy5mcHIoKSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgU3RhY2s6CisgICAgICAgIGppdC5sb2FkRG91YmxlKEFzc2VtYmx5SGVscGVy
czo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwgb2Zmc2V0RnJvbUZQKCkpLCBy
ZWcuZnByKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENvbnN0YW50OgorICAgICAgICBq
aXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW02NCh2YWx1ZSgpKSwgaml0LnNjcmF0
Y2hSZWdpc3RlcigpKTsKKyAgICAgICAgaml0Lm1vdmU2NFRvRG91YmxlKGppdC5zY3JhdGNoUmVn
aXN0ZXIoKSwgcmVnLmZwcigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
fQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAogbmFtZXNwYWNlIFdURiB7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZVJlcC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlUmVwLmgJKHJldmlzaW9uIDE5NDMyMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlUmVwLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDcgKzM0LDExIEBACiAjaW5jbHVkZSAiUmVnLmgiCiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFt
Lmg+CiAKLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIEFzc2VtYmx5SGVscGVyczsKKworbmFtZXNwYWNlIEIzIHsKIAogLy8gV2UgdXNlIHRo
aXMgY2xhc3MgdG8gZGVzY3JpYmUgdmFsdWUgcmVwcmVzZW50YXRpb25zIGF0IHN0YWNrbWFwcy4g
SXQncyB1c2VkIGJvdGggdG8gZm9yY2UgYQogLy8gcmVwcmVzZW50YXRpb24gYW5kIHRvIGdldCB0
aGUgcmVwcmVzZW50YXRpb24uIFdoZW4gdGhlIEIzIGNsaWVudCBmb3JjZXMgYSByZXByZXNlbnRh
dGlvbiwgd2Ugc2F5CkBAIC0yMTYsNiArMjIwLDEwIEBAIHB1YmxpYzoKIAogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogCisgICAgLy8gVGhpcyBo
YXMgYSBzaW1wbGUgY29udHJhY3Q6IGl0IGVtaXRzIGNvZGUgdG8gcmVzdG9yZSB0aGUgdmFsdWUg
aW50byB0aGUgZ2l2ZW4gcmVnaXN0ZXIuIFRoaXMKKyAgICAvLyB3aWxsIHdvcmsgZXZlbiBpZiBp
dCByZXF1aXJlcyBtb3ZpbmcgYmV0d2VlbiBiaXRzIGEgR1BSIGFuZCBhIEZQUi4KKyAgICB2b2lk
IGVtaXRSZXN0b3JlKEFzc2VtYmx5SGVscGVycyYsIFJlZyk7CisKIHByaXZhdGU6CiAgICAgS2lu
ZCBtX2tpbmQ7CiAgICAgdW5pb24gVSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q29tbW9uLmgJKHJldmlzaW9uIDE5NDMyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBERkcgewogLy8gV2UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYW4gZXhwZXJp
bWVudGFsIHRyYW5zaXRpb24gZnJvbSBMTFZNIHRvIEIzIGFzIHRoZSBiYWNrZW5kIGZvciB0aGUg
RlRMLiBXZSBkb24ndAogLy8geWV0IGtub3cgaG93IGl0IHdpbGwgdHVybiBvdXQuIEZvciBub3cs
IHRoaXMgZmxhZyB3aWxsIGNvbnRyb2wgd2hldGhlciBGVEwgdXNlcyBCMy4gUmVtZW1iZXIgdG8g
c2V0IHRoaXMKIC8vIHRvIDAgYmVmb3JlIGNvbW1pdHRpbmchCi0jZGVmaW5lIEZUTF9VU0VTX0Iz
IDAKKyNkZWZpbmUgRlRMX1VTRVNfQjMgMQogCiBzdHJ1Y3QgTm9kZTsKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHJldmlzaW9u
IDE5NDMyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAiU2NvcGVkQXJn
dW1lbnRzLmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzVGFibGUuaCIKICNpbmNsdWRlICJT
Y3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCIKKyNpbmNsdWRlICJTZXR1cFZhcmFyZ3NGcmFtZS5o
IgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgogI2luY2x1ZGUgIldhdGNoZG9nLmgiCiAj
aW5jbHVkZSA8YXRvbWljPgpAQCAtMjA1LDggKzIwNiw4IEBAIHB1YmxpYzoKICNlbmRpZiAvLyBG
VExfVVNFX0IzCiAKICAgICAgICAgYXV0byBwcmVPcmRlciA9IG1fZ3JhcGguYmxvY2tzSW5QcmVP
cmRlcigpOwotICAgICAgICAKLSAgICAgICAgLy8gSWYgd2UgaGF2ZSBhbnkgQ2FsbFZhcmFyZ3Mg
dGhlbiB3ZSBuZWVkIHRvIGhhdmUgYSBzcGlsbCBzbG90IGZvciBpdC4KKworI2lmICFGVExfVVNF
U19CMwogICAgICAgICBib29sIGhhc1ZhcmFyZ3MgPSBmYWxzZTsKICAgICAgICAgc2l6ZV90IG1h
eE51bWJlck9mQ2F0Y2hTcGlsbHMgPSAwOwogICAgICAgICBmb3IgKERGRzo6QmFzaWNCbG9jayog
YmxvY2sgOiBwcmVPcmRlcikgewpAQCAtMjcwLDEwICsyNzEsOCBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIAotI2lmIEZUTF9VU0VTX0IzCi0gICAgICAgIFVOVVNFRF9QQVJB
TShoYXNWYXJhcmdzKTsKLSAgICAgICAgLy8gRklYTUUKLSNlbHNlCisgICAgICAgIC8vIEIzIGRv
ZXNuJ3QgbmVlZCB0aGUgdmFyYXJncyBzcGlsbCBzbG90IGJlY2F1c2Ugd2UganVzdCB1c2UgY2Fs
bCBhcmcgYXJlYSBzaXplIGFzIGEgd2F5IHRvCisgICAgICAgIC8vIHJlcXVlc3Qgc3BpbGwgc2xv
dHMuCiAgICAgICAgIGlmIChoYXNWYXJhcmdzKSB7CiAgICAgICAgICAgICBMVmFsdWUgdmFyYXJn
c1NwaWxsU2xvdHMgPSBtX291dC5hbGxvY2EoCiAgICAgICAgICAgICAgICAgYXJyYXlUeXBlKG1f
b3V0LmludDY0LCBKU0NhbGxWYXJhcmdzOjpudW1TcGlsbFNsb3RzTmVlZGVkKCkpKTsKQEAgLTI4
NCw2ICsyODMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgbV9vdXQuaW50MzJaZXJvLCB2
YXJhcmdzU3BpbGxTbG90cyk7CiAgICAgICAgIH0KIAorICAgICAgICAvLyBCMyBkb2Vzbid0IG5l
ZWQgdGhlIGV4Y2VwdGlvbiBzcGlsbCBzbG90IGJlY2F1c2Ugd2UganVzdCB1c2UgdGhlIAogICAg
ICAgICBpZiAobV9ncmFwaC5tX2hhc0V4Y2VwdGlvbkhhbmRsZXJzICYmIG1heE51bWJlck9mQ2F0
Y2hTcGlsbHMpIHsKICAgICAgICAgICAgIFJlZ2lzdGVyU2V0IHZvbGF0aWxlUmVnaXN0ZXJzID0g
UmVnaXN0ZXJTZXQ6OnZvbGF0aWxlUmVnaXN0ZXJzRm9ySlNDYWxsKCk7CiAgICAgICAgICAgICBt
YXhOdW1iZXJPZkNhdGNoU3BpbGxzID0gc3RkOjptaW4odm9sYXRpbGVSZWdpc3RlcnMubnVtYmVy
T2ZTZXRSZWdpc3RlcnMoKSwgbWF4TnVtYmVyT2ZDYXRjaFNwaWxscyk7CkBAIC0yOTYsNyArMjk2
LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQobV9mdGxTdGF0
ZS5leGNlcHRpb25IYW5kbGluZ1NwaWxsU2xvdFN0YWNrbWFwSUQpLAogICAgICAgICAgICAgICAg
IG1fb3V0LmludDMyWmVybywgZXhjZXB0aW9uSGFuZGxpbmdWb2xhdGlsZVJlZ2lzdGVyc1NwaWxs
U2xvdHMpOwogICAgICAgICB9Ci0jZW5kaWYKKyNlbmRpZiAvLyAhRlRMX1VTRVNfQjMKICAgICAg
ICAgCiAgICAgICAgIC8vIFdlIHNob3VsZCBub3QgY3JlYXRlIGFueSBhbGxvY2EncyBhZnRlciB0
aGlzIHBvaW50LCBzaW5jZSB0aGV5IHdpbGwgY2Vhc2UgdG8KICAgICAgICAgLy8gYmUgbWVtMnJl
ZyBjYW5kaWRhdGVzLgpAQCAtNTA2OSwzMiArNTA2OSwyMjkgQEAgcHJpdmF0ZToKICAgICAKICAg
ICB2b2lkIGNvbXBpbGVDYWxsT3JDb25zdHJ1Y3RWYXJhcmdzKCkKICAgICB7Ci0jaWYgRlRMX1VT
RVNfQjMKLSAgICAgICAgaWYgKHZlcmJvc2VDb21waWxhdGlvbkVuYWJsZWQoKSB8fCAhdmVyYm9z
ZUNvbXBpbGF0aW9uRW5hYmxlZCgpKQotICAgICAgICAgICAgQ1JBU0goKTsKLSNlbHNlCisgICAg
ICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7CiAgICAgICAgIExWYWx1ZSBqc0NhbGxlZSA9IGxvd0pT
VmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIExWYWx1ZSB0aGlzQXJnID0gbG93SlNW
YWx1ZShtX25vZGUtPmNoaWxkMygpKTsKICAgICAgICAgCiAgICAgICAgIExWYWx1ZSBqc0FyZ3Vt
ZW50cyA9IG51bGxwdHI7CisgICAgICAgIGJvb2wgZm9yd2FyZGluZyA9IGZhbHNlOwogICAgICAg
ICAKLSAgICAgICAgc3dpdGNoIChtX25vZGUtPm9wKCkpIHsKKyAgICAgICAgc3dpdGNoIChub2Rl
LT5vcCgpKSB7CiAgICAgICAgIGNhc2UgQ2FsbFZhcmFyZ3M6CiAgICAgICAgIGNhc2UgVGFpbENh
bGxWYXJhcmdzOgogICAgICAgICBjYXNlIFRhaWxDYWxsVmFyYXJnc0lubGluZWRDYWxsZXI6CiAg
ICAgICAgIGNhc2UgQ29uc3RydWN0VmFyYXJnczoKLSAgICAgICAgICAgIGpzQXJndW1lbnRzID0g
bG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGpzQXJndW1lbnRzID0g
bG93SlNWYWx1ZShub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDYWxsRm9yd2FyZFZhcmFyZ3M6CiAgICAgICAgIGNhc2UgVGFpbENhbGxGb3J3YXJkVmFy
YXJnczoKICAgICAgICAgY2FzZSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzSW5saW5lZENhbGxlcjoK
ICAgICAgICAgY2FzZSBDb25zdHJ1Y3RGb3J3YXJkVmFyYXJnczoKKyAgICAgICAgICAgIGZvcndh
cmRpbmcgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbV9ub2RlLCAiYmFkIG5vZGUgdHlwZSIpOworICAg
ICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG5vZGUsICJiYWQgbm9kZSB0eXBlIik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKKyNpZiBGVExfVVNFU19CMworICAg
ICAgICAvLyBGSVhNRTogTmVlZCBhIHN0b3J5IGZvciBleGNlcHRpb25zLgorICAgICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNjg2CisKKyAgICAgICAg
UGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChJbnQ2NCk7CisK
KyAgICAgICAgLy8gQXBwZW5kIHRoZSBmb3JtcyBvZiB0aGUgYXJndW1lbnRzIHRoYXQgd2Ugd2ls
bCB1c2UgYmVmb3JlIGFueSBjbG9iYmVyaW5nIGhhcHBlbnMuCisgICAgICAgIHBhdGNocG9pbnQt
PmFwcGVuZChqc0NhbGxlZSwgVmFsdWVSZXA6OnJlZyhHUFJJbmZvOjpyZWdUMCkpOworICAgICAg
ICBpZiAoanNBcmd1bWVudHMpCisgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoanNBcmd1
bWVudHMsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBl
bmQodGhpc0FyZywgVmFsdWVSZXA6OlNvbWVSZWdpc3Rlcik7CisKKyAgICAgICAgaWYgKCFmb3J3
YXJkaW5nKSB7CisgICAgICAgICAgICAvLyBOb3cgYXBwZW5kIHRoZW0gYWdhaW4gZm9yIGFmdGVy
IGNsb2JiZXJpbmcuIE5vdGUgdGhhdCB0aGUgY29tcGlsZXIgbWF5IGFzayB1cyB0byB1c2UgYQor
ICAgICAgICAgICAgLy8gZGlmZmVyZW50IHJlZ2lzdGVyIGZvciB0aGUgbGF0ZSBmb3IgdGhlIHBv
c3QtY2xvYmJlcmluZyB2ZXJzaW9uIG9mIHRoZSB2YWx1ZS4gVGhpcyBnaXZlcworICAgICAgICAg
ICAgLy8gdGhlIGNvbXBpbGVyIHRvIHNwaWxsIHRoZXNlIHZhbHVlcyB3aXRob3V0IGhhdmluZyB0
byBidXJuIGFueSBjYWxsZWUtc2F2ZXMuCisgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQo
anNDYWxsZWUsIFZhbHVlUmVwOjpMYXRlQ29sZEFueSk7CisgICAgICAgICAgICBwYXRjaHBvaW50
LT5hcHBlbmQoanNBcmd1bWVudHMsIFZhbHVlUmVwOjpMYXRlQ29sZEFueSk7CisgICAgICAgICAg
ICBwYXRjaHBvaW50LT5hcHBlbmQodGhpc0FyZywgVmFsdWVSZXA6OkxhdGVDb2xkQW55KTsKKyAg
ICAgICAgfQorCisgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3Jv
U2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUoUmVn
aXN0ZXJTZXQ6OnZvbGF0aWxlUmVnaXN0ZXJzRm9ySlNDYWxsKCkpOworICAgICAgICBwYXRjaHBv
aW50LT5yZXN1bHRDb25zdHJhaW50ID0gVmFsdWVSZXA6OnJlZyhHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUik7CisKKyAgICAgICAgLy8gVGhpcyBpcyB0aGUgbWluaW11bSBhbW91bnQgb2YgY2FsbCBh
cmcgYXJlYSBzdGFjayBzcGFjZSB0aGF0IGFsbCBKUy0+SlMgY2FsbHMgYWx3YXlzIGhhdmUuCisg
ICAgICAgIHVuc2lnbmVkIG1pbmltdW1KU0NhbGxBcmVhU2l6ZSA9CisgICAgICAgICAgICBzaXpl
b2YoQ2FsbGVyRnJhbWVBbmRQQykgKworICAgICAgICAgICAgV1RGOjpyb3VuZFVwVG9NdWx0aXBs
ZU9mKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgNSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpOwor
CisgICAgICAgIG1fcHJvYy5yZXF1ZXN0Q2FsbEFyZ0FyZWFTaXplKG1pbmltdW1KU0NhbGxBcmVh
U2l6ZSk7CisgICAgICAgIAorICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBjb2RlT3Jp
Z2luRGVzY3JpcHRpb25PZkNhbGxTaXRlKCk7CisgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0
bFN0YXRlOworICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCisgICAgICAgICAgICBb
PV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBh
cmFtcykgeworICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBh
bGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRl
SW5kZXggPQorICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmFkZFVu
aXF1ZUNhbGxTaXRlSW5kZXgoY29kZU9yaWdpbik7CisKKyAgICAgICAgICAgICAgICAvLyBGSVhN
RTogV2Ugd291bGQgYXNrIHRoZSBPU1IgZXhpdCBkZXNjcmlwdG9yIHRvIHByZXBhcmUgYW5kIHRo
ZW4gd2Ugd291bGQgbW9kaWZ5CisgICAgICAgICAgICAgICAgLy8gdGhlIE9TUkV4aXQgZGF0YSBz
dHJ1Y3R1cmUgaW5zaWRlIHRoZSBPU1JFeGl0SGFuZGxlIHRvIGxpbmsgaXQgdXAgdG8gdGhpcyBj
YWxsLgorICAgICAgICAgICAgICAgIC8vIEFsc28sIHRoZSBleGNlcHRpb24gY2hlY2tzIEp1bXBM
aXN0IHNob3VsZCBiZSBsaW5rZWQgdG8gc29tZXdoZXJlLgorICAgICAgICAgICAgICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE2ODYKKyAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGV4Y2VwdGlvbnM7CisKKyAgICAgICAgICAgICAg
ICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoY2FsbFNpdGVJbmRleC5iaXRzKCkpLAorICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoSlNTdGFjazo6QXJndW1lbnRDb3VudCkpKTsK
KworICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gaml0LmNvZGVC
bG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKKyAgICAgICAgICAgICAgICBDYWxsVmFyYXJnc0Rh
dGEqIGRhdGEgPSBub2RlLT5jYWxsVmFyYXJnc0RhdGEoKTsKKworICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGFyZ0luZGV4ID0gMTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgY2FsbGVlR1BSID0g
cGFyYW1zW2FyZ0luZGV4KytdLmdwcigpOworICAgICAgICAgICAgICAgIEFTU0VSVChjYWxsZWVH
UFIgPT0gR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgICAgIEdQUlJlZyBhcmd1bWVudHNH
UFIgPSBqc0FyZ3VtZW50cyA/IHBhcmFtc1thcmdJbmRleCsrXS5ncHIoKSA6IEludmFsaWRHUFJS
ZWc7CisgICAgICAgICAgICAgICAgR1BSUmVnIHRoaXNHUFIgPSBwYXJhbXNbYXJnSW5kZXgrK10u
Z3ByKCk7CisKKyAgICAgICAgICAgICAgICBCMzo6VmFsdWVSZXAgY2FsbGVlTGF0ZVJlcDsKKyAg
ICAgICAgICAgICAgICBCMzo6VmFsdWVSZXAgYXJndW1lbnRzTGF0ZVJlcDsKKyAgICAgICAgICAg
ICAgICBCMzo6VmFsdWVSZXAgdGhpc0xhdGVSZXA7CisgICAgICAgICAgICAgICAgaWYgKCFmb3J3
YXJkaW5nKSB7CisgICAgICAgICAgICAgICAgICAgIGNhbGxlZUxhdGVSZXAgPSBwYXJhbXNbYXJn
SW5kZXgrK107CisgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50c0xhdGVSZXAgPSBwYXJhbXNb
YXJnSW5kZXgrK107CisgICAgICAgICAgICAgICAgICAgIHRoaXNMYXRlUmVwID0gcGFyYW1zW2Fy
Z0luZGV4KytdOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIEdldCBz
b21lIHNjcmF0Y2ggcmVnaXN0ZXJzLgorICAgICAgICAgICAgICAgIFJlZ2lzdGVyU2V0IHVzZWRS
ZWdpc3RlcnM7CisgICAgICAgICAgICAgICAgdXNlZFJlZ2lzdGVycy5tZXJnZShSZWdpc3RlclNl
dDo6c3RhY2tSZWdpc3RlcnMoKSk7CisgICAgICAgICAgICAgICAgdXNlZFJlZ2lzdGVycy5tZXJn
ZShSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycygpKTsKKyAgICAgICAgICAg
ICAgICB1c2VkUmVnaXN0ZXJzLm1lcmdlKFJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJz
KCkpOworICAgICAgICAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KGNhbGxlZUdQUik7CisgICAg
ICAgICAgICAgICAgaWYgKGFyZ3VtZW50c0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAg
ICAgICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChhcmd1bWVudHNHUFIpOworICAgICAgICAgICAg
ICAgIHVzZWRSZWdpc3RlcnMuc2V0KHRoaXNHUFIpOworICAgICAgICAgICAgICAgIGlmIChjYWxs
ZWVMYXRlUmVwLmlzUmVnKCkpCisgICAgICAgICAgICAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0
KGNhbGxlZUxhdGVSZXAucmVnKCkpOworICAgICAgICAgICAgICAgIGlmIChhcmd1bWVudHNMYXRl
UmVwLmlzUmVnKCkpCisgICAgICAgICAgICAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KGFyZ3Vt
ZW50c0xhdGVSZXAucmVnKCkpOworICAgICAgICAgICAgICAgIGlmICh0aGlzTGF0ZVJlcC5pc1Jl
ZygpKQorICAgICAgICAgICAgICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldCh0aGlzTGF0ZVJlcC5y
ZWcoKSk7CisgICAgICAgICAgICAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yIGFsbG9jYXRv
cih1c2VkUmVnaXN0ZXJzKTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUjEgPSBh
bGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CisgICAgICAgICAgICAgICAgR1BSUmVnIHNj
cmF0Y2hHUFIyID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOworICAgICAgICAgICAg
ICAgIEdQUlJlZyBzY3JhdGNoR1BSMyA9IGZvcndhcmRpbmcgPyBhbGxvY2F0b3IuYWxsb2NhdGVT
Y3JhdGNoR1BSKCkgOiBJbnZhbGlkR1BSUmVnOworICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKCFhbGxvY2F0b3IubnVtYmVyT2ZSZXVzZWRSZWdpc3RlcnMoKSk7CisKKyAgICAgICAgICAg
ICAgICBhdXRvIGNhbGxXaXRoRXhjZXB0aW9uQ2hlY2sgPSBbJl0gKHZvaWQqIGNhbGxlZSkgewor
ICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
Y2FsbGVlKSwgR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFIpOworICAgICAgICAg
ICAgICAgICAgICBqaXQuY2FsbChHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25Bcmd1bWVudEdQUik7
CisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuYXBwZW5kKGppdC5lbWl0RXhjZXB0aW9u
Q2hlY2soQXNzZW1ibHlIZWxwZXJzOjpOb3JtYWxFeGNlcHRpb25DaGVjaywgQXNzZW1ibHlIZWxw
ZXJzOjpGYXJKdW1wV2lkdGgpKTsKKyAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAg
ICAgYXV0byBhZGp1c3RTdGFjayA9IFsmXSAoR1BSUmVnIGFtb3VudCkgeworICAgICAgICAgICAg
ICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHNpemVvZihDYWxs
ZXJGcmFtZUFuZFBDKSksIGFtb3VudCwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rl
cik7CisgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgIHVuc2lnbmVkIG9yaWdp
bmFsU3RhY2tIZWlnaHQgPSBwYXJhbXMucHJvYygpLmZyYW1lU2l6ZSgpOworCisgICAgICAgICAg
ICAgICAgaWYgKGZvcndhcmRpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIob3JpZ2luYWxTdGFja0hlaWdodCAvIHNpemVvZihFbmNv
ZGVkSlNWYWx1ZSkpLCBzY3JhdGNoR1BSMik7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IHNsb3dDYXNlOworICAgICAgICAg
ICAgICAgICAgICBlbWl0U2V0dXBWYXJhcmdzRnJhbWVGYXN0Q2FzZShqaXQsIHNjcmF0Y2hHUFIy
LCBzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjIsIHNjcmF0Y2hHUFIzLCBub2RlLT5jaGlsZDIoKS0+
b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSwgZGF0YS0+Zmlyc3RWYXJBcmdPZmZzZXQs
IHNsb3dDYXNlKTsKKworICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9u
ZSA9IGppdC5qdW1wKCk7CisgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlLmxpbmsoJmppdCk7
CisgICAgICAgICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50c0V4ZWNTdGF0ZSgpOworICAg
ICAgICAgICAgICAgICAgICBjYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGJpdHdpc2VfY2FzdDx2b2lk
Kj4ob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93Rm9yVmFyYXJncykpOworICAgICAgICAgICAg
ICAgICAgICBqaXQuYWJvcnRXaXRoUmVhc29uKERGR1ZhcmFyZ3NUaHJvd2luZ1BhdGhEaWROb3RU
aHJvdyk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBkb25lLmxp
bmsoJmppdCk7CisKKyAgICAgICAgICAgICAgICAgICAgYWRqdXN0U3RhY2soc2NyYXRjaEdQUjIp
OworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGppdC5tb3Zl
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG9yaWdpbmFsU3RhY2tIZWlnaHQgLyBzaXplb2Yo
RW5jb2RlZEpTVmFsdWUpKSwgc2NyYXRjaEdQUjEpOworICAgICAgICAgICAgICAgICAgICBqaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZ3VtZW50c0dQUiwgc2NyYXRjaEdQUjEsIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGRhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0KSk7CisgICAg
ICAgICAgICAgICAgICAgIGNhbGxXaXRoRXhjZXB0aW9uQ2hlY2soYml0d2lzZV9jYXN0PHZvaWQq
PihvcGVyYXRpb25TaXplRnJhbWVGb3JWYXJhcmdzKSk7CisKKyAgICAgICAgICAgICAgICAgICAg
aml0Lm1vdmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIHNjcmF0Y2hHUFIxKTsKKyAgICAgICAg
ICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIob3JpZ2luYWxT
dGFja0hlaWdodCAvIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpLCBzY3JhdGNoR1BSMik7CisgICAg
ICAgICAgICAgICAgICAgIGFyZ3VtZW50c0xhdGVSZXAuZW1pdFJlc3RvcmUoaml0LCBhcmd1bWVu
dHNHUFIpOworICAgICAgICAgICAgICAgICAgICBlbWl0U2V0VmFyYXJnc0ZyYW1lKGppdCwgc2Ny
YXRjaEdQUjEsIGZhbHNlLCBzY3JhdGNoR1BSMiwgc2NyYXRjaEdQUjIpOworICAgICAgICAgICAg
ICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC1taW5pbXVtSlND
YWxsQXJlYVNpemUpLCBzY3JhdGNoR1BSMiwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdp
c3Rlcik7CisgICAgICAgICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoc2NyYXRjaEdQUjIsIGFyZ3VtZW50c0dQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
ZGF0YS0+Zmlyc3RWYXJBcmdPZmZzZXQpLCBzY3JhdGNoR1BSMSk7CisgICAgICAgICAgICAgICAg
ICAgIGNhbGxXaXRoRXhjZXB0aW9uQ2hlY2soYml0d2lzZV9jYXN0PHZvaWQqPihvcGVyYXRpb25T
ZXR1cFZhcmFyZ3NGcmFtZSkpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICAgICAgYWRqdXN0U3RhY2soR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworCisgICAgICAgICAg
ICAgICAgICAgIGNhbGxlZUxhdGVSZXAuZW1pdFJlc3RvcmUoaml0LCBHUFJJbmZvOjpyZWdUMCk7
CisKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBtYXkgbm90IGVtaXQgY29kZSBpZiB0aGlz
R1BSIGdvdCBhIGNhbGxlZS1zYXZlLiBBbHNvLCB3ZSdyZSBndWFyYW50ZWVkCisgICAgICAgICAg
ICAgICAgICAgIC8vIHRoYXQgdGhpc0dQUiAhPSBHUFJJbmZvOjpyZWdUMCBiZWNhdXNlIHJlZ1Qw
IGludGVyZmVyZXMgd2l0aCBpdC4KKyAgICAgICAgICAgICAgICAgICAgdGhpc0xhdGVSZXAuZW1p
dFJlc3RvcmUoaml0LCB0aGlzR1BSKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIENDYWxsSGVs
cGVyczo6Y2FsbGVlRnJhbWVTbG90KEpTU3RhY2s6OkNhbGxlZSkpOworICAgICAgICAgICAgICAg
IGppdC5zdG9yZTY0KHRoaXNHUFIsIENDYWxsSGVscGVyczo6Y2FsbGVlQXJndW1lbnRTbG90KDAp
KTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBDYWxsTGlua0luZm86OkNhbGxU
eXBlIGNhbGxUeXBlOworICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IENvbnN0cnVj
dFZhcmFyZ3MgfHwgbm9kZS0+b3AoKSA9PSBDb25zdHJ1Y3RGb3J3YXJkVmFyYXJncykKKyAgICAg
ICAgICAgICAgICAgICAgY2FsbFR5cGUgPSBDYWxsTGlua0luZm86OkNvbnN0cnVjdFZhcmFyZ3M7
CisgICAgICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+b3AoKSA9PSBUYWlsQ2FsbFZhcmFyZ3Mg
fHwgbm9kZS0+b3AoKSA9PSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzKQorICAgICAgICAgICAgICAg
ICAgICBjYWxsVHlwZSA9IENhbGxMaW5rSW5mbzo6VGFpbENhbGxWYXJhcmdzOworICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgY2FsbFR5cGUgPSBDYWxsTGlua0luZm86
OkNhbGxWYXJhcmdzOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGJvb2wgaXNU
YWlsQ2FsbCA9IENhbGxMaW5rSW5mbzo6Y2FsbE1vZGVGb3IoY2FsbFR5cGUpID09IENhbGxNb2Rl
OjpUYWlsOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
RGF0YUxhYmVsUHRyIHRhcmdldFRvQ2hlY2s7CisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpKdW1wIHNsb3dQYXRoID0gaml0LmJyYW5jaFB0cldpdGhQYXRjaCgKKyAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgR1BSSW5mbzo6cmVnVDAsIHRhcmdldFRvQ2hl
Y2ssCisgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigwKSk7
CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGZh
c3RDYWxsOworICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBkb25lOworICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChpc1RhaWxDYWxsKSB7CisgICAgICAgICAg
ICAgICAgICAgIGppdC5wcmVwYXJlRm9yVGFpbENhbGxTbG93KCk7CisgICAgICAgICAgICAgICAg
ICAgIGZhc3RDYWxsID0gaml0Lm5lYXJUYWlsQ2FsbCgpOworICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgIGZhc3RDYWxsID0gaml0Lm5lYXJDYWxsKCk7CisgICAg
ICAgICAgICAgICAgICAgIGRvbmUgPSBqaXQuanVtcCgpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBzbG93UGF0aC5saW5rKCZqaXQpOworICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihjYWxsTGlua0luZm8pLCBHUFJJbmZvOjpyZWdUMik7CisgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dDYWxsID0gaml0Lm5lYXJDYWxsKCk7CisgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKGlzVGFpbENhbGwpCisgICAgICAgICAgICAg
ICAgICAgIGppdC5hYm9ydFdpdGhSZWFzb24oSklURGlkUmV0dXJuRnJvbVRhaWxDYWxsKTsKKyAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGRvbmUubGluaygmaml0KTsK
KyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2Fs
bChjYWxsVHlwZSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBHUFJJbmZvOjpyZWdUMCk7CisgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaml0LmFkZFB0cigKKyAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoLW9yaWdpbmFsU3RhY2tIZWlnaHQpLAor
ICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ0NhbGxIZWxw
ZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgaml0LmFkZExpbmtUYXNrKAorICAgICAgICAgICAgICAgICAgICBbPV0gKExpbmtCdWZm
ZXImIGxpbmtCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0ciBsaW5rQ2FsbCA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZl
ci52bSgpLmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKHNsb3dDYWxsLCBGdW5jdGlvblB0cihs
aW5rQ2FsbC5leGVjdXRhYmxlQWRkcmVzcygpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0Q2FsbExvY2F0aW9ucygK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxvY2F0aW9uT2ZOZWFyQ2Fs
bChzbG93Q2FsbCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5sb2Nh
dGlvbk9mKHRhcmdldFRvQ2hlY2spLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtC
dWZmZXIubG9jYXRpb25PZk5lYXJDYWxsKGZhc3RDYWxsKSk7CisgICAgICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgc2V0SlNWYWx1ZShwYXRjaHBvaW50KTsK
KyNlbHNlCiAgICAgICAgIHVuc2lnbmVkIHN0YWNrbWFwSUQgPSBtX3N0YWNrbWFwSURzKys7CiAg
ICAgICAgIAogICAgICAgICBTdGFja21hcEFyZ3VtZW50TGlzdCBhcmd1bWVudHM7CkBAIC01MTA4
LDE1ICs1MzA1LDE1IEBAIHByaXZhdGU6CiAKICAgICAgICAgYXJndW1lbnRzLmluc2VydCgwLCBt
X291dC5jb25zdEludDMyKDIgKyAhIWpzQXJndW1lbnRzKSk7CiAgICAgICAgIGFyZ3VtZW50cy5p
bnNlcnQoMCwgY29uc3ROdWxsKG1fb3V0LnJlZjgpKTsKLSAgICAgICAgYXJndW1lbnRzLmluc2Vy
dCgwLCBtX291dC5jb25zdEludDMyKHNpemVPZklDRm9yKG1fbm9kZSkpKTsKKyAgICAgICAgYXJn
dW1lbnRzLmluc2VydCgwLCBtX291dC5jb25zdEludDMyKHNpemVPZklDRm9yKG5vZGUpKSk7CiAg
ICAgICAgIGFyZ3VtZW50cy5pbnNlcnQoMCwgbV9vdXQuY29uc3RJbnQ2NChzdGFja21hcElEKSk7
CiAgICAgICAgIAogICAgICAgICBMVmFsdWUgY2FsbCA9IG1fb3V0LmNhbGwobV9vdXQuaW50NjQs
IG1fb3V0LnBhdGNocG9pbnRJbnQ2NEludHJpbnNpYygpLCBhcmd1bWVudHMpOwogICAgICAgICBz
ZXRJbnN0cnVjdGlvbkNhbGxpbmdDb252ZW50aW9uKGNhbGwsIExMVk1DQ2FsbENvbnYpOwogICAg
ICAgICAKLSAgICAgICAgbV9mdGxTdGF0ZS5qc0NhbGxWYXJhcmdzZXMuYXBwZW5kKEpTQ2FsbFZh
cmFyZ3Moc3RhY2ttYXBJRCwgbV9ub2RlLCBjb2RlT3JpZ2luRGVzY3JpcHRpb25PZkNhbGxTaXRl
KCkpKTsKKyAgICAgICAgbV9mdGxTdGF0ZS5qc0NhbGxWYXJhcmdzZXMuYXBwZW5kKEpTQ2FsbFZh
cmFyZ3Moc3RhY2ttYXBJRCwgbm9kZSwgY29kZU9yaWdpbkRlc2NyaXB0aW9uT2ZDYWxsU2l0ZSgp
KSk7CiAKLSAgICAgICAgc3dpdGNoIChtX25vZGUtPm9wKCkpIHsKKyAgICAgICAgc3dpdGNoIChu
b2RlLT5vcCgpKSB7CiAgICAgICAgIGNhc2UgVGFpbENhbGxWYXJhcmdzOgogICAgICAgICBjYXNl
IFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3M6CiAgICAgICAgICAgICBtX291dC51bnJlYWNoYWJsZSgp
OwpAQCAtNTQ4OCw3ICs1Njg1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgREZHX0FTU0VSVChtX2dy
YXBoLCBtX25vZGUsIG1fb3JpZ2luLmV4aXRPSyk7CiAgICAgICAgIAogI2lmIEZUTF9VU0VTX0Iz
Ci0gICAgICAgIEIzOjpQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX291dC5wYXRjaHBv
aW50KFZvaWQpOworICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX291dC5w
YXRjaHBvaW50KFZvaWQpOwogICAgICAgICBPU1JFeGl0RGVzY3JpcHRvciogZGVzY3JpcHRvciA9
IGFwcGVuZE9TUkV4aXREZXNjcmlwdG9yKG5vVmFsdWUoKSwgbnVsbHB0cik7CiAgICAgICAgIE5v
ZGVPcmlnaW4gb3JpZ2luID0gbV9vcmlnaW47CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZENv
bGRBbnlzKGJ1aWxkRXhpdEFyZ3VtZW50cyhkZXNjcmlwdG9yLCBvcmlnaW4uZm9yRXhpdCwgbm9W
YWx1ZSgpKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267754</attachid>
            <date>2015-12-21 10:28:01 -0800</date>
            <delta_ts>2015-12-21 10:47:58 -0800</delta_ts>
            <desc>it seems to work</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>25247</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk0MzMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBA
CisyMDE1LTEyLTIxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
RlRMIEIzIHNob3VsZCBkbyB2YXJhcmcgY2FsbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjQ2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWRkcyBGVEwtPkIzIGxvd2VyaW5nIG9mIGFsbCBr
aW5kcyBvZiB2YXJhcmdzIGNhbGxzIC0gZm9yd2FyZGluZyBvciBub3QsIHRhaWwgb3Igbm90LAor
ICAgICAgICBhbmQgY29uc3RydWN0IG9yIG5vdC4gTGlrZSBhbGwgb3RoZXIgc3VjaCBsb3dlcmlu
Z3MsIGFsbCBvZiB0aGUgY29kZSBpcyBpbiBvbmUgcGxhY2UgaW4KKyAgICAgICAgRlRMTG93ZXIu
CisKKyAgICAgICAgSSByZW1vdmVkIGNvZGUgZm9yIHZhcmFyZ3MgYW5kIGV4Y2VwdGlvbiBzcGls
bCBzbG90cyBmcm9tIHRoZSBCMyBwYXRoLCBzaW5jZSBpdCB3b24ndCBuZWVkCisgICAgICAgIGl0
LiBUaGUgcGxhbiBpcyB0byByZWx5IG9uIEIzIGRvaW5nIHRoZSBzcGlsbGluZyBmb3IgdXMgYnkg
dXNpbmcgc29tZSBjb21iaW5hdGlvbiBvZiBlYXJseQorICAgICAgICBjbG9iYmVyIGFuZCBsYXRl
IHVzZS4KKworICAgICAgICBUaGlzIGFkZHMgVmFsdWVSZXA6OmVtaXRSZXN0b3JlKCksIGEgaGVs
cGZ1bCBtZXRob2QgZm9yIGVtaXR0aW5nIGNvZGUgdG8gcmVzdG9yZSBhbnkgVmFsdWVSZXAKKyAg
ICAgICAgaW50byBhbnkgNjQtYml0IFJlZyAoRlBSIG9yIEdQUikuCisKKyAgICAgICAgSSB3cm90
ZSBuZXcgdGVzdHMgZm9yIHZhcmFyZyBjYWxscywgYmVjYXVzZSBJIHdhc24ndCBzdXJlIHdoaWNo
IG9mIHRoZSBleGlzdGluZyBvbmVzIHdlIGNhbgorICAgICAgICBydW4uIFRoZXNlIGFyZSBzaG9y
dC1ydW5uaW5nIHRlc3RzLCBzbyBJJ20gbm90IHdvcnJpZWQgYWJvdXQgYmxvYXRpbmcgb3VyIHRl
c3Qgc3VpdGUuCisKKyAgICAgICAgKiBiMy9CM1ZhbHVlUmVwLmNwcDoKKyAgICAgICAgKEpTQzo6
QjM6OlZhbHVlUmVwOjpkdW1wKToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlUmVwOjplbWl0UmVz
dG9yZSk6CisgICAgICAgICogYjMvQjNWYWx1ZVJlcC5oOgorICAgICAgICAqIGZ0bC9GVExMb3dl
ckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6
bG93ZXIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVD
YWxsT3JDb25zdHJ1Y3RWYXJhcmdzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9MTFZNOjpjb21waWxlSW52YWxpZGF0aW9uUG9pbnQpOgorICAgICAgICAqIGZ0bC9GVExTdGF0
ZS5oOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy92YXJhcmdzLW5vLWZvcndhcmQuanM6IEFkZGVk
LgorICAgICAgICAqIHRlc3RzL3N0cmVzcy92YXJhcmdzLXNpbXBsZS5qczogQWRkZWQuCisgICAg
ICAgICogdGVzdHMvc3RyZXNzL3ZhcmFyZ3MtdHdvLWxldmVsLmpzOiBBZGRlZC4KKwogMjAxNS0x
Mi0yMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEIzLT5BaXIg
bG93ZXJpbmcgaW5jb3JyZWN0bHkgY29weS1wcm9wYWdhdGVzIG92ZXIgWkV4dDMyJ3MKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlUmVwLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZVJlcC5jcHAJKHJldmlzaW9uIDE5NDMyMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlUmVwLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjgsNiArMjgsOCBAQAogCiAjaWYgRU5BQkxFKEIzX0pJVCkKIAorI2luY2x1ZGUgIkFz
c2VtYmx5SGVscGVycy5oIgorCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAogdm9p
ZCBWYWx1ZVJlcDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdApAQCAtNTUsNiArNTcsNDkg
QEAgdm9pZCBWYWx1ZVJlcDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjbwogICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK3ZvaWQgVmFsdWVSZXA6OmVtaXRSZXN0b3JlKEFz
c2VtYmx5SGVscGVycyYgaml0LCBSZWcgcmVnKQoreworICAgIGlmIChyZWcuaXNHUFIoKSkgewor
ICAgICAgICBzd2l0Y2ggKGtpbmQoKSkgeworICAgICAgICBjYXNlIFJlZ2lzdGVyOgorICAgICAg
ICAgICAgaWYgKGlzR1BSKCkpCisgICAgICAgICAgICAgICAgaml0Lm1vdmUoZ3ByKCksIHJlZy5n
cHIoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaml0Lm1vdmVEb3VibGVU
bzY0KGZwcigpLCByZWcuZ3ByKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
U3RhY2s6CisgICAgICAgICAgICBqaXQubG9hZDY0KEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwgb2Zmc2V0RnJvbUZQKCkpLCByZWcuZ3ByKCkpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29uc3RhbnQ6CisgICAgICAgICAgICBq
aXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW02NCh2YWx1ZSgpKSwgcmVnLmdwcigp
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgc3dpdGNoIChraW5kKCkpIHsKKyAg
ICBjYXNlIFJlZ2lzdGVyOgorICAgICAgICBpZiAoaXNHUFIoKSkKKyAgICAgICAgICAgIGppdC5t
b3ZlNjRUb0RvdWJsZShncHIoKSwgcmVnLmZwcigpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgaml0Lm1vdmVEb3VibGUoZnByKCksIHJlZy5mcHIoKSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgU3RhY2s6CisgICAgICAgIGppdC5sb2FkRG91YmxlKEFzc2VtYmx5SGVscGVyczo6QWRk
cmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwgb2Zmc2V0RnJvbUZQKCkpLCByZWcuZnBy
KCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENvbnN0YW50OgorICAgICAgICBqaXQubW92
ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW02NCh2YWx1ZSgpKSwgaml0LnNjcmF0Y2hSZWdp
c3RlcigpKTsKKyAgICAgICAgaml0Lm1vdmU2NFRvRG91YmxlKGppdC5zY3JhdGNoUmVnaXN0ZXIo
KSwgcmVnLmZwcigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCiB9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAogbmFtZXNwYWNlIFdURiB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZVJlcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1ZhbHVlUmVwLmgJKHJldmlzaW9uIDE5NDMyMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlUmVwLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0
LDExIEBACiAjaW5jbHVkZSAiUmVnLmgiCiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAK
LW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNz
IEFzc2VtYmx5SGVscGVyczsKKworbmFtZXNwYWNlIEIzIHsKIAogLy8gV2UgdXNlIHRoaXMgY2xh
c3MgdG8gZGVzY3JpYmUgdmFsdWUgcmVwcmVzZW50YXRpb25zIGF0IHN0YWNrbWFwcy4gSXQncyB1
c2VkIGJvdGggdG8gZm9yY2UgYQogLy8gcmVwcmVzZW50YXRpb24gYW5kIHRvIGdldCB0aGUgcmVw
cmVzZW50YXRpb24uIFdoZW4gdGhlIEIzIGNsaWVudCBmb3JjZXMgYSByZXByZXNlbnRhdGlvbiwg
d2Ugc2F5CkBAIC0yMTYsNiArMjIwLDEwIEBAIHB1YmxpYzoKIAogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogCisgICAgLy8gVGhpcyBoYXMgYSBz
aW1wbGUgY29udHJhY3Q6IGl0IGVtaXRzIGNvZGUgdG8gcmVzdG9yZSB0aGUgdmFsdWUgaW50byB0
aGUgZ2l2ZW4gcmVnaXN0ZXIuIFRoaXMKKyAgICAvLyB3aWxsIHdvcmsgZXZlbiBpZiBpdCByZXF1
aXJlcyBtb3ZpbmcgYmV0d2VlbiBiaXRzIGEgR1BSIGFuZCBhIEZQUi4KKyAgICB2b2lkIGVtaXRS
ZXN0b3JlKEFzc2VtYmx5SGVscGVycyYsIFJlZyk7CisKIHByaXZhdGU6CiAgICAgS2luZCBtX2tp
bmQ7CiAgICAgdW5pb24gVSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9MTFZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9MTFZNLmNwcAkocmV2aXNpb24gMTk0MzIwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4
LDYgKzU4LDcgQEAKICNpbmNsdWRlICJTY29wZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTY29w
ZWRBcmd1bWVudHNUYWJsZS5oIgogI2luY2x1ZGUgIlNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5o
IgorI2luY2x1ZGUgIlNldHVwVmFyYXJnc0ZyYW1lLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lz
dGVyLmgiCiAjaW5jbHVkZSAiV2F0Y2hkb2cuaCIKICNpbmNsdWRlIDxhdG9taWM+CkBAIC0yMDUs
OCArMjA2LDggQEAgcHVibGljOgogI2VuZGlmIC8vIEZUTF9VU0VfQjMKIAogICAgICAgICBhdXRv
IHByZU9yZGVyID0gbV9ncmFwaC5ibG9ja3NJblByZU9yZGVyKCk7Ci0gICAgICAgIAotICAgICAg
ICAvLyBJZiB3ZSBoYXZlIGFueSBDYWxsVmFyYXJncyB0aGVuIHdlIG5lZWQgdG8gaGF2ZSBhIHNw
aWxsIHNsb3QgZm9yIGl0LgorCisjaWYgIUZUTF9VU0VTX0IzCiAgICAgICAgIGJvb2wgaGFzVmFy
YXJncyA9IGZhbHNlOwogICAgICAgICBzaXplX3QgbWF4TnVtYmVyT2ZDYXRjaFNwaWxscyA9IDA7
CiAgICAgICAgIGZvciAoREZHOjpCYXNpY0Jsb2NrKiBibG9jayA6IHByZU9yZGVyKSB7CkBAIC0y
NzAsMTAgKzI3MSw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0jaWYg
RlRMX1VTRVNfQjMKLSAgICAgICAgVU5VU0VEX1BBUkFNKGhhc1ZhcmFyZ3MpOwotICAgICAgICAv
LyBGSVhNRQotI2Vsc2UKKyAgICAgICAgLy8gQjMgZG9lc24ndCBuZWVkIHRoZSB2YXJhcmdzIHNw
aWxsIHNsb3QgYmVjYXVzZSB3ZSBqdXN0IHVzZSBjYWxsIGFyZyBhcmVhIHNpemUgYXMgYSB3YXkg
dG8KKyAgICAgICAgLy8gcmVxdWVzdCBzcGlsbCBzbG90cy4KICAgICAgICAgaWYgKGhhc1ZhcmFy
Z3MpIHsKICAgICAgICAgICAgIExWYWx1ZSB2YXJhcmdzU3BpbGxTbG90cyA9IG1fb3V0LmFsbG9j
YSgKICAgICAgICAgICAgICAgICBhcnJheVR5cGUobV9vdXQuaW50NjQsIEpTQ2FsbFZhcmFyZ3M6
Om51bVNwaWxsU2xvdHNOZWVkZWQoKSkpOwpAQCAtMjg0LDYgKzI4Myw3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgICAgICBtX291dC5pbnQzMlplcm8sIHZhcmFyZ3NTcGlsbFNsb3RzKTsKICAgICAg
ICAgfQogCisgICAgICAgIC8vIEIzIGRvZXNuJ3QgbmVlZCB0aGUgZXhjZXB0aW9uIHNwaWxsIHNs
b3QgYmVjYXVzZSB3ZSBqdXN0IHVzZSB0aGUgCiAgICAgICAgIGlmIChtX2dyYXBoLm1faGFzRXhj
ZXB0aW9uSGFuZGxlcnMgJiYgbWF4TnVtYmVyT2ZDYXRjaFNwaWxscykgewogICAgICAgICAgICAg
UmVnaXN0ZXJTZXQgdm9sYXRpbGVSZWdpc3RlcnMgPSBSZWdpc3RlclNldDo6dm9sYXRpbGVSZWdp
c3RlcnNGb3JKU0NhbGwoKTsKICAgICAgICAgICAgIG1heE51bWJlck9mQ2F0Y2hTcGlsbHMgPSBz
dGQ6Om1pbih2b2xhdGlsZVJlZ2lzdGVycy5udW1iZXJPZlNldFJlZ2lzdGVycygpLCBtYXhOdW1i
ZXJPZkNhdGNoU3BpbGxzKTsKQEAgLTI5Niw3ICsyOTYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgbV9vdXQuY29uc3RJbnQ2NChtX2Z0bFN0YXRlLmV4Y2VwdGlvbkhhbmRsaW5nU3BpbGxT
bG90U3RhY2ttYXBJRCksCiAgICAgICAgICAgICAgICAgbV9vdXQuaW50MzJaZXJvLCBleGNlcHRp
b25IYW5kbGluZ1ZvbGF0aWxlUmVnaXN0ZXJzU3BpbGxTbG90cyk7CiAgICAgICAgIH0KLSNlbmRp
ZgorI2VuZGlmIC8vICFGVExfVVNFU19CMwogICAgICAgICAKICAgICAgICAgLy8gV2Ugc2hvdWxk
IG5vdCBjcmVhdGUgYW55IGFsbG9jYSdzIGFmdGVyIHRoaXMgcG9pbnQsIHNpbmNlIHRoZXkgd2ls
bCBjZWFzZSB0bwogICAgICAgICAvLyBiZSBtZW0ycmVnIGNhbmRpZGF0ZXMuCkBAIC01MDY5LDMy
ICs1MDY5LDI2MyBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgY29tcGlsZUNhbGxPckNvbnN0
cnVjdFZhcmFyZ3MoKQogICAgIHsKLSNpZiBGVExfVVNFU19CMwotICAgICAgICBpZiAodmVyYm9z
ZUNvbXBpbGF0aW9uRW5hYmxlZCgpIHx8ICF2ZXJib3NlQ29tcGlsYXRpb25FbmFibGVkKCkpCi0g
ICAgICAgICAgICBDUkFTSCgpOwotI2Vsc2UKKyAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsK
ICAgICAgICAgTFZhbHVlIGpzQ2FsbGVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsK
ICAgICAgICAgTFZhbHVlIHRoaXNBcmcgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQzKCkpOwog
ICAgICAgICAKICAgICAgICAgTFZhbHVlIGpzQXJndW1lbnRzID0gbnVsbHB0cjsKKyAgICAgICAg
Ym9vbCBmb3J3YXJkaW5nID0gZmFsc2U7CiAgICAgICAgIAotICAgICAgICBzd2l0Y2ggKG1fbm9k
ZS0+b3AoKSkgeworICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICAgICAgY2FzZSBD
YWxsVmFyYXJnczoKICAgICAgICAgY2FzZSBUYWlsQ2FsbFZhcmFyZ3M6CiAgICAgICAgIGNhc2Ug
VGFpbENhbGxWYXJhcmdzSW5saW5lZENhbGxlcjoKICAgICAgICAgY2FzZSBDb25zdHJ1Y3RWYXJh
cmdzOgotICAgICAgICAgICAganNBcmd1bWVudHMgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQy
KCkpOworICAgICAgICAgICAganNBcmd1bWVudHMgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMigp
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENhbGxGb3J3YXJkVmFyYXJnczoK
ICAgICAgICAgY2FzZSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzOgogICAgICAgICBjYXNlIFRhaWxD
YWxsRm9yd2FyZFZhcmFyZ3NJbmxpbmVkQ2FsbGVyOgogICAgICAgICBjYXNlIENvbnN0cnVjdEZv
cndhcmRWYXJhcmdzOgorICAgICAgICAgICAgZm9yd2FyZGluZyA9IHRydWU7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBo
LCBtX25vZGUsICJiYWQgbm9kZSB0eXBlIik7CisgICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFw
aCwgbm9kZSwgImJhZCBub2RlIHR5cGUiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIAorI2lmIEZUTF9VU0VTX0IzCisgICAgICAgIC8vIEZJWE1FOiBOZWVkIGEgc3Rv
cnkgZm9yIGV4Y2VwdGlvbnMuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTE2ODYKKworICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9p
bnQgPSBtX291dC5wYXRjaHBvaW50KEludDY0KTsKKworICAgICAgICAvLyBBcHBlbmQgdGhlIGZv
cm1zIG9mIHRoZSBhcmd1bWVudHMgdGhhdCB3ZSB3aWxsIHVzZSBiZWZvcmUgYW55IGNsb2JiZXJp
bmcgaGFwcGVucy4KKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKGpzQ2FsbGVlLCBWYWx1ZVJl
cDo6cmVnKEdQUkluZm86OnJlZ1QwKSk7CisgICAgICAgIGlmIChqc0FyZ3VtZW50cykKKyAgICAg
ICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChqc0FyZ3VtZW50cywgVmFsdWVSZXA6OlNvbWVSZWdp
c3Rlcik7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZCh0aGlzQXJnLCBWYWx1ZVJlcDo6U29t
ZVJlZ2lzdGVyKTsKKworICAgICAgICBpZiAoIWZvcndhcmRpbmcpIHsKKyAgICAgICAgICAgIC8v
IE5vdyBhcHBlbmQgdGhlbSBhZ2FpbiBmb3IgYWZ0ZXIgY2xvYmJlcmluZy4gTm90ZSB0aGF0IHRo
ZSBjb21waWxlciBtYXkgYXNrIHVzIHRvIHVzZSBhCisgICAgICAgICAgICAvLyBkaWZmZXJlbnQg
cmVnaXN0ZXIgZm9yIHRoZSBsYXRlIGZvciB0aGUgcG9zdC1jbG9iYmVyaW5nIHZlcnNpb24gb2Yg
dGhlIHZhbHVlLiBUaGlzIGdpdmVzCisgICAgICAgICAgICAvLyB0aGUgY29tcGlsZXIgdG8gc3Bp
bGwgdGhlc2UgdmFsdWVzIHdpdGhvdXQgaGF2aW5nIHRvIGJ1cm4gYW55IGNhbGxlZS1zYXZlcy4K
KyAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChqc0NhbGxlZSwgVmFsdWVSZXA6OkxhdGVD
b2xkQW55KTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChqc0FyZ3VtZW50cywgVmFs
dWVSZXA6OkxhdGVDb2xkQW55KTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZCh0aGlz
QXJnLCBWYWx1ZVJlcDo6TGF0ZUNvbGRBbnkpOworICAgICAgICB9CisKKyAgICAgICAgcGF0Y2hw
b2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAg
ICAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShSZWdpc3RlclNldDo6dm9sYXRpbGVSZWdpc3Rl
cnNGb3JKU0NhbGwoKSk7CisgICAgICAgIHBhdGNocG9pbnQtPnJlc3VsdENvbnN0cmFpbnQgPSBW
YWx1ZVJlcDo6cmVnKEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICAvLyBUaGlz
IGlzIHRoZSBtaW5pbXVtIGFtb3VudCBvZiBjYWxsIGFyZyBhcmVhIHN0YWNrIHNwYWNlIHRoYXQg
YWxsIEpTLT5KUyBjYWxscyBhbHdheXMgaGF2ZS4KKyAgICAgICAgdW5zaWduZWQgbWluaW11bUpT
Q2FsbEFyZWFTaXplID0KKyAgICAgICAgICAgIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSArCisg
ICAgICAgICAgICBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygp
LCA1ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSk7CisKKyAgICAgICAgbV9wcm9jLnJlcXVlc3RD
YWxsQXJnQXJlYVNpemUobWluaW11bUpTQ2FsbEFyZWFTaXplKTsKKyAgICAgICAgCisgICAgICAg
IENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IGNvZGVPcmlnaW5EZXNjcmlwdGlvbk9mQ2FsbFNpdGUo
KTsKKyAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CisgICAgICAgIHBhdGNocG9p
bnQtPnNldEdlbmVyYXRvcigKKyAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNv
bnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAg
QWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAg
ICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9CisgICAgICAgICAgICAgICAg
ICAgIHN0YXRlLT5qaXRDb2RlLT5jb21tb24uYWRkVW5pcXVlQ2FsbFNpdGVJbmRleChjb2RlT3Jp
Z2luKTsKKworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSB3b3VsZCBhc2sgdGhlIE9TUiBl
eGl0IGRlc2NyaXB0b3IgdG8gcHJlcGFyZSBhbmQgdGhlbiB3ZSB3b3VsZCBtb2RpZnkKKyAgICAg
ICAgICAgICAgICAvLyB0aGUgT1NSRXhpdCBkYXRhIHN0cnVjdHVyZSBpbnNpZGUgdGhlIE9TUkV4
aXRIYW5kbGUgdG8gbGluayBpdCB1cCB0byB0aGlzIGNhbGwuCisgICAgICAgICAgICAgICAgLy8g
QWxzbywgdGhlIGV4Y2VwdGlvbiBjaGVja3MgSnVtcExpc3Qgc2hvdWxkIGJlIGxpbmtlZCB0byBz
b21ld2hlcmUuCisgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1MTY4NgorICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExp
c3QgZXhjZXB0aW9uczsKKworICAgICAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihjYWxsU2l0ZUluZGV4LmJpdHMo
KSksCisgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdp
c3RlcihKU1N0YWNrOjpBcmd1bWVudENvdW50KSkpOworCisgICAgICAgICAgICAgICAgQ2FsbExp
bmtJbmZvKiBjYWxsTGlua0luZm8gPSBqaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbygp
OworICAgICAgICAgICAgICAgIENhbGxWYXJhcmdzRGF0YSogZGF0YSA9IG5vZGUtPmNhbGxWYXJh
cmdzRGF0YSgpOworCisgICAgICAgICAgICAgICAgdW5zaWduZWQgYXJnSW5kZXggPSAxOworICAg
ICAgICAgICAgICAgIEdQUlJlZyBjYWxsZWVHUFIgPSBwYXJhbXNbYXJnSW5kZXgrK10uZ3ByKCk7
CisgICAgICAgICAgICAgICAgQVNTRVJUKGNhbGxlZUdQUiA9PSBHUFJJbmZvOjpyZWdUMCk7Cisg
ICAgICAgICAgICAgICAgR1BSUmVnIGFyZ3VtZW50c0dQUiA9IGpzQXJndW1lbnRzID8gcGFyYW1z
W2FyZ0luZGV4KytdLmdwcigpIDogSW52YWxpZEdQUlJlZzsKKyAgICAgICAgICAgICAgICBHUFJS
ZWcgdGhpc0dQUiA9IHBhcmFtc1thcmdJbmRleCsrXS5ncHIoKTsKKworICAgICAgICAgICAgICAg
IEIzOjpWYWx1ZVJlcCBjYWxsZWVMYXRlUmVwOworICAgICAgICAgICAgICAgIEIzOjpWYWx1ZVJl
cCBhcmd1bWVudHNMYXRlUmVwOworICAgICAgICAgICAgICAgIEIzOjpWYWx1ZVJlcCB0aGlzTGF0
ZVJlcDsKKyAgICAgICAgICAgICAgICBpZiAoIWZvcndhcmRpbmcpIHsKKyAgICAgICAgICAgICAg
ICAgICAgLy8gSWYgd2UncmUgbm90IGZvcndhcmRpbmcgdGhlbiB3ZSdsbCBuZWVkIGNhbGxlZSwg
YXJndW1lbnRzLCBhbmQgdGhpcyBhZnRlciB3ZQorICAgICAgICAgICAgICAgICAgICAvLyBoYXZl
IHBvdGVudGlhbGx5IGNsb2JiZXJlZCBjYWxsZWVHUFIsIGFyZ3VtZW50c0dQUiwgYW5kIHRoaXNH
UFIuIE91ciB0ZWNobmlxdWUKKyAgICAgICAgICAgICAgICAgICAgLy8gZm9yIHRoaXMgaXMgdG8g
c3VwcGx5IGFsbCBvZiB0aG9zZSBvcGVyYW5kcyBhcyBsYXRlIHVzZXMgaW4gYWRkaXRpb24gdG8K
KyAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lmeWluZyB0aGVtIGFzIGVhcmx5IHVzZXMuIEl0
J3MgcG9zc2libGUgdGhhdCB0aGUgbGF0ZSB1c2UgdXNlcyBhIHNwaWxsCisgICAgICAgICAgICAg
ICAgICAgIC8vIHdoaWxlIHRoZSBlYXJseSB1c2UgdXNlcyBhIHJlZ2lzdGVyLCBhbmQgaXQncyBw
b3NzaWJsZSBmb3IgdGhlIGxhdGUgYW5kIGVhcmx5CisgICAgICAgICAgICAgICAgICAgIC8vIHVz
ZXMgdG8gdXNlIGRpZmZlcmVudCByZWdpc3RlcnMuIFdlIGRvIGtub3cgdGhhdCB0aGUgbGF0ZSB1
c2VzIGludGVyZmVyZSB3aXRoCisgICAgICAgICAgICAgICAgICAgIC8vIGFsbCB2b2xhdGlsZSBy
ZWdpc3RlcnMgYW5kIHNvIHdvbid0IHVzZSB0aG9zZSwgYnV0IHRoZSBlYXJseSB1c2VzIG1heSB1
c2UKKyAgICAgICAgICAgICAgICAgICAgLy8gdm9sYXRpbGUgcmVnaXN0ZXJzIGFuZCBpbiB0aGUg
Y2FzZSBvZiBjYWxsZWVHUFIsIGl0J3MgcGlubmVkIHRvIHJlZ1QwIHNvIGl0CisgICAgICAgICAg
ICAgICAgICAgIC8vIGRlZmluaXRlbHkgd2lsbC4KKyAgICAgICAgICAgICAgICAgICAgLy8KKyAg
ICAgICAgICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHdlIGhhdmUgdG8gYmUgc3VwZXIgY2FyZWZ1
bCB3aXRoIHRoZXNlLiBJdCdzIHBvc3NpYmxlIHRoYXQgdGhlc2UKKyAgICAgICAgICAgICAgICAg
ICAgLy8gdXNlIGEgc2h1ZmZsaW5nIG9mIHRoZSByZWdpc3RlcnMgdXNlZCBmb3IgY2FsbGVlR1BS
LCBhcmd1bWVudHNHUFIsIGFuZAorICAgICAgICAgICAgICAgICAgICAvLyB0aGlzR1BSLiBJZiB0
aGF0IGhhcHBlbnMgYW5kIHdlIGRvIGZvciBleGFtcGxlOgorICAgICAgICAgICAgICAgICAgICAv
LworICAgICAgICAgICAgICAgICAgICAvLyAgICAgY2FsbGVlTGF0ZVJlcC5lbWl0UmVzdG9yZShq
aXQsIGNhbGxlZUdQUik7CisgICAgICAgICAgICAgICAgICAgIC8vICAgICBhcmd1bWVudHNMYXRl
UmVwLmVtaXRSZXN0b3JlKGppdCwgY2FsbGVlR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgLy8K
KyAgICAgICAgICAgICAgICAgICAgLy8gVGhlbiB3ZSBtaWdodCBlbmQgdXAgd2l0aCBnYXJiYWdl
IGlmIGNhbGxlZUxhdGVSZXAuZ3ByKCkgPT0gYXJndW1lbnRzR1BSIGFuZAorICAgICAgICAgICAg
ICAgICAgICAvLyBhcmd1bWVudHNMYXRlUmVwLmdwcigpID09IGNhbGxlZUdQUi4KKyAgICAgICAg
ICAgICAgICAgICAgLy8KKyAgICAgICAgICAgICAgICAgICAgLy8gV2UgZG8gYSB2YXJpZXR5IG9m
IHRoaW5ncyB0byBwcmV2ZW50IHRoaXMgZnJvbSBoYXBwZW5pbmcuIEZvciBleGFtcGxlLCB3ZSB1
c2UKKyAgICAgICAgICAgICAgICAgICAgLy8gYXJndW1lbnRzTGF0ZVJlcCBiZWZvcmUgbmVlZGlu
ZyB0aGUgb3RoZXIgdHdvIGFuZCBhZnRlciB3ZSd2ZSBhbHJlYWR5IHN0b3BwZWQKKyAgICAgICAg
ICAgICAgICAgICAgLy8gdXNpbmcgdGhlICpHUFJzLiBBbHNvLCB3ZSBwaW4gY2FsbGVlR1BSIHRv
IHJlZ1QwLCBhbmQgcmVseSBvbiB0aGUgZmFjdCB0aGF0CisgICAgICAgICAgICAgICAgICAgIC8v
IHRoZSAqTGF0ZVJlcHMgY2Fubm90IHVzZSB2b2xhdGlsZSByZWdpc3RlcnMgKHNvIHRoZXkgY2Fu
bm90IGJlIHJlZ1QwLCBzbworICAgICAgICAgICAgICAgICAgICAvLyBjYWxsZWVHUFIgIT0gYXJn
dW1lbnRzTGF0ZVJlcC5ncHIoKSBhbmQgY2FsbGVlR1BSICE9IHRoaXNMYXRlUmVwLmdwcigpKS4K
KyAgICAgICAgICAgICAgICAgICAgLy8KKyAgICAgICAgICAgICAgICAgICAgLy8gQW4gYWx0ZXJu
YXRpdmUgd291bGQgaGF2ZSBiZWVuIHRvIGp1c3QgdXNlIGVhcmx5IHVzZXMgYW5kIGVhcmx5LWNs
b2JiZXIgYWxsCisgICAgICAgICAgICAgICAgICAgIC8vIHZvbGF0aWxlIHJlZ2lzdGVycy4gQnV0
IHRoYXQgd291bGQgZm9yY2UgY2FsbGVlLCBhcmd1bWVudHMsIGFuZCB0aGlzIGludG8KKyAgICAg
ICAgICAgICAgICAgICAgLy8gY2FsbGVlLXNhdmUgcmVnaXN0ZXJzIGV2ZW4gaWYgd2UgaGF2ZSB0
byBzcGlsbCB0aGVtLiBXZSBkb24ndCB3YW50IHNwaWxsaW5nIHRvCisgICAgICAgICAgICAgICAg
ICAgIC8vIHVzZSB1cCB0aHJlZSBjYWxsZWUtc2F2ZXMuCisgICAgICAgICAgICAgICAgICAgIC8v
CisgICAgICAgICAgICAgICAgICAgIC8vIFRMO0RSOiBUaGUgd2F5IHdlIHVzZSBMYXRlUmVwcyBo
ZXJlIGlzIGRhbmdlcm91cyBhbmQgYmFyZWx5IHdvcmtzIGJ1dCBhY2hpZXZlcworICAgICAgICAg
ICAgICAgICAgICAvLyBzb21lIGRlc2lyYWJsZSBwZXJmb3JtYW5jZSBwcm9wZXJ0aWVzLCBzbyBk
b24ndCBtaXN0YWtlIHRoZSBjbGV2ZXJuZXNzIGZvcgorICAgICAgICAgICAgICAgICAgICAvLyBl
bGVnYW5jZS4KKyAgICAgICAgICAgICAgICAgICAgY2FsbGVlTGF0ZVJlcCA9IHBhcmFtc1thcmdJ
bmRleCsrXTsKKyAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzTGF0ZVJlcCA9IHBhcmFtc1th
cmdJbmRleCsrXTsKKyAgICAgICAgICAgICAgICAgICAgdGhpc0xhdGVSZXAgPSBwYXJhbXNbYXJn
SW5kZXgrK107CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gR2V0IHNv
bWUgc2NyYXRjaCByZWdpc3RlcnMuCisgICAgICAgICAgICAgICAgUmVnaXN0ZXJTZXQgdXNlZFJl
Z2lzdGVyczsKKyAgICAgICAgICAgICAgICB1c2VkUmVnaXN0ZXJzLm1lcmdlKFJlZ2lzdGVyU2V0
OjpzdGFja1JlZ2lzdGVycygpKTsKKyAgICAgICAgICAgICAgICB1c2VkUmVnaXN0ZXJzLm1lcmdl
KFJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOworICAgICAgICAgICAg
ICAgIHVzZWRSZWdpc3RlcnMubWVyZ2UoUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMo
KSk7CisgICAgICAgICAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQoY2FsbGVlR1BSKTsKKyAgICAg
ICAgICAgICAgICBpZiAoYXJndW1lbnRzR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAg
ICAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KGFyZ3VtZW50c0dQUik7CisgICAgICAgICAgICAg
ICAgdXNlZFJlZ2lzdGVycy5zZXQodGhpc0dQUik7CisgICAgICAgICAgICAgICAgaWYgKGNhbGxl
ZUxhdGVSZXAuaXNSZWcoKSkKKyAgICAgICAgICAgICAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQo
Y2FsbGVlTGF0ZVJlcC5yZWcoKSk7CisgICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50c0xhdGVS
ZXAuaXNSZWcoKSkKKyAgICAgICAgICAgICAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQoYXJndW1l
bnRzTGF0ZVJlcC5yZWcoKSk7CisgICAgICAgICAgICAgICAgaWYgKHRoaXNMYXRlUmVwLmlzUmVn
KCkpCisgICAgICAgICAgICAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KHRoaXNMYXRlUmVwLnJl
ZygpKTsKKyAgICAgICAgICAgICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IgYWxsb2NhdG9y
KHVzZWRSZWdpc3RlcnMpOworICAgICAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSMSA9IGFs
bG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgc2Ny
YXRjaEdQUjIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CisgICAgICAgICAgICAg
ICAgR1BSUmVnIHNjcmF0Y2hHUFIzID0gZm9yd2FyZGluZyA/IGFsbG9jYXRvci5hbGxvY2F0ZVNj
cmF0Y2hHUFIoKSA6IEludmFsaWRHUFJSZWc7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoIWFsbG9jYXRvci5udW1iZXJPZlJldXNlZFJlZ2lzdGVycygpKTsKKworICAgICAgICAgICAg
ICAgIGF1dG8gY2FsbFdpdGhFeGNlcHRpb25DaGVjayA9IFsmXSAodm9pZCogY2FsbGVlKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihj
YWxsZWUpLCBHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25Bcmd1bWVudEdQUik7CisgICAgICAgICAg
ICAgICAgICAgIGppdC5jYWxsKEdQUkluZm86Om5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BSKTsK
KyAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5hcHBlbmQoaml0LmVtaXRFeGNlcHRpb25D
aGVjayhBc3NlbWJseUhlbHBlcnM6Ok5vcm1hbEV4Y2VwdGlvbkNoZWNrLCBBc3NlbWJseUhlbHBl
cnM6OkZhckp1bXBXaWR0aCkpOworICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAg
ICBhdXRvIGFkanVzdFN0YWNrID0gWyZdIChHUFJSZWcgYW1vdW50KSB7CisgICAgICAgICAgICAg
ICAgICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc2l6ZW9mKENhbGxl
ckZyYW1lQW5kUEMpKSwgYW1vdW50LCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVy
KTsKKyAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAgICAgdW5zaWduZWQgb3JpZ2lu
YWxTdGFja0hlaWdodCA9IHBhcmFtcy5wcm9jKCkuZnJhbWVTaXplKCk7CisKKyAgICAgICAgICAg
ICAgICBpZiAoZm9yd2FyZGluZykgeworICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMihvcmlnaW5hbFN0YWNrSGVpZ2h0IC8gc2l6ZW9mKEVuY29k
ZWRKU1ZhbHVlKSksIHNjcmF0Y2hHUFIyKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3Qgc2xvd0Nhc2U7CisgICAgICAgICAg
ICAgICAgICAgIGVtaXRTZXR1cFZhcmFyZ3NGcmFtZUZhc3RDYXNlKGppdCwgc2NyYXRjaEdQUjIs
IHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMiwgc2NyYXRjaEdQUjMsIG5vZGUtPmNoaWxkMigpLT5v
cmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lLCBkYXRhLT5maXJzdFZhckFyZ09mZnNldCwg
c2xvd0Nhc2UpOworCisgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBkb25l
ID0gaml0Lmp1bXAoKTsKKyAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2UubGluaygmaml0KTsK
KyAgICAgICAgICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzRXhlY1N0YXRlKCk7CisgICAg
ICAgICAgICAgICAgICAgIGNhbGxXaXRoRXhjZXB0aW9uQ2hlY2soYml0d2lzZV9jYXN0PHZvaWQq
PihvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dGb3JWYXJhcmdzKSk7CisgICAgICAgICAgICAg
ICAgICAgIGppdC5hYm9ydFdpdGhSZWFzb24oREZHVmFyYXJnc1Rocm93aW5nUGF0aERpZE5vdFRo
cm93KTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGRvbmUubGlu
aygmaml0KTsKKworICAgICAgICAgICAgICAgICAgICBhZGp1c3RTdGFjayhzY3JhdGNoR1BSMik7
CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIob3JpZ2luYWxTdGFja0hlaWdodCAvIHNpemVvZihF
bmNvZGVkSlNWYWx1ZSkpLCBzY3JhdGNoR1BSMSk7CisgICAgICAgICAgICAgICAgICAgIGppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJndW1lbnRzR1BSLCBzY3JhdGNoR1BSMSwgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoZGF0YS0+Zmlyc3RWYXJBcmdPZmZzZXQpKTsKKyAgICAg
ICAgICAgICAgICAgICAgY2FsbFdpdGhFeGNlcHRpb25DaGVjayhiaXR3aXNlX2Nhc3Q8dm9pZCo+
KG9wZXJhdGlvblNpemVGcmFtZUZvclZhcmFyZ3MpKTsKKworICAgICAgICAgICAgICAgICAgICBq
aXQubW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgc2NyYXRjaEdQUjEpOworICAgICAgICAg
ICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihvcmlnaW5hbFN0
YWNrSGVpZ2h0IC8gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksIHNjcmF0Y2hHUFIyKTsKKyAgICAg
ICAgICAgICAgICAgICAgYXJndW1lbnRzTGF0ZVJlcC5lbWl0UmVzdG9yZShqaXQsIGFyZ3VtZW50
c0dQUik7CisgICAgICAgICAgICAgICAgICAgIGVtaXRTZXRWYXJhcmdzRnJhbWUoaml0LCBzY3Jh
dGNoR1BSMSwgZmFsc2UsIHNjcmF0Y2hHUFIyLCBzY3JhdGNoR1BSMik7CisgICAgICAgICAgICAg
ICAgICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoLW1pbmltdW1KU0Nh
bGxBcmVhU2l6ZSksIHNjcmF0Y2hHUFIyLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lz
dGVyKTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShzY3JhdGNoR1BSMiwgYXJndW1lbnRzR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihk
YXRhLT5maXJzdFZhckFyZ09mZnNldCksIHNjcmF0Y2hHUFIxKTsKKyAgICAgICAgICAgICAgICAg
ICAgY2FsbFdpdGhFeGNlcHRpb25DaGVjayhiaXR3aXNlX2Nhc3Q8dm9pZCo+KG9wZXJhdGlvblNl
dHVwVmFyYXJnc0ZyYW1lKSk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
ICAgICBhZGp1c3RTdGFjayhHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgICAg
ICAgICAgICAgY2FsbGVlTGF0ZVJlcC5lbWl0UmVzdG9yZShqaXQsIEdQUkluZm86OnJlZ1QwKTsK
KworICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIG1heSBub3QgZW1pdCBjb2RlIGlmIHRoaXNH
UFIgZ290IGEgY2FsbGVlLXNhdmUuIEFsc28sIHdlJ3JlIGd1YXJhbnRlZWQKKyAgICAgICAgICAg
ICAgICAgICAgLy8gdGhhdCB0aGlzR1BSICE9IEdQUkluZm86OnJlZ1QwIGJlY2F1c2UgcmVnVDAg
aW50ZXJmZXJlcyB3aXRoIGl0LgorICAgICAgICAgICAgICAgICAgICB0aGlzTGF0ZVJlcC5lbWl0
UmVzdG9yZShqaXQsIHRoaXNHUFIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQ0NhbGxIZWxw
ZXJzOjpjYWxsZWVGcmFtZVNsb3QoSlNTdGFjazo6Q2FsbGVlKSk7CisgICAgICAgICAgICAgICAg
aml0LnN0b3JlNjQodGhpc0dQUiwgQ0NhbGxIZWxwZXJzOjpjYWxsZWVBcmd1bWVudFNsb3QoMCkp
OworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbzo6Q2FsbFR5
cGUgY2FsbFR5cGU7CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gQ29uc3RydWN0
VmFyYXJncyB8fCBub2RlLT5vcCgpID09IENvbnN0cnVjdEZvcndhcmRWYXJhcmdzKQorICAgICAg
ICAgICAgICAgICAgICBjYWxsVHlwZSA9IENhbGxMaW5rSW5mbzo6Q29uc3RydWN0VmFyYXJnczsK
KyAgICAgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5vcCgpID09IFRhaWxDYWxsVmFyYXJncyB8
fCBub2RlLT5vcCgpID09IFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3MpCisgICAgICAgICAgICAgICAg
ICAgIGNhbGxUeXBlID0gQ2FsbExpbmtJbmZvOjpUYWlsQ2FsbFZhcmFyZ3M7CisgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBjYWxsVHlwZSA9IENhbGxMaW5rSW5mbzo6
Q2FsbFZhcmFyZ3M7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgYm9vbCBpc1Rh
aWxDYWxsID0gQ2FsbExpbmtJbmZvOjpjYWxsTW9kZUZvcihjYWxsVHlwZSkgPT0gQ2FsbE1vZGU6
OlRhaWw7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpE
YXRhTGFiZWxQdHIgdGFyZ2V0VG9DaGVjazsKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
Okp1bXAgc2xvd1BhdGggPSBqaXQuYnJhbmNoUHRyV2l0aFBhdGNoKAorICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBHUFJJbmZvOjpyZWdUMCwgdGFyZ2V0VG9DaGVj
aywKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKDApKTsK
KyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgZmFz
dENhbGw7CisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGRvbmU7CisgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKGlzVGFpbENhbGwpIHsKKyAgICAgICAgICAg
ICAgICAgICAgaml0LnByZXBhcmVGb3JUYWlsQ2FsbFNsb3coKTsKKyAgICAgICAgICAgICAgICAg
ICAgZmFzdENhbGwgPSBqaXQubmVhclRhaWxDYWxsKCk7CisgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgZmFzdENhbGwgPSBqaXQubmVhckNhbGwoKTsKKyAgICAg
ICAgICAgICAgICAgICAgZG9uZSA9IGppdC5qdW1wKCk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHNsb3dQYXRoLmxpbmsoJmppdCk7CisgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIEdQUkluZm86OnJlZ1QyKTsKKyAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd0NhbGwgPSBqaXQubmVhckNhbGwoKTsKKyAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoaXNUYWlsQ2FsbCkKKyAgICAgICAgICAgICAg
ICAgICAgaml0LmFib3J0V2l0aFJlYXNvbihKSVREaWRSZXR1cm5Gcm9tVGFpbENhbGwpOworICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxs
KGNhbGxUeXBlLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBqaXQuYWRkUHRyKAorICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigtb3JpZ2luYWxTdGFja0hlaWdodCksCisg
ICAgICAgICAgICAgICAgICAgIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDQ2FsbEhlbHBl
cnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICBqaXQuYWRkTGlua1Rhc2soCisgICAgICAgICAgICAgICAgICAgIFs9XSAoTGlua0J1ZmZl
ciYgbGlua0J1ZmZlcikgeworICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyIGxpbmtDYWxsID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVy
LnZtKCkuZ2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5jb2RlKCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoc2xvd0NhbGwsIEZ1bmN0aW9uUHRyKGxp
bmtDYWxsLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRDYWxsTG9jYXRpb25zKAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxs
KHNsb3dDYWxsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxvY2F0
aW9uT2YodGFyZ2V0VG9DaGVjayksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1
ZmZlci5sb2NhdGlvbk9mTmVhckNhbGwoZmFzdENhbGwpKTsKKyAgICAgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICBzZXRKU1ZhbHVlKHBhdGNocG9pbnQpOwor
I2Vsc2UKICAgICAgICAgdW5zaWduZWQgc3RhY2ttYXBJRCA9IG1fc3RhY2ttYXBJRHMrKzsKICAg
ICAgICAgCiAgICAgICAgIFN0YWNrbWFwQXJndW1lbnRMaXN0IGFyZ3VtZW50czsKQEAgLTUxMDgs
MTUgKzUzMzksMTUgQEAgcHJpdmF0ZToKIAogICAgICAgICBhcmd1bWVudHMuaW5zZXJ0KDAsIG1f
b3V0LmNvbnN0SW50MzIoMiArICEhanNBcmd1bWVudHMpKTsKICAgICAgICAgYXJndW1lbnRzLmlu
c2VydCgwLCBjb25zdE51bGwobV9vdXQucmVmOCkpOwotICAgICAgICBhcmd1bWVudHMuaW5zZXJ0
KDAsIG1fb3V0LmNvbnN0SW50MzIoc2l6ZU9mSUNGb3IobV9ub2RlKSkpOworICAgICAgICBhcmd1
bWVudHMuaW5zZXJ0KDAsIG1fb3V0LmNvbnN0SW50MzIoc2l6ZU9mSUNGb3Iobm9kZSkpKTsKICAg
ICAgICAgYXJndW1lbnRzLmluc2VydCgwLCBtX291dC5jb25zdEludDY0KHN0YWNrbWFwSUQpKTsK
ICAgICAgICAgCiAgICAgICAgIExWYWx1ZSBjYWxsID0gbV9vdXQuY2FsbChtX291dC5pbnQ2NCwg
bV9vdXQucGF0Y2hwb2ludEludDY0SW50cmluc2ljKCksIGFyZ3VtZW50cyk7CiAgICAgICAgIHNl
dEluc3RydWN0aW9uQ2FsbGluZ0NvbnZlbnRpb24oY2FsbCwgTExWTUNDYWxsQ29udik7CiAgICAg
ICAgIAotICAgICAgICBtX2Z0bFN0YXRlLmpzQ2FsbFZhcmFyZ3Nlcy5hcHBlbmQoSlNDYWxsVmFy
YXJncyhzdGFja21hcElELCBtX25vZGUsIGNvZGVPcmlnaW5EZXNjcmlwdGlvbk9mQ2FsbFNpdGUo
KSkpOworICAgICAgICBtX2Z0bFN0YXRlLmpzQ2FsbFZhcmFyZ3Nlcy5hcHBlbmQoSlNDYWxsVmFy
YXJncyhzdGFja21hcElELCBub2RlLCBjb2RlT3JpZ2luRGVzY3JpcHRpb25PZkNhbGxTaXRlKCkp
KTsKIAotICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+b3AoKSkgeworICAgICAgICBzd2l0Y2ggKG5v
ZGUtPm9wKCkpIHsKICAgICAgICAgY2FzZSBUYWlsQ2FsbFZhcmFyZ3M6CiAgICAgICAgIGNhc2Ug
VGFpbENhbGxGb3J3YXJkVmFyYXJnczoKICAgICAgICAgICAgIG1fb3V0LnVucmVhY2hhYmxlKCk7
CkBAIC01NDg4LDcgKzU3MTksNyBAQCBwcml2YXRlOgogICAgICAgICBERkdfQVNTRVJUKG1fZ3Jh
cGgsIG1fbm9kZSwgbV9vcmlnaW4uZXhpdE9LKTsKICAgICAgICAgCiAjaWYgRlRMX1VTRVNfQjMK
LSAgICAgICAgQjM6OlBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9p
bnQoVm9pZCk7CisgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBh
dGNocG9pbnQoVm9pZCk7CiAgICAgICAgIE9TUkV4aXREZXNjcmlwdG9yKiBkZXNjcmlwdG9yID0g
YXBwZW5kT1NSRXhpdERlc2NyaXB0b3Iobm9WYWx1ZSgpLCBudWxscHRyKTsKICAgICAgICAgTm9k
ZU9yaWdpbiBvcmlnaW4gPSBtX29yaWdpbjsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kQ29s
ZEFueXMoYnVpbGRFeGl0QXJndW1lbnRzKGRlc2NyaXB0b3IsIG9yaWdpbi5mb3JFeGl0LCBub1Zh
bHVlKCkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmgJKHJldmlzaW9u
IDE5NDMyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODUsOCArODUsNiBAQCBwdWJsaWM6CiAgICAgQjM6OlBhdGNocG9pbnRWYWx1
ZSogaGFuZGxlU3RhY2tPdmVyZmxvd0V4Y2VwdGlvblZhbHVlIHsgbnVsbHB0ciB9OwogICAgIEIz
OjpQYXRjaHBvaW50VmFsdWUqIGhhbmRsZUV4Y2VwdGlvblZhbHVlIHsgbnVsbHB0ciB9OwogICAg
IEIzOjpTdGFja1Nsb3RWYWx1ZSogY2FwdHVyZWRWYWx1ZSB7IG51bGxwdHIgfTsKLSAgICBCMzo6
U3RhY2tTbG90VmFsdWUqIHZhcmFyZ3NTcGlsbFNsb3RzVmFsdWUgeyBudWxscHRyIH07Ci0gICAg
QjM6OlN0YWNrU2xvdFZhbHVlKiBleGNlcHRpb25IYW5kbGluZ1NwaWxsU2xvdFZhbHVlIHsgbnVs
bHB0ciB9OwogI2Vsc2UgLy8gRlRMX1VTRVNfQjMKICAgICB1bnNpZ25lZCBoYW5kbGVTdGFja092
ZXJmbG93RXhjZXB0aW9uU3RhY2ttYXBJRCB7IFVJTlRfTUFYIH07CiAgICAgdW5zaWduZWQgaGFu
ZGxlRXhjZXB0aW9uU3RhY2ttYXBJRCB7IFVJTlRfTUFYIH07CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL3ZhcmFyZ3Mtbm8tZm9yd2FyZC5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3ZhcmFyZ3Mtbm8tZm9yd2FyZC5q
cwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdmFy
YXJncy1uby1mb3J3YXJkLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTggQEAKK2Z1bmN0
aW9uIGZvbyhhLCBiLCBjKSB7CisgICAgcmV0dXJuIGEgKyBiICogMiArIGMgKiAzOworfQorCitu
b0lubGluZShmb28pOworCitmdW5jdGlvbiBiYXooYXJncykgeworICAgIHJldHVybiBmb28uYXBw
bHkodGhpcywgYXJncyk7Cit9CisKK25vSW5saW5lKGJheik7CisKK2ZvciAodmFyIGkgPSAwOyBp
IDwgMTAwMDA7ICsraSkgeworICAgIHZhciByZXN1bHQgPSBiYXooWzUsIDYsIDddKTsKKyAgICBp
ZiAocmVzdWx0ICE9IDUgKyA2ICogMiArIDcgKiAzKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJh
ZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvdmFyYXJncy1zaW1wbGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy92YXJhcmdzLXNpbXBsZS5qcwkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdmFyYXJncy1zaW1wbGUuanMJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxOCBAQAorZnVuY3Rpb24gZm9vKGEsIGIsIGMpIHsKKyAg
ICByZXR1cm4gYSArIGIgKiAyICsgYyAqIDM7Cit9CisKK25vSW5saW5lKGZvbyk7CisKK2Z1bmN0
aW9uIGJheigpIHsKKyAgICByZXR1cm4gZm9vLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Cit9CisK
K25vSW5saW5lKGJheik7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAg
IHZhciByZXN1bHQgPSBiYXooNSwgNiwgNyk7CisgICAgaWYgKHJlc3VsdCAhPSA1ICsgNiAqIDIg
KyA3ICogMykKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0Owor
fQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3ZhcmFyZ3MtdHdv
LWxldmVsLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvdmFyYXJncy10d28tbGV2ZWwuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL3ZhcmFyZ3MtdHdvLWxldmVsLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMjIgQEAKK2Z1bmN0aW9uIGZvbyhhLCBiLCBjKSB7CisgICAgcmV0dXJuIGEgKyBi
ICogMiArIGMgKiAzOworfQorCitub0lubGluZShmb28pOworCitmdW5jdGlvbiBiYXIoKSB7Cisg
ICAgcmV0dXJuIGZvby5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworfQorCitmdW5jdGlvbiBiYXoo
KSB7CisgICAgcmV0dXJuIGJhci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworfQorCitub0lubGlu
ZShiYXopOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIgcmVz
dWx0ID0gYmF6KDUsIDYsIDcpOworICAgIGlmIChyZXN1bHQgIT0gNSArIDYgKiAyICsgNyAqIDMp
CisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30KKwo=
</data>
<flag name="review"
          id="292764"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>