<?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>150266</bug_id>
          
          <creation_ts>2015-10-16 18:33:23 -0700</creation_ts>
          <short_desc>RenderBlockFlow::*logical*ForFloat should take FloatingObject reference.</short_desc>
          <delta_ts>2015-10-16 20:37:38 -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>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1134134</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2015-10-16 18:33:23 -0700</bug_when>
    <thetext>instead of FloatingObject*.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134135</commentid>
    <comment_count>1</comment_count>
      <attachid>263356</attachid>
    <who name="alan">zalan</who>
    <bug_when>2015-10-16 18:52:26 -0700</bug_when>
    <thetext>Created attachment 263356
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134139</commentid>
    <comment_count>2</comment_count>
      <attachid>263356</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-16 20:37:35 -0700</bug_when>
    <thetext>Comment on attachment 263356
Patch

Clearing flags on attachment: 263356

Committed r191234: &lt;http://trac.webkit.org/changeset/191234&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134140</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-16 20:37:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263356</attachid>
            <date>2015-10-16 18:52:26 -0700</date>
            <delta_ts>2015-10-16 20:37:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150266-20151016185148.patch</filename>
            <type>text/plain</type>
            <size>43852</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxMjEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjYxOTE1MGU0YjA2NWQz
ZjEyZDEwNGI2NmIzODVkZWU3MWRjZjk2Yy4uY2NmY2Y0YjdiNzJhMDJlNDQ5NjcyNjY5MTE3YjZh
ZjVkMjMxYjZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDE1LTEwLTE2ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuZGVyQmxvY2tGbG93Ojoq
bG9naWNhbCpGb3JGbG9hdCBzaG91bGQgdGFrZSBGbG9hdGluZ09iamVjdCByZWZlcmVuY2UuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTAyNjYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBjaGFuZ2Ug
aW4gYmVoYXZpb3VyLgorCisgICAgICAgICogcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGaW5kTmV4dEZsb2F0TG9naWNhbEJvdHRvbUFkYXB0ZXI6OmNv
bGxlY3RJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlRmxvYXRPZmZzZXRGb3JG
bG9hdExheW91dEFkYXB0ZXI8RmxvYXRpbmdPYmplY3Q6OkZsb2F0TGVmdD46OnVwZGF0ZU9mZnNl
dElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVGbG9hdE9mZnNldEZvckZsb2F0
TGF5b3V0QWRhcHRlcjxGbG9hdGluZ09iamVjdDo6RmxvYXRSaWdodD46OnVwZGF0ZU9mZnNldElm
TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVGbG9hdE9mZnNldEZvckZsb2F0TGF5
b3V0QWRhcHRlcjxGbG9hdFR5cGVWYWx1ZT46OmhlaWdodFJlbWFpbmluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpDb21wdXRlRmxvYXRPZmZzZXRBZGFwdGVyPEZsb2F0VHlwZVZhbHVlPjo6Y29sbGVj
dElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVGbG9hdE9mZnNldEZvckxpbmVM
YXlvdXRBZGFwdGVyPEZsb2F0aW5nT2JqZWN0OjpGbG9hdExlZnQ+Ojp1cGRhdGVPZmZzZXRJZk5l
ZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlRmxvYXRPZmZzZXRGb3JMaW5lTGF5b3V0
QWRhcHRlcjxGbG9hdGluZ09iamVjdDo6RmxvYXRSaWdodD46OnVwZGF0ZU9mZnNldElmTmVlZGVk
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6cmVidWlsZEZsb2F0aW5nT2JqZWN0U2V0RnJvbUludHJ1
ZGluZ0Zsb2F0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OnJlcGFpbnRP
dmVyaGFuZ2luZ0Zsb2F0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6Omlu
c2VydEZsb2F0aW5nT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6
cmVtb3ZlRmxvYXRpbmdPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93
OjpyZW1vdmVGbG9hdGluZ09iamVjdHNCZWxvdyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9ja0Zsb3c6OmNvbXB1dGVMb2dpY2FsTG9jYXRpb25Gb3JGbG9hdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9ja0Zsb3c6OnBvc2l0aW9uTmV3RmxvYXRzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrRmxvdzo6bG93ZXN0RmxvYXRMb2dpY2FsQm90dG9tKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bG93ZXN0SW5pdGlhbExldHRlckxvZ2ljYWxCb3R0
b20pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjphZGRPdmVyaGFuZ2luZ0Zs
b2F0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6Omhhc092ZXJoYW5naW5n
RmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjphZGRJbnRydWRpbmdG
bG9hdHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bG9naWNhbFRvcEZvckZsb2F0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bG9naWNhbEJvdHRvbUZvckZsb2F0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bG9naWNhbExlZnRGb3JGbG9hdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxvZ2ljYWxSaWdodEZvckZsb2F0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bG9naWNhbFdpZHRoRm9yRmxvYXQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojpsb2dpY2FsSGVpZ2h0Rm9yRmxvYXQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpzZXRMb2dpY2FsVG9wRm9yRmxv
YXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpzZXRMb2dpY2FsTGVmdEZv
ckZsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6c2V0TG9naWNhbEhl
aWdodEZvckZsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6c2V0TG9n
aWNhbFdpZHRoRm9yRmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojps
b2dpY2FsU2l6ZUZvckZsb2F0KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
QmxvY2tMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6
bGF5b3V0UnVuc0FuZEZsb2F0c0luUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2tGbG93OjpjaGVja1BhZ2luYXRpb25BbmRGbG9hdHNBdEVuZExpbmUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2tGbG93Ojpwb3NpdGlvbk5ld0Zsb2F0T25MaW5lKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6
YWRkT3ZlcmZsb3dGcm9tQ2hpbGQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guaDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6YWRkT3ZlcmZsb3dGcm9tQ2hpbGQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29y
ZTo6QnJlYWtpbmdDb250ZXh0OjpoYW5kbGVGbG9hdCk6CisgICAgICAgICogcmVuZGVyaW5nL2xp
bmUvTGluZVdpZHRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5ld0Zsb2F0U2hyaW5rc0xpbmUp
OgorICAgICAgICAoV2ViQ29yZTo6TGluZVdpZHRoOjpzaHJpbmtBdmFpbGFibGVXaWR0aEZvck5l
d0Zsb2F0SWZOZWVkZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRl
SW5mby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZU91dHNpZGVJbmZvOjpjb21wdXRlRGVs
dGFzRm9yQ29udGFpbmluZ0Jsb2NrTGluZSk6CisKIDIwMTUtMTAtMTYgIEJyYWR5IEVpZHNvbiAg
PGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgICJlbnVtIGNsYXNzIiBzb21lIElEQiBlbnVt
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAKaW5kZXgg
ZGJjNTFjN2VkNzQyNGU2NTE4ZTkxNmVkNjhjZGM3YTM4ZjQ3ZWI5MC4uN2EwYmY5ZWM2YmM3MzRj
ZmViOWJjOTBmMDM3NTE3N2EwN2YzOTQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0Zsb2F0aW5nT2JqZWN0cy5jcHAKQEAgLTIxMCwxMiArMjEwLDEyIEBAIHByaXZhdGU6CiAKIGlu
bGluZSB2b2lkIEZpbmROZXh0RmxvYXRMb2dpY2FsQm90dG9tQWRhcHRlcjo6Y29sbGVjdElmTmVl
ZGVkKGNvbnN0IEludGVydmFsVHlwZSYgaW50ZXJ2YWwpCiB7Ci0gICAgY29uc3QgRmxvYXRpbmdP
YmplY3QqIGZsb2F0aW5nT2JqZWN0ID0gaW50ZXJ2YWwuZGF0YSgpOworICAgIGNvbnN0IGF1dG8m
IGZsb2F0aW5nT2JqZWN0ID0gKmludGVydmFsLmRhdGEoKTsKICAgICBpZiAoIXJhbmdlc0ludGVy
c2VjdChpbnRlcnZhbC5sb3coKSwgaW50ZXJ2YWwuaGlnaCgpLCBtX2JlbG93TG9naWNhbEhlaWdo
dCwgbV9hYm92ZUxvZ2ljYWxIZWlnaHQpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBBbGwg
dGhlIG9iamVjdHMgcmV0dXJuZWQgZnJvbSB0aGUgdHJlZSBzaG91bGQgYmUgYWxyZWFkeSBwbGFj
ZWQuCi0gICAgQVNTRVJUKGZsb2F0aW5nT2JqZWN0LT5pc1BsYWNlZCgpKTsKKyAgICBBU1NFUlQo
ZmxvYXRpbmdPYmplY3QuaXNQbGFjZWQoKSk7CiAgICAgQVNTRVJUKHJhbmdlc0ludGVyc2VjdCht
X3JlbmRlcmVyLmxvZ2ljYWxUb3BGb3JGbG9hdChmbG9hdGluZ09iamVjdCksIG1fcmVuZGVyZXIu
bG9naWNhbEJvdHRvbUZvckZsb2F0KGZsb2F0aW5nT2JqZWN0KSwgbV9iZWxvd0xvZ2ljYWxIZWln
aHQsIG1fYWJvdmVMb2dpY2FsSGVpZ2h0KSk7CiAKICAgICBMYXlvdXRVbml0IGZsb2F0Qm90dG9t
ID0gbV9yZW5kZXJlci5sb2dpY2FsQm90dG9tRm9yRmxvYXQoZmxvYXRpbmdPYmplY3QpOwpAQCAt
MjIzLDggKzIyMyw4IEBAIGlubGluZSB2b2lkIEZpbmROZXh0RmxvYXRMb2dpY2FsQm90dG9tQWRh
cHRlcjo6Y29sbGVjdElmTmVlZGVkKGNvbnN0IEludGVydmFsVHlwCiAgICAgICAgIHJldHVybjsK
IAogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQotICAgIGlmIChTaGFwZU91dHNpZGVJbmZvKiBzaGFw
ZU91dHNpZGUgPSBmbG9hdGluZ09iamVjdC0+cmVuZGVyZXIoKS5zaGFwZU91dHNpZGVJbmZvKCkp
IHsKLSAgICAgICAgTGF5b3V0VW5pdCBzaGFwZUJvdHRvbSA9IG1fcmVuZGVyZXIubG9naWNhbFRv
cEZvckZsb2F0KGZsb2F0aW5nT2JqZWN0KSArIG1fcmVuZGVyZXIubWFyZ2luQmVmb3JlRm9yQ2hp
bGQoZmxvYXRpbmdPYmplY3QtPnJlbmRlcmVyKCkpICsgc2hhcGVPdXRzaWRlLT5zaGFwZUxvZ2lj
YWxCb3R0b20oKTsKKyAgICBpZiAoU2hhcGVPdXRzaWRlSW5mbyogc2hhcGVPdXRzaWRlID0gZmxv
YXRpbmdPYmplY3QucmVuZGVyZXIoKS5zaGFwZU91dHNpZGVJbmZvKCkpIHsKKyAgICAgICAgTGF5
b3V0VW5pdCBzaGFwZUJvdHRvbSA9IG1fcmVuZGVyZXIubG9naWNhbFRvcEZvckZsb2F0KGZsb2F0
aW5nT2JqZWN0KSArIG1fcmVuZGVyZXIubWFyZ2luQmVmb3JlRm9yQ2hpbGQoZmxvYXRpbmdPYmpl
Y3QucmVuZGVyZXIoKSkgKyBzaGFwZU91dHNpZGUtPnNoYXBlTG9naWNhbEJvdHRvbSgpOwogICAg
ICAgICAvLyBVc2UgdGhlIHNoYXBlQm90dG9tIHVubGVzcyBpdCBleHRlbmRzIG91dHNpZGUgb2Yg
dGhlIG1hcmdpbiBib3gsIGluIHdoaWNoIGNhc2UgaXQgaXMgY2xpcHBlZC4KICAgICAgICAgbV9u
ZXh0U2hhcGVMb2dpY2FsQm90dG9tID0gc3RkOjptaW4oc2hhcGVCb3R0b20sIGZsb2F0Qm90dG9t
KTsKICAgICB9IGVsc2UKQEAgLTQzMyw3ICs0MzMsNyBAQCBMYXlvdXRVbml0IEZsb2F0aW5nT2Jq
ZWN0czo6bG9naWNhbFJpZ2h0T2Zmc2V0KExheW91dFVuaXQgZml4ZWRPZmZzZXQsIExheW91dFVu
aQogdGVtcGxhdGU8PgogaW5saW5lIGJvb2wgQ29tcHV0ZUZsb2F0T2Zmc2V0Rm9yRmxvYXRMYXlv
dXRBZGFwdGVyPEZsb2F0aW5nT2JqZWN0OjpGbG9hdExlZnQ+Ojp1cGRhdGVPZmZzZXRJZk5lZWRl
ZChjb25zdCBGbG9hdGluZ09iamVjdCYgZmxvYXRpbmdPYmplY3QpCiB7Ci0gICAgTGF5b3V0VW5p
dCBsb2dpY2FsUmlnaHQgPSBtX3JlbmRlcmVyLmxvZ2ljYWxSaWdodEZvckZsb2F0KCZmbG9hdGlu
Z09iamVjdCk7CisgICAgTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHQgPSBtX3JlbmRlcmVyLmxvZ2lj
YWxSaWdodEZvckZsb2F0KGZsb2F0aW5nT2JqZWN0KTsKICAgICBpZiAobG9naWNhbFJpZ2h0ID4g
bV9vZmZzZXQpIHsKICAgICAgICAgbV9vZmZzZXQgPSBsb2dpY2FsUmlnaHQ7CiAgICAgICAgIHJl
dHVybiB0cnVlOwpAQCAtNDQ0LDcgKzQ0NCw3IEBAIGlubGluZSBib29sIENvbXB1dGVGbG9hdE9m
ZnNldEZvckZsb2F0TGF5b3V0QWRhcHRlcjxGbG9hdGluZ09iamVjdDo6RmxvYXRMZWZ0Pjo6CiB0
ZW1wbGF0ZTw+CiBpbmxpbmUgYm9vbCBDb21wdXRlRmxvYXRPZmZzZXRGb3JGbG9hdExheW91dEFk
YXB0ZXI8RmxvYXRpbmdPYmplY3Q6OkZsb2F0UmlnaHQ+Ojp1cGRhdGVPZmZzZXRJZk5lZWRlZChj
b25zdCBGbG9hdGluZ09iamVjdCYgZmxvYXRpbmdPYmplY3QpCiB7Ci0gICAgTGF5b3V0VW5pdCBs
b2dpY2FsTGVmdCA9IG1fcmVuZGVyZXIubG9naWNhbExlZnRGb3JGbG9hdCgmZmxvYXRpbmdPYmpl
Y3QpOworICAgIExheW91dFVuaXQgbG9naWNhbExlZnQgPSBtX3JlbmRlcmVyLmxvZ2ljYWxMZWZ0
Rm9yRmxvYXQoZmxvYXRpbmdPYmplY3QpOwogICAgIGlmIChsb2dpY2FsTGVmdCA8IG1fb2Zmc2V0
KSB7CiAgICAgICAgIG1fb2Zmc2V0ID0gbG9naWNhbExlZnQ7CiAgICAgICAgIHJldHVybiB0cnVl
OwpAQCAtNDU1LDI5ICs0NTUsMjkgQEAgaW5saW5lIGJvb2wgQ29tcHV0ZUZsb2F0T2Zmc2V0Rm9y
RmxvYXRMYXlvdXRBZGFwdGVyPEZsb2F0aW5nT2JqZWN0OjpGbG9hdFJpZ2h0PjoKIHRlbXBsYXRl
IDxGbG9hdGluZ09iamVjdDo6VHlwZSBGbG9hdFR5cGVWYWx1ZT4KIExheW91dFVuaXQgQ29tcHV0
ZUZsb2F0T2Zmc2V0Rm9yRmxvYXRMYXlvdXRBZGFwdGVyPEZsb2F0VHlwZVZhbHVlPjo6aGVpZ2h0
UmVtYWluaW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gdGhpcy0+bV9vdXRlcm1vc3RGbG9hdCA/
IHRoaXMtPm1fcmVuZGVyZXIubG9naWNhbEJvdHRvbUZvckZsb2F0KHRoaXMtPm1fb3V0ZXJtb3N0
RmxvYXQpIC0gdGhpcy0+bV9saW5lVG9wIDogTGF5b3V0VW5pdDo6ZnJvbVBpeGVsKDEpOworICAg
IHJldHVybiB0aGlzLT5tX291dGVybW9zdEZsb2F0ID8gdGhpcy0+bV9yZW5kZXJlci5sb2dpY2Fs
Qm90dG9tRm9yRmxvYXQoKnRoaXMtPm1fb3V0ZXJtb3N0RmxvYXQpIC0gdGhpcy0+bV9saW5lVG9w
IDogTGF5b3V0VW5pdDo6ZnJvbVBpeGVsKDEpOwogfQogCiB0ZW1wbGF0ZSA8RmxvYXRpbmdPYmpl
Y3Q6OlR5cGUgRmxvYXRUeXBlVmFsdWU+CiBpbmxpbmUgdm9pZCBDb21wdXRlRmxvYXRPZmZzZXRB
ZGFwdGVyPEZsb2F0VHlwZVZhbHVlPjo6Y29sbGVjdElmTmVlZGVkKGNvbnN0IEludGVydmFsVHlw
ZSYgaW50ZXJ2YWwpCiB7Ci0gICAgY29uc3QgRmxvYXRpbmdPYmplY3QqIGZsb2F0aW5nT2JqZWN0
ID0gaW50ZXJ2YWwuZGF0YSgpOwotICAgIGlmIChmbG9hdGluZ09iamVjdC0+dHlwZSgpICE9IEZs
b2F0VHlwZVZhbHVlIHx8ICFyYW5nZXNJbnRlcnNlY3QoaW50ZXJ2YWwubG93KCksIGludGVydmFs
LmhpZ2goKSwgbV9saW5lVG9wLCBtX2xpbmVCb3R0b20pKQorICAgIGNvbnN0IGF1dG8mIGZsb2F0
aW5nT2JqZWN0ID0gKmludGVydmFsLmRhdGEoKTsKKyAgICBpZiAoZmxvYXRpbmdPYmplY3QudHlw
ZSgpICE9IEZsb2F0VHlwZVZhbHVlIHx8ICFyYW5nZXNJbnRlcnNlY3QoaW50ZXJ2YWwubG93KCks
IGludGVydmFsLmhpZ2goKSwgbV9saW5lVG9wLCBtX2xpbmVCb3R0b20pKQogICAgICAgICByZXR1
cm47CiAKICAgICAvLyBBbGwgdGhlIG9iamVjdHMgcmV0dXJuZWQgZnJvbSB0aGUgdHJlZSBzaG91
bGQgYmUgYWxyZWFkeSBwbGFjZWQuCi0gICAgQVNTRVJUKGZsb2F0aW5nT2JqZWN0LT5pc1BsYWNl
ZCgpKTsKKyAgICBBU1NFUlQoZmxvYXRpbmdPYmplY3QuaXNQbGFjZWQoKSk7CiAgICAgQVNTRVJU
KHJhbmdlc0ludGVyc2VjdChtX3JlbmRlcmVyLmxvZ2ljYWxUb3BGb3JGbG9hdChmbG9hdGluZ09i
amVjdCksIG1fcmVuZGVyZXIubG9naWNhbEJvdHRvbUZvckZsb2F0KGZsb2F0aW5nT2JqZWN0KSwg
bV9saW5lVG9wLCBtX2xpbmVCb3R0b20pKTsKIAotICAgIGJvb2wgZmxvYXRJc05ld0V4dHJlbWUg
PSB1cGRhdGVPZmZzZXRJZk5lZWRlZCgqZmxvYXRpbmdPYmplY3QpOworICAgIGJvb2wgZmxvYXRJ
c05ld0V4dHJlbWUgPSB1cGRhdGVPZmZzZXRJZk5lZWRlZChmbG9hdGluZ09iamVjdCk7CiAgICAg
aWYgKGZsb2F0SXNOZXdFeHRyZW1lKQotICAgICAgICBtX291dGVybW9zdEZsb2F0ID0gZmxvYXRp
bmdPYmplY3Q7CisgICAgICAgIG1fb3V0ZXJtb3N0RmxvYXQgPSAmZmxvYXRpbmdPYmplY3Q7CiB9
CiAKIHRlbXBsYXRlPD4KIGlubGluZSBib29sIENvbXB1dGVGbG9hdE9mZnNldEZvckxpbmVMYXlv
dXRBZGFwdGVyPEZsb2F0aW5nT2JqZWN0OjpGbG9hdExlZnQ+Ojp1cGRhdGVPZmZzZXRJZk5lZWRl
ZChjb25zdCBGbG9hdGluZ09iamVjdCYgZmxvYXRpbmdPYmplY3QpCiB7Ci0gICAgTGF5b3V0VW5p
dCBsb2dpY2FsUmlnaHQgPSBtX3JlbmRlcmVyLmxvZ2ljYWxSaWdodEZvckZsb2F0KCZmbG9hdGlu
Z09iamVjdCk7CisgICAgTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHQgPSBtX3JlbmRlcmVyLmxvZ2lj
YWxSaWdodEZvckZsb2F0KGZsb2F0aW5nT2JqZWN0KTsKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykK
ICAgICBpZiAoU2hhcGVPdXRzaWRlSW5mbyogc2hhcGVPdXRzaWRlID0gZmxvYXRpbmdPYmplY3Qu
cmVuZGVyZXIoKS5zaGFwZU91dHNpZGVJbmZvKCkpIHsKICAgICAgICAgU2hhcGVPdXRzaWRlRGVs
dGFzIHNoYXBlRGVsdGFzID0gc2hhcGVPdXRzaWRlLT5jb21wdXRlRGVsdGFzRm9yQ29udGFpbmlu
Z0Jsb2NrTGluZShtX3JlbmRlcmVyLCBmbG9hdGluZ09iamVjdCwgbV9saW5lVG9wLCBtX2xpbmVC
b3R0b20gLSBtX2xpbmVUb3ApOwpAQCAtNDk4LDcgKzQ5OCw3IEBAIGlubGluZSBib29sIENvbXB1
dGVGbG9hdE9mZnNldEZvckxpbmVMYXlvdXRBZGFwdGVyPEZsb2F0aW5nT2JqZWN0OjpGbG9hdExl
ZnQ+Ojp1CiB0ZW1wbGF0ZTw+CiBpbmxpbmUgYm9vbCBDb21wdXRlRmxvYXRPZmZzZXRGb3JMaW5l
TGF5b3V0QWRhcHRlcjxGbG9hdGluZ09iamVjdDo6RmxvYXRSaWdodD46OnVwZGF0ZU9mZnNldElm
TmVlZGVkKGNvbnN0IEZsb2F0aW5nT2JqZWN0JiBmbG9hdGluZ09iamVjdCkKIHsKLSAgICBMYXlv
dXRVbml0IGxvZ2ljYWxMZWZ0ID0gbV9yZW5kZXJlci5sb2dpY2FsTGVmdEZvckZsb2F0KCZmbG9h
dGluZ09iamVjdCk7CisgICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCA9IG1fcmVuZGVyZXIubG9n
aWNhbExlZnRGb3JGbG9hdChmbG9hdGluZ09iamVjdCk7CiAjaWYgRU5BQkxFKENTU19TSEFQRVMp
CiAgICAgaWYgKFNoYXBlT3V0c2lkZUluZm8qIHNoYXBlT3V0c2lkZSA9IGZsb2F0aW5nT2JqZWN0
LnJlbmRlcmVyKCkuc2hhcGVPdXRzaWRlSW5mbygpKSB7CiAgICAgICAgIFNoYXBlT3V0c2lkZURl
bHRhcyBzaGFwZURlbHRhcyA9IHNoYXBlT3V0c2lkZS0+Y29tcHV0ZURlbHRhc0ZvckNvbnRhaW5p
bmdCbG9ja0xpbmUobV9yZW5kZXJlciwgZmxvYXRpbmdPYmplY3QsIG1fbGluZVRvcCwgbV9saW5l
Qm90dG9tIC0gbV9saW5lVG9wKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrRmxvdy5jcHAKaW5kZXggM2JmYmRkNGQxNjFkNzBhMDI3M2UxYWQ5MTE2NTIxN2Y0M2YxMTQ2
NS4uOTFiOTMwZGU5OWJmZTU4N2M2OTc3ZWViNDkzOGMyOWRhMDg4YmRiNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTI2NywxMiArMjY3LDEy
IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpyZWJ1aWxkRmxvYXRpbmdPYmplY3RTZXRGcm9tSW50
cnVkaW5nRmxvYXRzKCkKICAgICAgICAgICAgIGNvbnN0IEZsb2F0aW5nT2JqZWN0U2V0JiBmbG9h
dGluZ09iamVjdFNldCA9IG1fZmxvYXRpbmdPYmplY3RzLT5zZXQoKTsKICAgICAgICAgICAgIGF1
dG8gZW5kID0gZmxvYXRpbmdPYmplY3RTZXQuZW5kKCk7CiAgICAgICAgICAgICBmb3IgKGF1dG8g
aXQgPSBmbG9hdGluZ09iamVjdFNldC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAg
ICAgICAgICAgICBGbG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmplY3QgPSBpdC0+Z2V0KCk7Ci0g
ICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEZsb2F0aW5nT2JqZWN0PiBvbGRGbG9hdGlu
Z09iamVjdCA9IGZsb2F0TWFwLnRha2UoJmZsb2F0aW5nT2JqZWN0LT5yZW5kZXJlcigpKTsKKyAg
ICAgICAgICAgICAgICBjb25zdCBhdXRvJiBmbG9hdGluZ09iamVjdCA9ICppdC0+Z2V0KCk7Cisg
ICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEZsb2F0aW5nT2JqZWN0PiBvbGRGbG9hdGlu
Z09iamVjdCA9IGZsb2F0TWFwLnRha2UoJmZsb2F0aW5nT2JqZWN0LnJlbmRlcmVyKCkpOwogICAg
ICAgICAgICAgICAgIExheW91dFVuaXQgbG9naWNhbEJvdHRvbSA9IGxvZ2ljYWxCb3R0b21Gb3JG
bG9hdChmbG9hdGluZ09iamVjdCk7CiAgICAgICAgICAgICAgICAgaWYgKG9sZEZsb2F0aW5nT2Jq
ZWN0KSB7Ci0gICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQgb2xkTG9naWNhbEJvdHRvbSA9
IGxvZ2ljYWxCb3R0b21Gb3JGbG9hdChvbGRGbG9hdGluZ09iamVjdC5nZXQoKSk7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChsb2dpY2FsV2lkdGhGb3JGbG9hdChmbG9hdGluZ09iamVjdCkgIT0g
bG9naWNhbFdpZHRoRm9yRmxvYXQob2xkRmxvYXRpbmdPYmplY3QuZ2V0KCkpIHx8IGxvZ2ljYWxM
ZWZ0Rm9yRmxvYXQoZmxvYXRpbmdPYmplY3QpICE9IGxvZ2ljYWxMZWZ0Rm9yRmxvYXQob2xkRmxv
YXRpbmdPYmplY3QuZ2V0KCkpKSB7CisgICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQgb2xk
TG9naWNhbEJvdHRvbSA9IGxvZ2ljYWxCb3R0b21Gb3JGbG9hdCgqb2xkRmxvYXRpbmdPYmplY3Qp
OworICAgICAgICAgICAgICAgICAgICBpZiAobG9naWNhbFdpZHRoRm9yRmxvYXQoZmxvYXRpbmdP
YmplY3QpICE9IGxvZ2ljYWxXaWR0aEZvckZsb2F0KCpvbGRGbG9hdGluZ09iamVjdCkgfHwgbG9n
aWNhbExlZnRGb3JGbG9hdChmbG9hdGluZ09iamVjdCkgIT0gbG9naWNhbExlZnRGb3JGbG9hdCgq
b2xkRmxvYXRpbmdPYmplY3QpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VMb2dp
Y2FsVG9wID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZUxvZ2ljYWxCb3R0b20g
PSBzdGQ6Om1heChjaGFuZ2VMb2dpY2FsQm90dG9tLCBzdGQ6Om1heChsb2dpY2FsQm90dG9tLCBv
bGRMb2dpY2FsQm90dG9tKSk7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC0yODEs
NyArMjgxLDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnJlYnVpbGRGbG9hdGluZ09iamVjdFNl
dEZyb21JbnRydWRpbmdGbG9hdHMoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5n
ZUxvZ2ljYWxCb3R0b20gPSBzdGQ6Om1heChjaGFuZ2VMb2dpY2FsQm90dG9tLCBzdGQ6Om1heChs
b2dpY2FsQm90dG9tLCBvbGRMb2dpY2FsQm90dG9tKSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGxvZ2ljYWxUb3AgPSBsb2dp
Y2FsVG9wRm9yRmxvYXQoZmxvYXRpbmdPYmplY3QpOwotICAgICAgICAgICAgICAgICAgICAgICAg
TGF5b3V0VW5pdCBvbGRMb2dpY2FsVG9wID0gbG9naWNhbFRvcEZvckZsb2F0KG9sZEZsb2F0aW5n
T2JqZWN0LmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQgb2xkTG9n
aWNhbFRvcCA9IGxvZ2ljYWxUb3BGb3JGbG9hdCgqb2xkRmxvYXRpbmdPYmplY3QpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGxvZ2ljYWxUb3AgIT0gb2xkTG9naWNhbFRvcCkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZUxvZ2ljYWxUb3AgPSBzdGQ6Om1pbihjaGFu
Z2VMb2dpY2FsVG9wLCBzdGQ6Om1pbihsb2dpY2FsVG9wLCBvbGRMb2dpY2FsVG9wKSk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlTG9naWNhbEJvdHRvbSA9IHN0ZDo6bWF4KGNo
YW5nZUxvZ2ljYWxCb3R0b20sIHN0ZDo6bWF4KGxvZ2ljYWxUb3AsIG9sZExvZ2ljYWxUb3ApKTsK
QEAgLTMwMSw4ICszMDEsOCBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6cmVidWlsZEZsb2F0aW5n
T2JqZWN0U2V0RnJvbUludHJ1ZGluZ0Zsb2F0cygpCiAKICAgICAgICAgYXV0byBlbmQgPSBmbG9h
dE1hcC5lbmQoKTsKICAgICAgICAgZm9yIChhdXRvIGl0ID0gZmxvYXRNYXAuYmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBGbG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmpl
Y3QgPSBpdC0+dmFsdWUuZ2V0KCk7Ci0gICAgICAgICAgICBpZiAoIWZsb2F0aW5nT2JqZWN0LT5p
c0Rlc2NlbmRhbnQoKSkgeworICAgICAgICAgICAgY29uc3QgYXV0byYgZmxvYXRpbmdPYmplY3Qg
PSAqaXQtPnZhbHVlLmdldCgpOworICAgICAgICAgICAgaWYgKCFmbG9hdGluZ09iamVjdC5pc0Rl
c2NlbmRhbnQoKSkgewogICAgICAgICAgICAgICAgIGNoYW5nZUxvZ2ljYWxUb3AgPSAwOwogICAg
ICAgICAgICAgICAgIGNoYW5nZUxvZ2ljYWxCb3R0b20gPSBzdGQ6Om1heChjaGFuZ2VMb2dpY2Fs
Qm90dG9tLCBsb2dpY2FsQm90dG9tRm9yRmxvYXQoZmxvYXRpbmdPYmplY3QpKTsKICAgICAgICAg
ICAgIH0KQEAgLTIxNTQsMTUgKzIxNTQsMTYgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnJlcGFp
bnRPdmVyaGFuZ2luZ0Zsb2F0cyhib29sIHBhaW50QWxsRGVzY2VuZGFudHMpCiAgICAgY29uc3Qg
RmxvYXRpbmdPYmplY3RTZXQmIGZsb2F0aW5nT2JqZWN0U2V0ID0gbV9mbG9hdGluZ09iamVjdHMt
PnNldCgpOwogICAgIGF1dG8gZW5kID0gZmxvYXRpbmdPYmplY3RTZXQuZW5kKCk7CiAgICAgZm9y
IChhdXRvIGl0ID0gZmxvYXRpbmdPYmplY3RTZXQuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7
Ci0gICAgICAgIEZsb2F0aW5nT2JqZWN0KiBmbG9hdGluZ09iamVjdCA9IGl0LT5nZXQoKTsKKyAg
ICAgICAgY29uc3QgYXV0byYgZmxvYXRpbmdPYmplY3QgPSAqaXQtPmdldCgpOwogICAgICAgICAv
LyBPbmx5IHJlcGFpbnQgdGhlIG9iamVjdCBpZiBpdCBpcyBvdmVyaGFuZ2luZywgaXMgbm90IGlu
IGl0cyBvd24gbGF5ZXIsIGFuZAogICAgICAgICAvLyBpcyBvdXIgcmVzcG9uc2liaWxpdHkgdG8g
cGFpbnQgKG1fc2hvdWxkUGFpbnQgaXMgc2V0KS4gV2hlbiBwYWludEFsbERlc2NlbmRhbnRzIGlz
IHRydWUsIHRoZSBsYXR0ZXIKICAgICAgICAgLy8gY29uZGl0aW9uIGlzIHJlcGxhY2VkIHdpdGgg
YmVpbmcgYSBkZXNjZW5kYW50IG9mIHVzLgorICAgICAgICBhdXRvJiByZW5kZXJlciA9IGZsb2F0
aW5nT2JqZWN0LnJlbmRlcmVyKCk7CiAgICAgICAgIGlmIChsb2dpY2FsQm90dG9tRm9yRmxvYXQo
ZmxvYXRpbmdPYmplY3QpID4gbG9naWNhbEhlaWdodCgpCi0gICAgICAgICAgICAmJiAhZmxvYXRp
bmdPYmplY3QtPnJlbmRlcmVyKCkuaGFzU2VsZlBhaW50aW5nTGF5ZXIoKQotICAgICAgICAgICAg
JiYgKGZsb2F0aW5nT2JqZWN0LT5zaG91bGRQYWludCgpIHx8IChwYWludEFsbERlc2NlbmRhbnRz
ICYmIGZsb2F0aW5nT2JqZWN0LT5yZW5kZXJlcigpLmlzRGVzY2VuZGFudE9mKHRoaXMpKSkpIHsK
LSAgICAgICAgICAgIGZsb2F0aW5nT2JqZWN0LT5yZW5kZXJlcigpLnJlcGFpbnQoKTsKLSAgICAg
ICAgICAgIGZsb2F0aW5nT2JqZWN0LT5yZW5kZXJlcigpLnJlcGFpbnRPdmVyaGFuZ2luZ0Zsb2F0
cyhmYWxzZSk7CisgICAgICAgICAgICAmJiAhcmVuZGVyZXIuaGFzU2VsZlBhaW50aW5nTGF5ZXIo
KQorICAgICAgICAgICAgJiYgKGZsb2F0aW5nT2JqZWN0LnNob3VsZFBhaW50KCkgfHwgKHBhaW50
QWxsRGVzY2VuZGFudHMgJiYgcmVuZGVyZXIuaXNEZXNjZW5kYW50T2YodGhpcykpKSkgeworICAg
ICAgICAgICAgcmVuZGVyZXIucmVwYWludCgpOworICAgICAgICAgICAgcmVuZGVyZXIucmVwYWlu
dE92ZXJoYW5naW5nRmxvYXRzKGZhbHNlKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTIyNzgs
NyArMjI3OSw3IEBAIEZsb2F0aW5nT2JqZWN0KiBSZW5kZXJCbG9ja0Zsb3c6Omluc2VydEZsb2F0
aW5nT2JqZWN0KFJlbmRlckJveCYgZmxvYXRCb3gpCiAgICAgICAgIGZsb2F0Qm94LmNvbXB1dGVB
bmRTZXRCbG9ja0RpcmVjdGlvbk1hcmdpbnModGhpcyk7CiAgICAgfQogCi0gICAgc2V0TG9naWNh
bFdpZHRoRm9yRmxvYXQoZmxvYXRpbmdPYmplY3QuZ2V0KCksIGxvZ2ljYWxXaWR0aEZvckNoaWxk
KGZsb2F0Qm94KSArIG1hcmdpblN0YXJ0Rm9yQ2hpbGQoZmxvYXRCb3gpICsgbWFyZ2luRW5kRm9y
Q2hpbGQoZmxvYXRCb3gpKTsKKyAgICBzZXRMb2dpY2FsV2lkdGhGb3JGbG9hdCgqZmxvYXRpbmdP
YmplY3QsIGxvZ2ljYWxXaWR0aEZvckNoaWxkKGZsb2F0Qm94KSArIG1hcmdpblN0YXJ0Rm9yQ2hp
bGQoZmxvYXRCb3gpICsgbWFyZ2luRW5kRm9yQ2hpbGQoZmxvYXRCb3gpKTsKIAogICAgIHJldHVy
biBtX2Zsb2F0aW5nT2JqZWN0cy0+YWRkKFdURjo6bW92ZShmbG9hdGluZ09iamVjdCkpOwogfQpA
QCAtMjI4OSw3ICsyMjkwLDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnJlbW92ZUZsb2F0aW5n
T2JqZWN0KFJlbmRlckJveCYgZmxvYXRCb3gpCiAgICAgICAgIGNvbnN0IEZsb2F0aW5nT2JqZWN0
U2V0JiBmbG9hdGluZ09iamVjdFNldCA9IG1fZmxvYXRpbmdPYmplY3RzLT5zZXQoKTsKICAgICAg
ICAgYXV0byBpdCA9IGZsb2F0aW5nT2JqZWN0U2V0LmZpbmQ8UmVuZGVyQm94JiwgRmxvYXRpbmdP
YmplY3RIYXNoVHJhbnNsYXRvcj4oZmxvYXRCb3gpOwogICAgICAgICBpZiAoaXQgIT0gZmxvYXRp
bmdPYmplY3RTZXQuZW5kKCkpIHsKLSAgICAgICAgICAgIEZsb2F0aW5nT2JqZWN0KiBmbG9hdGlu
Z09iamVjdCA9IGl0LT5nZXQoKTsKKyAgICAgICAgICAgIGF1dG8mIGZsb2F0aW5nT2JqZWN0ID0g
Kml0LT5nZXQoKTsKICAgICAgICAgICAgIGlmIChjaGlsZHJlbklubGluZSgpKSB7CiAgICAgICAg
ICAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsVG9wID0gbG9naWNhbFRvcEZvckZsb2F0KGZsb2F0
aW5nT2JqZWN0KTsKICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGxvZ2ljYWxCb3R0b20gPSBs
b2dpY2FsQm90dG9tRm9yRmxvYXQoZmxvYXRpbmdPYmplY3QpOwpAQCAtMjMwMywxOSArMjMwNCwx
OSBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6cmVtb3ZlRmxvYXRpbmdPYmplY3QoUmVuZGVyQm94
JiBmbG9hdEJveCkKICAgICAgICAgICAgICAgICAgICAgLy8gYWNjb21wbGlzaGVkIGJ5IHByZXRl
bmRpbmcgdGhleSBoYXZlIGEgaGVpZ2h0IG9mIDEuCiAgICAgICAgICAgICAgICAgICAgIGxvZ2lj
YWxCb3R0b20gPSBzdGQ6Om1heChsb2dpY2FsQm90dG9tLCBsb2dpY2FsVG9wICsgMSk7CiAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChmbG9hdGluZ09iamVjdC0+b3JpZ2lu
YXRpbmdMaW5lKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXRpbmdPYmplY3QtPm9yaWdp
bmF0aW5nTGluZSgpLT5yZW1vdmVGbG9hdChmbG9hdEJveCk7CisgICAgICAgICAgICAgICAgaWYg
KGZsb2F0aW5nT2JqZWN0Lm9yaWdpbmF0aW5nTGluZSgpKSB7CisgICAgICAgICAgICAgICAgICAg
IGZsb2F0aW5nT2JqZWN0Lm9yaWdpbmF0aW5nTGluZSgpLT5yZW1vdmVGbG9hdChmbG9hdEJveCk7
CiAgICAgICAgICAgICAgICAgICAgIGlmICghc2VsZk5lZWRzTGF5b3V0KCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVCgmZmxvYXRpbmdPYmplY3QtPm9yaWdpbmF0aW5nTGluZSgp
LT5yZW5kZXJlcigpID09IHRoaXMpOwotICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXRpbmdP
YmplY3QtPm9yaWdpbmF0aW5nTGluZSgpLT5tYXJrRGlydHkoKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVCgmZmxvYXRpbmdPYmplY3Qub3JpZ2luYXRpbmdMaW5lKCktPnJlbmRlcmVy
KCkgPT0gdGhpcyk7CisgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdGluZ09iamVjdC5vcmln
aW5hdGluZ0xpbmUoKS0+bWFya0RpcnR5KCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICNpZiAh
QVNTRVJUX0RJU0FCTEVECi0gICAgICAgICAgICAgICAgICAgIGZsb2F0aW5nT2JqZWN0LT5zZXRP
cmlnaW5hdGluZ0xpbmUoMCk7CisgICAgICAgICAgICAgICAgICAgIGZsb2F0aW5nT2JqZWN0LnNl
dE9yaWdpbmF0aW5nTGluZSgwKTsKICNlbmRpZgogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICBtYXJrTGluZXNEaXJ0eUluQmxvY2tSYW5nZSgwLCBsb2dpY2FsQm90dG9tKTsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIG1fZmxvYXRpbmdPYmplY3RzLT5yZW1vdmUoZmxvYXRp
bmdPYmplY3QpOworICAgICAgICAgICAgbV9mbG9hdGluZ09iamVjdHMtPnJlbW92ZSgmZmxvYXRp
bmdPYmplY3QpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMjMyNyw3ICsyMzI4LDcgQEAgdm9p
ZCBSZW5kZXJCbG9ja0Zsb3c6OnJlbW92ZUZsb2F0aW5nT2JqZWN0c0JlbG93KEZsb2F0aW5nT2Jq
ZWN0KiBsYXN0RmxvYXQsIGludAogICAgIAogICAgIGNvbnN0IEZsb2F0aW5nT2JqZWN0U2V0JiBm
bG9hdGluZ09iamVjdFNldCA9IG1fZmxvYXRpbmdPYmplY3RzLT5zZXQoKTsKICAgICBGbG9hdGlu
Z09iamVjdCogY3VyciA9IGZsb2F0aW5nT2JqZWN0U2V0Lmxhc3QoKS5nZXQoKTsKLSAgICB3aGls
ZSAoY3VyciAhPSBsYXN0RmxvYXQgJiYgKCFjdXJyLT5pc1BsYWNlZCgpIHx8IGxvZ2ljYWxUb3BG
b3JGbG9hdChjdXJyKSA+PSBsb2dpY2FsT2Zmc2V0KSkgeworICAgIHdoaWxlIChjdXJyICE9IGxh
c3RGbG9hdCAmJiAoIWN1cnItPmlzUGxhY2VkKCkgfHwgbG9naWNhbFRvcEZvckZsb2F0KCpjdXJy
KSA+PSBsb2dpY2FsT2Zmc2V0KSkgewogICAgICAgICBtX2Zsb2F0aW5nT2JqZWN0cy0+cmVtb3Zl
KGN1cnIpOwogICAgICAgICBpZiAoZmxvYXRpbmdPYmplY3RTZXQuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgYnJlYWs7CkBAIC0yMzUxLDkgKzIzNTIsOSBAQCBMYXlvdXRVbml0IFJlbmRlckJsb2Nr
Rmxvdzo6bG9naWNhbFJpZ2h0T2Zmc2V0Rm9yUG9zaXRpb25pbmdGbG9hdChMYXlvdXRVbml0IGxv
ZwogICAgIHJldHVybiBhZGp1c3RMb2dpY2FsUmlnaHRPZmZzZXRGb3JMaW5lKG9mZnNldCwgYXBw
bHlUZXh0SW5kZW50KTsKIH0KIAotTGF5b3V0UG9pbnQgUmVuZGVyQmxvY2tGbG93Ojpjb21wdXRl
TG9naWNhbExvY2F0aW9uRm9yRmxvYXQoY29uc3QgRmxvYXRpbmdPYmplY3QqIGZsb2F0aW5nT2Jq
ZWN0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3BPZmZzZXQpCitMYXlvdXRQb2ludCBSZW5kZXJCbG9j
a0Zsb3c6OmNvbXB1dGVMb2dpY2FsTG9jYXRpb25Gb3JGbG9hdChjb25zdCBGbG9hdGluZ09iamVj
dCYgZmxvYXRpbmdPYmplY3QsIExheW91dFVuaXQgbG9naWNhbFRvcE9mZnNldCkKIHsKLSAgICBS
ZW5kZXJCb3gmIGNoaWxkQm94ID0gZmxvYXRpbmdPYmplY3QtPnJlbmRlcmVyKCk7CisgICAgYXV0
byYgY2hpbGRCb3ggPSBmbG9hdGluZ09iamVjdC5yZW5kZXJlcigpOwogICAgIExheW91dFVuaXQg
bG9naWNhbExlZnRPZmZzZXQgPSBsb2dpY2FsTGVmdE9mZnNldEZvckNvbnRlbnQobG9naWNhbFRv
cE9mZnNldCk7IC8vIENvbnN0YW50IHBhcnQgb2YgbGVmdCBvZmZzZXQuCiAgICAgTGF5b3V0VW5p
dCBsb2dpY2FsUmlnaHRPZmZzZXQgPSBsb2dpY2FsUmlnaHRPZmZzZXRGb3JDb250ZW50KGxvZ2lj
YWxUb3BPZmZzZXQpOyAvLyBDb25zdGFudCBwYXJ0IG9mIHJpZ2h0IG9mZnNldC4KIApAQCAtMjQ3
MSwxOSArMjQ3MiwxOCBAQCBib29sIFJlbmRlckJsb2NrRmxvdzo6cG9zaXRpb25OZXdGbG9hdHMo
KQogICAgIAogICAgIC8vIFRoZSBmbG9hdCBjYW5ub3Qgc3RhcnQgYWJvdmUgdGhlIHRvcCBwb3Np
dGlvbiBvZiB0aGUgbGFzdCBwb3NpdGlvbmVkIGZsb2F0LgogICAgIGlmIChsYXN0UGxhY2VkRmxv
YXRpbmdPYmplY3QpCi0gICAgICAgIGxvZ2ljYWxUb3AgPSBzdGQ6Om1heChsb2dpY2FsVG9wRm9y
RmxvYXQobGFzdFBsYWNlZEZsb2F0aW5nT2JqZWN0KSwgbG9naWNhbFRvcCk7CisgICAgICAgIGxv
Z2ljYWxUb3AgPSBzdGQ6Om1heChsb2dpY2FsVG9wRm9yRmxvYXQoKmxhc3RQbGFjZWRGbG9hdGlu
Z09iamVjdCksIGxvZ2ljYWxUb3ApOwogCiAgICAgYXV0byBlbmQgPSBmbG9hdGluZ09iamVjdFNl
dC5lbmQoKTsKICAgICAvLyBOb3cgd2FsayB0aHJvdWdoIHRoZSBzZXQgb2YgdW5wb3NpdGlvbmVk
IGZsb2F0cyBhbmQgcGxhY2UgdGhlbS4KICAgICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0KSB7Ci0g
ICAgICAgIEZsb2F0aW5nT2JqZWN0KiBmbG9hdGluZ09iamVjdCA9IGl0LT5nZXQoKTsKKyAgICAg
ICAgYXV0byYgZmxvYXRpbmdPYmplY3QgPSAqaXQtPmdldCgpOwogICAgICAgICAvLyBUaGUgY29u
dGFpbmluZyBibG9jayBpcyByZXNwb25zaWJsZSBmb3IgcG9zaXRpb25pbmcgZmxvYXRzLCBzbyBp
ZiB3ZSBoYXZlIGZsb2F0cyBpbiBvdXIKICAgICAgICAgLy8gbGlzdCB0aGF0IGNvbWUgZnJvbSBz
b21ld2hlcmUgZWxzZSwgZG8gbm90IGF0dGVtcHQgdG8gcG9zaXRpb24gdGhlbS4KLSAgICAgICAg
aWYgKGZsb2F0aW5nT2JqZWN0LT5yZW5kZXJlcigpLmNvbnRhaW5pbmdCbG9jaygpICE9IHRoaXMp
CisgICAgICAgIGF1dG8mIGNoaWxkQm94ID0gZmxvYXRpbmdPYmplY3QucmVuZGVyZXIoKTsKKyAg
ICAgICAgaWYgKGNoaWxkQm94LmNvbnRhaW5pbmdCbG9jaygpICE9IHRoaXMpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICBSZW5kZXJCb3gmIGNoaWxkQm94ID0gZmxvYXRpbmdPYmpl
Y3QtPnJlbmRlcmVyKCk7Ci0KICAgICAgICAgTGF5b3V0VW5pdCBjaGlsZExvZ2ljYWxMZWZ0TWFy
Z2luID0gc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBtYXJnaW5TdGFydEZvckNo
aWxkKGNoaWxkQm94KSA6IG1hcmdpbkVuZEZvckNoaWxkKGNoaWxkQm94KTsKIAogICAgICAgICBM
YXlvdXRSZWN0IG9sZFJlY3QgPSBjaGlsZEJveC5mcmFtZVJlY3QoKTsKQEAgLTI1MjIsNyArMjUy
Miw3IEBAIGJvb2wgUmVuZGVyQmxvY2tGbG93Ojpwb3NpdGlvbk5ld0Zsb2F0cygpCiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChuZXdMb2dpY2FsVG9wICE9IGZs
b2F0TG9naWNhbExvY2F0aW9uLnkoKSkgewotICAgICAgICAgICAgICAgIGZsb2F0aW5nT2JqZWN0
LT5zZXRQYWdpbmF0aW9uU3RydXQobmV3TG9naWNhbFRvcCAtIGZsb2F0TG9naWNhbExvY2F0aW9u
LnkoKSk7CisgICAgICAgICAgICAgICAgZmxvYXRpbmdPYmplY3Quc2V0UGFnaW5hdGlvblN0cnV0
KG5ld0xvZ2ljYWxUb3AgLSBmbG9hdExvZ2ljYWxMb2NhdGlvbi55KCkpOwogCiAgICAgICAgICAg
ICAgICAgZmxvYXRMb2dpY2FsTG9jYXRpb24gPSBjb21wdXRlTG9naWNhbExvY2F0aW9uRm9yRmxv
YXQoZmxvYXRpbmdPYmplY3QsIG5ld0xvZ2ljYWxUb3ApOwogICAgICAgICAgICAgICAgIHNldExv
Z2ljYWxMZWZ0Rm9yRmxvYXQoZmxvYXRpbmdPYmplY3QsIGZsb2F0TG9naWNhbExvY2F0aW9uLngo
KSk7CkBAIC0yNTQ1LDcgKzI1NDUsNyBAQCBib29sIFJlbmRlckJsb2NrRmxvdzo6cG9zaXRpb25O
ZXdGbG9hdHMoKQogCiAgICAgICAgIHNldExvZ2ljYWxIZWlnaHRGb3JGbG9hdChmbG9hdGluZ09i
amVjdCwgbG9naWNhbEhlaWdodEZvckNoaWxkRm9yRnJhZ21lbnRhdGlvbihjaGlsZEJveCkgKyBt
YXJnaW5CZWZvcmVGb3JDaGlsZChjaGlsZEJveCkgKyBtYXJnaW5BZnRlckZvckNoaWxkKGNoaWxk
Qm94KSk7CiAKLSAgICAgICAgbV9mbG9hdGluZ09iamVjdHMtPmFkZFBsYWNlZE9iamVjdChmbG9h
dGluZ09iamVjdCk7CisgICAgICAgIG1fZmxvYXRpbmdPYmplY3RzLT5hZGRQbGFjZWRPYmplY3Qo
JmZsb2F0aW5nT2JqZWN0KTsKIAogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQogICAgICAgICBpZiAo
U2hhcGVPdXRzaWRlSW5mbyogc2hhcGVPdXRzaWRlID0gY2hpbGRCb3guc2hhcGVPdXRzaWRlSW5m
bygpKQpAQCAtMjYyMCw4ICsyNjIwLDggQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9ja0Zsb3c6Omxv
d2VzdEZsb2F0TG9naWNhbEJvdHRvbShGbG9hdGluZ09iamVjdDo6VHlwZSBmbG9hdFQKICAgICBj
b25zdCBGbG9hdGluZ09iamVjdFNldCYgZmxvYXRpbmdPYmplY3RTZXQgPSBtX2Zsb2F0aW5nT2Jq
ZWN0cy0+c2V0KCk7CiAgICAgYXV0byBlbmQgPSBmbG9hdGluZ09iamVjdFNldC5lbmQoKTsKICAg
ICBmb3IgKGF1dG8gaXQgPSBmbG9hdGluZ09iamVjdFNldC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsr
aXQpIHsKLSAgICAgICAgRmxvYXRpbmdPYmplY3QqIGZsb2F0aW5nT2JqZWN0ID0gaXQtPmdldCgp
OwotICAgICAgICBpZiAoZmxvYXRpbmdPYmplY3QtPmlzUGxhY2VkKCkgJiYgZmxvYXRpbmdPYmpl
Y3QtPnR5cGUoKSAmIGZsb2F0VHlwZSkKKyAgICAgICAgY29uc3QgYXV0byYgZmxvYXRpbmdPYmpl
Y3QgPSAqaXQtPmdldCgpOworICAgICAgICBpZiAoZmxvYXRpbmdPYmplY3QuaXNQbGFjZWQoKSAm
JiBmbG9hdGluZ09iamVjdC50eXBlKCkgJiBmbG9hdFR5cGUpCiAgICAgICAgICAgICBsb3dlc3RG
bG9hdEJvdHRvbSA9IHN0ZDo6bWF4KGxvd2VzdEZsb2F0Qm90dG9tLCBsb2dpY2FsQm90dG9tRm9y
RmxvYXQoZmxvYXRpbmdPYmplY3QpKTsKICAgICB9CiAgICAgcmV0dXJuIGxvd2VzdEZsb2F0Qm90
dG9tOwpAQCAtMjYzNSw4ICsyNjM1LDggQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9ja0Zsb3c6Omxv
d2VzdEluaXRpYWxMZXR0ZXJMb2dpY2FsQm90dG9tKCkgY29uc3QKICAgICBjb25zdCBGbG9hdGlu
Z09iamVjdFNldCYgZmxvYXRpbmdPYmplY3RTZXQgPSBtX2Zsb2F0aW5nT2JqZWN0cy0+c2V0KCk7
CiAgICAgYXV0byBlbmQgPSBmbG9hdGluZ09iamVjdFNldC5lbmQoKTsKICAgICBmb3IgKGF1dG8g
aXQgPSBmbG9hdGluZ09iamVjdFNldC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAg
ICAgRmxvYXRpbmdPYmplY3QqIGZsb2F0aW5nT2JqZWN0ID0gaXQtPmdldCgpOwotICAgICAgICBp
ZiAoZmxvYXRpbmdPYmplY3QtPmlzUGxhY2VkKCkgJiYgZmxvYXRpbmdPYmplY3QtPnJlbmRlcmVy
KCkuc3R5bGUoKS5zdHlsZVR5cGUoKSA9PSBGSVJTVF9MRVRURVIgJiYgZmxvYXRpbmdPYmplY3Qt
PnJlbmRlcmVyKCkuc3R5bGUoKS5pbml0aWFsTGV0dGVyRHJvcCgpID4gMCkKKyAgICAgICAgY29u
c3QgYXV0byYgZmxvYXRpbmdPYmplY3QgPSAqaXQtPmdldCgpOworICAgICAgICBpZiAoZmxvYXRp
bmdPYmplY3QuaXNQbGFjZWQoKSAmJiBmbG9hdGluZ09iamVjdC5yZW5kZXJlcigpLnN0eWxlKCku
c3R5bGVUeXBlKCkgPT0gRklSU1RfTEVUVEVSICYmIGZsb2F0aW5nT2JqZWN0LnJlbmRlcmVyKCku
c3R5bGUoKS5pbml0aWFsTGV0dGVyRHJvcCgpID4gMCkKICAgICAgICAgICAgIGxvd2VzdEZsb2F0
Qm90dG9tID0gc3RkOjptYXgobG93ZXN0RmxvYXRCb3R0b20sIGxvZ2ljYWxCb3R0b21Gb3JGbG9h
dChmbG9hdGluZ09iamVjdCkpOwogICAgIH0KICAgICByZXR1cm4gbG93ZXN0RmxvYXRCb3R0b207
CkBAIC0yNjU2LDE0ICsyNjU2LDE0IEBAIExheW91dFVuaXQgUmVuZGVyQmxvY2tGbG93OjphZGRP
dmVyaGFuZ2luZ0Zsb2F0cyhSZW5kZXJCbG9ja0Zsb3cmIGNoaWxkLCBib29sIG1hCiAgICAgLy8g
b3ZlcmZsb3cuCiAgICAgYXV0byBjaGlsZEVuZCA9IGNoaWxkLm1fZmxvYXRpbmdPYmplY3RzLT5z
ZXQoKS5lbmQoKTsKICAgICBmb3IgKGF1dG8gY2hpbGRJdCA9IGNoaWxkLm1fZmxvYXRpbmdPYmpl
Y3RzLT5zZXQoKS5iZWdpbigpOyBjaGlsZEl0ICE9IGNoaWxkRW5kOyArK2NoaWxkSXQpIHsKLSAg
ICAgICAgRmxvYXRpbmdPYmplY3QqIGZsb2F0aW5nT2JqZWN0ID0gY2hpbGRJdC0+Z2V0KCk7Cisg
ICAgICAgIGF1dG8mIGZsb2F0aW5nT2JqZWN0ID0gKmNoaWxkSXQtPmdldCgpOwogICAgICAgICBM
YXlvdXRVbml0IGZsb2F0TG9naWNhbEJvdHRvbSA9IHN0ZDo6bWluKGxvZ2ljYWxCb3R0b21Gb3JG
bG9hdChmbG9hdGluZ09iamVjdCksIExheW91dFVuaXQ6Om1heCgpIC0gY2hpbGRMb2dpY2FsVG9w
KTsKICAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsQm90dG9tID0gY2hpbGRMb2dpY2FsVG9wICsg
ZmxvYXRMb2dpY2FsQm90dG9tOwogICAgICAgICBsb3dlc3RGbG9hdExvZ2ljYWxCb3R0b20gPSBz
dGQ6Om1heChsb3dlc3RGbG9hdExvZ2ljYWxCb3R0b20sIGxvZ2ljYWxCb3R0b20pOwogCiAgICAg
ICAgIGlmIChsb2dpY2FsQm90dG9tID4gbG9naWNhbEhlaWdodCgpKSB7CiAgICAgICAgICAgICAv
LyBJZiB0aGUgb2JqZWN0IGlzIG5vdCBpbiB0aGUgbGlzdCwgd2UgYWRkIGl0IG5vdy4KLSAgICAg
ICAgICAgIGlmICghY29udGFpbnNGbG9hdChmbG9hdGluZ09iamVjdC0+cmVuZGVyZXIoKSkpIHsK
KyAgICAgICAgICAgIGlmICghY29udGFpbnNGbG9hdChmbG9hdGluZ09iamVjdC5yZW5kZXJlcigp
KSkgewogICAgICAgICAgICAgICAgIExheW91dFNpemUgb2Zmc2V0ID0gaXNIb3Jpem9udGFsV3Jp
dGluZ01vZGUoKSA/IExheW91dFNpemUoLWNoaWxkTG9naWNhbExlZnQsIC1jaGlsZExvZ2ljYWxU
b3ApIDogTGF5b3V0U2l6ZSgtY2hpbGRMb2dpY2FsVG9wLCAtY2hpbGRMb2dpY2FsTGVmdCk7CiAg
ICAgICAgICAgICAgICAgYm9vbCBzaG91bGRQYWludCA9IGZhbHNlOwogCkBAIC0yNjcxLDMwICsy
NjcxLDMxIEBAIExheW91dFVuaXQgUmVuZGVyQmxvY2tGbG93OjphZGRPdmVyaGFuZ2luZ0Zsb2F0
cyhSZW5kZXJCbG9ja0Zsb3cmIGNoaWxkLCBib29sIG1hCiAgICAgICAgICAgICAgICAgLy8gYmVo
YXZlcyBwcm9wZXJseSkuIFdlIGFsd2F5cyB3YW50IHRvIHByb3BhZ2F0ZSB0aGUgZGVzaXJlIHRv
IHBhaW50IHRoZSBmbG9hdCBhcwogICAgICAgICAgICAgICAgIC8vIGZhciBvdXQgYXMgd2UgY2Fu
LCB0byB0aGUgb3V0ZXJtb3N0IGJsb2NrIHRoYXQgb3ZlcmxhcHMgdGhlIGZsb2F0LCBzdG9wcGlu
ZyBvbmx5CiAgICAgICAgICAgICAgICAgLy8gaWYgd2UgaGl0IGEgc2VsZi1wYWludGluZyBsYXll
ciBib3VuZGFyeS4KLSAgICAgICAgICAgICAgICBpZiAoZmxvYXRpbmdPYmplY3QtPnJlbmRlcmVy
KCkuZW5jbG9zaW5nRmxvYXRQYWludGluZ0xheWVyKCkgPT0gZW5jbG9zaW5nRmxvYXRQYWludGlu
Z0xheWVyKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXRpbmdPYmplY3QtPnNldFNob3Vs
ZFBhaW50KGZhbHNlKTsKKyAgICAgICAgICAgICAgICBpZiAoZmxvYXRpbmdPYmplY3QucmVuZGVy
ZXIoKS5lbmNsb3NpbmdGbG9hdFBhaW50aW5nTGF5ZXIoKSA9PSBlbmNsb3NpbmdGbG9hdFBhaW50
aW5nTGF5ZXIoKSkgeworICAgICAgICAgICAgICAgICAgICBmbG9hdGluZ09iamVjdC5zZXRTaG91
bGRQYWludChmYWxzZSk7CiAgICAgICAgICAgICAgICAgICAgIHNob3VsZFBhaW50ID0gdHJ1ZTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgLy8gV2UgY3JlYXRlIHRoZSBmbG9h
dGluZyBvYmplY3QgbGlzdCBsYXppbHkuCiAgICAgICAgICAgICAgICAgaWYgKCFtX2Zsb2F0aW5n
T2JqZWN0cykKICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRmxvYXRpbmdPYmplY3RzKCk7CiAK
LSAgICAgICAgICAgICAgICBtX2Zsb2F0aW5nT2JqZWN0cy0+YWRkKGZsb2F0aW5nT2JqZWN0LT5j
b3B5VG9OZXdDb250YWluZXIob2Zmc2V0LCBzaG91bGRQYWludCwgdHJ1ZSkpOworICAgICAgICAg
ICAgICAgIG1fZmxvYXRpbmdPYmplY3RzLT5hZGQoZmxvYXRpbmdPYmplY3QuY29weVRvTmV3Q29u
dGFpbmVyKG9mZnNldCwgc2hvdWxkUGFpbnQsIHRydWUpKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChtYWtlQ2hpbGRQYWludE90aGVyRmxvYXRzICYm
ICFmbG9hdGluZ09iamVjdC0+c2hvdWxkUGFpbnQoKSAmJiAhZmxvYXRpbmdPYmplY3QtPnJlbmRl
cmVyKCkuaGFzU2VsZlBhaW50aW5nTGF5ZXIoKQotICAgICAgICAgICAgICAgICYmIGZsb2F0aW5n
T2JqZWN0LT5yZW5kZXJlcigpLmlzRGVzY2VuZGFudE9mKCZjaGlsZCkgJiYgZmxvYXRpbmdPYmpl
Y3QtPnJlbmRlcmVyKCkuZW5jbG9zaW5nRmxvYXRQYWludGluZ0xheWVyKCkgPT0gY2hpbGQuZW5j
bG9zaW5nRmxvYXRQYWludGluZ0xheWVyKCkpIHsKKyAgICAgICAgICAgIGNvbnN0IGF1dG8mIHJl
bmRlcmVyID0gZmxvYXRpbmdPYmplY3QucmVuZGVyZXIoKTsKKyAgICAgICAgICAgIGlmIChtYWtl
Q2hpbGRQYWludE90aGVyRmxvYXRzICYmICFmbG9hdGluZ09iamVjdC5zaG91bGRQYWludCgpICYm
ICFyZW5kZXJlci5oYXNTZWxmUGFpbnRpbmdMYXllcigpCisgICAgICAgICAgICAgICAgJiYgcmVu
ZGVyZXIuaXNEZXNjZW5kYW50T2YoJmNoaWxkKSAmJiByZW5kZXJlci5lbmNsb3NpbmdGbG9hdFBh
aW50aW5nTGF5ZXIoKSA9PSBjaGlsZC5lbmNsb3NpbmdGbG9hdFBhaW50aW5nTGF5ZXIoKSkgewog
ICAgICAgICAgICAgICAgIC8vIFRoZSBmbG9hdCBpcyBub3Qgb3ZlcmhhbmdpbmcgZnJvbSB0aGlz
IGJsb2NrLCBzbyBpZiBpdCBpcyBhIGRlc2NlbmRhbnQgb2YgdGhlIGNoaWxkLCB0aGUgY2hpbGQg
c2hvdWxkCiAgICAgICAgICAgICAgICAgLy8gcGFpbnQgaXQgKHRoZSBvdGhlciBjYXNlIGlzIHRo
YXQgaXQgaXMgaW50cnVkaW5nIGludG8gdGhlIGNoaWxkKSwgdW5sZXNzIGl0IGhhcyBpdHMgb3du
IGxheWVyIG9yIGVuY2xvc2luZwogICAgICAgICAgICAgICAgIC8vIGxheWVyLgogICAgICAgICAg
ICAgICAgIC8vIElmIG1ha2VDaGlsZFBhaW50T3RoZXJGbG9hdHMgaXMgZmFsc2UsIGl0IG1lYW5z
IHRoYXQgdGhlIGNoaWxkIG11c3QgYWxyZWFkeSBrbm93IGFib3V0IGFsbCB0aGUgZmxvYXRzCiAg
ICAgICAgICAgICAgICAgLy8gaXQgc2hvdWxkIHBhaW50LgotICAgICAgICAgICAgICAgIGZsb2F0
aW5nT2JqZWN0LT5zZXRTaG91bGRQYWludCh0cnVlKTsKKyAgICAgICAgICAgICAgICBmbG9hdGlu
Z09iamVjdC5zZXRTaG91bGRQYWludCh0cnVlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IAogICAgICAgICAgICAgLy8gU2luY2UgdGhlIGZsb2F0IGRvZXNuJ3Qgb3ZlcmhhbmcsIGl0IGRp
ZG4ndCBnZXQgcHV0IGludG8gb3VyIGxpc3QuIFdlIG5lZWQgdG8gYWRkIGl0cyBvdmVyZmxvdyBp
biB0byB0aGUgY2hpbGQgbm93LgotICAgICAgICAgICAgaWYgKGZsb2F0aW5nT2JqZWN0LT5pc0Rl
c2NlbmRhbnQoKSkKLSAgICAgICAgICAgICAgICBjaGlsZC5hZGRPdmVyZmxvd0Zyb21DaGlsZCgm
ZmxvYXRpbmdPYmplY3QtPnJlbmRlcmVyKCksIExheW91dFNpemUoeFBvc2l0aW9uRm9yRmxvYXRJ
bmNsdWRpbmdNYXJnaW4oZmxvYXRpbmdPYmplY3QpLCB5UG9zaXRpb25Gb3JGbG9hdEluY2x1ZGlu
Z01hcmdpbihmbG9hdGluZ09iamVjdCkpKTsKKyAgICAgICAgICAgIGlmIChmbG9hdGluZ09iamVj
dC5pc0Rlc2NlbmRhbnQoKSkKKyAgICAgICAgICAgICAgICBjaGlsZC5hZGRPdmVyZmxvd0Zyb21D
aGlsZCgmcmVuZGVyZXIsIExheW91dFNpemUoeFBvc2l0aW9uRm9yRmxvYXRJbmNsdWRpbmdNYXJn
aW4oJmZsb2F0aW5nT2JqZWN0KSwgeVBvc2l0aW9uRm9yRmxvYXRJbmNsdWRpbmdNYXJnaW4oJmZs
b2F0aW5nT2JqZWN0KSkpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBsb3dlc3RGbG9h
dExvZ2ljYWxCb3R0b207CkBAIC0yNzA2LDExICsyNzA3LDExIEBAIGJvb2wgUmVuZGVyQmxvY2tG
bG93OjpoYXNPdmVyaGFuZ2luZ0Zsb2F0KFJlbmRlckJveCYgcmVuZGVyZXIpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGNvbnN0IEZsb2F0aW5nT2JqZWN0U2V0JiBmbG9hdGluZ09iamVj
dFNldCA9IG1fZmxvYXRpbmdPYmplY3RzLT5zZXQoKTsKLSAgICBhdXRvIGl0ID0gZmxvYXRpbmdP
YmplY3RTZXQuZmluZDxSZW5kZXJCb3gmLCBGbG9hdGluZ09iamVjdEhhc2hUcmFuc2xhdG9yPihy
ZW5kZXJlcik7CisgICAgY29uc3QgYXV0byBpdCA9IGZsb2F0aW5nT2JqZWN0U2V0LmZpbmQ8UmVu
ZGVyQm94JiwgRmxvYXRpbmdPYmplY3RIYXNoVHJhbnNsYXRvcj4ocmVuZGVyZXIpOwogICAgIGlm
IChpdCA9PSBmbG9hdGluZ09iamVjdFNldC5lbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgcmV0dXJuIGxvZ2ljYWxCb3R0b21Gb3JGbG9hdChpdC0+Z2V0KCkpID4gbG9naWNhbEhl
aWdodCgpOworICAgIHJldHVybiBsb2dpY2FsQm90dG9tRm9yRmxvYXQoKml0LT5nZXQoKSkgPiBs
b2dpY2FsSGVpZ2h0KCk7CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2tGbG93OjphZGRJbnRydWRpbmdG
bG9hdHMoUmVuZGVyQmxvY2tGbG93KiBwcmV2LCBSZW5kZXJCbG9ja0Zsb3cqIGNvbnRhaW5lciwg
TGF5b3V0VW5pdCBsb2dpY2FsTGVmdE9mZnNldCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wT2Zmc2V0
KQpAQCAtMjczMCw5ICsyNzMxLDkgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmFkZEludHJ1ZGlu
Z0Zsb2F0cyhSZW5kZXJCbG9ja0Zsb3cqIHByZXYsIFJlbmRlckJsb2NrRmxvdyoKICAgICBjb25z
dCBGbG9hdGluZ09iamVjdFNldCYgcHJldlNldCA9IHByZXYtPm1fZmxvYXRpbmdPYmplY3RzLT5z
ZXQoKTsKICAgICBhdXRvIHByZXZFbmQgPSBwcmV2U2V0LmVuZCgpOwogICAgIGZvciAoYXV0byBw
cmV2SXQgPSBwcmV2U2V0LmJlZ2luKCk7IHByZXZJdCAhPSBwcmV2RW5kOyArK3ByZXZJdCkgewot
ICAgICAgICBGbG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmplY3QgPSBwcmV2SXQtPmdldCgpOwor
ICAgICAgICBhdXRvJiBmbG9hdGluZ09iamVjdCA9ICpwcmV2SXQtPmdldCgpOwogICAgICAgICBp
ZiAobG9naWNhbEJvdHRvbUZvckZsb2F0KGZsb2F0aW5nT2JqZWN0KSA+IGxvZ2ljYWxUb3BPZmZz
ZXQpIHsKLSAgICAgICAgICAgIGlmICghbV9mbG9hdGluZ09iamVjdHMgfHwgIW1fZmxvYXRpbmdP
YmplY3RzLT5zZXQoKS5jb250YWluczxGbG9hdGluZ09iamVjdCYsIEZsb2F0aW5nT2JqZWN0SGFz
aFRyYW5zbGF0b3I+KCpmbG9hdGluZ09iamVjdCkpIHsKKyAgICAgICAgICAgIGlmICghbV9mbG9h
dGluZ09iamVjdHMgfHwgIW1fZmxvYXRpbmdPYmplY3RzLT5zZXQoKS5jb250YWluczxGbG9hdGlu
Z09iamVjdCYsIEZsb2F0aW5nT2JqZWN0SGFzaFRyYW5zbGF0b3I+KGZsb2F0aW5nT2JqZWN0KSkg
ewogICAgICAgICAgICAgICAgIC8vIFdlIGNyZWF0ZSB0aGUgZmxvYXRpbmcgb2JqZWN0IGxpc3Qg
bGF6aWx5LgogICAgICAgICAgICAgICAgIGlmICghbV9mbG9hdGluZ09iamVjdHMpCiAgICAgICAg
ICAgICAgICAgICAgIGNyZWF0ZUZsb2F0aW5nT2JqZWN0cygpOwpAQCAtMjc0Niw3ICsyNzQ3LDcg
QEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmFkZEludHJ1ZGluZ0Zsb2F0cyhSZW5kZXJCbG9ja0Zs
b3cqIHByZXYsIFJlbmRlckJsb2NrRmxvdyoKICAgICAgICAgICAgICAgICAgICAgPyBMYXlvdXRT
aXplKGxvZ2ljYWxMZWZ0T2Zmc2V0IC0gKHByZXYgIT0gY29udGFpbmVyID8gcHJldi0+bWFyZ2lu
TGVmdCgpIDogTGF5b3V0VW5pdCgpKSwgbG9naWNhbFRvcE9mZnNldCkKICAgICAgICAgICAgICAg
ICAgICAgOiBMYXlvdXRTaXplKGxvZ2ljYWxUb3BPZmZzZXQsIGxvZ2ljYWxMZWZ0T2Zmc2V0IC0g
KHByZXYgIT0gY29udGFpbmVyID8gcHJldi0+bWFyZ2luVG9wKCkgOiBMYXlvdXRVbml0KCkpKTsK
IAotICAgICAgICAgICAgICAgIG1fZmxvYXRpbmdPYmplY3RzLT5hZGQoZmxvYXRpbmdPYmplY3Qt
PmNvcHlUb05ld0NvbnRhaW5lcihvZmZzZXQpKTsKKyAgICAgICAgICAgICAgICBtX2Zsb2F0aW5n
T2JqZWN0cy0+YWRkKGZsb2F0aW5nT2JqZWN0LmNvcHlUb05ld0NvbnRhaW5lcihvZmZzZXQpKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0Zsb3cuaAppbmRleCBiYTIyYWRkZTBkNmY0ODVkMTJiZTc1MGY3NDVjZDIw
ZDYxNDVhNzJkLi4yZWEwZmYxYWUwMzBiODI0MGRiYjZkZjlkYTljZDI1Nzg2NmNjNmEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCkBAIC0yOTcsNDEgKzI5
Nyw0MCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBGbG9hdGluZ09iamVjdFNldCogZmxvYXRpbmdP
YmplY3RTZXQoKSBjb25zdCB7IHJldHVybiBtX2Zsb2F0aW5nT2JqZWN0cyA/ICZtX2Zsb2F0aW5n
T2JqZWN0cy0+c2V0KCkgOiBudWxscHRyOyB9CiAKLSAgICBMYXlvdXRVbml0IGxvZ2ljYWxUb3BG
b3JGbG9hdChjb25zdCBGbG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmplY3QpIGNvbnN0IHsgcmV0
dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBmbG9hdGluZ09iamVjdC0+eSgpIDogZmxv
YXRpbmdPYmplY3QtPngoKTsgfQotICAgIExheW91dFVuaXQgbG9naWNhbEJvdHRvbUZvckZsb2F0
KGNvbnN0IEZsb2F0aW5nT2JqZWN0KiBmbG9hdGluZ09iamVjdCkgY29uc3QgeyByZXR1cm4gaXNI
b3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGZsb2F0aW5nT2JqZWN0LT5tYXhZKCkgOiBmbG9hdGlu
Z09iamVjdC0+bWF4WCgpOyB9Ci0gICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdEZvckZsb2F0KGNv
bnN0IEZsb2F0aW5nT2JqZWN0KiBmbG9hdGluZ09iamVjdCkgY29uc3QgeyByZXR1cm4gaXNIb3Jp
em9udGFsV3JpdGluZ01vZGUoKSA/IGZsb2F0aW5nT2JqZWN0LT54KCkgOiBmbG9hdGluZ09iamVj
dC0+eSgpOyB9Ci0gICAgTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHRGb3JGbG9hdChjb25zdCBGbG9h
dGluZ09iamVjdCogZmxvYXRpbmdPYmplY3QpIGNvbnN0IHsgcmV0dXJuIGlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkgPyBmbG9hdGluZ09iamVjdC0+bWF4WCgpIDogZmxvYXRpbmdPYmplY3QtPm1h
eFkoKTsgfQotICAgIExheW91dFVuaXQgbG9naWNhbFdpZHRoRm9yRmxvYXQoY29uc3QgRmxvYXRp
bmdPYmplY3QqIGZsb2F0aW5nT2JqZWN0KSBjb25zdCB7IHJldHVybiBpc0hvcml6b250YWxXcml0
aW5nTW9kZSgpID8gZmxvYXRpbmdPYmplY3QtPndpZHRoKCkgOiBmbG9hdGluZ09iamVjdC0+aGVp
Z2h0KCk7IH0KLSAgICBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHRGb3JGbG9hdChjb25zdCBGbG9h
dGluZ09iamVjdCogZmxvYXRpbmdPYmplY3QpIGNvbnN0IHsgcmV0dXJuIGlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkgPyBmbG9hdGluZ09iamVjdC0+aGVpZ2h0KCkgOiBmbG9hdGluZ09iamVjdC0+
d2lkdGgoKTsgfQotICAgIExheW91dFNpemUgbG9naWNhbFNpemVGb3JGbG9hdChjb25zdCBGbG9h
dGluZ09iamVjdCogZmxvYXRpbmdPYmplY3QpIGNvbnN0IHsgcmV0dXJuIGlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkgPyBMYXlvdXRTaXplKGZsb2F0aW5nT2JqZWN0LT53aWR0aCgpLCBmbG9hdGlu
Z09iamVjdC0+aGVpZ2h0KCkpIDogTGF5b3V0U2l6ZShmbG9hdGluZ09iamVjdC0+aGVpZ2h0KCks
IGZsb2F0aW5nT2JqZWN0LT53aWR0aCgpKTsgfQotCi0gICAgdm9pZCBzZXRMb2dpY2FsVG9wRm9y
RmxvYXQoRmxvYXRpbmdPYmplY3QqIGZsb2F0aW5nT2JqZWN0LCBMYXlvdXRVbml0IGxvZ2ljYWxU
b3ApCisgICAgTGF5b3V0VW5pdCBsb2dpY2FsVG9wRm9yRmxvYXQoY29uc3QgRmxvYXRpbmdPYmpl
Y3QmIGZsb2F0aW5nT2JqZWN0KSBjb25zdCB7IHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9k
ZSgpID8gZmxvYXRpbmdPYmplY3QueSgpIDogZmxvYXRpbmdPYmplY3QueCgpOyB9CisgICAgTGF5
b3V0VW5pdCBsb2dpY2FsQm90dG9tRm9yRmxvYXQoY29uc3QgRmxvYXRpbmdPYmplY3QmIGZsb2F0
aW5nT2JqZWN0KSBjb25zdCB7IHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gZmxv
YXRpbmdPYmplY3QubWF4WSgpIDogZmxvYXRpbmdPYmplY3QubWF4WCgpOyB9CisgICAgTGF5b3V0
VW5pdCBsb2dpY2FsTGVmdEZvckZsb2F0KGNvbnN0IEZsb2F0aW5nT2JqZWN0JiBmbG9hdGluZ09i
amVjdCkgY29uc3QgeyByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGZsb2F0aW5n
T2JqZWN0LngoKSA6IGZsb2F0aW5nT2JqZWN0LnkoKTsgfQorICAgIExheW91dFVuaXQgbG9naWNh
bFJpZ2h0Rm9yRmxvYXQoY29uc3QgRmxvYXRpbmdPYmplY3QmIGZsb2F0aW5nT2JqZWN0KSBjb25z
dCB7IHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gZmxvYXRpbmdPYmplY3QubWF4
WCgpIDogZmxvYXRpbmdPYmplY3QubWF4WSgpOyB9CisgICAgTGF5b3V0VW5pdCBsb2dpY2FsV2lk
dGhGb3JGbG9hdChjb25zdCBGbG9hdGluZ09iamVjdCYgZmxvYXRpbmdPYmplY3QpIGNvbnN0IHsg
cmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBmbG9hdGluZ09iamVjdC53aWR0aCgp
IDogZmxvYXRpbmdPYmplY3QuaGVpZ2h0KCk7IH0KKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxIZWln
aHRGb3JGbG9hdChjb25zdCBGbG9hdGluZ09iamVjdCYgZmxvYXRpbmdPYmplY3QpIGNvbnN0IHsg
cmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBmbG9hdGluZ09iamVjdC5oZWlnaHQo
KSA6IGZsb2F0aW5nT2JqZWN0LndpZHRoKCk7IH0KKworICAgIHZvaWQgc2V0TG9naWNhbFRvcEZv
ckZsb2F0KEZsb2F0aW5nT2JqZWN0JiBmbG9hdGluZ09iamVjdCwgTGF5b3V0VW5pdCBsb2dpY2Fs
VG9wKQogICAgIHsKICAgICAgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCi0gICAg
ICAgICAgICBmbG9hdGluZ09iamVjdC0+c2V0WShsb2dpY2FsVG9wKTsKKyAgICAgICAgICAgIGZs
b2F0aW5nT2JqZWN0LnNldFkobG9naWNhbFRvcCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IGZsb2F0aW5nT2JqZWN0LT5zZXRYKGxvZ2ljYWxUb3ApOworICAgICAgICAgICAgZmxvYXRpbmdP
YmplY3Quc2V0WChsb2dpY2FsVG9wKTsKICAgICB9Ci0gICAgdm9pZCBzZXRMb2dpY2FsTGVmdEZv
ckZsb2F0KEZsb2F0aW5nT2JqZWN0KiBmbG9hdGluZ09iamVjdCwgTGF5b3V0VW5pdCBsb2dpY2Fs
TGVmdCkKKyAgICB2b2lkIHNldExvZ2ljYWxMZWZ0Rm9yRmxvYXQoRmxvYXRpbmdPYmplY3QmIGZs
b2F0aW5nT2JqZWN0LCBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0KQogICAgIHsKICAgICAgICAgaWYg
KGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCi0gICAgICAgICAgICBmbG9hdGluZ09iamVjdC0+
c2V0WChsb2dpY2FsTGVmdCk7CisgICAgICAgICAgICBmbG9hdGluZ09iamVjdC5zZXRYKGxvZ2lj
YWxMZWZ0KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgZmxvYXRpbmdPYmplY3QtPnNldFko
bG9naWNhbExlZnQpOworICAgICAgICAgICAgZmxvYXRpbmdPYmplY3Quc2V0WShsb2dpY2FsTGVm
dCk7CiAgICAgfQotICAgIHZvaWQgc2V0TG9naWNhbEhlaWdodEZvckZsb2F0KEZsb2F0aW5nT2Jq
ZWN0KiBmbG9hdGluZ09iamVjdCwgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0KQorICAgIHZvaWQg
c2V0TG9naWNhbEhlaWdodEZvckZsb2F0KEZsb2F0aW5nT2JqZWN0JiBmbG9hdGluZ09iamVjdCwg
TGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0KQogICAgIHsKICAgICAgICAgaWYgKGlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlKCkpCi0gICAgICAgICAgICBmbG9hdGluZ09iamVjdC0+c2V0SGVpZ2h0KGxv
Z2ljYWxIZWlnaHQpOworICAgICAgICAgICAgZmxvYXRpbmdPYmplY3Quc2V0SGVpZ2h0KGxvZ2lj
YWxIZWlnaHQpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBmbG9hdGluZ09iamVjdC0+c2V0
V2lkdGgobG9naWNhbEhlaWdodCk7CisgICAgICAgICAgICBmbG9hdGluZ09iamVjdC5zZXRXaWR0
aChsb2dpY2FsSGVpZ2h0KTsKICAgICB9Ci0gICAgdm9pZCBzZXRMb2dpY2FsV2lkdGhGb3JGbG9h
dChGbG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmplY3QsIExheW91dFVuaXQgbG9naWNhbFdpZHRo
KQorICAgIHZvaWQgc2V0TG9naWNhbFdpZHRoRm9yRmxvYXQoRmxvYXRpbmdPYmplY3QmIGZsb2F0
aW5nT2JqZWN0LCBMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCkKICAgICB7CiAgICAgICAgIGlmIChp
c0hvcml6b250YWxXcml0aW5nTW9kZSgpKQotICAgICAgICAgICAgZmxvYXRpbmdPYmplY3QtPnNl
dFdpZHRoKGxvZ2ljYWxXaWR0aCk7CisgICAgICAgICAgICBmbG9hdGluZ09iamVjdC5zZXRXaWR0
aChsb2dpY2FsV2lkdGgpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBmbG9hdGluZ09iamVj
dC0+c2V0SGVpZ2h0KGxvZ2ljYWxXaWR0aCk7CisgICAgICAgICAgICBmbG9hdGluZ09iamVjdC5z
ZXRIZWlnaHQobG9naWNhbFdpZHRoKTsKICAgICB9CiAKICAgICBMYXlvdXRVbml0IHhQb3NpdGlv
bkZvckZsb2F0SW5jbHVkaW5nTWFyZ2luKGNvbnN0IEZsb2F0aW5nT2JqZWN0KiBjaGlsZCkgY29u
c3QgeyByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGNoaWxkLT54KCkgKyBjaGls
ZC0+cmVuZGVyZXIoKS5tYXJnaW5MZWZ0KCkgOiBjaGlsZC0+eCgpICsgbWFyZ2luQmVmb3JlRm9y
Q2hpbGQoY2hpbGQtPnJlbmRlcmVyKCkpOyB9CkBAIC00OTAsNyArNDg5LDcgQEAgcHJpdmF0ZToK
ICAgICBGbG9hdGluZ09iamVjdCogaW5zZXJ0RmxvYXRpbmdPYmplY3QoUmVuZGVyQm94Jik7CiAg
ICAgdm9pZCByZW1vdmVGbG9hdGluZ09iamVjdChSZW5kZXJCb3gmKTsKICAgICB2b2lkIHJlbW92
ZUZsb2F0aW5nT2JqZWN0c0JlbG93KEZsb2F0aW5nT2JqZWN0KiwgaW50IGxvZ2ljYWxPZmZzZXQp
OwotICAgIExheW91dFBvaW50IGNvbXB1dGVMb2dpY2FsTG9jYXRpb25Gb3JGbG9hdChjb25zdCBG
bG9hdGluZ09iamVjdCosIExheW91dFVuaXQgbG9naWNhbFRvcE9mZnNldCk7CisgICAgTGF5b3V0
UG9pbnQgY29tcHV0ZUxvZ2ljYWxMb2NhdGlvbkZvckZsb2F0KGNvbnN0IEZsb2F0aW5nT2JqZWN0
JiwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wT2Zmc2V0KTsKIAogICAgIC8vIENhbGxlZCBmcm9tIGxp
bmVXaWR0aCwgdG8gcG9zaXRpb24gdGhlIGZsb2F0cyBhZGRlZCBpbiB0aGUgbGFzdCBsaW5lLgog
ICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhbmQgb25seSBpZiBpdCBoYXMgcG9zaXRpb25lZCBhbnkg
ZmxvYXRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
TGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5l
TGF5b3V0LmNwcAppbmRleCAyN2NkNzVmMTNlZjFlMDdiYTk1Y2EwNjhlMWQyODVhZTg1MzkxNWNj
Li41MzgxYjgyNjk3YmIzZTExZWI4NjQ1MjUwMjUzYzc2OTUyMzg5NDk4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcApAQCAtMTI1
NSw3ICsxMjU1LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmxheW91dFJ1bnNBbmRGbG9hdHNJ
blJhbmdlKExpbmVMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIEkKIAogICAgICAgICBjb25zdCBJ
bmxpbmVJdGVyYXRvciBvbGRFbmQgPSBlbmQ7CiAgICAgICAgIGJvb2wgaXNOZXdVQkFQYXJhZ3Jh
cGggPSBsYXlvdXRTdGF0ZS5saW5lSW5mbygpLnByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSgpOwot
ICAgICAgICBGbG9hdGluZ09iamVjdCogbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSA9IChjb250
YWluc0Zsb2F0cygpKSA/IG1fZmxvYXRpbmdPYmplY3RzLT5zZXQoKS5sYXN0KCkuZ2V0KCkgOiAw
OworICAgICAgICBGbG9hdGluZ09iamVjdCogbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSA9IChj
b250YWluc0Zsb2F0cygpKSA/IG1fZmxvYXRpbmdPYmplY3RzLT5zZXQoKS5sYXN0KCkuZ2V0KCkg
OiBudWxscHRyOwogCiAgICAgICAgIFdvcmRNZWFzdXJlbWVudHMgd29yZE1lYXN1cmVtZW50czsK
ICAgICAgICAgZW5kID0gbGluZUJyZWFrZXIubmV4dExpbmVCcmVhayhyZXNvbHZlciwgbGF5b3V0
U3RhdGUubGluZUluZm8oKSwgbGF5b3V0U3RhdGUsIHJlbmRlclRleHRJbmZvLCBsYXN0RmxvYXRG
cm9tUHJldmlvdXNMaW5lLCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRMaW5lcywgd29yZE1lYXN1cmVt
ZW50cyk7CkBAIC0xODk4LDcgKzE4OTgsNyBAQCBib29sIFJlbmRlckJsb2NrRmxvdzo6Y2hlY2tQ
YWdpbmF0aW9uQW5kRmxvYXRzQXRFbmRMaW5lKExpbmVMYXlvdXRTdGF0ZSYgbGF5b3V0UwogICAg
IGNvbnN0IEZsb2F0aW5nT2JqZWN0U2V0JiBmbG9hdGluZ09iamVjdFNldCA9IG1fZmxvYXRpbmdP
YmplY3RzLT5zZXQoKTsKICAgICBhdXRvIGVuZCA9IGZsb2F0aW5nT2JqZWN0U2V0LmVuZCgpOwog
ICAgIGZvciAoYXV0byBpdCA9IGZsb2F0aW5nT2JqZWN0U2V0LmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkgewotICAgICAgICBGbG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmplY3QgPSBpdC0+Z2V0
KCk7CisgICAgICAgIGNvbnN0IGF1dG8mIGZsb2F0aW5nT2JqZWN0ID0gKml0LT5nZXQoKTsKICAg
ICAgICAgaWYgKGxvZ2ljYWxCb3R0b21Gb3JGbG9hdChmbG9hdGluZ09iamVjdCkgPj0gbG9naWNh
bFRvcCAmJiBsb2dpY2FsQm90dG9tRm9yRmxvYXQoZmxvYXRpbmdPYmplY3QpIDwgbG9naWNhbEJv
dHRvbSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0yMDc1LDcgKzIwNzUs
NyBAQCBib29sIFJlbmRlckJsb2NrRmxvdzo6cG9zaXRpb25OZXdGbG9hdE9uTGluZShjb25zdCBG
bG9hdGluZ09iamVjdCYgbmV3RmxvYXQsIEZsbwogICAgIGNvbnN0IEZsb2F0aW5nT2JqZWN0U2V0
JiBmbG9hdGluZ09iamVjdFNldCA9IG1fZmxvYXRpbmdPYmplY3RzLT5zZXQoKTsKICAgICBBU1NF
UlQoZmxvYXRpbmdPYmplY3RTZXQubGFzdCgpLmdldCgpID09ICZuZXdGbG9hdCk7CiAKLSAgICBM
YXlvdXRVbml0IGZsb2F0TG9naWNhbFRvcCA9IGxvZ2ljYWxUb3BGb3JGbG9hdCgmbmV3RmxvYXQp
OworICAgIExheW91dFVuaXQgZmxvYXRMb2dpY2FsVG9wID0gbG9naWNhbFRvcEZvckZsb2F0KG5l
d0Zsb2F0KTsKICAgICBMYXlvdXRVbml0IHBhZ2luYXRpb25TdHJ1dCA9IG5ld0Zsb2F0LnBhZ2lu
YXRpb25TdHJ1dCgpOwogCiAgICAgaWYgKGZsb2F0TG9naWNhbFRvcCAtIHBhZ2luYXRpb25TdHJ1
dCAhPSBsb2dpY2FsSGVpZ2h0KCkgKyBsaW5lSW5mby5mbG9hdFBhZ2luYXRpb25TdHJ1dCgpKQpA
QCAtMjA4NiwxNSArMjA4NiwxNSBAQCBib29sIFJlbmRlckJsb2NrRmxvdzo6cG9zaXRpb25OZXdG
bG9hdE9uTGluZShjb25zdCBGbG9hdGluZ09iamVjdCYgbmV3RmxvYXQsIEZsbwogICAgIGF1dG8g
YmVnaW4gPSBmbG9hdGluZ09iamVjdFNldC5iZWdpbigpOwogICAgIHdoaWxlIChpdCAhPSBiZWdp
bikgewogICAgICAgICAtLWl0OwotICAgICAgICBGbG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmpl
Y3QgPSBpdC0+Z2V0KCk7Ci0gICAgICAgIGlmIChmbG9hdGluZ09iamVjdCA9PSBsYXN0RmxvYXRG
cm9tUHJldmlvdXNMaW5lKQorICAgICAgICBhdXRvJiBmbG9hdGluZ09iamVjdCA9ICppdC0+Z2V0
KCk7CisgICAgICAgIGlmICgmZmxvYXRpbmdPYmplY3QgPT0gbGFzdEZsb2F0RnJvbVByZXZpb3Vz
TGluZSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBpZiAobG9naWNhbFRvcEZvckZsb2F0
KGZsb2F0aW5nT2JqZWN0KSA9PSBsb2dpY2FsSGVpZ2h0KCkgKyBsaW5lSW5mby5mbG9hdFBhZ2lu
YXRpb25TdHJ1dCgpKSB7Ci0gICAgICAgICAgICBmbG9hdGluZ09iamVjdC0+c2V0UGFnaW5hdGlv
blN0cnV0KHBhZ2luYXRpb25TdHJ1dCArIGZsb2F0aW5nT2JqZWN0LT5wYWdpbmF0aW9uU3RydXQo
KSk7Ci0gICAgICAgICAgICBSZW5kZXJCb3gmIGZsb2F0Qm94ID0gZmxvYXRpbmdPYmplY3QtPnJl
bmRlcmVyKCk7CisgICAgICAgICAgICBmbG9hdGluZ09iamVjdC5zZXRQYWdpbmF0aW9uU3RydXQo
cGFnaW5hdGlvblN0cnV0ICsgZmxvYXRpbmdPYmplY3QucGFnaW5hdGlvblN0cnV0KCkpOworICAg
ICAgICAgICAgUmVuZGVyQm94JiBmbG9hdEJveCA9IGZsb2F0aW5nT2JqZWN0LnJlbmRlcmVyKCk7
CiAgICAgICAgICAgICBzZXRMb2dpY2FsVG9wRm9yQ2hpbGQoZmxvYXRCb3gsIGxvZ2ljYWxUb3BG
b3JDaGlsZChmbG9hdEJveCkgKyBtYXJnaW5CZWZvcmVGb3JDaGlsZChmbG9hdEJveCkgKyBwYWdp
bmF0aW9uU3RydXQpOwogCi0gICAgICAgICAgICBpZiAodXBkYXRlUmVnaW9uUmFuZ2VGb3JCb3hD
aGlsZChmbG9hdGluZ09iamVjdC0+cmVuZGVyZXIoKSkpCisgICAgICAgICAgICBpZiAodXBkYXRl
UmVnaW9uUmFuZ2VGb3JCb3hDaGlsZChmbG9hdEJveCkpCiAgICAgICAgICAgICAgICAgZmxvYXRC
b3guc2V0TmVlZHNMYXlvdXQoTWFya09ubHlUaGlzKTsKICAgICAgICAgICAgIGVsc2UgaWYgKGlz
PFJlbmRlckJsb2NrPihmbG9hdEJveCkpCiAgICAgICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVy
QmxvY2s+KGZsb2F0Qm94KS5zZXRDaGlsZE5lZWRzTGF5b3V0KE1hcmtPbmx5VGhpcyk7CkBAIC0y
MTAzLDkgKzIxMDMsOSBAQCBib29sIFJlbmRlckJsb2NrRmxvdzo6cG9zaXRpb25OZXdGbG9hdE9u
TGluZShjb25zdCBGbG9hdGluZ09iamVjdCYgbmV3RmxvYXQsIEZsbwogICAgICAgICAgICAgLy8g
U2F2ZSB0aGUgb2xkIGxvZ2ljYWwgdG9wIGJlZm9yZSBjYWxsaW5nIHJlbW92ZVBsYWNlZE9iamVj
dCB3aGljaCB3aWxsIHNldAogICAgICAgICAgICAgLy8gaXNQbGFjZWQgdG8gZmFsc2UuIE90aGVy
d2lzZSBpdCB3aWxsIHRyaWdnZXIgYW4gYXNzZXJ0IGluIGxvZ2ljYWxUb3BGb3JGbG9hdC4KICAg
ICAgICAgICAgIExheW91dFVuaXQgb2xkTG9naWNhbFRvcCA9IGxvZ2ljYWxUb3BGb3JGbG9hdChm
bG9hdGluZ09iamVjdCk7Ci0gICAgICAgICAgICBtX2Zsb2F0aW5nT2JqZWN0cy0+cmVtb3ZlUGxh
Y2VkT2JqZWN0KGZsb2F0aW5nT2JqZWN0KTsKKyAgICAgICAgICAgIG1fZmxvYXRpbmdPYmplY3Rz
LT5yZW1vdmVQbGFjZWRPYmplY3QoJmZsb2F0aW5nT2JqZWN0KTsKICAgICAgICAgICAgIHNldExv
Z2ljYWxUb3BGb3JGbG9hdChmbG9hdGluZ09iamVjdCwgb2xkTG9naWNhbFRvcCArIHBhZ2luYXRp
b25TdHJ1dCk7Ci0gICAgICAgICAgICBtX2Zsb2F0aW5nT2JqZWN0cy0+YWRkUGxhY2VkT2JqZWN0
KGZsb2F0aW5nT2JqZWN0KTsKKyAgICAgICAgICAgIG1fZmxvYXRpbmdPYmplY3RzLT5hZGRQbGFj
ZWRPYmplY3QoJmZsb2F0aW5nT2JqZWN0KTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCAzNDNmNWE0MDU1Y2QxMDM1ZWUxMzAxY2Yy
ZTAwYzRkMWQwNTVlNTYxLi4wNjA3NDM2ZTJmZmRmZjg3MGVlY2Y2YjhhYTcwYzcxMmYzOThhYTY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtNDQ0Nyw3ICs0NDQ3
LDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJCb3g6OmFwcGx5VmlzdWFsRWZmZWN0T3ZlcmZsb3coY29u
c3QgTGF5b3V0UmVjdCYgYm9yZGVyQm94KSBjb24KICAgICByZXR1cm4gTGF5b3V0UmVjdChvdmVy
Zmxvd01pblgsIG92ZXJmbG93TWluWSwgb3ZlcmZsb3dNYXhYIC0gb3ZlcmZsb3dNaW5YLCBvdmVy
Zmxvd01heFkgLSBvdmVyZmxvd01pblkpOwogfQogCi12b2lkIFJlbmRlckJveDo6YWRkT3ZlcmZs
b3dGcm9tQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCwgY29uc3QgTGF5b3V0U2l6ZSYgZGVsdGEpCit2
b2lkIFJlbmRlckJveDo6YWRkT3ZlcmZsb3dGcm9tQ2hpbGQoY29uc3QgUmVuZGVyQm94KiBjaGls
ZCwgY29uc3QgTGF5b3V0U2l6ZSYgZGVsdGEpCiB7CiAgICAgLy8gTmV2ZXIgYWxsb3cgZmxvdyB0
aHJlYWRzIHRvIHByb3BhZ2F0ZSBvdmVyZmxvdyB1cCB0byBhIHBhcmVudC4KICAgICBpZiAoY2hp
bGQtPmlzUmVuZGVyRmxvd1RocmVhZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5o
CmluZGV4IDdmY2QxODVkMTAzNmVhYWIzNmI2NjEyYWU2OTJlODM1ZGE4ZWNkNmQuLjUyODE3ZTg3
NzIyMmFiNjUxZDg2NTMyODFhMzJlMmViODcyOWQzYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmgKQEAgLTIwNCw4ICsyMDQsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBh
ZGRWaXN1YWxFZmZlY3RPdmVyZmxvdygpOwogICAgIExheW91dFJlY3QgYXBwbHlWaXN1YWxFZmZl
Y3RPdmVyZmxvdyhjb25zdCBMYXlvdXRSZWN0JikgY29uc3Q7Ci0gICAgdm9pZCBhZGRPdmVyZmxv
d0Zyb21DaGlsZChSZW5kZXJCb3gqIGNoaWxkKSB7IGFkZE92ZXJmbG93RnJvbUNoaWxkKGNoaWxk
LCBjaGlsZC0+bG9jYXRpb25PZmZzZXQoKSk7IH0KLSAgICB2b2lkIGFkZE92ZXJmbG93RnJvbUNo
aWxkKFJlbmRlckJveCogY2hpbGQsIGNvbnN0IExheW91dFNpemUmIGRlbHRhKTsKKyAgICB2b2lk
IGFkZE92ZXJmbG93RnJvbUNoaWxkKGNvbnN0IFJlbmRlckJveCogY2hpbGQpIHsgYWRkT3ZlcmZs
b3dGcm9tQ2hpbGQoY2hpbGQsIGNoaWxkLT5sb2NhdGlvbk9mZnNldCgpKTsgfQorICAgIHZvaWQg
YWRkT3ZlcmZsb3dGcm9tQ2hpbGQoY29uc3QgUmVuZGVyQm94KiBjaGlsZCwgY29uc3QgTGF5b3V0
U2l6ZSYgZGVsdGEpOwogICAgIAogICAgIHZvaWQgdXBkYXRlTGF5ZXJUcmFuc2Zvcm0oKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaAppbmRl
eCBiMDc3NGM3NDFkZDI1NjkyY2Q0NDM0MTYzOGRjZWJkNDRkYzIxYTg2Li5iNDRjNWEyMjVlOGNj
NjQ0ZDRhNDU2OTA1ODJmMjZjMDJhZDE4MmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaApAQCAtNDQ0LDEyICs0NDQsMTIgQEAgaW5saW5l
IHZvaWQgQnJlYWtpbmdDb250ZXh0OjpoYW5kbGVPdXRPZkZsb3dQb3NpdGlvbmVkKFZlY3RvcjxS
ZW5kZXJCb3gqPiYgcG9zaXQKIGlubGluZSB2b2lkIEJyZWFraW5nQ29udGV4dDo6aGFuZGxlRmxv
YXQoKQogewogICAgIGF1dG8mIGZsb2F0Qm94ID0gZG93bmNhc3Q8UmVuZGVyQm94PigqbV9jdXJy
ZW50LnJlbmRlcmVyKCkpOwotICAgIEZsb2F0aW5nT2JqZWN0KiBmbG9hdGluZ09iamVjdCA9IG1f
bGluZUJyZWFrZXIuaW5zZXJ0RmxvYXRpbmdPYmplY3QoZmxvYXRCb3gpOworICAgIGNvbnN0IGF1
dG8mIGZsb2F0aW5nT2JqZWN0ID0gKm1fbGluZUJyZWFrZXIuaW5zZXJ0RmxvYXRpbmdPYmplY3Qo
ZmxvYXRCb3gpOwogICAgIC8vIGNoZWNrIGlmIGl0IGZpdHMgaW4gdGhlIGN1cnJlbnQgbGluZS4K
ICAgICAvLyBJZiBpdCBkb2VzLCBwb3NpdGlvbiBpdCBub3csIG90aGVyd2lzZSwgcG9zaXRpb24K
ICAgICAvLyBpdCBhZnRlciBtb3ZpbmcgdG8gbmV4dCBsaW5lIChpbiBjbGVhckZsb2F0cygpIGZ1
bmMpCiAgICAgaWYgKG1fZmxvYXRzRml0T25MaW5lICYmIG1fd2lkdGguZml0c09uTGluZUV4Y2x1
ZGluZ1RyYWlsaW5nV2hpdGVzcGFjZShtX2Jsb2NrLmxvZ2ljYWxXaWR0aEZvckZsb2F0KGZsb2F0
aW5nT2JqZWN0KSkpIHsKLSAgICAgICAgbV9saW5lQnJlYWtlci5wb3NpdGlvbk5ld0Zsb2F0T25M
aW5lKCpmbG9hdGluZ09iamVjdCwgbV9sYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCBtX2xpbmVJ
bmZvLCBtX3dpZHRoKTsKKyAgICAgICAgbV9saW5lQnJlYWtlci5wb3NpdGlvbk5ld0Zsb2F0T25M
aW5lKGZsb2F0aW5nT2JqZWN0LCBtX2xhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIG1fbGluZUlu
Zm8sIG1fd2lkdGgpOwogICAgICAgICBpZiAobV9saW5lQnJlYWtIaXN0b3J5LnJlbmRlcmVyKCkg
PT0gbV9jdXJyZW50LnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9saW5lQnJl
YWtIaXN0b3J5Lm9mZnNldCgpKTsKICAgICAgICAgICAgIG1fbGluZUJyZWFrSGlzdG9yeS5pbmNy
ZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVX
aWR0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lV2lkdGguY3BwCmlu
ZGV4IGQyNTE3NmQ4NWYwNWQzMWM1NDMxNDhjNDIxYzY3MGExY2ZkZmNhMWIuLmZjZmIwNDg5MDI3
YmM4ODY2NzAyYTIyMzM2MmQwMzczNjYxNDM2YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9saW5lL0xpbmVXaWR0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL2xpbmUvTGluZVdpZHRoLmNwcApAQCAtNzksNyArNzksNyBAQCB2b2lkIExpbmVXaWR0aDo6
dXBkYXRlQXZhaWxhYmxlV2lkdGgoTGF5b3V0VW5pdCByZXBsYWNlZEhlaWdodCkKIHN0YXRpYyBi
b29sIG5ld0Zsb2F0U2hyaW5rc0xpbmUoY29uc3QgRmxvYXRpbmdPYmplY3QmIG5ld0Zsb2F0LCBj
b25zdCBSZW5kZXJCbG9ja0Zsb3cmIGJsb2NrLCBib29sIGlzRmlyc3RMaW5lKQogewogICAgIExh
eW91dFVuaXQgYmxvY2tPZmZzZXQgPSBibG9jay5sb2dpY2FsSGVpZ2h0KCk7Ci0gICAgaWYgKGJs
b2NrT2Zmc2V0ID49IGJsb2NrLmxvZ2ljYWxUb3BGb3JGbG9hdCgmbmV3RmxvYXQpICYmIGJsb2Nr
T2Zmc2V0IDwgYmxvY2subG9naWNhbEJvdHRvbUZvckZsb2F0KCZuZXdGbG9hdCkpCisgICAgaWYg
KGJsb2NrT2Zmc2V0ID49IGJsb2NrLmxvZ2ljYWxUb3BGb3JGbG9hdChuZXdGbG9hdCkgJiYgYmxv
Y2tPZmZzZXQgPCBibG9jay5sb2dpY2FsQm90dG9tRm9yRmxvYXQobmV3RmxvYXQpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIGluaXRpYWwtbGV0dGVyIGZsb2F0IGFsd2F5cyBzaHJp
bmtzIHRoZSBmaXJzdCBsaW5lLgpAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgTGluZVdpZHRoOjpz
aHJpbmtBdmFpbGFibGVXaWR0aEZvck5ld0Zsb2F0SWZOZWVkZWQoY29uc3QgRmxvYXRpbmdPYmpl
Y3QmIG5lCiAjZW5kaWYKIAogICAgIGlmIChuZXdGbG9hdC50eXBlKCkgPT0gRmxvYXRpbmdPYmpl
Y3Q6OkZsb2F0TGVmdCkgewotICAgICAgICBmbG9hdCBuZXdMZWZ0ID0gbV9ibG9jay5sb2dpY2Fs
UmlnaHRGb3JGbG9hdCgmbmV3RmxvYXQpOworICAgICAgICBmbG9hdCBuZXdMZWZ0ID0gbV9ibG9j
ay5sb2dpY2FsUmlnaHRGb3JGbG9hdChuZXdGbG9hdCk7CiAgICAgICAgIGlmIChzaG91bGRJbmRl
bnRUZXh0KCkgJiYgbV9ibG9jay5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKICAg
ICAgICAgICAgIG5ld0xlZnQgKz0gZmxvb3JUb0ludChtX2Jsb2NrLnRleHRJbmRlbnRPZmZzZXQo
KSk7CiAjaWYgRU5BQkxFKENTU19TSEFQRVMpCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBMaW5l
V2lkdGg6OnNocmlua0F2YWlsYWJsZVdpZHRoRm9yTmV3RmxvYXRJZk5lZWRlZChjb25zdCBGbG9h
dGluZ09iamVjdCYgbmUKICNlbmRpZgogICAgICAgICBtX2xlZnQgPSBzdGQ6Om1heDxmbG9hdD4o
bV9sZWZ0LCBuZXdMZWZ0KTsKICAgICB9IGVsc2UgewotICAgICAgICBmbG9hdCBuZXdSaWdodCA9
IG1fYmxvY2subG9naWNhbExlZnRGb3JGbG9hdCgmbmV3RmxvYXQpOworICAgICAgICBmbG9hdCBu
ZXdSaWdodCA9IG1fYmxvY2subG9naWNhbExlZnRGb3JGbG9hdChuZXdGbG9hdCk7CiAgICAgICAg
IGlmIChzaG91bGRJbmRlbnRUZXh0KCkgJiYgIW1fYmxvY2suc3R5bGUoKS5pc0xlZnRUb1JpZ2h0
RGlyZWN0aW9uKCkpCiAgICAgICAgICAgICBuZXdSaWdodCAtPSBmbG9vclRvSW50KG1fYmxvY2su
dGV4dEluZGVudE9mZnNldCgpKTsKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3BwCmluZGV4
IGRjODRiOWE1MjYxMjUwNTFkMDQxZThjY2YwMjFiYTA2YmFhNDcyOTkuLjYzMDczYjQwNWQ4MTg2
Y2Q2ZjIzNTc5ODEwZGQ2ZGRhM2JjOTcyYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcApAQCAtMzA3LDEyICszMDcsMTIg
QEAgYm9vbCBTaGFwZU91dHNpZGVJbmZvOjppc0VuYWJsZWRGb3IoY29uc3QgUmVuZGVyQm94JiBi
b3gpCiBTaGFwZU91dHNpZGVEZWx0YXMgU2hhcGVPdXRzaWRlSW5mbzo6Y29tcHV0ZURlbHRhc0Zv
ckNvbnRhaW5pbmdCbG9ja0xpbmUoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBjb250YWluaW5nQmxv
Y2ssIGNvbnN0IEZsb2F0aW5nT2JqZWN0JiBmbG9hdGluZ09iamVjdCwgTGF5b3V0VW5pdCBsaW5l
VG9wLCBMYXlvdXRVbml0IGxpbmVIZWlnaHQpCiB7CiAgICAgQVNTRVJUKGxpbmVIZWlnaHQgPj0g
MCk7Ci0gICAgTGF5b3V0VW5pdCBib3JkZXJCb3hUb3AgPSBjb250YWluaW5nQmxvY2subG9naWNh
bFRvcEZvckZsb2F0KCZmbG9hdGluZ09iamVjdCkgKyBjb250YWluaW5nQmxvY2subWFyZ2luQmVm
b3JlRm9yQ2hpbGQobV9yZW5kZXJlcik7CisgICAgTGF5b3V0VW5pdCBib3JkZXJCb3hUb3AgPSBj
b250YWluaW5nQmxvY2subG9naWNhbFRvcEZvckZsb2F0KGZsb2F0aW5nT2JqZWN0KSArIGNvbnRh
aW5pbmdCbG9jay5tYXJnaW5CZWZvcmVGb3JDaGlsZChtX3JlbmRlcmVyKTsKICAgICBMYXlvdXRV
bml0IGJvcmRlckJveExpbmVUb3AgPSBsaW5lVG9wIC0gYm9yZGVyQm94VG9wOwogCiAgICAgaWYg
KGlzU2hhcGVEaXJ0eSgpIHx8ICFtX3NoYXBlT3V0c2lkZURlbHRhcy5pc0ZvckxpbmUoYm9yZGVy
Qm94TGluZVRvcCwgbGluZUhlaWdodCkpIHsKICAgICAgICAgTGF5b3V0VW5pdCByZWZlcmVuY2VC
b3hMaW5lVG9wID0gYm9yZGVyQm94TGluZVRvcCAtIGxvZ2ljYWxUb3BPZmZzZXQoKTsKLSAgICAg
ICAgTGF5b3V0VW5pdCBmbG9hdE1hcmdpbkJveFdpZHRoID0gc3RkOjptYXg8TGF5b3V0VW5pdD4o
TGF5b3V0VW5pdCgpLCBjb250YWluaW5nQmxvY2subG9naWNhbFdpZHRoRm9yRmxvYXQoJmZsb2F0
aW5nT2JqZWN0KSk7CisgICAgICAgIExheW91dFVuaXQgZmxvYXRNYXJnaW5Cb3hXaWR0aCA9IHN0
ZDo6bWF4PExheW91dFVuaXQ+KExheW91dFVuaXQoKSwgY29udGFpbmluZ0Jsb2NrLmxvZ2ljYWxX
aWR0aEZvckZsb2F0KGZsb2F0aW5nT2JqZWN0KSk7CiAKICAgICAgICAgaWYgKGNvbXB1dGVkU2hh
cGUoKS5saW5lT3ZlcmxhcHNTaGFwZU1hcmdpbkJvdW5kcyhyZWZlcmVuY2VCb3hMaW5lVG9wLCBs
aW5lSGVpZ2h0KSkgewogICAgICAgICAgICAgTGluZVNlZ21lbnQgc2VnbWVudCA9IGNvbXB1dGVk
U2hhcGUoKS5nZXRFeGNsdWRlZEludGVydmFsKChib3JkZXJCb3hMaW5lVG9wIC0gbG9naWNhbFRv
cE9mZnNldCgpKSwgc3RkOjptaW4obGluZUhlaWdodCwgc2hhcGVMb2dpY2FsQm90dG9tKCkgLSBi
b3JkZXJCb3hMaW5lVG9wKSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>