<?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>188886</bug_id>
          
          <creation_ts>2018-08-23 07:29:37 -0700</creation_ts>
          <short_desc>[LFC][Floating] Decouple the incoming floats and floats already placed in the list</short_desc>
          <delta_ts>2018-08-23 08:13:14 -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>InRadar</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>bfulgham</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1453047</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-08-23 07:29:37 -0700</bug_when>
    <thetext>This is in preparation for float avoidance for formatting context root boxes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453050</commentid>
    <comment_count>1</comment_count>
      <attachid>347920</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-08-23 07:51:47 -0700</bug_when>
    <thetext>Created attachment 347920
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453055</commentid>
    <comment_count>2</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-08-23 08:12:32 -0700</bug_when>
    <thetext>Committed r235223: &lt;https://trac.webkit.org/changeset/235223&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453056</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-23 08:13:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/43643912&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347920</attachid>
            <date>2018-08-23 07:51:47 -0700</date>
            <delta_ts>2018-08-23 08:09:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188886-20180823075144.patch</filename>
            <type>text/plain</type>
            <size>34863</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1MjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTViMDEyODFmNWYxM2Vl
MzNmMjcwZDYxZWY1MzYxM2UwZGJjNGYyYi4uYjFlOWM2M2U0OTgxMjRiNDdmZTYyYmNmOWRiM2Vj
NWZkOTE4NzRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDE4LTA4LTIzICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bRmxvYXRpbmddIERl
Y291cGxlIHRoZSBpbmNvbWluZyBmbG9hdHMgYW5kIGZsb2F0cyBhbHJlYWR5IHBsYWNlZCBpbiB0
aGUgbGlzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg4ODg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgdGhlIGZsb2F0IGF2b2lkYW5jZSBmZWF0dXJlIHdo
ZXJlIGZvcm1hdHRpbmcgY29udGV4dCByb290IGJveGVzIGF2b2lkIGV4aXN0aW5nIGZsb2F0cy4K
KworICAgICAgICAxLiBJbnRyb2R1Y2UgRmxvYXRCb3ggY2xhc3MgZm9yIHRoZSBpbmNvbWluZyBm
bG9hdHMgKFRoaXMgd2lsbCBuZWVkIHRvIGJlIHJlbmFtZWQgd2hlbiBhZGRpbmcgc3VwcG9ydCBm
b3IgYXZvaWRhbmNlIC1pbmNvbWluZyBib3ggaXMgYWN0dWFsbHkgbm90IGEgZmxvYXQpLgorICAg
ICAgICAyLiBVc2UgdGhlIGV4aXN0aW5nIEZsb2F0U3RhdGU6OkZsb2F0SXRlbSBjbGFzcyBmb3Ig
cGxhY2VkIGZsb2F0cy4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsYXlvdXQvTGF5b3V0VW5p
dHMuaDoKKyAgICAgICAgKiBsYXlvdXQvVmVyaWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6TGF5b3V0Q29udGV4dDo6dmVyaWZ5QW5kT3V0cHV0TWlzbWF0Y2hpbmdMYXlv
dXRUcmVlIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5o
OgorICAgICAgICAqIGxheW91dC9mbG9hdHMvRmxvYXRCb3guY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6RmxvYXRCb3g6OkZsb2F0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6RmxvYXRCb3g6OmluaXRpYWxpemVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkZsb2F0Qm94Ojppc0xlZnRBbGlnbmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6RmxvYXRCb3g6OnNldExlZnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpGbG9hdEJveDo6c2V0VG9wTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0
Qm94OjpyZXNldFZlcnRpY2FsbHkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9hdEJv
eDo6cmVzZXRIb3Jpem9udGFsbHkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9hdEJv
eDo6dG9wTGVmdEluQ29udGFpbmluZ0Jsb2NrIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvZmxv
YXRzL0Zsb2F0Qm94Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMv
RmxvYXRpbmdDb250ZXh0LmguCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0Qm94Ojp0
b3AgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9hdEJveDo6bGVmdCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0Qm94OjptYXJnaW5Ub3AgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9hdEJveDo6bWFyZ2luTGVmdCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0Qm94OjptYXJnaW5Cb3R0b20gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9hdEJveDo6bWFyZ2luUmlnaHQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9hdEJveDo6cmVjdFdpdGhNYXJnaW4gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9hdEJveDo6c2V0VG9wKToKKyAgICAg
ICAgKiBsYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkZsb2F0aW5nUGFpcjo6dmVydGljYWxQb3NpdGlvbiBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OmJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rmxv
YXRpbmdDb250ZXh0Ojpwb3NpdGlvbkZvckZsb2F0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6RmxvYXRpbmdDb250ZXh0Ojp2ZXJ0aWNhbFBvc2l0aW9uV2l0aENsZWFyYW5jZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0aW5nQ29udGV4dDo6ZmxvYXRp
bmdQb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0aW5nUGFp
cjo6aG9yaXp0b25hbFBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
RmxvYXRpbmdQYWlyOjpib3R0b20gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJ
dGVyYXRvcjo6SXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJdGVyYXRvcjo6
b3BlcmF0b3IrKyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okl0ZXJhdG9yOjpzZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9hdGluZ0NvbnRleHQ6OmluaXRpYWxWZXJ0aWNh
bFBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rmxv
YXRpbmdDb250ZXh0OjphbGlnbldpdGhDb250YWluaW5nQmxvY2sgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9hdGluZ0NvbnRleHQ6OmFsaWduV2l0aEZsb2F0
aW5ncyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0aW5n
Q29udGV4dDo6dG9Db250YWluaW5nQmxvY2sgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxh
eW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0Lmg6CisgICAgICAgICogbGF5b3V0L2Zsb2F0cy9G
bG9hdGluZ1N0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0aW5nU3RhdGU6
OnJvb3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9hdGluZ1N0YXRlOjps
YXlvdXRDb250ZXh0IGNvbnN0KToKKwogMjAxOC0wOC0yMyAgWmFuIERvYmVyc2VrICA8emRvYmVy
c2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0Nvb3JkR3JhcGhpY3NdIFJlbW92ZSB0aGUgcmVt
YWluaW5nIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlIGNydWZ0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cmlu
ZGV4IDgxOWE1ZDI5OGFhYjczM2Y2Nzk1ZDY3YjYwNmNiMDg0MTc2NjlhMTguLmE1MTJlYmE0NTc2
ZGI3ZjdhMGYxZjNjZTcwNDY4MjJhOGJiZWFlMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xMjI5LDYg
KzEyMjksNyBAQCBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ1N0YXRlLmNw
cAogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcAogbGF5b3V0
L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0ludmFsaWRhdGlvbi5jcHAKIGxheW91dC9kaXNwbGF5dHJl
ZS9EaXNwbGF5Qm94LmNwcAorbGF5b3V0L2Zsb2F0cy9GbG9hdEJveC5jcHAKIGxheW91dC9mbG9h
dHMvRmxvYXRpbmdDb250ZXh0LmNwcAogbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ1N0YXRlLmNwcAog
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
YjBjMmIwY2QxNWEwZjIyNGNiMDk5MDZiMjI5MGNhZTE2ZWRhNGI2Yy4uMmI4NDExNTRlNzY4NDdh
ODVjZTk3OGJhMjNhODIxYTUxYzk0ZDg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTk4OSw2ICsxOTg5LDcgQEAKIAkJNkY5
OTVBMzgxQTcwODMzNzAwQTczNUY0IC8qIEpTV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkY5OTVBMkUxQTcwODMz
NzAwQTczNUY0IC8qIEpTV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5oICovOyB9OwogCQk2Rjk5NUEz
QTFBNzA4MzM3MDBBNzM1RjQgLyogSlNXZWJHTFZlcnRleEFycmF5T2JqZWN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2Rjk5NUEzMDFBNzA4MzM3MDBB
NzM1RjQgLyogSlNXZWJHTFZlcnRleEFycmF5T2JqZWN0LmggKi87IH07CiAJCTZGQTQ0NTRFODk4
RjJGQzE2OEJDMzhDMSAvKiBKU0JlZm9yZVVubG9hZEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUUwNEEyN0JFRDJGODFGOThFOTAyMkIgLyog
SlNCZWZvcmVVbmxvYWRFdmVudC5oICovOyB9OworCQk2RkZEQzQ0MjIxMkVGRjE3MDBBOUNBOTEg
LyogRmxvYXRCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDZGRkRDNDQwMjEyRUZGMTYwMEE5Q0E5MSAvKiBGbG9hdEJveC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwOUEwMUZFMUUzRDBCREQwMDZC
MEQ0QyAvKiBNb2R1bGVGZXRjaEZhaWx1cmVLaW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MDlBMDFGRDFFM0QwQkNDMDA2QjBENEMgLyogTW9kdWxl
RmV0Y2hGYWlsdXJlS2luZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTcxMDI1RUNEMUY5OUYwQ0UwMDRBMjUwQyAvKiBBbmltYXRpb25UaW1lbGlu
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzEwMjVF
QzcxRjk5RjA5NjAwNEEyNTBDIC8qIEFuaW1hdGlvblRpbWVsaW5lLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzEwMjVFRDAxRjk5RjBDRTAwNEEy
NTBDIC8qIERvY3VtZW50VGltZWxpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcxMDI1RUM1MUY5OUYwOTYwMDRBMjUwQyAvKiBEb2N1bWVudFRpbWVs
aW5lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTg5NjYsNiArODk2Nyw4IEBACiAJCTZGQ0QxOUMxMjBGOTcyN0EwMEZENDUyOSAvKiBUZXh0Q29u
dGVudFByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRDb250ZW50UHJvdmlkZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkZDRDE5QzcyMEY5NzI3RDAwRkQ0NTI5IC8qIFRl
eHRDb250ZW50UHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dENvbnRlbnRQcm92
aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGQ0Y5NzUyMjBGMDJCMzUw
MDIxNDk2MCAvKiBSdW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNkZGREM0M0UyMTJFRkYxNjAwQTlDQTkxIC8qIEZsb2F0Qm94LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZsb2F0Qm94LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkZGREM0NDAyMTJFRkYxNjAwQTlDQTkxIC8qIEZsb2F0
Qm94LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZsb2F0Qm94Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwOUEwMUZEMUUzRDBCQ0MwMDZCMEQ0QyAvKiBNb2R1
bGVGZXRjaEZhaWx1cmVLaW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1v
ZHVsZUZldGNoRmFpbHVyZUtpbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzEw
MDRCOUQxREMxMzk4ODAwQTUyQTM4IC8qIHBsYXliYWNrLXN1cHBvcnQuanMgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSAicGxheWJhY2stc3VwcG9ydC5qcyI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxMDI1RUMyMUY5OUYwOTYwMDRBMjUwQyAvKiBXZWJB
bmltYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQW5pbWF0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xOTQ3NCw2ICsxOTQ3Nyw4IEBACiAJCTZGQ0ZDMDU1MjEyREFDQzIw
MDc2OTVEMiAvKiBmbG9hdHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCTZGRkRDNDNFMjEyRUZGMTYwMEE5Q0E5MSAvKiBGbG9hdEJveC5jcHAgKi8sCisJ
CQkJNkZGREM0NDAyMTJFRkYxNjAwQTlDQTkxIC8qIEZsb2F0Qm94LmggKi8sCiAJCQkJMTE1Q0ZB
ODUyMDhCOTA2NjAwMUU2OTkxIC8qIEZsb2F0aW5nQ29udGV4dC5jcHAgKi8sCiAJCQkJMTE1Q0ZB
ODQyMDhCOTA2NjAwMUU2OTkxIC8qIEZsb2F0aW5nQ29udGV4dC5oICovLAogCQkJCTExNUNGQTgx
MjA4QjhFREEwMDFFNjk5MSAvKiBGbG9hdGluZ1N0YXRlLmNwcCAqLywKQEAgLTI3ODYyLDYgKzI3
ODY3LDcgQEAKIAkJCQk0OUVDRUI3MDE0OTk3OTBEMDBDREQzQTQgLyogRmlsdGVyT3BlcmF0aW9u
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzcyQzAwRDkxMjk2MTlGODAwNUM5NTc1IC8qIEZpbmRP
cHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOENGRjA0RjBBMTU0RjA5MDAwQTQyMzQgLyog
Rml4ZWRUYWJsZUxheW91dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkZGREM0NDIyMTJFRkYxNzAw
QTlDQTkxIC8qIEZsb2F0Qm94LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzA3M0JBQTBDMzk5QjFG
MDAwRjU5NzkgLyogRmxvYXRDb252ZXJzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxMTVDRkE4
NjIwOEI5MDY2MDAxRTY5OTEgLyogRmxvYXRpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5QTUyOEU4NDE3RDdGNTJGMDBBQTk1MTggLyogRmxvYXRpbmdPYmplY3RzLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRVbml0cy5oIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFVuaXRzLmgKaW5kZXggZDM5ZTUwYTRiNmZiNjVl
YThkNzA2MDk3NTAxZmVkZTUyNGU0NzJiYS4uMWI2MWVkYjM3MjIzMTNmZWMyZWU0YzBhMTg0MmQ0
NzkyZGY3ZmIxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFVuaXRz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFVuaXRzLmgKQEAgLTQ2LDYgKzQ2
LDEyIEBAIHN0cnVjdCBQb3NpdGlvbiB7CiAgICAgb3BlcmF0b3IgTGF5b3V0UG9pbnQoKSBjb25z
dCB7IHJldHVybiB7IHgsIHkgfTsgfQogfTsKIAorLy8gRklYTUU6IFdyYXAgdGhlc2UgaW50byBz
dHJ1Y3RzLgordXNpbmcgUG9pbnRJbkNvbnRleHRSb290ID0gUG9zaXRpb247Cit1c2luZyBQb2lu
dEluQ29udGFpbmluZ0Jsb2NrID0gUG9zaXRpb247Cit1c2luZyBQb3NpdGlvbkluQ29udGV4dFJv
b3QgPSBMYXlvdXRVbml0OwordXNpbmcgUG9zaXRpb25JbkNvbnRhaW5pbmdCbG9jayA9IExheW91
dFVuaXQ7CisKIGlubGluZSBQb3NpdGlvbjo6UG9zaXRpb24oTGF5b3V0UG9pbnQgcG9pbnQpCiAg
ICAgOiB4KHBvaW50LngoKSkKICAgICAsIHkocG9pbnQueSgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guaCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmgKaW5kZXggZjcyMmExODc3NGY4OWNjMzY3
NTllMzkzNWY2NWQyYjg4YmVlMmE1NC4uMjI4NTFmNzY0NmZjOWYzZjUwZmRiOTM0MDk3NmMzOThi
ODVjYzgzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rp
c3BsYXlCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxh
eUJveC5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlbmRl
clN0eWxlOwogCiBuYW1lc3BhY2UgTGF5b3V0IHsKK2NsYXNzIEZsb2F0Qm94OwogY2xhc3MgQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDsKIGNsYXNzIEZvcm1hdHRpbmdDb250ZXh0OwogY2xhc3MgRmxv
YXRpbmdDb250ZXh0OwpAQCAtNDcsNiArNDgsNyBAQCBuYW1lc3BhY2UgRGlzcGxheSB7CiBjbGFz
cyBCb3ggewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQm94KTsKIHB1YmxpYzoKKyAgICBm
cmllbmQgY2xhc3MgTGF5b3V0OjpGbG9hdEJveDsKICAgICBmcmllbmQgY2xhc3MgTGF5b3V0OjpC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0OwogICAgIGZyaWVuZCBjbGFzcyBMYXlvdXQ6OkZvcm1hdHRp
bmdDb250ZXh0OwogICAgIGZyaWVuZCBjbGFzcyBMYXlvdXQ6OkZsb2F0aW5nQ29udGV4dDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRCb3guY3BwIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdEJveC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDQwMTBj
ZTAyMDMyYmY2N2Y0ZDAzZjRlMzA3ZThiZGViZTQ1MTZlZAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRCb3guY3BwCkBAIC0wLDAgKzEsMTE4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZsb2F0Qm94Lmgi
CisKKyNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKKworI2luY2x1ZGUgIkxh
eW91dEJveC5oIgorI2luY2x1ZGUgIkxheW91dENvbnRhaW5lci5oIgorI2luY2x1ZGUgIkxheW91
dENvbnRleHQuaCIKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CituYW1lc3BhY2UgTGF5b3V0IHsKKworV1RGX01BS0VfSVNPX0FMTE9DQVRF
RF9JTVBMKEZsb2F0Qm94KTsKKworRmxvYXRCb3g6OkZsb2F0Qm94KGNvbnN0IEJveCYgbGF5b3V0
Qm94LCBjb25zdCBGbG9hdGluZ1N0YXRlJiBmbG9hdGluZ1N0YXRlLCBjb25zdCBMYXlvdXRDb250
ZXh0JiBsYXlvdXRDb250ZXh0KQorICAgIDogbV9sYXlvdXRCb3gobWFrZVdlYWtQdHIoY29uc3Rf
Y2FzdDxCb3gmPihsYXlvdXRCb3gpKSkKKyAgICAsIG1fZmxvYXRpbmdTdGF0ZShmbG9hdGluZ1N0
YXRlKQorICAgICwgbV9hYnNvbHV0ZURpc3BsYXlCb3goRm9ybWF0dGluZ0NvbnRleHQ6Om1hcEJv
eFRvQW5jZXN0b3IobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94LCBkb3duY2FzdDxDb250YWluZXI+
KGZsb2F0aW5nU3RhdGUucm9vdCgpKSkpCisgICAgLCBtX2NvbnRhaW5pbmdCbG9ja0Fic29sdXRl
RGlzcGxheUJveChGb3JtYXR0aW5nQ29udGV4dDo6bWFwQm94VG9BbmNlc3RvcihsYXlvdXRDb250
ZXh0LCAqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpLCBkb3duY2FzdDxDb250YWluZXI+KGZs
b2F0aW5nU3RhdGUucm9vdCgpKSkpCit7CisgICAgaW5pdGlhbGl6ZVBvc2l0aW9uKCk7Cit9CisK
K3ZvaWQgRmxvYXRCb3g6OmluaXRpYWxpemVQb3NpdGlvbigpCit7CisgICAgcmVzZXRWZXJ0aWNh
bGx5KCk7CisgICAgcmVzZXRIb3Jpem9udGFsbHkoKTsKK30KKworYm9vbCBGbG9hdEJveDo6aXNM
ZWZ0QWxpZ25lZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGF5b3V0Qm94LT5pc0xlZnRGbG9h
dGluZ1Bvc2l0aW9uZWQoKTsKK30KKwordm9pZCBGbG9hdEJveDo6c2V0TGVmdChQb3NpdGlvbklu
Q29udGV4dFJvb3QgbGVmdCkKK3sKKyAgICAvLyBIb3Jpem9udGFsIHBvc2l0aW9uIGlzIGNvbnN0
cmFpbmVkIGJ5IHRoZSBjb250YWluaW5nIGJsb2NrJ3MgY29udGVudCBib3guCisgICAgLy8gQ29t
cHV0ZSB0aGUgaG9yaXpvbnRhbCBwb3NpdGlvbiBmb3IgdGhlIG5ldyBmbG9hdGluZyBieSB0YWtp
bmcgYm90aCB0aGUgY29udGluaW5nIGJsb2NrIGFuZCB0aGUgY3VycmVudCBsZWZ0L3JpZ2h0IGZs
b2F0cyBpbnRvIGFjY291bnQuCisgICAgYXV0byBjb250YWluaW5nQmxvY2tDb250ZW50Qm94TGVm
dCA9IG1fY29udGFpbmluZ0Jsb2NrQWJzb2x1dGVEaXNwbGF5Qm94LmxlZnQoKSArIG1fY29udGFp
bmluZ0Jsb2NrQWJzb2x1dGVEaXNwbGF5Qm94LmNvbnRlbnRCb3hMZWZ0KCk7CisgICAgYXV0byBj
b250YWluaW5nQmxvY2tDb250ZW50Qm94UmlnaHQgPSBjb250YWluaW5nQmxvY2tDb250ZW50Qm94
TGVmdCArIG1fY29udGFpbmluZ0Jsb2NrQWJzb2x1dGVEaXNwbGF5Qm94LmNvbnRlbnRCb3hXaWR0
aCgpOworCisgICAgLy8gQWxpZ24gaXQgd2l0aCB0aGUgY29udGFpbmluZyBibG9jaydzIGxlZnQg
ZWRnZSBmaXJzdC4KKyAgICBsZWZ0ID0gc3RkOjptYXgoY29udGFpbmluZ0Jsb2NrQ29udGVudEJv
eExlZnQgKyBtYXJnaW5MZWZ0KCksIGxlZnQpOworICAgIC8vIE1ha2Ugc3VyZSBpdCBkb2VzIG5v
dCBvdmVyZmxvdyB0aGUgY29udGFpbmluZyBibG9jayBvbiB0aGUgcmlnaHQuCisgICAgYXV0byBt
YXJnaW5Cb3hTaXplID0gbV9hYnNvbHV0ZURpc3BsYXlCb3gubWFyZ2luQm94KCkud2lkdGgoKTsK
KyAgICBsZWZ0ID0gc3RkOjptaW4obGVmdCwgY29udGFpbmluZ0Jsb2NrQ29udGVudEJveFJpZ2h0
IC0gbWFyZ2luQm94U2l6ZSArIG1hcmdpbkxlZnQoKSk7CisKKyAgICBtX2Fic29sdXRlRGlzcGxh
eUJveC5zZXRMZWZ0KGxlZnQpOworfQorCit2b2lkIEZsb2F0Qm94OjpzZXRUb3BMZWZ0KFBvaW50
SW5Db250ZXh0Um9vdCB0b3BMZWZ0KQoreworICAgIHNldFRvcCh0b3BMZWZ0LnkpOworICAgIHNl
dExlZnQodG9wTGVmdC54KTsKK30KKwordm9pZCBGbG9hdEJveDo6cmVzZXRWZXJ0aWNhbGx5KCkK
K3sKKyAgICAvLyBJbmNvbWluZyBmbG9hdCBjYW5ub3QgYmUgcGxhY2VkIGhpZ2hlciB0aGFuIGV4
aXN0aW5nIGZsb2F0cyAobWFyZ2luIGJveCBvZiB0aGUgbGFzdCBmbG9hdCkuCisgICAgLy8gVGFr
ZSB0aGUgc3RhdGljIHBvc2l0aW9uICh3aGVyZSB0aGUgYm94IHdvdWxkIGdvIGlmIGl0IHdhc24n
dCBmbG9hdGluZykgYW5kIGFkanVzdCBpdCB3aXRoIHRoZSBsYXN0IGZsb2F0LgorICAgIGF1dG8g
dG9wID0gbV9hYnNvbHV0ZURpc3BsYXlCb3gucmVjdFdpdGhNYXJnaW4oKS50b3AoKTsKKyAgICBp
ZiAoYXV0byBsYXN0RmxvYXQgPSBtX2Zsb2F0aW5nU3RhdGUubGFzdCgpKQorICAgICAgICB0b3Ag
PSBzdGQ6Om1heCh0b3AsIGxhc3RGbG9hdC0+ZGlzcGxheUJveCgpLnJlY3RXaXRoTWFyZ2luKCku
dG9wKCkpOworICAgIHRvcCArPSBtX2Fic29sdXRlRGlzcGxheUJveC5tYXJnaW5Ub3AoKTsKKwor
ICAgIG1fYWJzb2x1dGVEaXNwbGF5Qm94LnNldFRvcCh0b3ApOworfQorCit2b2lkIEZsb2F0Qm94
OjpyZXNldEhvcml6b250YWxseSgpCit7CisgICAgLy8gQWxpZ24gdGhlIGJveCB3aXRoIHRoZSBj
b250YWluaW5nIGJsb2NrJ3MgY29udGVudCBib3guCisgICAgYXV0byBjb250YWluaW5nQmxvY2tD
b250ZW50Qm94TGVmdCA9IG1fY29udGFpbmluZ0Jsb2NrQWJzb2x1dGVEaXNwbGF5Qm94LmxlZnQo
KSArIG1fY29udGFpbmluZ0Jsb2NrQWJzb2x1dGVEaXNwbGF5Qm94LmNvbnRlbnRCb3hMZWZ0KCk7
CisgICAgYXV0byBjb250YWluaW5nQmxvY2tDb250ZW50Qm94UmlnaHQgPSBjb250YWluaW5nQmxv
Y2tDb250ZW50Qm94TGVmdCArIG1fY29udGFpbmluZ0Jsb2NrQWJzb2x1dGVEaXNwbGF5Qm94LmNv
bnRlbnRCb3hXaWR0aCgpOworCisgICAgYXV0byBsZWZ0ID0gaXNMZWZ0QWxpZ25lZCgpID8gY29u
dGFpbmluZ0Jsb2NrQ29udGVudEJveExlZnQgOiBjb250YWluaW5nQmxvY2tDb250ZW50Qm94Umln
aHQgLSBtX2Fic29sdXRlRGlzcGxheUJveC5tYXJnaW5Cb3goKS53aWR0aCgpOworICAgIGxlZnQg
Kz0gbV9hYnNvbHV0ZURpc3BsYXlCb3gubWFyZ2luTGVmdCgpOworCisgICAgbV9hYnNvbHV0ZURp
c3BsYXlCb3guc2V0TGVmdChsZWZ0KTsKK30KKworUG9pbnRJbkNvbnRhaW5pbmdCbG9jayBGbG9h
dEJveDo6dG9wTGVmdEluQ29udGFpbmluZ0Jsb2NrKCkgY29uc3QKK3sKKyAgICAvLyBGcm9tIGZv
cm1hdHRpbmcgcm9vdCBjb29yZGluYXRlIHN5c3RlbSBiYWNrIHRvIGNvbnRhaW5pbmcgYmxvY2sn
cy4KKyAgICBpZiAobV9sYXlvdXRCb3gtPmNvbnRhaW5pbmdCbG9jaygpID09ICZtX2Zsb2F0aW5n
U3RhdGUucm9vdCgpKQorICAgICAgICByZXR1cm4gbV9hYnNvbHV0ZURpc3BsYXlCb3gudG9wTGVm
dCgpOworCisgICAgcmV0dXJuIHsgbV9hYnNvbHV0ZURpc3BsYXlCb3gubGVmdCgpIC0gbV9jb250
YWluaW5nQmxvY2tBYnNvbHV0ZURpc3BsYXlCb3gubGVmdCgpLCBtX2Fic29sdXRlRGlzcGxheUJv
eC50b3AoKSAtIG1fY29udGFpbmluZ0Jsb2NrQWJzb2x1dGVEaXNwbGF5Qm94LnRvcCgpIH07Cit9
CisKK30KK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0
cy9GbG9hdEJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdEJveC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjliYTZmOTA3ZTVmNTEwODQ4OTQyYmFhMTEwMDIzMTQ5MDdhYzA5MWUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0Qm94LmgKQEAg
LTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKExB
WU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisKKyNpbmNsdWRlICJEaXNwbGF5Qm94LmgiCisjaW5j
bHVkZSAiTGF5b3V0VW5pdC5oIgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KKyNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBMYXlv
dXQgeworCitjbGFzcyBCb3g7CitjbGFzcyBGbG9hdGluZ1N0YXRlOworY2xhc3MgTGF5b3V0Q29u
dGV4dDsKKworY2xhc3MgRmxvYXRCb3ggeworICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoRmxv
YXRCb3gpOworcHVibGljOgorICAgIEZsb2F0Qm94KGNvbnN0IEJveCYsIGNvbnN0IEZsb2F0aW5n
U3RhdGUmLCBjb25zdCBMYXlvdXRDb250ZXh0Jik7CisKKyAgICBQb3NpdGlvbkluQ29udGV4dFJv
b3QgdG9wKCkgY29uc3QgeyByZXR1cm4gbV9hYnNvbHV0ZURpc3BsYXlCb3gudG9wKCk7IH0KKyAg
ICBQb3NpdGlvbkluQ29udGV4dFJvb3QgbGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fYWJzb2x1dGVE
aXNwbGF5Qm94LmxlZnQoKTsgfQorICAgIFBvaW50SW5Db250YWluaW5nQmxvY2sgdG9wTGVmdElu
Q29udGFpbmluZ0Jsb2NrKCkgY29uc3Q7CisKKyAgICBMYXlvdXRVbml0IG1hcmdpblRvcCgpIGNv
bnN0IHsgcmV0dXJuIG1fYWJzb2x1dGVEaXNwbGF5Qm94Lm1hcmdpblRvcCgpOyB9CisgICAgTGF5
b3V0VW5pdCBtYXJnaW5MZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9hYnNvbHV0ZURpc3BsYXlCb3gu
bWFyZ2luTGVmdCgpOyB9CisgICAgTGF5b3V0VW5pdCBtYXJnaW5Cb3R0b20oKSBjb25zdCB7IHJl
dHVybiBtX2Fic29sdXRlRGlzcGxheUJveC5tYXJnaW5Cb3R0b20oKTsgfQorICAgIExheW91dFVu
aXQgbWFyZ2luUmlnaHQoKSBjb25zdCB7IHJldHVybiBtX2Fic29sdXRlRGlzcGxheUJveC5tYXJn
aW5SaWdodCgpOyB9CisKKyAgICBEaXNwbGF5OjpCb3g6OlJlY3QgcmVjdFdpdGhNYXJnaW4oKSBj
b25zdCB7IHJldHVybiBtX2Fic29sdXRlRGlzcGxheUJveC5yZWN0V2l0aE1hcmdpbigpOyB9CisK
KyAgICB2b2lkIHNldFRvcChQb3NpdGlvbkluQ29udGV4dFJvb3QgdG9wKSB7IG1fYWJzb2x1dGVE
aXNwbGF5Qm94LnNldFRvcCh0b3ApOyB9CisgICAgdm9pZCBzZXRMZWZ0KFBvc2l0aW9uSW5Db250
ZXh0Um9vdCk7CisgICAgdm9pZCBzZXRUb3BMZWZ0KFBvaW50SW5Db250ZXh0Um9vdCk7CisKKyAg
ICB2b2lkIHJlc2V0SG9yaXpvbnRhbGx5KCk7CisgICAgdm9pZCByZXNldFZlcnRpY2FsbHkoKTsK
KworICAgIGJvb2wgaXNMZWZ0QWxpZ25lZCgpIGNvbnN0OworCitwcml2YXRlOgorICAgIHZvaWQg
aW5pdGlhbGl6ZVBvc2l0aW9uKCk7CisKKyAgICBXZWFrUHRyPEJveD4gbV9sYXlvdXRCb3g7Cisg
ICAgY29uc3QgRmxvYXRpbmdTdGF0ZSYgbV9mbG9hdGluZ1N0YXRlOworCisgICAgRGlzcGxheTo6
Qm94IG1fYWJzb2x1dGVEaXNwbGF5Qm94OworICAgIERpc3BsYXk6OkJveCBtX2NvbnRhaW5pbmdC
bG9ja0Fic29sdXRlRGlzcGxheUJveDsKK307CisKK30KK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwCmluZGV4IDRmZWFlYTI3
YmUxODBjNWMxMGY0ZWQ5MjU4YjBhYmY0MmMzOGE3N2EuLjVlNDYyZDQ5YzJjZTM2ZjM2MDE3YWJh
N2I4MDlmYTRkZjdiNDBkNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9h
dHMvRmxvYXRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRz
L0Zsb2F0aW5nQ29udGV4dC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoTEFZT1VU
X0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAogI2luY2x1ZGUgIkRpc3BsYXlCb3guaCIKKyNpbmNsdWRl
ICJGbG9hdEJveC5oIgogI2luY2x1ZGUgIkxheW91dEJveC5oIgogI2luY2x1ZGUgIkxheW91dENv
bnRhaW5lci5oIgogI2luY2x1ZGUgIkxheW91dENvbnRleHQuaCIKQEAgLTY2LDggKzY3LDkgQEAg
cHVibGljOgogICAgIGNvbnN0IERpc3BsYXk6OkJveCogbGVmdCgpIGNvbnN0OwogICAgIGNvbnN0
IERpc3BsYXk6OkJveCogcmlnaHQoKSBjb25zdDsKICAgICBib29sIGludGVyc2VjdHMoY29uc3Qg
RGlzcGxheTo6Qm94OjpSZWN0JikgY29uc3Q7Ci0gICAgTGF5b3V0VW5pdCB2ZXJ0aWNhbFBvc2l0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0aWNhbFBvc2l0aW9uOyB9Ci0gICAgTGF5b3V0VW5p
dCBib3R0b20oKSBjb25zdDsKKyAgICBQb3NpdGlvbkluQ29udGV4dFJvb3QgdmVydGljYWxQb3Np
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdmVydGljYWxQb3NpdGlvbjsgfQorICAgIHN0ZDo6b3B0
aW9uYWw8UG9zaXRpb25JbkNvbnRleHRSb290PiBob3JpenRvbmFsUG9zaXRpb24oRmxvYXQpIGNv
bnN0OworICAgIFBvc2l0aW9uSW5Db250ZXh0Um9vdCBib3R0b20oKSBjb25zdDsKICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgRmxvYXRpbmdQYWlyJikgY29uc3Q7CiAKIHByaXZhdGU6CkBAIC03
OCwxMiArODAsMTIgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1f
bGVmdEluZGV4OwogICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1fcmlnaHRJbmRleDsKLSAg
ICBMYXlvdXRVbml0IG1fdmVydGljYWxQb3NpdGlvbjsKKyAgICBQb3NpdGlvbkluQ29udGV4dFJv
b3QgbV92ZXJ0aWNhbFBvc2l0aW9uOwogfTsKIAogY2xhc3MgSXRlcmF0b3IgewogcHVibGljOgot
ICAgIEl0ZXJhdG9yKGNvbnN0IEZsb2F0aW5nU3RhdGU6OkZsb2F0TGlzdCYsIHN0ZDo6b3B0aW9u
YWw8TGF5b3V0VW5pdD4gdmVydGljYWxQb3NpdGlvbik7CisgICAgSXRlcmF0b3IoY29uc3QgRmxv
YXRpbmdTdGF0ZTo6RmxvYXRMaXN0Jiwgc3RkOjpvcHRpb25hbDxQb3NpdGlvbkluQ29udGV4dFJv
b3Q+IHZlcnRpY2FsUG9zaXRpb24pOwogCiAgICAgY29uc3QgRmxvYXRpbmdQYWlyJiBvcGVyYXRv
ciooKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnQ7IH0KICAgICBJdGVyYXRvciYgb3BlcmF0b3Ir
KygpOwpAQCAtOTEsMTMgKzkzLDEzIEBAIHB1YmxpYzoKICAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgSXRlcmF0b3ImKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHNldChMYXlvdXRVbml0
IHZlcnRpY2FsUG9zaXRpb24pOworICAgIHZvaWQgc2V0KFBvc2l0aW9uSW5Db250ZXh0Um9vdCB2
ZXJ0aWNhbFBvc2l0aW9uKTsKIAogICAgIGNvbnN0IEZsb2F0aW5nU3RhdGU6OkZsb2F0TGlzdCYg
bV9mbG9hdHM7CiAgICAgRmxvYXRpbmdQYWlyIG1fY3VycmVudDsKIH07CiAKLXN0YXRpYyBJdGVy
YXRvciBiZWdpbihjb25zdCBGbG9hdGluZ1N0YXRlJiBmbG9hdGluZ1N0YXRlLCBMYXlvdXRVbml0
IGluaXRpYWxWZXJ0aWNhbFBvc2l0aW9uKQorc3RhdGljIEl0ZXJhdG9yIGJlZ2luKGNvbnN0IEZs
b2F0aW5nU3RhdGUmIGZsb2F0aW5nU3RhdGUsIFBvc2l0aW9uSW5Db250ZXh0Um9vdCBpbml0aWFs
VmVydGljYWxQb3NpdGlvbikKIHsKICAgICAvLyBTdGFydCB3aXRoIHRoZSBpbm5lci1tb3N0IGZs
b2F0aW5nIHBhaXIgZm9yIHRoZSBpbml0aWFsIHZlcnRpY2FsIHBvc2l0aW9uLgogICAgIHJldHVy
biBJdGVyYXRvcihmbG9hdGluZ1N0YXRlLmZsb2F0cygpLCBpbml0aWFsVmVydGljYWxQb3NpdGlv
bik7CkBAIC0xMTMsMjUgKzExNSwzNCBAQCBGbG9hdGluZ0NvbnRleHQ6OkZsb2F0aW5nQ29udGV4
dChGbG9hdGluZ1N0YXRlJiBmbG9hdGluZ1N0YXRlKQogewogfQogCi1Qb3NpdGlvbiBGbG9hdGlu
Z0NvbnRleHQ6OnBvc2l0aW9uRm9yRmxvYXQoY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CitQ
b2ludEluQ29udGFpbmluZ0Jsb2NrIEZsb2F0aW5nQ29udGV4dDo6cG9zaXRpb25Gb3JGbG9hdChj
b25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzRmxv
YXRpbmdQb3NpdGlvbmVkKCkpOwotICAgIEZsb2F0aW5nU3RhdGU6OkZsb2F0SXRlbSBmbG9hdEl0
ZW0gPSB7IGxheW91dEJveCwgbV9mbG9hdGluZ1N0YXRlIH07CiAKLSAgICBQb3NpdGlvbiBmbG9h
dFBvc2l0aW9uOwogICAgIGlmIChtX2Zsb2F0aW5nU3RhdGUuaXNFbXB0eSgpKSB7CisgICAgICAg
IGF1dG8mIGRpc3BsYXlCb3ggPSAqbGF5b3V0Q29udGV4dCgpLmRpc3BsYXlCb3hGb3JMYXlvdXRC
b3gobGF5b3V0Qm94KTsKKworICAgICAgICBhdXRvIGFsaWduV2l0aENvbnRhaW5pbmdCbG9jayA9
IFsmXSgpIC0+IFBvc2l0aW9uSW5Db250YWluaW5nQmxvY2sgeworICAgICAgICAgICAgLy8gSWYg
dGhlcmUgaXMgbm8gZmxvYXRpbmcgdG8gYWxpZ24gd2l0aCwgcHVzaCB0aGUgYm94IHRvIHRoZSBs
ZWZ0L3JpZ2h0IGVkZ2Ugb2YgaXRzIGNvbnRhaW5pbmcgYmxvY2sncyBjb250ZW50IGJveC4KKyAg
ICAgICAgICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3ggPSAqbGF5b3V0Q29udGV4
dCgpLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmxheW91dEJveC5jb250YWluaW5nQmxvY2soKSk7
CisKKyAgICAgICAgICAgIGlmIChsYXlvdXRCb3guaXNMZWZ0RmxvYXRpbmdQb3NpdGlvbmVkKCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3guY29udGVu
dEJveExlZnQoKSArIGRpc3BsYXlCb3gubWFyZ2luTGVmdCgpOworCisgICAgICAgICAgICByZXR1
cm4gY29udGFpbmluZ0Jsb2NrRGlzcGxheUJveC5jb250ZW50Qm94UmlnaHQoKSAtIGRpc3BsYXlC
b3gubWFyZ2luUmlnaHQoKSAtIGRpc3BsYXlCb3gud2lkdGgoKTsKKyAgICAgICAgfTsKKwogICAg
ICAgICAvLyBObyBmbG9hdCBib3ggb24gdGhlIGNvbnRleHQgeWV0IC0+IGFsaWduIGl0IHdpdGgg
dGhlIGNvbnRhaW5pbmcgYmxvY2sncyBsZWZ0L3JpZ2h0IGVkZ2UuCi0gICAgICAgIGF1dG8mIGRp
c3BsYXlCb3ggPSBmbG9hdEl0ZW0uZGlzcGxheUJveCgpOwotICAgICAgICBmbG9hdFBvc2l0aW9u
ID0geyBhbGlnbldpdGhDb250YWluaW5nQmxvY2soZmxvYXRJdGVtKSArIGRpc3BsYXlCb3gubWFy
Z2luTGVmdCgpLCBkaXNwbGF5Qm94LnRvcCgpIH07Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8g
RmluZCB0aGUgdG9wIG1vc3QgcG9zaXRpb24gd2hlcmUgdGhlIGZsb2F0IGJveCBmaXRzLgotICAg
ICAgICBmbG9hdFBvc2l0aW9uID0gZmxvYXRpbmdQb3NpdGlvbihmbG9hdEl0ZW0pOworICAgICAg
ICByZXR1cm4geyBhbGlnbldpdGhDb250YWluaW5nQmxvY2soKSwgZGlzcGxheUJveC50b3AoKSB9
OwogICAgIH0KIAotICAgIHJldHVybiB0b0NvbnRhaW5pbmdCbG9jayhmbG9hdEl0ZW0sIGZsb2F0
UG9zaXRpb24pOworICAgIC8vIEZpbmQgdGhlIHRvcCBtb3N0IHBvc2l0aW9uIHdoZXJlIHRoZSBm
bG9hdCBib3ggZml0cy4KKyAgICBGbG9hdEJveCBhbGlnbmVkQm94ID0geyBsYXlvdXRCb3gsIG1f
ZmxvYXRpbmdTdGF0ZSwgbGF5b3V0Q29udGV4dCgpIH07CisgICAgZmxvYXRpbmdQb3NpdGlvbihh
bGlnbmVkQm94KTsKKyAgICByZXR1cm4gYWxpZ25lZEJveC50b3BMZWZ0SW5Db250YWluaW5nQmxv
Y2soKTsKIH0KIAotc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBGbG9hdGluZ0NvbnRleHQ6OnZl
cnRpY2FsUG9zaXRpb25XaXRoQ2xlYXJhbmNlKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAor
c3RkOjpvcHRpb25hbDxQb3NpdGlvbkluQ29udGFpbmluZ0Jsb2NrPiBGbG9hdGluZ0NvbnRleHQ6
OnZlcnRpY2FsUG9zaXRpb25XaXRoQ2xlYXJhbmNlKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25z
dAogewogICAgIEFTU0VSVChsYXlvdXRCb3guaGFzRmxvYXRDbGVhcigpKTsKICAgICBBU1NFUlQo
bGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKQEAgLTEzOSw3ICsxNTAsNyBAQCBzdGQ6Om9w
dGlvbmFsPExheW91dFVuaXQ+IEZsb2F0aW5nQ29udGV4dDo6dmVydGljYWxQb3NpdGlvbldpdGhD
bGVhcmFuY2UoY29uc3QgQgogICAgIGlmIChtX2Zsb2F0aW5nU3RhdGUuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4geyB9OwogCi0gICAgYXV0byBib3R0b20gPSBbJl0oc3RkOjpvcHRpb25hbDxM
YXlvdXRVbml0PiBmbG9hdEJvdHRvbSkgLT4gc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiB7Cisg
ICAgYXV0byBib3R0b20gPSBbJl0oc3RkOjpvcHRpb25hbDxQb3NpdGlvbkluQ29udGV4dFJvb3Q+
IGZsb2F0Qm90dG9tKSAtPiBzdGQ6Om9wdGlvbmFsPFBvc2l0aW9uSW5Db250YWluaW5nQmxvY2s+
IHsKICAgICAgICAgLy8gJ2JvdHRvbScgaXMgaW4gdGhlIGZvcm1hdHRpbmcgcm9vdCdzIGNvb3Jk
aW5hdGUgc3lzdGVtLgogICAgICAgICBpZiAoIWZsb2F0Qm90dG9tKQogICAgICAgICAgICAgcmV0
dXJuIHsgfTsKQEAgLTIwMiwxMDQgKzIxMyw0MCBAQCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+
IEZsb2F0aW5nQ29udGV4dDo6dmVydGljYWxQb3NpdGlvbldpdGhDbGVhcmFuY2UoY29uc3QgQgog
ICAgIHJldHVybiB7IH07CiB9CiAKLVBvc2l0aW9uIEZsb2F0aW5nQ29udGV4dDo6ZmxvYXRpbmdQ
b3NpdGlvbihjb25zdCBGbG9hdGluZ1N0YXRlOjpGbG9hdEl0ZW0mIGZsb2F0SXRlbSkgY29uc3QK
K3ZvaWQgRmxvYXRpbmdDb250ZXh0OjpmbG9hdGluZ1Bvc2l0aW9uKEZsb2F0Qm94JiBmbG9hdEJv
eCkgY29uc3QKIHsKLSAgICBhdXRvIGluaXRpYWxWZXJ0aWNhbFBvc2l0aW9uID0gdGhpcy0+aW5p
dGlhbFZlcnRpY2FsUG9zaXRpb24oZmxvYXRJdGVtKTsKLSAgICBhdXRvJiBkaXNwbGF5Qm94ID0g
ZmxvYXRJdGVtLmRpc3BsYXlCb3goKTsKLSAgICBhdXRvIG1hcmdpbkJveFNpemUgPSBkaXNwbGF5
Qm94Lm1hcmdpbkJveCgpLnNpemUoKTsKLQorICAgIHN0ZDo6b3B0aW9uYWw8UG9zaXRpb25JbkNv
bnRleHRSb290PiBib3R0b21Nb3N0OworICAgIGF1dG8gaW5pdGlhbExlZnQgPSBmbG9hdEJveC5s
ZWZ0KCk7CiAgICAgYXV0byBlbmQgPSBMYXlvdXQ6OmVuZChtX2Zsb2F0aW5nU3RhdGUpOwotICAg
IGF1dG8gdG9wID0gaW5pdGlhbFZlcnRpY2FsUG9zaXRpb247Ci0gICAgYXV0byBib3R0b21Nb3N0
ID0gdG9wOwotICAgIGZvciAoYXV0byBpdGVyYXRvciA9IGJlZ2luKG1fZmxvYXRpbmdTdGF0ZSwg
aW5pdGlhbFZlcnRpY2FsUG9zaXRpb24pOyBpdGVyYXRvciAhPSBlbmQ7ICsraXRlcmF0b3IpIHsK
KyAgICBmb3IgKGF1dG8gaXRlcmF0b3IgPSBiZWdpbihtX2Zsb2F0aW5nU3RhdGUsIGZsb2F0Qm94
LnJlY3RXaXRoTWFyZ2luKCkudG9wKCkpOyBpdGVyYXRvciAhPSBlbmQ7ICsraXRlcmF0b3IpIHsK
ICAgICAgICAgQVNTRVJUKCEoKml0ZXJhdG9yKS5pc0VtcHR5KCkpOwotCiAgICAgICAgIGF1dG8g
ZmxvYXRzID0gKml0ZXJhdG9yOwotICAgICAgICB0b3AgPSBmbG9hdHMudmVydGljYWxQb3NpdGlv
bigpOwogCi0gICAgICAgIC8vIE1vdmUgdGhlIGJveCBob3Jpem9udGFsbHkgc28gdGhhdCBpdCBh
bGlnbnMgd2l0aCB0aGUgY3VycmVudCBmbG9hdGluZyBwYWlyLgotICAgICAgICBhdXRvIGxlZnQg
PSBhbGlnbldpdGhGbG9hdGluZ3MoZmxvYXRzLCBmbG9hdEl0ZW0pOwotICAgICAgICAvLyBDaGVj
ayBpZiB0aGUgYm94IGZpdHMgYXQgdGhpcyB2ZXJ0aWNhbCBwb3NpdGlvbi4KLSAgICAgICAgaWYg
KCFmbG9hdHMuaW50ZXJzZWN0cyh7IHRvcCwgbGVmdCwgbWFyZ2luQm94U2l6ZS53aWR0aCgpLCBt
YXJnaW5Cb3hTaXplLmhlaWdodCgpIH0pKQotICAgICAgICAgICAgcmV0dXJuIHsgbGVmdCArIGRp
c3BsYXlCb3gubWFyZ2luTGVmdCgpLCB0b3AgKyBkaXNwbGF5Qm94Lm1hcmdpblRvcCgpIH07Cisg
ICAgICAgIGZsb2F0Qm94LnNldFRvcChmbG9hdHMudmVydGljYWxQb3NpdGlvbigpICsgZmxvYXRC
b3gubWFyZ2luVG9wKCkpOworICAgICAgICAvLyBNb3ZlIHRoZSBib3ggaG9yaXpvbnRhbGx5IHNv
IHRoYXQgaXQgZWl0aGVyCisgICAgICAgIC8vIDEuIGFsaWducyB3aXRoIHRoZSBjdXJyZW50IGZs
b2F0aW5nIHBhaXIKKyAgICAgICAgLy8gMi4gb3Igd2l0aCB0aGUgY29udGFpbmluZyBibG9jaydz
IGNvbnRlbnQgYm94IGlmIHRoZXJlJ3Mgbm8gZmxvYXQgdG8gYWxpZ24gd2l0aCBhdCB0aGlzIHZl
cnRpY2FsIHBvc2l0aW9uLgorICAgICAgICBpZiAoYXV0byBob3JpenRvbmFsUG9zaXRpb24gPSBm
bG9hdHMuaG9yaXp0b25hbFBvc2l0aW9uKGZsb2F0Qm94LmlzTGVmdEFsaWduZWQoKSA/IEZsb2F0
OjpMZWZ0IDogRmxvYXQ6OlJpZ2h0KSkgeworICAgICAgICAgICAgaWYgKCFmbG9hdEJveC5pc0xl
ZnRBbGlnbmVkKCkpCisgICAgICAgICAgICAgICAgaG9yaXp0b25hbFBvc2l0aW9uID0gKmhvcml6
dG9uYWxQb3NpdGlvbiAtIGZsb2F0Qm94LnJlY3RXaXRoTWFyZ2luKCkud2lkdGgoKTsKKyAgICAg
ICAgICAgIGZsb2F0Qm94LnNldExlZnQoKmhvcml6dG9uYWxQb3NpdGlvbiArIGZsb2F0Qm94Lm1h
cmdpbkxlZnQoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgZmxvYXRCb3gucmVzZXRI
b3Jpem9udGFsbHkoKTsKKworICAgICAgICAvLyBDaGVjayBpZiB0aGUgYm94IGZpdHMgYXQgdGhp
cyBwb3NpdGlvbi4KKyAgICAgICAgaWYgKCFmbG9hdHMuaW50ZXJzZWN0cyhmbG9hdEJveC5yZWN0
V2l0aE1hcmdpbigpKSkKKyAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBib3R0b21Nb3N0
ID0gZmxvYXRzLmJvdHRvbSgpOwogICAgICAgICAvLyBNb3ZlIHRvIHRoZSBuZXh0IGZsb2F0aW5n
IHBhaXIuCiAgICAgfQogCi0gICAgLy8gUGFzc2VkIGFsbCB0aGUgZmxvYXRzIGFuZCBzdGlsbCBk
b2VzIG5vdCBmaXQ/Ci0gICAgcmV0dXJuIHsgYWxpZ25XaXRoQ29udGFpbmluZ0Jsb2NrKGZsb2F0
SXRlbSkgKyBkaXNwbGF5Qm94Lm1hcmdpbkxlZnQoKSwgYm90dG9tTW9zdCArIGRpc3BsYXlCb3gu
bWFyZ2luVG9wKCkgfTsKLX0KLQotTGF5b3V0VW5pdCBGbG9hdGluZ0NvbnRleHQ6OmluaXRpYWxW
ZXJ0aWNhbFBvc2l0aW9uKGNvbnN0IEZsb2F0aW5nU3RhdGU6OkZsb2F0SXRlbSYgZmxvYXRJdGVt
KSBjb25zdAotewotICAgIC8vIEluY29taW5nIGZsb2F0aW5nIGNhbm5vdCBiZSBwbGFjZWQgaGln
aGVyIHRoYW4gZXhpc3RpbmcgZmxvYXRzLgotICAgIC8vIFRha2UgdGhlIHN0YXRpYyBwb3NpdGlv
biAod2hlcmUgdGhlIGJveCB3b3VsZCBnbyBpZiBpdCB3YXNuJ3QgZmxvYXRpbmcpIGFuZCBhZGp1
c3QgaXQgd2l0aCB0aGUgbGFzdCBmbG9hdGluZy4KLSAgICBhdXRvIG1hcmdpbkJveFRvcCA9IGZs
b2F0SXRlbS5kaXNwbGF5Qm94KCkucmVjdFdpdGhNYXJnaW4oKS50b3AoKTsKLQotICAgIGlmIChh
dXRvIGxhc3RGbG9hdCA9IG1fZmxvYXRpbmdTdGF0ZS5sYXN0KCkpCi0gICAgICAgIHJldHVybiBz
dGQ6Om1heChtYXJnaW5Cb3hUb3AsIGxhc3RGbG9hdC0+ZGlzcGxheUJveCgpLnJlY3RXaXRoTWFy
Z2luKCkudG9wKCkpOwotCi0gICAgcmV0dXJuIG1hcmdpbkJveFRvcDsKLX0KLQotTGF5b3V0VW5p
dCBGbG9hdGluZ0NvbnRleHQ6OmFsaWduV2l0aENvbnRhaW5pbmdCbG9jayhjb25zdCBGbG9hdGlu
Z1N0YXRlOjpGbG9hdEl0ZW0mIGZsb2F0SXRlbSkgY29uc3QKLXsKLSAgICAvLyBJZiB0aGVyZSBp
cyBubyBmbG9hdGluZyB0byBhbGlnbiB3aXRoLCBwdXNoIHRoZSBib3ggdG8gdGhlIGxlZnQvcmln
aHQgZWRnZSBvZiBpdHMgY29udGFpbmluZyBibG9jaydzIGNvbnRlbnQgYm94LgotICAgIC8vIChF
aXRoZXIgdGhlcmUncyBubyBmbG9hdHMgYXQgYWxsIG9yIHRoaXMgYm94IGRvZXMgbm90IGZpdCBh
dCBhbnkgdmVydGljYWwgcG9zaXRpb25zIHdoZXJlIHRoZSBmbG9hdHMgYXJlLikKLSAgICBhdXRv
JiBjb250YWluaW5nQmxvY2tEaXNwbGF5Qm94ID0gZmxvYXRJdGVtLmNvbnRhaW5pbmdCbG9ja0Rp
c3BsYXlCb3goKTsKLSAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja0NvbnRlbnRCb3hMZWZ0ID0gY29u
dGFpbmluZ0Jsb2NrRGlzcGxheUJveC5sZWZ0KCkgKyBjb250YWluaW5nQmxvY2tEaXNwbGF5Qm94
LmNvbnRlbnRCb3hMZWZ0KCk7Ci0KLSAgICBpZiAoZmxvYXRJdGVtLmxheW91dEJveCgpLmlzTGVm
dEZsb2F0aW5nUG9zaXRpb25lZCgpKQotICAgICAgICByZXR1cm4gY29udGFpbmluZ0Jsb2NrQ29u
dGVudEJveExlZnQ7Ci0KLSAgICByZXR1cm4gY29udGFpbmluZ0Jsb2NrQ29udGVudEJveExlZnQg
KyBjb250YWluaW5nQmxvY2tEaXNwbGF5Qm94LmNvbnRlbnRCb3hXaWR0aCgpIC0gZmxvYXRJdGVt
LmRpc3BsYXlCb3goKS5tYXJnaW5Cb3goKS53aWR0aCgpOwotfQotCi1MYXlvdXRVbml0IEZsb2F0
aW5nQ29udGV4dDo6YWxpZ25XaXRoRmxvYXRpbmdzKGNvbnN0IEZsb2F0aW5nUGFpciYgZmxvYXRp
bmdQYWlyLCBjb25zdCBGbG9hdGluZ1N0YXRlOjpGbG9hdEl0ZW0mIGZsb2F0SXRlbSkgY29uc3QK
LXsKLSAgICAvLyBDb21wdXRlIHRoZSBob3Jpem9udGFsIHBvc2l0aW9uIGZvciB0aGUgbmV3IGZs
b2F0aW5nIGJ5IHRha2luZyBib3RoIHRoZSBjb250aW5pbmcgYmxvY2sgYW5kIHRoZSBjdXJyZW50
IGxlZnQvcmlnaHQgZmxvYXRzIGludG8gYWNjb3VudC4KLSAgICBhdXRvJiBjb250YWluaW5nQmxv
Y2tEaXNwbGF5Qm94ID0gZmxvYXRJdGVtLmNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3goKTsKLSAg
ICBhdXRvIGNvbnRhaW5pbmdCbG9ja0NvbnRlbnRCb3hMZWZ0ID0gY29udGFpbmluZ0Jsb2NrRGlz
cGxheUJveC5sZWZ0KCkgKyBjb250YWluaW5nQmxvY2tEaXNwbGF5Qm94LmNvbnRlbnRCb3hMZWZ0
KCk7Ci0gICAgYXV0byBjb250YWluaW5nQmxvY2tDb250ZW50Qm94UmlnaHQgPSBjb250YWluaW5n
QmxvY2tEaXNwbGF5Qm94LmxlZnQoKSArIGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3guY29udGVu
dEJveFJpZ2h0KCk7Ci0gICAgYXV0byBtYXJnaW5Cb3hXaWR0aCA9IGZsb2F0SXRlbS5kaXNwbGF5
Qm94KCkubWFyZ2luQm94KCkud2lkdGgoKTsKLQotICAgIGF1dG8gbGVmdEFsaWduZWRCb3hMZWZ0
ID0gY29udGFpbmluZ0Jsb2NrQ29udGVudEJveExlZnQ7Ci0gICAgYXV0byByaWdodEFsaWduZWRC
b3hMZWZ0ID0gY29udGFpbmluZ0Jsb2NrQ29udGVudEJveFJpZ2h0IC0gbWFyZ2luQm94V2lkdGg7
Ci0KLSAgICBpZiAoZmxvYXRpbmdQYWlyLmlzRW1wdHkoKSkgewotICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIGZsb2F0SXRlbS5sYXlvdXRCb3goKS5pc0xlZnRG
bG9hdGluZ1Bvc2l0aW9uZWQoKSA/IGxlZnRBbGlnbmVkQm94TGVmdCA6IHJpZ2h0QWxpZ25lZEJv
eExlZnQ7Ci0gICAgfQotCi0gICAgaWYgKGZsb2F0SXRlbS5sYXlvdXRCb3goKS5pc0xlZnRGbG9h
dGluZ1Bvc2l0aW9uZWQoKSkgewotICAgICAgICBpZiAoYXV0byogbGVmdERpc3BsYXlCb3ggPSBm
bG9hdGluZ1BhaXIubGVmdCgpKSB7Ci0gICAgICAgICAgICBhdXRvIGxlZnRGbG9hdGluZ0JveFJp
Z2h0ID0gbGVmdERpc3BsYXlCb3gtPnJlY3RXaXRoTWFyZ2luKCkucmlnaHQoKTsKLSAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om1pbihzdGQ6Om1heChsZWZ0QWxpZ25lZEJveExlZnQsIGxlZnRGbG9h
dGluZ0JveFJpZ2h0KSwgcmlnaHRBbGlnbmVkQm94TGVmdCk7Ci0gICAgICAgIH0KLSAgICAgICAg
Ci0gICAgICAgIHJldHVybiBsZWZ0QWxpZ25lZEJveExlZnQ7Ci0gICAgfQotCi0gICAgQVNTRVJU
KGZsb2F0SXRlbS5sYXlvdXRCb3goKS5pc1JpZ2h0RmxvYXRpbmdQb3NpdGlvbmVkKCkpOwotCi0g
ICAgaWYgKGF1dG8qIHJpZ2h0RGlzcGxheUJveCA9IGZsb2F0aW5nUGFpci5yaWdodCgpKSB7Ci0g
ICAgICAgIGF1dG8gcmlnaHRGbG9hdGluZ0JveExlZnQgPSByaWdodERpc3BsYXlCb3gtPnJlY3RX
aXRoTWFyZ2luKCkubGVmdCgpOwotICAgICAgICByZXR1cm4gc3RkOjptYXgoc3RkOjptaW4ocmln
aHRBbGlnbmVkQm94TGVmdCwgcmlnaHRGbG9hdGluZ0JveExlZnQgLSBtYXJnaW5Cb3hXaWR0aCks
IGxlZnRBbGlnbmVkQm94TGVmdCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJpZ2h0QWxpZ25lZEJv
eExlZnQ7Ci19Ci0KLS8vIEZJWE1FOiBmaW5kIGEgYmV0dGVyIHBsYWNlIGZvciB0aGlzLgotUG9z
aXRpb24gRmxvYXRpbmdDb250ZXh0Ojp0b0NvbnRhaW5pbmdCbG9jayhjb25zdCBGbG9hdGluZ1N0
YXRlOjpGbG9hdEl0ZW0mIGZsb2F0SXRlbSwgUG9zaXRpb24gcG9zaXRpb24pIGNvbnN0Ci17Ci0g
ICAgLy8gRnJvbSBmb3JtYXR0aW5nIHJvb3QgY29vcmRpbmF0ZSBzeXN0ZW0gYmFjayB0byBjb250
YWluaW5nIGJsb2NrJ3MuCi0gICAgaWYgKCZmbG9hdEl0ZW0uY29udGFpbmluZ0Jsb2NrKCkgPT0g
Jm1fZmxvYXRpbmdTdGF0ZS5yb290KCkpCi0gICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAv
LyBUaGUgY2FuZGlkYXRlIGJveCBpcyBhbHJlYWR5IGJlbG93IG9mIGFsbCB0aGUgZmxvYXRzLgor
ICAgIGlmICghYm90dG9tTW9zdCkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byYgY29udGFp
bmluZ0Jsb2NrRGlzcGxheUJveCA9IGZsb2F0SXRlbS5jb250YWluaW5nQmxvY2tEaXNwbGF5Qm94
KCk7Ci0gICAgcmV0dXJuIHsgcG9zaXRpb24ueCAtIGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3gu
bGVmdCgpLCBwb3NpdGlvbi55IC0gY29udGFpbmluZ0Jsb2NrRGlzcGxheUJveC50b3AoKSB9Owor
ICAgIC8vIFBhc3NlZCBhbGwgdGhlIGZsb2F0cyBhbmQgc3RpbGwgZG9lcyBub3QgZml0PyBQdXNo
IGl0IGJlbG93IHRoZSBsYXN0IGZsb2F0LgorICAgIGZsb2F0Qm94LnNldFRvcExlZnQoeyBpbml0
aWFsTGVmdCwgKmJvdHRvbU1vc3QgKyBmbG9hdEJveC5tYXJnaW5Ub3AoKSB9KTsKIH0KIAogRmxv
YXRpbmdQYWlyOjpGbG9hdGluZ1BhaXIoY29uc3QgRmxvYXRpbmdTdGF0ZTo6RmxvYXRMaXN0JiBm
bG9hdHMpCkBAIC0zNTksMTQgKzMwNiwyNSBAQCBib29sIEZsb2F0aW5nUGFpcjo6b3BlcmF0b3Ig
PT0oY29uc3QgRmxvYXRpbmdQYWlyJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gbV9sZWZ0SW5k
ZXggPT0gb3RoZXIubV9sZWZ0SW5kZXggJiYgbV9yaWdodEluZGV4ID09IG90aGVyLm1fcmlnaHRJ
bmRleDsKIH0KIAotTGF5b3V0VW5pdCBGbG9hdGluZ1BhaXI6OmJvdHRvbSgpIGNvbnN0CitzdGQ6
Om9wdGlvbmFsPFBvc2l0aW9uSW5Db250ZXh0Um9vdD4gRmxvYXRpbmdQYWlyOjpob3JpenRvbmFs
UG9zaXRpb24oRmxvYXQgZmxvYXRUeXBlKSBjb25zdAoreworICAgIGlmIChmbG9hdFR5cGUgPT0g
RmxvYXQ6OkxlZnQgJiYgbGVmdCgpKQorICAgICAgICByZXR1cm4gbGVmdCgpLT5yZWN0V2l0aE1h
cmdpbigpLnJpZ2h0KCk7CisKKyAgICBpZiAoZmxvYXRUeXBlID09IEZsb2F0OjpSaWdodCAmJiBy
aWdodCgpKQorICAgICAgICByZXR1cm4gcmlnaHQoKS0+cmVjdFdpdGhNYXJnaW4oKS5sZWZ0KCk7
CisKKyAgICByZXR1cm4geyB9OworfQorCitQb3NpdGlvbkluQ29udGV4dFJvb3QgRmxvYXRpbmdQ
YWlyOjpib3R0b20oKSBjb25zdAogewogICAgIGF1dG8qIGxlZnQgPSB0aGlzLT5sZWZ0KCk7CiAg
ICAgYXV0byogcmlnaHQgPSB0aGlzLT5yaWdodCgpOwogICAgIEFTU0VSVChsZWZ0IHx8IHJpZ2h0
KTsKIAotICAgIGF1dG8gbGVmdEJvdHRvbSA9IGxlZnQgPyBzdGQ6Om9wdGlvbmFsPExheW91dFVu
aXQ+KGxlZnQtPnJlY3RXaXRoTWFyZ2luKCkuYm90dG9tKCkpIDogc3RkOjpudWxsb3B0OwotICAg
IGF1dG8gcmlnaHRCb3R0b20gPSByaWdodCA/IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4ocmln
aHQtPnJlY3RXaXRoTWFyZ2luKCkuYm90dG9tKCkpIDogc3RkOjpudWxsb3B0OworICAgIGF1dG8g
bGVmdEJvdHRvbSA9IGxlZnQgPyBzdGQ6Om9wdGlvbmFsPFBvc2l0aW9uSW5Db250ZXh0Um9vdD4o
bGVmdC0+cmVjdFdpdGhNYXJnaW4oKS5ib3R0b20oKSkgOiBzdGQ6Om51bGxvcHQ7CisgICAgYXV0
byByaWdodEJvdHRvbSA9IHJpZ2h0ID8gc3RkOjpvcHRpb25hbDxQb3NpdGlvbkluQ29udGV4dFJv
b3Q+KHJpZ2h0LT5yZWN0V2l0aE1hcmdpbigpLmJvdHRvbSgpKSA6IHN0ZDo6bnVsbG9wdDsKIAog
ICAgIGlmIChsZWZ0Qm90dG9tICYmIHJpZ2h0Qm90dG9tKQogICAgICAgICByZXR1cm4gc3RkOjpt
YXgoKmxlZnRCb3R0b20sICpyaWdodEJvdHRvbSk7CkBAIC0zNzcsNyArMzM1LDcgQEAgTGF5b3V0
VW5pdCBGbG9hdGluZ1BhaXI6OmJvdHRvbSgpIGNvbnN0CiAgICAgcmV0dXJuICpyaWdodEJvdHRv
bTsKIH0KIAotSXRlcmF0b3I6Okl0ZXJhdG9yKGNvbnN0IEZsb2F0aW5nU3RhdGU6OkZsb2F0TGlz
dCYgZmxvYXRzLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHZlcnRpY2FsUG9zaXRpb24pCitJ
dGVyYXRvcjo6SXRlcmF0b3IoY29uc3QgRmxvYXRpbmdTdGF0ZTo6RmxvYXRMaXN0JiBmbG9hdHMs
IHN0ZDo6b3B0aW9uYWw8UG9zaXRpb25JbkNvbnRleHRSb290PiB2ZXJ0aWNhbFBvc2l0aW9uKQog
ICAgIDogbV9mbG9hdHMoZmxvYXRzKQogICAgICwgbV9jdXJyZW50KGZsb2F0cykKIHsKQEAgLTQz
NSw4ICszOTMsOCBAQCBJdGVyYXRvciYgSXRlcmF0b3I6Om9wZXJhdG9yKysoKQogICAgIC8vIEVu
c3VyZSB0aGF0IHRoZSBuZXcgZmxvYXRpbmcncyBib3R0b20gZWRnZSBpcyBwb3NpdGlvbmVkIGxv
d2VyIHRoYW4gdGhlIGN1cnJlbnQgb25lIC13aGljaCBlc3NlbnRpYWxseSBtZWFucyBza2lwcGlu
ZyBpbi1iZXR3ZWVuIGZsb2F0cyB0aGF0IGFyZSBwb3NpdGlvbmVkIGhpZ2hlcikuCiAgICAgLy8g
My4gUmVzZXQgdGhlIHZlcnRpY2FsIHBvc2l0aW9uIGFuZCBhbGlnbiBpdCB3aXRoIHRoZSBuZXcg
bGVmdC1yaWdodCBwYWlyLiBUaGVzZSBmbG9hdHMgYXJlIG5vdyB0aGUgaW5uZXItbW9zdCBib3hl
cyBmb3IgdGhlIGN1cnJlbnQgdmVydGljYWwgcG9zaXRpb24uCiAgICAgLy8gQXMgdGhlIHJlc3Vs
dCB3ZSBoYXZlIG1vcmUgaG9yaXpvbnRhbCBzcGFjZSBvbiB0aGUgY3VycmVudCB2ZXJ0aWNhbCBw
b3NpdGlvbi4KLSAgICBhdXRvIGxlZnRCb3R0b20gPSBtX2N1cnJlbnQubGVmdCgpID8gc3RkOjpv
cHRpb25hbDxMYXlvdXRVbml0PihtX2N1cnJlbnQubGVmdCgpLT5ib3R0b20oKSkgOiBzdGQ6Om51
bGxvcHQ7Ci0gICAgYXV0byByaWdodEJvdHRvbSA9IG1fY3VycmVudC5yaWdodCgpID8gc3RkOjpv
cHRpb25hbDxMYXlvdXRVbml0PihtX2N1cnJlbnQucmlnaHQoKS0+Ym90dG9tKCkpIDogc3RkOjpu
dWxsb3B0OworICAgIGF1dG8gbGVmdEJvdHRvbSA9IG1fY3VycmVudC5sZWZ0KCkgPyBzdGQ6Om9w
dGlvbmFsPFBvc2l0aW9uSW5Db250ZXh0Um9vdD4obV9jdXJyZW50LmxlZnQoKS0+Ym90dG9tKCkp
IDogc3RkOjpudWxsb3B0OworICAgIGF1dG8gcmlnaHRCb3R0b20gPSBtX2N1cnJlbnQucmlnaHQo
KSA/IHN0ZDo6b3B0aW9uYWw8UG9zaXRpb25JbkNvbnRleHRSb290PihtX2N1cnJlbnQucmlnaHQo
KS0+Ym90dG9tKCkpIDogc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byB1cGRhdGVMZWZ0ID0gKGxl
ZnRCb3R0b20gPT0gcmlnaHRCb3R0b20pIHx8ICghcmlnaHRCb3R0b20gfHwgKGxlZnRCb3R0b20g
JiYgbGVmdEJvdHRvbSA8IHJpZ2h0Qm90dG9tKSk7IAogICAgIGF1dG8gdXBkYXRlUmlnaHQgPSAo
bGVmdEJvdHRvbSA9PSByaWdodEJvdHRvbSkgfHwgKCFsZWZ0Qm90dG9tIHx8IChyaWdodEJvdHRv
bSAmJiBsZWZ0Qm90dG9tID4gcmlnaHRCb3R0b20pKTsgCkBAIC00NTYsNyArNDE0LDcgQEAgSXRl
cmF0b3ImIEl0ZXJhdG9yOjpvcGVyYXRvcisrKCkKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKLXZv
aWQgSXRlcmF0b3I6OnNldChMYXlvdXRVbml0IHZlcnRpY2FsUG9zaXRpb24pCit2b2lkIEl0ZXJh
dG9yOjpzZXQoUG9zaXRpb25JbkNvbnRleHRSb290IHZlcnRpY2FsUG9zaXRpb24pCiB7CiAgICAg
Ly8gTW92ZSB0aGUgaXRlcmF0b3IgdG8gdGhlIGluaXRpYWwgdmVydGljYWwgcG9zaXRpb24gYnkg
c3RhcnRpbmcgYXQgdGhlIGlubmVyLW1vc3QgZmxvYXRpbmcgcGFpciAobGFzdCBmbG9hdHMgb24g
bGVmdC9yaWdodCkuCiAgICAgLy8gMS4gQ2hlY2sgaWYgdGhlIGlubmVyLW1vc3QgcGFpciBjb3Zl
cnMgdGhlIHZlcnRpY2FsIHBvc2l0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9h
dHMvRmxvYXRpbmdDb250ZXh0LmgKaW5kZXggZDkwM2E5M2RhMzMyYzYyMmJkNWM3YTNmNDcyM2Yx
MmZhOTU2OTZhOS4uOTk4OGU1YmFlNTQ0ZGE3ZGY5N2Y5NWRlMTlkODAyZmIxZTdjZjQ5MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5oCkBAIC0z
NSw2ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIExheW91dCB7CiAK
K2NsYXNzIEZsb2F0Qm94OwogY2xhc3MgQm94OwogY2xhc3MgQ29udGFpbmVyOwogY2xhc3MgRmxv
YXRpbmdQYWlyOwpAQCAtNDksMTggKzUwLDEzIEBAIHB1YmxpYzoKIAogICAgIEZsb2F0aW5nU3Rh
dGUmIGZsb2F0aW5nU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2Zsb2F0aW5nU3RhdGU7IH0KIAot
ICAgIFBvc2l0aW9uIHBvc2l0aW9uRm9yRmxvYXQoY29uc3QgQm94JikgY29uc3Q7Ci0gICAgc3Rk
OjpvcHRpb25hbDxMYXlvdXRVbml0PiB2ZXJ0aWNhbFBvc2l0aW9uV2l0aENsZWFyYW5jZShjb25z
dCBCb3gmKSBjb25zdDsKKyAgICBQb2ludEluQ29udGFpbmluZ0Jsb2NrIHBvc2l0aW9uRm9yRmxv
YXQoY29uc3QgQm94JikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxQb3NpdGlvbkluQ29udGFp
bmluZ0Jsb2NrPiB2ZXJ0aWNhbFBvc2l0aW9uV2l0aENsZWFyYW5jZShjb25zdCBCb3gmKSBjb25z
dDsKIAogcHJpdmF0ZToKICAgICBMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0KCkgY29uc3Qg
eyByZXR1cm4gbV9mbG9hdGluZ1N0YXRlLmxheW91dENvbnRleHQoKTsgfQogCi0gICAgUG9zaXRp
b24gZmxvYXRpbmdQb3NpdGlvbihjb25zdCBGbG9hdGluZ1N0YXRlOjpGbG9hdEl0ZW0mKSBjb25z
dDsKLQotICAgIExheW91dFVuaXQgaW5pdGlhbFZlcnRpY2FsUG9zaXRpb24oY29uc3QgRmxvYXRp
bmdTdGF0ZTo6RmxvYXRJdGVtJikgY29uc3Q7Ci0gICAgTGF5b3V0VW5pdCBhbGlnbldpdGhDb250
YWluaW5nQmxvY2soY29uc3QgRmxvYXRpbmdTdGF0ZTo6RmxvYXRJdGVtJikgY29uc3Q7Ci0gICAg
TGF5b3V0VW5pdCBhbGlnbldpdGhGbG9hdGluZ3MoY29uc3QgRmxvYXRpbmdQYWlyJiwgY29uc3Qg
RmxvYXRpbmdTdGF0ZTo6RmxvYXRJdGVtJikgY29uc3Q7Ci0gICAgUG9zaXRpb24gdG9Db250YWlu
aW5nQmxvY2soY29uc3QgRmxvYXRpbmdTdGF0ZTo6RmxvYXRJdGVtJiwgUG9zaXRpb24pIGNvbnN0
OworICAgIHZvaWQgZmxvYXRpbmdQb3NpdGlvbihGbG9hdEJveCYpIGNvbnN0OwogCiAgICAgRmxv
YXRpbmdTdGF0ZSYgbV9mbG9hdGluZ1N0YXRlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zsb2F0cy9GbG9hdGluZ1N0YXRlLmgKaW5kZXggOWE3ZTJiNDI0ZjhjNzllNDQyM2FkMzY5MmJk
Y2E2OWMyYjE3MmI3Ny4uNzdkNzEzMGMzMGFiY2Y3ZDM1Mzc4YTFmNWIxNzk1ZDJlYmU3MmRkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ1N0YXRlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ1N0YXRlLmgKQEAgLTUy
LDYgKzUyLDggQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4g
bV9mbG9hdHMuaXNFbXB0eSgpOyB9CiAKKyAgICBjb25zdCBCb3gmIHJvb3QoKSBjb25zdCB7IHJl
dHVybiAqbV9mb3JtYXR0aW5nQ29udGV4dFJvb3Q7IH0KKwogICAgIHN0ZDo6b3B0aW9uYWw8TGF5
b3V0VW5pdD4gbGVmdEJvdHRvbShjb25zdCBCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCkgY29u
c3Q7CiAgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiByaWdodEJvdHRvbShjb25zdCBCb3gm
IGZvcm1hdHRpbmdDb250ZXh0Um9vdCkgY29uc3Q7CiAgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRV
bml0PiBib3R0b20oY29uc3QgQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpIGNvbnN0OwpAQCAt
ODIsNyArODQsNiBAQCBwcml2YXRlOgogICAgIEZsb2F0aW5nU3RhdGUoTGF5b3V0Q29udGV4dCYs
IGNvbnN0IEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290KTsKIAogICAgIExheW91dENvbnRleHQm
IGxheW91dENvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2xheW91dENvbnRleHQ7IH0KLSAgICBj
b25zdCBCb3gmIHJvb3QoKSBjb25zdCB7IHJldHVybiAqbV9mb3JtYXR0aW5nQ29udGV4dFJvb3Q7
IH0KIAogICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gYm90dG9tKGNvbnN0IEJveCYgZm9y
bWF0dGluZ0NvbnRleHRSb290LCBDbGVhcikgY29uc3Q7CiAK
</data>
<flag name="review"
          id="365609"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>