<?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>184193</bug_id>
          
          <creation_ts>2018-03-30 14:17:06 -0700</creation_ts>
          <short_desc>Strings and Vectors shouldn&apos;t do index masking</short_desc>
          <delta_ts>2018-03-31 08:56:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1410733</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-03-30 14:17:06 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410737</commentid>
    <comment_count>1</comment_count>
      <attachid>336888</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-03-30 14:44:38 -0700</bug_when>
    <thetext>Created attachment 336888
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410738</commentid>
    <comment_count>2</comment_count>
      <attachid>336888</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-03-30 14:46:23 -0700</bug_when>
    <thetext>Comment on attachment 336888
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410746</commentid>
    <comment_count>3</comment_count>
      <attachid>336890</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-03-30 15:11:51 -0700</bug_when>
    <thetext>Created attachment 336890
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410854</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-03-31 08:55:54 -0700</bug_when>
    <thetext>Landed in https://trac.webkit.org/changeset/230130/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410855</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-03-31 08:56:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/39072473&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336888</attachid>
            <date>2018-03-30 14:44:38 -0700</date>
            <delta_ts>2018-03-30 15:11:51 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>22543</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjMwMTE3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDE4LTAzLTMwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
U3RyaW5ncyBhbmQgVmVjdG9ycyBzaG91bGRuJ3QgZG8gaW5kZXggbWFza2luZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0MTkzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0
Q2hhckNvZGVBdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVH
ZXRCeVZhbE9uU3RyaW5nKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5oOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlU3RyaW5nQ2hhckF0KToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVN0cmluZ0NoYXJDb2RlQXQpOgorICAg
ICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjpzdHJpbmdDaGFy
TG9hZCk6CisKIDIwMTgtMDMtMzAgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBCeXRlY29kZSBnZW5lcmF0b3Igc2hvdWxkIG5vdCBnZXRfZnJvbV9zY29wZSBzb21l
dGhpbmcgdGhhdCBtYXkgYmUgYSBob2xlIGludG8gYSB2YXJpYWJsZSB0aGF0IGlzIGFscmVhZHkg
bGl2ZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAJKHJldmlzaW9uIDIzMDExNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTEwLDcgKzIxMTAsNiBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0Q2hhckNvZGVBCiAgICAgR1BSUmVnIHNj
cmF0Y2hSZWcgPSBzY3JhdGNoLmdwcigpOwogCiAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhzdHJpbmdSZWcsIEpTU3RyaW5nOjpvZmZzZXRPZlZhbHVlKCkpLCBzY3Jh
dGNoUmVnKTsKLSAgICBtX2ppdC5hbmQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNo
UmVnLCBTdHJpbmdJbXBsOjptYXNrT2Zmc2V0KCkpLCBpbmRleFJlZyk7CiAKICAgICAvLyBMb2Fk
IHRoZSBjaGFyYWN0ZXIgaW50byBzY3JhdGNoUmVnCiAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXMx
NkJpdCA9IG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVybywgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Moc2NyYXRjaFJlZywgU3RyaW5nSW1wbDo6ZmxhZ3NPZmZzZXQoKSksIFRy
dXN0ZWRJbW0zMihTdHJpbmdJbXBsOjpmbGFnSXM4Qml0KCkpKTsKQEAgLTIxNTgsNyArMjE1Nyw2
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uU3QKICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1ZVJlZ3MoKSwgMCwgb3V0T2ZCb3VuZHMp
OwogCiAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBK
U1N0cmluZzo6b2Zmc2V0T2ZWYWx1ZSgpKSwgc2NyYXRjaFJlZyk7Ci0gICAgbV9qaXQuYW5kMzIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaFJlZywgU3RyaW5nSW1wbDo6bWFza09mZnNl
dCgpKSwgcHJvcGVydHlSZWcpOwogCiAgICAgLy8gTG9hZCB0aGUgY2hhcmFjdGVyIGludG8gc2Ny
YXRjaFJlZwogICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzMTZCaXQgPSBtX2ppdC5icmFuY2hUZXN0
MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hS
ZWcsIFN0cmluZ0ltcGw6OmZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoU3RyaW5nSW1wbDo6
ZmxhZ0lzOEJpdCgpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAkocmV2aXNpb24gMjMwMTE0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTExMiw3ICsxMTIsNiBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZU
TCB7CiAgICAgbWFjcm8oU3RyaW5nSW1wbF9kYXRhLCBTdHJpbmdJbXBsOjpkYXRhT2Zmc2V0KCkp
IFwKICAgICBtYWNybyhTdHJpbmdJbXBsX2hhc2hBbmRGbGFncywgU3RyaW5nSW1wbDo6ZmxhZ3NP
ZmZzZXQoKSkgXAogICAgIG1hY3JvKFN0cmluZ0ltcGxfbGVuZ3RoLCBTdHJpbmdJbXBsOjpsZW5n
dGhNZW1vcnlPZmZzZXQoKSkgXAotICAgIG1hY3JvKFN0cmluZ0ltcGxfbWFzaywgU3RyaW5nSW1w
bDo6bWFza09mZnNldCgpKSBcCiAgICAgbWFjcm8oU3RydWN0dXJlX2NsYXNzSW5mbywgU3RydWN0
dXJlOjpjbGFzc0luZm9PZmZzZXQoKSkgXAogICAgIG1hY3JvKFN0cnVjdHVyZV9nbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1
cmVfcHJvdG90eXBlLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpKSBcCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAy
MzAxMTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTYyNzUsNyArNjI3NSw2IEBAIHByaXZhdGU6CiAgICAgICAgIExC
YXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oZmFzdFBhdGgsIHNsb3dQYXRoKTsK
ICAgICAgICAgICAgIAogICAgICAgICBMVmFsdWUgc3RyaW5nSW1wbCA9IG1fb3V0LmxvYWRQdHIo
YmFzZSwgbV9oZWFwcy5KU1N0cmluZ192YWx1ZSk7Ci0gICAgICAgIExWYWx1ZSBpbmRleEZvckFj
Y2VzcyA9IG1fb3V0LmJpdEFuZChpbmRleCwgbV9vdXQubG9hZDMyKHN0cmluZ0ltcGwsIG1faGVh
cHMuU3RyaW5nSW1wbF9tYXNrKSk7CiAgICAgICAgICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sg
aXM4Qml0ID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgaXMxNkJpdCA9
IG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC02Mjk0LDcgKzYyOTMsNyBAQCBwcml2YXRlOgogICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0OTI0CiAgICAg
ICAgIFZhbHVlRnJvbUJsb2NrIGNoYXI4Qml0ID0gbV9vdXQuYW5jaG9yKAogICAgICAgICAgICAg
bV9vdXQubG9hZDhaZXJvRXh0MzIobV9vdXQuYmFzZUluZGV4KAotICAgICAgICAgICAgICAgIG1f
aGVhcHMuY2hhcmFjdGVyczgsIHN0b3JhZ2UsIG1fb3V0Lnplcm9FeHRQdHIoaW5kZXhGb3JBY2Nl
c3MpLAorICAgICAgICAgICAgICAgIG1faGVhcHMuY2hhcmFjdGVyczgsIHN0b3JhZ2UsIG1fb3V0
Lnplcm9FeHRQdHIoaW5kZXgpLAogICAgICAgICAgICAgICAgIHByb3ZlblZhbHVlKG1fZ3JhcGgu
Y2hpbGQobV9ub2RlLCAxKSkpKSk7CiAgICAgICAgIG1fb3V0Lmp1bXAoYml0c0NvbnRpbnVhdGlv
bik7CiAgICAgICAgICAgICAKQEAgLTYzMDIsNyArNjMwMSw3IEBAIHByaXZhdGU6CiAKICAgICAg
ICAgTFZhbHVlIGNoYXIxNkJpdFZhbHVlID0gbV9vdXQubG9hZDE2WmVyb0V4dDMyKAogICAgICAg
ICAgICAgbV9vdXQuYmFzZUluZGV4KAotICAgICAgICAgICAgICAgIG1faGVhcHMuY2hhcmFjdGVy
czE2LCBzdG9yYWdlLCBtX291dC56ZXJvRXh0UHRyKGluZGV4Rm9yQWNjZXNzKSwKKyAgICAgICAg
ICAgICAgICBtX2hlYXBzLmNoYXJhY3RlcnMxNiwgc3RvcmFnZSwgbV9vdXQuemVyb0V4dFB0cihp
bmRleCksCiAgICAgICAgICAgICAgICAgcHJvdmVuVmFsdWUobV9ncmFwaC5jaGlsZChtX25vZGUs
IDEpKSkpOwogICAgICAgICBWYWx1ZUZyb21CbG9jayBjaGFyMTZCaXQgPSBtX291dC5hbmNob3Io
Y2hhcjE2Qml0VmFsdWUpOwogICAgICAgICBtX291dC5icmFuY2goCkBAIC02Mzg0LDcgKzYzODMs
NiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGluZGV4LCBtX291dC5sb2FkMzJOb25OZWdh
dGl2ZShiYXNlLCBtX2hlYXBzLkpTU3RyaW5nX2xlbmd0aCkpKTsKICAgICAgICAgCiAgICAgICAg
IExWYWx1ZSBzdHJpbmdJbXBsID0gbV9vdXQubG9hZFB0cihiYXNlLCBtX2hlYXBzLkpTU3RyaW5n
X3ZhbHVlKTsKLSAgICAgICAgTFZhbHVlIGluZGV4Rm9yQWNjZXNzID0gbV9vdXQuYml0QW5kKGlu
ZGV4LCBtX291dC5sb2FkMzIoc3RyaW5nSW1wbCwgbV9oZWFwcy5TdHJpbmdJbXBsX21hc2spKTsK
ICAgICAgICAgCiAgICAgICAgIG1fb3V0LmJyYW5jaCgKICAgICAgICAgICAgIG1fb3V0LnRlc3RJ
c1plcm8zMigKQEAgLTYzOTgsNyArNjM5Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ5MjQKICAgICAgICAgVmFsdWVG
cm9tQmxvY2sgY2hhcjhCaXQgPSBtX291dC5hbmNob3IoCiAgICAgICAgICAgICBtX291dC5sb2Fk
OFplcm9FeHQzMihtX291dC5iYXNlSW5kZXgoCi0gICAgICAgICAgICAgICAgbV9oZWFwcy5jaGFy
YWN0ZXJzOCwgc3RvcmFnZSwgbV9vdXQuemVyb0V4dFB0cihpbmRleEZvckFjY2VzcyksCisgICAg
ICAgICAgICAgICAgbV9oZWFwcy5jaGFyYWN0ZXJzOCwgc3RvcmFnZSwgbV9vdXQuemVyb0V4dFB0
cihpbmRleCksCiAgICAgICAgICAgICAgICAgcHJvdmVuVmFsdWUobV9ub2RlLT5jaGlsZDIoKSkp
KSk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgICAgIApAQCAt
NjQwNiw3ICs2NDA0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICBWYWx1ZUZy
b21CbG9jayBjaGFyMTZCaXQgPSBtX291dC5hbmNob3IoCiAgICAgICAgICAgICBtX291dC5sb2Fk
MTZaZXJvRXh0MzIobV9vdXQuYmFzZUluZGV4KAotICAgICAgICAgICAgICAgIG1faGVhcHMuY2hh
cmFjdGVyczE2LCBzdG9yYWdlLCBtX291dC56ZXJvRXh0UHRyKGluZGV4Rm9yQWNjZXNzKSwKKyAg
ICAgICAgICAgICAgICBtX2hlYXBzLmNoYXJhY3RlcnMxNiwgc3RvcmFnZSwgbV9vdXQuemVyb0V4
dFB0cihpbmRleCksCiAgICAgICAgICAgICAgICAgcHJvdmVuVmFsdWUobV9ub2RlLT5jaGlsZDIo
KSkpKSk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCShyZXZp
c2lvbiAyMzAxMTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9y
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxOCw3ICs2MTgsNiBAQCBzdGF0aWMgdm9pZCBzdHJp
bmdDaGFyTG9hZChTcGVjaWFsaXplZFRoCiAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVDo6SnVtcExp
c3QgY29udDhCaXQ7CiAgICAgLy8gTG9hZCB0aGUgc3RyaW5nIGZsYWdzCiAgICAgaml0LmxvYWRQ
dHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAsIFN0
cmluZ0ltcGw6OmZsYWdzT2Zmc2V0KCkpLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMik7Ci0g
ICAgaml0LmFuZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKFNwZWNpYWxpemVkVGh1bmtKSVQ6
OnJlZ1QwLCBTdHJpbmdJbXBsOjptYXNrT2Zmc2V0KCkpLCBTcGVjaWFsaXplZFRodW5rSklUOjpy
ZWdUMSk7CiAgICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoU3BlY2lhbGl6
ZWRUaHVua0pJVDo6cmVnVDAsIFN0cmluZ0ltcGw6OmRhdGFPZmZzZXQoKSksIFNwZWNpYWxpemVk
VGh1bmtKSVQ6OnJlZ1QwKTsKICAgICBpczE2Qml0LmFwcGVuZChqaXQuYnJhbmNoVGVzdDMyKE1h
Y3JvQXNzZW1ibGVyOjpaZXJvLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMiwgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW0zMihTdHJpbmdJbXBsOjpmbGFnSXM4Qml0KCkpKSk7CiAgICAgaml0
LmxvYWQ4KE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVn
VDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QxLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNPbmUs
IDApLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjMwMTE0
KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MyBA
QAorMjAxOC0wMy0zMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IFN0cmluZ3MgYW5kIFZlY3RvcnMgc2hvdWxkbid0IGRvIGluZGV4IG1hc2tpbmcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDE5MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1NpemVMaW1pdHMu
Y3BwOgorICAgICAgICAqIHd0Zi9WZWN0b3IuaDoKKyAgICAgICAgKFdURjo6VmVjdG9yQnVmZmVy
QmFzZTo6YWxsb2NhdGVCdWZmZXIpOgorICAgICAgICAoV1RGOjpWZWN0b3JCdWZmZXJCYXNlOjp0
cnlBbGxvY2F0ZUJ1ZmZlcik6CisgICAgICAgIChXVEY6OlZlY3RvckJ1ZmZlckJhc2U6OnJlYWxs
b2NhdGVCdWZmZXIpOgorICAgICAgICAoV1RGOjpWZWN0b3JCdWZmZXJCYXNlOjpkZWFsbG9jYXRl
QnVmZmVyKToKKyAgICAgICAgKFdURjo6VmVjdG9yQnVmZmVyQmFzZTo6cmVsZWFzZUJ1ZmZlcik6
CisgICAgICAgIChXVEY6OlZlY3RvckJ1ZmZlckJhc2U6OlZlY3RvckJ1ZmZlckJhc2UpOgorICAg
ICAgICAoV1RGOjpWZWN0b3JCdWZmZXI6OmFsbG9jYXRlQnVmZmVyKToKKyAgICAgICAgKFdURjo6
VmVjdG9yQnVmZmVyOjp0cnlBbGxvY2F0ZUJ1ZmZlcik6CisgICAgICAgIChXVEY6OlZlY3RvckJ1
ZmZlcjo6c3dhcCk6CisgICAgICAgIChXVEY6OlZlY3RvckJ1ZmZlcjo6cmVzdG9yZUlubGluZUJ1
ZmZlcklmTmVlZGVkKToKKyAgICAgICAgKFdURjo6VmVjdG9yOjphdCk6CisgICAgICAgIChXVEY6
OlZlY3Rvcjo6YXQgY29uc3QpOgorICAgICAgICAoV1RGOjpWZWN0b3JCdWZmZXJCYXNlOjp1cGRh
dGVNYXNrKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisgICAg
ICAgIChXVEY6OlN0cmluZ0ltcGw6OmZsYWdJc1N5bWJvbCk6CisgICAgICAgIChXVEY6OlN0cmlu
Z0ltcGw6Omxlbmd0aCBjb25zdCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGxTaGFwZTo6U3Ry
aW5nSW1wbFNoYXBlKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6YXQgY29uc3QpOgorICAg
ICAgICAoV1RGOjpTdHJpbmdJbXBsOjp0YWlsT2Zmc2V0KToKKyAgICAgICAgKFdURjo6U3RyaW5n
SW1wbDo6bWFza09mZnNldCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6Om1h
c2sgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaDoKKyAg
ICAgICAgKFdURjo6U3RyaW5nVmlldzo6U3RyaW5nVmlldyk6CisgICAgICAgIChXVEY6OlN0cmlu
Z1ZpZXc6Om9wZXJhdG9yPSk6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OmluaXRpYWxpemUp
OgorICAgICAgICAoV1RGOjpTdHJpbmdWaWV3OjpjbGVhcik6CisgICAgICAgIChXVEY6OlN0cmlu
Z1ZpZXc6Om9wZXJhdG9yW10gY29uc3QpOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5o
OgorICAgICAgICAoV1RGOjpTdHJpbmc6Omxlbmd0aCBjb25zdCk6CisgICAgICAgIChXVEY6OlN0
cmluZzo6bWFzayBjb25zdCk6IERlbGV0ZWQuCisKIDIwMTgtMDMtMzAgIEpGIEJhc3RpZW4gIDxq
ZmJhc3RpZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBDWFhfUkVGRVJFTkNFX1FVQUxJ
RklFRF9GVU5DVElPTlMgYW5kIG9wdGlvbmFsJ3MgZXF1aXZhbGVudApJbmRleDogU291cmNlL1dU
Ri93dGYvU2l6ZUxpbWl0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2l6ZUxp
bWl0cy5jcHAJKHJldmlzaW9uIDIzMDExNCkKKysrIFNvdXJjZS9XVEYvd3RmL1NpemVMaW1pdHMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw2IEBAIHB1YmxpYzoKICAgICB2b2lkKiBi
dWZmZXJQb2ludGVyOwogICAgIHVuc2lnbmVkIGNhcGFjaXR5OwogICAgIHVuc2lnbmVkIHNpemU7
Ci0gICAgdW5zaWduZWQgbWFzazsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkluZGV4OiBT
b3VyY2UvV1RGL3d0Zi9WZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9WZWN0
b3IuaAkocmV2aXNpb24gMjMwMTE0KQorKysgU291cmNlL1dURi93dGYvVmVjdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4Nyw3ICsyODcsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBDUkFTSCgp
OwogICAgICAgICBzaXplX3Qgc2l6ZVRvQWxsb2NhdGUgPSBuZXdDYXBhY2l0eSAqIHNpemVvZihU
KTsKICAgICAgICAgbV9jYXBhY2l0eSA9IHNpemVUb0FsbG9jYXRlIC8gc2l6ZW9mKFQpOwotICAg
ICAgICB1cGRhdGVNYXNrKCk7CiAgICAgICAgIG1fYnVmZmVyID0gc3RhdGljX2Nhc3Q8VCo+KE1h
bGxvYzo6bWFsbG9jKHNpemVUb0FsbG9jYXRlKSk7CiAgICAgfQogCkBAIC0zMDIsNyArMzAxLDYg
QEAgcHVibGljOgogICAgICAgICBpZiAoIW5ld0J1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgbV9jYXBhY2l0eSA9IHNpemVUb0FsbG9jYXRlIC8gc2l6ZW9mKFQpOwot
ICAgICAgICB1cGRhdGVNYXNrKCk7CiAgICAgICAgIG1fYnVmZmVyID0gbmV3QnVmZmVyOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0zMTksNyArMzE3LDYgQEAgcHVibGljOgogICAg
ICAgICAgICAgQ1JBU0goKTsKICAgICAgICAgc2l6ZV90IHNpemVUb0FsbG9jYXRlID0gbmV3Q2Fw
YWNpdHkgKiBzaXplb2YoVCk7CiAgICAgICAgIG1fY2FwYWNpdHkgPSBzaXplVG9BbGxvY2F0ZSAv
IHNpemVvZihUKTsKLSAgICAgICAgdXBkYXRlTWFzaygpOwogICAgICAgICBtX2J1ZmZlciA9IHN0
YXRpY19jYXN0PFQqPihNYWxsb2M6OnJlYWxsb2MobV9idWZmZXIsIHNpemVUb0FsbG9jYXRlKSk7
CiAgICAgfQogCkBAIC0zMzEsNyArMzI4LDYgQEAgcHVibGljOgogICAgICAgICBpZiAobV9idWZm
ZXIgPT0gYnVmZmVyVG9EZWFsbG9jYXRlKSB7CiAgICAgICAgICAgICBtX2J1ZmZlciA9IDA7CiAg
ICAgICAgICAgICBtX2NhcGFjaXR5ID0gMDsKLSAgICAgICAgICAgIG1fbWFzayA9IDA7CiAgICAg
ICAgIH0KIAogICAgICAgICBNYWxsb2M6OmZyZWUoYnVmZmVyVG9EZWFsbG9jYXRlKTsKQEAgLTM0
Nyw3ICszNDMsNiBAQCBwdWJsaWM6CiAgICAgICAgIFQqIGJ1ZmZlciA9IG1fYnVmZmVyOwogICAg
ICAgICBtX2J1ZmZlciA9IDA7CiAgICAgICAgIG1fY2FwYWNpdHkgPSAwOwotICAgICAgICBtX21h
c2sgPSAwOwogICAgICAgICByZXR1cm4gYWRvcHRNYWxsb2NQdHIoYnVmZmVyKTsKICAgICB9CiAK
QEAgLTM1Niw3ICszNTEsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIDogbV9idWZmZXIoMCkKICAg
ICAgICAgLCBtX2NhcGFjaXR5KDApCiAgICAgICAgICwgbV9zaXplKDApCi0gICAgICAgICwgbV9t
YXNrKDApCiAgICAgewogICAgIH0KIApAQCAtMzY0LDkgKzM1OCw3IEBAIHByb3RlY3RlZDoKICAg
ICAgICAgOiBtX2J1ZmZlcihidWZmZXIpCiAgICAgICAgICwgbV9jYXBhY2l0eShjYXBhY2l0eSkK
ICAgICAgICAgLCBtX3NpemUoc2l6ZSkKLSAgICAgICAgLCBtX21hc2soMCkKICAgICB7Ci0gICAg
ICAgIHVwZGF0ZU1hc2soKTsKICAgICB9CiAKICAgICB+VmVjdG9yQnVmZmVyQmFzZSgpCkBAIC0z
NzQsMTUgKzM2Niw5IEBAIHByb3RlY3RlZDoKICAgICAgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJl
IG5pY2UgdG8gZmluZCBhIHdheSB0byBBU1NFUlQgdGhhdCBtX2J1ZmZlciBoYXNuJ3QgbGVha2Vk
IGhlcmUuCiAgICAgfQogCi0gICAgdm9pZCB1cGRhdGVNYXNrKCkKLSAgICB7Ci0gICAgICAgIG1f
bWFzayA9IG1hc2tGb3JTaXplKG1fY2FwYWNpdHkpOwotICAgIH0KLQogICAgIFQqIG1fYnVmZmVy
OwogICAgIHVuc2lnbmVkIG1fY2FwYWNpdHk7CiAgICAgdW5zaWduZWQgbV9zaXplOyAvLyBPbmx5
IHVzZWQgYnkgdGhlIFZlY3RvciBzdWJjbGFzcywgYnV0IHBsYWNlZCBoZXJlIHRvIGF2b2lkIHBh
ZGRpbmcgdGhlIHN0cnVjdC4KLSAgICB1bnNpZ25lZCBtX21hc2s7CiB9OwogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE1hbGxvYz4KQEAgLTQx
NSw3ICs0MDEsNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBzdGQ6OnN3YXAobV9idWZmZXIs
IG90aGVyLm1fYnVmZmVyKTsKICAgICAgICAgc3RkOjpzd2FwKG1fY2FwYWNpdHksIG90aGVyLm1f
Y2FwYWNpdHkpOwotICAgICAgICBzdGQ6OnN3YXAobV9tYXNrLCBvdGhlci5tX21hc2spOwogICAg
IH0KICAgICAKICAgICB2b2lkIHJlc3RvcmVJbmxpbmVCdWZmZXJJZk5lZWRlZCgpIHsgfQpAQCAt
NDQwLDcgKzQyNSw2IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlOjpyZWxlYXNlQnVmZmVyOwog
CiBwcm90ZWN0ZWQ6Ci0gICAgdXNpbmcgQmFzZTo6bV9tYXNrOwogICAgIHVzaW5nIEJhc2U6Om1f
c2l6ZTsKIAogcHJpdmF0ZToKQEAgLTQ3OSw3ICs0NjMsNiBAQCBwdWJsaWM6CiAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgbV9idWZmZXIgPSBpbmxpbmVCdWZmZXIoKTsKICAgICAgICAgICAg
IG1fY2FwYWNpdHkgPSBpbmxpbmVDYXBhY2l0eTsKLSAgICAgICAgICAgIHVwZGF0ZU1hc2soKTsK
ICAgICAgICAgfQogICAgIH0KIApAQCAtNDg5LDcgKzQ3Miw2IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIHJldHVybiBCYXNlOjp0cnlBbGxvY2F0ZUJ1ZmZlcihuZXdDYXBhY2l0eSk7CiAgICAgICAg
IG1fYnVmZmVyID0gaW5saW5lQnVmZmVyKCk7CiAgICAgICAgIG1fY2FwYWNpdHkgPSBpbmxpbmVD
YXBhY2l0eTsKLSAgICAgICAgdXBkYXRlTWFzaygpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAKQEAgLTUxNywyMyArNDk5LDE5IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKGJ1ZmZlcigp
ID09IGlubGluZUJ1ZmZlcigpICYmIG90aGVyLmJ1ZmZlcigpID09IG90aGVyLmlubGluZUJ1ZmZl
cigpKSB7CiAgICAgICAgICAgICBzd2FwSW5saW5lQnVmZmVyKG90aGVyLCBteVNpemUsIG90aGVy
U2l6ZSk7CiAgICAgICAgICAgICBzdGQ6OnN3YXAobV9jYXBhY2l0eSwgb3RoZXIubV9jYXBhY2l0
eSk7Ci0gICAgICAgICAgICBzdGQ6OnN3YXAobV9tYXNrLCBvdGhlci5tX21hc2spOwogICAgICAg
ICB9IGVsc2UgaWYgKGJ1ZmZlcigpID09IGlubGluZUJ1ZmZlcigpKSB7CiAgICAgICAgICAgICBt
X2J1ZmZlciA9IG90aGVyLm1fYnVmZmVyOwogICAgICAgICAgICAgb3RoZXIubV9idWZmZXIgPSBv
dGhlci5pbmxpbmVCdWZmZXIoKTsKICAgICAgICAgICAgIHN3YXBJbmxpbmVCdWZmZXIob3RoZXIs
IG15U2l6ZSwgMCk7CiAgICAgICAgICAgICBzdGQ6OnN3YXAobV9jYXBhY2l0eSwgb3RoZXIubV9j
YXBhY2l0eSk7Ci0gICAgICAgICAgICBzdGQ6OnN3YXAobV9tYXNrLCBvdGhlci5tX21hc2spOwog
ICAgICAgICB9IGVsc2UgaWYgKG90aGVyLmJ1ZmZlcigpID09IG90aGVyLmlubGluZUJ1ZmZlcigp
KSB7CiAgICAgICAgICAgICBvdGhlci5tX2J1ZmZlciA9IG1fYnVmZmVyOwogICAgICAgICAgICAg
bV9idWZmZXIgPSBpbmxpbmVCdWZmZXIoKTsKICAgICAgICAgICAgIHN3YXBJbmxpbmVCdWZmZXIo
b3RoZXIsIDAsIG90aGVyU2l6ZSk7CiAgICAgICAgICAgICBzdGQ6OnN3YXAobV9jYXBhY2l0eSwg
b3RoZXIubV9jYXBhY2l0eSk7Ci0gICAgICAgICAgICBzdGQ6OnN3YXAobV9tYXNrLCBvdGhlci5t
X21hc2spOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgc3RkOjpzd2FwKG1fYnVmZmVy
LCBvdGhlci5tX2J1ZmZlcik7CiAgICAgICAgICAgICBzdGQ6OnN3YXAobV9jYXBhY2l0eSwgb3Ro
ZXIubV9jYXBhY2l0eSk7Ci0gICAgICAgICAgICBzdGQ6OnN3YXAobV9tYXNrLCBvdGhlci5tX21h
c2spOwogICAgICAgICB9CiAgICAgfQogCkBAIC01NDMsNyArNTIxLDYgQEAgcHVibGljOgogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX2J1ZmZlciA9IGlubGluZUJ1ZmZlcigpOwogICAg
ICAgICBtX2NhcGFjaXR5ID0gaW5saW5lQ2FwYWNpdHk7Ci0gICAgICAgIHVwZGF0ZU1hc2soKTsK
ICAgICB9CiAKICNpZiBBU0FOX0VOQUJMRUQKQEAgLTU3MSwxMyArNTQ4LDExIEBAIHB1YmxpYzoK
ICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICB1c2luZyBCYXNlOjptX21hc2s7CiAgICAgdXNpbmcg
QmFzZTo6bV9zaXplOwogCiBwcml2YXRlOgogICAgIHVzaW5nIEJhc2U6Om1fYnVmZmVyOwogICAg
IHVzaW5nIEJhc2U6Om1fY2FwYWNpdHk7Ci0gICAgdXNpbmcgQmFzZTo6dXBkYXRlTWFzazsKICAg
ICAKICAgICB2b2lkIHN3YXBJbmxpbmVCdWZmZXIoVmVjdG9yQnVmZmVyJiBvdGhlciwgc2l6ZV90
IG15U2l6ZSwgc2l6ZV90IG90aGVyU2l6ZSkKICAgICB7CkBAIC03MTMsMjMgKzY4OCwyMyBAQCBw
dWJsaWM6CiAgICAgewogICAgICAgICBpZiAoVU5MSUtFTFkoaSA+PSBzaXplKCkpKQogICAgICAg
ICAgICAgT3ZlcmZsb3dIYW5kbGVyOjpvdmVyZmxvd2VkKCk7Ci0gICAgICAgIHJldHVybiBCYXNl
OjpidWZmZXIoKVtpICYgbV9tYXNrXTsKKyAgICAgICAgcmV0dXJuIEJhc2U6OmJ1ZmZlcigpW2ld
OwogICAgIH0KICAgICBjb25zdCBUJiBhdChzaXplX3QgaSkgY29uc3QgCiAgICAgewogICAgICAg
ICBpZiAoVU5MSUtFTFkoaSA+PSBzaXplKCkpKQogICAgICAgICAgICAgT3ZlcmZsb3dIYW5kbGVy
OjpvdmVyZmxvd2VkKCk7Ci0gICAgICAgIHJldHVybiBCYXNlOjpidWZmZXIoKVtpICYgbV9tYXNr
XTsKKyAgICAgICAgcmV0dXJuIEJhc2U6OmJ1ZmZlcigpW2ldOwogICAgIH0KICAgICBUJiBhdChD
aGVja2VkPHNpemVfdD4gaSkKICAgICB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGkgPCBzaXpl
KCkpOwotICAgICAgICByZXR1cm4gQmFzZTo6YnVmZmVyKClbaSAmIG1fbWFza107CisgICAgICAg
IHJldHVybiBCYXNlOjpidWZmZXIoKVtpXTsKICAgICB9CiAgICAgY29uc3QgVCYgYXQoQ2hlY2tl
ZDxzaXplX3Q+IGkpIGNvbnN0CiAgICAgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChpIDwgc2l6
ZSgpKTsKLSAgICAgICAgcmV0dXJuIEJhc2U6OmJ1ZmZlcigpW2kgJiBtX21hc2tdOworICAgICAg
ICByZXR1cm4gQmFzZTo6YnVmZmVyKClbaV07CiAgICAgfQogCiAgICAgVCYgb3BlcmF0b3JbXShz
aXplX3QgaSkgeyByZXR1cm4gYXQoaSk7IH0KQEAgLTg3Myw3ICs4NDgsNiBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCBhc2FuQnVmZmVyU2l6ZVdpbGxDaGFuZ2VUbyhzaXplX3QpOwogCi0gICAgdXNp
bmcgQmFzZTo6bV9tYXNrOwogICAgIHVzaW5nIEJhc2U6Om1fc2l6ZTsKICAgICB1c2luZyBCYXNl
OjpidWZmZXI7CiAgICAgdXNpbmcgQmFzZTo6Y2FwYWNpdHk7CkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ0ltcGwuaAkocmV2aXNpb24gMjMwMTE0KQorKysgU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0OCw3ICsxNDgsNiBAQCBwcm90ZWN0ZWQ6CiAg
ICAgICAgIGNvbnN0IGNoYXIxNl90KiBtX2RhdGExNkNoYXI7CiAgICAgfTsKICAgICBtdXRhYmxl
IHVuc2lnbmVkIG1faGFzaEFuZEZsYWdzOwotICAgIHVuc2lnbmVkIG1fbWFzazsKIH07CiAKIC8v
IEZJWE1FOiBVc2Ugb2YgU3RyaW5nSW1wbCBhbmQgY29uc3QgaXMgcmF0aGVyIGNvbmZ1c2VkLgpA
QCAtMjU0LDcgKzI1Myw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdW5zaWduZWQgZmxhZ0lzOEJp
dCgpIHsgcmV0dXJuIHNfaGFzaEZsYWc4Qml0QnVmZmVyOyB9CiAgICAgc3RhdGljIHVuc2lnbmVk
IGZsYWdJc0F0b21pYygpIHsgcmV0dXJuIHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNBdG9taWM7IH0K
ICAgICBzdGF0aWMgdW5zaWduZWQgZmxhZ0lzU3ltYm9sKCkgeyByZXR1cm4gc19oYXNoRmxhZ1N0
cmluZ0tpbmRJc1N5bWJvbDsgfQotICAgIHN0YXRpYyB1bnNpZ25lZCBtYXNrT2Zmc2V0KCkgeyBy
ZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cmluZ0ltcGwsIG1fbWFzayk7IH0KICAgICBzdGF0aWMg
dW5zaWduZWQgbWFza1N0cmluZ0tpbmQoKSB7IHJldHVybiBzX2hhc2hNYXNrU3RyaW5nS2luZDsg
fQogICAgIHN0YXRpYyB1bnNpZ25lZCBkYXRhT2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNF
VE9GKFN0cmluZ0ltcGwsIG1fZGF0YTgpOyB9CiAKQEAgLTI2NSw3ICsyNjMsNiBAQCBwdWJsaWM6
CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gYWRvcHQoU3Ry
aW5nQnVmZmVyPExDaGFyPiYmKTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fbGVuZ3RoOyB9Ci0gICAgdW5zaWduZWQgbWFzaygpIGNvbnN0IHsgcmV0dXJuIG1fbWFz
azsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3QgbGVuZ3RoTWVtb3J5T2Zmc2V0KCkgeyByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKFN0cmluZ0ltcGwsIG1fbGVuZ3RoKTsgfQogICAgIGJvb2wgaXNFbXB0
eSgpIGNvbnN0IHsgcmV0dXJuICFtX2xlbmd0aDsgfQogCkBAIC03NTgsNyArNzU1LDYgQEAgaW5s
aW5lIFN0cmluZ0ltcGxTaGFwZTo6U3RyaW5nSW1wbFNoYXBlKAogICAgICwgbV9sZW5ndGgobGVu
Z3RoKQogICAgICwgbV9kYXRhOChkYXRhOCkKICAgICAsIG1faGFzaEFuZEZsYWdzKGhhc2hBbmRG
bGFncykKLSAgICAsIG1fbWFzayhtYXNrRm9yU2l6ZShsZW5ndGgpKQogewogfQogCkBAIC03Njcs
NyArNzYzLDYgQEAgaW5saW5lIFN0cmluZ0ltcGxTaGFwZTo6U3RyaW5nSW1wbFNoYXBlKAogICAg
ICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICwgbV9kYXRhMTYoZGF0YTE2KQogICAgICwgbV9oYXNo
QW5kRmxhZ3MoaGFzaEFuZEZsYWdzKQotICAgICwgbV9tYXNrKG1hc2tGb3JTaXplKGxlbmd0aCkp
CiB7CiB9CiAKQEAgLTc3Niw3ICs3NzEsNiBAQCB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJD
b3VudD4gaW5saW5lCiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgLCBtX2RhdGE4Q2hhcihj
aGFyYWN0ZXJzKQogICAgICwgbV9oYXNoQW5kRmxhZ3MoaGFzaEFuZEZsYWdzKQotICAgICwgbV9t
YXNrKG1hc2tGb3JTaXplKGxlbmd0aCkpCiB7CiB9CiAKQEAgLTc4NSw3ICs3NzksNiBAQCB0ZW1w
bGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4gaW5saW5lCiAgICAgLCBtX2xlbmd0aChsZW5n
dGgpCiAgICAgLCBtX2RhdGExNkNoYXIoY2hhcmFjdGVycykKICAgICAsIG1faGFzaEFuZEZsYWdz
KGhhc2hBbmRGbGFncykKLSAgICAsIG1fbWFzayhtYXNrRm9yU2l6ZShsZW5ndGgpKQogewogfQog
CkBAIC0xMDc4LDcgKzEwNzEsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgU3RyaW5nSW1wbDo6Y29w
eUNoYXJhCiBpbmxpbmUgVUNoYXIgU3RyaW5nSW1wbDo6YXQodW5zaWduZWQgaSkgY29uc3QKIHsK
ICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpIDwgbV9sZW5ndGgpOwotICAg
IHJldHVybiBpczhCaXQoKSA/IG1fZGF0YThbaSAmIG1fbWFza10gOiBtX2RhdGExNltpICYgbV9t
YXNrXTsKKyAgICByZXR1cm4gaXM4Qml0KCkgPyBtX2RhdGE4W2ldIDogbV9kYXRhMTZbaV07CiB9
CiAKIGlubGluZSB2b2lkIFN0cmluZ0ltcGw6OmFzc2VydENhZ2VkKCkgY29uc3QKQEAgLTExMjIs
NyArMTExNSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBzaXplX3QgU3RyaW4KICAg
ICAvLyBNU1ZDIGRvZXNuJ3Qgc3VwcG9ydCBhbGlnbm9mIHlldC4KICAgICByZXR1cm4gcm91bmRV
cFRvTXVsdGlwbGVPZjxzaXplb2YoVCk+KHNpemVvZihTdHJpbmdJbXBsKSk7CiAjZWxzZQotICAg
IHJldHVybiByb3VuZFVwVG9NdWx0aXBsZU9mPGFsaWdub2YoVCk+KG9mZnNldG9mKFN0cmluZ0lt
cGwsIG1fbWFzaykgKyBzaXplb2YoU3RyaW5nSW1wbDo6bV9tYXNrKSk7CisgICAgcmV0dXJuIHJv
dW5kVXBUb011bHRpcGxlT2Y8YWxpZ25vZihUKT4ob2Zmc2V0b2YoU3RyaW5nSW1wbCwgbV9oYXNo
QW5kRmxhZ3MpICsgc2l6ZW9mKFN0cmluZ0ltcGw6Om1faGFzaEFuZEZsYWdzKSk7CiAjZW5kaWYK
IH0KIApJbmRleDogU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgJKHJldmlzaW9uIDIzMDExNCkKKysr
IFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTks
OCArMTU5LDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBMQ2hhcios
IHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IFVDaGFyKiwgdW5z
aWduZWQgbGVuZ3RoKTsKLSAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgTENoYXIqLCB1bnNpZ25l
ZCBsZW5ndGgsIHVuc2lnbmVkIG1hc2spOwotICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBVQ2hh
ciosIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgbWFzayk7CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlLCB0eXBlbmFtZSBNYXRjaGVkQ2hhcmFjdGVyUHJlZGljYXRlPgog
ICAgIFN0cmluZ1ZpZXcgc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdNYXRjaGVkQ2hhcmFjdGVycyhj
b25zdCBDaGFyYWN0ZXJUeXBlKiwgY29uc3QgTWF0Y2hlZENoYXJhY3RlclByZWRpY2F0ZSYpOwpA
QCAtMTc4LDcgKzE3Niw2IEBAIHByaXZhdGU6CiAKICAgICBjb25zdCB2b2lkKiBtX2NoYXJhY3Rl
cnMgeyBudWxscHRyIH07CiAgICAgdW5zaWduZWQgbV9sZW5ndGggeyAwIH07Ci0gICAgdW5zaWdu
ZWQgbV9tYXNrIHsgMCB9OwogICAgIGJvb2wgbV9pczhCaXQgeyB0cnVlIH07CiAKICNpZiBDSEVD
S19TVFJJTkdWSUVXX0xJRkVUSU1FCkBAIC0yMzEsNyArMjI4LDYgQEAgaW5saW5lIFN0cmluZ1Zp
ZXc6On5TdHJpbmdWaWV3KCkKIGlubGluZSBTdHJpbmdWaWV3OjpTdHJpbmdWaWV3KFN0cmluZ1Zp
ZXcmJiBvdGhlcikKICAgICA6IG1fY2hhcmFjdGVycyhvdGhlci5tX2NoYXJhY3RlcnMpCiAgICAg
LCBtX2xlbmd0aChvdGhlci5tX2xlbmd0aCkKLSAgICAsIG1fbWFzayhvdGhlci5tX21hc2spCiAg
ICAgLCBtX2lzOEJpdChvdGhlci5tX2lzOEJpdCkKIHsKICAgICBBU1NFUlQob3RoZXIudW5kZXJs
eWluZ1N0cmluZ0lzVmFsaWQoKSk7CkBAIC0yNDUsNyArMjQxLDYgQEAgaW5saW5lIFN0cmluZ1Zp
ZXc6OlN0cmluZ1ZpZXcoU3RyaW5nVmlldwogaW5saW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXco
Y29uc3QgU3RyaW5nVmlldyYgb3RoZXIpCiAgICAgOiBtX2NoYXJhY3RlcnMob3RoZXIubV9jaGFy
YWN0ZXJzKQogICAgICwgbV9sZW5ndGgob3RoZXIubV9sZW5ndGgpCi0gICAgLCBtX21hc2sob3Ro
ZXIubV9tYXNrKQogICAgICwgbV9pczhCaXQob3RoZXIubV9pczhCaXQpCiB7CiAgICAgQVNTRVJU
KG90aGVyLnVuZGVybHlpbmdTdHJpbmdJc1ZhbGlkKCkpOwpAQCAtMjU5LDcgKzI1NCw2IEBAIGlu
bGluZSBTdHJpbmdWaWV3JiBTdHJpbmdWaWV3OjpvcGVyYXRvcj0KIAogICAgIG1fY2hhcmFjdGVy
cyA9IG90aGVyLm1fY2hhcmFjdGVyczsKICAgICBtX2xlbmd0aCA9IG90aGVyLm1fbGVuZ3RoOwot
ICAgIG1fbWFzayA9IG90aGVyLm1fbWFzazsKICAgICBtX2lzOEJpdCA9IG90aGVyLm1faXM4Qml0
OwogCiAgICAgb3RoZXIuY2xlYXIoKTsKQEAgLTI3Niw3ICsyNzAsNiBAQCBpbmxpbmUgU3RyaW5n
VmlldyYgU3RyaW5nVmlldzo6b3BlcmF0b3I9CiAKICAgICBtX2NoYXJhY3RlcnMgPSBvdGhlci5t
X2NoYXJhY3RlcnM7CiAgICAgbV9sZW5ndGggPSBvdGhlci5tX2xlbmd0aDsKLSAgICBtX21hc2sg
PSBvdGhlci5tX21hc2s7CiAgICAgbV9pczhCaXQgPSBvdGhlci5tX2lzOEJpdDsKIAogICAgIHNl
dFVuZGVybHlpbmdTdHJpbmcob3RoZXIpOwpAQCAtMjg3LDI3ICsyODAsMTUgQEAgaW5saW5lIFN0
cmluZ1ZpZXcmIFN0cmluZ1ZpZXc6Om9wZXJhdG9yPQogCiBpbmxpbmUgdm9pZCBTdHJpbmdWaWV3
Ojppbml0aWFsaXplKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiB7
Ci0gICAgaW5pdGlhbGl6ZShjaGFyYWN0ZXJzLCBsZW5ndGgsIG1hc2tGb3JTaXplKGxlbmd0aCkp
OwotfQotCi1pbmxpbmUgdm9pZCBTdHJpbmdWaWV3Ojppbml0aWFsaXplKGNvbnN0IFVDaGFyKiBj
aGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgaW5pdGlhbGl6ZShjaGFyYWN0ZXJz
LCBsZW5ndGgsIG1hc2tGb3JTaXplKGxlbmd0aCkpOwotfQotCi1pbmxpbmUgdm9pZCBTdHJpbmdW
aWV3Ojppbml0aWFsaXplKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgs
IHVuc2lnbmVkIG1hc2spCi17CiAgICAgbV9jaGFyYWN0ZXJzID0gY2hhcmFjdGVyczsKICAgICBt
X2xlbmd0aCA9IGxlbmd0aDsKLSAgICBtX21hc2sgPSBtYXNrOwogICAgIG1faXM4Qml0ID0gdHJ1
ZTsKIH0KIAotaW5saW5lIHZvaWQgU3RyaW5nVmlldzo6aW5pdGlhbGl6ZShjb25zdCBVQ2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBtYXNrKQoraW5saW5lIHZvaWQg
U3RyaW5nVmlldzo6aW5pdGlhbGl6ZShjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQg
bGVuZ3RoKQogewogICAgIG1fY2hhcmFjdGVycyA9IGNoYXJhY3RlcnM7CiAgICAgbV9sZW5ndGgg
PSBsZW5ndGg7Ci0gICAgbV9tYXNrID0gbWFzazsKICAgICBtX2lzOEJpdCA9IGZhbHNlOwogfQog
CkBAIC0zMzAsOSArMzExLDkgQEAgaW5saW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcoY29uc3Qg
U3RyaQogewogICAgIHNldFVuZGVybHlpbmdTdHJpbmcoJnN0cmluZyk7CiAgICAgaWYgKHN0cmlu
Zy5pczhCaXQoKSkKLSAgICAgICAgaW5pdGlhbGl6ZShzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3Ry
aW5nLmxlbmd0aCgpLCBzdHJpbmcubWFzaygpKTsKKyAgICAgICAgaW5pdGlhbGl6ZShzdHJpbmcu
Y2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKICAgICBlbHNlCi0gICAgICAgIGluaXRp
YWxpemUoc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCksIHN0cmluZy5tYXNr
KCkpOworICAgICAgICBpbml0aWFsaXplKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxl
bmd0aCgpKTsKIH0KIAogaW5saW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcoY29uc3QgU3RyaW5n
SW1wbCogc3RyaW5nKQpAQCAtMzQyLDkgKzMyMyw5IEBAIGlubGluZSBTdHJpbmdWaWV3OjpTdHJp
bmdWaWV3KGNvbnN0IFN0cmkKIAogICAgIHNldFVuZGVybHlpbmdTdHJpbmcoc3RyaW5nKTsKICAg
ICBpZiAoc3RyaW5nLT5pczhCaXQoKSkKLSAgICAgICAgaW5pdGlhbGl6ZShzdHJpbmctPmNoYXJh
Y3RlcnM4KCksIHN0cmluZy0+bGVuZ3RoKCksIHN0cmluZy0+bWFzaygpKTsKKyAgICAgICAgaW5p
dGlhbGl6ZShzdHJpbmctPmNoYXJhY3RlcnM4KCksIHN0cmluZy0+bGVuZ3RoKCkpOwogICAgIGVs
c2UKLSAgICAgICAgaW5pdGlhbGl6ZShzdHJpbmctPmNoYXJhY3RlcnMxNigpLCBzdHJpbmctPmxl
bmd0aCgpLCBzdHJpbmctPm1hc2soKSk7CisgICAgICAgIGluaXRpYWxpemUoc3RyaW5nLT5jaGFy
YWN0ZXJzMTYoKSwgc3RyaW5nLT5sZW5ndGgoKSk7CiB9CiAKIGlubGluZSBTdHJpbmdWaWV3OjpT
dHJpbmdWaWV3KGNvbnN0IFN0cmluZyYgc3RyaW5nKQpAQCAtMzU1LDEwICszMzYsMTAgQEAgaW5s
aW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcoY29uc3QgU3RyaQogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpIHsKLSAgICAgICAgaW5pdGlhbGl6ZShzdHJp
bmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpLCBzdHJpbmcubWFzaygpKTsKKyAgICAg
ICAgaW5pdGlhbGl6ZShzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpbml0aWFsaXplKHN0cmluZy5jaGFyYWN0ZXJzMTYo
KSwgc3RyaW5nLmxlbmd0aCgpLCBzdHJpbmcubWFzaygpKTsKKyAgICBpbml0aWFsaXplKHN0cmlu
Zy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpKTsKIH0KIAogaW5saW5lIFN0cmluZ1Zp
ZXc6OlN0cmluZ1ZpZXcoY29uc3QgQXRvbWljU3RyaW5nJiBhdG9taWNTdHJpbmcpCkBAIC0zNzAs
NyArMzUxLDYgQEAgaW5saW5lIHZvaWQgU3RyaW5nVmlldzo6Y2xlYXIoKQogewogICAgIG1fY2hh
cmFjdGVycyA9IG51bGxwdHI7CiAgICAgbV9sZW5ndGggPSAwOwotICAgIG1fbWFzayA9IDA7CiAg
ICAgbV9pczhCaXQgPSB0cnVlOwogfQogCkBAIC00NTksOCArNDM5LDggQEAgaW5saW5lIFVDaGFy
IFN0cmluZ1ZpZXc6Om9wZXJhdG9yW10odW5zaQogewogICAgIEFTU0VSVChpbmRleCA8IGxlbmd0
aCgpKTsKICAgICBpZiAoaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBjaGFyYWN0ZXJzOCgpW2lu
ZGV4ICYgbV9tYXNrXTsKLSAgICByZXR1cm4gY2hhcmFjdGVyczE2KClbaW5kZXggJiBtX21hc2td
OworICAgICAgICByZXR1cm4gY2hhcmFjdGVyczgoKVtpbmRleF07CisgICAgcmV0dXJuIGNoYXJh
Y3RlcnMxNigpW2luZGV4XTsKIH0KIAogaW5saW5lIGJvb2wgU3RyaW5nVmlldzo6Y29udGFpbnMo
VUNoYXIgY2hhcmFjdGVyKSBjb25zdApJbmRleDogU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJp
bmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCShyZXZp
c2lvbiAyMzAxMTQpCisrKyBTb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDksNyArMTQ5LDYgQEAgcHVibGljOgogICAgIFJlZlB0cjxTdHJpbmdJbXBs
PiByZWxlYXNlSW1wbCgpIHsgcmV0dXJuIFdURk1vdmUobV9pbXBsKTsgfQogCiAgICAgdW5zaWdu
ZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5sZW5ndGgoKSA6IDA7
IH0KLSAgICB1bnNpZ25lZCBtYXNrKCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5t
YXNrKCkgOiAwOyB9CiAgICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4KCkgY29uc3QgeyByZXR1
cm4gbV9pbXBsID8gbV9pbXBsLT5jaGFyYWN0ZXJzOCgpIDogbnVsbHB0cjsgfQogICAgIGNvbnN0
IFVDaGFyKiBjaGFyYWN0ZXJzMTYoKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmNo
YXJhY3RlcnMxNigpIDogbnVsbHB0cjsgfQogCg==
</data>
<flag name="review"
          id="355368"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336890</attachid>
            <date>2018-03-30 15:11:51 -0700</date>
            <delta_ts>2018-03-30 15:11:51 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>23104</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjMwMTE3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDE4LTAzLTMwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
U3RyaW5ncyBhbmQgVmVjdG9ycyBzaG91bGRuJ3QgZG8gaW5kZXggbWFza2luZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0MTkzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTWFyayBMYW0uCisKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0Q2hhckNv
ZGVBdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZh
bE9uU3RyaW5nKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oOgor
ICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlU3RyaW5nQ2hhckF0KToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVN0cmluZ0NoYXJDb2RlQXQpOgorICAgICAgICAq
IGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjpzdHJpbmdDaGFyTG9hZCk6
CisKIDIwMTgtMDMtMzAgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAg
ICBCeXRlY29kZSBnZW5lcmF0b3Igc2hvdWxkIG5vdCBnZXRfZnJvbV9zY29wZSBzb21ldGhpbmcg
dGhhdCBtYXkgYmUgYSBob2xlIGludG8gYSB2YXJpYWJsZSB0aGF0IGlzIGFscmVhZHkgbGl2ZQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAJKHJldmlzaW9uIDIzMDExNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTEwLDcgKzIxMTAsNiBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0Q2hhckNvZGVBCiAgICAgR1BSUmVnIHNjcmF0Y2hS
ZWcgPSBzY3JhdGNoLmdwcigpOwogCiAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhzdHJpbmdSZWcsIEpTU3RyaW5nOjpvZmZzZXRPZlZhbHVlKCkpLCBzY3JhdGNoUmVn
KTsKLSAgICBtX2ppdC5hbmQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoUmVnLCBT
dHJpbmdJbXBsOjptYXNrT2Zmc2V0KCkpLCBpbmRleFJlZyk7CiAKICAgICAvLyBMb2FkIHRoZSBj
aGFyYWN0ZXIgaW50byBzY3JhdGNoUmVnCiAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXMxNkJpdCA9
IG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVybywgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Moc2NyYXRjaFJlZywgU3RyaW5nSW1wbDo6ZmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJ
bW0zMihTdHJpbmdJbXBsOjpmbGFnSXM4Qml0KCkpKTsKQEAgLTIxNTgsNyArMjE1Nyw2IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uU3QKICAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1ZVJlZ3MoKSwgMCwgb3V0T2ZCb3VuZHMpOwogCiAg
ICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU1N0cmlu
Zzo6b2Zmc2V0T2ZWYWx1ZSgpKSwgc2NyYXRjaFJlZyk7Ci0gICAgbV9qaXQuYW5kMzIoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaFJlZywgU3RyaW5nSW1wbDo6bWFza09mZnNldCgpKSwg
cHJvcGVydHlSZWcpOwogCiAgICAgLy8gTG9hZCB0aGUgY2hhcmFjdGVyIGludG8gc2NyYXRjaFJl
ZwogICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzMTZCaXQgPSBtX2ppdC5icmFuY2hUZXN0MzIoTWFj
cm9Bc3NlbWJsZXI6Olplcm8sIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hSZWcsIFN0
cmluZ0ltcGw6OmZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoU3RyaW5nSW1wbDo6ZmxhZ0lz
OEJpdCgpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVh
cFJlcG9zaXRvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAkocmV2aXNpb24gMjMwMTE0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTExMiw3ICsxMTIsNiBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAg
ICAgbWFjcm8oU3RyaW5nSW1wbF9kYXRhLCBTdHJpbmdJbXBsOjpkYXRhT2Zmc2V0KCkpIFwKICAg
ICBtYWNybyhTdHJpbmdJbXBsX2hhc2hBbmRGbGFncywgU3RyaW5nSW1wbDo6ZmxhZ3NPZmZzZXQo
KSkgXAogICAgIG1hY3JvKFN0cmluZ0ltcGxfbGVuZ3RoLCBTdHJpbmdJbXBsOjpsZW5ndGhNZW1v
cnlPZmZzZXQoKSkgXAotICAgIG1hY3JvKFN0cmluZ0ltcGxfbWFzaywgU3RyaW5nSW1wbDo6bWFz
a09mZnNldCgpKSBcCiAgICAgbWFjcm8oU3RydWN0dXJlX2NsYXNzSW5mbywgU3RydWN0dXJlOjpj
bGFzc0luZm9PZmZzZXQoKSkgXAogICAgIG1hY3JvKFN0cnVjdHVyZV9nbG9iYWxPYmplY3QsIFN0
cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfcHJv
dG90eXBlLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpKSBcCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyMzAxMTQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTYyNzUsNyArNjI3NSw2IEBAIHByaXZhdGU6CiAgICAgICAgIExCYXNpY0Js
b2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oZmFzdFBhdGgsIHNsb3dQYXRoKTsKICAgICAg
ICAgICAgIAogICAgICAgICBMVmFsdWUgc3RyaW5nSW1wbCA9IG1fb3V0LmxvYWRQdHIoYmFzZSwg
bV9oZWFwcy5KU1N0cmluZ192YWx1ZSk7Ci0gICAgICAgIExWYWx1ZSBpbmRleEZvckFjY2VzcyA9
IG1fb3V0LmJpdEFuZChpbmRleCwgbV9vdXQubG9hZDMyKHN0cmluZ0ltcGwsIG1faGVhcHMuU3Ry
aW5nSW1wbF9tYXNrKSk7CiAgICAgICAgICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sgaXM4Qml0
ID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgaXMxNkJpdCA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CkBAIC02Mjk0LDcgKzYyOTMsNyBAQCBwcml2YXRlOgogICAgICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0OTI0CiAgICAgICAgIFZh
bHVlRnJvbUJsb2NrIGNoYXI4Qml0ID0gbV9vdXQuYW5jaG9yKAogICAgICAgICAgICAgbV9vdXQu
bG9hZDhaZXJvRXh0MzIobV9vdXQuYmFzZUluZGV4KAotICAgICAgICAgICAgICAgIG1faGVhcHMu
Y2hhcmFjdGVyczgsIHN0b3JhZ2UsIG1fb3V0Lnplcm9FeHRQdHIoaW5kZXhGb3JBY2Nlc3MpLAor
ICAgICAgICAgICAgICAgIG1faGVhcHMuY2hhcmFjdGVyczgsIHN0b3JhZ2UsIG1fb3V0Lnplcm9F
eHRQdHIoaW5kZXgpLAogICAgICAgICAgICAgICAgIHByb3ZlblZhbHVlKG1fZ3JhcGguY2hpbGQo
bV9ub2RlLCAxKSkpKSk7CiAgICAgICAgIG1fb3V0Lmp1bXAoYml0c0NvbnRpbnVhdGlvbik7CiAg
ICAgICAgICAgICAKQEAgLTYzMDIsNyArNjMwMSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgTFZh
bHVlIGNoYXIxNkJpdFZhbHVlID0gbV9vdXQubG9hZDE2WmVyb0V4dDMyKAogICAgICAgICAgICAg
bV9vdXQuYmFzZUluZGV4KAotICAgICAgICAgICAgICAgIG1faGVhcHMuY2hhcmFjdGVyczE2LCBz
dG9yYWdlLCBtX291dC56ZXJvRXh0UHRyKGluZGV4Rm9yQWNjZXNzKSwKKyAgICAgICAgICAgICAg
ICBtX2hlYXBzLmNoYXJhY3RlcnMxNiwgc3RvcmFnZSwgbV9vdXQuemVyb0V4dFB0cihpbmRleCks
CiAgICAgICAgICAgICAgICAgcHJvdmVuVmFsdWUobV9ncmFwaC5jaGlsZChtX25vZGUsIDEpKSkp
OwogICAgICAgICBWYWx1ZUZyb21CbG9jayBjaGFyMTZCaXQgPSBtX291dC5hbmNob3IoY2hhcjE2
Qml0VmFsdWUpOwogICAgICAgICBtX291dC5icmFuY2goCkBAIC02Mzg0LDcgKzYzODMsNiBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIGluZGV4LCBtX291dC5sb2FkMzJOb25OZWdhdGl2ZShi
YXNlLCBtX2hlYXBzLkpTU3RyaW5nX2xlbmd0aCkpKTsKICAgICAgICAgCiAgICAgICAgIExWYWx1
ZSBzdHJpbmdJbXBsID0gbV9vdXQubG9hZFB0cihiYXNlLCBtX2hlYXBzLkpTU3RyaW5nX3ZhbHVl
KTsKLSAgICAgICAgTFZhbHVlIGluZGV4Rm9yQWNjZXNzID0gbV9vdXQuYml0QW5kKGluZGV4LCBt
X291dC5sb2FkMzIoc3RyaW5nSW1wbCwgbV9oZWFwcy5TdHJpbmdJbXBsX21hc2spKTsKICAgICAg
ICAgCiAgICAgICAgIG1fb3V0LmJyYW5jaCgKICAgICAgICAgICAgIG1fb3V0LnRlc3RJc1plcm8z
MigKQEAgLTYzOTgsNyArNjM5Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ5MjQKICAgICAgICAgVmFsdWVGcm9tQmxv
Y2sgY2hhcjhCaXQgPSBtX291dC5hbmNob3IoCiAgICAgICAgICAgICBtX291dC5sb2FkOFplcm9F
eHQzMihtX291dC5iYXNlSW5kZXgoCi0gICAgICAgICAgICAgICAgbV9oZWFwcy5jaGFyYWN0ZXJz
OCwgc3RvcmFnZSwgbV9vdXQuemVyb0V4dFB0cihpbmRleEZvckFjY2VzcyksCisgICAgICAgICAg
ICAgICAgbV9oZWFwcy5jaGFyYWN0ZXJzOCwgc3RvcmFnZSwgbV9vdXQuemVyb0V4dFB0cihpbmRl
eCksCiAgICAgICAgICAgICAgICAgcHJvdmVuVmFsdWUobV9ub2RlLT5jaGlsZDIoKSkpKSk7CiAg
ICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgICAgIApAQCAtNjQwNiw3
ICs2NDA0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICBWYWx1ZUZyb21CbG9j
ayBjaGFyMTZCaXQgPSBtX291dC5hbmNob3IoCiAgICAgICAgICAgICBtX291dC5sb2FkMTZaZXJv
RXh0MzIobV9vdXQuYmFzZUluZGV4KAotICAgICAgICAgICAgICAgIG1faGVhcHMuY2hhcmFjdGVy
czE2LCBzdG9yYWdlLCBtX291dC56ZXJvRXh0UHRyKGluZGV4Rm9yQWNjZXNzKSwKKyAgICAgICAg
ICAgICAgICBtX2hlYXBzLmNoYXJhY3RlcnMxNiwgc3RvcmFnZSwgbV9vdXQuemVyb0V4dFB0cihp
bmRleCksCiAgICAgICAgICAgICAgICAgcHJvdmVuVmFsdWUobV9ub2RlLT5jaGlsZDIoKSkpKSk7
CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCShyZXZpc2lvbiAy
MzAxMTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTYxOCw3ICs2MTgsNiBAQCBzdGF0aWMgdm9pZCBzdHJpbmdDaGFy
TG9hZChTcGVjaWFsaXplZFRoCiAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVDo6SnVtcExpc3QgY29u
dDhCaXQ7CiAgICAgLy8gTG9hZCB0aGUgc3RyaW5nIGZsYWdzCiAgICAgaml0LmxvYWRQdHIoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAsIFN0cmluZ0lt
cGw6OmZsYWdzT2Zmc2V0KCkpLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMik7Ci0gICAgaml0
LmFuZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1Qw
LCBTdHJpbmdJbXBsOjptYXNrT2Zmc2V0KCkpLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMSk7
CiAgICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVu
a0pJVDo6cmVnVDAsIFN0cmluZ0ltcGw6OmRhdGFPZmZzZXQoKSksIFNwZWNpYWxpemVkVGh1bmtK
SVQ6OnJlZ1QwKTsKICAgICBpczE2Qml0LmFwcGVuZChqaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNz
ZW1ibGVyOjpaZXJvLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMiwgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW0zMihTdHJpbmdJbXBsOjpmbGFnSXM4Qml0KCkpKSk7CiAgICAgaml0LmxvYWQ4
KE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAsIFNw
ZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QxLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNPbmUsIDApLCBT
cGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjMwMTE0KQorKysg
U291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MyBAQAorMjAx
OC0wMy0zMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIFN0cmlu
Z3MgYW5kIFZlY3RvcnMgc2hvdWxkbid0IGRvIGluZGV4IG1hc2tpbmcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDE5MworCisgICAgICAgIFJldmll
d2VkIGJ5IE1hcmsgTGFtLgorCisgICAgICAgICogd3RmL1NpemVMaW1pdHMuY3BwOgorICAgICAg
ICAqIHd0Zi9WZWN0b3IuaDoKKyAgICAgICAgKFdURjo6VmVjdG9yQnVmZmVyQmFzZTo6YWxsb2Nh
dGVCdWZmZXIpOgorICAgICAgICAoV1RGOjpWZWN0b3JCdWZmZXJCYXNlOjp0cnlBbGxvY2F0ZUJ1
ZmZlcik6CisgICAgICAgIChXVEY6OlZlY3RvckJ1ZmZlckJhc2U6OnJlYWxsb2NhdGVCdWZmZXIp
OgorICAgICAgICAoV1RGOjpWZWN0b3JCdWZmZXJCYXNlOjpkZWFsbG9jYXRlQnVmZmVyKToKKyAg
ICAgICAgKFdURjo6VmVjdG9yQnVmZmVyQmFzZTo6cmVsZWFzZUJ1ZmZlcik6CisgICAgICAgIChX
VEY6OlZlY3RvckJ1ZmZlckJhc2U6OlZlY3RvckJ1ZmZlckJhc2UpOgorICAgICAgICAoV1RGOjpW
ZWN0b3JCdWZmZXI6OmFsbG9jYXRlQnVmZmVyKToKKyAgICAgICAgKFdURjo6VmVjdG9yQnVmZmVy
Ojp0cnlBbGxvY2F0ZUJ1ZmZlcik6CisgICAgICAgIChXVEY6OlZlY3RvckJ1ZmZlcjo6c3dhcCk6
CisgICAgICAgIChXVEY6OlZlY3RvckJ1ZmZlcjo6cmVzdG9yZUlubGluZUJ1ZmZlcklmTmVlZGVk
KToKKyAgICAgICAgKFdURjo6VmVjdG9yOjphdCk6CisgICAgICAgIChXVEY6OlZlY3Rvcjo6YXQg
Y29uc3QpOgorICAgICAgICAoV1RGOjpWZWN0b3JCdWZmZXJCYXNlOjp1cGRhdGVNYXNrKTogRGVs
ZXRlZC4KKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisgICAgICAgIChXVEY6OlN0
cmluZ0ltcGw6OmZsYWdJc1N5bWJvbCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6Omxlbmd0
aCBjb25zdCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGxTaGFwZTo6U3RyaW5nSW1wbFNoYXBl
KToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6YXQgY29uc3QpOgorICAgICAgICAoV1RGOjpT
dHJpbmdJbXBsOjp0YWlsT2Zmc2V0KToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6bWFza09m
ZnNldCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6Om1hc2sgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaDoKKyAgICAgICAgKFdURjo6
U3RyaW5nVmlldzo6U3RyaW5nVmlldyk6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6Om9wZXJh
dG9yPSk6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OmluaXRpYWxpemUpOgorICAgICAgICAo
V1RGOjpTdHJpbmdWaWV3OjpjbGVhcik6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6Om9wZXJh
dG9yW10gY29uc3QpOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5oOgorICAgICAgICAo
V1RGOjpTdHJpbmc6Omxlbmd0aCBjb25zdCk6CisgICAgICAgIChXVEY6OlN0cmluZzo6bWFzayBj
b25zdCk6IERlbGV0ZWQuCisKIDIwMTgtMDMtMzAgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBDWFhfUkVGRVJFTkNFX1FVQUxJRklFRF9GVU5DVElP
TlMgYW5kIG9wdGlvbmFsJ3MgZXF1aXZhbGVudApJbmRleDogU291cmNlL1dURi93dGYvU2l6ZUxp
bWl0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2l6ZUxpbWl0cy5jcHAJKHJl
dmlzaW9uIDIzMDExNCkKKysrIFNvdXJjZS9XVEYvd3RmL1NpemVMaW1pdHMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02OCw3ICs2OCw2IEBAIHB1YmxpYzoKICAgICB2b2lkKiBidWZmZXJQb2ludGVy
OwogICAgIHVuc2lnbmVkIGNhcGFjaXR5OwogICAgIHVuc2lnbmVkIHNpemU7Ci0gICAgdW5zaWdu
ZWQgbWFzazsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9WZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaAkocmV2aXNp
b24gMjMwMTE0KQorKysgU291cmNlL1dURi93dGYvVmVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI4Nyw3ICsyODcsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBDUkFTSCgpOwogICAgICAgICBz
aXplX3Qgc2l6ZVRvQWxsb2NhdGUgPSBuZXdDYXBhY2l0eSAqIHNpemVvZihUKTsKICAgICAgICAg
bV9jYXBhY2l0eSA9IHNpemVUb0FsbG9jYXRlIC8gc2l6ZW9mKFQpOwotICAgICAgICB1cGRhdGVN
YXNrKCk7CiAgICAgICAgIG1fYnVmZmVyID0gc3RhdGljX2Nhc3Q8VCo+KE1hbGxvYzo6bWFsbG9j
KHNpemVUb0FsbG9jYXRlKSk7CiAgICAgfQogCkBAIC0zMDIsNyArMzAxLDYgQEAgcHVibGljOgog
ICAgICAgICBpZiAoIW5ld0J1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgbV9jYXBhY2l0eSA9IHNpemVUb0FsbG9jYXRlIC8gc2l6ZW9mKFQpOwotICAgICAgICB1cGRh
dGVNYXNrKCk7CiAgICAgICAgIG1fYnVmZmVyID0gbmV3QnVmZmVyOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CkBAIC0zMTksNyArMzE3LDYgQEAgcHVibGljOgogICAgICAgICAgICAgQ1JB
U0goKTsKICAgICAgICAgc2l6ZV90IHNpemVUb0FsbG9jYXRlID0gbmV3Q2FwYWNpdHkgKiBzaXpl
b2YoVCk7CiAgICAgICAgIG1fY2FwYWNpdHkgPSBzaXplVG9BbGxvY2F0ZSAvIHNpemVvZihUKTsK
LSAgICAgICAgdXBkYXRlTWFzaygpOwogICAgICAgICBtX2J1ZmZlciA9IHN0YXRpY19jYXN0PFQq
PihNYWxsb2M6OnJlYWxsb2MobV9idWZmZXIsIHNpemVUb0FsbG9jYXRlKSk7CiAgICAgfQogCkBA
IC0zMzEsNyArMzI4LDYgQEAgcHVibGljOgogICAgICAgICBpZiAobV9idWZmZXIgPT0gYnVmZmVy
VG9EZWFsbG9jYXRlKSB7CiAgICAgICAgICAgICBtX2J1ZmZlciA9IDA7CiAgICAgICAgICAgICBt
X2NhcGFjaXR5ID0gMDsKLSAgICAgICAgICAgIG1fbWFzayA9IDA7CiAgICAgICAgIH0KIAogICAg
ICAgICBNYWxsb2M6OmZyZWUoYnVmZmVyVG9EZWFsbG9jYXRlKTsKQEAgLTM0Nyw3ICszNDMsNiBA
QCBwdWJsaWM6CiAgICAgICAgIFQqIGJ1ZmZlciA9IG1fYnVmZmVyOwogICAgICAgICBtX2J1ZmZl
ciA9IDA7CiAgICAgICAgIG1fY2FwYWNpdHkgPSAwOwotICAgICAgICBtX21hc2sgPSAwOwogICAg
ICAgICByZXR1cm4gYWRvcHRNYWxsb2NQdHIoYnVmZmVyKTsKICAgICB9CiAKQEAgLTM1Niw3ICsz
NTEsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIDogbV9idWZmZXIoMCkKICAgICAgICAgLCBtX2Nh
cGFjaXR5KDApCiAgICAgICAgICwgbV9zaXplKDApCi0gICAgICAgICwgbV9tYXNrKDApCiAgICAg
ewogICAgIH0KIApAQCAtMzY0LDkgKzM1OCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgOiBtX2J1
ZmZlcihidWZmZXIpCiAgICAgICAgICwgbV9jYXBhY2l0eShjYXBhY2l0eSkKICAgICAgICAgLCBt
X3NpemUoc2l6ZSkKLSAgICAgICAgLCBtX21hc2soMCkKICAgICB7Ci0gICAgICAgIHVwZGF0ZU1h
c2soKTsKICAgICB9CiAKICAgICB+VmVjdG9yQnVmZmVyQmFzZSgpCkBAIC0zNzQsMTUgKzM2Niw5
IEBAIHByb3RlY3RlZDoKICAgICAgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIG5pY2UgdG8gZmlu
ZCBhIHdheSB0byBBU1NFUlQgdGhhdCBtX2J1ZmZlciBoYXNuJ3QgbGVha2VkIGhlcmUuCiAgICAg
fQogCi0gICAgdm9pZCB1cGRhdGVNYXNrKCkKLSAgICB7Ci0gICAgICAgIG1fbWFzayA9IG1hc2tG
b3JTaXplKG1fY2FwYWNpdHkpOwotICAgIH0KLQogICAgIFQqIG1fYnVmZmVyOwogICAgIHVuc2ln
bmVkIG1fY2FwYWNpdHk7CiAgICAgdW5zaWduZWQgbV9zaXplOyAvLyBPbmx5IHVzZWQgYnkgdGhl
IFZlY3RvciBzdWJjbGFzcywgYnV0IHBsYWNlZCBoZXJlIHRvIGF2b2lkIHBhZGRpbmcgdGhlIHN0
cnVjdC4KLSAgICB1bnNpZ25lZCBtX21hc2s7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBz
aXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE1hbGxvYz4KQEAgLTQxNSw3ICs0MDEsNiBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICBzdGQ6OnN3YXAobV9idWZmZXIsIG90aGVyLm1fYnVm
ZmVyKTsKICAgICAgICAgc3RkOjpzd2FwKG1fY2FwYWNpdHksIG90aGVyLm1fY2FwYWNpdHkpOwot
ICAgICAgICBzdGQ6OnN3YXAobV9tYXNrLCBvdGhlci5tX21hc2spOwogICAgIH0KICAgICAKICAg
ICB2b2lkIHJlc3RvcmVJbmxpbmVCdWZmZXJJZk5lZWRlZCgpIHsgfQpAQCAtNDQwLDcgKzQyNSw2
IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlOjpyZWxlYXNlQnVmZmVyOwogCiBwcm90ZWN0ZWQ6
Ci0gICAgdXNpbmcgQmFzZTo6bV9tYXNrOwogICAgIHVzaW5nIEJhc2U6Om1fc2l6ZTsKIAogcHJp
dmF0ZToKQEAgLTQ3OSw3ICs0NjMsNiBAQCBwdWJsaWM6CiAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgbV9idWZmZXIgPSBpbmxpbmVCdWZmZXIoKTsKICAgICAgICAgICAgIG1fY2FwYWNpdHkg
PSBpbmxpbmVDYXBhY2l0eTsKLSAgICAgICAgICAgIHVwZGF0ZU1hc2soKTsKICAgICAgICAgfQog
ICAgIH0KIApAQCAtNDg5LDcgKzQ3Miw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBC
YXNlOjp0cnlBbGxvY2F0ZUJ1ZmZlcihuZXdDYXBhY2l0eSk7CiAgICAgICAgIG1fYnVmZmVyID0g
aW5saW5lQnVmZmVyKCk7CiAgICAgICAgIG1fY2FwYWNpdHkgPSBpbmxpbmVDYXBhY2l0eTsKLSAg
ICAgICAgdXBkYXRlTWFzaygpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTUx
NywyMyArNDk5LDE5IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKGJ1ZmZlcigpID09IGlubGluZUJ1
ZmZlcigpICYmIG90aGVyLmJ1ZmZlcigpID09IG90aGVyLmlubGluZUJ1ZmZlcigpKSB7CiAgICAg
ICAgICAgICBzd2FwSW5saW5lQnVmZmVyKG90aGVyLCBteVNpemUsIG90aGVyU2l6ZSk7CiAgICAg
ICAgICAgICBzdGQ6OnN3YXAobV9jYXBhY2l0eSwgb3RoZXIubV9jYXBhY2l0eSk7Ci0gICAgICAg
ICAgICBzdGQ6OnN3YXAobV9tYXNrLCBvdGhlci5tX21hc2spOwogICAgICAgICB9IGVsc2UgaWYg
KGJ1ZmZlcigpID09IGlubGluZUJ1ZmZlcigpKSB7CiAgICAgICAgICAgICBtX2J1ZmZlciA9IG90
aGVyLm1fYnVmZmVyOwogICAgICAgICAgICAgb3RoZXIubV9idWZmZXIgPSBvdGhlci5pbmxpbmVC
dWZmZXIoKTsKICAgICAgICAgICAgIHN3YXBJbmxpbmVCdWZmZXIob3RoZXIsIG15U2l6ZSwgMCk7
CiAgICAgICAgICAgICBzdGQ6OnN3YXAobV9jYXBhY2l0eSwgb3RoZXIubV9jYXBhY2l0eSk7Ci0g
ICAgICAgICAgICBzdGQ6OnN3YXAobV9tYXNrLCBvdGhlci5tX21hc2spOwogICAgICAgICB9IGVs
c2UgaWYgKG90aGVyLmJ1ZmZlcigpID09IG90aGVyLmlubGluZUJ1ZmZlcigpKSB7CiAgICAgICAg
ICAgICBvdGhlci5tX2J1ZmZlciA9IG1fYnVmZmVyOwogICAgICAgICAgICAgbV9idWZmZXIgPSBp
bmxpbmVCdWZmZXIoKTsKICAgICAgICAgICAgIHN3YXBJbmxpbmVCdWZmZXIob3RoZXIsIDAsIG90
aGVyU2l6ZSk7CiAgICAgICAgICAgICBzdGQ6OnN3YXAobV9jYXBhY2l0eSwgb3RoZXIubV9jYXBh
Y2l0eSk7Ci0gICAgICAgICAgICBzdGQ6OnN3YXAobV9tYXNrLCBvdGhlci5tX21hc2spOwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgc3RkOjpzd2FwKG1fYnVmZmVyLCBvdGhlci5tX2J1
ZmZlcik7CiAgICAgICAgICAgICBzdGQ6OnN3YXAobV9jYXBhY2l0eSwgb3RoZXIubV9jYXBhY2l0
eSk7Ci0gICAgICAgICAgICBzdGQ6OnN3YXAobV9tYXNrLCBvdGhlci5tX21hc2spOwogICAgICAg
ICB9CiAgICAgfQogCkBAIC01NDMsNyArNTIxLDYgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICBtX2J1ZmZlciA9IGlubGluZUJ1ZmZlcigpOwogICAgICAgICBtX2NhcGFj
aXR5ID0gaW5saW5lQ2FwYWNpdHk7Ci0gICAgICAgIHVwZGF0ZU1hc2soKTsKICAgICB9CiAKICNp
ZiBBU0FOX0VOQUJMRUQKQEAgLTU3MSwxMyArNTQ4LDExIEBAIHB1YmxpYzoKICAgICB9CiAKIHBy
b3RlY3RlZDoKLSAgICB1c2luZyBCYXNlOjptX21hc2s7CiAgICAgdXNpbmcgQmFzZTo6bV9zaXpl
OwogCiBwcml2YXRlOgogICAgIHVzaW5nIEJhc2U6Om1fYnVmZmVyOwogICAgIHVzaW5nIEJhc2U6
Om1fY2FwYWNpdHk7Ci0gICAgdXNpbmcgQmFzZTo6dXBkYXRlTWFzazsKICAgICAKICAgICB2b2lk
IHN3YXBJbmxpbmVCdWZmZXIoVmVjdG9yQnVmZmVyJiBvdGhlciwgc2l6ZV90IG15U2l6ZSwgc2l6
ZV90IG90aGVyU2l6ZSkKICAgICB7CkBAIC03MTMsMjMgKzY4OCwyMyBAQCBwdWJsaWM6CiAgICAg
ewogICAgICAgICBpZiAoVU5MSUtFTFkoaSA+PSBzaXplKCkpKQogICAgICAgICAgICAgT3ZlcmZs
b3dIYW5kbGVyOjpvdmVyZmxvd2VkKCk7Ci0gICAgICAgIHJldHVybiBCYXNlOjpidWZmZXIoKVtp
ICYgbV9tYXNrXTsKKyAgICAgICAgcmV0dXJuIEJhc2U6OmJ1ZmZlcigpW2ldOwogICAgIH0KICAg
ICBjb25zdCBUJiBhdChzaXplX3QgaSkgY29uc3QgCiAgICAgewogICAgICAgICBpZiAoVU5MSUtF
TFkoaSA+PSBzaXplKCkpKQogICAgICAgICAgICAgT3ZlcmZsb3dIYW5kbGVyOjpvdmVyZmxvd2Vk
KCk7Ci0gICAgICAgIHJldHVybiBCYXNlOjpidWZmZXIoKVtpICYgbV9tYXNrXTsKKyAgICAgICAg
cmV0dXJuIEJhc2U6OmJ1ZmZlcigpW2ldOwogICAgIH0KICAgICBUJiBhdChDaGVja2VkPHNpemVf
dD4gaSkKICAgICB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGkgPCBzaXplKCkpOwotICAgICAg
ICByZXR1cm4gQmFzZTo6YnVmZmVyKClbaSAmIG1fbWFza107CisgICAgICAgIHJldHVybiBCYXNl
OjpidWZmZXIoKVtpXTsKICAgICB9CiAgICAgY29uc3QgVCYgYXQoQ2hlY2tlZDxzaXplX3Q+IGkp
IGNvbnN0CiAgICAgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChpIDwgc2l6ZSgpKTsKLSAgICAg
ICAgcmV0dXJuIEJhc2U6OmJ1ZmZlcigpW2kgJiBtX21hc2tdOworICAgICAgICByZXR1cm4gQmFz
ZTo6YnVmZmVyKClbaV07CiAgICAgfQogCiAgICAgVCYgb3BlcmF0b3JbXShzaXplX3QgaSkgeyBy
ZXR1cm4gYXQoaSk7IH0KQEAgLTg3Myw3ICs4NDgsNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBh
c2FuQnVmZmVyU2l6ZVdpbGxDaGFuZ2VUbyhzaXplX3QpOwogCi0gICAgdXNpbmcgQmFzZTo6bV9t
YXNrOwogICAgIHVzaW5nIEJhc2U6Om1fc2l6ZTsKICAgICB1c2luZyBCYXNlOjpidWZmZXI7CiAg
ICAgdXNpbmcgQmFzZTo6Y2FwYWNpdHk7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0ltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5j
cHAJKHJldmlzaW9uIDIzMDExNCkKKysrIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAKIHVz
aW5nIG5hbWVzcGFjZSBVbmljb2RlOwogCi1zdGF0aWNfYXNzZXJ0KHNpemVvZihTdHJpbmdJbXBs
KSA9PSAyICogc2l6ZW9mKGludCkgKyBzaXplb2Yodm9pZCopICsgMiAqIHNpemVvZihpbnQpLCAi
U3RyaW5nSW1wbCBzaG91bGQgc3RheSBzbWFsbCIpOworc3RhdGljX2Fzc2VydChzaXplb2YoU3Ry
aW5nSW1wbCkgPT0gMiAqIHNpemVvZihpbnQpICsgMiAqIHNpemVvZih2b2lkKiksICJTdHJpbmdJ
bXBsIHNob3VsZCBzdGF5IHNtYWxsIik7CiAKICNpZiBTVFJJTkdfU1RBVFMKIFN0cmluZ1N0YXRz
IFN0cmluZ0ltcGw6Om1fc3RyaW5nU3RhdHM7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwu
aAkocmV2aXNpb24gMjMwMTE0KQorKysgU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE0OCw3ICsxNDgsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGNv
bnN0IGNoYXIxNl90KiBtX2RhdGExNkNoYXI7CiAgICAgfTsKICAgICBtdXRhYmxlIHVuc2lnbmVk
IG1faGFzaEFuZEZsYWdzOwotICAgIHVuc2lnbmVkIG1fbWFzazsKIH07CiAKIC8vIEZJWE1FOiBV
c2Ugb2YgU3RyaW5nSW1wbCBhbmQgY29uc3QgaXMgcmF0aGVyIGNvbmZ1c2VkLgpAQCAtMjU0LDcg
KzI1Myw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdW5zaWduZWQgZmxhZ0lzOEJpdCgpIHsgcmV0
dXJuIHNfaGFzaEZsYWc4Qml0QnVmZmVyOyB9CiAgICAgc3RhdGljIHVuc2lnbmVkIGZsYWdJc0F0
b21pYygpIHsgcmV0dXJuIHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNBdG9taWM7IH0KICAgICBzdGF0
aWMgdW5zaWduZWQgZmxhZ0lzU3ltYm9sKCkgeyByZXR1cm4gc19oYXNoRmxhZ1N0cmluZ0tpbmRJ
c1N5bWJvbDsgfQotICAgIHN0YXRpYyB1bnNpZ25lZCBtYXNrT2Zmc2V0KCkgeyByZXR1cm4gT0JK
RUNUX09GRlNFVE9GKFN0cmluZ0ltcGwsIG1fbWFzayk7IH0KICAgICBzdGF0aWMgdW5zaWduZWQg
bWFza1N0cmluZ0tpbmQoKSB7IHJldHVybiBzX2hhc2hNYXNrU3RyaW5nS2luZDsgfQogICAgIHN0
YXRpYyB1bnNpZ25lZCBkYXRhT2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cmlu
Z0ltcGwsIG1fZGF0YTgpOyB9CiAKQEAgLTI2NSw3ICsyNjMsNiBAQCBwdWJsaWM6CiAgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gYWRvcHQoU3RyaW5nQnVmZmVy
PExDaGFyPiYmKTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVu
Z3RoOyB9Ci0gICAgdW5zaWduZWQgbWFzaygpIGNvbnN0IHsgcmV0dXJuIG1fbWFzazsgfQogICAg
IHN0YXRpYyBwdHJkaWZmX3QgbGVuZ3RoTWVtb3J5T2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKFN0cmluZ0ltcGwsIG1fbGVuZ3RoKTsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
IHsgcmV0dXJuICFtX2xlbmd0aDsgfQogCkBAIC03NTgsNyArNzU1LDYgQEAgaW5saW5lIFN0cmlu
Z0ltcGxTaGFwZTo6U3RyaW5nSW1wbFNoYXBlKAogICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAg
ICwgbV9kYXRhOChkYXRhOCkKICAgICAsIG1faGFzaEFuZEZsYWdzKGhhc2hBbmRGbGFncykKLSAg
ICAsIG1fbWFzayhtYXNrRm9yU2l6ZShsZW5ndGgpKQogewogfQogCkBAIC03NjcsNyArNzYzLDYg
QEAgaW5saW5lIFN0cmluZ0ltcGxTaGFwZTo6U3RyaW5nSW1wbFNoYXBlKAogICAgICwgbV9sZW5n
dGgobGVuZ3RoKQogICAgICwgbV9kYXRhMTYoZGF0YTE2KQogICAgICwgbV9oYXNoQW5kRmxhZ3Mo
aGFzaEFuZEZsYWdzKQotICAgICwgbV9tYXNrKG1hc2tGb3JTaXplKGxlbmd0aCkpCiB7CiB9CiAK
QEAgLTc3Niw3ICs3NzEsNiBAQCB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4gaW5s
aW5lCiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgLCBtX2RhdGE4Q2hhcihjaGFyYWN0ZXJz
KQogICAgICwgbV9oYXNoQW5kRmxhZ3MoaGFzaEFuZEZsYWdzKQotICAgICwgbV9tYXNrKG1hc2tG
b3JTaXplKGxlbmd0aCkpCiB7CiB9CiAKQEAgLTc4NSw3ICs3NzksNiBAQCB0ZW1wbGF0ZTx1bnNp
Z25lZCBjaGFyYWN0ZXJDb3VudD4gaW5saW5lCiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAg
LCBtX2RhdGExNkNoYXIoY2hhcmFjdGVycykKICAgICAsIG1faGFzaEFuZEZsYWdzKGhhc2hBbmRG
bGFncykKLSAgICAsIG1fbWFzayhtYXNrRm9yU2l6ZShsZW5ndGgpKQogewogfQogCkBAIC0xMDc4
LDcgKzEwNzEsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgU3RyaW5nSW1wbDo6Y29weUNoYXJhCiBp
bmxpbmUgVUNoYXIgU3RyaW5nSW1wbDo6YXQodW5zaWduZWQgaSkgY29uc3QKIHsKICAgICBBU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpIDwgbV9sZW5ndGgpOwotICAgIHJldHVybiBp
czhCaXQoKSA/IG1fZGF0YThbaSAmIG1fbWFza10gOiBtX2RhdGExNltpICYgbV9tYXNrXTsKKyAg
ICByZXR1cm4gaXM4Qml0KCkgPyBtX2RhdGE4W2ldIDogbV9kYXRhMTZbaV07CiB9CiAKIGlubGlu
ZSB2b2lkIFN0cmluZ0ltcGw6OmFzc2VydENhZ2VkKCkgY29uc3QKQEAgLTExMjIsNyArMTExNSw3
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBzaXplX3QgU3RyaW4KICAgICAvLyBNU1ZD
IGRvZXNuJ3Qgc3VwcG9ydCBhbGlnbm9mIHlldC4KICAgICByZXR1cm4gcm91bmRVcFRvTXVsdGlw
bGVPZjxzaXplb2YoVCk+KHNpemVvZihTdHJpbmdJbXBsKSk7CiAjZWxzZQotICAgIHJldHVybiBy
b3VuZFVwVG9NdWx0aXBsZU9mPGFsaWdub2YoVCk+KG9mZnNldG9mKFN0cmluZ0ltcGwsIG1fbWFz
aykgKyBzaXplb2YoU3RyaW5nSW1wbDo6bV9tYXNrKSk7CisgICAgcmV0dXJuIHJvdW5kVXBUb011
bHRpcGxlT2Y8YWxpZ25vZihUKT4ob2Zmc2V0b2YoU3RyaW5nSW1wbCwgbV9oYXNoQW5kRmxhZ3Mp
ICsgc2l6ZW9mKFN0cmluZ0ltcGw6Om1faGFzaEFuZEZsYWdzKSk7CiAjZW5kaWYKIH0KIApJbmRl
eDogU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgJKHJldmlzaW9uIDIzMDExNCkKKysrIFNvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksOCArMTU5LDYg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBMQ2hhciosIHVuc2lnbmVk
IGxlbmd0aCk7CiAgICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVu
Z3RoKTsKLSAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgTENoYXIqLCB1bnNpZ25lZCBsZW5ndGgs
IHVuc2lnbmVkIG1hc2spOwotICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBVQ2hhciosIHVuc2ln
bmVkIGxlbmd0aCwgdW5zaWduZWQgbWFzayk7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlLCB0eXBlbmFtZSBNYXRjaGVkQ2hhcmFjdGVyUHJlZGljYXRlPgogICAgIFN0cmlu
Z1ZpZXcgc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdNYXRjaGVkQ2hhcmFjdGVycyhjb25zdCBDaGFy
YWN0ZXJUeXBlKiwgY29uc3QgTWF0Y2hlZENoYXJhY3RlclByZWRpY2F0ZSYpOwpAQCAtMTc4LDcg
KzE3Niw2IEBAIHByaXZhdGU6CiAKICAgICBjb25zdCB2b2lkKiBtX2NoYXJhY3RlcnMgeyBudWxs
cHRyIH07CiAgICAgdW5zaWduZWQgbV9sZW5ndGggeyAwIH07Ci0gICAgdW5zaWduZWQgbV9tYXNr
IHsgMCB9OwogICAgIGJvb2wgbV9pczhCaXQgeyB0cnVlIH07CiAKICNpZiBDSEVDS19TVFJJTkdW
SUVXX0xJRkVUSU1FCkBAIC0yMzEsNyArMjI4LDYgQEAgaW5saW5lIFN0cmluZ1ZpZXc6On5TdHJp
bmdWaWV3KCkKIGlubGluZSBTdHJpbmdWaWV3OjpTdHJpbmdWaWV3KFN0cmluZ1ZpZXcmJiBvdGhl
cikKICAgICA6IG1fY2hhcmFjdGVycyhvdGhlci5tX2NoYXJhY3RlcnMpCiAgICAgLCBtX2xlbmd0
aChvdGhlci5tX2xlbmd0aCkKLSAgICAsIG1fbWFzayhvdGhlci5tX21hc2spCiAgICAgLCBtX2lz
OEJpdChvdGhlci5tX2lzOEJpdCkKIHsKICAgICBBU1NFUlQob3RoZXIudW5kZXJseWluZ1N0cmlu
Z0lzVmFsaWQoKSk7CkBAIC0yNDUsNyArMjQxLDYgQEAgaW5saW5lIFN0cmluZ1ZpZXc6OlN0cmlu
Z1ZpZXcoU3RyaW5nVmlldwogaW5saW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcoY29uc3QgU3Ry
aW5nVmlldyYgb3RoZXIpCiAgICAgOiBtX2NoYXJhY3RlcnMob3RoZXIubV9jaGFyYWN0ZXJzKQog
ICAgICwgbV9sZW5ndGgob3RoZXIubV9sZW5ndGgpCi0gICAgLCBtX21hc2sob3RoZXIubV9tYXNr
KQogICAgICwgbV9pczhCaXQob3RoZXIubV9pczhCaXQpCiB7CiAgICAgQVNTRVJUKG90aGVyLnVu
ZGVybHlpbmdTdHJpbmdJc1ZhbGlkKCkpOwpAQCAtMjU5LDcgKzI1NCw2IEBAIGlubGluZSBTdHJp
bmdWaWV3JiBTdHJpbmdWaWV3OjpvcGVyYXRvcj0KIAogICAgIG1fY2hhcmFjdGVycyA9IG90aGVy
Lm1fY2hhcmFjdGVyczsKICAgICBtX2xlbmd0aCA9IG90aGVyLm1fbGVuZ3RoOwotICAgIG1fbWFz
ayA9IG90aGVyLm1fbWFzazsKICAgICBtX2lzOEJpdCA9IG90aGVyLm1faXM4Qml0OwogCiAgICAg
b3RoZXIuY2xlYXIoKTsKQEAgLTI3Niw3ICsyNzAsNiBAQCBpbmxpbmUgU3RyaW5nVmlldyYgU3Ry
aW5nVmlldzo6b3BlcmF0b3I9CiAKICAgICBtX2NoYXJhY3RlcnMgPSBvdGhlci5tX2NoYXJhY3Rl
cnM7CiAgICAgbV9sZW5ndGggPSBvdGhlci5tX2xlbmd0aDsKLSAgICBtX21hc2sgPSBvdGhlci5t
X21hc2s7CiAgICAgbV9pczhCaXQgPSBvdGhlci5tX2lzOEJpdDsKIAogICAgIHNldFVuZGVybHlp
bmdTdHJpbmcob3RoZXIpOwpAQCAtMjg3LDI3ICsyODAsMTUgQEAgaW5saW5lIFN0cmluZ1ZpZXcm
IFN0cmluZ1ZpZXc6Om9wZXJhdG9yPQogCiBpbmxpbmUgdm9pZCBTdHJpbmdWaWV3Ojppbml0aWFs
aXplKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiB7Ci0gICAgaW5p
dGlhbGl6ZShjaGFyYWN0ZXJzLCBsZW5ndGgsIG1hc2tGb3JTaXplKGxlbmd0aCkpOwotfQotCi1p
bmxpbmUgdm9pZCBTdHJpbmdWaWV3Ojppbml0aWFsaXplKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJz
LCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgaW5pdGlhbGl6ZShjaGFyYWN0ZXJzLCBsZW5ndGgs
IG1hc2tGb3JTaXplKGxlbmd0aCkpOwotfQotCi1pbmxpbmUgdm9pZCBTdHJpbmdWaWV3Ojppbml0
aWFsaXplKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVk
IG1hc2spCi17CiAgICAgbV9jaGFyYWN0ZXJzID0gY2hhcmFjdGVyczsKICAgICBtX2xlbmd0aCA9
IGxlbmd0aDsKLSAgICBtX21hc2sgPSBtYXNrOwogICAgIG1faXM4Qml0ID0gdHJ1ZTsKIH0KIAot
aW5saW5lIHZvaWQgU3RyaW5nVmlldzo6aW5pdGlhbGl6ZShjb25zdCBVQ2hhciogY2hhcmFjdGVy
cywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBtYXNrKQoraW5saW5lIHZvaWQgU3RyaW5nVmll
dzo6aW5pdGlhbGl6ZShjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQog
ewogICAgIG1fY2hhcmFjdGVycyA9IGNoYXJhY3RlcnM7CiAgICAgbV9sZW5ndGggPSBsZW5ndGg7
Ci0gICAgbV9tYXNrID0gbWFzazsKICAgICBtX2lzOEJpdCA9IGZhbHNlOwogfQogCkBAIC0zMzAs
OSArMzExLDkgQEAgaW5saW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcoY29uc3QgU3RyaQogewog
ICAgIHNldFVuZGVybHlpbmdTdHJpbmcoJnN0cmluZyk7CiAgICAgaWYgKHN0cmluZy5pczhCaXQo
KSkKLSAgICAgICAgaW5pdGlhbGl6ZShzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0
aCgpLCBzdHJpbmcubWFzaygpKTsKKyAgICAgICAgaW5pdGlhbGl6ZShzdHJpbmcuY2hhcmFjdGVy
czgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKICAgICBlbHNlCi0gICAgICAgIGluaXRpYWxpemUoc3Ry
aW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCksIHN0cmluZy5tYXNrKCkpOworICAg
ICAgICBpbml0aWFsaXplKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpKTsK
IH0KIAogaW5saW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcoY29uc3QgU3RyaW5nSW1wbCogc3Ry
aW5nKQpAQCAtMzQyLDkgKzMyMyw5IEBAIGlubGluZSBTdHJpbmdWaWV3OjpTdHJpbmdWaWV3KGNv
bnN0IFN0cmkKIAogICAgIHNldFVuZGVybHlpbmdTdHJpbmcoc3RyaW5nKTsKICAgICBpZiAoc3Ry
aW5nLT5pczhCaXQoKSkKLSAgICAgICAgaW5pdGlhbGl6ZShzdHJpbmctPmNoYXJhY3RlcnM4KCks
IHN0cmluZy0+bGVuZ3RoKCksIHN0cmluZy0+bWFzaygpKTsKKyAgICAgICAgaW5pdGlhbGl6ZShz
dHJpbmctPmNoYXJhY3RlcnM4KCksIHN0cmluZy0+bGVuZ3RoKCkpOwogICAgIGVsc2UKLSAgICAg
ICAgaW5pdGlhbGl6ZShzdHJpbmctPmNoYXJhY3RlcnMxNigpLCBzdHJpbmctPmxlbmd0aCgpLCBz
dHJpbmctPm1hc2soKSk7CisgICAgICAgIGluaXRpYWxpemUoc3RyaW5nLT5jaGFyYWN0ZXJzMTYo
KSwgc3RyaW5nLT5sZW5ndGgoKSk7CiB9CiAKIGlubGluZSBTdHJpbmdWaWV3OjpTdHJpbmdWaWV3
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQpAQCAtMzU1LDEwICszMzYsMTAgQEAgaW5saW5lIFN0cmlu
Z1ZpZXc6OlN0cmluZ1ZpZXcoY29uc3QgU3RyaQogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IGlmIChzdHJpbmcuaXM4Qml0KCkpIHsKLSAgICAgICAgaW5pdGlhbGl6ZShzdHJpbmcuY2hhcmFj
dGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpLCBzdHJpbmcubWFzaygpKTsKKyAgICAgICAgaW5pdGlh
bGl6ZShzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBpbml0aWFsaXplKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5n
Lmxlbmd0aCgpLCBzdHJpbmcubWFzaygpKTsKKyAgICBpbml0aWFsaXplKHN0cmluZy5jaGFyYWN0
ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpKTsKIH0KIAogaW5saW5lIFN0cmluZ1ZpZXc6OlN0cmlu
Z1ZpZXcoY29uc3QgQXRvbWljU3RyaW5nJiBhdG9taWNTdHJpbmcpCkBAIC0zNzAsNyArMzUxLDYg
QEAgaW5saW5lIHZvaWQgU3RyaW5nVmlldzo6Y2xlYXIoKQogewogICAgIG1fY2hhcmFjdGVycyA9
IG51bGxwdHI7CiAgICAgbV9sZW5ndGggPSAwOwotICAgIG1fbWFzayA9IDA7CiAgICAgbV9pczhC
aXQgPSB0cnVlOwogfQogCkBAIC00NTksOCArNDM5LDggQEAgaW5saW5lIFVDaGFyIFN0cmluZ1Zp
ZXc6Om9wZXJhdG9yW10odW5zaQogewogICAgIEFTU0VSVChpbmRleCA8IGxlbmd0aCgpKTsKICAg
ICBpZiAoaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBjaGFyYWN0ZXJzOCgpW2luZGV4ICYgbV9t
YXNrXTsKLSAgICByZXR1cm4gY2hhcmFjdGVyczE2KClbaW5kZXggJiBtX21hc2tdOworICAgICAg
ICByZXR1cm4gY2hhcmFjdGVyczgoKVtpbmRleF07CisgICAgcmV0dXJuIGNoYXJhY3RlcnMxNigp
W2luZGV4XTsKIH0KIAogaW5saW5lIGJvb2wgU3RyaW5nVmlldzo6Y29udGFpbnMoVUNoYXIgY2hh
cmFjdGVyKSBjb25zdApJbmRleDogU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCShyZXZpc2lvbiAyMzAx
MTQpCisrKyBTb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDksNyArMTQ5LDYgQEAgcHVibGljOgogICAgIFJlZlB0cjxTdHJpbmdJbXBsPiByZWxlYXNl
SW1wbCgpIHsgcmV0dXJuIFdURk1vdmUobV9pbXBsKTsgfQogCiAgICAgdW5zaWduZWQgbGVuZ3Ro
KCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5sZW5ndGgoKSA6IDA7IH0KLSAgICB1
bnNpZ25lZCBtYXNrKCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5tYXNrKCkgOiAw
OyB9CiAgICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4KCkgY29uc3QgeyByZXR1cm4gbV9pbXBs
ID8gbV9pbXBsLT5jaGFyYWN0ZXJzOCgpIDogbnVsbHB0cjsgfQogICAgIGNvbnN0IFVDaGFyKiBj
aGFyYWN0ZXJzMTYoKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmNoYXJhY3RlcnMx
NigpIDogbnVsbHB0cjsgfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>