<?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>184313</bug_id>
          
          <creation_ts>2018-04-04 12:29:10 -0700</creation_ts>
          <short_desc>Remove poisoning of typed array vector</short_desc>
          <delta_ts>2018-04-04 13:30:27 -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>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>1411833</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-04-04 12:29:10 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411837</commentid>
    <comment_count>1</comment_count>
      <attachid>337207</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-04-04 12:35:57 -0700</bug_when>
    <thetext>Created attachment 337207
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411839</commentid>
    <comment_count>2</comment_count>
      <attachid>337207</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-04-04 12:39:43 -0700</bug_when>
    <thetext>Comment on attachment 337207
the patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411858</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-04-04 13:29:59 -0700</bug_when>
    <thetext>Landed in https://trac.webkit.org/changeset/230273/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411859</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-04-04 13:30:27 -0700</bug_when>
    <thetext>&lt;rdar://problem/39185914&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337207</attachid>
            <date>2018-04-04 12:35:57 -0700</date>
            <delta_ts>2018-04-04 12:39:43 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>43086</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjMwMjY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBA
CisyMDE4LTA0LTA0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
UmVtb3ZlIHBvaXNvbmluZyBvZiB0eXBlZCBhcnJheSB2ZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDMxMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmNoZWNrQXJyYXkpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6Omp1bXBGb3JUeXBlZEFycmF5SXNOZXV0ZXJlZElmT3V0T2ZCb3VuZHMpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFn
ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBlZEFy
cmF5Qnl0ZU9mZnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVOZXdUeXBlZEFycmF5V2l0aFNpemUpOgorICAgICAgICAqIGZ0bC9GVExBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5Lmg6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRJbmRleGVkUHJvcGVydHlT
dG9yYWdlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdl
dFR5cGVkQXJyYXlCeXRlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZU5ld1R5cGVkQXJyYXkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpzcGVjdWxhdGVUeXBlZEFycmF5SXNOb3ROZXV0ZXJlZCk6CisgICAgICAgICog
aml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRyaW5zaWNHZXR0ZXJB
Y2Nlc3NDYXNlOjplbWl0SW50cmluc2ljR2V0dGVyKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRJbnRUeXBlZEFycmF5R2V0QnlW
YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlHZXRCeVZhbCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFsKToKKyAgICAgICAgKiBsbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtOgorICAgICAgICAqIG9mZmxpbmVhc20vYXJtNjQucmI6CisgICAgICAgICogb2Zm
bGluZWFzbS94ODYucmI6CisgICAgICAgICogcnVudGltZS9DYWdlZEJhcnJpZXJQdHIuaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcDoKKyAgICAgICAgKEpTQzo6SlNB
cnJheUJ1ZmZlclZpZXc6OkpTQXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgKEpTQzo6SlNBcnJh
eUJ1ZmZlclZpZXc6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6
Om5ldXRlcik6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oOgorICAgICAg
ICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6dmVjdG9yIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
SlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNBcnJh
eUJ1ZmZlclZpZXc6Om9mZnNldE9mUG9pc29uZWRWZWN0b3IpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpKU0FycmF5QnVmZmVyVmlldzo6cG9pc29uRm9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6SlNBcnJheUJ1ZmZlclZpZXc6OlBvaXNvbjo6a2V5KTogRGVsZXRlZC4KKyAgICAgICAgKiBy
dW50aW1lL0pTQ1BvaXNvbi5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxpemVQb2lzb24pOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNDUG9pc29uLmg6CisgICAgICAgICogcnVudGltZS9KU0dlbmVy
aWNUeXBlZEFycmF5Vmlld0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OmVzdGltYXRlZFNpemUpOgorICAgICAgICAoSlNDOjpKU0dlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6
OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzbG93RG93bkFuZFdhc3RlTWVtb3J5
KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisKIDIwMTgtMDQtMDMgIEZpbGlwIFBp
emxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24ndCBkbyBpbmRleCBtYXNraW5n
IG9yIHBvaXNvbmluZyBmb3IgRGlyZWN0QXJndW1lbnRzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDIzMDI2NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yODg3LDcgKzI4ODcsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1faW5kZXhJbkJs
b2NrLCBTcGVjTm9uZSwgR2V0QnV0dGVyZmx5LCBvcmlnaW4sIEVkZ2UoYXJyYXksIENlbGxVc2Up
KTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgQVNTRVJUKGFycmF5TW9kZS50eXBlKCkg
PT0gQXJyYXk6OlN0cmluZyB8fCBhcnJheU1vZGUudHlwZWRBcnJheVR5cGUoKSAhPSBOb3RUeXBl
ZEFycmF5KTsKICAgICAgICAgcmV0dXJuIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAg
ICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3Jh
Z2UsIG9yaWdpbiwKICAgICAgICAgICAgIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBFZGdl
KGFycmF5LCBLbm93bkNlbGxVc2UpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyMzAyNjUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjgyNiw3ICsyODI2LDcgQEAgSklUQ29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6Omp1
bXBGbwogCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBoYXNOdWxsVmVjdG9yID0gbV9q
aXQuYnJhbmNoVGVzdFB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6WmVybywK
LSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlLCBKU0FycmF5QnVm
ZmVyVmlldzo6b2Zmc2V0T2ZQb2lzb25lZFZlY3RvcigpKSk7CisgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZSwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVj
dG9yKCkpKTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFs
dWVTb3VyY2UoKSwgbm9kZSwgaGFzTnVsbFZlY3Rvcik7CiAgICAgICAgICAgICBub3RXYXN0ZWZ1
bC5saW5rKCZtX2ppdCk7CiAgICAgICAgIH0KQEAgLTY0MjcsMTAgKzY0MjcsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0SW5kZXhlZFByCiAgICAgICAgIGF1dG8gdHlwZWRBcnJh
eVR5cGUgPSBub2RlLT5hcnJheU1vZGUoKS50eXBlZEFycmF5VHlwZSgpOwogICAgICAgICBBU1NF
UlRfVU5VU0VEKHR5cGVkQXJyYXlUeXBlLCBpc1R5cGVkVmlldyh0eXBlZEFycmF5VHlwZSkpOwog
Ci0gICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNB
cnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mUG9pc29uZWRWZWN0b3IoKSksIHN0b3JhZ2VSZWcpOwot
I2lmIEVOQUJMRShQT0lTT04pCi0gICAgICAgIG1faml0LnhvclB0cihKSVRDb21waWxlcjo6VHJ1
c3RlZEltbVB0cihKU0FycmF5QnVmZmVyVmlldzo6cG9pc29uRm9yKHR5cGVkQXJyYXlUeXBlKSks
IHN0b3JhZ2VSZWcpOwotI2VuZGlmCisgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6
OkFkZHJlc3MoYmFzZVJlZywgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpLCBz
dG9yYWdlUmVnKTsKICAgICAgICAgY2FnZVR5cGVkQXJyYXlTdG9yYWdlKHN0b3JhZ2VSZWcpOwog
ICAgICAgICBicmVhazsKICAgICB9CkBAIC02NDUxLDM1ICs2NDQ4LDE5IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRUeXBlZEFycmEKICAgICBBU1NFUlQoYmFzZUdQUiAhPSBkYXRh
R1BSKTsKICAgICBBU1NFUlQodmVjdG9yR1BSICE9IGRhdGFHUFIpOwogCi0jaWYgRU5BQkxFKFBP
SVNPTikKLSAgICBHUFJUZW1wb3JhcnkgcG9pc29uKHRoaXMpOwotICAgIEdQUlRlbXBvcmFyeSBp
bmRleCh0aGlzKTsKLSAgICBHUFJSZWcgcG9pc29uR1BSID0gcG9pc29uLmdwcigpOwotICAgIEdQ
UlJlZyBpbmRleEdQUiA9IGluZGV4LmdwcigpOwotICAgIEdQUlJlZyBhcnJheUJ1ZmZlckdQUiA9
IHBvaXNvbkdQUjsKLSNlbHNlCiAgICAgR1BSUmVnIGFycmF5QnVmZmVyR1BSID0gZGF0YUdQUjsK
LSNlbmRpZgogCiAgICAgSklUQ29tcGlsZXI6Okp1bXAgZW1wdHlCeXRlT2Zmc2V0ID0gbV9qaXQu
YnJhbmNoMzIoCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9m
TW9kZSgpKSwKICAgICAgICAgVHJ1c3RlZEltbTMyKFdhc3RlZnVsVHlwZWRBcnJheSkpOwogCi0g
ICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5
QnVmZmVyVmlldzo6b2Zmc2V0T2ZQb2lzb25lZFZlY3RvcigpKSwgdmVjdG9yR1BSKTsKKyAgICBt
X2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZm
ZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSwgdmVjdG9yR1BSKTsKICAgICBKSVRDb21waWxlcjo6
SnVtcCBudWxsVmVjdG9yID0gbV9qaXQuYnJhbmNoVGVzdFB0cihKSVRDb21waWxlcjo6WmVybywg
dmVjdG9yR1BSKTsKIAogICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YmFzZUdQUiwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgZGF0YUdQUik7CiAgICAgbV9q
aXQuY2FnZShHaWdhY2FnZTo6SlNWYWx1ZSwgZGF0YUdQUik7CiAKLSNpZiBFTkFCTEUoUE9JU09O
KQotICAgIG1faml0LmxvYWQ4KEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6
dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBpbmRleEdQUik7Ci0gICAgbV9qaXQubW92ZShKSVRDb21w
aWxlcjo6VHJ1c3RlZEltbVB0cigmZ190eXBlZEFycmF5UG9pc29ucyksIHBvaXNvbkdQUik7Ci0g
ICAgbV9qaXQuc3ViMzIoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMihGaXJzdFR5cGVkQXJyYXlU
eXBlKSwgaW5kZXhHUFIpOwotICAgIG1faml0LmFuZDMyKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1t
MzIoVHlwZWRBcnJheVBvaXNvbkluZGV4TWFzayksIGluZGV4R1BSKTsKLSAgICBtX2ppdC5sb2Fk
UHRyKEpJVENvbXBpbGVyOjpCYXNlSW5kZXgocG9pc29uR1BSLCBpbmRleEdQUiwgSklUQ29tcGls
ZXI6OnRpbWVzUHRyKCkpLCBwb2lzb25HUFIpOwotICAgIG1faml0LnhvclB0cihwb2lzb25HUFIs
IHZlY3RvckdQUik7Ci0jZW5kaWYKICAgICBjYWdlVHlwZWRBcnJheVN0b3JhZ2UodmVjdG9yR1BS
KTsKIAogICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YUdQUiwg
QnV0dGVyZmx5OjpvZmZzZXRPZkFycmF5QnVmZmVyKCkpLCBhcnJheUJ1ZmZlckdQUik7CkBAIC05
Mzc3LDcgKzkzNTgsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJh
CiAgICAgbV9qaXQuZW1pdEFsbG9jYXRlVmFyaWFibGVTaXplZCgKICAgICAgICAgc3RvcmFnZUdQ
UiwgbV9qaXQudm0oKS0+cHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgc2NyYXRjaEdQ
Uiwgc2NyYXRjaEdQUiwKICAgICAgICAgc2NyYXRjaEdQUjIsIHNsb3dDYXNlcyk7Ci0KKyAgICAK
KyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25lID0gbV9qaXQuYnJhbmNoVGVzdDMyKE1hY3Jv
QXNzZW1ibGVyOjpaZXJvLCBzaXplR1BSKTsKICAgICBtX2ppdC5tb3ZlKHNpemVHUFIsIHNjcmF0
Y2hHUFIpOwogICAgIGlmIChlbGVtZW50U2l6ZSh0eXBlZEFycmF5VHlwZSkgIT0gNCkgewogICAg
ICAgICBpZiAoZWxlbWVudFNpemUodHlwZWRBcnJheVR5cGUpID4gNCkKQEAgLTkzOTUsMjMgKzkz
NzcsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYQogICAgICAg
ICBUcnVzdGVkSW1tMzIoMCksCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3Rv
cmFnZUdQUiwgc2NyYXRjaEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRm91cikpOwogICAgIG1f
aml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgc2NyYXRjaEdQUikubGlu
a1RvKGxvb3AsICZtX2ppdCk7CisgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAKICAgICBhdXRvIGJ1
dHRlcmZseSA9IFRydXN0ZWRJbW1QdHIobnVsbHB0cik7CiAgICAgZW1pdEFsbG9jYXRlSlNPYmpl
Y3Q8SlNBcnJheUJ1ZmZlclZpZXc+KAogICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIo
c3RydWN0dXJlKSwgYnV0dGVyZmx5LCBzY3JhdGNoR1BSLCBzY3JhdGNoR1BSMiwKICAgICAgICAg
c2xvd0Nhc2VzKTsKIAotI2lmIEVOQUJMRShQT0lTT04pCi0gICAgbV9qaXQubW92ZShzdG9yYWdl
R1BSLCBzY3JhdGNoR1BSKTsKLSAgICBtX2ppdC54b3JQdHIoVHJ1c3RlZEltbVB0cihKU0FycmF5
QnVmZmVyVmlldzo6cG9pc29uRm9yKHR5cGVkQXJyYXlUeXBlKSksIHNjcmF0Y2hHUFIpOwotICAg
IG1faml0LnN0b3JlUHRyKAotICAgICAgICBzY3JhdGNoR1BSLAotICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlBvaXNv
bmVkVmVjdG9yKCkpKTsKLSNlbHNlCiAgICAgbV9qaXQuc3RvcmVQdHIoCiAgICAgICAgIHN0b3Jh
Z2VHUFIsCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNBcnJh
eUJ1ZmZlclZpZXc6Om9mZnNldE9mUG9pc29uZWRWZWN0b3IoKSkpOwotI2VuZGlmCisgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9m
ZnNldE9mVmVjdG9yKCkpKTsKICAgICBtX2ppdC5zdG9yZTMyKAogICAgICAgICBzaXplR1BSLAog
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTQXJyYXlCdWZmZXJW
aWV3OjpvZmZzZXRPZkxlbmd0aCgpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAkocmV2aXNpb24gMjMwMjY1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBGVEwgewogICAgIG1hY3JvKEdldHRlclNldHRlcl9zZXR0ZXIsIEdldHRlclNldHRlcjo6
b2Zmc2V0T2ZTZXR0ZXIoKSkgXAogICAgIG1hY3JvKEpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCwg
SlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpIFwKICAgICBtYWNybyhKU0FycmF5
QnVmZmVyVmlld19tb2RlLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZNb2RlKCkpIFwKLSAg
ICBtYWNybyhKU0FycmF5QnVmZmVyVmlld19wb2lzb25lZFZlY3RvciwgSlNBcnJheUJ1ZmZlclZp
ZXc6Om9mZnNldE9mUG9pc29uZWRWZWN0b3IoKSkgXAorICAgIG1hY3JvKEpTQXJyYXlCdWZmZXJW
aWV3X3ZlY3RvciwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpIFwKICAgICBt
YWNybyhKU0NlbGxfY2VsbFN0YXRlLCBKU0NlbGw6OmNlbGxTdGF0ZU9mZnNldCgpKSBcCiAgICAg
bWFjcm8oSlNDZWxsX2hlYWRlciwgMCkgXAogICAgIG1hY3JvKEpTQ2VsbF9pbmRleGluZ1R5cGVB
bmRNaXNjLCBKU0NlbGw6OmluZGV4aW5nVHlwZUFuZE1pc2NPZmZzZXQoKSkgXApAQCAtMTUwLDgg
KzE1MCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKICAgICBtYWNybyh2YXJp
YWJsZXMsIDAsIHNpemVvZihSZWdpc3RlcikpIFwKICAgICBtYWNybyhIYXNPd25Qcm9wZXJ0eUNh
Y2hlLCAwLCBzaXplb2YoSGFzT3duUHJvcGVydHlDYWNoZTo6RW50cnkpKSBcCiAgICAgbWFjcm8o
SlNGaXhlZEFycmF5X2J1ZmZlciwgSlNGaXhlZEFycmF5OjpvZmZzZXRPZkRhdGEoKSwgc2l6ZW9m
KEVuY29kZWRKU1ZhbHVlKSkgXAotICAgIG1hY3JvKFR5cGVkQXJyYXlQb2lzb25zLCAwLCBzaXpl
b2YodWludHB0cl90KSkgXAotCisgICAgCiAjZGVmaW5lIEZPUl9FQUNIX05VTUJFUkVEX0FCU1RS
QUNUX0hFQVAobWFjcm8pIFwKICAgICBtYWNybyhwcm9wZXJ0aWVzKQogICAgIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24g
MjMwMjY1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNDk1LDEzICszNDk1LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
fQogCiAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBpc1R5cGVkVmlldyhtX25v
ZGUtPmFycmF5TW9kZSgpLnR5cGVkQXJyYXlUeXBlKCkpLCBtX25vZGUtPmFycmF5TW9kZSgpLnR5
cGVkQXJyYXlUeXBlKCkpOwotICAgICAgICBMVmFsdWUgcG9pc29uZWRWZWN0b3IgPSBtX291dC5s
b2FkUHRyKGNlbGwsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfcG9pc29uZWRWZWN0b3IpOwot
I2lmIEVOQUJMRShQT0lTT04pCi0gICAgICAgIGF1dG8gdHlwZWRBcnJheVR5cGUgPSBtX25vZGUt
PmFycmF5TW9kZSgpLnR5cGVkQXJyYXlUeXBlKCk7Ci0gICAgICAgIExWYWx1ZSB2ZWN0b3IgPSBt
X291dC5iaXRYb3IobV9vdXQuY29uc3RJbnRQdHIoSlNBcnJheUJ1ZmZlclZpZXc6OnBvaXNvbkZv
cih0eXBlZEFycmF5VHlwZSkpLCBwb2lzb25lZFZlY3Rvcik7Ci0jZWxzZQotICAgICAgICBMVmFs
dWUgdmVjdG9yID0gcG9pc29uZWRWZWN0b3I7Ci0jZW5kaWYKKyAgICAgICAgTFZhbHVlIHZlY3Rv
ciA9IG1fb3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192ZWN0b3Ip
OwogICAgICAgICBzZXRTdG9yYWdlKGNhZ2VkKEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZlY3Rvcikp
OwogICAgIH0KICAgICAKQEAgLTM1NDAsMjQgKzM1MzQsMTYgQEAgcHJpdmF0ZToKIAogICAgICAg
ICBtX291dC5hcHBlbmRUbyh3YXN0ZWZ1bENhc2UsIG5vdE51bGwpOwogCi0gICAgICAgIExWYWx1
ZSBwb2lzb25lZFZlY3RvciA9IG1fb3V0LmxvYWRQdHIoYmFzZVB0ciwgbV9oZWFwcy5KU0FycmF5
QnVmZmVyVmlld19wb2lzb25lZFZlY3Rvcik7Ci0gICAgICAgIFZhbHVlRnJvbUJsb2NrIG51bGxW
ZWN0b3JPdXQgPSBtX291dC5hbmNob3IocG9pc29uZWRWZWN0b3IpOwotICAgICAgICBtX291dC5i
cmFuY2gocG9pc29uZWRWZWN0b3IsIHVuc3VyZShub3ROdWxsKSwgdW5zdXJlKGNvbnRpbnVhdGlv
bikpOworICAgICAgICBMVmFsdWUgdmVjdG9yID0gbV9vdXQubG9hZFB0cihiYXNlUHRyLCBtX2hl
YXBzLkpTQXJyYXlCdWZmZXJWaWV3X3ZlY3Rvcik7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIG51
bGxWZWN0b3JPdXQgPSBtX291dC5hbmNob3IodmVjdG9yKTsKKyAgICAgICAgbV9vdXQuYnJhbmNo
KHZlY3RvciwgdW5zdXJlKG5vdE51bGwpLCB1bnN1cmUoY29udGludWF0aW9uKSk7CiAKICAgICAg
ICAgbV9vdXQuYXBwZW5kVG8obm90TnVsbCwgY29udGludWF0aW9uKTsKIAogICAgICAgICBMVmFs
dWUgYnV0dGVyZmx5UHRyID0gY2FnZWQoR2lnYWNhZ2U6OkpTVmFsdWUsIG1fb3V0LmxvYWRQdHIo
YmFzZVB0ciwgbV9oZWFwcy5KU09iamVjdF9idXR0ZXJmbHkpKTsKICAgICAgICAgTFZhbHVlIGFy
cmF5QnVmZmVyUHRyID0gbV9vdXQubG9hZFB0cihidXR0ZXJmbHlQdHIsIG1faGVhcHMuQnV0dGVy
Zmx5X2FycmF5QnVmZmVyKTsKIAotI2lmIEVOQUJMRShQT0lTT04pCi0gICAgICAgIExWYWx1ZSBq
c1R5cGUgPSBtX291dC5sb2FkOFplcm9FeHQzMihiYXNlUHRyLCBtX2hlYXBzLkpTQ2VsbF90eXBl
SW5mb1R5cGUpOwotICAgICAgICBMVmFsdWUgdHlwZUluZGV4ID0gbV9vdXQuc3ViKGpzVHlwZSwg
bV9vdXQuY29uc3RJbnQzMihGaXJzdFR5cGVkQXJyYXlUeXBlKSk7Ci0gICAgICAgIExWYWx1ZSBt
YXNrZWRUeXBlSW5kZXggPSBtX291dC56ZXJvRXh0UHRyKG1fb3V0LmJpdEFuZCh0eXBlSW5kZXgs
IG1fb3V0LmNvbnN0SW50MzIoVHlwZWRBcnJheVBvaXNvbkluZGV4TWFzaykpKTsKLSAgICAgICAg
TFZhbHVlIHBvaXNvbnNCYXNlUHRyID0gbV9vdXQuY29uc3RJbnRQdHIoJmdfdHlwZWRBcnJheVBv
aXNvbnMpOwotICAgICAgICBMVmFsdWUgcG9pc29uID0gbV9vdXQubG9hZFB0cihtX291dC5iYXNl
SW5kZXgobV9oZWFwcy5UeXBlZEFycmF5UG9pc29ucywgcG9pc29uc0Jhc2VQdHIsIG1hc2tlZFR5
cGVJbmRleCkpOwotICAgICAgICBwb2lzb25lZFZlY3RvciA9IG1fb3V0LmJpdFhvcihwb2lzb25l
ZFZlY3RvciwgcG9pc29uKTsKLSNlbmRpZgotICAgICAgICBMVmFsdWUgdmVjdG9yUHRyID0gY2Fn
ZWQoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgcG9pc29uZWRWZWN0b3IpOworICAgICAgICBMVmFsdWUg
dmVjdG9yUHRyID0gY2FnZWQoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgdmVjdG9yKTsKIAogICAgICAg
ICAvLyBGSVhNRTogVGhpcyBuZWVkcyBjYWdpbmcuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU1MTUKQEAgLTU5NDYsMTAgKzU5MzIsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgTFZhbHVlIGZhc3RSZXN1bHRWYWx1ZSA9CiAgICAgICAgICAg
ICAgICAgYWxsb2NhdGVPYmplY3Q8SlNBcnJheUJ1ZmZlclZpZXc+KHN0cnVjdHVyZSwgbV9vdXQu
aW50UHRyWmVybywgc2xvd0Nhc2UpOwogCi0jaWYgRU5BQkxFKFBPSVNPTikKLSAgICAgICAgICAg
IHN0b3JhZ2UgPSBtX291dC5iaXRYb3IobV9vdXQuY29uc3RJbnRQdHIoSlNBcnJheUJ1ZmZlclZp
ZXc6OnBvaXNvbkZvcih0eXBlZEFycmF5VHlwZSkpLCBzdG9yYWdlKTsKLSNlbmRpZgotICAgICAg
ICAgICAgbV9vdXQuc3RvcmVQdHIoc3RvcmFnZSwgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpT
QXJyYXlCdWZmZXJWaWV3X3BvaXNvbmVkVmVjdG9yKTsKKyAgICAgICAgICAgIG1fb3V0LnN0b3Jl
UHRyKHN0b3JhZ2UsIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192
ZWN0b3IpOwogICAgICAgICAgICAgbV9vdXQuc3RvcmUzMihzaXplLCBmYXN0UmVzdWx0VmFsdWUs
IG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKICAgICAgICAgICAgIG1fb3V0LnN0
b3JlMzIobV9vdXQuY29uc3RJbnQzMihGYXN0VHlwZWRBcnJheSksIGZhc3RSZXN1bHRWYWx1ZSwg
bV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19tb2RlKTsKICAgICAgICAgICAgIApAQCAtMTU0NTcs
NyArMTU0NDAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgdW5zdXJlKGlzV2FzdGVmdWwpLCB1
bnN1cmUoY29udGludWF0aW9uKSk7CiAKICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBt
X291dC5hcHBlbmRUbyhpc1dhc3RlZnVsLCBjb250aW51YXRpb24pOwotICAgICAgICBMVmFsdWUg
dmVjdG9yID0gbV9vdXQubG9hZFB0cihiYXNlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X3Bv
aXNvbmVkVmVjdG9yKTsKKyAgICAgICAgTFZhbHVlIHZlY3RvciA9IG1fb3V0LmxvYWRQdHIoYmFz
ZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192ZWN0b3IpOwogICAgICAgICBzcGVjdWxhdGUo
VW5jb3VudGFibGUsIGpzVmFsdWVWYWx1ZSh2ZWN0b3IpLCBtX25vZGUsIG1fb3V0LmlzWmVybzY0
KHZlY3RvcikpOwogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSW50cmluc2ljRW1pdHRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JbnRyaW5zaWNFbWl0dGVyLmNwcAkocmV2aXNp
b24gMjMwMjY1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JbnRyaW5zaWNFbWl0dGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwNywzMSArMTA3LDIyIEBAIHZvaWQgSW50cmluc2lj
R2V0dGVyQWNjZXNzQ2FzZTo6ZW1pdEludHIKICAgICBjYXNlIFR5cGVkQXJyYXlCeXRlT2Zmc2V0
SW50cmluc2ljOiB7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc3RhdGUuc2NyYXRjaEdQ
UjsKIAotICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm90RW1wdHlCeXRlT2Zmc2V0ID0gaml0
LmJyYW5jaDMyKAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLAorICAgICAgICBD
Q2FsbEhlbHBlcnM6Okp1bXAgZW1wdHlCeXRlT2Zmc2V0ID0gaml0LmJyYW5jaDMyKAorICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTW9kZSgpKSwK
ICAgICAgICAgICAgIFRydXN0ZWRJbW0zMihXYXN0ZWZ1bFR5cGVkQXJyYXkpKTsKIAotICAgICAg
ICBqaXQubW92ZShUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCB2YWx1ZUdQUik7Ci0gICAgICAgIEND
YWxsSGVscGVyczo6SnVtcCBkb25lID0gaml0Lmp1bXAoKTsKLQotICAgICAgICBub3RFbXB0eUJ5
dGVPZmZzZXQubGluaygmaml0KTsKLQotICAgICAgICAvLyBXZSBuZWVkIHRvIGxvYWQgdGhlIGJ1
dHRlcmZseSBiZWZvcmUgdGhlIHZlY3RvciBiZWNhdXNlIGJhc2VHUFIgYW5kIHZhbHVlR1BSCi0g
ICAgICAgIC8vIGNhbiBiZSB0aGUgc2FtZSByZWdpc3Rlci4KICAgICAgICAgaml0LmxvYWRQdHIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNl
dCgpKSwgc2NyYXRjaEdQUik7Ci0gICAgICAgIGppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlBvaXNvbmVkVmVjdG9y
KCkpLCB2YWx1ZUdQUik7Ci0gICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBudWxsVmVjdG9yID0g
aml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHZhbHVlR1BSKTsKLQotI2lm
IEVOQUJMRShQT0lTT04pCi0gICAgICAgIGF1dG8gdHlwZWRBcnJheVR5cGUgPSBzdHJ1Y3R1cmUo
KS0+Y2xhc3NJbmZvKCktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZTsKLSAgICAgICAgaml0LnhvclB0
cihUcnVzdGVkSW1tUHRyKEpTQXJyYXlCdWZmZXJWaWV3Ojpwb2lzb25Gb3IodHlwZWRBcnJheVR5
cGUpKSwgdmFsdWVHUFIpOwotI2VuZGlmCisgICAgICAgIGppdC5sb2FkUHRyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3Rvcigp
KSwgdmFsdWVHUFIpOwogICAgICAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhzY3JhdGNoR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mQXJyYXlCdWZmZXIoKSksIHNjcmF0Y2hH
UFIpOwogICAgICAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNo
R1BSLCBBcnJheUJ1ZmZlcjo6b2Zmc2V0T2ZEYXRhKCkpLCBzY3JhdGNoR1BSKTsKICAgICAgICAg
aml0LnN1YlB0cihzY3JhdGNoR1BSLCB2YWx1ZUdQUik7CiAKLSAgICAgICAgbnVsbFZlY3Rvci5s
aW5rKCZqaXQpOworICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9uZSA9IGppdC5qdW1wKCk7
CisgICAgICAgIAorICAgICAgICBlbXB0eUJ5dGVPZmZzZXQubGluaygmaml0KTsKKyAgICAgICAg
aml0Lm1vdmUoVHJ1c3RlZEltbVB0cihudWxscHRyKSwgdmFsdWVHUFIpOworICAgICAgICAKICAg
ICAgICAgZG9uZS5saW5rKCZqaXQpOwogICAgICAgICAKICAgICAgICAgaml0LmJveEludDMyKHZh
bHVlR1BSLCB2YWx1ZVJlZ3MpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHJldmlzaW9uIDIzMDI2NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MTQ2OSw5ICsxNDY5LDkgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRTY29wZWRBcmd1bWVudHNH
ZQogICAgIHJldHVybiBzbG93Q2FzZXM7CiB9CiAKLUpJVDo6SnVtcExpc3QgSklUOjplbWl0SW50
VHlwZWRBcnJheUdldEJ5VmFsKEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwg
VHlwZWRBcnJheVR5cGUgdHlwZUFycmF5VHlwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0SW50
VHlwZWRBcnJheUdldEJ5VmFsKEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwg
VHlwZWRBcnJheVR5cGUgdHlwZSkKIHsKLSAgICBBU1NFUlQoaXNJbnQodHlwZUFycmF5VHlwZSkp
OworICAgIEFTU0VSVChpc0ludCh0eXBlKSk7CiAgICAgCiAgICAgLy8gVGhlIGJlc3Qgd2F5IHRv
IHRlc3QgdGhlIGFycmF5IHR5cGUgaXMgdG8gdXNlIHRoZSBjbGFzc0luZm8uIFdlIG5lZWQgdG8g
ZG8gc28gd2l0aG91dAogICAgIC8vIGNsb2JiZXJpbmcgdGhlIHJlZ2lzdGVyIHRoYXQgaG9sZHMg
dGhlIGluZGV4aW5nIHR5cGUsIGJhc2UsIGFuZCBwcm9wZXJ0eS4KQEAgLTE0OTIsMjYgKzE0OTIs
MjIgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRJbnRUeXBlZEFycmF5R2V0QgogI2VuZGlmCiAg
ICAgCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwotICAgIEpTVHlwZSBqc1R5cGUgPSB0eXBlRm9y
VHlwZWRBcnJheVR5cGUodHlwZUFycmF5VHlwZSk7Ci0KKyAgICAKICAgICBsb2FkOChBZGRyZXNz
KGJhc2UsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBzY3JhdGNoKTsKLSAgICBiYWRU
eXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHNjcmF0Y2gsIFRydXN0ZWRJbW0zMihq
c1R5cGUpKTsKKyAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHNjcmF0
Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsKICAgICBzbG93
Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcHJvcGVydHksIEFkZHJlc3MoYmFz
ZSwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpKSk7Ci0gICAgbG9hZFB0cihB
ZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlBvaXNvbmVkVmVjdG9yKCkp
LCBzY3JhdGNoKTsKLSNpZiBFTkFCTEUoUE9JU09OKQotICAgIHhvclB0cihUcnVzdGVkSW1tUHRy
KEpTQXJyYXlCdWZmZXJWaWV3Ojpwb2lzb25Gb3IoanNUeXBlKSksIHNjcmF0Y2gpOwotI2VuZGlm
CisgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZl
Y3RvcigpKSwgc2NyYXRjaCk7CiAgICAgY2FnZUNvbmRpdGlvbmFsbHkoR2lnYWNhZ2U6OlByaW1p
dGl2ZSwgc2NyYXRjaCwgc2NyYXRjaDIpOwogCi0gICAgc3dpdGNoIChlbGVtZW50U2l6ZSh0eXBl
QXJyYXlUeXBlKSkgeworICAgIHN3aXRjaCAoZWxlbWVudFNpemUodHlwZSkpIHsKICAgICBjYXNl
IDE6Ci0gICAgICAgIGlmIChKU0M6OmlzU2lnbmVkKHR5cGVBcnJheVR5cGUpKQorICAgICAgICBp
ZiAoSlNDOjppc1NpZ25lZCh0eXBlKSkKICAgICAgICAgICAgIGxvYWQ4U2lnbmVkRXh0ZW5kVG8z
MihCYXNlSW5kZXgoc2NyYXRjaCwgcHJvcGVydHksIFRpbWVzT25lKSwgcmVzdWx0UGF5bG9hZCk7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGxvYWQ4KEJhc2VJbmRleChzY3JhdGNoLCBwcm9w
ZXJ0eSwgVGltZXNPbmUpLCByZXN1bHRQYXlsb2FkKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSAyOgotICAgICAgICBpZiAoSlNDOjppc1NpZ25lZCh0eXBlQXJyYXlUeXBlKSkKKyAgICAgICAg
aWYgKEpTQzo6aXNTaWduZWQodHlwZSkpCiAgICAgICAgICAgICBsb2FkMTZTaWduZWRFeHRlbmRU
bzMyKEJhc2VJbmRleChzY3JhdGNoLCBwcm9wZXJ0eSwgVGltZXNUd28pLCByZXN1bHRQYXlsb2Fk
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbG9hZDE2KEJhc2VJbmRleChzY3JhdGNoLCBw
cm9wZXJ0eSwgVGltZXNUd28pLCByZXN1bHRQYXlsb2FkKTsKQEAgLTE1MjQsNyArMTUyMCw3IEBA
IEpJVDo6SnVtcExpc3QgSklUOjplbWl0SW50VHlwZWRBcnJheUdldEIKICAgICB9CiAgICAgCiAg
ICAgSnVtcCBkb25lOwotICAgIGlmICh0eXBlQXJyYXlUeXBlID09IFR5cGVVaW50MzIpIHsKKyAg
ICBpZiAodHlwZSA9PSBUeXBlVWludDMyKSB7CiAgICAgICAgIEp1bXAgY2FuQmVJbnQgPSBicmFu
Y2gzMihHcmVhdGVyVGhhbk9yRXF1YWwsIHJlc3VsdFBheWxvYWQsIFRydXN0ZWRJbW0zMigwKSk7
CiAgICAgICAgIAogICAgICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZShyZXN1bHRQYXlsb2FkLCBm
cFJlZ1QwKTsKQEAgLTE1NTAsOSArMTU0Niw5IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0SW50
VHlwZWRBcnJheUdldEIKICAgICByZXR1cm4gc2xvd0Nhc2VzOwogfQogCi1KSVQ6Okp1bXBMaXN0
IEpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheUdldEJ5VmFsKEluc3RydWN0aW9uKiwgUGF0Y2hhYmxl
SnVtcCYgYmFkVHlwZSwgVHlwZWRBcnJheVR5cGUgdHlwZUFycmF5VHlwZSkKK0pJVDo6SnVtcExp
c3QgSklUOjplbWl0RmxvYXRUeXBlZEFycmF5R2V0QnlWYWwoSW5zdHJ1Y3Rpb24qLCBQYXRjaGFi
bGVKdW1wJiBiYWRUeXBlLCBUeXBlZEFycmF5VHlwZSB0eXBlKQogewotICAgIEFTU0VSVChpc0Zs
b2F0KHR5cGVBcnJheVR5cGUpKTsKKyAgICBBU1NFUlQoaXNGbG9hdCh0eXBlKSk7CiAgICAgCiAj
aWYgVVNFKEpTVkFMVUU2NCkKICAgICBSZWdpc3RlcklEIGJhc2UgPSByZWdUMDsKQEAgLTE1NzAs
MTggKzE1NjYsMTQgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlHZQog
I2VuZGlmCiAgICAgCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwotICAgIEpTVHlwZSBqc1R5cGUg
PSB0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZUFycmF5VHlwZSk7CiAKICAgICBsb2FkOChBZGRy
ZXNzKGJhc2UsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBzY3JhdGNoKTsKLSAgICBi
YWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHNjcmF0Y2gsIFRydXN0ZWRJbW0z
Mihqc1R5cGUpKTsKKyAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHNj
cmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsKICAgICBz
bG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcHJvcGVydHksIEFkZHJlc3Mo
YmFzZSwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpKSk7Ci0gICAgbG9hZFB0
cihBZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlBvaXNvbmVkVmVjdG9y
KCkpLCBzY3JhdGNoKTsKLSNpZiBFTkFCTEUoUE9JU09OKQotICAgIHhvclB0cihUcnVzdGVkSW1t
UHRyKEpTQXJyYXlCdWZmZXJWaWV3Ojpwb2lzb25Gb3IoanNUeXBlKSksIHNjcmF0Y2gpOwotI2Vu
ZGlmCisgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRP
ZlZlY3RvcigpKSwgc2NyYXRjaCk7CiAgICAgY2FnZUNvbmRpdGlvbmFsbHkoR2lnYWNhZ2U6OlBy
aW1pdGl2ZSwgc2NyYXRjaCwgc2NyYXRjaDIpOwogICAgIAotICAgIHN3aXRjaCAoZWxlbWVudFNp
emUodHlwZUFycmF5VHlwZSkpIHsKKyAgICBzd2l0Y2ggKGVsZW1lbnRTaXplKHR5cGUpKSB7CiAg
ICAgY2FzZSA0OgogICAgICAgICBsb2FkRmxvYXQoQmFzZUluZGV4KHNjcmF0Y2gsIHByb3BlcnR5
LCBUaW1lc0ZvdXIpLCBmcFJlZ1QwKTsKICAgICAgICAgY29udmVydEZsb2F0VG9Eb3VibGUoZnBS
ZWdUMCwgZnBSZWdUMCk7CkBAIC0xNjA4LDEwICsxNjAwLDEwIEBAIEpJVDo6SnVtcExpc3QgSklU
OjplbWl0RmxvYXRUeXBlZEFycmF5R2UKICAgICByZXR1cm4gc2xvd0Nhc2VzOyAgICAKIH0KIAot
SklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgVHlwZWRBcnJheVR5
cGUgdHlwZUFycmF5VHlwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0SW50VHlwZWRBcnJheVB1
dEJ5VmFsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFBhdGNoYWJsZUp1bXAmIGJh
ZFR5cGUsIFR5cGVkQXJyYXlUeXBlIHR5cGUpCiB7CiAgICAgQXJyYXlQcm9maWxlKiBwcm9maWxl
ID0gY3VycmVudEluc3RydWN0aW9uWzRdLnUuYXJyYXlQcm9maWxlOwotICAgIEFTU0VSVChpc0lu
dCh0eXBlQXJyYXlUeXBlKSk7CisgICAgQVNTRVJUKGlzSW50KHR5cGUpKTsKICAgICAKICAgICBp
bnQgdmFsdWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogCkBAIC0xNjMwLDEw
ICsxNjIyLDkgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRJbnRUeXBlZEFycmF5UHV0QgogI2Vu
ZGlmCiAgICAgCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwotICAgIEpTVHlwZSBqc1R5cGUgPSB0
eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZUFycmF5VHlwZSk7Ci0KKyAgICAKICAgICBsb2FkOChB
ZGRyZXNzKGJhc2UsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBlYXJseVNjcmF0Y2gp
OwotICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgZWFybHlTY3JhdGNo
LCBUcnVzdGVkSW1tMzIoanNUeXBlKSk7CisgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMy
KE5vdEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5
cGUodHlwZSkpKTsKICAgICBKdW1wIGluQm91bmRzID0gYnJhbmNoMzIoQmVsb3csIHByb3BlcnR5
LCBBZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSk7CiAg
ICAgZW1pdEFycmF5UHJvZmlsZU91dE9mQm91bmRzU3BlY2lhbENhc2UocHJvZmlsZSk7CiAgICAg
c2xvd0Nhc2VzLmFwcGVuZChqdW1wKCkpOwpAQCAtMTY0OSwxNSArMTY0MCwxMiBAQCBKSVQ6Okp1
bXBMaXN0IEpJVDo6ZW1pdEludFR5cGVkQXJyYXlQdXRCCiAgICAgCiAgICAgLy8gV2Ugd291bGQg
YmUgbG9hZGluZyB0aGlzIGludG8gYmFzZSBhcyBpbiBnZXRfYnlfdmFsLCBleGNlcHQgdGhhdCB0
aGUgc2xvdwogICAgIC8vIHBhdGggZXhwZWN0cyB0aGUgYmFzZSB0byBiZSB1bmNsb2JiZXJlZC4K
LSAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mUG9p
c29uZWRWZWN0b3IoKSksIGxhdGVTY3JhdGNoKTsKLSNpZiBFTkFCTEUoUE9JU09OKQotICAgIHhv
clB0cihUcnVzdGVkSW1tUHRyKEpTQXJyYXlCdWZmZXJWaWV3Ojpwb2lzb25Gb3IoanNUeXBlKSks
IGxhdGVTY3JhdGNoKTsKLSNlbmRpZgorICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU0FycmF5
QnVmZmVyVmlldzo6b2Zmc2V0T2ZWZWN0b3IoKSksIGxhdGVTY3JhdGNoKTsKICAgICBjYWdlQ29u
ZGl0aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0aXZlLCBsYXRlU2NyYXRjaCwgbGF0ZVNjcmF0Y2gy
KTsKICAgICAKLSAgICBpZiAoaXNDbGFtcGVkKHR5cGVBcnJheVR5cGUpKSB7Ci0gICAgICAgIEFT
U0VSVChlbGVtZW50U2l6ZSh0eXBlQXJyYXlUeXBlKSA9PSAxKTsKLSAgICAgICAgQVNTRVJUKCFK
U0M6OmlzU2lnbmVkKHR5cGVBcnJheVR5cGUpKTsKKyAgICBpZiAoaXNDbGFtcGVkKHR5cGUpKSB7
CisgICAgICAgIEFTU0VSVChlbGVtZW50U2l6ZSh0eXBlKSA9PSAxKTsKKyAgICAgICAgQVNTRVJU
KCFKU0M6OmlzU2lnbmVkKHR5cGUpKTsKICAgICAgICAgSnVtcCBpbkJvdW5kcyA9IGJyYW5jaDMy
KEJlbG93T3JFcXVhbCwgZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIoMHhmZikpOwogICAgICAg
ICBKdW1wIHRvb0JpZyA9IGJyYW5jaDMyKEdyZWF0ZXJUaGFuLCBlYXJseVNjcmF0Y2gsIFRydXN0
ZWRJbW0zMigweGZmKSk7CiAgICAgICAgIHhvcjMyKGVhcmx5U2NyYXRjaCwgZWFybHlTY3JhdGNo
KTsKQEAgLTE2NjgsNyArMTY1Niw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0SW50VHlwZWRB
cnJheVB1dEIKICAgICAgICAgaW5Cb3VuZHMubGluayh0aGlzKTsKICAgICB9CiAgICAgCi0gICAg
c3dpdGNoIChlbGVtZW50U2l6ZSh0eXBlQXJyYXlUeXBlKSkgeworICAgIHN3aXRjaCAoZWxlbWVu
dFNpemUodHlwZSkpIHsKICAgICBjYXNlIDE6CiAgICAgICAgIHN0b3JlOChlYXJseVNjcmF0Y2gs
IEJhc2VJbmRleChsYXRlU2NyYXRjaCwgcHJvcGVydHksIFRpbWVzT25lKSk7CiAgICAgICAgIGJy
ZWFrOwpAQCAtMTY4NSwxMCArMTY3MywxMCBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEludFR5
cGVkQXJyYXlQdXRCCiAgICAgcmV0dXJuIHNsb3dDYXNlczsKIH0KIAotSklUOjpKdW1wTGlzdCBK
SVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBUeXBlZEFycmF5VHlwZSB0eXBlQXJyYXlU
eXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBUeXBl
ZEFycmF5VHlwZSB0eXBlKQogewogICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbls0XS51LmFycmF5UHJvZmlsZTsKLSAgICBBU1NFUlQoaXNGbG9hdCh0eXBlQXJy
YXlUeXBlKSk7CisgICAgQVNTRVJUKGlzRmxvYXQodHlwZSkpOwogICAgIAogICAgIGludCB2YWx1
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAKQEAgLTE3MDcsMTAgKzE2OTUs
OSBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheVB1CiAjZW5kaWYKICAg
ICAKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7Ci0gICAgSlNUeXBlIGpzVHlwZSA9IHR5cGVGb3JU
eXBlZEFycmF5VHlwZSh0eXBlQXJyYXlUeXBlKTsKLQorICAgIAogICAgIGxvYWQ4KEFkZHJlc3Mo
YmFzZSwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIGVhcmx5U2NyYXRjaCk7Ci0gICAg
YmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0
ZWRJbW0zMihqc1R5cGUpKTsKKyAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1
YWwsIGVhcmx5U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBl
KSkpOwogICAgIEp1bXAgaW5Cb3VuZHMgPSBicmFuY2gzMihCZWxvdywgcHJvcGVydHksIEFkZHJl
c3MoYmFzZSwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpKTsKICAgICBlbWl0
QXJyYXlQcm9maWxlT3V0T2ZCb3VuZHNTcGVjaWFsQ2FzZShwcm9maWxlKTsKICAgICBzbG93Q2Fz
ZXMuYXBwZW5kKGp1bXAoKSk7CkBAIC0xNzM5LDEzICsxNzI2LDEwIEBAIEpJVDo6SnVtcExpc3Qg
SklUOjplbWl0RmxvYXRUeXBlZEFycmF5UHUKICAgICAKICAgICAvLyBXZSB3b3VsZCBiZSBsb2Fk
aW5nIHRoaXMgaW50byBiYXNlIGFzIGluIGdldF9ieV92YWwsIGV4Y2VwdCB0aGF0IHRoZSBzbG93
CiAgICAgLy8gcGF0aCBleHBlY3RzIHRoZSBiYXNlIHRvIGJlIHVuY2xvYmJlcmVkLgotICAgIGxv
YWRQdHIoQWRkcmVzcyhiYXNlLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZQb2lzb25lZFZl
Y3RvcigpKSwgbGF0ZVNjcmF0Y2gpOwotI2lmIEVOQUJMRShQT0lTT04pCi0gICAgeG9yUHRyKFRy
dXN0ZWRJbW1QdHIoSlNBcnJheUJ1ZmZlclZpZXc6OnBvaXNvbkZvcihqc1R5cGUpKSwgbGF0ZVNj
cmF0Y2gpOwotI2VuZGlmCisgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJW
aWV3OjpvZmZzZXRPZlZlY3RvcigpKSwgbGF0ZVNjcmF0Y2gpOwogICAgIGNhZ2VDb25kaXRpb25h
bGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUsIGxhdGVTY3JhdGNoLCBsYXRlU2NyYXRjaDIpOwogICAg
IAotICAgIHN3aXRjaCAoZWxlbWVudFNpemUodHlwZUFycmF5VHlwZSkpIHsKKyAgICBzd2l0Y2gg
KGVsZW1lbnRTaXplKHR5cGUpKSB7CiAgICAgY2FzZSA0OgogICAgICAgICBjb252ZXJ0RG91Ymxl
VG9GbG9hdChmcFJlZ1QwLCBmcFJlZ1QwKTsKICAgICAgICAgc3RvcmVGbG9hdChmcFJlZ1QwLCBC
YXNlSW5kZXgobGF0ZVNjcmF0Y2gsIHByb3BlcnR5LCBUaW1lc0ZvdXIpKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQu
YXNtCShyZXZpc2lvbiAyMzAyNjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMzkxLDE4ICszOTEsNiBA
QCBtYWNybyBsb2FkQ2FnZWQoYmFzZVB0ciwgbWFzaywgc291cmNlLCBkCiAgICAgdW5jYWdlKGJh
c2VQdHIsIG1hc2ssIGRlc3QsIHNjcmF0Y2gpCiBlbmQKIAotbWFjcm8gbG9hZFR5cGVkQXJyYXlD
YWdlZChiYXNlUHRyLCBtYXNrLCBzb3VyY2UsIHR5cGVJbmRleCwgZGVzdCwgc2NyYXRjaCkKLSAg
ICBpZiBQT0lTT04KLSAgICAgICAgbGVhcCBfZ190eXBlZEFycmF5UG9pc29ucywgZGVzdAotICAg
ICAgICBsb2FkcCAodHlwZUluZGV4IC0gRmlyc3RUeXBlZEFycmF5VHlwZSkgKiA4W2Rlc3RdLCBk
ZXN0Ci0gICAgICAgIGxvYWRwIHNvdXJjZSwgc2NyYXRjaAotICAgICAgICB4b3JwIHNjcmF0Y2gs
IGRlc3QKLSAgICBlbHNlCi0gICAgICAgIGxvYWRwIHNvdXJjZSwgZGVzdAotICAgIGVuZAotICAg
IHVuY2FnZShiYXNlUHRyLCBtYXNrLCBkZXN0LCBzY3JhdGNoKQotZW5kCi0KIG1hY3JvIGxvYWRW
YXJpYWJsZShvcGVyYW5kLCB2YWx1ZSkKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24ob3BlcmFu
ZCwgdmFsdWUpCiAgICAgbG9hZHEgW2NmciwgdmFsdWUsIDhdLCB2YWx1ZQpAQCAtMTYzNiw3ICsx
NjI0LDcgQEAgX2xsaW50X29wX2dldF9ieV92YWw6CiAgICAgYmlhIHQyLCBJbnQ4QXJyYXlUeXBl
IC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxVaW50OEFycmF5T3JVaW50OENsYW1w
ZWRBcnJheQogCiAgICAgIyBXZSBoYXZlIEludDhBcnJheVR5cGUuCi0gICAgbG9hZFR5cGVkQXJy
YXlDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmltaXRp
dmUsIGNvbnN0ZXhwciBQUklNSVRJVkVfR0lHQUNBR0VfTUFTSywgSlNBcnJheUJ1ZmZlclZpZXc6
Om1fcG9pc29uZWRWZWN0b3JbdDBdLCBJbnQ4QXJyYXlUeXBlLCB0MywgdDIpCisgICAgbG9hZENh
Z2VkKF9nX2dpZ2FjYWdlQmFzZVB0cnMgKyBHaWdhY2FnZTo6QmFzZVB0cnM6OnByaW1pdGl2ZSwg
Y29uc3RleHByIFBSSU1JVElWRV9HSUdBQ0FHRV9NQVNLLCBKU0FycmF5QnVmZmVyVmlldzo6bV92
ZWN0b3JbdDBdLCB0MywgdDIpCiAgICAgbG9hZGJzIFt0MywgdDFdLCB0MAogICAgIGZpbmlzaElu
dEdldEJ5VmFsKHQwLCB0MSkKIApAQCAtMTY0NCwxMyArMTYzMiwxMyBAQCBfbGxpbnRfb3BfZ2V0
X2J5X3ZhbDoKICAgICBiaWEgdDIsIFVpbnQ4QXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlw
ZSwgLm9wR2V0QnlWYWxVaW50OENsYW1wZWRBcnJheQogCiAgICAgIyBXZSBoYXZlIFVpbnQ4QXJy
YXlUeXBlLgotICAgIGxvYWRUeXBlZEFycmF5Q2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdp
Z2FjYWdlOjpCYXNlUHRyczo6cHJpbWl0aXZlLCBjb25zdGV4cHIgUFJJTUlUSVZFX0dJR0FDQUdF
X01BU0ssIEpTQXJyYXlCdWZmZXJWaWV3OjptX3BvaXNvbmVkVmVjdG9yW3QwXSwgVWludDhBcnJh
eVR5cGUsIHQzLCB0MikKKyAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdpZ2Fj
YWdlOjpCYXNlUHRyczo6cHJpbWl0aXZlLCBjb25zdGV4cHIgUFJJTUlUSVZFX0dJR0FDQUdFX01B
U0ssIEpTQXJyYXlCdWZmZXJWaWV3OjptX3ZlY3Rvclt0MF0sIHQzLCB0MikKICAgICBsb2FkYiBb
dDMsIHQxXSwgdDAKICAgICBmaW5pc2hJbnRHZXRCeVZhbCh0MCwgdDEpCiAKIC5vcEdldEJ5VmFs
VWludDhDbGFtcGVkQXJyYXk6CiAgICAgIyBXZSBoYXZlIFVpbnQ4Q2xhbXBlZEFycmF5VHlwZS4K
LSAgICBsb2FkVHlwZWRBcnJheUNhZ2VkKF9nX2dpZ2FjYWdlQmFzZVB0cnMgKyBHaWdhY2FnZTo6
QmFzZVB0cnM6OnByaW1pdGl2ZSwgY29uc3RleHByIFBSSU1JVElWRV9HSUdBQ0FHRV9NQVNLLCBK
U0FycmF5QnVmZmVyVmlldzo6bV9wb2lzb25lZFZlY3Rvclt0MF0sIFVpbnQ4Q2xhbXBlZEFycmF5
VHlwZSwgdDMsIHQyKQorICAgIGxvYWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJzICsgR2lnYWNh
Z2U6OkJhc2VQdHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhwciBQUklNSVRJVkVfR0lHQUNBR0VfTUFT
SywgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9yW3QwXSwgdDMsIHQyKQogICAgIGxvYWRiIFt0
MywgdDFdLCB0MAogICAgIGZpbmlzaEludEdldEJ5VmFsKHQwLCB0MSkKIApAQCAtMTY1OSwxMyAr
MTY0NywxMyBAQCBfbGxpbnRfb3BfZ2V0X2J5X3ZhbDoKICAgICBiaWEgdDIsIEludDE2QXJyYXlU
eXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxVaW50MTZBcnJheQogCiAgICAg
IyBXZSBoYXZlIEludDE2QXJyYXlUeXBlLgotICAgIGxvYWRUeXBlZEFycmF5Q2FnZWQoX2dfZ2ln
YWNhZ2VCYXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRyczo6cHJpbWl0aXZlLCBjb25zdGV4cHIg
UFJJTUlUSVZFX0dJR0FDQUdFX01BU0ssIEpTQXJyYXlCdWZmZXJWaWV3OjptX3BvaXNvbmVkVmVj
dG9yW3QwXSwgSW50MTZBcnJheVR5cGUsIHQzLCB0MikKKyAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNh
Z2VCYXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRyczo6cHJpbWl0aXZlLCBjb25zdGV4cHIgUFJJ
TUlUSVZFX0dJR0FDQUdFX01BU0ssIEpTQXJyYXlCdWZmZXJWaWV3OjptX3ZlY3Rvclt0MF0sIHQz
LCB0MikKICAgICBsb2FkaHMgW3QzLCB0MSwgMl0sIHQwCiAgICAgZmluaXNoSW50R2V0QnlWYWwo
dDAsIHQxKQogCiAub3BHZXRCeVZhbFVpbnQxNkFycmF5OgogICAgICMgV2UgaGF2ZSBVaW50MTZB
cnJheVR5cGUuCi0gICAgbG9hZFR5cGVkQXJyYXlDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJzICsg
R2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhwciBQUklNSVRJVkVfR0lHQUNB
R0VfTUFTSywgSlNBcnJheUJ1ZmZlclZpZXc6Om1fcG9pc29uZWRWZWN0b3JbdDBdLCBVaW50MTZB
cnJheVR5cGUsIHQzLCB0MikKKyAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdp
Z2FjYWdlOjpCYXNlUHRyczo6cHJpbWl0aXZlLCBjb25zdGV4cHIgUFJJTUlUSVZFX0dJR0FDQUdF
X01BU0ssIEpTQXJyYXlCdWZmZXJWaWV3OjptX3ZlY3Rvclt0MF0sIHQzLCB0MikKICAgICBsb2Fk
aCBbdDMsIHQxLCAyXSwgdDAKICAgICBmaW5pc2hJbnRHZXRCeVZhbCh0MCwgdDEpCiAKQEAgLTE2
NzcsMTMgKzE2NjUsMTMgQEAgX2xsaW50X29wX2dldF9ieV92YWw6CiAgICAgYmlhIHQyLCBJbnQz
MkFycmF5VHlwZSAtIEZpcnN0VHlwZWRBcnJheVR5cGUsIC5vcEdldEJ5VmFsVWludDMyQXJyYXkK
IAogICAgICMgV2UgaGF2ZSBJbnQzMkFycmF5VHlwZS4KLSAgICBsb2FkVHlwZWRBcnJheUNhZ2Vk
KF9nX2dpZ2FjYWdlQmFzZVB0cnMgKyBHaWdhY2FnZTo6QmFzZVB0cnM6OnByaW1pdGl2ZSwgY29u
c3RleHByIFBSSU1JVElWRV9HSUdBQ0FHRV9NQVNLLCBKU0FycmF5QnVmZmVyVmlldzo6bV9wb2lz
b25lZFZlY3Rvclt0MF0sIEludDMyQXJyYXlUeXBlLCB0MywgdDIpCisgICAgbG9hZENhZ2VkKF9n
X2dpZ2FjYWdlQmFzZVB0cnMgKyBHaWdhY2FnZTo6QmFzZVB0cnM6OnByaW1pdGl2ZSwgY29uc3Rl
eHByIFBSSU1JVElWRV9HSUdBQ0FHRV9NQVNLLCBKU0FycmF5QnVmZmVyVmlldzo6bV92ZWN0b3Jb
dDBdLCB0MywgdDIpCiAgICAgbG9hZGkgW3QzLCB0MSwgNF0sIHQwCiAgICAgZmluaXNoSW50R2V0
QnlWYWwodDAsIHQxKQogCiAub3BHZXRCeVZhbFVpbnQzMkFycmF5OgogICAgICMgV2UgaGF2ZSBV
aW50MzJBcnJheVR5cGUuCi0gICAgbG9hZFR5cGVkQXJyYXlDYWdlZChfZ19naWdhY2FnZUJhc2VQ
dHJzICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhwciBQUklNSVRJVkVf
R0lHQUNBR0VfTUFTSywgSlNBcnJheUJ1ZmZlclZpZXc6Om1fcG9pc29uZWRWZWN0b3JbdDBdLCBV
aW50MzJBcnJheVR5cGUsIHQzLCB0MikKKyAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRy
cyArIEdpZ2FjYWdlOjpCYXNlUHRyczo6cHJpbWl0aXZlLCBjb25zdGV4cHIgUFJJTUlUSVZFX0dJ
R0FDQUdFX01BU0ssIEpTQXJyYXlCdWZmZXJWaWV3OjptX3ZlY3Rvclt0MF0sIHQzLCB0MikKICAg
ICAjIFRoaXMgaXMgdGhlIGhhcmRlc3QgcGFydCBiZWNhdXNlIG9mIGxhcmdlIHVuc2lnbmVkIHZh
bHVlcy4KICAgICBsb2FkaSBbdDMsIHQxLCA0XSwgdDAKICAgICBiaWx0IHQwLCAwLCAub3BHZXRC
eVZhbFNsb3cgIyBUaGlzIGNhc2UgaXMgc3RpbGwgYXdrd2FyZCB0byBpbXBsZW1lbnQgaW4gTExJ
bnQuCkBAIC0xNjk1LDcgKzE2ODMsNyBAQCBfbGxpbnRfb3BfZ2V0X2J5X3ZhbDoKICAgICBiaWVx
IHQyLCBGbG9hdDMyQXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxT
bG93CiAKICAgICAjIFdlIGhhdmUgRmxvYXQ2NEFycmF5VHlwZS4KLSAgICBsb2FkVHlwZWRBcnJh
eUNhZ2VkKF9nX2dpZ2FjYWdlQmFzZVB0cnMgKyBHaWdhY2FnZTo6QmFzZVB0cnM6OnByaW1pdGl2
ZSwgY29uc3RleHByIFBSSU1JVElWRV9HSUdBQ0FHRV9NQVNLLCBKU0FycmF5QnVmZmVyVmlldzo6
bV9wb2lzb25lZFZlY3Rvclt0MF0sIEZsb2F0NjRBcnJheVR5cGUsIHQzLCB0MikKKyAgICBsb2Fk
Q2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRyczo6cHJpbWl0aXZl
LCBjb25zdGV4cHIgUFJJTUlUSVZFX0dJR0FDQUdFX01BU0ssIEpTQXJyYXlCdWZmZXJWaWV3Ojpt
X3ZlY3Rvclt0MF0sIHQzLCB0MikKICAgICBsb2FkZCBbdDMsIHQxLCA4XSwgZnQwCiAgICAgYmRu
ZXF1biBmdDAsIGZ0MCwgLm9wR2V0QnlWYWxTbG93CiAgICAgZmluaXNoRG91YmxlR2V0QnlWYWwo
ZnQwLCB0MCwgdDEpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAyMzAyNjUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHdvcmtpbmcgY29weSkK
QEAgLTQwMiw3ICs0MDIsNiBAQCBjb25zdCBGbG9hdDY0QXJyYXlUeXBlID0gY29uc3RleHByIEZs
b2F0CiAKIGNvbnN0IEZpcnN0VHlwZWRBcnJheVR5cGUgPSBjb25zdGV4cHIgRmlyc3RUeXBlZEFy
cmF5VHlwZQogY29uc3QgTnVtYmVyT2ZUeXBlZEFycmF5VHlwZXNFeGNsdWRpbmdEYXRhVmlldyA9
IGNvbnN0ZXhwciBOdW1iZXJPZlR5cGVkQXJyYXlUeXBlc0V4Y2x1ZGluZ0RhdGFWaWV3Ci1jb25z
dCBUeXBlZEFycmF5UG9pc29uSW5kZXhNYXNrID0gY29uc3RleHByIFR5cGVkQXJyYXlQb2lzb25J
bmRleE1hc2sKIAogIyBUeXBlIGZsYWdzIGNvbnN0YW50cy4KIGNvbnN0IE1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQgPSBjb25zdGV4cHIgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtNjQucmIKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtNjQucmIJKHJldmlzaW9uIDIzMDI2NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiCSh3b3JraW5nIGNvcHkp
CkBAIC0yNzUsMTMgKzI3NSw2IEBAIGRlZiBhcm02NExvd2VyTGFiZWxSZWZlcmVuY2VzKGxpc3Qp
CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IG5v
ZGUKICAgICAgICAgICAgICAgICBlbmQKLSAgICAgICAgICAgIHdoZW4gImxlYWkiLCAibGVhcCIs
ICJsZWFxIgotICAgICAgICAgICAgICAgIGxhYmVsUmVmID0gbm9kZS5vcGVyYW5kc1swXQotICAg
ICAgICAgICAgICAgIGlmIGxhYmVsUmVmLmlzX2E/IExhYmVsUmVmZXJlbmNlCi0gICAgICAgICAg
ICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sICJnbG9iYWxh
ZGRyIiwgW0xhYmVsUmVmZXJlbmNlLm5ldyhub2RlLmNvZGVPcmlnaW4sIGxhYmVsUmVmLmxhYmVs
KSwgbm9kZS5vcGVyYW5kc1sxXV0pCi0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgICAgICBuZXdMaXN0IDw8IG5vZGUKLSAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKICAgICAgICAgICAgIGVuZApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgkocmV2aXNpb24gMjMw
MjY1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCSh3b3JraW5n
IGNvcHkpCkBAIC00NjgsMTEgKzQ2OCw2IEBAIGNsYXNzIExhYmVsUmVmZXJlbmNlCiAgICAgICAg
ICRhc20ucHV0cyAibW92cSAje2FzbUxhYmVsfUBHT1RQQ1JFTCglcmlwKSwgI3tkc3QueDg2T3Bl
cmFuZCg6cHRyKX0iCiAgICAgICAgICIje29mZnNldH0oI3tkc3QueDg2T3BlcmFuZChraW5kKX0p
IgogICAgIGVuZAotICAgIGRlZiB4ODZBZGRyZXNzT3BlcmFuZChhZGRyZXNzS2luZCkKLSAgICAg
ICAgIyBGSVhNRTogSW1wbGVtZW50IHRoaXMgb24gcGxhdGZvcm1zIHRoYXQgYXJlbid0IE1hY2gt
Ty4KLSAgICAgICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1
MTA0Ci0gICAgICAgICIje2FzbUxhYmVsfUBHT1RQQ1JFTCglcmlwKSIKLSAgICBlbmQKIGVuZAog
CiBjbGFzcyBMb2NhbExhYmVsUmVmZXJlbmNlCkBAIC0xNTUxLDkgKzE1NDYsOSBAQCBjbGFzcyBJ
bnN0cnVjdGlvbgogICAgICAgICB3aGVuICJibnoiCiAgICAgICAgICAgICAkYXNtLnB1dHMgImpu
eiAje29wZXJhbmRzWzBdLmFzbUxhYmVsfSIKICAgICAgICAgd2hlbiAibGVhaSIKLSAgICAgICAg
ICAgIGVtaXRYODZMZWEob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdLCA6aW50KQorICAgICAgICAg
ICAgJGFzbS5wdXRzICJsZWEje3g4NlN1ZmZpeCg6aW50KX0gI3tvcmRlck9wZXJhbmRzKG9wZXJh
bmRzWzBdLng4NkFkZHJlc3NPcGVyYW5kKDppbnQpLCBvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpp
bnQpKX0iCiAgICAgICAgIHdoZW4gImxlYXAiCi0gICAgICAgICAgICBlbWl0WDg2TGVhKG9wZXJh
bmRzWzBdLCBvcGVyYW5kc1sxXSwgOnB0cikKKyAgICAgICAgICAgICRhc20ucHV0cyAibGVhI3t4
ODZTdWZmaXgoOnB0cil9ICN7b3JkZXJPcGVyYW5kcyhvcGVyYW5kc1swXS54ODZBZGRyZXNzT3Bl
cmFuZCg6cHRyKSwgb3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6cHRyKSl9IgogICAgICAgICB3aGVu
ICJtZW1mZW5jZSIKICAgICAgICAgICAgIHNwID0gUmVnaXN0ZXJJRC5uZXcobmlsLCAic3AiKQog
ICAgICAgICAgICAgaWYgaXNJbnRlbFN5bnRheApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ2FnZWRCYXJyaWVyUHRyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ2FnZWRCYXJyaWVyUHRyLmgJKHJldmlzaW9uIDIzMDI2NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhZ2VkQmFycmllclB0ci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI2LDE1ICsyNiw4IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkF1eGlsaWFyeUJh
cnJpZXIuaCIKLSNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KICNpbmNsdWRlIDx3dGYvQ2FnZWRQdHIu
aD4KIAotbmFtZXNwYWNlIFdURiB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFBvaXNvbiwgdHlwZW5h
bWUgVD4gc3RydWN0IFBvaXNvbmVkUHRyVHJhaXRzOwotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQog
bmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEpTQ2VsbDsKQEAgLTQyLDcgKzM1LDcgQEAgY2xhc3Mg
Vk07CiAKIC8vIFRoaXMgaXMgYSBjb252ZW5pZW50IGNvbWJvIG9mIEF1eGlsaWFyeUJhcnJpZXIg
YW5kIENhZ2VkUHRyLgogCi10ZW1wbGF0ZTxHaWdhY2FnZTo6S2luZCBwYXNzZWRLaW5kLCB0eXBl
bmFtZSBULCB0eXBlbmFtZSBQdHJUcmFpdHMgPSBXVEY6OkR1bWJQdHJUcmFpdHM8VD4+Cit0ZW1w
bGF0ZTxHaWdhY2FnZTo6S2luZCBwYXNzZWRLaW5kLCB0eXBlbmFtZSBUPgogY2xhc3MgQ2FnZWRC
YXJyaWVyUHRyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIEdpZ2FjYWdlOjpLaW5k
IGtpbmQgPSBwYXNzZWRLaW5kOwpAQCAtOTIsMTEgKzg1LDExIEBAIHB1YmxpYzoKICAgICBUJiBv
cGVyYXRvcltdKEluZGV4VHlwZSBpbmRleCkgY29uc3QgeyByZXR1cm4gZ2V0KClbaW5kZXhdOyB9
CiAgICAgCiBwcml2YXRlOgotICAgIEF1eGlsaWFyeUJhcnJpZXI8Q2FnZWRQdHI8a2luZCwgVCwg
UHRyVHJhaXRzPj4gbV9iYXJyaWVyOworICAgIEF1eGlsaWFyeUJhcnJpZXI8Q2FnZWRQdHI8a2lu
ZCwgVD4+IG1fYmFycmllcjsKIH07CiAKLXRlbXBsYXRlPEdpZ2FjYWdlOjpLaW5kIHBhc3NlZEtp
bmQsIHR5cGVuYW1lIFB0clRyYWl0cz4KLWNsYXNzIENhZ2VkQmFycmllclB0cjxwYXNzZWRLaW5k
LCB2b2lkLCBQdHJUcmFpdHM+IHsKK3RlbXBsYXRlPEdpZ2FjYWdlOjpLaW5kIHBhc3NlZEtpbmQ+
CitjbGFzcyBDYWdlZEJhcnJpZXJQdHI8cGFzc2VkS2luZCwgdm9pZD4gewogcHVibGljOgogICAg
IHN0YXRpYyBjb25zdGV4cHIgR2lnYWNhZ2U6OktpbmQga2luZCA9IHBhc3NlZEtpbmQ7CiAgICAg
dHlwZWRlZiB2b2lkIFR5cGU7CkBAIC0xMzksMTAgKzEzMiw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldFdpdGhvdXRCYXJyaWVyKFUmJiB2YWx1ZSkgeyBtX2JhcnJpZXIuc2V0V2l0aG91dEJhcnJp
ZXIoc3RkOjpmb3J3YXJkPFU+KHZhbHVlKSk7IH0KICAgICAKIHByaXZhdGU6Ci0gICAgQXV4aWxp
YXJ5QmFycmllcjxDYWdlZFB0cjxraW5kLCB2b2lkLCBQdHJUcmFpdHM+PiBtX2JhcnJpZXI7Cisg
ICAgQXV4aWxpYXJ5QmFycmllcjxDYWdlZFB0cjxraW5kLCB2b2lkPj4gbV9iYXJyaWVyOwogfTsK
IAotdGVtcGxhdGU8dHlwZW5hbWUgUG9pc29uLCBHaWdhY2FnZTo6S2luZCBwYXNzZWRLaW5kLCB0
eXBlbmFtZSBUPgotdXNpbmcgUG9pc29uZWRDYWdlZEJhcnJpZXJQdHIgPSBDYWdlZEJhcnJpZXJQ
dHI8cGFzc2VkS2luZCwgVCwgV1RGOjpQb2lzb25lZFB0clRyYWl0czxQb2lzb24sIFQ+PjsKLQog
fSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5QnVmZmVyVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCShyZXZpc2lvbiAyMzAyNjUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0xMzIsNyArMTMyLDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkpTQXJyYXlCdWZm
ZXJWaWV3KFZNJgogICAgICwgbV9tb2RlKGNvbnRleHQubW9kZSgpKQogewogICAgIHNldEJ1dHRl
cmZseSh2bSwgY29udGV4dC5idXR0ZXJmbHkoKSk7Ci0gICAgbV9wb2lzb25lZFZlY3Rvci5zZXRX
aXRob3V0QmFycmllcihjb250ZXh0LnZlY3RvcigpKTsKKyAgICBtX3ZlY3Rvci5zZXRXaXRob3V0
QmFycmllcihjb250ZXh0LnZlY3RvcigpKTsKIH0KIAogdm9pZCBKU0FycmF5QnVmZmVyVmlldzo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQpAQCAtMTk0LDcgKzE5NCw3IEBAIHZvaWQgSlNBcnJheUJ1
ZmZlclZpZXc6OmZpbmFsaXplKEpTQ2VsbCoKICAgICBKU0FycmF5QnVmZmVyVmlldyogdGhpc09i
amVjdCA9IHN0YXRpY19jYXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4oY2VsbCk7CiAgICAgQVNTRVJU
KHRoaXNPYmplY3QtPm1fbW9kZSA9PSBPdmVyc2l6ZVR5cGVkQXJyYXkgfHwgdGhpc09iamVjdC0+
bV9tb2RlID09IFdhc3RlZnVsVHlwZWRBcnJheSk7CiAgICAgaWYgKHRoaXNPYmplY3QtPm1fbW9k
ZSA9PSBPdmVyc2l6ZVR5cGVkQXJyYXkpCi0gICAgICAgIEdpZ2FjYWdlOjpmcmVlKEdpZ2FjYWdl
OjpQcmltaXRpdmUsIHRoaXNPYmplY3QtPm1fcG9pc29uZWRWZWN0b3IuZ2V0KCkpOworICAgICAg
ICBHaWdhY2FnZTo6ZnJlZShHaWdhY2FnZTo6UHJpbWl0aXZlLCB0aGlzT2JqZWN0LT5tX3ZlY3Rv
ci5nZXQoKSk7CiB9CiAKIEpTQXJyYXlCdWZmZXIqIEpTQXJyYXlCdWZmZXJWaWV3Ojp1bnNoYXJl
ZEpTQnVmZmVyKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIEpTQXJy
YXlCdWZmZXJWaWV3OjpuZXV0ZXIoKQogICAgIFJFTEVBU0VfQVNTRVJUKGhhc0FycmF5QnVmZmVy
KCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFpc1NoYXJlZCgpKTsKICAgICBtX2xlbmd0aCA9IDA7
Ci0gICAgbV9wb2lzb25lZFZlY3Rvci5jbGVhcigpOworICAgIG1fdmVjdG9yLmNsZWFyKCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheUJ1ZmZlclZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCShyZXZpc2lvbiAyMzAyNjUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI2LDIyICsyNiwxMiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBdXhp
bGlhcnlCYXJyaWVyLmgiCi0jaW5jbHVkZSAiQ2FnZWRCYXJyaWVyUHRyLmgiCi0jaW5jbHVkZSAi
SlNDUG9pc29uLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKLSNpbmNsdWRlICJUeXBlZEFycmF5
VHlwZS5oIgotI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBKU0Mgewog
CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKLS8vIFNpbmNlIHdlJ2xsIGJlIGluZGV4
aW5nIGludG8gdGhlIGdfdHlwZWRBcnJheVBvaXNvbnMgYXJyYXkgYmFzZWQgb24gdGhlIFR5cGVk
QXJyYXkgdHlwZSwKLS8vIHdlJ2xsIGluZGV4IG1hc2sgdGhlIGluZGV4IHZhbHVlIGFuZCByb3Vu
ZCB1cCB0byB0aGUgYXJyYXkgc2l6ZSB0byB0aGUgbmV4dCBwb3dlciBvZiAyIHRvCi0vLyBlbnN1
cmUgdGhhdCB3ZSdsbCBuZXZlciBiZSBhYmxlIHRvIGFjY2VzcyBiZXlvbmQgdGhlIGJvdW5kcyBv
ZiB0aGlzIGFycmF5Lgotc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBOdW1iZXJPZlR5cGVkQXJy
YXlQb2lzb25zID0gV1RGOjpyb3VuZFVwVG9Qb3dlck9mVHdvKE51bWJlck9mVHlwZWRBcnJheVR5
cGVzKTsKLXN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgVHlwZWRBcnJheVBvaXNvbkluZGV4TWFz
ayA9IE51bWJlck9mVHlwZWRBcnJheVBvaXNvbnMgLSAxOwotCiAvLyBUaGlzIGNsYXNzIHNlcnZl
cyB0d28gcHVycG9zZXM6CiAvLwogLy8gMSkgSXQgcHJvdmlkZXMgdGhvc2UgcGFydHMgb2YgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXcgdGhhdCBkb24ndCBkZXBlbmQKQEAgLTE3NywzMCArMTY3LDE5
IEBAIHB1YmxpYzoKICAgICBib29sIGlzTmV1dGVyZWQoKSB7IHJldHVybiBoYXNBcnJheUJ1ZmZl
cigpICYmICF2ZWN0b3IoKTsgfQogICAgIHZvaWQgbmV1dGVyKCk7CiAgICAgCi0gICAgdm9pZCog
dmVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9wb2lzb25lZFZlY3Rvci5nZXRNYXlCZU51bGwoKTsg
fQorICAgIHZvaWQqIHZlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fdmVjdG9yLmdldE1heUJlTnVs
bCgpOyB9CiAgICAgCiAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCgpOwogICAgIHVuc2lnbmVkIGxl
bmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAKICAgICBERUNMQVJFX0VYUE9SVF9J
TkZPOwogICAgIAotICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZQb2lzb25lZFZlY3Rvcigp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0FycmF5QnVmZmVyVmlldywgbV9wb2lzb25lZFZl
Y3Rvcik7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mVmVjdG9yKCkgeyByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKEpTQXJyYXlCdWZmZXJWaWV3LCBtX3ZlY3Rvcik7IH0KICAgICBzdGF0
aWMgcHRyZGlmZl90IG9mZnNldE9mTGVuZ3RoKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpT
QXJyYXlCdWZmZXJWaWV3LCBtX2xlbmd0aCk7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNl
dE9mTW9kZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0FycmF5QnVmZmVyVmlldywgbV9t
b2RlKTsgfQogICAgIAogICAgIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiB0b1dyYXBw
ZWQoVk0mLCBKU1ZhbHVlKTsKIAotICAgIHN0YXRpYyB1aW50cHRyX3QgcG9pc29uRm9yKEpTVHlw
ZSB0eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGdfdHlwZWRBcnJheVBvaXNvbnNbKHR5cGUg
LSBGaXJzdFR5cGVkQXJyYXlUeXBlKSAmIFR5cGVkQXJyYXlQb2lzb25JbmRleE1hc2tdOwotICAg
IH0KLQotICAgIHN0YXRpYyB1aW50cHRyX3QgcG9pc29uRm9yKFR5cGVkQXJyYXlUeXBlIHR5cGVk
QXJyYXlUeXBlKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGlzVHlwZWRWaWV3KHR5cGVkQXJyYXlU
eXBlKSk7Ci0gICAgICAgIHJldHVybiBwb2lzb25Gb3IodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5
cGVkQXJyYXlUeXBlKSk7Ci0gICAgfQotCiBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGZpbmFs
aXplKEpTQ2VsbCopOwogCkBAIC0yMTEsMTkgKzE5MCw3IEBAIHByb3RlY3RlZDoKIAogICAgIHN0
YXRpYyBTdHJpbmcgdG9TdHJpbmdOYW1lKGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKik7CiAK
LSAgICBjbGFzcyBQb2lzb24gewotICAgIHB1YmxpYzoKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgUG9pc29uZWRUeXBlPgotICAgICAgICBpbmxpbmUgc3RhdGljIHVpbnRwdHJfdCBrZXkoY29u
c3QgUG9pc29uZWRUeXBlKiBwb2lzb25lZFB0cikKLSAgICAgICAgewotICAgICAgICAgICAgdWlu
dHB0cl90IHBvaXNvbmVkVmVjdG9yQWRkcmVzcyA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHBv
aXNvbmVkUHRyKTsKLSAgICAgICAgICAgIHVpbnRwdHJfdCBiYXNlQWRkcmVzcyA9IHBvaXNvbmVk
VmVjdG9yQWRkcmVzcyAtIE9CSkVDVF9PRkZTRVRPRihKU0FycmF5QnVmZmVyVmlldywgbV9wb2lz
b25lZFZlY3Rvcik7Ci0gICAgICAgICAgICBKU0FycmF5QnVmZmVyVmlldyogdGhpc09iamVjdCA9
IGJpdHdpc2VfY2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KGJhc2VBZGRyZXNzKTsKLSAgICAgICAg
ICAgIHJldHVybiBwb2lzb25Gb3IodGhpc09iamVjdC0+dHlwZSgpKTsKLSAgICAgICAgfQotICAg
IH07Ci0KLSAgICBQb2lzb25lZENhZ2VkQmFycmllclB0cjxQb2lzb24sIEdpZ2FjYWdlOjpQcmlt
aXRpdmUsIHZvaWQ+IG1fcG9pc29uZWRWZWN0b3I7CisgICAgQ2FnZWRCYXJyaWVyUHRyPEdpZ2Fj
YWdlOjpQcmltaXRpdmUsIHZvaWQ+IG1fdmVjdG9yOwogICAgIHVpbnQzMl90IG1fbGVuZ3RoOwog
ICAgIFR5cGVkQXJyYXlNb2RlIG1fbW9kZTsKIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NQb2lzb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ1BvaXNvbi5jcHAJKHJldmlzaW9uIDIzMDI2NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU0NQb2lzb24uaCIK
IAotI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgog
I2luY2x1ZGUgPG11dGV4PgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC0zNyw4ICszNiw2
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHVpbnRwdHJfdCBQT0lTT05fS0VZX05BTUUocG9pc29u
SUQpOwogRk9SX0VBQ0hfSlNDX1BPSVNPTihERUZJTkVfUE9JU09OKQogCi11aW50cHRyX3QgZ190
eXBlZEFycmF5UG9pc29uc1tOdW1iZXJPZlR5cGVkQXJyYXlQb2lzb25zXTsKLQogdm9pZCBpbml0
aWFsaXplUG9pc29uKCkKIHsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZU9u
Y2VGbGFnOwpAQCAtNTAsOSArNDcsNiBAQCB2b2lkIGluaXRpYWxpemVQb2lzb24oKQogICAgIFBP
SVNPTl9LRVlfTkFNRShwb2lzb25JRCkgPSBtYWtlUG9pc29uKCk7CiAKICAgICAgICAgRk9SX0VB
Q0hfSlNDX1BPSVNPTihJTklUSUFMSVpFX1BPSVNPTikKLQotICAgICAgICBmb3IgKHVpbnQzMl90
IGkgPSAwOyBpIDwgTnVtYmVyT2ZUeXBlZEFycmF5UG9pc29uczsgKytpKQotICAgICAgICAgICAg
Z190eXBlZEFycmF5UG9pc29uc1tpXSA9IG1ha2VQb2lzb24oKTsKICAgICB9KTsKIH0KIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUG9pc29uLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUG9pc29uLmgJKHJldmlzaW9uIDIz
MDI2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Nyw4ICs2Nyw2IEBAIG5hbWVzcGFjZSBKU0MgewogRk9SX0VBQ0hfSlND
X1BPSVNPTihERUNMQVJFX1BPSVNPTikKICN1bmRlZiBERUNMQVJFX1BPSVNPTgogCi1leHRlcm4g
IkMiIEpTX0VYUE9SVF9QUklWQVRFIHVpbnRwdHJfdCBnX3R5cGVkQXJyYXlQb2lzb25zW107Ci0K
IHN0cnVjdCBDbGFzc0luZm87CiAKIHVzaW5nIFBvaXNvbmVkQ2xhc3NJbmZvUHRyID0gUG9pc29u
ZWQ8R2xvYmFsRGF0YVBvaXNvbiwgY29uc3QgQ2xhc3NJbmZvKj47CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0lubGluZXMuaAkocmV2aXNpb24gMjMwMjY1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNTA0LDcgKzUwNCw3IEBAIHNpemVfdCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjoKIAogICAgIGlmICh0aGlzT2JqZWN0LT5tX21vZGUgPT0gT3ZlcnNpemVUeXBlZEFy
cmF5KQogICAgICAgICByZXR1cm4gQmFzZTo6ZXN0aW1hdGVkU2l6ZSh0aGlzT2JqZWN0KSArIHRo
aXNPYmplY3QtPmJ5dGVTaXplKCk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPm1fbW9kZSA9PSBGYXN0
VHlwZWRBcnJheSAmJiB0aGlzT2JqZWN0LT5tX3BvaXNvbmVkVmVjdG9yKQorICAgIGlmICh0aGlz
T2JqZWN0LT5tX21vZGUgPT0gRmFzdFR5cGVkQXJyYXkgJiYgdGhpc09iamVjdC0+bV92ZWN0b3Ip
CiAgICAgICAgIHJldHVybiBCYXNlOjplc3RpbWF0ZWRTaXplKHRoaXNPYmplY3QpICsgdGhpc09i
amVjdC0+Ynl0ZVNpemUoKTsKIAogICAgIHJldHVybiBCYXNlOjplc3RpbWF0ZWRTaXplKHRoaXNP
YmplY3QpOwpAQCAtNTE3LDcgKzUxNyw3IEBAIHZvaWQgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OnYKICAgICAKICAgICBzd2l0Y2ggKHRoaXNPYmplY3QtPm1fbW9kZSkgewogICAg
IGNhc2UgRmFzdFR5cGVkQXJyYXk6IHsKLSAgICAgICAgaWYgKHZvaWQqIHZlY3RvciA9IHRoaXNP
YmplY3QtPm1fcG9pc29uZWRWZWN0b3IuZ2V0TWF5QmVOdWxsKCkpCisgICAgICAgIGlmICh2b2lk
KiB2ZWN0b3IgPSB0aGlzT2JqZWN0LT5tX3ZlY3Rvci5nZXRNYXlCZU51bGwoKSkKICAgICAgICAg
ICAgIHZpc2l0b3IubWFya0F1eGlsaWFyeSh2ZWN0b3IpOwogICAgICAgICBicmVhazsKICAgICB9
CkBAIC01ODQsNyArNTg0LDcgQEAgQXJyYXlCdWZmZXIqIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYQogICAgIH0KIAogICAgIHRoaXNPYmplY3QtPmJ1dHRlcmZseSgpLT5pbmRleGluZ0hlYWRl
cigpLT5zZXRBcnJheUJ1ZmZlcihidWZmZXIuZ2V0KCkpOwotICAgIHRoaXNPYmplY3QtPm1fcG9p
c29uZWRWZWN0b3Iuc2V0V2l0aG91dEJhcnJpZXIoYnVmZmVyLT5kYXRhKCkpOworICAgIHRoaXNP
YmplY3QtPm1fdmVjdG9yLnNldFdpdGhvdXRCYXJyaWVyKGJ1ZmZlci0+ZGF0YSgpKTsKICAgICBX
VEY6OnN0b3JlU3RvcmVGZW5jZSgpOwogICAgIHRoaXNPYmplY3QtPm1fbW9kZSA9IFdhc3RlZnVs
VHlwZWRBcnJheTsKICAgICBoZWFwLT5hZGRSZWZlcmVuY2UodGhpc09iamVjdCwgYnVmZmVyLmdl
dCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2
aXNpb24gMjMwMjY1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtMjQsOSArMjQsOSBAQAogCiAjaW5jbHVkZSAiQXJyYXlDb252
ZW50aW9ucy5oIgogI2luY2x1ZGUgIkFycmF5U3RvcmFnZS5oIgotI2luY2x1ZGUgIkF1eGlsaWFy
eUJhcnJpZXIuaCIKICNpbmNsdWRlICJCdXR0ZXJmbHkuaCIKICNpbmNsdWRlICJDUFUuaCIKKyNp
bmNsdWRlICJDYWdlZEJhcnJpZXJQdHIuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNs
dWRlICJDbGFzc0luZm8uaCIKICNpbmNsdWRlICJDdXN0b21HZXR0ZXJTZXR0ZXIuaCIK
</data>
<flag name="review"
          id="355635"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>