<?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>87205</bug_id>
          
          <creation_ts>2012-05-22 21:22:25 -0700</creation_ts>
          <short_desc>DFG should keep captured variables alive until the (inline) return.</short_desc>
          <delta_ts>2012-07-31 07:34:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>85945</dependson>
          <blocked>87813</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>kangil.han</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>631165</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-22 21:22:25 -0700</bug_when>
    <thetext>Otherwise OSR exit may decided to set them to Undefined.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631295</commentid>
    <comment_count>1</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-22 23:57:50 -0700</bug_when>
    <thetext>Currently a variable may appear to be dead at a basic block boundary even though it is captured. As a hack, we can peek at the first node of the successor block(s) and check what variables are captured at that node&apos;s code origin. But that&apos;s just disgusting and wrong.

The right solution is to change how captured variables are flushed. Currently we flush SetLocals by planting a Flush node right after them:

a: SetLocal(thingy)
b: Flush(@a)

But we could instead have a flush right before each SetLocal:

a: Flush(...)
b: SetLocal(thingy)

As well as a Flush for all captured variables at the return site. That will effectively keep variables alive through the whole span of code in which they are captured.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635624</commentid>
    <comment_count>2</comment_count>
      <attachid>144458</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-28 23:37:27 -0700</bug_when>
    <thetext>Created attachment 144458
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635658</commentid>
    <comment_count>3</comment_count>
      <attachid>144464</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-29 00:09:17 -0700</bug_when>
    <thetext>Created attachment 144464
it&apos;s starting to work</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636416</commentid>
    <comment_count>4</comment_count>
      <attachid>144616</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-29 14:06:28 -0700</bug_when>
    <thetext>Created attachment 144616
more

Still making sure that I&apos;ve dotted all of my t&apos;s.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636479</commentid>
    <comment_count>5</comment_count>
      <attachid>144629</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-29 15:06:25 -0700</bug_when>
    <thetext>Created attachment 144629
even more

It&apos;s starting to pass tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636525</commentid>
    <comment_count>6</comment_count>
      <attachid>144638</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-29 16:14:38 -0700</bug_when>
    <thetext>Created attachment 144638
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636556</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-29 16:44:05 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/118858</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683029</commentid>
    <comment_count>8</comment_count>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2012-07-31 07:34:00 -0700</bug_when>
    <thetext>Just for your information, I&apos;ve got a build warning on my laptop as below. :-)

[  5%] Building CXX object Source/JavaScriptCore/CMakeFiles/javascriptcore_efl.dir/dfg/DFGCapabilities.cpp.o
/home/kangilhan/dev/WebKit/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp: In member function ‘JSC::DFG::ArgumentPosition* JSC::DFG::ByteCodeParser::findArgumentPositionForLocal(int)’:
/home/kangilhan/dev/WebKit/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:361:73: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144458</attachid>
            <date>2012-05-28 23:37:27 -0700</date>
            <delta_ts>2012-05-29 00:09:17 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>fixflush_patch_1.diff</filename>
            <type>text/plain</type>
            <size>10304</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE4NzI1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBA
CisyMDEyLTA1LTI4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBrZWVwIGNhcHR1cmVkIHZhcmlhYmxlcyBhbGl2ZSB1bnRpbCB0aGUgKGlubGlu
ZSkgcmV0dXJuLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODcyMDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAg
CisgICAgICAgIFdvcmsgaW4gcHJvZ3Jlc3MhCisKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpzZXRMb2NhbCk6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnNldEFyZ3VtZW50KToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Zmx1c2gpOgorICAgICAgICAoQnl0ZUNvZGVQ
YXJzZXIpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpmbHVzaEFyZ3VtZW50
cyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKToK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAg
ICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6c2V0
TG9jYWxTdG9yZUVsaW1pbmF0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6cGVy
Zm9ybU5vZGVDU0UpOgorCiAyMDEyLTA1LTI4ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcu
Ym90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTE4NjQ2
LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAJKHJldmlzaW9uIDExODcyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDAsMzMgKzI0MCwzMSBAQCBw
cml2YXRlOgogICAgIHsKICAgICAgICAgYm9vbCBpc0NhcHR1cmVkID0gbV9jb2RlQmxvY2stPmxv
Y2FsSXNDYXB0dXJlZChtX2lubGluZVN0YWNrVG9wLT5tX2lubGluZUNhbGxGcmFtZSwgb3BlcmFu
ZCk7CiAgICAgICAgIAotICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNz
RGF0YSA9IG5ld1ZhcmlhYmxlQWNjZXNzRGF0YShvcGVyYW5kLCBpc0NhcHR1cmVkKTsKLSAgICAg
ICAgTm9kZUluZGV4IG5vZGVJbmRleCA9IGFkZFRvR3JhcGgoU2V0TG9jYWwsIE9wSW5mbyh2YXJp
YWJsZUFjY2Vzc0RhdGEpLCB2YWx1ZSk7Ci0gICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJs
ZXNBdFRhaWwubG9jYWwob3BlcmFuZCkgPSBub2RlSW5kZXg7Ci0gICAgICAgIAogICAgICAgICBi
b29sIHNob3VsZEZsdXNoID0gaXNDYXB0dXJlZDsKICAgICAgICAgCi0gICAgICAgIGlmICghc2hv
dWxkRmx1c2gpIHsKLSAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgaW4gYXJndW1lbnQgcG9zaXRp
b24sIHRoZW4gaXQgc2hvdWxkIGJlIGZsdXNoZWQuCi0gICAgICAgICAgICBmb3IgKElubGluZVN0
YWNrRW50cnkqIHN0YWNrID0gbV9pbmxpbmVTdGFja1RvcDsgOyBzdGFjayA9IHN0YWNrLT5tX2Nh
bGxlcikgewotICAgICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1l
ID0gc3RhY2stPm1faW5saW5lQ2FsbEZyYW1lOwotICAgICAgICAgICAgICAgIGlmICghaW5saW5l
Q2FsbEZyYW1lKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBp
ZiAoc3RhdGljX2Nhc3Q8aW50PihvcGVyYW5kKSA+PSBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zm
c2V0IC0gUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplKQotICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50PihvcGVy
YW5kKSA9PSBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lOjp0aGlzQXJn
dW1lbnRPZmZzZXQoKSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICAgICAgaWYgKG9wZXJhbmQgPCBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0IC0gUmVnaXN0
ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplIC0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMu
c2l6ZSgpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBp
bnQgYXJndW1lbnQgPSBvcGVyYW5kVG9Bcmd1bWVudChvcGVyYW5kIC0gaW5saW5lQ2FsbEZyYW1l
LT5zdGFja09mZnNldCk7Ci0gICAgICAgICAgICAgICAgc3RhY2stPm1fYXJndW1lbnRQb3NpdGlv
bnNbYXJndW1lbnRdLT5hZGRWYXJpYWJsZSh2YXJpYWJsZUFjY2Vzc0RhdGEpOwotICAgICAgICAg
ICAgICAgIHNob3VsZEZsdXNoID0gdHJ1ZTsKKyAgICAgICAgLy8gSWYgdGhpcyBpcyBpbiBhcmd1
bWVudCBwb3NpdGlvbiwgdGhlbiBpdCBzaG91bGQgYmUgZmx1c2hlZC4KKyAgICAgICAgZm9yIChJ
bmxpbmVTdGFja0VudHJ5KiBzdGFjayA9IG1faW5saW5lU3RhY2tUb3A7IDsgc3RhY2sgPSBzdGFj
ay0+bV9jYWxsZXIpIHsKKyAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZy
YW1lID0gc3RhY2stPm1faW5saW5lQ2FsbEZyYW1lOworICAgICAgICAgICAgaWYgKCFpbmxpbmVD
YWxsRnJhbWUpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50PihvcGVyYW5kKSA+PSBpbmxpbmVDYWxsRnJhbWUtPnN0
YWNrT2Zmc2V0IC0gUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplKQorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PGludD4ob3BlcmFu
ZCkgPT0gaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZTo6dGhpc0FyZ3Vt
ZW50T2Zmc2V0KCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAo
b3BlcmFuZCA8IGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgLSBSZWdpc3RlckZpbGU6OkNh
bGxGcmFtZUhlYWRlclNpemUgLSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpCisg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpbnQgYXJndW1lbnQgPSBvcGVy
YW5kVG9Bcmd1bWVudChvcGVyYW5kIC0gaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCk7Cisg
ICAgICAgICAgICBzdGFjay0+bV9hcmd1bWVudFBvc2l0aW9uc1thcmd1bWVudF0tPmFkZFZhcmlh
YmxlKGZsdXNoKG9wZXJhbmQpKTsKKyAgICAgICAgICAgIHNob3VsZEZsdXNoID0gZmFsc2U7Cisg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKHNob3Vs
ZEZsdXNoKQotICAgICAgICAgICAgYWRkVG9HcmFwaChGbHVzaCwgT3BJbmZvKHZhcmlhYmxlQWNj
ZXNzRGF0YSksIG5vZGVJbmRleCk7CisgICAgICAgICAgICBmbHVzaChvcGVyYW5kKTsKKworICAg
ICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5ld1ZhcmlhYmxl
QWNjZXNzRGF0YShvcGVyYW5kLCBpc0NhcHR1cmVkKTsKKyAgICAgICAgTm9kZUluZGV4IG5vZGVJ
bmRleCA9IGFkZFRvR3JhcGgoU2V0TG9jYWwsIE9wSW5mbyh2YXJpYWJsZUFjY2Vzc0RhdGEpLCB2
YWx1ZSk7CisgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwubG9jYWwob3Bl
cmFuZCkgPSBub2RlSW5kZXg7CiAgICAgfQogCiAgICAgLy8gVXNlZCBpbiBpbXBsZW1lbnRpbmcg
Z2V0L3NldCwgYWJvdmUsIHdoZXJlIHRoZSBvcGVyYW5kIGlzIGFuIGFyZ3VtZW50LgpAQCAtMzQz
LDE5ICszNDEsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIEFTU0VSVChhcmd1bWVu
dCA8IG1fbnVtQXJndW1lbnRzKTsKICAgICAgICAgCisgICAgICAgIC8vIEFsd2F5cyBmbHVzaCBh
cmd1bWVudHMsIGV4Y2VwdCBmb3IgJ3RoaXMnLgorICAgICAgICBpZiAoYXJndW1lbnQpIHsKKyAg
ICAgICAgICAgIElubGluZVN0YWNrRW50cnkqIHN0YWNrID0gbV9pbmxpbmVTdGFja1RvcDsKKyAg
ICAgICAgICAgIHdoaWxlIChzdGFjay0+bV9pbmxpbmVDYWxsRnJhbWUpIC8vIGZpbmQgdGhlIG1h
Y2hpbmUgc3RhY2sgZW50cnkuCisgICAgICAgICAgICAgICAgc3RhY2sgPSBzdGFjay0+bV9jYWxs
ZXI7CisgICAgICAgICAgICBzdGFjay0+bV9hcmd1bWVudFBvc2l0aW9uc1thcmd1bWVudF0tPmFk
ZFZhcmlhYmxlKGZsdXNoKG9wZXJhbmQpKTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAg
VmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBuZXdWYXJpYWJsZUFjY2Vz
c0RhdGEob3BlcmFuZCwgaXNDYXB0dXJlZCk7Ci0gICAgICAgIElubGluZVN0YWNrRW50cnkqIHN0
YWNrID0gbV9pbmxpbmVTdGFja1RvcDsKLSAgICAgICAgd2hpbGUgKHN0YWNrLT5tX2lubGluZUNh
bGxGcmFtZSkgLy8gZmluZCB0aGUgbWFjaGluZSBzdGFjayBlbnRyeS4KLSAgICAgICAgICAgIHN0
YWNrID0gc3RhY2stPm1fY2FsbGVyOwotICAgICAgICBzdGFjay0+bV9hcmd1bWVudFBvc2l0aW9u
c1thcmd1bWVudF0tPmFkZFZhcmlhYmxlKHZhcmlhYmxlQWNjZXNzRGF0YSk7CiAgICAgICAgIE5v
ZGVJbmRleCBub2RlSW5kZXggPSBhZGRUb0dyYXBoKFNldExvY2FsLCBPcEluZm8odmFyaWFibGVB
Y2Nlc3NEYXRhKSwgdmFsdWUpOwogICAgICAgICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRU
YWlsLmFyZ3VtZW50KGFyZ3VtZW50KSA9IG5vZGVJbmRleDsKLSAgICAgICAgLy8gQWx3YXlzIGZs
dXNoIGFyZ3VtZW50cywgZXhjZXB0IGZvciAndGhpcycuCi0gICAgICAgIGlmIChhcmd1bWVudCkK
LSAgICAgICAgICAgIGFkZFRvR3JhcGgoRmx1c2gsIE9wSW5mbyh2YXJpYWJsZUFjY2Vzc0RhdGEp
LCBub2RlSW5kZXgpOwogICAgIH0KICAgICAKLSAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGZsdXNo
QXJndW1lbnQoaW50IG9wZXJhbmQpCisgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBmbHVzaChpbnQg
b3BlcmFuZCkKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBjaGVjayBpZiB0
aGUgc2FtZSBvcGVyYW5kIGhhZCBhbHJlYWR5IGJlZW4gZmx1c2hlZCB0bwogICAgICAgICAvLyBz
b21lIG90aGVyIGxvY2FsIHZhcmlhYmxlLgpAQCAtNDE1LDYgKzQxNCwxMiBAQCBwcml2YXRlOgog
ICAgICAgICB9CiAgICAgICAgIHJldHVybiB2YXJpYWJsZUFjY2Vzc0RhdGE7CiAgICAgfQorICAg
IAorICAgIHZvaWQgZmx1c2hBcmd1bWVudHMoKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBhcmd1bWVudCA9IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJz
KCk7IGFyZ3VtZW50LS0gPiAxOykKKyAgICAgICAgICAgIGZsdXNoKGFyZ3VtZW50VG9PcGVyYW5k
KGFyZ3VtZW50KSk7CisgICAgfQogCiAgICAgLy8gR2V0IGFuIG9wZXJhbmQsIGFuZCBwZXJmb3Jt
IGEgVG9JbnQzMi9Ub051bWJlciBjb252ZXJzaW9uIG9uIGl0LgogICAgIE5vZGVJbmRleCBnZXRU
b0ludDMyKGludCBvcGVyYW5kKQpAQCAtMTIxOSwxNyArMTIyNCw2IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUlubGluaW5nKGJvb2wKICAgICAKICAgICAvLyBGSVhNRTogRG9uJ3QgZmx1
c2ggY29uc3RhbnRzIQogICAgIAotICAgIFZlY3RvcjxWYXJpYWJsZUFjY2Vzc0RhdGEqLCA4PiBh
cmd1bWVudHM7Ci0gICAgZm9yIChpbnQgaSA9IDE7IGkgPCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpczsgKytpKSB7Ci0gICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NE
YXRhID0KLSAgICAgICAgICAgIGZsdXNoQXJndW1lbnQocmVnaXN0ZXJPZmZzZXQgKyBhcmd1bWVu
dFRvT3BlcmFuZChpKSk7Ci0gICAgICAgIGFyZ3VtZW50cy5hcHBlbmQodmFyaWFibGVBY2Nlc3NE
YXRhKTsKLSAgICAgICAgCi0gICAgICAgIC8vIEFyZSB3ZSBnb2luZyB0byBiZSBjYXB0dXJpbmcg
YXJndW1lbnRzPyBJZiBzbyBtYWtlIHN1cmUgd2UgcmVjb3JkIHRoaXMgZmFjdC4KLSAgICAgICAg
aWYgKGNvZGVCbG9jay0+YXJndW1lbnRJc0NhcHR1cmVkKGkpKQotICAgICAgICAgICAgdmFyaWFi
bGVBY2Nlc3NEYXRhLT5tZXJnZUlzQ2FwdHVyZWQodHJ1ZSk7Ci0gICAgfQotICAgIAogICAgIGlu
dCBpbmxpbmVDYWxsRnJhbWVTdGFydCA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChy
ZWdpc3Rlck9mZnNldCkgLSBSZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlclNpemU7CiAgICAg
CiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGFyZWEgdXNlZCBieSB0aGUgY2FsbCBmcmFtZSBp
cyByZXNlcnZlZC4KQEAgLTEyNTEsMTMgKzEyNDUsNiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVJbmxpbmluZyhib29sCiAgICAgICAgICAgICB1c2VzUmVzdWx0ID8gcmVzdWx0T3BlcmFu
ZCA6IEludmFsaWRWaXJ0dWFsUmVnaXN0ZXIpLAogICAgICAgICAoVmlydHVhbFJlZ2lzdGVyKWlu
bGluZUNhbGxGcmFtZVN0YXJ0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywga2luZCk7CiAg
ICAgCi0gICAgLy8gTGluayB1cCB0aGUgYXJndW1lbnQgdmFyaWFibGUgYWNjZXNzIGRhdGFzIHRv
IHRoZWlyIGFyZ3VtZW50IHBvc2l0aW9ucy4KLSAgICBmb3IgKGludCBpID0gMTsgaSA8IGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzOyArK2kpIHsKLSAgICAgICAgaWYgKHN0YXRpY19jYXN0PHNp
emVfdD4oaSkgPj0gaW5saW5lU3RhY2tFbnRyeS5tX2FyZ3VtZW50UG9zaXRpb25zLnNpemUoKSkK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpbmxpbmVTdGFja0VudHJ5Lm1fYXJndW1lbnRQ
b3NpdGlvbnNbaV0tPmFkZFZhcmlhYmxlKGFyZ3VtZW50c1tpIC0gMV0pOwotICAgIH0KLSAgICAK
ICAgICAvLyBUaGlzIGlzIHdoZXJlIHRoZSBhY3R1YWwgaW5saW5pbmcgcmVhbGx5IGhhcHBlbnMu
CiAgICAgdW5zaWduZWQgb2xkSW5kZXggPSBtX2N1cnJlbnRJbmRleDsKICAgICB1bnNpZ25lZCBv
bGRQcm9maWxpbmdJbmRleCA9IG1fY3VycmVudFByb2ZpbGluZ0luZGV4OwpAQCAtMjM1Miw2ICsy
MzM5LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAg
ICB9CiAKICAgICAgICAgY2FzZSBvcF9yZXQ6CisgICAgICAgICAgICBmbHVzaEFyZ3VtZW50cygp
OwogICAgICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1faW5saW5lQ2FsbEZyYW1lKSB7
CiAgICAgICAgICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fcmV0dXJuVmFsdWUgIT0g
SW52YWxpZFZpcnR1YWxSZWdpc3RlcikKICAgICAgICAgICAgICAgICAgICAgc2V0RGlyZWN0KG1f
aW5saW5lU3RhY2tUb3AtPm1fcmV0dXJuVmFsdWUsIGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kKSk7CkBAIC0yMzc5LDYgKzIzNjcsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpw
YXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBMQVNUX09QQ09ERShvcF9yZXQpOwogICAg
ICAgICAgICAgCiAgICAgICAgIGNhc2Ugb3BfZW5kOgorICAgICAgICAgICAgZmx1c2hBcmd1bWVu
dHMoKTsKICAgICAgICAgICAgIEFTU0VSVCghbV9pbmxpbmVTdGFja1RvcC0+bV9pbmxpbmVDYWxs
RnJhbWUpOwogICAgICAgICAgICAgYWRkVG9HcmFwaChSZXR1cm4sIGdldChjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kKSk7CiAgICAgICAgICAgICBMQVNUX09QQ09ERShvcF9lbmQpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHJldmlzaW9u
IDExODcyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02MjAsNyArNjIwLDcgQEAgcHJpdmF0ZToKICAgICB9CiAgICAgCiAg
ICAgLy8gVGhpcyByZXR1cm5zIHRoZSBGbHVzaCBub2RlIHRoYXQgaXMga2VlcGluZyBhIFNldExv
Y2FsIGFsaXZlLgotICAgIE5vZGVJbmRleCBzZXRMb2NhbFN0b3JlRWxpbWluYXRpb24oVmlydHVh
bFJlZ2lzdGVyIGxvY2FsKQorICAgIE5vZGVJbmRleCBzZXRMb2NhbFN0b3JlRWxpbWluYXRpb24o
VmlydHVhbFJlZ2lzdGVyIGxvY2FsLCBOb2RlSW5kZXggZXhwZWN0ZWROb2RlSW5kZXgpCiAgICAg
ewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2luZGV4SW5CbG9jazsgaS0tOykgewogICAg
ICAgICAgICAgTm9kZUluZGV4IGluZGV4ID0gbV9jdXJyZW50QmxvY2stPmF0KGkpOwpAQCAtNjI5
LDcgKzYyOSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICBzd2l0Y2ggKG5vZGUub3AoKSkgewogICAgICAgICAgICAgY2FzZSBHZXRMb2NhbDoKLSAg
ICAgICAgICAgIGNhc2UgU2V0TG9jYWw6CisgICAgICAgICAgICBjYXNlIEZsdXNoOgogICAgICAg
ICAgICAgICAgIGlmIChub2RlLmxvY2FsKCkgPT0gbG9jYWwpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBOb05vZGU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC02MzksMTkgKzYzOSwx
MyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9Ob2RlOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSBGbHVz
aDogeworICAgICAgICAgICAgY2FzZSBTZXRMb2NhbDogewogICAgICAgICAgICAgICAgIGlmIChu
b2RlLmxvY2FsKCkgIT0gbG9jYWwpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgIGlmICghaSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgTm9kZUluZGV4IHByZXZJbmRleCA9IG1fY3VycmVudEJsb2NrLT5hdChpIC0gMSk7Ci0g
ICAgICAgICAgICAgICAgaWYgKHByZXZJbmRleCAhPSBub2RlLmNoaWxkMSgpLmluZGV4KCkpCi0g
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIEFTU0VSVChtX2dyYXBo
W3ByZXZJbmRleF0ubG9jYWwoKSA9PSBsb2NhbCk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG1f
Z3JhcGhbcHJldkluZGV4XS52YXJpYWJsZUFjY2Vzc0RhdGEoKSA9PSBub2RlLnZhcmlhYmxlQWNj
ZXNzRGF0YSgpKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQobV9ncmFwaFtwcmV2SW5kZXhdLnNo
b3VsZEdlbmVyYXRlKCkpOworICAgICAgICAgICAgICAgIGlmIChpbmRleCAhPSBleHBlY3RlZE5v
ZGVJbmRleCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vTm9kZTsKICAgICAgICAgICAg
ICAgICBpZiAobV9ncmFwaFtwcmV2SW5kZXhdLnJlZkNvdW50KCkgPiAxKQotICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vTm9kZTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gaW5kZXg7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
CkBAIC04NTUsNiArODQ5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIElzIGl0IGNvcnJlY3QgdG8gY2hhbmdl
IHRoaXMgaW50byBhIEZsdXNoPyBJdCBmZWVscyBsaWtlIGl0IG91Z2h0IHRvIGJlLgogICAgICAg
ICBjYXNlIFNldExvY2FsOiB7CiAgICAgICAgICAgICBpZiAobV9maXhwb2ludFN0YXRlID09IEZp
eHBvaW50Tm90Q29udmVyZ2VkKQogICAgICAgICAgICAgICAgIGJyZWFrOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144464</attachid>
            <date>2012-05-29 00:09:17 -0700</date>
            <delta_ts>2012-05-29 14:06:28 -0700</delta_ts>
            <desc>it&apos;s starting to work</desc>
            <filename>fixflush_patch_2.diff</filename>
            <type>text/plain</type>
            <size>12763</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE4NzI3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBA
CisyMDEyLTA1LTI5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBrZWVwIGNhcHR1cmVkIHZhcmlhYmxlcyBhbGl2ZSB1bnRpbCB0aGUgKGlubGlu
ZSkgcmV0dXJuLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODcyMDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAg
CisgICAgICAgIFdvcmsgaW4gcHJvZ3Jlc3MhIEl0J3Mgc3RhcnRpbmcgdG8gZG8gdGhpbmdzLgor
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6c2V0TG9jYWwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpzZXRBcmd1bWVudCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
OmZsdXNoKToKKyAgICAgICAgKEJ5dGVDb2RlUGFyc2VyKToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6Zmx1c2hEaXJlY3QpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpmbHVzaEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUlubGluaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6
cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpDU0VQaGFzZTo6c2V0TG9jYWxTdG9yZUVsaW1pbmF0aW9uKToKKyAgICAgICAgKEpT
Qzo6REZHOjpDU0VQaGFzZTo6cGVyZm9ybU5vZGVDU0UpOgorCiAyMDEyLTA1LTI4ICBTaGVyaWZm
IEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMTE4NjQ2LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDExODcyNSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNDAsMzMgKzI0MCwzMSBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgYm9vbCBpc0NhcHR1
cmVkID0gbV9jb2RlQmxvY2stPmxvY2FsSXNDYXB0dXJlZChtX2lubGluZVN0YWNrVG9wLT5tX2lu
bGluZUNhbGxGcmFtZSwgb3BlcmFuZCk7CiAgICAgICAgIAotICAgICAgICBWYXJpYWJsZUFjY2Vz
c0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5ld1ZhcmlhYmxlQWNjZXNzRGF0YShvcGVyYW5k
LCBpc0NhcHR1cmVkKTsKLSAgICAgICAgTm9kZUluZGV4IG5vZGVJbmRleCA9IGFkZFRvR3JhcGgo
U2V0TG9jYWwsIE9wSW5mbyh2YXJpYWJsZUFjY2Vzc0RhdGEpLCB2YWx1ZSk7Ci0gICAgICAgIG1f
Y3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwubG9jYWwob3BlcmFuZCkgPSBub2RlSW5kZXg7
Ci0gICAgICAgIAogICAgICAgICBib29sIHNob3VsZEZsdXNoID0gaXNDYXB0dXJlZDsKICAgICAg
ICAgCi0gICAgICAgIGlmICghc2hvdWxkRmx1c2gpIHsKLSAgICAgICAgICAgIC8vIElmIHRoaXMg
aXMgaW4gYXJndW1lbnQgcG9zaXRpb24sIHRoZW4gaXQgc2hvdWxkIGJlIGZsdXNoZWQuCi0gICAg
ICAgICAgICBmb3IgKElubGluZVN0YWNrRW50cnkqIHN0YWNrID0gbV9pbmxpbmVTdGFja1RvcDsg
OyBzdGFjayA9IHN0YWNrLT5tX2NhbGxlcikgewotICAgICAgICAgICAgICAgIElubGluZUNhbGxG
cmFtZSogaW5saW5lQ2FsbEZyYW1lID0gc3RhY2stPm1faW5saW5lQ2FsbEZyYW1lOwotICAgICAg
ICAgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lKQotICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50PihvcGVyYW5kKSA+PSBpbmxp
bmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0IC0gUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJT
aXplKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBpZiAo
c3RhdGljX2Nhc3Q8aW50PihvcGVyYW5kKSA9PSBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0
ICsgQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSkKLSAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgICAgICAgICAgaWYgKG9wZXJhbmQgPCBpbmxpbmVDYWxsRnJhbWUt
PnN0YWNrT2Zmc2V0IC0gUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplIC0gaW5saW5l
Q2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgICAgICAgICBpbnQgYXJndW1lbnQgPSBvcGVyYW5kVG9Bcmd1bWVudChvcGVy
YW5kIC0gaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCk7Ci0gICAgICAgICAgICAgICAgc3Rh
Y2stPm1fYXJndW1lbnRQb3NpdGlvbnNbYXJndW1lbnRdLT5hZGRWYXJpYWJsZSh2YXJpYWJsZUFj
Y2Vzc0RhdGEpOwotICAgICAgICAgICAgICAgIHNob3VsZEZsdXNoID0gdHJ1ZTsKKyAgICAgICAg
Ly8gSWYgdGhpcyBpcyBpbiBhcmd1bWVudCBwb3NpdGlvbiwgdGhlbiBpdCBzaG91bGQgYmUgZmx1
c2hlZC4KKyAgICAgICAgZm9yIChJbmxpbmVTdGFja0VudHJ5KiBzdGFjayA9IG1faW5saW5lU3Rh
Y2tUb3A7IDsgc3RhY2sgPSBzdGFjay0+bV9jYWxsZXIpIHsKKyAgICAgICAgICAgIElubGluZUNh
bGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gc3RhY2stPm1faW5saW5lQ2FsbEZyYW1lOworICAg
ICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50PihvcGVyYW5kKSA+
PSBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0IC0gUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVI
ZWFkZXJTaXplKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKHN0
YXRpY19jYXN0PGludD4ob3BlcmFuZCkgPT0gaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCAr
IENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICBpZiAob3BlcmFuZCA8IGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZz
ZXQgLSBSZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlclNpemUgLSBpbmxpbmVDYWxsRnJhbWUt
PmFyZ3VtZW50cy5zaXplKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICBpbnQgYXJndW1lbnQgPSBvcGVyYW5kVG9Bcmd1bWVudChvcGVyYW5kIC0gaW5saW5lQ2FsbEZy
YW1lLT5zdGFja09mZnNldCk7CisgICAgICAgICAgICBzdGFjay0+bV9hcmd1bWVudFBvc2l0aW9u
c1thcmd1bWVudF0tPmFkZFZhcmlhYmxlKGZsdXNoKG9wZXJhbmQpKTsKKyAgICAgICAgICAgIHNo
b3VsZEZsdXNoID0gZmFsc2U7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICAKICAgICAgICAgaWYgKHNob3VsZEZsdXNoKQotICAgICAgICAgICAgYWRkVG9HcmFwaChGbHVz
aCwgT3BJbmZvKHZhcmlhYmxlQWNjZXNzRGF0YSksIG5vZGVJbmRleCk7CisgICAgICAgICAgICBm
bHVzaERpcmVjdChvcGVyYW5kKTsKKworICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlh
YmxlQWNjZXNzRGF0YSA9IG5ld1ZhcmlhYmxlQWNjZXNzRGF0YShvcGVyYW5kLCBpc0NhcHR1cmVk
KTsKKyAgICAgICAgTm9kZUluZGV4IG5vZGVJbmRleCA9IGFkZFRvR3JhcGgoU2V0TG9jYWwsIE9w
SW5mbyh2YXJpYWJsZUFjY2Vzc0RhdGEpLCB2YWx1ZSk7CisgICAgICAgIG1fY3VycmVudEJsb2Nr
LT52YXJpYWJsZXNBdFRhaWwubG9jYWwob3BlcmFuZCkgPSBub2RlSW5kZXg7CiAgICAgfQogCiAg
ICAgLy8gVXNlZCBpbiBpbXBsZW1lbnRpbmcgZ2V0L3NldCwgYWJvdmUsIHdoZXJlIHRoZSBvcGVy
YW5kIGlzIGFuIGFyZ3VtZW50LgpAQCAtMzQzLDI0ICszNDEsMjkgQEAgcHJpdmF0ZToKICAgICAg
ICAgCiAgICAgICAgIEFTU0VSVChhcmd1bWVudCA8IG1fbnVtQXJndW1lbnRzKTsKICAgICAgICAg
CisgICAgICAgIC8vIEFsd2F5cyBmbHVzaCBhcmd1bWVudHMsIGV4Y2VwdCBmb3IgJ3RoaXMnLgor
ICAgICAgICBpZiAoYXJndW1lbnQpIHsKKyAgICAgICAgICAgIElubGluZVN0YWNrRW50cnkqIHN0
YWNrID0gbV9pbmxpbmVTdGFja1RvcDsKKyAgICAgICAgICAgIHdoaWxlIChzdGFjay0+bV9pbmxp
bmVDYWxsRnJhbWUpIC8vIGZpbmQgdGhlIG1hY2hpbmUgc3RhY2sgZW50cnkuCisgICAgICAgICAg
ICAgICAgc3RhY2sgPSBzdGFjay0+bV9jYWxsZXI7CisgICAgICAgICAgICBzdGFjay0+bV9hcmd1
bWVudFBvc2l0aW9uc1thcmd1bWVudF0tPmFkZFZhcmlhYmxlKGZsdXNoRGlyZWN0KG9wZXJhbmQp
KTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJp
YWJsZUFjY2Vzc0RhdGEgPSBuZXdWYXJpYWJsZUFjY2Vzc0RhdGEob3BlcmFuZCwgaXNDYXB0dXJl
ZCk7Ci0gICAgICAgIElubGluZVN0YWNrRW50cnkqIHN0YWNrID0gbV9pbmxpbmVTdGFja1RvcDsK
LSAgICAgICAgd2hpbGUgKHN0YWNrLT5tX2lubGluZUNhbGxGcmFtZSkgLy8gZmluZCB0aGUgbWFj
aGluZSBzdGFjayBlbnRyeS4KLSAgICAgICAgICAgIHN0YWNrID0gc3RhY2stPm1fY2FsbGVyOwot
ICAgICAgICBzdGFjay0+bV9hcmd1bWVudFBvc2l0aW9uc1thcmd1bWVudF0tPmFkZFZhcmlhYmxl
KHZhcmlhYmxlQWNjZXNzRGF0YSk7CiAgICAgICAgIE5vZGVJbmRleCBub2RlSW5kZXggPSBhZGRU
b0dyYXBoKFNldExvY2FsLCBPcEluZm8odmFyaWFibGVBY2Nlc3NEYXRhKSwgdmFsdWUpOwogICAg
ICAgICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLmFyZ3VtZW50KGFyZ3VtZW50KSA9
IG5vZGVJbmRleDsKLSAgICAgICAgLy8gQWx3YXlzIGZsdXNoIGFyZ3VtZW50cywgZXhjZXB0IGZv
ciAndGhpcycuCi0gICAgICAgIGlmIChhcmd1bWVudCkKLSAgICAgICAgICAgIGFkZFRvR3JhcGgo
Rmx1c2gsIE9wSW5mbyh2YXJpYWJsZUFjY2Vzc0RhdGEpLCBub2RlSW5kZXgpOwogICAgIH0KICAg
ICAKLSAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGZsdXNoQXJndW1lbnQoaW50IG9wZXJhbmQpCisg
ICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBmbHVzaChpbnQgb3BlcmFuZCkKKyAgICB7CisgICAgICAg
IHJldHVybiBmbHVzaERpcmVjdChtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQob3BlcmFu
ZCkpOworICAgIH0KKyAgICAKKyAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGZsdXNoRGlyZWN0KGlu
dCBvcGVyYW5kKQogICAgIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGNoZWNrIGlm
IHRoZSBzYW1lIG9wZXJhbmQgaGFkIGFscmVhZHkgYmVlbiBmbHVzaGVkIHRvCiAgICAgICAgIC8v
IHNvbWUgb3RoZXIgbG9jYWwgdmFyaWFibGUuCiAgICAgICAgIAotICAgICAgICBvcGVyYW5kID0g
bV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKG9wZXJhbmQpOwogICAgICAgICBib29sIGlz
Q2FwdHVyZWQgPSBtX2NvZGVCbG9jay0+aXNDYXB0dXJlZChtX2lubGluZVN0YWNrVG9wLT5tX2lu
bGluZUNhbGxGcmFtZSwgb3BlcmFuZCk7CiAgICAgICAgIAogICAgICAgICBBU1NFUlQob3BlcmFu
ZCA8IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KTsKQEAgLTQxNSw2ICs0MTgsMTcgQEAgcHJp
dmF0ZToKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdmFyaWFibGVBY2Nlc3NEYXRhOwogICAg
IH0KKyAgICAKKyAgICB2b2lkIGZsdXNoQXJndW1lbnRzKCkKKyAgICB7CisgICAgICAgIGludCBu
dW1Bcmd1bWVudHM7CisgICAgICAgIGlmIChtX2lubGluZVN0YWNrVG9wLT5tX2lubGluZUNhbGxG
cmFtZSkKKyAgICAgICAgICAgIG51bUFyZ3VtZW50cyA9IG1faW5saW5lU3RhY2tUb3AtPm1faW5s
aW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBudW1Bcmd1bWVudHMgPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+bnVtUGFyYW1l
dGVycygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gbnVtQXJndW1lbnRzOyBh
cmd1bWVudC0tID4gMTspCisgICAgICAgICAgICBmbHVzaChhcmd1bWVudFRvT3BlcmFuZChhcmd1
bWVudCkpOworICAgIH0KIAogICAgIC8vIEdldCBhbiBvcGVyYW5kLCBhbmQgcGVyZm9ybSBhIFRv
SW50MzIvVG9OdW1iZXIgY29udmVyc2lvbiBvbiBpdC4KICAgICBOb2RlSW5kZXggZ2V0VG9JbnQz
MihpbnQgb3BlcmFuZCkKQEAgLTEyMTksMTcgKzEyMzMsNiBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVJbmxpbmluZyhib29sCiAgICAgCiAgICAgLy8gRklYTUU6IERvbid0IGZsdXNoIGNv
bnN0YW50cyEKICAgICAKLSAgICBWZWN0b3I8VmFyaWFibGVBY2Nlc3NEYXRhKiwgOD4gYXJndW1l
bnRzOwotICAgIGZvciAoaW50IGkgPSAxOyBpIDwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7
ICsraSkgewotICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9
Ci0gICAgICAgICAgICBmbHVzaEFyZ3VtZW50KHJlZ2lzdGVyT2Zmc2V0ICsgYXJndW1lbnRUb09w
ZXJhbmQoaSkpOwotICAgICAgICBhcmd1bWVudHMuYXBwZW5kKHZhcmlhYmxlQWNjZXNzRGF0YSk7
Ci0gICAgICAgIAotICAgICAgICAvLyBBcmUgd2UgZ29pbmcgdG8gYmUgY2FwdHVyaW5nIGFyZ3Vt
ZW50cz8gSWYgc28gbWFrZSBzdXJlIHdlIHJlY29yZCB0aGlzIGZhY3QuCi0gICAgICAgIGlmIChj
b2RlQmxvY2stPmFyZ3VtZW50SXNDYXB0dXJlZChpKSkKLSAgICAgICAgICAgIHZhcmlhYmxlQWNj
ZXNzRGF0YS0+bWVyZ2VJc0NhcHR1cmVkKHRydWUpOwotICAgIH0KLSAgICAKICAgICBpbnQgaW5s
aW5lQ2FsbEZyYW1lU3RhcnQgPSBtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQocmVnaXN0
ZXJPZmZzZXQpIC0gUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplOwogICAgIAogICAg
IC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBhcmVhIHVzZWQgYnkgdGhlIGNhbGwgZnJhbWUgaXMgcmVz
ZXJ2ZWQuCkBAIC0xMjUxLDEzICsxMjU0LDYgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
SW5saW5pbmcoYm9vbAogICAgICAgICAgICAgdXNlc1Jlc3VsdCA/IHJlc3VsdE9wZXJhbmQgOiBJ
bnZhbGlkVmlydHVhbFJlZ2lzdGVyKSwKICAgICAgICAgKFZpcnR1YWxSZWdpc3RlcilpbmxpbmVD
YWxsRnJhbWVTdGFydCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGtpbmQpOwogICAgIAot
ICAgIC8vIExpbmsgdXAgdGhlIGFyZ3VtZW50IHZhcmlhYmxlIGFjY2VzcyBkYXRhcyB0byB0aGVp
ciBhcmd1bWVudCBwb3NpdGlvbnMuCi0gICAgZm9yIChpbnQgaSA9IDE7IGkgPCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpczsgKytpKSB7Ci0gICAgICAgIGlmIChzdGF0aWNfY2FzdDxzaXplX3Q+
KGkpID49IGlubGluZVN0YWNrRW50cnkubV9hcmd1bWVudFBvc2l0aW9ucy5zaXplKCkpCi0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgaW5saW5lU3RhY2tFbnRyeS5tX2FyZ3VtZW50UG9zaXRp
b25zW2ldLT5hZGRWYXJpYWJsZShhcmd1bWVudHNbaSAtIDFdKTsKLSAgICB9Ci0gICAgCiAgICAg
Ly8gVGhpcyBpcyB3aGVyZSB0aGUgYWN0dWFsIGlubGluaW5nIHJlYWxseSBoYXBwZW5zLgogICAg
IHVuc2lnbmVkIG9sZEluZGV4ID0gbV9jdXJyZW50SW5kZXg7CiAgICAgdW5zaWduZWQgb2xkUHJv
ZmlsaW5nSW5kZXggPSBtX2N1cnJlbnRQcm9maWxpbmdJbmRleDsKQEAgLTIzNTIsNiArMjM0OCw3
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgfQog
CiAgICAgICAgIGNhc2Ugb3BfcmV0OgorICAgICAgICAgICAgZmx1c2hBcmd1bWVudHMoKTsKICAg
ICAgICAgICAgIGlmIChtX2lubGluZVN0YWNrVG9wLT5tX2lubGluZUNhbGxGcmFtZSkgewogICAg
ICAgICAgICAgICAgIGlmIChtX2lubGluZVN0YWNrVG9wLT5tX3JldHVyblZhbHVlICE9IEludmFs
aWRWaXJ0dWFsUmVnaXN0ZXIpCiAgICAgICAgICAgICAgICAgICAgIHNldERpcmVjdChtX2lubGlu
ZVN0YWNrVG9wLT5tX3JldHVyblZhbHVlLCBnZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCkpOwpAQCAtMjM3OSw2ICsyMzc2LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZAogICAgICAgICAgICAgTEFTVF9PUENPREUob3BfcmV0KTsKICAgICAgICAg
ICAgIAogICAgICAgICBjYXNlIG9wX2VuZDoKKyAgICAgICAgICAgIGZsdXNoQXJndW1lbnRzKCk7
CiAgICAgICAgICAgICBBU1NFUlQoIW1faW5saW5lU3RhY2tUb3AtPm1faW5saW5lQ2FsbEZyYW1l
KTsKICAgICAgICAgICAgIGFkZFRvR3JhcGgoUmV0dXJuLCBnZXQoY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZCkpOwogICAgICAgICAgICAgTEFTVF9PUENPREUob3BfZW5kKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCShyZXZpc2lvbiAxMTg3
MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNjIwLDcgKzYyMCw3IEBAIHByaXZhdGU6CiAgICAgfQogICAgIAogICAgIC8vIFRo
aXMgcmV0dXJucyB0aGUgRmx1c2ggbm9kZSB0aGF0IGlzIGtlZXBpbmcgYSBTZXRMb2NhbCBhbGl2
ZS4KLSAgICBOb2RlSW5kZXggc2V0TG9jYWxTdG9yZUVsaW1pbmF0aW9uKFZpcnR1YWxSZWdpc3Rl
ciBsb2NhbCkKKyAgICBOb2RlSW5kZXggc2V0TG9jYWxTdG9yZUVsaW1pbmF0aW9uKFZpcnR1YWxS
ZWdpc3RlciBsb2NhbCwgTm9kZUluZGV4IGV4cGVjdGVkTm9kZUluZGV4KQogICAgIHsKICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gbV9pbmRleEluQmxvY2s7IGktLTspIHsKICAgICAgICAgICAg
IE5vZGVJbmRleCBpbmRleCA9IG1fY3VycmVudEJsb2NrLT5hdChpKTsKQEAgLTYyOSw3ICs2Mjks
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgc3dp
dGNoIChub2RlLm9wKCkpIHsKICAgICAgICAgICAgIGNhc2UgR2V0TG9jYWw6Ci0gICAgICAgICAg
ICBjYXNlIFNldExvY2FsOgorICAgICAgICAgICAgY2FzZSBGbHVzaDoKICAgICAgICAgICAgICAg
ICBpZiAobm9kZS5sb2NhbCgpID09IGxvY2FsKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Tm9Ob2RlOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNjM5LDE5ICs2MzksMTMgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vTm9kZTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2UgRmx1c2g6IHsKKyAg
ICAgICAgICAgIGNhc2UgU2V0TG9jYWw6IHsKICAgICAgICAgICAgICAgICBpZiAobm9kZS5sb2Nh
bCgpICE9IGxvY2FsKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICBpZiAoIWkpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIE5v
ZGVJbmRleCBwcmV2SW5kZXggPSBtX2N1cnJlbnRCbG9jay0+YXQoaSAtIDEpOwotICAgICAgICAg
ICAgICAgIGlmIChwcmV2SW5kZXggIT0gbm9kZS5jaGlsZDEoKS5pbmRleCgpKQotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBBU1NFUlQobV9ncmFwaFtwcmV2SW5k
ZXhdLmxvY2FsKCkgPT0gbG9jYWwpOwotICAgICAgICAgICAgICAgIEFTU0VSVChtX2dyYXBoW3By
ZXZJbmRleF0udmFyaWFibGVBY2Nlc3NEYXRhKCkgPT0gbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEo
KSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG1fZ3JhcGhbcHJldkluZGV4XS5zaG91bGRHZW5l
cmF0ZSgpKTsKLSAgICAgICAgICAgICAgICBpZiAobV9ncmFwaFtwcmV2SW5kZXhdLnJlZkNvdW50
KCkgPiAxKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBpZiAo
aW5kZXggIT0gZXhwZWN0ZWROb2RlSW5kZXgpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBO
b05vZGU7CisgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGhbaW5kZXhdLnJlZkNvdW50KCkgPiAx
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9Ob2RlOwogICAgICAgICAgICAgICAgIHJl
dHVybiBpbmRleDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKQEAgLTg1NSwyNyAr
ODQ5LDI2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICAgICAgCi0gICAgICAgIGNhc2UgU2V0TG9jYWw6IHsKKyAgICAgICAgY2FzZSBGbHVzaDogewog
ICAgICAgICAgICAgaWYgKG1fZml4cG9pbnRTdGF0ZSA9PSBGaXhwb2ludE5vdENvbnZlcmdlZCkK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSog
dmFyaWFibGVBY2Nlc3NEYXRhID0gbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKICAgICAgICAg
ICAgIGlmICghdmFyaWFibGVBY2Nlc3NEYXRhLT5pc0NhcHR1cmVkKCkpCiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgbG9jYWwgPSB2YXJpYWJsZUFj
Y2Vzc0RhdGEtPmxvY2FsKCk7Ci0gICAgICAgICAgICBOb2RlSW5kZXggcmVwbGFjZW1lbnRJbmRl
eCA9IHNldExvY2FsU3RvcmVFbGltaW5hdGlvbihsb2NhbCk7CisgICAgICAgICAgICBOb2RlSW5k
ZXggcmVwbGFjZW1lbnRJbmRleCA9IHNldExvY2FsU3RvcmVFbGltaW5hdGlvbihsb2NhbCwgbm9k
ZS5jaGlsZDEoKS5pbmRleCgpKTsKICAgICAgICAgICAgIGlmIChyZXBsYWNlbWVudEluZGV4ID09
IE5vTm9kZSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIE5vZGUmIHJlcGxh
Y2VtZW50ID0gbV9ncmFwaFtyZXBsYWNlbWVudEluZGV4XTsKLSAgICAgICAgICAgIEFTU0VSVChy
ZXBsYWNlbWVudC5vcCgpID09IEZsdXNoKTsKKyAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVu
dC5vcCgpID09IFNldExvY2FsKTsKICAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudC5yZWZD
b3VudCgpID09IDEpOwogICAgICAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50LnNob3VsZEdlbmVy
YXRlKCkpOwotICAgICAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50Lm11c3RHZW5lcmF0ZSgpKTsK
LSAgICAgICAgICAgIHJlcGxhY2VtZW50LnNldE9wQW5kRGVmYXVsdEZsYWdzKFBoYW50b20pOwot
ICAgICAgICAgICAgTm9kZUluZGV4IHNldExvY2FsSW5kZXggPSByZXBsYWNlbWVudC5jaGlsZDEo
KS5pbmRleCgpOwotICAgICAgICAgICAgQVNTRVJUKG1fZ3JhcGhbc2V0TG9jYWxJbmRleF0ub3Ao
KSA9PSBTZXRMb2NhbCk7Ci0gICAgICAgICAgICBtX2dyYXBoLmNsZWFyQW5kRGVyZWZDaGlsZDEo
cmVwbGFjZW1lbnQpOwotICAgICAgICAgICAgcmVwbGFjZW1lbnQuY2hpbGRyZW4uY2hpbGQxKCkg
PSBtX2dyYXBoW3NldExvY2FsSW5kZXhdLmNoaWxkMSgpOwotICAgICAgICAgICAgbV9ncmFwaC5y
ZWYocmVwbGFjZW1lbnQuY2hpbGQxKCkpOworICAgICAgICAgICAgbm9kZS5zZXRPcEFuZERlZmF1
bHRGbGFncyhQaGFudG9tKTsKKyAgICAgICAgICAgIE5vZGVJbmRleCBkYXRhTm9kZUluZGV4ID0g
cmVwbGFjZW1lbnQuY2hpbGQxKCkuaW5kZXgoKTsKKyAgICAgICAgICAgIEFTU0VSVChtX2dyYXBo
W2RhdGFOb2RlSW5kZXhdLmhhc1Jlc3VsdCgpKTsKKyAgICAgICAgICAgIG1fZ3JhcGguY2xlYXJB
bmREZXJlZkNoaWxkMShub2RlKTsKKyAgICAgICAgICAgIG5vZGUuY2hpbGRyZW4uY2hpbGQxKCkg
PSBFZGdlKGRhdGFOb2RlSW5kZXgpOworICAgICAgICAgICAgbV9ncmFwaC5yZWYoZGF0YU5vZGVJ
bmRleCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144616</attachid>
            <date>2012-05-29 14:06:28 -0700</date>
            <delta_ts>2012-05-29 15:06:25 -0700</delta_ts>
            <desc>more</desc>
            <filename>fixflush_patch_3.diff</filename>
            <type>text/plain</type>
            <size>16499</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE4ODMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBA
CisyMDEyLTA1LTI5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBrZWVwIGNhcHR1cmVkIHZhcmlhYmxlcyBhbGl2ZSB1bnRpbCB0aGUgKGlubGlu
ZSkgcmV0dXJuLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODcyMDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAg
CisgICAgICAgIFdvcmsgaW4gcHJvZ3Jlc3MhIEl0J3Mgc3RhcnRpbmcgdG8gZG8gdGhpbmdzLgor
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6c2V0RGlyZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6c2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6c2V0TG9j
YWwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpnZXRBcmd1bWVudCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnNldEFyZ3VtZW50KToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Zmx1c2gpOgorICAgICAgICAoQnl0ZUNvZGVQYXJz
ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpmbHVzaERpcmVjdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmZsdXNoQXJndW1lbnRzQW5kQ2FwdHVy
ZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJ
bmxpbmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sp
OgorICAgICAgICAqIGRmZy9ERkdDU0VQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q1NF
UGhhc2U6OnNldExvY2FsU3RvcmVFbGltaW5hdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Q1NF
UGhhc2U6OnBlcmZvcm1Ob2RlQ1NFKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKwogMjAx
Mi0wNS0yOSAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAg
ICAgIENvcGllZFNwYWNlOjpkb25lQ29weWluZyBjb3VsZCBzdGFydCBhbm90aGVyIGNvbGxlY3Rp
b24KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCShyZXZpc2lvbiAxMTg4MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDIwICsxNDIsMjEgQEAg
cHJpdmF0ZToKICAgICB7CiAgICAgICAgIHJldHVybiBnZXREaXJlY3QobV9pbmxpbmVTdGFja1Rv
cC0+cmVtYXBPcGVyYW5kKG9wZXJhbmQpKTsKICAgICB9Ci0gICAgdm9pZCBzZXREaXJlY3QoaW50
IG9wZXJhbmQsIE5vZGVJbmRleCB2YWx1ZSkKKyAgICBlbnVtIFNldE1vZGUgeyBOb3JtYWxTZXQs
IFNldE9uRW50cnkgfTsKKyAgICB2b2lkIHNldERpcmVjdChpbnQgb3BlcmFuZCwgTm9kZUluZGV4
IHZhbHVlLCBTZXRNb2RlIHNldE1vZGUgPSBOb3JtYWxTZXQpCiAgICAgewogICAgICAgICAvLyBJ
cyB0aGlzIGFuIGFyZ3VtZW50PwogICAgICAgICBpZiAob3BlcmFuZElzQXJndW1lbnQob3BlcmFu
ZCkpIHsKLSAgICAgICAgICAgIHNldEFyZ3VtZW50KG9wZXJhbmQsIHZhbHVlKTsKKyAgICAgICAg
ICAgIHNldEFyZ3VtZW50KG9wZXJhbmQsIHZhbHVlLCBzZXRNb2RlKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCiAgICAgICAgIC8vIE11c3QgYmUgYSBsb2NhbC4KLSAgICAgICAg
c2V0TG9jYWwoKHVuc2lnbmVkKW9wZXJhbmQsIHZhbHVlKTsKKyAgICAgICAgc2V0TG9jYWwoKHVu
c2lnbmVkKW9wZXJhbmQsIHZhbHVlLCBzZXRNb2RlKTsKICAgICB9Ci0gICAgdm9pZCBzZXQoaW50
IG9wZXJhbmQsIE5vZGVJbmRleCB2YWx1ZSkKKyAgICB2b2lkIHNldChpbnQgb3BlcmFuZCwgTm9k
ZUluZGV4IHZhbHVlLCBTZXRNb2RlIHNldE1vZGUgPSBOb3JtYWxTZXQpCiAgICAgewotICAgICAg
ICBzZXREaXJlY3QobV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKG9wZXJhbmQpLCB2YWx1
ZSk7CisgICAgICAgIHNldERpcmVjdChtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQob3Bl
cmFuZCksIHZhbHVlLCBzZXRNb2RlKTsKICAgICB9CiAgICAgCiAgICAgTm9kZUluZGV4IGluamVj
dExhenlPcGVyYW5kUHJlZGljdGlvbihOb2RlSW5kZXggbm9kZUluZGV4KQpAQCAtMjM2LDE3ICsy
MzcsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIHJldHVybiBub2RlSW5kZXg7CiAg
ICAgfQotICAgIHZvaWQgc2V0TG9jYWwodW5zaWduZWQgb3BlcmFuZCwgTm9kZUluZGV4IHZhbHVl
KQorICAgIHZvaWQgc2V0TG9jYWwodW5zaWduZWQgb3BlcmFuZCwgTm9kZUluZGV4IHZhbHVlLCBT
ZXRNb2RlIHNldE1vZGUgPSBOb3JtYWxTZXQpCiAgICAgewogICAgICAgICBib29sIGlzQ2FwdHVy
ZWQgPSBtX2NvZGVCbG9jay0+bG9jYWxJc0NhcHR1cmVkKG1faW5saW5lU3RhY2tUb3AtPm1faW5s
aW5lQ2FsbEZyYW1lLCBvcGVyYW5kKTsKICAgICAgICAgCi0gICAgICAgIFZhcmlhYmxlQWNjZXNz
RGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gbmV3VmFyaWFibGVBY2Nlc3NEYXRhKG9wZXJhbmQs
IGlzQ2FwdHVyZWQpOwotICAgICAgICBOb2RlSW5kZXggbm9kZUluZGV4ID0gYWRkVG9HcmFwaChT
ZXRMb2NhbCwgT3BJbmZvKHZhcmlhYmxlQWNjZXNzRGF0YSksIHZhbHVlKTsKLSAgICAgICAgbV9j
dXJyZW50QmxvY2stPnZhcmlhYmxlc0F0VGFpbC5sb2NhbChvcGVyYW5kKSA9IG5vZGVJbmRleDsK
LSAgICAgICAgCi0gICAgICAgIGJvb2wgc2hvdWxkRmx1c2ggPSBpc0NhcHR1cmVkOworICAgICAg
ICBpZiAoc2V0TW9kZSA9PSBOb3JtYWxTZXQpIHsKKyAgICAgICAgICAgIGJvb2wgc2hvdWxkRmx1
c2ggPSBpc0NhcHR1cmVkOwogICAgICAgICAKLSAgICAgICAgaWYgKCFzaG91bGRGbHVzaCkgewog
ICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBpbiBhcmd1bWVudCBwb3NpdGlvbiwgdGhlbiBpdCBz
aG91bGQgYmUgZmx1c2hlZC4KICAgICAgICAgICAgIGZvciAoSW5saW5lU3RhY2tFbnRyeSogc3Rh
Y2sgPSBtX2lubGluZVN0YWNrVG9wOyA7IHN0YWNrID0gc3RhY2stPm1fY2FsbGVyKSB7CiAgICAg
ICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBzdGFjay0+bV9p
bmxpbmVDYWxsRnJhbWU7CkBAIC0yNTksMTQgKzI1NiwxOCBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIGlmIChvcGVyYW5kIDwgaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCAtIFJlZ2lz
dGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSAtIGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRz
LnNpemUoKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAg
aW50IGFyZ3VtZW50ID0gb3BlcmFuZFRvQXJndW1lbnQob3BlcmFuZCAtIGlubGluZUNhbGxGcmFt
ZS0+c3RhY2tPZmZzZXQpOwotICAgICAgICAgICAgICAgIHN0YWNrLT5tX2FyZ3VtZW50UG9zaXRp
b25zW2FyZ3VtZW50XS0+YWRkVmFyaWFibGUodmFyaWFibGVBY2Nlc3NEYXRhKTsKLSAgICAgICAg
ICAgICAgICBzaG91bGRGbHVzaCA9IHRydWU7CisgICAgICAgICAgICAgICAgc3RhY2stPm1fYXJn
dW1lbnRQb3NpdGlvbnNbYXJndW1lbnRdLT5hZGRWYXJpYWJsZShmbHVzaERpcmVjdChvcGVyYW5k
KSk7CisgICAgICAgICAgICAgICAgc2hvdWxkRmx1c2ggPSBmYWxzZTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYg
KHNob3VsZEZsdXNoKQotICAgICAgICAgICAgYWRkVG9HcmFwaChGbHVzaCwgT3BJbmZvKHZhcmlh
YmxlQWNjZXNzRGF0YSksIG5vZGVJbmRleCk7CisgICAgICAgICAgICBpZiAoc2hvdWxkRmx1c2gp
CisgICAgICAgICAgICAgICAgZmx1c2hEaXJlY3Qob3BlcmFuZCk7CisgICAgICAgIH0KKworICAg
ICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5ld1ZhcmlhYmxl
QWNjZXNzRGF0YShvcGVyYW5kLCBpc0NhcHR1cmVkKTsKKyAgICAgICAgTm9kZUluZGV4IG5vZGVJ
bmRleCA9IGFkZFRvR3JhcGgoU2V0TG9jYWwsIE9wSW5mbyh2YXJpYWJsZUFjY2Vzc0RhdGEpLCB2
YWx1ZSk7CisgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwubG9jYWwob3Bl
cmFuZCkgPSBub2RlSW5kZXg7CiAgICAgfQogCiAgICAgLy8gVXNlZCBpbiBpbXBsZW1lbnRpbmcg
Z2V0L3NldCwgYWJvdmUsIHdoZXJlIHRoZSBvcGVyYW5kIGlzIGFuIGFyZ3VtZW50LgpAQCAtMjky
LDcgKzI5Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNz
RGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gZmx1c2hDaGlsZC52YXJpYWJsZUFjY2Vzc0RhdGEo
KTsKICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVBY2Nlc3NEYXRhLT5tZXJnZUlzQ2FwdHVy
ZWQoaXNDYXB0dXJlZCk7CiAgICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleCA9IGluamVjdExh
enlPcGVyYW5kUHJlZGljdGlvbihhZGRUb0dyYXBoKEdldExvY2FsLCBPcEluZm8odmFyaWFibGVB
Y2Nlc3NEYXRhKSwgbm9kZUluZGV4KSk7Ci0gICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJs
b2NrLT52YXJpYWJsZXNBdFRhaWwubG9jYWwob3BlcmFuZCkgPSBub2RlSW5kZXg7CisgICAgICAg
ICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwuYXJndW1lbnQoYXJn
dW1lbnQpID0gbm9kZUluZGV4OwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZUluZGV4
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBub2RlUHRyID0gJmZsdXNoQ2hp
bGQ7CkBAIC0zMzYsMzEgKzMzNywzNiBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgcmV0
dXJuIG5vZGVJbmRleDsKICAgICB9Ci0gICAgdm9pZCBzZXRBcmd1bWVudChpbnQgb3BlcmFuZCwg
Tm9kZUluZGV4IHZhbHVlKQorICAgIHZvaWQgc2V0QXJndW1lbnQoaW50IG9wZXJhbmQsIE5vZGVJ
bmRleCB2YWx1ZSwgU2V0TW9kZSBzZXRNb2RlID0gTm9ybWFsU2V0KQogICAgIHsKICAgICAgICAg
dW5zaWduZWQgYXJndW1lbnQgPSBvcGVyYW5kVG9Bcmd1bWVudChvcGVyYW5kKTsKICAgICAgICAg
Ym9vbCBpc0NhcHR1cmVkID0gbV9jb2RlQmxvY2stPmFyZ3VtZW50SXNDYXB0dXJlZChhcmd1bWVu
dCk7CiAgICAgICAgIAogICAgICAgICBBU1NFUlQoYXJndW1lbnQgPCBtX251bUFyZ3VtZW50cyk7
CiAgICAgICAgIAorICAgICAgICAvLyBBbHdheXMgZmx1c2ggYXJndW1lbnRzLCBleGNlcHQgZm9y
ICd0aGlzJy4KKyAgICAgICAgaWYgKGFyZ3VtZW50ICYmIHNldE1vZGUgPT0gTm9ybWFsU2V0KSB7
CisgICAgICAgICAgICBJbmxpbmVTdGFja0VudHJ5KiBzdGFjayA9IG1faW5saW5lU3RhY2tUb3A7
CisgICAgICAgICAgICB3aGlsZSAoc3RhY2stPm1faW5saW5lQ2FsbEZyYW1lKSAvLyBmaW5kIHRo
ZSBtYWNoaW5lIHN0YWNrIGVudHJ5LgorICAgICAgICAgICAgICAgIHN0YWNrID0gc3RhY2stPm1f
Y2FsbGVyOworICAgICAgICAgICAgc3RhY2stPm1fYXJndW1lbnRQb3NpdGlvbnNbYXJndW1lbnRd
LT5hZGRWYXJpYWJsZShmbHVzaERpcmVjdChvcGVyYW5kKSk7CisgICAgICAgIH0KKyAgICAgICAg
CiAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gbmV3VmFy
aWFibGVBY2Nlc3NEYXRhKG9wZXJhbmQsIGlzQ2FwdHVyZWQpOwotICAgICAgICBJbmxpbmVTdGFj
a0VudHJ5KiBzdGFjayA9IG1faW5saW5lU3RhY2tUb3A7Ci0gICAgICAgIHdoaWxlIChzdGFjay0+
bV9pbmxpbmVDYWxsRnJhbWUpIC8vIGZpbmQgdGhlIG1hY2hpbmUgc3RhY2sgZW50cnkuCi0gICAg
ICAgICAgICBzdGFjayA9IHN0YWNrLT5tX2NhbGxlcjsKLSAgICAgICAgc3RhY2stPm1fYXJndW1l
bnRQb3NpdGlvbnNbYXJndW1lbnRdLT5hZGRWYXJpYWJsZSh2YXJpYWJsZUFjY2Vzc0RhdGEpOwog
ICAgICAgICBOb2RlSW5kZXggbm9kZUluZGV4ID0gYWRkVG9HcmFwaChTZXRMb2NhbCwgT3BJbmZv
KHZhcmlhYmxlQWNjZXNzRGF0YSksIHZhbHVlKTsKICAgICAgICAgbV9jdXJyZW50QmxvY2stPnZh
cmlhYmxlc0F0VGFpbC5hcmd1bWVudChhcmd1bWVudCkgPSBub2RlSW5kZXg7Ci0gICAgICAgIC8v
IEFsd2F5cyBmbHVzaCBhcmd1bWVudHMsIGV4Y2VwdCBmb3IgJ3RoaXMnLgotICAgICAgICBpZiAo
YXJndW1lbnQpCi0gICAgICAgICAgICBhZGRUb0dyYXBoKEZsdXNoLCBPcEluZm8odmFyaWFibGVB
Y2Nlc3NEYXRhKSwgbm9kZUluZGV4KTsKICAgICB9CiAgICAgCi0gICAgVmFyaWFibGVBY2Nlc3NE
YXRhKiBmbHVzaEFyZ3VtZW50KGludCBvcGVyYW5kKQorICAgIFZhcmlhYmxlQWNjZXNzRGF0YSog
Zmx1c2goaW50IG9wZXJhbmQpCisgICAgeworICAgICAgICByZXR1cm4gZmx1c2hEaXJlY3QobV9p
bmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKG9wZXJhbmQpKTsKKyAgICB9CisgICAgCisgICAg
VmFyaWFibGVBY2Nlc3NEYXRhKiBmbHVzaERpcmVjdChpbnQgb3BlcmFuZCkKICAgICB7CiAgICAg
ICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBjaGVjayBpZiB0aGUgc2FtZSBvcGVyYW5kIGhhZCBh
bHJlYWR5IGJlZW4gZmx1c2hlZCB0bwogICAgICAgICAvLyBzb21lIG90aGVyIGxvY2FsIHZhcmlh
YmxlLgogICAgICAgICAKLSAgICAgICAgb3BlcmFuZCA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFw
T3BlcmFuZChvcGVyYW5kKTsKICAgICAgICAgYm9vbCBpc0NhcHR1cmVkID0gbV9jb2RlQmxvY2st
PmlzQ2FwdHVyZWQobV9pbmxpbmVTdGFja1RvcC0+bV9pbmxpbmVDYWxsRnJhbWUsIG9wZXJhbmQp
OwogICAgICAgICAKICAgICAgICAgQVNTRVJUKG9wZXJhbmQgPCBGaXJzdENvbnN0YW50UmVnaXN0
ZXJJbmRleCk7CkBAIC00MTUsNiArNDIxLDE5IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAg
ICAgcmV0dXJuIHZhcmlhYmxlQWNjZXNzRGF0YTsKICAgICB9CisgICAgCisgICAgdm9pZCBmbHVz
aEFyZ3VtZW50c0FuZENhcHR1cmVkVmFyaWFibGVzKCkKKyAgICB7CisgICAgICAgIGludCBudW1B
cmd1bWVudHM7CisgICAgICAgIGlmIChtX2lubGluZVN0YWNrVG9wLT5tX2lubGluZUNhbGxGcmFt
ZSkKKyAgICAgICAgICAgIG51bUFyZ3VtZW50cyA9IG1faW5saW5lU3RhY2tUb3AtPm1faW5saW5l
Q2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBu
dW1Bcmd1bWVudHMgPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVy
cygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gbnVtQXJndW1lbnRzOyBhcmd1
bWVudC0tID4gMTspCisgICAgICAgICAgICBmbHVzaChhcmd1bWVudFRvT3BlcmFuZChhcmd1bWVu
dCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGxvY2FsID0gbV9pbmxpbmVTdGFja1RvcC0+bV9j
b2RlQmxvY2stPm1fbnVtQ2FwdHVyZWRWYXJzOyBsb2NhbC0tOykKKyAgICAgICAgICAgIGZsdXNo
KGxvY2FsKTsKKyAgICB9CiAKICAgICAvLyBHZXQgYW4gb3BlcmFuZCwgYW5kIHBlcmZvcm0gYSBU
b0ludDMyL1RvTnVtYmVyIGNvbnZlcnNpb24gb24gaXQuCiAgICAgTm9kZUluZGV4IGdldFRvSW50
MzIoaW50IG9wZXJhbmQpCkBAIC0xMjE5LDE3ICsxMjM4LDYgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlSW5saW5pbmcoYm9vbAogICAgIAogICAgIC8vIEZJWE1FOiBEb24ndCBmbHVzaCBj
b25zdGFudHMhCiAgICAgCi0gICAgVmVjdG9yPFZhcmlhYmxlQWNjZXNzRGF0YSosIDg+IGFyZ3Vt
ZW50czsKLSAgICBmb3IgKGludCBpID0gMTsgaSA8IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
OyArK2kpIHsKLSAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEg
PQotICAgICAgICAgICAgZmx1c2hBcmd1bWVudChyZWdpc3Rlck9mZnNldCArIGFyZ3VtZW50VG9P
cGVyYW5kKGkpKTsKLSAgICAgICAgYXJndW1lbnRzLmFwcGVuZCh2YXJpYWJsZUFjY2Vzc0RhdGEp
OwotICAgICAgICAKLSAgICAgICAgLy8gQXJlIHdlIGdvaW5nIHRvIGJlIGNhcHR1cmluZyBhcmd1
bWVudHM/IElmIHNvIG1ha2Ugc3VyZSB3ZSByZWNvcmQgdGhpcyBmYWN0LgotICAgICAgICBpZiAo
Y29kZUJsb2NrLT5hcmd1bWVudElzQ2FwdHVyZWQoaSkpCi0gICAgICAgICAgICB2YXJpYWJsZUFj
Y2Vzc0RhdGEtPm1lcmdlSXNDYXB0dXJlZCh0cnVlKTsKLSAgICB9Ci0gICAgCiAgICAgaW50IGlu
bGluZUNhbGxGcmFtZVN0YXJ0ID0gbV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKHJlZ2lz
dGVyT2Zmc2V0KSAtIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZTsKICAgICAKICAg
ICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgYXJlYSB1c2VkIGJ5IHRoZSBjYWxsIGZyYW1lIGlzIHJl
c2VydmVkLgpAQCAtMTI1MSwxMyArMTI1OSw2IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUlubGluaW5nKGJvb2wKICAgICAgICAgICAgIHVzZXNSZXN1bHQgPyByZXN1bHRPcGVyYW5kIDog
SW52YWxpZFZpcnR1YWxSZWdpc3RlciksCiAgICAgICAgIChWaXJ0dWFsUmVnaXN0ZXIpaW5saW5l
Q2FsbEZyYW1lU3RhcnQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBraW5kKTsKICAgICAK
LSAgICAvLyBMaW5rIHVwIHRoZSBhcmd1bWVudCB2YXJpYWJsZSBhY2Nlc3MgZGF0YXMgdG8gdGhl
aXIgYXJndW1lbnQgcG9zaXRpb25zLgotICAgIGZvciAoaW50IGkgPSAxOyBpIDwgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXM7ICsraSkgewotICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90
PihpKSA+PSBpbmxpbmVTdGFja0VudHJ5Lm1fYXJndW1lbnRQb3NpdGlvbnMuc2l6ZSgpKQotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGlubGluZVN0YWNrRW50cnkubV9hcmd1bWVudFBvc2l0
aW9uc1tpXS0+YWRkVmFyaWFibGUoYXJndW1lbnRzW2kgLSAxXSk7Ci0gICAgfQotICAgIAogICAg
IC8vIFRoaXMgaXMgd2hlcmUgdGhlIGFjdHVhbCBpbmxpbmluZyByZWFsbHkgaGFwcGVucy4KICAg
ICB1bnNpZ25lZCBvbGRJbmRleCA9IG1fY3VycmVudEluZGV4OwogICAgIHVuc2lnbmVkIG9sZFBy
b2ZpbGluZ0luZGV4ID0gbV9jdXJyZW50UHJvZmlsaW5nSW5kZXg7CkBAIC0xNTc4LDcgKzE1Nzks
NyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgIGNh
c2Ugb3BfZW50ZXI6CiAgICAgICAgICAgICAvLyBJbml0aWFsaXplIGFsbCBsb2NhbHMgdG8gdW5k
ZWZpbmVkLgogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX2lubGluZVN0YWNrVG9w
LT5tX2NvZGVCbG9jay0+bV9udW1WYXJzOyArK2kpCi0gICAgICAgICAgICAgICAgc2V0KGksIGNv
bnN0YW50VW5kZWZpbmVkKCkpOworICAgICAgICAgICAgICAgIHNldChpLCBjb25zdGFudFVuZGVm
aW5lZCgpLCBTZXRPbkVudHJ5KTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2VudGVyKTsK
IAogICAgICAgICBjYXNlIG9wX2NvbnZlcnRfdGhpczogewpAQCAtMjM1Miw2ICsyMzUzLDcgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICB9CiAKICAg
ICAgICAgY2FzZSBvcF9yZXQ6CisgICAgICAgICAgICBmbHVzaEFyZ3VtZW50c0FuZENhcHR1cmVk
VmFyaWFibGVzKCk7CiAgICAgICAgICAgICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9pbmxpbmVD
YWxsRnJhbWUpIHsKICAgICAgICAgICAgICAgICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9yZXR1
cm5WYWx1ZSAhPSBJbnZhbGlkVmlydHVhbFJlZ2lzdGVyKQogICAgICAgICAgICAgICAgICAgICBz
ZXREaXJlY3QobV9pbmxpbmVTdGFja1RvcC0+bV9yZXR1cm5WYWx1ZSwgZ2V0KGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsKQEAgLTIzNzksNiArMjM4MSw3IEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIExBU1RfT1BDT0RFKG9w
X3JldCk7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9lbmQ6CisgICAgICAgICAgICBm
bHVzaEFyZ3VtZW50c0FuZENhcHR1cmVkVmFyaWFibGVzKCk7CiAgICAgICAgICAgICBBU1NFUlQo
IW1faW5saW5lU3RhY2tUb3AtPm1faW5saW5lQ2FsbEZyYW1lKTsKICAgICAgICAgICAgIGFkZFRv
R3JhcGgoUmV0dXJuLCBnZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOwogICAg
ICAgICAgICAgTEFTVF9PUENPREUob3BfZW5kKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ1NFUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ1NFUGhhc2UuY3BwCShyZXZpc2lvbiAxMTg4MDYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjIwLDcgKzYyMCw3
IEBAIHByaXZhdGU6CiAgICAgfQogICAgIAogICAgIC8vIFRoaXMgcmV0dXJucyB0aGUgRmx1c2gg
bm9kZSB0aGF0IGlzIGtlZXBpbmcgYSBTZXRMb2NhbCBhbGl2ZS4KLSAgICBOb2RlSW5kZXggc2V0
TG9jYWxTdG9yZUVsaW1pbmF0aW9uKFZpcnR1YWxSZWdpc3RlciBsb2NhbCkKKyAgICBOb2RlSW5k
ZXggc2V0TG9jYWxTdG9yZUVsaW1pbmF0aW9uKFZpcnR1YWxSZWdpc3RlciBsb2NhbCwgTm9kZUlu
ZGV4IGV4cGVjdGVkTm9kZUluZGV4KQogICAgIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
bV9pbmRleEluQmxvY2s7IGktLTspIHsKICAgICAgICAgICAgIE5vZGVJbmRleCBpbmRleCA9IG1f
Y3VycmVudEJsb2NrLT5hdChpKTsKQEAgLTYyOSw3ICs2MjksNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgc3dpdGNoIChub2RlLm9wKCkpIHsKICAg
ICAgICAgICAgIGNhc2UgR2V0TG9jYWw6Ci0gICAgICAgICAgICBjYXNlIFNldExvY2FsOgorICAg
ICAgICAgICAgY2FzZSBGbHVzaDoKICAgICAgICAgICAgICAgICBpZiAobm9kZS5sb2NhbCgpID09
IGxvY2FsKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9Ob2RlOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtNjM5LDE5ICs2MzksMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIE5vTm9kZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIGNhc2UgRmx1c2g6IHsKKyAgICAgICAgICAgIGNhc2UgU2V0TG9j
YWw6IHsKICAgICAgICAgICAgICAgICBpZiAobm9kZS5sb2NhbCgpICE9IGxvY2FsKQogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBpZiAoIWkpCi0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIE5vZGVJbmRleCBwcmV2SW5kZXggPSBt
X2N1cnJlbnRCbG9jay0+YXQoaSAtIDEpOwotICAgICAgICAgICAgICAgIGlmIChwcmV2SW5kZXgg
IT0gbm9kZS5jaGlsZDEoKS5pbmRleCgpKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICBBU1NFUlQobV9ncmFwaFtwcmV2SW5kZXhdLmxvY2FsKCkgPT0gbG9jYWwp
OwotICAgICAgICAgICAgICAgIEFTU0VSVChtX2dyYXBoW3ByZXZJbmRleF0udmFyaWFibGVBY2Nl
c3NEYXRhKCkgPT0gbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKSk7Ci0gICAgICAgICAgICAgICAg
QVNTRVJUKG1fZ3JhcGhbcHJldkluZGV4XS5zaG91bGRHZW5lcmF0ZSgpKTsKLSAgICAgICAgICAg
ICAgICBpZiAobV9ncmFwaFtwcmV2SW5kZXhdLnJlZkNvdW50KCkgPiAxKQotICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBpZiAoaW5kZXggIT0gZXhwZWN0ZWROb2Rl
SW5kZXgpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb05vZGU7CisgICAgICAgICAgICAg
ICAgaWYgKG1fZ3JhcGhbaW5kZXhdLnJlZkNvdW50KCkgPiAxKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gTm9Ob2RlOwogICAgICAgICAgICAgICAgIHJldHVybiBpbmRleDsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAKQEAgLTY2MCw2ICs2NTQsMTEgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vTm9kZTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgVGVhck9mZkFjdGl2YXRpb246Cisg
ICAgICAgICAgICAgICAgLy8gSWYgYW4gYWN0aXZhdGlvbiBpcyBiZWluZyB0b3JuIG9mZiB0aGVu
IGl0IG1lYW5zIHRoYXQgY2FwdHVyZWQgdmFyaWFibGVzCisgICAgICAgICAgICAgICAgLy8gYXJl
IGxpdmUuCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vTm9kZTsKKyAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGguY2xvYmJl
cnNXb3JsZChpbmRleCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb05vZGU7CkBAIC04
NTUsMjcgKzg1NCwyNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgICAgIAotICAgICAgICBjYXNlIFNldExvY2FsOiB7CisgICAgICAgIGNhc2UgRmx1
c2g6IHsKICAgICAgICAgICAgIGlmIChtX2ZpeHBvaW50U3RhdGUgPT0gRml4cG9pbnROb3RDb252
ZXJnZWQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vz
c0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5vZGUudmFyaWFibGVBY2Nlc3NEYXRhKCk7CiAg
ICAgICAgICAgICBpZiAoIXZhcmlhYmxlQWNjZXNzRGF0YS0+aXNDYXB0dXJlZCgpKQogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGxvY2FsID0gdmFy
aWFibGVBY2Nlc3NEYXRhLT5sb2NhbCgpOwotICAgICAgICAgICAgTm9kZUluZGV4IHJlcGxhY2Vt
ZW50SW5kZXggPSBzZXRMb2NhbFN0b3JlRWxpbWluYXRpb24obG9jYWwpOworICAgICAgICAgICAg
Tm9kZUluZGV4IHJlcGxhY2VtZW50SW5kZXggPSBzZXRMb2NhbFN0b3JlRWxpbWluYXRpb24obG9j
YWwsIG5vZGUuY2hpbGQxKCkuaW5kZXgoKSk7CiAgICAgICAgICAgICBpZiAocmVwbGFjZW1lbnRJ
bmRleCA9PSBOb05vZGUpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBOb2Rl
JiByZXBsYWNlbWVudCA9IG1fZ3JhcGhbcmVwbGFjZW1lbnRJbmRleF07Ci0gICAgICAgICAgICBB
U1NFUlQocmVwbGFjZW1lbnQub3AoKSA9PSBGbHVzaCk7CisgICAgICAgICAgICBBU1NFUlQocmVw
bGFjZW1lbnQub3AoKSA9PSBTZXRMb2NhbCk7CiAgICAgICAgICAgICBBU1NFUlQocmVwbGFjZW1l
bnQucmVmQ291bnQoKSA9PSAxKTsKICAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudC5zaG91
bGRHZW5lcmF0ZSgpKTsKLSAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudC5tdXN0R2VuZXJh
dGUoKSk7Ci0gICAgICAgICAgICByZXBsYWNlbWVudC5zZXRPcEFuZERlZmF1bHRGbGFncyhQaGFu
dG9tKTsKLSAgICAgICAgICAgIE5vZGVJbmRleCBzZXRMb2NhbEluZGV4ID0gcmVwbGFjZW1lbnQu
Y2hpbGQxKCkuaW5kZXgoKTsKLSAgICAgICAgICAgIEFTU0VSVChtX2dyYXBoW3NldExvY2FsSW5k
ZXhdLm9wKCkgPT0gU2V0TG9jYWwpOwotICAgICAgICAgICAgbV9ncmFwaC5jbGVhckFuZERlcmVm
Q2hpbGQxKHJlcGxhY2VtZW50KTsKLSAgICAgICAgICAgIHJlcGxhY2VtZW50LmNoaWxkcmVuLmNo
aWxkMSgpID0gbV9ncmFwaFtzZXRMb2NhbEluZGV4XS5jaGlsZDEoKTsKLSAgICAgICAgICAgIG1f
Z3JhcGgucmVmKHJlcGxhY2VtZW50LmNoaWxkMSgpKTsKKyAgICAgICAgICAgIG5vZGUuc2V0T3BB
bmREZWZhdWx0RmxhZ3MoUGhhbnRvbSk7CisgICAgICAgICAgICBOb2RlSW5kZXggZGF0YU5vZGVJ
bmRleCA9IHJlcGxhY2VtZW50LmNoaWxkMSgpLmluZGV4KCk7CisgICAgICAgICAgICBBU1NFUlQo
bV9ncmFwaFtkYXRhTm9kZUluZGV4XS5oYXNSZXN1bHQoKSk7CisgICAgICAgICAgICBtX2dyYXBo
LmNsZWFyQW5kRGVyZWZDaGlsZDEobm9kZSk7CisgICAgICAgICAgICBub2RlLmNoaWxkcmVuLmNo
aWxkMSgpID0gRWRnZShkYXRhTm9kZUluZGV4KTsKKyAgICAgICAgICAgIG1fZ3JhcGgucmVmKGRh
dGFOb2RlSW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAg
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAJKHJldmlzaW9uIDExODgwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAwLDE0ICsxMDAwLDEyIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoQmFzaWNCbG9jayYKICAgICBBU1NFUlQobV92
YXJpYWJsZXMuc2l6ZSgpID09IGJsb2NrLnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2Fscygp
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdmFyaWFibGVzLnNpemUoKTsgKytpKSB7
CiAgICAgICAgIE5vZGVJbmRleCBub2RlSW5kZXggPSBibG9jay52YXJpYWJsZXNBdEhlYWQubG9j
YWwoaSk7Ci0gICAgICAgIC8vIEZJWE1FOiBVc2UgdGhlIHZhcmlhYmxlIGFjY2VzcyBkYXRhLCBu
b3QgdGhlIGZpcnN0IG5vZGUgaW4gdGhlIGJsb2NrLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODcyMDUKLSAgICAgICAgaWYgKG1faml0LmNvZGVC
bG9jaygpLT5sb2NhbElzQ2FwdHVyZWQoYXQoYmxvY2tbMF0pLmNvZGVPcmlnaW4uaW5saW5lQ2Fs
bEZyYW1lLCBpKSkKLSAgICAgICAgICAgIG1fdmFyaWFibGVzW2ldID0gVmFsdWVTb3VyY2UoVmFs
dWVJblJlZ2lzdGVyRmlsZSk7Ci0gICAgICAgIGVsc2UgaWYgKG5vZGVJbmRleCA9PSBOb05vZGUp
CisgICAgICAgIGlmIChub2RlSW5kZXggPT0gTm9Ob2RlKQogICAgICAgICAgICAgbV92YXJpYWJs
ZXNbaV0gPSBWYWx1ZVNvdXJjZShTb3VyY2VJc0RlYWQpOwogICAgICAgICBlbHNlIGlmIChhdChu
b2RlSW5kZXgpLnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5pc0FyZ3VtZW50c0FsaWFzKCkpCiAgICAg
ICAgICAgICBtX3ZhcmlhYmxlc1tpXSA9IFZhbHVlU291cmNlKEFyZ3VtZW50c1NvdXJjZSk7Cisg
ICAgICAgIGVsc2UgaWYgKGF0KG5vZGVJbmRleCkudmFyaWFibGVBY2Nlc3NEYXRhKCktPmlzQ2Fw
dHVyZWQoKSkKKyAgICAgICAgICAgIG1fdmFyaWFibGVzW2ldID0gVmFsdWVTb3VyY2UoVmFsdWVJ
blJlZ2lzdGVyRmlsZSk7CiAgICAgICAgIGVsc2UgaWYgKCFhdChub2RlSW5kZXgpLnJlZkNvdW50
KCkpCiAgICAgICAgICAgICBtX3ZhcmlhYmxlc1tpXSA9IFZhbHVlU291cmNlKFNvdXJjZUlzRGVh
ZCk7CiAgICAgICAgIGVsc2UgaWYgKGF0KG5vZGVJbmRleCkudmFyaWFibGVBY2Nlc3NEYXRhKCkt
PnNob3VsZFVzZURvdWJsZUZvcm1hdCgpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144629</attachid>
            <date>2012-05-29 15:06:25 -0700</date>
            <delta_ts>2012-05-29 16:14:38 -0700</delta_ts>
            <desc>even more</desc>
            <filename>fixflush_patch_4.diff</filename>
            <type>text/plain</type>
            <size>21955</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE4ODM4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBA
CisyMDEyLTA1LTI5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBrZWVwIGNhcHR1cmVkIHZhcmlhYmxlcyBhbGl2ZSB1bnRpbCB0aGUgKGlubGlu
ZSkgcmV0dXJuLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODcyMDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAg
CisgICAgICAgIFdvcmsgaW4gcHJvZ3Jlc3MhIEl0J3Mgc3RhcnRpbmcgdG8gZG8gdGhpbmdzLgor
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6c2V0RGlyZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6c2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6c2V0TG9j
YWwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpnZXRBcmd1bWVudCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnNldEFyZ3VtZW50KToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6ZmluZEFyZ3VtZW50UG9zaXRpb25Gb3JBcmd1bWVu
dCk6CisgICAgICAgIChCeXRlQ29kZVBhcnNlcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmZpbmRBcmd1bWVudFBvc2l0aW9uRm9yTG9jYWwpOgorICAgICAgICAoSlNDOjpE
Rkc6OkJ5dGVDb2RlUGFyc2VyOjpmaW5kQXJndW1lbnRQb3NpdGlvbik6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmZsdXNoKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6Zmx1c2hEaXJlY3QpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpmbHVzaEFyZ3VtZW50c0FuZENhcHR1cmVkVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeSk6CisgICAgICAgICogZGZn
L0RGR0NTRVBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6c2V0TG9jYWxT
dG9yZUVsaW1pbmF0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6cGVyZm9ybU5v
ZGVDU0UpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmb3J3YXJk
U3BlY3VsYXRpb25DaGVjayk6CisKIDIwMTItMDUtMjkgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhu
ZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBDb3BpZWRTcGFjZTo6ZG9uZUNvcHlpbmcgY291
bGQgc3RhcnQgYW5vdGhlciBjb2xsZWN0aW9uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTE4ODA2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE0MiwyMCArMTQyLDIxIEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICByZXR1cm4g
Z2V0RGlyZWN0KG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChvcGVyYW5kKSk7CiAgICAg
fQotICAgIHZvaWQgc2V0RGlyZWN0KGludCBvcGVyYW5kLCBOb2RlSW5kZXggdmFsdWUpCisgICAg
ZW51bSBTZXRNb2RlIHsgTm9ybWFsU2V0LCBTZXRPbkVudHJ5IH07CisgICAgdm9pZCBzZXREaXJl
Y3QoaW50IG9wZXJhbmQsIE5vZGVJbmRleCB2YWx1ZSwgU2V0TW9kZSBzZXRNb2RlID0gTm9ybWFs
U2V0KQogICAgIHsKICAgICAgICAgLy8gSXMgdGhpcyBhbiBhcmd1bWVudD8KICAgICAgICAgaWYg
KG9wZXJhbmRJc0FyZ3VtZW50KG9wZXJhbmQpKSB7Ci0gICAgICAgICAgICBzZXRBcmd1bWVudChv
cGVyYW5kLCB2YWx1ZSk7CisgICAgICAgICAgICBzZXRBcmd1bWVudChvcGVyYW5kLCB2YWx1ZSwg
c2V0TW9kZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICAvLyBN
dXN0IGJlIGEgbG9jYWwuCi0gICAgICAgIHNldExvY2FsKCh1bnNpZ25lZClvcGVyYW5kLCB2YWx1
ZSk7CisgICAgICAgIHNldExvY2FsKCh1bnNpZ25lZClvcGVyYW5kLCB2YWx1ZSwgc2V0TW9kZSk7
CiAgICAgfQotICAgIHZvaWQgc2V0KGludCBvcGVyYW5kLCBOb2RlSW5kZXggdmFsdWUpCisgICAg
dm9pZCBzZXQoaW50IG9wZXJhbmQsIE5vZGVJbmRleCB2YWx1ZSwgU2V0TW9kZSBzZXRNb2RlID0g
Tm9ybWFsU2V0KQogICAgIHsKLSAgICAgICAgc2V0RGlyZWN0KG1faW5saW5lU3RhY2tUb3AtPnJl
bWFwT3BlcmFuZChvcGVyYW5kKSwgdmFsdWUpOworICAgICAgICBzZXREaXJlY3QobV9pbmxpbmVT
dGFja1RvcC0+cmVtYXBPcGVyYW5kKG9wZXJhbmQpLCB2YWx1ZSwgc2V0TW9kZSk7CiAgICAgfQog
ICAgIAogICAgIE5vZGVJbmRleCBpbmplY3RMYXp5T3BlcmFuZFByZWRpY3Rpb24oTm9kZUluZGV4
IG5vZGVJbmRleCkKQEAgLTIzNiwzNyArMjM3LDE5IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAg
ICAgICByZXR1cm4gbm9kZUluZGV4OwogICAgIH0KLSAgICB2b2lkIHNldExvY2FsKHVuc2lnbmVk
IG9wZXJhbmQsIE5vZGVJbmRleCB2YWx1ZSkKKyAgICB2b2lkIHNldExvY2FsKHVuc2lnbmVkIG9w
ZXJhbmQsIE5vZGVJbmRleCB2YWx1ZSwgU2V0TW9kZSBzZXRNb2RlID0gTm9ybWFsU2V0KQogICAg
IHsKICAgICAgICAgYm9vbCBpc0NhcHR1cmVkID0gbV9jb2RlQmxvY2stPmxvY2FsSXNDYXB0dXJl
ZChtX2lubGluZVN0YWNrVG9wLT5tX2lubGluZUNhbGxGcmFtZSwgb3BlcmFuZCk7CiAgICAgICAg
IAorICAgICAgICBpZiAoc2V0TW9kZSA9PSBOb3JtYWxTZXQpIHsKKyAgICAgICAgICAgIEFyZ3Vt
ZW50UG9zaXRpb24qIGFyZ3VtZW50UG9zaXRpb24gPSBmaW5kQXJndW1lbnRQb3NpdGlvbkZvckxv
Y2FsKG9wZXJhbmQpOworICAgICAgICAgICAgaWYgKGlzQ2FwdHVyZWQgfHwgYXJndW1lbnRQb3Np
dGlvbikKKyAgICAgICAgICAgICAgICBmbHVzaERpcmVjdChvcGVyYW5kLCBhcmd1bWVudFBvc2l0
aW9uKTsKKyAgICAgICAgfQorCiAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVB
Y2Nlc3NEYXRhID0gbmV3VmFyaWFibGVBY2Nlc3NEYXRhKG9wZXJhbmQsIGlzQ2FwdHVyZWQpOwog
ICAgICAgICBOb2RlSW5kZXggbm9kZUluZGV4ID0gYWRkVG9HcmFwaChTZXRMb2NhbCwgT3BJbmZv
KHZhcmlhYmxlQWNjZXNzRGF0YSksIHZhbHVlKTsKICAgICAgICAgbV9jdXJyZW50QmxvY2stPnZh
cmlhYmxlc0F0VGFpbC5sb2NhbChvcGVyYW5kKSA9IG5vZGVJbmRleDsKLSAgICAgICAgCi0gICAg
ICAgIGJvb2wgc2hvdWxkRmx1c2ggPSBpc0NhcHR1cmVkOwotICAgICAgICAKLSAgICAgICAgaWYg
KCFzaG91bGRGbHVzaCkgewotICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBpbiBhcmd1bWVudCBw
b3NpdGlvbiwgdGhlbiBpdCBzaG91bGQgYmUgZmx1c2hlZC4KLSAgICAgICAgICAgIGZvciAoSW5s
aW5lU3RhY2tFbnRyeSogc3RhY2sgPSBtX2lubGluZVN0YWNrVG9wOyA7IHN0YWNrID0gc3RhY2st
Pm1fY2FsbGVyKSB7Ci0gICAgICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxs
RnJhbWUgPSBzdGFjay0+bV9pbmxpbmVDYWxsRnJhbWU7Ci0gICAgICAgICAgICAgICAgaWYgKCFp
bmxpbmVDYWxsRnJhbWUpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KG9wZXJhbmQpID49IGlubGluZUNhbGxGcmFtZS0+c3Rh
Y2tPZmZzZXQgLSBSZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlclNpemUpCi0gICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+
KG9wZXJhbmQpID09IGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWU6OnRo
aXNBcmd1bWVudE9mZnNldCgpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgICAgICAgICBpZiAob3BlcmFuZCA8IGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgLSBS
ZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlclNpemUgLSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3Vt
ZW50cy5zaXplKCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAg
ICAgIGludCBhcmd1bWVudCA9IG9wZXJhbmRUb0FyZ3VtZW50KG9wZXJhbmQgLSBpbmxpbmVDYWxs
RnJhbWUtPnN0YWNrT2Zmc2V0KTsKLSAgICAgICAgICAgICAgICBzdGFjay0+bV9hcmd1bWVudFBv
c2l0aW9uc1thcmd1bWVudF0tPmFkZFZhcmlhYmxlKHZhcmlhYmxlQWNjZXNzRGF0YSk7Ci0gICAg
ICAgICAgICAgICAgc2hvdWxkRmx1c2ggPSB0cnVlOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoc2hvdWxkRmx1
c2gpCi0gICAgICAgICAgICBhZGRUb0dyYXBoKEZsdXNoLCBPcEluZm8odmFyaWFibGVBY2Nlc3NE
YXRhKSwgbm9kZUluZGV4KTsKICAgICB9CiAKICAgICAvLyBVc2VkIGluIGltcGxlbWVudGluZyBn
ZXQvc2V0LCBhYm92ZSwgd2hlcmUgdGhlIG9wZXJhbmQgaXMgYW4gYXJndW1lbnQuCkBAIC0yOTIs
NyArMjc1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NE
YXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBmbHVzaENoaWxkLnZhcmlhYmxlQWNjZXNzRGF0YSgp
OwogICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZUFjY2Vzc0RhdGEtPm1lcmdlSXNDYXB0dXJl
ZChpc0NhcHR1cmVkKTsKICAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4ID0gaW5qZWN0TGF6
eU9wZXJhbmRQcmVkaWN0aW9uKGFkZFRvR3JhcGgoR2V0TG9jYWwsIE9wSW5mbyh2YXJpYWJsZUFj
Y2Vzc0RhdGEpLCBub2RlSW5kZXgpKTsKLSAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50Qmxv
Y2stPnZhcmlhYmxlc0F0VGFpbC5sb2NhbChvcGVyYW5kKSA9IG5vZGVJbmRleDsKKyAgICAgICAg
ICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPnZhcmlhYmxlc0F0VGFpbC5hcmd1bWVudChhcmd1
bWVudCkgPSBub2RlSW5kZXg7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlSW5kZXg7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG5vZGVQdHIgPSAmZmx1c2hDaGls
ZDsKQEAgLTMzNiwzMSArMzE5LDcwIEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICByZXR1
cm4gbm9kZUluZGV4OwogICAgIH0KLSAgICB2b2lkIHNldEFyZ3VtZW50KGludCBvcGVyYW5kLCBO
b2RlSW5kZXggdmFsdWUpCisgICAgdm9pZCBzZXRBcmd1bWVudChpbnQgb3BlcmFuZCwgTm9kZUlu
ZGV4IHZhbHVlLCBTZXRNb2RlIHNldE1vZGUgPSBOb3JtYWxTZXQpCiAgICAgewogICAgICAgICB1
bnNpZ25lZCBhcmd1bWVudCA9IG9wZXJhbmRUb0FyZ3VtZW50KG9wZXJhbmQpOwogICAgICAgICBi
b29sIGlzQ2FwdHVyZWQgPSBtX2NvZGVCbG9jay0+YXJndW1lbnRJc0NhcHR1cmVkKGFyZ3VtZW50
KTsKICAgICAgICAgCiAgICAgICAgIEFTU0VSVChhcmd1bWVudCA8IG1fbnVtQXJndW1lbnRzKTsK
ICAgICAgICAgCisgICAgICAgIC8vIEFsd2F5cyBmbHVzaCBhcmd1bWVudHMsIGV4Y2VwdCBmb3Ig
J3RoaXMnLgorICAgICAgICBpZiAoYXJndW1lbnQgJiYgc2V0TW9kZSA9PSBOb3JtYWxTZXQpCisg
ICAgICAgICAgICBmbHVzaERpcmVjdChvcGVyYW5kKTsKKyAgICAgICAgCiAgICAgICAgIFZhcmlh
YmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gbmV3VmFyaWFibGVBY2Nlc3NEYXRh
KG9wZXJhbmQsIGlzQ2FwdHVyZWQpOwotICAgICAgICBJbmxpbmVTdGFja0VudHJ5KiBzdGFjayA9
IG1faW5saW5lU3RhY2tUb3A7Ci0gICAgICAgIHdoaWxlIChzdGFjay0+bV9pbmxpbmVDYWxsRnJh
bWUpIC8vIGZpbmQgdGhlIG1hY2hpbmUgc3RhY2sgZW50cnkuCi0gICAgICAgICAgICBzdGFjayA9
IHN0YWNrLT5tX2NhbGxlcjsKLSAgICAgICAgc3RhY2stPm1fYXJndW1lbnRQb3NpdGlvbnNbYXJn
dW1lbnRdLT5hZGRWYXJpYWJsZSh2YXJpYWJsZUFjY2Vzc0RhdGEpOwogICAgICAgICBOb2RlSW5k
ZXggbm9kZUluZGV4ID0gYWRkVG9HcmFwaChTZXRMb2NhbCwgT3BJbmZvKHZhcmlhYmxlQWNjZXNz
RGF0YSksIHZhbHVlKTsKICAgICAgICAgbV9jdXJyZW50QmxvY2stPnZhcmlhYmxlc0F0VGFpbC5h
cmd1bWVudChhcmd1bWVudCkgPSBub2RlSW5kZXg7Ci0gICAgICAgIC8vIEFsd2F5cyBmbHVzaCBh
cmd1bWVudHMsIGV4Y2VwdCBmb3IgJ3RoaXMnLgotICAgICAgICBpZiAoYXJndW1lbnQpCi0gICAg
ICAgICAgICBhZGRUb0dyYXBoKEZsdXNoLCBPcEluZm8odmFyaWFibGVBY2Nlc3NEYXRhKSwgbm9k
ZUluZGV4KTsKICAgICB9CiAgICAgCi0gICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBmbHVzaEFyZ3Vt
ZW50KGludCBvcGVyYW5kKQorICAgIEFyZ3VtZW50UG9zaXRpb24qIGZpbmRBcmd1bWVudFBvc2l0
aW9uRm9yQXJndW1lbnQoaW50IGFyZ3VtZW50KQorICAgIHsKKyAgICAgICAgSW5saW5lU3RhY2tF
bnRyeSogc3RhY2sgPSBtX2lubGluZVN0YWNrVG9wOworICAgICAgICB3aGlsZSAoc3RhY2stPm1f
aW5saW5lQ2FsbEZyYW1lKQorICAgICAgICAgICAgc3RhY2sgPSBzdGFjay0+bV9jYWxsZXI7Cisg
ICAgICAgIHJldHVybiBzdGFjay0+bV9hcmd1bWVudFBvc2l0aW9uc1thcmd1bWVudF07CisgICAg
fQorICAgIAorICAgIEFyZ3VtZW50UG9zaXRpb24qIGZpbmRBcmd1bWVudFBvc2l0aW9uRm9yTG9j
YWwoaW50IG9wZXJhbmQpCisgICAgeworICAgICAgICBmb3IgKElubGluZVN0YWNrRW50cnkqIHN0
YWNrID0gbV9pbmxpbmVTdGFja1RvcDsgOyBzdGFjayA9IHN0YWNrLT5tX2NhbGxlcikgeworICAg
ICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBzdGFjay0+bV9pbmxp
bmVDYWxsRnJhbWU7CisgICAgICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZSkKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmIChvcGVyYW5kID49IGlubGluZUNhbGxGcmFt
ZS0+c3RhY2tPZmZzZXQgLSBSZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlclNpemUpCisgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAob3BlcmFuZCA9PSBpbmxpbmVD
YWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSkK
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1
bnNpZ25lZD4ob3BlcmFuZCkgPCBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0IC0gUmVnaXN0
ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplIC0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMu
c2l6ZSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaW50IGFyZ3Vt
ZW50ID0gb3BlcmFuZFRvQXJndW1lbnQob3BlcmFuZCAtIGlubGluZUNhbGxGcmFtZS0+c3RhY2tP
ZmZzZXQpOworICAgICAgICAgICAgcmV0dXJuIHN0YWNrLT5tX2FyZ3VtZW50UG9zaXRpb25zW2Fy
Z3VtZW50XTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgCisgICAg
QXJndW1lbnRQb3NpdGlvbiogZmluZEFyZ3VtZW50UG9zaXRpb24oaW50IG9wZXJhbmQpCisgICAg
eworICAgICAgICBpZiAob3BlcmFuZElzQXJndW1lbnQob3BlcmFuZCkpCisgICAgICAgICAgICBy
ZXR1cm4gZmluZEFyZ3VtZW50UG9zaXRpb25Gb3JBcmd1bWVudChvcGVyYW5kVG9Bcmd1bWVudChv
cGVyYW5kKSk7CisgICAgICAgIHJldHVybiBmaW5kQXJndW1lbnRQb3NpdGlvbkZvckxvY2FsKG9w
ZXJhbmQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGZsdXNoKGludCBvcGVyYW5kKQorICAgIHsK
KyAgICAgICAgZmx1c2hEaXJlY3QobV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKG9wZXJh
bmQpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBmbHVzaERpcmVjdChpbnQgb3BlcmFuZCkKKyAg
ICB7CisgICAgICAgIGZsdXNoRGlyZWN0KG9wZXJhbmQsIGZpbmRBcmd1bWVudFBvc2l0aW9uKG9w
ZXJhbmQpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBmbHVzaERpcmVjdChpbnQgb3BlcmFuZCwg
QXJndW1lbnRQb3NpdGlvbiogYXJndW1lbnRQb3NpdGlvbikKICAgICB7CiAgICAgICAgIC8vIEZJ
WE1FOiBUaGlzIHNob3VsZCBjaGVjayBpZiB0aGUgc2FtZSBvcGVyYW5kIGhhZCBhbHJlYWR5IGJl
ZW4gZmx1c2hlZCB0bwogICAgICAgICAvLyBzb21lIG90aGVyIGxvY2FsIHZhcmlhYmxlLgogICAg
ICAgICAKLSAgICAgICAgb3BlcmFuZCA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChv
cGVyYW5kKTsKICAgICAgICAgYm9vbCBpc0NhcHR1cmVkID0gbV9jb2RlQmxvY2stPmlzQ2FwdHVy
ZWQobV9pbmxpbmVTdGFja1RvcC0+bV9pbmxpbmVDYWxsRnJhbWUsIG9wZXJhbmQpOwogICAgICAg
ICAKICAgICAgICAgQVNTRVJUKG9wZXJhbmQgPCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCk7
CkBAIC0zOTgsNyArNDIwLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNz
RGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKICAg
ICAgICAgICAgIHZhcmlhYmxlQWNjZXNzRGF0YS0+bWVyZ2VJc0NhcHR1cmVkKGlzQ2FwdHVyZWQp
OwogICAgICAgICAgICAgYWRkVG9HcmFwaChGbHVzaCwgT3BJbmZvKHZhcmlhYmxlQWNjZXNzRGF0
YSksIG5vZGVJbmRleCk7Ci0gICAgICAgICAgICByZXR1cm4gdmFyaWFibGVBY2Nlc3NEYXRhOwor
ICAgICAgICAgICAgaWYgKGFyZ3VtZW50UG9zaXRpb24pCisgICAgICAgICAgICAgICAgYXJndW1l
bnRQb3NpdGlvbi0+YWRkVmFyaWFibGUodmFyaWFibGVBY2Nlc3NEYXRhKTsKKyAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRh
KiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBuZXdWYXJpYWJsZUFjY2Vzc0RhdGEob3BlcmFuZCwgaXND
YXB0dXJlZCk7CkBAIC00MTMsNyArNDM3LDIxIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX2N1
cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLmxvY2FsKGluZGV4KSA9IG5vZGVJbmRleDsKICAg
ICAgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdEhlYWQuc2V0TG9jYWxGaXJzdFRp
bWUoaW5kZXgsIG5vZGVJbmRleCk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHZhcmlhYmxl
QWNjZXNzRGF0YTsKKyAgICAgICAgaWYgKGFyZ3VtZW50UG9zaXRpb24pCisgICAgICAgICAgICBh
cmd1bWVudFBvc2l0aW9uLT5hZGRWYXJpYWJsZSh2YXJpYWJsZUFjY2Vzc0RhdGEpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGZsdXNoQXJndW1lbnRzQW5kQ2FwdHVyZWRWYXJpYWJsZXMoKQorICAg
IHsKKyAgICAgICAgaW50IG51bUFyZ3VtZW50czsKKyAgICAgICAgaWYgKG1faW5saW5lU3RhY2tU
b3AtPm1faW5saW5lQ2FsbEZyYW1lKQorICAgICAgICAgICAgbnVtQXJndW1lbnRzID0gbV9pbmxp
bmVTdGFja1RvcC0+bV9pbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIG51bUFyZ3VtZW50cyA9IG1faW5saW5lU3RhY2tUb3AtPm1fY29k
ZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCk7CisgICAgICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQg
PSBudW1Bcmd1bWVudHM7IGFyZ3VtZW50LS0gPiAxOykKKyAgICAgICAgICAgIGZsdXNoKGFyZ3Vt
ZW50VG9PcGVyYW5kKGFyZ3VtZW50KSk7CisgICAgICAgIGZvciAodW5zaWduZWQgbG9jYWwgPSBt
X2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+bV9udW1DYXB0dXJlZFZhcnM7IGxvY2FsLS07
KQorICAgICAgICAgICAgZmx1c2gobG9jYWwpOwogICAgIH0KIAogICAgIC8vIEdldCBhbiBvcGVy
YW5kLCBhbmQgcGVyZm9ybSBhIFRvSW50MzIvVG9OdW1iZXIgY29udmVyc2lvbiBvbiBpdC4KQEAg
LTEyMTksMTcgKzEyNTcsNiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhi
b29sCiAgICAgCiAgICAgLy8gRklYTUU6IERvbid0IGZsdXNoIGNvbnN0YW50cyEKICAgICAKLSAg
ICBWZWN0b3I8VmFyaWFibGVBY2Nlc3NEYXRhKiwgOD4gYXJndW1lbnRzOwotICAgIGZvciAoaW50
IGkgPSAxOyBpIDwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7ICsraSkgewotICAgICAgICBW
YXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9Ci0gICAgICAgICAgICBmbHVz
aEFyZ3VtZW50KHJlZ2lzdGVyT2Zmc2V0ICsgYXJndW1lbnRUb09wZXJhbmQoaSkpOwotICAgICAg
ICBhcmd1bWVudHMuYXBwZW5kKHZhcmlhYmxlQWNjZXNzRGF0YSk7Ci0gICAgICAgIAotICAgICAg
ICAvLyBBcmUgd2UgZ29pbmcgdG8gYmUgY2FwdHVyaW5nIGFyZ3VtZW50cz8gSWYgc28gbWFrZSBz
dXJlIHdlIHJlY29yZCB0aGlzIGZhY3QuCi0gICAgICAgIGlmIChjb2RlQmxvY2stPmFyZ3VtZW50
SXNDYXB0dXJlZChpKSkKLSAgICAgICAgICAgIHZhcmlhYmxlQWNjZXNzRGF0YS0+bWVyZ2VJc0Nh
cHR1cmVkKHRydWUpOwotICAgIH0KLSAgICAKICAgICBpbnQgaW5saW5lQ2FsbEZyYW1lU3RhcnQg
PSBtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQocmVnaXN0ZXJPZmZzZXQpIC0gUmVnaXN0
ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplOwogICAgIAogICAgIC8vIE1ha2Ugc3VyZSB0aGF0
IHRoZSBhcmVhIHVzZWQgYnkgdGhlIGNhbGwgZnJhbWUgaXMgcmVzZXJ2ZWQuCkBAIC0xMjUxLDEz
ICsxMjc4LDYgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoYm9vbAogICAg
ICAgICAgICAgdXNlc1Jlc3VsdCA/IHJlc3VsdE9wZXJhbmQgOiBJbnZhbGlkVmlydHVhbFJlZ2lz
dGVyKSwKICAgICAgICAgKFZpcnR1YWxSZWdpc3RlcilpbmxpbmVDYWxsRnJhbWVTdGFydCwgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGtpbmQpOwogICAgIAotICAgIC8vIExpbmsgdXAgdGhl
IGFyZ3VtZW50IHZhcmlhYmxlIGFjY2VzcyBkYXRhcyB0byB0aGVpciBhcmd1bWVudCBwb3NpdGlv
bnMuCi0gICAgZm9yIChpbnQgaSA9IDE7IGkgPCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsg
KytpKSB7Ci0gICAgICAgIGlmIChzdGF0aWNfY2FzdDxzaXplX3Q+KGkpID49IGlubGluZVN0YWNr
RW50cnkubV9hcmd1bWVudFBvc2l0aW9ucy5zaXplKCkpCi0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgaW5saW5lU3RhY2tFbnRyeS5tX2FyZ3VtZW50UG9zaXRpb25zW2ldLT5hZGRWYXJpYWJs
ZShhcmd1bWVudHNbaSAtIDFdKTsKLSAgICB9Ci0gICAgCiAgICAgLy8gVGhpcyBpcyB3aGVyZSB0
aGUgYWN0dWFsIGlubGluaW5nIHJlYWxseSBoYXBwZW5zLgogICAgIHVuc2lnbmVkIG9sZEluZGV4
ID0gbV9jdXJyZW50SW5kZXg7CiAgICAgdW5zaWduZWQgb2xkUHJvZmlsaW5nSW5kZXggPSBtX2N1
cnJlbnRQcm9maWxpbmdJbmRleDsKQEAgLTE1NzgsNyArMTU5OCw3IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgY2FzZSBvcF9lbnRlcjoKICAgICAg
ICAgICAgIC8vIEluaXRpYWxpemUgYWxsIGxvY2FscyB0byB1bmRlZmluZWQuCiAgICAgICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5tX251
bVZhcnM7ICsraSkKLSAgICAgICAgICAgICAgICBzZXQoaSwgY29uc3RhbnRVbmRlZmluZWQoKSk7
CisgICAgICAgICAgICAgICAgc2V0KGksIGNvbnN0YW50VW5kZWZpbmVkKCksIFNldE9uRW50cnkp
OwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZW50ZXIpOwogCiAgICAgICAgIGNhc2Ugb3Bf
Y29udmVydF90aGlzOiB7CkBAIC0yMzUyLDYgKzIzNzIsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9wX3JldDoK
KyAgICAgICAgICAgIGZsdXNoQXJndW1lbnRzQW5kQ2FwdHVyZWRWYXJpYWJsZXMoKTsKICAgICAg
ICAgICAgIGlmIChtX2lubGluZVN0YWNrVG9wLT5tX2lubGluZUNhbGxGcmFtZSkgewogICAgICAg
ICAgICAgICAgIGlmIChtX2lubGluZVN0YWNrVG9wLT5tX3JldHVyblZhbHVlICE9IEludmFsaWRW
aXJ0dWFsUmVnaXN0ZXIpCiAgICAgICAgICAgICAgICAgICAgIHNldERpcmVjdChtX2lubGluZVN0
YWNrVG9wLT5tX3JldHVyblZhbHVlLCBnZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZCkpOwpAQCAtMjM3OSw2ICsyNDAwLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayh1bnNpZ25lZAogICAgICAgICAgICAgTEFTVF9PUENPREUob3BfcmV0KTsKICAgICAgICAgICAg
IAogICAgICAgICBjYXNlIG9wX2VuZDoKKyAgICAgICAgICAgIGZsdXNoQXJndW1lbnRzQW5kQ2Fw
dHVyZWRWYXJpYWJsZXMoKTsKICAgICAgICAgICAgIEFTU0VSVCghbV9pbmxpbmVTdGFja1RvcC0+
bV9pbmxpbmVDYWxsRnJhbWUpOwogICAgICAgICAgICAgYWRkVG9HcmFwaChSZXR1cm4sIGdldChj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7CiAgICAgICAgICAgICBMQVNUX09QQ09E
RShvcF9lbmQpOwpAQCAtMjgxOCw4ICsyODQwLDggQEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0
YWNrRW50cnk6OklubGluZQogICAgICwgbV9kaWRFYXJseVJldHVybihmYWxzZSkKICAgICAsIG1f
Y2FsbGVyKGJ5dGVDb2RlUGFyc2VyLT5tX2lubGluZVN0YWNrVG9wKQogewotICAgIG1fYXJndW1l
bnRQb3NpdGlvbnMucmVzaXplKGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKTsgaS0tOykgeworICAgIG1f
YXJndW1lbnRQb3NpdGlvbnMucmVzaXplKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsgaS0tOykgewog
ICAgICAgICBieXRlQ29kZVBhcnNlci0+bV9ncmFwaC5tX2FyZ3VtZW50UG9zaXRpb25zLmFwcGVu
ZChBcmd1bWVudFBvc2l0aW9uKCkpOwogICAgICAgICBBcmd1bWVudFBvc2l0aW9uKiBhcmd1bWVu
dFBvc2l0aW9uID0gJmJ5dGVDb2RlUGFyc2VyLT5tX2dyYXBoLm1fYXJndW1lbnRQb3NpdGlvbnMu
bGFzdCgpOwogICAgICAgICBtX2FyZ3VtZW50UG9zaXRpb25zW2ldID0gYXJndW1lbnRQb3NpdGlv
bjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCShyZXZp
c2lvbiAxMTg4MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNjIwLDcgKzYyMCw3IEBAIHByaXZhdGU6CiAgICAgfQogICAgIAog
ICAgIC8vIFRoaXMgcmV0dXJucyB0aGUgRmx1c2ggbm9kZSB0aGF0IGlzIGtlZXBpbmcgYSBTZXRM
b2NhbCBhbGl2ZS4KLSAgICBOb2RlSW5kZXggc2V0TG9jYWxTdG9yZUVsaW1pbmF0aW9uKFZpcnR1
YWxSZWdpc3RlciBsb2NhbCkKKyAgICBOb2RlSW5kZXggc2V0TG9jYWxTdG9yZUVsaW1pbmF0aW9u
KFZpcnR1YWxSZWdpc3RlciBsb2NhbCwgTm9kZUluZGV4IGV4cGVjdGVkTm9kZUluZGV4KQogICAg
IHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9pbmRleEluQmxvY2s7IGktLTspIHsKICAg
ICAgICAgICAgIE5vZGVJbmRleCBpbmRleCA9IG1fY3VycmVudEJsb2NrLT5hdChpKTsKQEAgLTYy
OSw3ICs2MjksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgc3dpdGNoIChub2RlLm9wKCkpIHsKICAgICAgICAgICAgIGNhc2UgR2V0TG9jYWw6Ci0g
ICAgICAgICAgICBjYXNlIFNldExvY2FsOgorICAgICAgICAgICAgY2FzZSBGbHVzaDoKICAgICAg
ICAgICAgICAgICBpZiAobm9kZS5sb2NhbCgpID09IGxvY2FsKQogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gTm9Ob2RlOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNjM5LDE5ICs2Mzks
MTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vTm9kZTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2UgRmx1
c2g6IHsKKyAgICAgICAgICAgIGNhc2UgU2V0TG9jYWw6IHsKICAgICAgICAgICAgICAgICBpZiAo
bm9kZS5sb2NhbCgpICE9IGxvY2FsKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICBpZiAoIWkpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgIE5vZGVJbmRleCBwcmV2SW5kZXggPSBtX2N1cnJlbnRCbG9jay0+YXQoaSAtIDEpOwot
ICAgICAgICAgICAgICAgIGlmIChwcmV2SW5kZXggIT0gbm9kZS5jaGlsZDEoKS5pbmRleCgpKQot
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBBU1NFUlQobV9ncmFw
aFtwcmV2SW5kZXhdLmxvY2FsKCkgPT0gbG9jYWwpOwotICAgICAgICAgICAgICAgIEFTU0VSVCht
X2dyYXBoW3ByZXZJbmRleF0udmFyaWFibGVBY2Nlc3NEYXRhKCkgPT0gbm9kZS52YXJpYWJsZUFj
Y2Vzc0RhdGEoKSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG1fZ3JhcGhbcHJldkluZGV4XS5z
aG91bGRHZW5lcmF0ZSgpKTsKLSAgICAgICAgICAgICAgICBpZiAobV9ncmFwaFtwcmV2SW5kZXhd
LnJlZkNvdW50KCkgPiAxKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICBpZiAoaW5kZXggIT0gZXhwZWN0ZWROb2RlSW5kZXgpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBOb05vZGU7CisgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGhbaW5kZXhdLnJlZkNv
dW50KCkgPiAxKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9Ob2RlOwogICAgICAgICAg
ICAgICAgIHJldHVybiBpbmRleDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKQEAg
LTY2MCw2ICs2NTQsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5v
Tm9kZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGNhc2UgVGVhck9mZkFjdGl2YXRpb246CisgICAgICAgICAgICBjYXNlIFRlYXJPZmZBcmd1
bWVudHM6CisgICAgICAgICAgICAgICAgLy8gSWYgYW4gYWN0aXZhdGlvbiBpcyBiZWluZyB0b3Ju
IG9mZiB0aGVuIGl0IG1lYW5zIHRoYXQgY2FwdHVyZWQgdmFyaWFibGVzCisgICAgICAgICAgICAg
ICAgLy8gYXJlIGxpdmUuIFdlIGNvdWxkIGJlIGNsZXZlciBoZXJlIGFuZCBjaGVjayBpZiB0aGUg
bG9jYWwgcXVhbGlmaWVzIGFzIGFuCisgICAgICAgICAgICAgICAgLy8gYXJndW1lbnQgcmVnaXN0
ZXIuIEJ1dCB0aGF0IHNlZW1zIGxpa2UgaXQgd291bGQgYnV5IGlzIHZlcnkgbGl0dGxlIHNpbmNl
CisgICAgICAgICAgICAgICAgLy8gYW55IGtpbmQgb2YgdGVhciBvZmZzIGFyZSByYXJlIHRvIGJl
Z2luIHdpdGguCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vTm9kZTsKKyAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGguY2xv
YmJlcnNXb3JsZChpbmRleCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb05vZGU7CkBA
IC04NTUsMjcgKzg1NywyNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNlIFNldExvY2FsOiB7CisgICAgICAgIGNhc2Ug
Rmx1c2g6IHsKICAgICAgICAgICAgIGlmIChtX2ZpeHBvaW50U3RhdGUgPT0gRml4cG9pbnROb3RD
b252ZXJnZWQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBWYXJpYWJsZUFj
Y2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5vZGUudmFyaWFibGVBY2Nlc3NEYXRhKCk7
CiAgICAgICAgICAgICBpZiAoIXZhcmlhYmxlQWNjZXNzRGF0YS0+aXNDYXB0dXJlZCgpKQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGxvY2FsID0g
dmFyaWFibGVBY2Nlc3NEYXRhLT5sb2NhbCgpOwotICAgICAgICAgICAgTm9kZUluZGV4IHJlcGxh
Y2VtZW50SW5kZXggPSBzZXRMb2NhbFN0b3JlRWxpbWluYXRpb24obG9jYWwpOworICAgICAgICAg
ICAgTm9kZUluZGV4IHJlcGxhY2VtZW50SW5kZXggPSBzZXRMb2NhbFN0b3JlRWxpbWluYXRpb24o
bG9jYWwsIG5vZGUuY2hpbGQxKCkuaW5kZXgoKSk7CiAgICAgICAgICAgICBpZiAocmVwbGFjZW1l
bnRJbmRleCA9PSBOb05vZGUpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBO
b2RlJiByZXBsYWNlbWVudCA9IG1fZ3JhcGhbcmVwbGFjZW1lbnRJbmRleF07Ci0gICAgICAgICAg
ICBBU1NFUlQocmVwbGFjZW1lbnQub3AoKSA9PSBGbHVzaCk7CisgICAgICAgICAgICBBU1NFUlQo
cmVwbGFjZW1lbnQub3AoKSA9PSBTZXRMb2NhbCk7CiAgICAgICAgICAgICBBU1NFUlQocmVwbGFj
ZW1lbnQucmVmQ291bnQoKSA9PSAxKTsKICAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudC5z
aG91bGRHZW5lcmF0ZSgpKTsKLSAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudC5tdXN0R2Vu
ZXJhdGUoKSk7Ci0gICAgICAgICAgICByZXBsYWNlbWVudC5zZXRPcEFuZERlZmF1bHRGbGFncyhQ
aGFudG9tKTsKLSAgICAgICAgICAgIE5vZGVJbmRleCBzZXRMb2NhbEluZGV4ID0gcmVwbGFjZW1l
bnQuY2hpbGQxKCkuaW5kZXgoKTsKLSAgICAgICAgICAgIEFTU0VSVChtX2dyYXBoW3NldExvY2Fs
SW5kZXhdLm9wKCkgPT0gU2V0TG9jYWwpOwotICAgICAgICAgICAgbV9ncmFwaC5jbGVhckFuZERl
cmVmQ2hpbGQxKHJlcGxhY2VtZW50KTsKLSAgICAgICAgICAgIHJlcGxhY2VtZW50LmNoaWxkcmVu
LmNoaWxkMSgpID0gbV9ncmFwaFtzZXRMb2NhbEluZGV4XS5jaGlsZDEoKTsKLSAgICAgICAgICAg
IG1fZ3JhcGgucmVmKHJlcGxhY2VtZW50LmNoaWxkMSgpKTsKKyAgICAgICAgICAgIG5vZGUuc2V0
T3BBbmREZWZhdWx0RmxhZ3MoUGhhbnRvbSk7CisgICAgICAgICAgICBOb2RlSW5kZXggZGF0YU5v
ZGVJbmRleCA9IHJlcGxhY2VtZW50LmNoaWxkMSgpLmluZGV4KCk7CisgICAgICAgICAgICBBU1NF
UlQobV9ncmFwaFtkYXRhTm9kZUluZGV4XS5oYXNSZXN1bHQoKSk7CisgICAgICAgICAgICBtX2dy
YXBoLmNsZWFyQW5kRGVyZWZDaGlsZDEobm9kZSk7CisgICAgICAgICAgICBub2RlLmNoaWxkcmVu
LmNoaWxkMSgpID0gRWRnZShkYXRhTm9kZUluZGV4KTsKKyAgICAgICAgICAgIG1fZ3JhcGgucmVm
KGRhdGFOb2RlSW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
ICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAJKHJldmlzaW9uIDExODgwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAwLDIwICsxMDAwLDE4
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoQmFzaWNCbG9jayYKICAgICBBU1NFUlQo
bV92YXJpYWJsZXMuc2l6ZSgpID09IGJsb2NrLnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2Fs
cygpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdmFyaWFibGVzLnNpemUoKTsgKytp
KSB7CiAgICAgICAgIE5vZGVJbmRleCBub2RlSW5kZXggPSBibG9jay52YXJpYWJsZXNBdEhlYWQu
bG9jYWwoaSk7Ci0gICAgICAgIC8vIEZJWE1FOiBVc2UgdGhlIHZhcmlhYmxlIGFjY2VzcyBkYXRh
LCBub3QgdGhlIGZpcnN0IG5vZGUgaW4gdGhlIGJsb2NrLgotICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODcyMDUKLSAgICAgICAgaWYgKG1faml0LmNv
ZGVCbG9jaygpLT5sb2NhbElzQ2FwdHVyZWQoYXQoYmxvY2tbMF0pLmNvZGVPcmlnaW4uaW5saW5l
Q2FsbEZyYW1lLCBpKSkKLSAgICAgICAgICAgIG1fdmFyaWFibGVzW2ldID0gVmFsdWVTb3VyY2Uo
VmFsdWVJblJlZ2lzdGVyRmlsZSk7Ci0gICAgICAgIGVsc2UgaWYgKG5vZGVJbmRleCA9PSBOb05v
ZGUpCisgICAgICAgIGlmIChub2RlSW5kZXggPT0gTm9Ob2RlKQogICAgICAgICAgICAgbV92YXJp
YWJsZXNbaV0gPSBWYWx1ZVNvdXJjZShTb3VyY2VJc0RlYWQpOwogICAgICAgICBlbHNlIGlmIChh
dChub2RlSW5kZXgpLnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5pc0FyZ3VtZW50c0FsaWFzKCkpCiAg
ICAgICAgICAgICBtX3ZhcmlhYmxlc1tpXSA9IFZhbHVlU291cmNlKEFyZ3VtZW50c1NvdXJjZSk7
CisgICAgICAgIGVsc2UgaWYgKGF0KG5vZGVJbmRleCkudmFyaWFibGVBY2Nlc3NEYXRhKCktPmlz
Q2FwdHVyZWQoKSkKKyAgICAgICAgICAgIG1fdmFyaWFibGVzW2ldID0gVmFsdWVTb3VyY2UoVmFs
dWVJblJlZ2lzdGVyRmlsZSk7CiAgICAgICAgIGVsc2UgaWYgKCFhdChub2RlSW5kZXgpLnJlZkNv
dW50KCkpCiAgICAgICAgICAgICBtX3ZhcmlhYmxlc1tpXSA9IFZhbHVlU291cmNlKFNvdXJjZUlz
RGVhZCk7CiAgICAgICAgIGVsc2UgaWYgKGF0KG5vZGVJbmRleCkudmFyaWFibGVBY2Nlc3NEYXRh
KCktPnNob3VsZFVzZURvdWJsZUZvcm1hdCgpKQogICAgICAgICAgICAgbV92YXJpYWJsZXNbaV0g
PSBWYWx1ZVNvdXJjZShEb3VibGVJblJlZ2lzdGVyRmlsZSk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIG1fdmFyaWFibGVzW2ldID0gVmFsdWVTb3VyY2U6OmZvclByZWRpY3Rpb24oYXQobm9k
ZUluZGV4KS52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdGlvbigpKTsKKyAgICAgICAgICAg
IG1fdmFyaWFibGVzW2ldID0gVmFsdWVTb3VyY2U6OmZvclByZWRpY3Rpb24oYXQobm9kZUluZGV4
KS52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+YXJndW1lbnRBd2FyZVByZWRpY3Rpb24oKSk7CiAgICAg
fQogICAgIAogICAgIG1fbGFzdFNldE9wZXJhbmQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46
Om1heCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaAkocmV2aXNpb24gMTE4ODA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTkxLDIyICsyMTkxLDIzIEBA
IHB1YmxpYzoKICAgICAgICAgdW5zaWduZWQgc2V0TG9jYWxJbmRleEluQmxvY2sgPSBtX2luZGV4
SW5CbG9jayArIDE7CiAgICAgICAgIAogICAgICAgICBOb2RlKiBzZXRMb2NhbCA9ICZhdChtX2pp
dC5ncmFwaCgpLm1fYmxvY2tzW21fYmxvY2tdLT5hdChzZXRMb2NhbEluZGV4SW5CbG9jaykpOwor
ICAgICAgICBib29sIGhhZEludDMyVG9Eb3VibGUgPSBmYWxzZTsKICAgICAgICAgCiAgICAgICAg
IGlmIChzZXRMb2NhbC0+b3AoKSA9PSBJbnQzMlRvRG91YmxlKSB7CiAgICAgICAgICAgICBzZXRM
b2NhbCA9ICZhdChtX2ppdC5ncmFwaCgpLm1fYmxvY2tzW21fYmxvY2tdLT5hdCgrK3NldExvY2Fs
SW5kZXhJbkJsb2NrKSk7CisgICAgICAgICAgICBoYWRJbnQzMlRvRG91YmxlID0gdHJ1ZTsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoc2V0TG9jYWwtPm9wKCkgPT0gRmx1c2gpCisgICAgICAgICAg
ICBzZXRMb2NhbCA9ICZhdChtX2ppdC5ncmFwaCgpLm1fYmxvY2tzW21fYmxvY2tdLT5hdCgrK3Nl
dExvY2FsSW5kZXhJbkJsb2NrKSk7CisgICAgICAgIAorICAgICAgICBpZiAoaGFkSW50MzJUb0Rv
dWJsZSkKICAgICAgICAgICAgIEFTU0VSVChhdChzZXRMb2NhbC0+Y2hpbGQxKCkpLmNoaWxkMSgp
ID09IG1fY29tcGlsZUluZGV4KTsKLSAgICAgICAgfSBlbHNlCisgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIEFTU0VSVChzZXRMb2NhbC0+Y2hpbGQxKCkgPT0gbV9jb21waWxlSW5kZXgpOwotICAg
ICAgICAKICAgICAgICAgQVNTRVJUKHNldExvY2FsLT5vcCgpID09IFNldExvY2FsKTsKICAgICAg
ICAgQVNTRVJUKHNldExvY2FsLT5jb2RlT3JpZ2luID09IGF0KG1fY29tcGlsZUluZGV4KS5jb2Rl
T3JpZ2luKTsKIAogICAgICAgICBOb2RlKiBuZXh0Tm9kZSA9ICZhdChtX2ppdC5ncmFwaCgpLm1f
YmxvY2tzW21fYmxvY2tdLT5hdChzZXRMb2NhbEluZGV4SW5CbG9jayArIDEpKTsKLSAgICAgICAg
aWYgKG5leHROb2RlLT5jb2RlT3JpZ2luID09IGF0KG1fY29tcGlsZUluZGV4KS5jb2RlT3JpZ2lu
KSB7Ci0gICAgICAgICAgICBBU1NFUlQobmV4dE5vZGUtPm9wKCkgPT0gRmx1c2gpOwotICAgICAg
ICAgICAgbmV4dE5vZGUgPSAmYXQobV9qaXQuZ3JhcGgoKS5tX2Jsb2Nrc1ttX2Jsb2NrXS0+YXQo
c2V0TG9jYWxJbmRleEluQmxvY2sgKyAyKSk7Ci0gICAgICAgICAgICBBU1NFUlQobmV4dE5vZGUt
PmNvZGVPcmlnaW4gIT0gYXQobV9jb21waWxlSW5kZXgpLmNvZGVPcmlnaW4pOyAvLyBkdXBsaWNh
dGUgdGhlIHNhbWUgYXNzZXJ0aW9uIGFzIGJlbG93IHNvIHRoYXQgaWYgd2UgZmFpbCwgd2UnbGwg
a25vdyB3ZSBjYW1lIGRvd24gdGhpcyBwYXRoLgotICAgICAgICB9CiAgICAgICAgIEFTU0VSVChu
ZXh0Tm9kZS0+Y29kZU9yaWdpbiAhPSBhdChtX2NvbXBpbGVJbmRleCkuY29kZU9yaWdpbik7CiAg
ICAgICAgIAogICAgICAgICBPU1JFeGl0JiBleGl0ID0gbV9qaXQuY29kZUJsb2NrKCktPmxhc3RP
U1JFeGl0KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144638</attachid>
            <date>2012-05-29 16:14:38 -0700</date>
            <delta_ts>2012-05-29 16:21:23 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>fixflush_patch_5.diff</filename>
            <type>text/plain</type>
            <size>34634</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE4ODM4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBA
CisyMDEyLTA1LTI5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBrZWVwIGNhcHR1cmVkIHZhcmlhYmxlcyBhbGl2ZSB1bnRpbCB0aGUgKGlubGlu
ZSkgcmV0dXJuLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODcyMDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAg
CisgICAgICAgIENoYW5nZXMgdGhlIHdheSB3ZSBkbyBmbHVzaGluZyBmb3IgY2FwdHVyZWQgdmFy
aWFibGVzIGFuZCBhcmd1bWVudHMuIEluc3RlYWQgb2YgZmx1c2hpbmcKKyAgICAgICAgZWFjaCBT
ZXRMb2NhbCBpbW1lZGlhdGVseSwgd2UgZmx1c2ggYXQga2lsbCBwb2ludHMuIFNvIGEgU2V0TG9j
YWwgd2lsbCBjYXVzZSBhIEZsdXNoIG9mCisgICAgICAgIHdoYXRldmVyIHdhcyBsaXZlIGluIHRo
ZSB2YXJpYWJsZSBwcmV2aW91c2x5LCBhbmQgYSByZXR1cm4gd2lsbCBjYXVzZSBhIEZsdXNoIG9m
IGFsbAorICAgICAgICBjYXB0dXJlZCB2YXJpYWJsZXMgYW5kIGFsbCBhcmd1bWVudHMuCisKKyAg
ICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpzZXREaXJlY3QpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpzZXQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpzZXRMb2NhbCk6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmdldEFyZ3VtZW50KToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6c2V0QXJndW1lbnQpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpmaW5kQXJndW1lbnRQb3NpdGlvbkZvckFyZ3VtZW50KToK
KyAgICAgICAgKEJ5dGVDb2RlUGFyc2VyKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6ZmluZEFyZ3VtZW50UG9zaXRpb25Gb3JMb2NhbCk6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OmZpbmRBcmd1bWVudFBvc2l0aW9uKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6Zmx1c2gpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpmbHVzaERpcmVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmZs
dXNoQXJndW1lbnRzQW5kQ2FwdHVyZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KToKKyAgICAgICAgKiBkZmcvREZH
Q1NFUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNTRVBoYXNlOjpzZXRMb2NhbFN0b3Jl
RWxpbWluYXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OkNTRVBoYXNlOjpwZXJmb3JtTm9kZUNT
RSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZvcndhcmRTcGVj
dWxhdGlvbkNoZWNrKToKKwogMjAxMi0wNS0yOSAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJl
cmdAYXBwbGUuY29tPgogCiAgICAgICAgIENvcGllZFNwYWNlOjpkb25lQ29weWluZyBjb3VsZCBz
dGFydCBhbm90aGVyIGNvbGxlY3Rpb24KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxMTg4MDYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQyLDIwICsxNDIsMjEgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHJldHVybiBnZXRE
aXJlY3QobV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKG9wZXJhbmQpKTsKICAgICB9Ci0g
ICAgdm9pZCBzZXREaXJlY3QoaW50IG9wZXJhbmQsIE5vZGVJbmRleCB2YWx1ZSkKKyAgICBlbnVt
IFNldE1vZGUgeyBOb3JtYWxTZXQsIFNldE9uRW50cnkgfTsKKyAgICB2b2lkIHNldERpcmVjdChp
bnQgb3BlcmFuZCwgTm9kZUluZGV4IHZhbHVlLCBTZXRNb2RlIHNldE1vZGUgPSBOb3JtYWxTZXQp
CiAgICAgewogICAgICAgICAvLyBJcyB0aGlzIGFuIGFyZ3VtZW50PwogICAgICAgICBpZiAob3Bl
cmFuZElzQXJndW1lbnQob3BlcmFuZCkpIHsKLSAgICAgICAgICAgIHNldEFyZ3VtZW50KG9wZXJh
bmQsIHZhbHVlKTsKKyAgICAgICAgICAgIHNldEFyZ3VtZW50KG9wZXJhbmQsIHZhbHVlLCBzZXRN
b2RlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIC8vIE11c3Qg
YmUgYSBsb2NhbC4KLSAgICAgICAgc2V0TG9jYWwoKHVuc2lnbmVkKW9wZXJhbmQsIHZhbHVlKTsK
KyAgICAgICAgc2V0TG9jYWwoKHVuc2lnbmVkKW9wZXJhbmQsIHZhbHVlLCBzZXRNb2RlKTsKICAg
ICB9Ci0gICAgdm9pZCBzZXQoaW50IG9wZXJhbmQsIE5vZGVJbmRleCB2YWx1ZSkKKyAgICB2b2lk
IHNldChpbnQgb3BlcmFuZCwgTm9kZUluZGV4IHZhbHVlLCBTZXRNb2RlIHNldE1vZGUgPSBOb3Jt
YWxTZXQpCiAgICAgewotICAgICAgICBzZXREaXJlY3QobV9pbmxpbmVTdGFja1RvcC0+cmVtYXBP
cGVyYW5kKG9wZXJhbmQpLCB2YWx1ZSk7CisgICAgICAgIHNldERpcmVjdChtX2lubGluZVN0YWNr
VG9wLT5yZW1hcE9wZXJhbmQob3BlcmFuZCksIHZhbHVlLCBzZXRNb2RlKTsKICAgICB9CiAgICAg
CiAgICAgTm9kZUluZGV4IGluamVjdExhenlPcGVyYW5kUHJlZGljdGlvbihOb2RlSW5kZXggbm9k
ZUluZGV4KQpAQCAtMjM2LDM3ICsyMzcsMTkgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAg
IHJldHVybiBub2RlSW5kZXg7CiAgICAgfQotICAgIHZvaWQgc2V0TG9jYWwodW5zaWduZWQgb3Bl
cmFuZCwgTm9kZUluZGV4IHZhbHVlKQorICAgIHZvaWQgc2V0TG9jYWwodW5zaWduZWQgb3BlcmFu
ZCwgTm9kZUluZGV4IHZhbHVlLCBTZXRNb2RlIHNldE1vZGUgPSBOb3JtYWxTZXQpCiAgICAgewog
ICAgICAgICBib29sIGlzQ2FwdHVyZWQgPSBtX2NvZGVCbG9jay0+bG9jYWxJc0NhcHR1cmVkKG1f
aW5saW5lU3RhY2tUb3AtPm1faW5saW5lQ2FsbEZyYW1lLCBvcGVyYW5kKTsKICAgICAgICAgCisg
ICAgICAgIGlmIChzZXRNb2RlID09IE5vcm1hbFNldCkgeworICAgICAgICAgICAgQXJndW1lbnRQ
b3NpdGlvbiogYXJndW1lbnRQb3NpdGlvbiA9IGZpbmRBcmd1bWVudFBvc2l0aW9uRm9yTG9jYWwo
b3BlcmFuZCk7CisgICAgICAgICAgICBpZiAoaXNDYXB0dXJlZCB8fCBhcmd1bWVudFBvc2l0aW9u
KQorICAgICAgICAgICAgICAgIGZsdXNoRGlyZWN0KG9wZXJhbmQsIGFyZ3VtZW50UG9zaXRpb24p
OworICAgICAgICB9CisKICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vz
c0RhdGEgPSBuZXdWYXJpYWJsZUFjY2Vzc0RhdGEob3BlcmFuZCwgaXNDYXB0dXJlZCk7CiAgICAg
ICAgIE5vZGVJbmRleCBub2RlSW5kZXggPSBhZGRUb0dyYXBoKFNldExvY2FsLCBPcEluZm8odmFy
aWFibGVBY2Nlc3NEYXRhKSwgdmFsdWUpOwogICAgICAgICBtX2N1cnJlbnRCbG9jay0+dmFyaWFi
bGVzQXRUYWlsLmxvY2FsKG9wZXJhbmQpID0gbm9kZUluZGV4OwotICAgICAgICAKLSAgICAgICAg
Ym9vbCBzaG91bGRGbHVzaCA9IGlzQ2FwdHVyZWQ7Ci0gICAgICAgIAotICAgICAgICBpZiAoIXNo
b3VsZEZsdXNoKSB7Ci0gICAgICAgICAgICAvLyBJZiB0aGlzIGlzIGluIGFyZ3VtZW50IHBvc2l0
aW9uLCB0aGVuIGl0IHNob3VsZCBiZSBmbHVzaGVkLgotICAgICAgICAgICAgZm9yIChJbmxpbmVT
dGFja0VudHJ5KiBzdGFjayA9IG1faW5saW5lU3RhY2tUb3A7IDsgc3RhY2sgPSBzdGFjay0+bV9j
YWxsZXIpIHsKLSAgICAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFt
ZSA9IHN0YWNrLT5tX2lubGluZUNhbGxGcmFtZTsKLSAgICAgICAgICAgICAgICBpZiAoIWlubGlu
ZUNhbGxGcmFtZSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
aWYgKHN0YXRpY19jYXN0PGludD4ob3BlcmFuZCkgPj0gaW5saW5lQ2FsbEZyYW1lLT5zdGFja09m
ZnNldCAtIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSkKLSAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PGludD4ob3Bl
cmFuZCkgPT0gaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZTo6dGhpc0Fy
Z3VtZW50T2Zmc2V0KCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgICAgIGlmIChvcGVyYW5kIDwgaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCAtIFJlZ2lz
dGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSAtIGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRz
LnNpemUoKSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAg
aW50IGFyZ3VtZW50ID0gb3BlcmFuZFRvQXJndW1lbnQob3BlcmFuZCAtIGlubGluZUNhbGxGcmFt
ZS0+c3RhY2tPZmZzZXQpOwotICAgICAgICAgICAgICAgIHN0YWNrLT5tX2FyZ3VtZW50UG9zaXRp
b25zW2FyZ3VtZW50XS0+YWRkVmFyaWFibGUodmFyaWFibGVBY2Nlc3NEYXRhKTsKLSAgICAgICAg
ICAgICAgICBzaG91bGRGbHVzaCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChzaG91bGRGbHVzaCkK
LSAgICAgICAgICAgIGFkZFRvR3JhcGgoRmx1c2gsIE9wSW5mbyh2YXJpYWJsZUFjY2Vzc0RhdGEp
LCBub2RlSW5kZXgpOwogICAgIH0KIAogICAgIC8vIFVzZWQgaW4gaW1wbGVtZW50aW5nIGdldC9z
ZXQsIGFib3ZlLCB3aGVyZSB0aGUgb3BlcmFuZCBpcyBhbiBhcmd1bWVudC4KQEAgLTI5Miw3ICsy
NzUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEq
IHZhcmlhYmxlQWNjZXNzRGF0YSA9IGZsdXNoQ2hpbGQudmFyaWFibGVBY2Nlc3NEYXRhKCk7CiAg
ICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlQWNjZXNzRGF0YS0+bWVyZ2VJc0NhcHR1cmVkKGlz
Q2FwdHVyZWQpOwogICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXggPSBpbmplY3RMYXp5T3Bl
cmFuZFByZWRpY3Rpb24oYWRkVG9HcmFwaChHZXRMb2NhbCwgT3BJbmZvKHZhcmlhYmxlQWNjZXNz
RGF0YSksIG5vZGVJbmRleCkpOwotICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+
dmFyaWFibGVzQXRUYWlsLmxvY2FsKG9wZXJhbmQpID0gbm9kZUluZGV4OworICAgICAgICAgICAg
ICAgICAgICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLmFyZ3VtZW50KGFyZ3VtZW50
KSA9IG5vZGVJbmRleDsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVJbmRleDsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbm9kZVB0ciA9ICZmbHVzaENoaWxkOwpA
QCAtMzM2LDMxICszMTksNzAgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIHJldHVybiBu
b2RlSW5kZXg7CiAgICAgfQotICAgIHZvaWQgc2V0QXJndW1lbnQoaW50IG9wZXJhbmQsIE5vZGVJ
bmRleCB2YWx1ZSkKKyAgICB2b2lkIHNldEFyZ3VtZW50KGludCBvcGVyYW5kLCBOb2RlSW5kZXgg
dmFsdWUsIFNldE1vZGUgc2V0TW9kZSA9IE5vcm1hbFNldCkKICAgICB7CiAgICAgICAgIHVuc2ln
bmVkIGFyZ3VtZW50ID0gb3BlcmFuZFRvQXJndW1lbnQob3BlcmFuZCk7CiAgICAgICAgIGJvb2wg
aXNDYXB0dXJlZCA9IG1fY29kZUJsb2NrLT5hcmd1bWVudElzQ2FwdHVyZWQoYXJndW1lbnQpOwog
ICAgICAgICAKICAgICAgICAgQVNTRVJUKGFyZ3VtZW50IDwgbV9udW1Bcmd1bWVudHMpOwogICAg
ICAgICAKKyAgICAgICAgLy8gQWx3YXlzIGZsdXNoIGFyZ3VtZW50cywgZXhjZXB0IGZvciAndGhp
cycuCisgICAgICAgIGlmIChhcmd1bWVudCAmJiBzZXRNb2RlID09IE5vcm1hbFNldCkKKyAgICAg
ICAgICAgIGZsdXNoRGlyZWN0KG9wZXJhbmQpOworICAgICAgICAKICAgICAgICAgVmFyaWFibGVB
Y2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBuZXdWYXJpYWJsZUFjY2Vzc0RhdGEob3Bl
cmFuZCwgaXNDYXB0dXJlZCk7Ci0gICAgICAgIElubGluZVN0YWNrRW50cnkqIHN0YWNrID0gbV9p
bmxpbmVTdGFja1RvcDsKLSAgICAgICAgd2hpbGUgKHN0YWNrLT5tX2lubGluZUNhbGxGcmFtZSkg
Ly8gZmluZCB0aGUgbWFjaGluZSBzdGFjayBlbnRyeS4KLSAgICAgICAgICAgIHN0YWNrID0gc3Rh
Y2stPm1fY2FsbGVyOwotICAgICAgICBzdGFjay0+bV9hcmd1bWVudFBvc2l0aW9uc1thcmd1bWVu
dF0tPmFkZFZhcmlhYmxlKHZhcmlhYmxlQWNjZXNzRGF0YSk7CiAgICAgICAgIE5vZGVJbmRleCBu
b2RlSW5kZXggPSBhZGRUb0dyYXBoKFNldExvY2FsLCBPcEluZm8odmFyaWFibGVBY2Nlc3NEYXRh
KSwgdmFsdWUpOwogICAgICAgICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLmFyZ3Vt
ZW50KGFyZ3VtZW50KSA9IG5vZGVJbmRleDsKLSAgICAgICAgLy8gQWx3YXlzIGZsdXNoIGFyZ3Vt
ZW50cywgZXhjZXB0IGZvciAndGhpcycuCi0gICAgICAgIGlmIChhcmd1bWVudCkKLSAgICAgICAg
ICAgIGFkZFRvR3JhcGgoRmx1c2gsIE9wSW5mbyh2YXJpYWJsZUFjY2Vzc0RhdGEpLCBub2RlSW5k
ZXgpOwogICAgIH0KICAgICAKLSAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGZsdXNoQXJndW1lbnQo
aW50IG9wZXJhbmQpCisgICAgQXJndW1lbnRQb3NpdGlvbiogZmluZEFyZ3VtZW50UG9zaXRpb25G
b3JBcmd1bWVudChpbnQgYXJndW1lbnQpCisgICAgeworICAgICAgICBJbmxpbmVTdGFja0VudHJ5
KiBzdGFjayA9IG1faW5saW5lU3RhY2tUb3A7CisgICAgICAgIHdoaWxlIChzdGFjay0+bV9pbmxp
bmVDYWxsRnJhbWUpCisgICAgICAgICAgICBzdGFjayA9IHN0YWNrLT5tX2NhbGxlcjsKKyAgICAg
ICAgcmV0dXJuIHN0YWNrLT5tX2FyZ3VtZW50UG9zaXRpb25zW2FyZ3VtZW50XTsKKyAgICB9Cisg
ICAgCisgICAgQXJndW1lbnRQb3NpdGlvbiogZmluZEFyZ3VtZW50UG9zaXRpb25Gb3JMb2NhbChp
bnQgb3BlcmFuZCkKKyAgICB7CisgICAgICAgIGZvciAoSW5saW5lU3RhY2tFbnRyeSogc3RhY2sg
PSBtX2lubGluZVN0YWNrVG9wOyA7IHN0YWNrID0gc3RhY2stPm1fY2FsbGVyKSB7CisgICAgICAg
ICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IHN0YWNrLT5tX2lubGluZUNh
bGxGcmFtZTsKKyAgICAgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lKQorICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKG9wZXJhbmQgPj0gaW5saW5lQ2FsbEZyYW1lLT5z
dGFja09mZnNldCAtIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSkKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChvcGVyYW5kID09IGlubGluZUNhbGxG
cmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihvcGVyYW5kKSA8IGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgLSBSZWdpc3RlckZp
bGU6OkNhbGxGcmFtZUhlYWRlclNpemUgLSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXpl
KCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpbnQgYXJndW1lbnQg
PSBvcGVyYW5kVG9Bcmd1bWVudChvcGVyYW5kIC0gaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNl
dCk7CisgICAgICAgICAgICByZXR1cm4gc3RhY2stPm1fYXJndW1lbnRQb3NpdGlvbnNbYXJndW1l
bnRdOworICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICAKKyAgICBBcmd1
bWVudFBvc2l0aW9uKiBmaW5kQXJndW1lbnRQb3NpdGlvbihpbnQgb3BlcmFuZCkKKyAgICB7Cisg
ICAgICAgIGlmIChvcGVyYW5kSXNBcmd1bWVudChvcGVyYW5kKSkKKyAgICAgICAgICAgIHJldHVy
biBmaW5kQXJndW1lbnRQb3NpdGlvbkZvckFyZ3VtZW50KG9wZXJhbmRUb0FyZ3VtZW50KG9wZXJh
bmQpKTsKKyAgICAgICAgcmV0dXJuIGZpbmRBcmd1bWVudFBvc2l0aW9uRm9yTG9jYWwob3BlcmFu
ZCk7CisgICAgfQorICAgIAorICAgIHZvaWQgZmx1c2goaW50IG9wZXJhbmQpCisgICAgeworICAg
ICAgICBmbHVzaERpcmVjdChtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQob3BlcmFuZCkp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGZsdXNoRGlyZWN0KGludCBvcGVyYW5kKQorICAgIHsK
KyAgICAgICAgZmx1c2hEaXJlY3Qob3BlcmFuZCwgZmluZEFyZ3VtZW50UG9zaXRpb24ob3BlcmFu
ZCkpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGZsdXNoRGlyZWN0KGludCBvcGVyYW5kLCBBcmd1
bWVudFBvc2l0aW9uKiBhcmd1bWVudFBvc2l0aW9uKQogICAgIHsKICAgICAgICAgLy8gRklYTUU6
IFRoaXMgc2hvdWxkIGNoZWNrIGlmIHRoZSBzYW1lIG9wZXJhbmQgaGFkIGFscmVhZHkgYmVlbiBm
bHVzaGVkIHRvCiAgICAgICAgIC8vIHNvbWUgb3RoZXIgbG9jYWwgdmFyaWFibGUuCiAgICAgICAg
IAotICAgICAgICBvcGVyYW5kID0gbV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKG9wZXJh
bmQpOwogICAgICAgICBib29sIGlzQ2FwdHVyZWQgPSBtX2NvZGVCbG9jay0+aXNDYXB0dXJlZCht
X2lubGluZVN0YWNrVG9wLT5tX2lubGluZUNhbGxGcmFtZSwgb3BlcmFuZCk7CiAgICAgICAgIAog
ICAgICAgICBBU1NFUlQob3BlcmFuZCA8IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KTsKQEAg
LTM5OCw3ICs0MjAsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRh
KiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBub2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgpOwogICAgICAg
ICAgICAgdmFyaWFibGVBY2Nlc3NEYXRhLT5tZXJnZUlzQ2FwdHVyZWQoaXNDYXB0dXJlZCk7CiAg
ICAgICAgICAgICBhZGRUb0dyYXBoKEZsdXNoLCBPcEluZm8odmFyaWFibGVBY2Nlc3NEYXRhKSwg
bm9kZUluZGV4KTsKLSAgICAgICAgICAgIHJldHVybiB2YXJpYWJsZUFjY2Vzc0RhdGE7CisgICAg
ICAgICAgICBpZiAoYXJndW1lbnRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICBhcmd1bWVudFBv
c2l0aW9uLT5hZGRWYXJpYWJsZSh2YXJpYWJsZUFjY2Vzc0RhdGEpOworICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZh
cmlhYmxlQWNjZXNzRGF0YSA9IG5ld1ZhcmlhYmxlQWNjZXNzRGF0YShvcGVyYW5kLCBpc0NhcHR1
cmVkKTsKQEAgLTQxMyw3ICs0MzcsMjEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fY3VycmVu
dEJsb2NrLT52YXJpYWJsZXNBdFRhaWwubG9jYWwoaW5kZXgpID0gbm9kZUluZGV4OwogICAgICAg
ICAgICAgbV9jdXJyZW50QmxvY2stPnZhcmlhYmxlc0F0SGVhZC5zZXRMb2NhbEZpcnN0VGltZShp
bmRleCwgbm9kZUluZGV4KTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gdmFyaWFibGVBY2Nl
c3NEYXRhOworICAgICAgICBpZiAoYXJndW1lbnRQb3NpdGlvbikKKyAgICAgICAgICAgIGFyZ3Vt
ZW50UG9zaXRpb24tPmFkZFZhcmlhYmxlKHZhcmlhYmxlQWNjZXNzRGF0YSk7CisgICAgfQorICAg
IAorICAgIHZvaWQgZmx1c2hBcmd1bWVudHNBbmRDYXB0dXJlZFZhcmlhYmxlcygpCisgICAgewor
ICAgICAgICBpbnQgbnVtQXJndW1lbnRzOworICAgICAgICBpZiAobV9pbmxpbmVTdGFja1RvcC0+
bV9pbmxpbmVDYWxsRnJhbWUpCisgICAgICAgICAgICBudW1Bcmd1bWVudHMgPSBtX2lubGluZVN0
YWNrVG9wLT5tX2lubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgbnVtQXJndW1lbnRzID0gbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxv
Y2stPm51bVBhcmFtZXRlcnMoKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IG51
bUFyZ3VtZW50czsgYXJndW1lbnQtLSA+IDE7KQorICAgICAgICAgICAgZmx1c2goYXJndW1lbnRU
b09wZXJhbmQoYXJndW1lbnQpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBsb2NhbCA9IG1faW5s
aW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5tX251bUNhcHR1cmVkVmFyczsgbG9jYWwtLTspCisg
ICAgICAgICAgICBmbHVzaChsb2NhbCk7CiAgICAgfQogCiAgICAgLy8gR2V0IGFuIG9wZXJhbmQs
IGFuZCBwZXJmb3JtIGEgVG9JbnQzMi9Ub051bWJlciBjb252ZXJzaW9uIG9uIGl0LgpAQCAtMTIx
OSwxNyArMTI1Nyw2IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKGJvb2wK
ICAgICAKICAgICAvLyBGSVhNRTogRG9uJ3QgZmx1c2ggY29uc3RhbnRzIQogICAgIAotICAgIFZl
Y3RvcjxWYXJpYWJsZUFjY2Vzc0RhdGEqLCA4PiBhcmd1bWVudHM7Ci0gICAgZm9yIChpbnQgaSA9
IDE7IGkgPCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsgKytpKSB7Ci0gICAgICAgIFZhcmlh
YmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0KLSAgICAgICAgICAgIGZsdXNoQXJn
dW1lbnQocmVnaXN0ZXJPZmZzZXQgKyBhcmd1bWVudFRvT3BlcmFuZChpKSk7Ci0gICAgICAgIGFy
Z3VtZW50cy5hcHBlbmQodmFyaWFibGVBY2Nlc3NEYXRhKTsKLSAgICAgICAgCi0gICAgICAgIC8v
IEFyZSB3ZSBnb2luZyB0byBiZSBjYXB0dXJpbmcgYXJndW1lbnRzPyBJZiBzbyBtYWtlIHN1cmUg
d2UgcmVjb3JkIHRoaXMgZmFjdC4KLSAgICAgICAgaWYgKGNvZGVCbG9jay0+YXJndW1lbnRJc0Nh
cHR1cmVkKGkpKQotICAgICAgICAgICAgdmFyaWFibGVBY2Nlc3NEYXRhLT5tZXJnZUlzQ2FwdHVy
ZWQodHJ1ZSk7Ci0gICAgfQotICAgIAogICAgIGludCBpbmxpbmVDYWxsRnJhbWVTdGFydCA9IG1f
aW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChyZWdpc3Rlck9mZnNldCkgLSBSZWdpc3RlckZp
bGU6OkNhbGxGcmFtZUhlYWRlclNpemU7CiAgICAgCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhl
IGFyZWEgdXNlZCBieSB0aGUgY2FsbCBmcmFtZSBpcyByZXNlcnZlZC4KQEAgLTEyNTEsMTMgKzEy
NzgsNiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhib29sCiAgICAgICAg
ICAgICB1c2VzUmVzdWx0ID8gcmVzdWx0T3BlcmFuZCA6IEludmFsaWRWaXJ0dWFsUmVnaXN0ZXIp
LAogICAgICAgICAoVmlydHVhbFJlZ2lzdGVyKWlubGluZUNhbGxGcmFtZVN0YXJ0LCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcywga2luZCk7CiAgICAgCi0gICAgLy8gTGluayB1cCB0aGUgYXJn
dW1lbnQgdmFyaWFibGUgYWNjZXNzIGRhdGFzIHRvIHRoZWlyIGFyZ3VtZW50IHBvc2l0aW9ucy4K
LSAgICBmb3IgKGludCBpID0gMTsgaSA8IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOyArK2kp
IHsKLSAgICAgICAgaWYgKHN0YXRpY19jYXN0PHNpemVfdD4oaSkgPj0gaW5saW5lU3RhY2tFbnRy
eS5tX2FyZ3VtZW50UG9zaXRpb25zLnNpemUoKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBpbmxpbmVTdGFja0VudHJ5Lm1fYXJndW1lbnRQb3NpdGlvbnNbaV0tPmFkZFZhcmlhYmxlKGFy
Z3VtZW50c1tpIC0gMV0pOwotICAgIH0KLSAgICAKICAgICAvLyBUaGlzIGlzIHdoZXJlIHRoZSBh
Y3R1YWwgaW5saW5pbmcgcmVhbGx5IGhhcHBlbnMuCiAgICAgdW5zaWduZWQgb2xkSW5kZXggPSBt
X2N1cnJlbnRJbmRleDsKICAgICB1bnNpZ25lZCBvbGRQcm9maWxpbmdJbmRleCA9IG1fY3VycmVu
dFByb2ZpbGluZ0luZGV4OwpAQCAtMTU3OCw3ICsxNTk4LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICBjYXNlIG9wX2VudGVyOgogICAgICAgICAg
ICAgLy8gSW5pdGlhbGl6ZSBhbGwgbG9jYWxzIHRvIHVuZGVmaW5lZC4KICAgICAgICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPm1fbnVtVmFy
czsgKytpKQotICAgICAgICAgICAgICAgIHNldChpLCBjb25zdGFudFVuZGVmaW5lZCgpKTsKKyAg
ICAgICAgICAgICAgICBzZXQoaSwgY29uc3RhbnRVbmRlZmluZWQoKSwgU2V0T25FbnRyeSk7CiAg
ICAgICAgICAgICBORVhUX09QQ09ERShvcF9lbnRlcik7CiAKICAgICAgICAgY2FzZSBvcF9jb252
ZXJ0X3RoaXM6IHsKQEAgLTIzNTIsNiArMjM3Miw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfcmV0OgorICAg
ICAgICAgICAgZmx1c2hBcmd1bWVudHNBbmRDYXB0dXJlZFZhcmlhYmxlcygpOwogICAgICAgICAg
ICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1faW5saW5lQ2FsbEZyYW1lKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fcmV0dXJuVmFsdWUgIT0gSW52YWxpZFZpcnR1
YWxSZWdpc3RlcikKICAgICAgICAgICAgICAgICAgICAgc2V0RGlyZWN0KG1faW5saW5lU3RhY2tU
b3AtPm1fcmV0dXJuVmFsdWUsIGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7
CkBAIC0yMzc5LDE1ICsyNDAwLDE4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQKICAgICAgICAgICAgIExBU1RfT1BDT0RFKG9wX3JldCk7CiAgICAgICAgICAgICAK
ICAgICAgICAgY2FzZSBvcF9lbmQ6CisgICAgICAgICAgICBmbHVzaEFyZ3VtZW50c0FuZENhcHR1
cmVkVmFyaWFibGVzKCk7CiAgICAgICAgICAgICBBU1NFUlQoIW1faW5saW5lU3RhY2tUb3AtPm1f
aW5saW5lQ2FsbEZyYW1lKTsKICAgICAgICAgICAgIGFkZFRvR3JhcGgoUmV0dXJuLCBnZXQoY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOwogICAgICAgICAgICAgTEFTVF9PUENPREUo
b3BfZW5kKTsKIAogICAgICAgICBjYXNlIG9wX3Rocm93OgorICAgICAgICAgICAgZmx1c2hBcmd1
bWVudHNBbmRDYXB0dXJlZFZhcmlhYmxlcygpOwogICAgICAgICAgICAgYWRkVG9HcmFwaChUaHJv
dywgZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsKICAgICAgICAgICAgIExB
U1RfT1BDT0RFKG9wX3Rocm93KTsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIG9wX3Rocm93
X3JlZmVyZW5jZV9lcnJvcjoKKyAgICAgICAgICAgIGZsdXNoQXJndW1lbnRzQW5kQ2FwdHVyZWRW
YXJpYWJsZXMoKTsKICAgICAgICAgICAgIGFkZFRvR3JhcGgoVGhyb3dSZWZlcmVuY2VFcnJvcik7
CiAgICAgICAgICAgICBMQVNUX09QQ09ERShvcF90aHJvd19yZWZlcmVuY2VfZXJyb3IpOwogICAg
ICAgICAgICAgCkBAIC0yODE4LDggKzI4NDIsOCBAQCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3Rh
Y2tFbnRyeTo6SW5saW5lCiAgICAgLCBtX2RpZEVhcmx5UmV0dXJuKGZhbHNlKQogICAgICwgbV9j
YWxsZXIoYnl0ZUNvZGVQYXJzZXItPm1faW5saW5lU3RhY2tUb3ApCiB7Ci0gICAgbV9hcmd1bWVu
dFBvc2l0aW9ucy5yZXNpemUoY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOwotICAgIGZvciAo
dW5zaWduZWQgaSA9IGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpOyBpLS07KSB7CisgICAgbV9h
cmd1bWVudFBvc2l0aW9ucy5yZXNpemUoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOworICAg
IGZvciAodW5zaWduZWQgaSA9IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOyBpLS07KSB7CiAg
ICAgICAgIGJ5dGVDb2RlUGFyc2VyLT5tX2dyYXBoLm1fYXJndW1lbnRQb3NpdGlvbnMuYXBwZW5k
KEFyZ3VtZW50UG9zaXRpb24oKSk7CiAgICAgICAgIEFyZ3VtZW50UG9zaXRpb24qIGFyZ3VtZW50
UG9zaXRpb24gPSAmYnl0ZUNvZGVQYXJzZXItPm1fZ3JhcGgubV9hcmd1bWVudFBvc2l0aW9ucy5s
YXN0KCk7CiAgICAgICAgIG1fYXJndW1lbnRQb3NpdGlvbnNbaV0gPSBhcmd1bWVudFBvc2l0aW9u
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHJldmlz
aW9uIDExODgwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEs
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC02MjAsNyArNjIwLDcgQEAgcHJpdmF0ZToKICAgICB9CiAgICAgCiAg
ICAgLy8gVGhpcyByZXR1cm5zIHRoZSBGbHVzaCBub2RlIHRoYXQgaXMga2VlcGluZyBhIFNldExv
Y2FsIGFsaXZlLgotICAgIE5vZGVJbmRleCBzZXRMb2NhbFN0b3JlRWxpbWluYXRpb24oVmlydHVh
bFJlZ2lzdGVyIGxvY2FsKQorICAgIE5vZGVJbmRleCBzZXRMb2NhbFN0b3JlRWxpbWluYXRpb24o
VmlydHVhbFJlZ2lzdGVyIGxvY2FsLCBOb2RlSW5kZXggZXhwZWN0ZWROb2RlSW5kZXgpCiAgICAg
ewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2luZGV4SW5CbG9jazsgaS0tOykgewogICAg
ICAgICAgICAgTm9kZUluZGV4IGluZGV4ID0gbV9jdXJyZW50QmxvY2stPmF0KGkpOwpAQCAtNjI5
LDcgKzYyOSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICBzd2l0Y2ggKG5vZGUub3AoKSkgewogICAgICAgICAgICAgY2FzZSBHZXRMb2NhbDoKLSAg
ICAgICAgICAgIGNhc2UgU2V0TG9jYWw6CisgICAgICAgICAgICBjYXNlIEZsdXNoOgogICAgICAg
ICAgICAgICAgIGlmIChub2RlLmxvY2FsKCkgPT0gbG9jYWwpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBOb05vZGU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC02MzksMTkgKzYzOSwx
MyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9Ob2RlOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSBGbHVz
aDogeworICAgICAgICAgICAgY2FzZSBTZXRMb2NhbDogewogICAgICAgICAgICAgICAgIGlmIChu
b2RlLmxvY2FsKCkgIT0gbG9jYWwpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgIGlmICghaSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgTm9kZUluZGV4IHByZXZJbmRleCA9IG1fY3VycmVudEJsb2NrLT5hdChpIC0gMSk7Ci0g
ICAgICAgICAgICAgICAgaWYgKHByZXZJbmRleCAhPSBub2RlLmNoaWxkMSgpLmluZGV4KCkpCi0g
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIEFTU0VSVChtX2dyYXBo
W3ByZXZJbmRleF0ubG9jYWwoKSA9PSBsb2NhbCk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG1f
Z3JhcGhbcHJldkluZGV4XS52YXJpYWJsZUFjY2Vzc0RhdGEoKSA9PSBub2RlLnZhcmlhYmxlQWNj
ZXNzRGF0YSgpKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQobV9ncmFwaFtwcmV2SW5kZXhdLnNo
b3VsZEdlbmVyYXRlKCkpOwotICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoW3ByZXZJbmRleF0u
cmVmQ291bnQoKSA+IDEpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIGlmIChpbmRleCAhPSBleHBlY3RlZE5vZGVJbmRleCkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIE5vTm9kZTsKKyAgICAgICAgICAgICAgICBpZiAobV9ncmFwaFtpbmRleF0ucmVmQ291
bnQoKSA+IDEpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb05vZGU7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGluZGV4OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIApAQCAt
NjYwLDYgKzY1NCwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9O
b2RlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgY2FzZSBUZWFyT2ZmQWN0aXZhdGlvbjoKKyAgICAgICAgICAgIGNhc2UgVGVhck9mZkFyZ3Vt
ZW50czoKKyAgICAgICAgICAgICAgICAvLyBJZiBhbiBhY3RpdmF0aW9uIGlzIGJlaW5nIHRvcm4g
b2ZmIHRoZW4gaXQgbWVhbnMgdGhhdCBjYXB0dXJlZCB2YXJpYWJsZXMKKyAgICAgICAgICAgICAg
ICAvLyBhcmUgbGl2ZS4gV2UgY291bGQgYmUgY2xldmVyIGhlcmUgYW5kIGNoZWNrIGlmIHRoZSBs
b2NhbCBxdWFsaWZpZXMgYXMgYW4KKyAgICAgICAgICAgICAgICAvLyBhcmd1bWVudCByZWdpc3Rl
ci4gQnV0IHRoYXQgc2VlbXMgbGlrZSBpdCB3b3VsZCBidXkgdXMgdmVyeSBsaXR0bGUgc2luY2UK
KyAgICAgICAgICAgICAgICAvLyBhbnkga2luZCBvZiB0ZWFyIG9mZnMgYXJlIHJhcmUgdG8gYmVn
aW4gd2l0aC4KKyAgICAgICAgICAgICAgICByZXR1cm4gTm9Ob2RlOworICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5jbG9i
YmVyc1dvcmxkKGluZGV4KSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vTm9kZTsKQEAg
LTg1NSwyNyArODU3LDI2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgU2V0TG9jYWw6IHsKKyAgICAgICAgY2FzZSBG
bHVzaDogewogICAgICAgICAgICAgaWYgKG1fZml4cG9pbnRTdGF0ZSA9PSBGaXhwb2ludE5vdENv
bnZlcmdlZCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIFZhcmlhYmxlQWNj
ZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKTsK
ICAgICAgICAgICAgIGlmICghdmFyaWFibGVBY2Nlc3NEYXRhLT5pc0NhcHR1cmVkKCkpCiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgbG9jYWwgPSB2
YXJpYWJsZUFjY2Vzc0RhdGEtPmxvY2FsKCk7Ci0gICAgICAgICAgICBOb2RlSW5kZXggcmVwbGFj
ZW1lbnRJbmRleCA9IHNldExvY2FsU3RvcmVFbGltaW5hdGlvbihsb2NhbCk7CisgICAgICAgICAg
ICBOb2RlSW5kZXggcmVwbGFjZW1lbnRJbmRleCA9IHNldExvY2FsU3RvcmVFbGltaW5hdGlvbihs
b2NhbCwgbm9kZS5jaGlsZDEoKS5pbmRleCgpKTsKICAgICAgICAgICAgIGlmIChyZXBsYWNlbWVu
dEluZGV4ID09IE5vTm9kZSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIE5v
ZGUmIHJlcGxhY2VtZW50ID0gbV9ncmFwaFtyZXBsYWNlbWVudEluZGV4XTsKLSAgICAgICAgICAg
IEFTU0VSVChyZXBsYWNlbWVudC5vcCgpID09IEZsdXNoKTsKKyAgICAgICAgICAgIEFTU0VSVChy
ZXBsYWNlbWVudC5vcCgpID09IFNldExvY2FsKTsKICAgICAgICAgICAgIEFTU0VSVChyZXBsYWNl
bWVudC5yZWZDb3VudCgpID09IDEpOwogICAgICAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50LnNo
b3VsZEdlbmVyYXRlKCkpOwotICAgICAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50Lm11c3RHZW5l
cmF0ZSgpKTsKLSAgICAgICAgICAgIHJlcGxhY2VtZW50LnNldE9wQW5kRGVmYXVsdEZsYWdzKFBo
YW50b20pOwotICAgICAgICAgICAgTm9kZUluZGV4IHNldExvY2FsSW5kZXggPSByZXBsYWNlbWVu
dC5jaGlsZDEoKS5pbmRleCgpOwotICAgICAgICAgICAgQVNTRVJUKG1fZ3JhcGhbc2V0TG9jYWxJ
bmRleF0ub3AoKSA9PSBTZXRMb2NhbCk7Ci0gICAgICAgICAgICBtX2dyYXBoLmNsZWFyQW5kRGVy
ZWZDaGlsZDEocmVwbGFjZW1lbnQpOwotICAgICAgICAgICAgcmVwbGFjZW1lbnQuY2hpbGRyZW4u
Y2hpbGQxKCkgPSBtX2dyYXBoW3NldExvY2FsSW5kZXhdLmNoaWxkMSgpOwotICAgICAgICAgICAg
bV9ncmFwaC5yZWYocmVwbGFjZW1lbnQuY2hpbGQxKCkpOworICAgICAgICAgICAgbm9kZS5zZXRP
cEFuZERlZmF1bHRGbGFncyhQaGFudG9tKTsKKyAgICAgICAgICAgIE5vZGVJbmRleCBkYXRhTm9k
ZUluZGV4ID0gcmVwbGFjZW1lbnQuY2hpbGQxKCkuaW5kZXgoKTsKKyAgICAgICAgICAgIEFTU0VS
VChtX2dyYXBoW2RhdGFOb2RlSW5kZXhdLmhhc1Jlc3VsdCgpKTsKKyAgICAgICAgICAgIG1fZ3Jh
cGguY2xlYXJBbmREZXJlZkNoaWxkMShub2RlKTsKKyAgICAgICAgICAgIG5vZGUuY2hpbGRyZW4u
Y2hpbGQxKCkgPSBFZGdlKGRhdGFOb2RlSW5kZXgpOworICAgICAgICAgICAgbV9ncmFwaC5yZWYo
ZGF0YU5vZGVJbmRleCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAg
ICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcAkocmV2aXNpb24gMTE4ODA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMDAsMjAgKzEwMDAsMTgg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShCYXNpY0Jsb2NrJgogICAgIEFTU0VSVCht
X3ZhcmlhYmxlcy5zaXplKCkgPT0gYmxvY2sudmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxz
KCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV92YXJpYWJsZXMuc2l6ZSgpOyArK2kp
IHsKICAgICAgICAgTm9kZUluZGV4IG5vZGVJbmRleCA9IGJsb2NrLnZhcmlhYmxlc0F0SGVhZC5s
b2NhbChpKTsKLSAgICAgICAgLy8gRklYTUU6IFVzZSB0aGUgdmFyaWFibGUgYWNjZXNzIGRhdGEs
IG5vdCB0aGUgZmlyc3Qgbm9kZSBpbiB0aGUgYmxvY2suCi0gICAgICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzIwNQotICAgICAgICBpZiAobV9qaXQuY29k
ZUJsb2NrKCktPmxvY2FsSXNDYXB0dXJlZChhdChibG9ja1swXSkuY29kZU9yaWdpbi5pbmxpbmVD
YWxsRnJhbWUsIGkpKQotICAgICAgICAgICAgbV92YXJpYWJsZXNbaV0gPSBWYWx1ZVNvdXJjZShW
YWx1ZUluUmVnaXN0ZXJGaWxlKTsKLSAgICAgICAgZWxzZSBpZiAobm9kZUluZGV4ID09IE5vTm9k
ZSkKKyAgICAgICAgaWYgKG5vZGVJbmRleCA9PSBOb05vZGUpCiAgICAgICAgICAgICBtX3Zhcmlh
Ymxlc1tpXSA9IFZhbHVlU291cmNlKFNvdXJjZUlzRGVhZCk7CiAgICAgICAgIGVsc2UgaWYgKGF0
KG5vZGVJbmRleCkudmFyaWFibGVBY2Nlc3NEYXRhKCktPmlzQXJndW1lbnRzQWxpYXMoKSkKICAg
ICAgICAgICAgIG1fdmFyaWFibGVzW2ldID0gVmFsdWVTb3VyY2UoQXJndW1lbnRzU291cmNlKTsK
KyAgICAgICAgZWxzZSBpZiAoYXQobm9kZUluZGV4KS52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+aXND
YXB0dXJlZCgpKQorICAgICAgICAgICAgbV92YXJpYWJsZXNbaV0gPSBWYWx1ZVNvdXJjZShWYWx1
ZUluUmVnaXN0ZXJGaWxlKTsKICAgICAgICAgZWxzZSBpZiAoIWF0KG5vZGVJbmRleCkucmVmQ291
bnQoKSkKICAgICAgICAgICAgIG1fdmFyaWFibGVzW2ldID0gVmFsdWVTb3VyY2UoU291cmNlSXNE
ZWFkKTsKICAgICAgICAgZWxzZSBpZiAoYXQobm9kZUluZGV4KS52YXJpYWJsZUFjY2Vzc0RhdGEo
KS0+c2hvdWxkVXNlRG91YmxlRm9ybWF0KCkpCiAgICAgICAgICAgICBtX3ZhcmlhYmxlc1tpXSA9
IFZhbHVlU291cmNlKERvdWJsZUluUmVnaXN0ZXJGaWxlKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgbV92YXJpYWJsZXNbaV0gPSBWYWx1ZVNvdXJjZTo6Zm9yUHJlZGljdGlvbihhdChub2Rl
SW5kZXgpLnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0aW9uKCkpOworICAgICAgICAgICAg
bV92YXJpYWJsZXNbaV0gPSBWYWx1ZVNvdXJjZTo6Zm9yUHJlZGljdGlvbihhdChub2RlSW5kZXgp
LnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5hcmd1bWVudEF3YXJlUHJlZGljdGlvbigpKTsKICAgICB9
CiAgICAgCiAgICAgbV9sYXN0U2V0T3BlcmFuZCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6
bWF4KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCShyZXZpc2lvbiAxMTg4MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTIxOTEsMjIgKzIxOTEsMjMgQEAg
cHVibGljOgogICAgICAgICB1bnNpZ25lZCBzZXRMb2NhbEluZGV4SW5CbG9jayA9IG1faW5kZXhJ
bkJsb2NrICsgMTsKICAgICAgICAgCiAgICAgICAgIE5vZGUqIHNldExvY2FsID0gJmF0KG1faml0
LmdyYXBoKCkubV9ibG9ja3NbbV9ibG9ja10tPmF0KHNldExvY2FsSW5kZXhJbkJsb2NrKSk7Cisg
ICAgICAgIGJvb2wgaGFkSW50MzJUb0RvdWJsZSA9IGZhbHNlOwogICAgICAgICAKICAgICAgICAg
aWYgKHNldExvY2FsLT5vcCgpID09IEludDMyVG9Eb3VibGUpIHsKICAgICAgICAgICAgIHNldExv
Y2FsID0gJmF0KG1faml0LmdyYXBoKCkubV9ibG9ja3NbbV9ibG9ja10tPmF0KCsrc2V0TG9jYWxJ
bmRleEluQmxvY2spKTsKKyAgICAgICAgICAgIGhhZEludDMyVG9Eb3VibGUgPSB0cnVlOworICAg
ICAgICB9CisgICAgICAgIGlmIChzZXRMb2NhbC0+b3AoKSA9PSBGbHVzaCkKKyAgICAgICAgICAg
IHNldExvY2FsID0gJmF0KG1faml0LmdyYXBoKCkubV9ibG9ja3NbbV9ibG9ja10tPmF0KCsrc2V0
TG9jYWxJbmRleEluQmxvY2spKTsKKyAgICAgICAgCisgICAgICAgIGlmIChoYWRJbnQzMlRvRG91
YmxlKQogICAgICAgICAgICAgQVNTRVJUKGF0KHNldExvY2FsLT5jaGlsZDEoKSkuY2hpbGQxKCkg
PT0gbV9jb21waWxlSW5kZXgpOwotICAgICAgICB9IGVsc2UKKyAgICAgICAgZWxzZQogICAgICAg
ICAgICAgQVNTRVJUKHNldExvY2FsLT5jaGlsZDEoKSA9PSBtX2NvbXBpbGVJbmRleCk7Ci0gICAg
ICAgIAogICAgICAgICBBU1NFUlQoc2V0TG9jYWwtPm9wKCkgPT0gU2V0TG9jYWwpOwogICAgICAg
ICBBU1NFUlQoc2V0TG9jYWwtPmNvZGVPcmlnaW4gPT0gYXQobV9jb21waWxlSW5kZXgpLmNvZGVP
cmlnaW4pOwogCiAgICAgICAgIE5vZGUqIG5leHROb2RlID0gJmF0KG1faml0LmdyYXBoKCkubV9i
bG9ja3NbbV9ibG9ja10tPmF0KHNldExvY2FsSW5kZXhJbkJsb2NrICsgMSkpOwotICAgICAgICBp
ZiAobmV4dE5vZGUtPmNvZGVPcmlnaW4gPT0gYXQobV9jb21waWxlSW5kZXgpLmNvZGVPcmlnaW4p
IHsKLSAgICAgICAgICAgIEFTU0VSVChuZXh0Tm9kZS0+b3AoKSA9PSBGbHVzaCk7Ci0gICAgICAg
ICAgICBuZXh0Tm9kZSA9ICZhdChtX2ppdC5ncmFwaCgpLm1fYmxvY2tzW21fYmxvY2tdLT5hdChz
ZXRMb2NhbEluZGV4SW5CbG9jayArIDIpKTsKLSAgICAgICAgICAgIEFTU0VSVChuZXh0Tm9kZS0+
Y29kZU9yaWdpbiAhPSBhdChtX2NvbXBpbGVJbmRleCkuY29kZU9yaWdpbik7IC8vIGR1cGxpY2F0
ZSB0aGUgc2FtZSBhc3NlcnRpb24gYXMgYmVsb3cgc28gdGhhdCBpZiB3ZSBmYWlsLCB3ZSdsbCBr
bm93IHdlIGNhbWUgZG93biB0aGlzIHBhdGguCi0gICAgICAgIH0KICAgICAgICAgQVNTRVJUKG5l
eHROb2RlLT5jb2RlT3JpZ2luICE9IGF0KG1fY29tcGlsZUluZGV4KS5jb2RlT3JpZ2luKTsKICAg
ICAgICAgCiAgICAgICAgIE9TUkV4aXQmIGV4aXQgPSBtX2ppdC5jb2RlQmxvY2soKS0+bGFzdE9T
UkV4aXQoKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDExODg1MCkKKysrIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA1LTI5ICBGaWxpcCBQ
aXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgREZHIHNob3VsZCBrZWVwIGNhcHR1
cmVkIHZhcmlhYmxlcyBhbGl2ZSB1bnRpbCB0aGUgKGlubGluZSkgcmV0dXJuLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODcyMDUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvanMvZGZnLWlubGlu
ZS1hcmd1bWVudHMtb3NyLWV4aXQtYW5kLWNhcHR1cmUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2pzL2RmZy1pbmxpbmUtYXJndW1lbnRzLW9zci1leGl0LWFuZC1jYXB0dXJl
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvc2NyaXB0LXRlc3RzL2RmZy1pbmxpbmUt
YXJndW1lbnRzLW9zci1leGl0LWFuZC1jYXB0dXJlLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6
CisgICAgICAgIChiYXIpOgorICAgICAgICAoYmF6KToKKwogMjAxMi0wNS0yOSAgSmVzc2llIEJl
cmxpbiAgPGpiZXJsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIDxwcm9ncmVzcz4gZWxlbWVudCBp
cyB1bnN1cHBvcnRlZCBvbiBXaW5kb3dzCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2RmZy1p
bmxpbmUtYXJndW1lbnRzLW9zci1leGl0LWFuZC1jYXB0dXJlLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2RmZy1pbmxpbmUtYXJndW1lbnRzLW9zci1leGl0
LWFuZC1jYXB0dXJlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvanMvZGZnLWlubGluZS1hcmd1bWVudHMtb3NyLWV4aXQtYW5kLWNhcHR1cmUtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMwOSBAQAorVGVzdHMgd2hhdCBoYXBwZW5zIGlm
IHlvdSBPU1IgZXhpdCB3aXRoaW4gaW5saW5lZCBjb2RlIHRoYXQgaGFzIGludGVyZXN0aW5nIGNv
bnRyb2wgZmxvdyB3aXRoIGFyZ3VtZW50cyB0aGF0IGFyZSBzcGVjaWFsbHkgZm9ybWF0dGVkIGFu
ZCB5b3UgY2FwdHVyZSB0aGUgYXJndW1lbnRzIHJlZmxlY3RpdmVseSBhZnRlciB0aGUgT1NSIGV4
aXQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGJheihhcmcxLCBhcmcy
KSBpcyA0MworUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgNDUKK1BBU1MgYmF6KGFyZzEsIGFyZzIp
IGlzIDQ3CitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyA0OQorUEFTUyBiYXooYXJnMSwgYXJnMikg
aXMgNTEKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDUzCitQQVNTIGJheihhcmcxLCBhcmcyKSBp
cyA1NQorUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgNTcKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlz
IDU5CitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyA2MQorUEFTUyBiYXooYXJnMSwgYXJnMikgaXMg
NjMKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDY1CitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyA2
NworUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgNjkKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDcx
CitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyA3MworUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgNzUK
K1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDc3CitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyA3OQor
UEFTUyBiYXooYXJnMSwgYXJnMikgaXMgODEKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDgzCitQ
QVNTIGJheihhcmcxLCBhcmcyKSBpcyA4NQorUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgODcKK1BB
U1MgYmF6KGFyZzEsIGFyZzIpIGlzIDg5CitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyA5MQorUEFT
UyBiYXooYXJnMSwgYXJnMikgaXMgOTMKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDk1CitQQVNT
IGJheihhcmcxLCBhcmcyKSBpcyA5NworUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgOTkKK1BBU1Mg
YmF6KGFyZzEsIGFyZzIpIGlzIDEwMQorUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgMTAzCitQQVNT
IGJheihhcmcxLCBhcmcyKSBpcyAxMDUKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDEwNworUEFT
UyBiYXooYXJnMSwgYXJnMikgaXMgMTA5CitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyAxMTEKK1BB
U1MgYmF6KGFyZzEsIGFyZzIpIGlzIDExMworUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgMTE1CitQ
QVNTIGJheihhcmcxLCBhcmcyKSBpcyAxMTcKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDExOQor
UEFTUyBiYXooYXJnMSwgYXJnMikgaXMgMTIxCitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyAxMjMK
K1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDEyNQorUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgMTI3
CitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyAxMjkKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDEz
MQorUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgMTMzCitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyAx
MzUKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDEzNworUEFTUyBiYXooYXJnMSwgYXJnMikgaXMg
MTM5CitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyAxNDEKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlz
IDE0MworUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgMTQ1CitQQVNTIGJheihhcmcxLCBhcmcyKSBp
cyAxNDcKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDE0OQorUEFTUyBiYXooYXJnMSwgYXJnMikg
aXMgMTUxCitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyAxNTMKK1BBU1MgYmF6KGFyZzEsIGFyZzIp
IGlzIDE1NQorUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgMTU3CitQQVNTIGJheihhcmcxLCBhcmcy
KSBpcyAxNTkKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDE2MQorUEFTUyBiYXooYXJnMSwgYXJn
MikgaXMgMTYzCitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyAxNjUKK1BBU1MgYmF6KGFyZzEsIGFy
ZzIpIGlzIDE2NworUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgMTY5CitQQVNTIGJheihhcmcxLCBh
cmcyKSBpcyAxNzEKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDE3MworUEFTUyBiYXooYXJnMSwg
YXJnMikgaXMgMTc1CitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyAxNzcKK1BBU1MgYmF6KGFyZzEs
IGFyZzIpIGlzIDE3OQorUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgMTgxCitQQVNTIGJheihhcmcx
LCBhcmcyKSBpcyAxODMKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDE4NQorUEFTUyBiYXooYXJn
MSwgYXJnMikgaXMgMTg3CitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyAxODkKK1BBU1MgYmF6KGFy
ZzEsIGFyZzIpIGlzIDE5MQorUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgMTkzCitQQVNTIGJheihh
cmcxLCBhcmcyKSBpcyAxOTUKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDE5NworUEFTUyBiYXoo
YXJnMSwgYXJnMikgaXMgMTk5CitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyAyMDEKK1BBU1MgYmF6
KGFyZzEsIGFyZzIpIGlzIDIwMworUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgMjA1CitQQVNTIGJh
eihhcmcxLCBhcmcyKSBpcyAyMDcKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDIwOQorUEFTUyBi
YXooYXJnMSwgYXJnMikgaXMgMjExCitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyAyMTMKK1BBU1Mg
YmF6KGFyZzEsIGFyZzIpIGlzIDIxNQorUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgMjE3CitQQVNT
IGJheihhcmcxLCBhcmcyKSBpcyAyMTkKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDIyMQorUEFT
UyBiYXooYXJnMSwgYXJnMikgaXMgMjIzCitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyAyMjUKK1BB
U1MgYmF6KGFyZzEsIGFyZzIpIGlzIDIyNworUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgMjI5CitQ
QVNTIGJheihhcmcxLCBhcmcyKSBpcyAyMzEKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDIzMwor
UEFTUyBiYXooYXJnMSwgYXJnMikgaXMgMjM1CitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyAyMzcK
K1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDIzOQorUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgMjQx
CitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyAyNDMKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDI0
NQorUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgMjQ3CitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyAy
NDkKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDI1MQorUEFTUyBiYXooYXJnMSwgYXJnMikgaXMg
MjUzCitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyAyNTUKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlz
IDI1NworUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgMjU5CitQQVNTIGJheihhcmcxLCBhcmcyKSBp
cyAyNjEKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDI2MworUEFTUyBiYXooYXJnMSwgYXJnMikg
aXMgMjY1CitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyAyNjcKK1BBU1MgYmF6KGFyZzEsIGFyZzIp
IGlzIDI2OQorUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgMjcxCitQQVNTIGJheihhcmcxLCBhcmcy
KSBpcyAyNzMKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDI3NQorUEFTUyBiYXooYXJnMSwgYXJn
MikgaXMgMjc3CitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyAyNzkKK1BBU1MgYmF6KGFyZzEsIGFy
ZzIpIGlzIDI4MQorUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgMjgzCitQQVNTIGJheihhcmcxLCBh
cmcyKSBpcyAyODUKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDI4NworUEFTUyBiYXooYXJnMSwg
YXJnMikgaXMgMjg5CitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyAyOTEKK1BBU1MgYmF6KGFyZzEs
IGFyZzIpIGlzIDI5MworUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgMjk1CitQQVNTIGJheihhcmcx
LCBhcmcyKSBpcyAyOTcKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDI5OQorUEFTUyBiYXooYXJn
MSwgYXJnMikgaXMgMzAxCitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyAzMDMKK1BBU1MgYmF6KGFy
ZzEsIGFyZzIpIGlzIDMwNQorUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgMzA3CitQQVNTIGJheihh
cmcxLCBhcmcyKSBpcyAzMDkKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDMxMQorUEFTUyBiYXoo
YXJnMSwgYXJnMikgaXMgMzEzCitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyAzMTUKK1BBU1MgYmF6
KGFyZzEsIGFyZzIpIGlzIDMxNworUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgMzE5CitQQVNTIGJh
eihhcmcxLCBhcmcyKSBpcyAzMjEKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDMyMworUEFTUyBi
YXooYXJnMSwgYXJnMikgaXMgMzI1CitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyAzMjcKK1BBU1Mg
YmF6KGFyZzEsIGFyZzIpIGlzIDMyOQorUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgMzMxCitQQVNT
IGJheihhcmcxLCBhcmcyKSBpcyAzMzMKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDMzNQorUEFT
UyBiYXooYXJnMSwgYXJnMikgaXMgMzM3CitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyAzMzkKK1BB
U1MgYmF6KGFyZzEsIGFyZzIpIGlzIDM0MQorUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgMzQzCitQ
QVNTIGJheihhcmcxLCBhcmcyKSBpcyAzNDUKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDM0Nwor
UEFTUyBiYXooYXJnMSwgYXJnMikgaXMgMzQ5CitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyAzNTEK
K1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDM1MworUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgMzU1
CitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyAzNTcKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDM1
OQorUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgMzYxCitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyAz
NjMKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDM2NQorUEFTUyBiYXooYXJnMSwgYXJnMikgaXMg
MzY3CitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyAzNjkKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlz
IDM3MQorUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgMzczCitQQVNTIGJheihhcmcxLCBhcmcyKSBp
cyAzNzUKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDM3NworUEFTUyBiYXooYXJnMSwgYXJnMikg
aXMgMzc5CitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyAzODEKK1BBU1MgYmF6KGFyZzEsIGFyZzIp
IGlzIDM4MworUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgMzg1CitQQVNTIGJheihhcmcxLCBhcmcy
KSBpcyAzODcKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDM4OQorUEFTUyBiYXooYXJnMSwgYXJn
MikgaXMgMzkxCitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyAzOTMKK1BBU1MgYmF6KGFyZzEsIGFy
ZzIpIGlzIDM5NQorUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgMzk3CitQQVNTIGJheihhcmcxLCBh
cmcyKSBpcyAzOTkKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDQwMQorUEFTUyBiYXooYXJnMSwg
YXJnMikgaXMgNDAzCitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyA0MDUKK1BBU1MgYmF6KGFyZzEs
IGFyZzIpIGlzIDQwNworUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgNDA5CitQQVNTIGJheihhcmcx
LCBhcmcyKSBpcyA0MTEKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDQxMworUEFTUyBiYXooYXJn
MSwgYXJnMikgaXMgNDE1CitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyA0MTcKK1BBU1MgYmF6KGFy
ZzEsIGFyZzIpIGlzIDQxOQorUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgNDIxCitQQVNTIGJheihh
cmcxLCBhcmcyKSBpcyA0MjMKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDQyNQorUEFTUyBiYXoo
YXJnMSwgYXJnMikgaXMgNDI3CitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyA0MjkKK1BBU1MgYmF6
KGFyZzEsIGFyZzIpIGlzIDQzMQorUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgNDMzCitQQVNTIGJh
eihhcmcxLCBhcmcyKSBpcyA0MzUKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDQzNworUEFTUyBi
YXooYXJnMSwgYXJnMikgaXMgNDM5CitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyA0NDEKK1BBU1Mg
YmF6KGFyZzEsIGFyZzIpIGlzIDQ0MworUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgNDQ1CitQQVNT
IGJheihhcmcxLCBhcmcyKSBpcyA0NDcKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDQ0OQorUEFT
UyBiYXooYXJnMSwgYXJnMikgaXMgNDUxCitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyA0NTMKK1BB
U1MgYmF6KGFyZzEsIGFyZzIpIGlzIDQ1NQorUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgNDU3CitQ
QVNTIGJheihhcmcxLCBhcmcyKSBpcyA0NTkKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDQ2MQor
UEFTUyBiYXooYXJnMSwgYXJnMikgaXMgNDYzCitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyA0NjUK
K1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDQ2NworUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgNDY5
CitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyA0NzEKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDQ3
MworUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgNDc1CitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyA0
NzcKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDQ3OQorUEFTUyBiYXooYXJnMSwgYXJnMikgaXMg
NDgxCitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyA0ODMKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlz
IDQ4NQorUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgNDg3CitQQVNTIGJheihhcmcxLCBhcmcyKSBp
cyA0ODkKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDQ5MQorUEFTUyBiYXooYXJnMSwgYXJnMikg
aXMgNDkzCitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyA0OTUKK1BBU1MgYmF6KGFyZzEsIGFyZzIp
IGlzIDQ5NworUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgNDk5CitQQVNTIGJheihhcmcxLCBhcmcy
KSBpcyA1MDEKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDUwMworUEFTUyBiYXooYXJnMSwgYXJn
MikgaXMgNTA1CitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyA1MDcKK1BBU1MgYmF6KGFyZzEsIGFy
ZzIpIGlzIDUwOQorUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgNTExCitQQVNTIGJheihhcmcxLCBh
cmcyKSBpcyA1MTMKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDUxNQorUEFTUyBiYXooYXJnMSwg
YXJnMikgaXMgNTE3CitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyA1MTkKK1BBU1MgYmF6KGFyZzEs
IGFyZzIpIGlzIDUyMQorUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgNTIzCitQQVNTIGJheihhcmcx
LCBhcmcyKSBpcyA1MjUKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDUyNworUEFTUyBiYXooYXJn
MSwgYXJnMikgaXMgNTI5CitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyA1MzEKK1BBU1MgYmF6KGFy
ZzEsIGFyZzIpIGlzIDUzMworUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgNTM1CitQQVNTIGJheihh
cmcxLCBhcmcyKSBpcyA1MzcKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDUzOQorUEFTUyBiYXoo
YXJnMSwgYXJnMikgaXMgNTQxCitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyAyOTMuNQorUEFTUyBi
YXooYXJnMSwgYXJnMikgaXMgMjk0LjUKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDI5NS41CitQ
QVNTIGJheihhcmcxLCBhcmcyKSBpcyAyOTYuNQorUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgMjk3
LjUKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDI5OC41CitQQVNTIGJheihhcmcxLCBhcmcyKSBp
cyAyOTkuNQorUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgMzAwLjUKK1BBU1MgYmF6KGFyZzEsIGFy
ZzIpIGlzIDMwMS41CitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyAzMDIuNQorUEFTUyBiYXooYXJn
MSwgYXJnMikgaXMgMzAzLjUKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDMwNC41CitQQVNTIGJh
eihhcmcxLCBhcmcyKSBpcyAzMDUuNQorUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgMzA2LjUKK1BB
U1MgYmF6KGFyZzEsIGFyZzIpIGlzIDMwNy41CitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyAzMDgu
NQorUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgMzA5LjUKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlz
IDMxMC41CitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyAzMTEuNQorUEFTUyBiYXooYXJnMSwgYXJn
MikgaXMgMzEyLjUKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDMxMy41CitQQVNTIGJheihhcmcx
LCBhcmcyKSBpcyAzMTQuNQorUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgMzE1LjUKK1BBU1MgYmF6
KGFyZzEsIGFyZzIpIGlzIDMxNi41CitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyAzMTcuNQorUEFT
UyBiYXooYXJnMSwgYXJnMikgaXMgMzE4LjUKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDMxOS41
CitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyAzMjAuNQorUEFTUyBiYXooYXJnMSwgYXJnMikgaXMg
MzIxLjUKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDMyMi41CitQQVNTIGJheihhcmcxLCBhcmcy
KSBpcyAzMjMuNQorUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgMzI0LjUKK1BBU1MgYmF6KGFyZzEs
IGFyZzIpIGlzIDMyNS41CitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyAzMjYuNQorUEFTUyBiYXoo
YXJnMSwgYXJnMikgaXMgMzI3LjUKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDMyOC41CitQQVNT
IGJheihhcmcxLCBhcmcyKSBpcyAzMjkuNQorUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgMzMwLjUK
K1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDMzMS41CitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyAz
MzIuNQorUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgMzMzLjUKK1BBU1MgYmF6KGFyZzEsIGFyZzIp
IGlzIDMzNC41CitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyAzMzUuNQorUEFTUyBiYXooYXJnMSwg
YXJnMikgaXMgMzM2LjUKK1BBU1MgYmF6KGFyZzEsIGFyZzIpIGlzIDMzNy41CitQQVNTIGJheihh
cmcxLCBhcmcyKSBpcyAzMzguNQorUEFTUyBiYXooYXJnMSwgYXJnMikgaXMgMzM5LjUKK1BBU1Mg
YmF6KGFyZzEsIGFyZzIpIGlzIDM0MC41CitQQVNTIGJheihhcmcxLCBhcmcyKSBpcyAzNDEuNQor
UEFTUyBiYXooYXJnMSwgYXJnMikgaXMgMzQyLjUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2RmZy1p
bmxpbmUtYXJndW1lbnRzLW9zci1leGl0LWFuZC1jYXB0dXJlLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9qcy9kZmctaW5saW5lLWFyZ3VtZW50cy1vc3ItZXhpdC1hbmQtY2Fw
dHVyZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9kZmctaW5saW5l
LWFyZ3VtZW50cy1vc3ItZXhpdC1hbmQtY2FwdHVyZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvZGZn
LWlubGluZS1hcmd1bWVudHMtb3NyLWV4aXQtYW5kLWNhcHR1cmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvZGZnLWlubGlu
ZS1hcmd1bWVudHMtb3NyLWV4aXQtYW5kLWNhcHR1cmUuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvZGZnLWlubGluZS1hcmd1bWVudHMtb3NyLWV4aXQt
YW5kLWNhcHR1cmUuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3Njcmlw
dC10ZXN0cy9kZmctaW5saW5lLWFyZ3VtZW50cy1vc3ItZXhpdC1hbmQtY2FwdHVyZS5qcwkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwzMyBAQAorZGVzY3JpcHRpb24oCisiVGVzdHMgd2hhdCBoYXBw
ZW5zIGlmIHlvdSBPU1IgZXhpdCB3aXRoaW4gaW5saW5lZCBjb2RlIHRoYXQgaGFzIGludGVyZXN0
aW5nIGNvbnRyb2wgZmxvdyB3aXRoIGFyZ3VtZW50cyB0aGF0IGFyZSBzcGVjaWFsbHkgZm9ybWF0
dGVkIGFuZCB5b3UgY2FwdHVyZSB0aGUgYXJndW1lbnRzIHJlZmxlY3RpdmVseSBhZnRlciB0aGUg
T1NSIGV4aXQuIgorKTsKKworZnVuY3Rpb24gZm9vKCkgeworICAgIHJldHVybiBiYXIuYXJndW1l
bnRzWzBdOworfQorCitmdW5jdGlvbiBiYXIoeCwgeSkgeworICAgIGlmICh4ICsgNSA+IDQpCisg
ICAgICAgIHJldHVybiB5LmYgKyA0MiArIGZvbygpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJu
IHkuZiArIDQzICsgZm9vKCk7Cit9CisKK2Z1bmN0aW9uIGJheih4LCB5KSB7CisgICAgcmV0dXJu
IGJhcih4LCB5KTsKK30KKworZm9yICh2YXIgaSA9IDA7IGkgPCAzMDA7ICsraSkgeworICAgIHZh
ciBleHBlY3RlZDsKKyAgICB2YXIgYXJnMSA9IGk7CisgICAgdmFyIGFyZzI7CisgICAgaWYgKGkg
PCAyNTApIHsKKyAgICAgICAgYXJnMiA9IHtmOmkgKyAxfTsKKyAgICAgICAgZXhwZWN0ZWQgPSBp
ICsgMSArIDQyICsgaTsKKyAgICB9IGVsc2UgeworICAgICAgICBhcmcyID0ge2Y6MS41fTsKKyAg
ICAgICAgZXhwZWN0ZWQgPSAxLjUgKyA0MiArIGk7CisgICAgfQorICAgIHNob3VsZEJlKCJiYXoo
YXJnMSwgYXJnMikiLCAiIiArIGV4cGVjdGVkKTsKK30KKwo=
</data>
<flag name="review"
          id="151532"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>