<?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>231743</bug_id>
          
          <creation_ts>2021-10-14 08:44:58 -0700</creation_ts>
          <short_desc>[LFC][IFC] tryBreakingTextRun should not take std::nullopt &quot;available width&quot; to indicate that the run is not overflowing</short_desc>
          <delta_ts>2021-10-14 15:07:19 -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>1804286</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2021-10-14 08:44:58 -0700</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804289</commentid>
    <comment_count>1</comment_count>
      <attachid>441221</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-10-14 08:48:44 -0700</bug_when>
    <thetext>Created attachment 441221
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804321</commentid>
    <comment_count>2</comment_count>
      <attachid>441230</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-10-14 09:55:35 -0700</bug_when>
    <thetext>Created attachment 441230
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804390</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-14 11:52:36 -0700</bug_when>
    <thetext>Committed r284188 (243002@main): &lt;https://commits.webkit.org/243002@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 441230.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804391</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-14 11:53:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/84267170&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441221</attachid>
            <date>2021-10-14 08:48:44 -0700</date>
            <delta_ts>2021-10-14 09:55:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231743-20211014084843.patch</filename>
            <type>text/plain</type>
            <size>25357</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTRmMWM0MzkwY2QyNWNh
ZjhiYjcxMTJiZTE1MmFkZDYxYWQxNjYzOS4uODVhNzg5ZDE5NmVkOWI3Mzc0NGU1NWU0Yjg5YTRh
MDc0YTVkZjBmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIxLTEwLTE0ICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtJRkNdIHRyeUJyZWFr
aW5nVGV4dFJ1biBzaG91bGQgbm90IHRha2Ugc3RkOjpudWxsb3B0ICJhdmFpbGFibGUgd2lkdGgi
IHRvIGluZGljYXRlIHRoYXQgdGhlIHJ1biBpcyBub3Qgb3ZlcmZsb3dpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTc0MworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExldCdzIG5vdCB1c2UgbWFnaWMg
dmFsdWUgdG8gaW5kaWNhdGUgdGhhdCB0aGUgY2FuZGlkYXRlIHJ1biBmb3IgYnJlYWtpbmcgZG9l
cyBub3Qgb3ZlcmZsb3cgdGhlIGxpbmUgKGF2YWlsYWJsZSB3aWR0aCBpcyBudWxsb3B0IC0+IGlu
ZmluaXRlIGF2YWlsYWJsZSB3aWR0aCAtPiBuZXZlciBvdmVyZmxvdykuCisKKyAgICAgICAgKiBs
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QnJlYWtlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUNvbnRlbnRCcmVha2VyOjp0cnlCcmVh
a2luZ1RleHRSdW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVDb250
ZW50QnJlYWtlcjo6dHJ5QnJlYWtpbmdPdmVyZmxvd2luZ1J1biBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OklubGluZUNvbnRlbnRCcmVha2VyOjp0cnlCcmVha2luZ1ByZXZpb3Vz
Tm9uT3ZlcmZsb3dpbmdSdW5zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5s
aW5lQ29udGVudEJyZWFrZXI6OnRyeUJyZWFraW5nTmV4dE92ZXJmbG93aW5nUnVucyBjb25zdCk6
CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVu
dEJyZWFrZXIuaDoKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRp
b25Db3ZlcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6Y2Fu
VXNlRm9yUmVuZGVySW5saW5lQ2hpbGQpOgorCiAyMDIxLTEwLTEzICBBbGFuIEJ1anRhcyAgPHph
bGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIFVzZSB0aGUgbGluZS1nYXAgZm9u
dCBtZXRyaWNzIHRvIGNvbXB1dGUgdGhlIGxheW91dCBib3VuZHMgZm9yIGlubGluZSBib3hlcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lQ29udGVudEJyZWFrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuY3BwCmluZGV4IDE0NmIy
NWY5OTljMjEzODkxN2Q1ODAzNDMyYjI3YjE5ZWI2M2I4NTIuLmQ3ZGViMjMxYWYxZDc1ZGYwMTQ4
NDQxYjY2Njc3N2ExZWE0ZDJmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250
ZW50QnJlYWtlci5jcHAKQEAgLTI5NywxMiArMjk3LDE0OSBAQCBzdGF0aWMgYm9vbCBpc1dyYXBw
YWJsZVJ1bihjb25zdCBJbmxpbmVDb250ZW50QnJlYWtlcjo6Q29udGludW91c0NvbnRlbnQ6OlJ1
biYgcgogICAgIHJldHVybiBUZXh0VXRpbDo6aXNXcmFwcGluZ0FsbG93ZWQocnVuLnN0eWxlKTsK
IH0KIAorc3RydWN0IENhbmRpZGF0ZVRleHRSdW5Gb3JCcmVha2luZyB7CisgICAgc2l6ZV90IGlu
ZGV4IHsgMCB9OworICAgIGJvb2wgaXNPdmVyZmxvd2luZ1J1biB7IHRydWUgfTsKKyAgICBJbmxp
bmVMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0IHsgMCB9OworfTsKK3N0ZDo6b3B0aW9uYWw8SW5saW5l
Q29udGVudEJyZWFrZXI6OlBhcnRpYWxSdW4+IElubGluZUNvbnRlbnRCcmVha2VyOjp0cnlCcmVh
a2luZ1RleHRSdW4oY29uc3QgQ29udGludW91c0NvbnRlbnQ6OlJ1bkxpc3QmIHJ1bnMsIGNvbnN0
IENhbmRpZGF0ZVRleHRSdW5Gb3JCcmVha2luZyYgY2FuZGlkYXRlVGV4dFJ1biwgSW5saW5lTGF5
b3V0VW5pdCBhdmFpbGFibGVXaWR0aCwgYm9vbCBsaW5lSGFzV3JhcE9wcG9ydHVuaXR5QXRQcmV2
aW91c1Bvc2l0aW9uKSBjb25zdAoreworICAgIGF1dG8mIGNhbmRpZGF0ZVJ1biA9IHJ1bnNbY2Fu
ZGlkYXRlVGV4dFJ1bi5pbmRleF07CisgICAgQVNTRVJUKGNhbmRpZGF0ZVJ1bi5pbmxpbmVJdGVt
LmlzVGV4dCgpKTsKKyAgICBhdXRvJiBpbmxpbmVUZXh0SXRlbSA9IGRvd25jYXN0PElubGluZVRl
eHRJdGVtPihjYW5kaWRhdGVSdW4uaW5saW5lSXRlbSk7CisgICAgYXV0byYgc3R5bGUgPSBjYW5k
aWRhdGVSdW4uc3R5bGU7CisgICAgYXV0byBsaW5lSGFzUm9vbUZvckNvbnRlbnQgPSBhdmFpbGFi
bGVXaWR0aCA+IDA7CisKKyAgICBhdXRvIGJyZWFrUnVsZXMgPSB3b3JkQnJlYWtCZWhhdmlvcihz
dHlsZSwgbGluZUhhc1dyYXBPcHBvcnR1bml0eUF0UHJldmlvdXNQb3NpdGlvbik7CisgICAgaWYg
KGJyZWFrUnVsZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byYg
Zm9udENhc2NhZGUgPSBzdHlsZS5mb250Q2FzY2FkZSgpOworICAgIGlmIChicmVha1J1bGVzLmNv
bnRhaW5zKFdvcmRCcmVha1J1bGU6OkF0QXJiaXRyYXJ5UG9zaXRpb25XaXRoaW5Xb3JkcykpIHsK
KyAgICAgICAgYXV0byB0cnlCcmVha2luZ0F0QXJiaXRyYXJ5UG9zaXRpb25XaXRoaW5Xb3JkcyA9
IFsmXSgpIC0+IHN0ZDo6b3B0aW9uYWw8UGFydGlhbFJ1bj4geworICAgICAgICAgICAgLy8gQnJl
YWtpbmcgaXMgYWxsb3dlZCB3aXRoaW4g4oCcd29yZHPigJ06IHNwZWNpZmljYWxseSwgaW4gYWRk
aXRpb24gdG8gc29mdCB3cmFwIG9wcG9ydHVuaXRpZXMgYWxsb3dlZCBmb3Igbm9ybWFsLCBhbnkg
dHlwb2dyYXBoaWMgbGV0dGVyIHVuaXRzCisgICAgICAgICAgICAvLyBJdCBkb2VzIG5vdCBhZmZl
Y3QgcnVsZXMgZ292ZXJuaW5nIHRoZSBzb2Z0IHdyYXAgb3Bwb3J0dW5pdGllcyBjcmVhdGVkIGJ5
IHdoaXRlIHNwYWNlLiBIeXBoZW5hdGlvbiBpcyBub3QgYXBwbGllZC4KKyAgICAgICAgICAgIEFT
U0VSVCghYnJlYWtSdWxlcy5jb250YWlucyhXb3JkQnJlYWtSdWxlOjpBdEh5cGhlbmF0aW9uT3Bw
b3J0dW5pdGllcykpOworICAgICAgICAgICAgaWYgKGlubGluZVRleHRJdGVtLmlzV2hpdGVzcGFj
ZSgpKSB7CisgICAgICAgICAgICAgICAgLy8gQXRBcmJpdHJhcnlQb3NpdGlvbldpdGhpbldvcmRz
IGRvZXMgbm90IGFmZmVjdCB0aGUgYnJlYWtpbmcgb3Bwb3J0dW5pdGllcyBhcm91bmQgd2hpdGVz
cGFjZS4KKyAgICAgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAoIWlubGluZVRleHRJdGVtLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAg
Ly8gRW1wdHkgdGV4dCBydW5zIG1heSBiZSBicmVha2FibGUgYmFzZWQgb24gc3R5bGUsIGJ1dCBp
biBwcmFjdGljZSB3ZSBjYW4ndCByZWFsbHkgc3BsaXQgdGhlbSBhbnkgZnVydGhlci4KKyAgICAg
ICAgICAgICAgICByZXR1cm4gUGFydGlhbFJ1biB7IH07CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGlmICghY2FuZGlkYXRlVGV4dFJ1bi5pc092ZXJmbG93aW5nUnVuKSB7CisgICAgICAg
ICAgICAgICAgLy8gV2hlbiB0aGUgcnVuIGNhbiBiZSBzcGxpdCBhdCBhcmJpdHJhcnkgcG9zaXRp
b24gd2Ugd291bGQgbm9ybWFsbHkganVzdCByZXR1cm4gdGhlIGVudGlyZSBydW4gd2hlbiBpdCBp
cyBpbnRlbmRlZCB0byBmaXQgb24gdGhlIGxpbmUKKyAgICAgICAgICAgICAgICAvLyBidXQgaGVy
ZSB3ZSBoYXZlIHRvIGNoZWNrIGZvciBtaWQtd29yZCBicmVhay4KKyAgICAgICAgICAgICAgICBh
dXRvIG5leHRJbmRleCA9IG5leHRUZXh0UnVuSW5kZXgocnVucywgY2FuZGlkYXRlVGV4dFJ1bi5p
bmRleCk7CisgICAgICAgICAgICAgICAgaWYgKCFuZXh0SW5kZXggfHwgIWRvd25jYXN0PElubGlu
ZVRleHRJdGVtPihydW5zWypuZXh0SW5kZXhdLmlubGluZUl0ZW0pLmlzV2hpdGVzcGFjZSgpKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gUGFydGlhbFJ1biB7IGlubGluZVRleHRJdGVtLmxl
bmd0aCgpLCBUZXh0VXRpbDo6d2lkdGgoaW5saW5lVGV4dEl0ZW0sIGZvbnRDYXNjYWRlLCBjYW5k
aWRhdGVUZXh0UnVuLmxvZ2ljYWxMZWZ0KSB9OworICAgICAgICAgICAgICAgIC8vIFdlJ3ZlIGdv
dCByb29tIGZvciB0aGUgcnVuIGJ1dCB3ZSBoYXZlIHRvIHRyeSB0byBicmVhayBpdCBtaWQtd29y
ZC4KKyAgICAgICAgICAgICAgICBpZiAoaW5saW5lVGV4dEl0ZW0ubGVuZ3RoKCkgPT0gMSkgewor
ICAgICAgICAgICAgICAgICAgICAvLyBXZSBjYW4ndCBtaWQtd29yZCBicmVhayBhIHNpbmdsZSBj
aGFyYWN0ZXIuCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGF1dG8gc3RhcnRQb3NpdGlvbiA9IGlubGluZVRleHRJdGVt
LnN0YXJ0KCk7CisgICAgICAgICAgICAgICAgYXV0byBlbmRQb3NpdGlvbiA9IGlubGluZVRleHRJ
dGVtLmVuZCgpIC0gMTsKKyAgICAgICAgICAgICAgICByZXR1cm4gUGFydGlhbFJ1biB7IGlubGlu
ZVRleHRJdGVtLmxlbmd0aCgpIC0gMSwgVGV4dFV0aWw6OndpZHRoKGlubGluZVRleHRJdGVtLCBm
b250Q2FzY2FkZSwgc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24sIGNhbmRpZGF0ZVRleHRSdW4u
bG9naWNhbExlZnQpIH07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghbGluZUhh
c1Jvb21Gb3JDb250ZW50KSB7CisgICAgICAgICAgICAgICAgYXV0byBwcmV2aW91c0luZGV4ID0g
cHJldmlvdXNUZXh0UnVuSW5kZXgocnVucywgY2FuZGlkYXRlVGV4dFJ1bi5pbmRleCk7CisgICAg
ICAgICAgICAgICAgaWYgKCFwcmV2aW91c0luZGV4IHx8ICFkb3duY2FzdDxJbmxpbmVUZXh0SXRl
bT4ocnVuc1sqcHJldmlvdXNJbmRleF0uaW5saW5lSXRlbSkuaXNXaGl0ZXNwYWNlKCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgLy8gRmFzdCBwYXRoIGZvciBjYXNlcyB3aGVuIHRoZXJlJ3Mgbm8g
cm9vbSBhdCBhbGwuIFdlIGNhbiBicmVhayB0aGlzIGNvbnRlbnQgYXQgdGhlIHN0YXJ0LgorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gUGFydGlhbFJ1biB7IH07CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGlmIChpbmxpbmVUZXh0SXRlbS5sZW5ndGgoKSA9PSAxKSB7Cisg
ICAgICAgICAgICAgICAgICAgIC8vIFdlIGNhbid0IG1pZC13b3JkIGJyZWFrIGEgc2luZ2xlIGNo
YXJhY3Rlci4KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgYXV0byBzdGFydFBvc2l0aW9uID0gaW5saW5lVGV4dEl0ZW0u
c3RhcnQoKSArIDE7CisgICAgICAgICAgICAgICAgYXV0byBlbmRQb3NpdGlvbiA9IGlubGluZVRl
eHRJdGVtLmVuZCgpOworICAgICAgICAgICAgICAgIHJldHVybiBQYXJ0aWFsUnVuIHsgaW5saW5l
VGV4dEl0ZW0ubGVuZ3RoKCkgLSAxLCBUZXh0VXRpbDo6d2lkdGgoaW5saW5lVGV4dEl0ZW0sIGZv
bnRDYXNjYWRlLCBzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbiwgY2FuZGlkYXRlVGV4dFJ1bi5s
b2dpY2FsTGVmdCkgfTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGF1dG8gbWlkV29yZEJy
ZWFrID0gVGV4dFV0aWw6Om1pZFdvcmRCcmVhayhpbmxpbmVUZXh0SXRlbSwgZm9udENhc2NhZGUs
IGNhbmRpZGF0ZVJ1bi5sb2dpY2FsV2lkdGgsIGF2YWlsYWJsZVdpZHRoLCBjYW5kaWRhdGVUZXh0
UnVuLmxvZ2ljYWxMZWZ0KTsKKyAgICAgICAgICAgIHJldHVybiBQYXJ0aWFsUnVuIHsgbWlkV29y
ZEJyZWFrLmxlbmd0aCwgbWlkV29yZEJyZWFrLmxvZ2ljYWxXaWR0aCB9OworICAgICAgICB9Owor
ICAgICAgICByZXR1cm4gdHJ5QnJlYWtpbmdBdEFyYml0cmFyeVBvc2l0aW9uV2l0aGluV29yZHMo
KTsKKyAgICB9CisKKyAgICBpZiAoYnJlYWtSdWxlcy5jb250YWlucyhXb3JkQnJlYWtSdWxlOjpB
dEh5cGhlbmF0aW9uT3Bwb3J0dW5pdGllcykpIHsKKyAgICAgICAgYXV0byB0cnlCcmVha2luZ0F0
SHlwaGVuYXRpb25PcHBvcnR1bml0eSA9IFsmXSgpIC0+IHN0ZDo6b3B0aW9uYWw8UGFydGlhbFJ1
bj4geworICAgICAgICAgICAgLy8gRmluZCB0aGUgaHlwaGVuIHBvc2l0aW9uIGFzIGZvbGxvd3M6
CisgICAgICAgICAgICAvLyAxLiBTcGxpdCB0aGUgdGV4dCBieSB0YWtpbmcgdGhlIGh5cGhlbiB3
aWR0aCBpbnRvIGFjY291bnQKKyAgICAgICAgICAgIC8vIDIuIEZpbmQgdGhlIGxhc3QgaHlwaGVu
IHBvc2l0aW9uIGJlZm9yZSB0aGUgc3BsaXQgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChjYW5k
aWRhdGVUZXh0UnVuLmlzT3ZlcmZsb3dpbmdSdW4gJiYgIWxpbmVIYXNSb29tRm9yQ29udGVudCkg
eworICAgICAgICAgICAgICAgIC8vIFdlIHdvbid0IGJlIGFibGUgdG8gZmluZCBoeXBoZW4gbG9j
YXRpb24gd2hlbiB0aGVyZSdzIG5vIGF2YWlsYWJsZSBzcGFjZS4KKyAgICAgICAgICAgICAgICBy
ZXR1cm4geyB9OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYXV0byBydW5MZW5ndGggPSBp
bmxpbmVUZXh0SXRlbS5sZW5ndGgoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxpbWl0QmVmb3Jl
ID0gc3R5bGUuaHlwaGVuYXRpb25MaW1pdEJlZm9yZSgpID09IFJlbmRlclN0eWxlOjppbml0aWFs
SHlwaGVuYXRpb25MaW1pdEJlZm9yZSgpID8gMCA6IHN0eWxlLmh5cGhlbmF0aW9uTGltaXRCZWZv
cmUoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxpbWl0QWZ0ZXIgPSBzdHlsZS5oeXBoZW5hdGlv
bkxpbWl0QWZ0ZXIoKSA9PSBSZW5kZXJTdHlsZTo6aW5pdGlhbEh5cGhlbmF0aW9uTGltaXRBZnRl
cigpID8gMCA6IHN0eWxlLmh5cGhlbmF0aW9uTGltaXRBZnRlcigpOworICAgICAgICAgICAgLy8g
Q2hlY2sgaWYgdGhpcyBydW4gY2FuIGFjY29tbW9kYXRlIHRoZSBiZWZvcmUvYWZ0ZXIgbGltaXRz
IGF0IGFsbCBiZWZvcmUgc3RhcnQgbWVhc3VyaW5nIHRleHQuCisgICAgICAgICAgICBpZiAobGlt
aXRCZWZvcmUgPj0gcnVuTGVuZ3RoIHx8IGxpbWl0QWZ0ZXIgPj0gcnVuTGVuZ3RoIHx8IGxpbWl0
QmVmb3JlICsgbGltaXRBZnRlciA+IHJ1bkxlbmd0aCkKKyAgICAgICAgICAgICAgICByZXR1cm4g
eyB9OworCisgICAgICAgICAgICB1bnNpZ25lZCBsZWZ0U2lkZUxlbmd0aCA9IHJ1bkxlbmd0aDsK
KyAgICAgICAgICAgIGF1dG8gaHlwaGVuV2lkdGggPSBJbmxpbmVMYXlvdXRVbml0IHsgZm9udENh
c2NhZGUud2lkdGgoVGV4dFJ1biB7IFN0cmluZ1ZpZXcgeyBzdHlsZS5oeXBoZW5TdHJpbmcoKSB9
IH0pIH07CisgICAgICAgICAgICBpZiAoY2FuZGlkYXRlVGV4dFJ1bi5pc092ZXJmbG93aW5nUnVu
KSB7CisgICAgICAgICAgICAgICAgYXV0byBhdmFpbGFibGVXaWR0aEV4Y2x1ZGluZ0h5cGhlbiA9
IGF2YWlsYWJsZVdpZHRoIC0gaHlwaGVuV2lkdGg7CisgICAgICAgICAgICAgICAgaWYgKGF2YWls
YWJsZVdpZHRoRXhjbHVkaW5nSHlwaGVuIDw9IDAgfHwgIWVub3VnaFdpZHRoRm9ySHlwaGVuYXRp
b24oYXZhaWxhYmxlV2lkdGhFeGNsdWRpbmdIeXBoZW4sIGZvbnRDYXNjYWRlLnBpeGVsU2l6ZSgp
KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgICAgICAgICBsZWZ0
U2lkZUxlbmd0aCA9IFRleHRVdGlsOjptaWRXb3JkQnJlYWsoaW5saW5lVGV4dEl0ZW0sIGZvbnRD
YXNjYWRlLCBjYW5kaWRhdGVSdW4ubG9naWNhbFdpZHRoLCBhdmFpbGFibGVXaWR0aEV4Y2x1ZGlu
Z0h5cGhlbiwgY2FuZGlkYXRlVGV4dFJ1bi5sb2dpY2FsTGVmdCkubGVuZ3RoOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgaWYgKGxlZnRTaWRlTGVuZ3RoIDwgbGltaXRCZWZvcmUpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgICAgIC8vIEFkanVzdCBiZWZvcmUgaW5k
ZXggdG8gYWNjb21tb2RhdGUgdGhlIGxpbWl0LWFmdGVyIHZhbHVlIChpdCdzIHRoZSBsYXN0IHBv
dGVudGlhbCBoeXBoZW4gbG9jYXRpb24gaW4gdGhpcyBydW4pLgorICAgICAgICAgICAgYXV0byBo
eXBoZW5CZWZvcmUgPSBzdGQ6Om1pbihsZWZ0U2lkZUxlbmd0aCwgcnVuTGVuZ3RoIC0gbGltaXRB
ZnRlcikgKyAxOworICAgICAgICAgICAgdW5zaWduZWQgaHlwaGVuTG9jYXRpb24gPSBsYXN0SHlw
aGVuTG9jYXRpb24oU3RyaW5nVmlldyhpbmxpbmVUZXh0SXRlbS5pbmxpbmVUZXh0Qm94KCkuY29u
dGVudCgpKS5zdWJzdHJpbmcoaW5saW5lVGV4dEl0ZW0uc3RhcnQoKSwgaW5saW5lVGV4dEl0ZW0u
bGVuZ3RoKCkpLCBoeXBoZW5CZWZvcmUsIHN0eWxlLmNvbXB1dGVkTG9jYWxlKCkpOworICAgICAg
ICAgICAgaWYgKCFoeXBoZW5Mb2NhdGlvbiB8fCBoeXBoZW5Mb2NhdGlvbiA8IGxpbWl0QmVmb3Jl
KQorICAgICAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAgICAvLyBoeXBoZW5Mb2Nh
dGlvbiBpcyByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhpcyBJbmxpbmVJdGVtVGV4dC4KKyAg
ICAgICAgICAgIEFTU0VSVChpbmxpbmVUZXh0SXRlbS5zdGFydCgpICsgaHlwaGVuTG9jYXRpb24g
PCBpbmxpbmVUZXh0SXRlbS5lbmQoKSk7CisgICAgICAgICAgICBhdXRvIHRyYWlsaW5nUGFydGlh
bFJ1bldpZHRoV2l0aEh5cGhlbiA9IFRleHRVdGlsOjp3aWR0aChpbmxpbmVUZXh0SXRlbSwgZm9u
dENhc2NhZGUsIGlubGluZVRleHRJdGVtLnN0YXJ0KCksIGlubGluZVRleHRJdGVtLnN0YXJ0KCkg
KyBoeXBoZW5Mb2NhdGlvbiwgY2FuZGlkYXRlVGV4dFJ1bi5sb2dpY2FsTGVmdCk7CisgICAgICAg
ICAgICByZXR1cm4gUGFydGlhbFJ1biB7IGh5cGhlbkxvY2F0aW9uLCB0cmFpbGluZ1BhcnRpYWxS
dW5XaWR0aFdpdGhIeXBoZW4sIGh5cGhlbldpZHRoIH07CisgICAgICAgIH07CisgICAgICAgIGlm
IChhdXRvIHBhcnRpYWxSdW4gPSB0cnlCcmVha2luZ0F0SHlwaGVuYXRpb25PcHBvcnR1bml0eSgp
KQorICAgICAgICAgICAgcmV0dXJuIHBhcnRpYWxSdW47CisgICAgfQorCisgICAgaWYgKGJyZWFr
UnVsZXMuY29udGFpbnMoV29yZEJyZWFrUnVsZTo6QXRBcmJpdHJhcnlQb3NpdGlvbikpIHsKKyAg
ICAgICAgYXV0byB0cnlCcmVha2luZ0F0QXJiaXRyYXJ5UG9zaXRpb24gPSBbJl0oKSAtPiBQYXJ0
aWFsUnVuIHsKKyAgICAgICAgICAgIGlmICghaW5saW5lVGV4dEl0ZW0ubGVuZ3RoKCkpIHsKKyAg
ICAgICAgICAgICAgICAvLyBFbXB0eSB0ZXh0IHJ1bnMgbWF5IGJlIGJyZWFrYWJsZSBiYXNlZCBv
biBzdHlsZSwgYnV0IGluIHByYWN0aWNlIHdlIGNhbid0IHJlYWxseSBzcGxpdCB0aGVtIGFueSBm
dXJ0aGVyLgorICAgICAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAoIWNhbmRpZGF0ZVRleHRSdW4uaXNPdmVyZmxvd2luZ1J1bikgeworICAgICAg
ICAgICAgICAgIC8vIFdoZW4gdGhlIHJ1biBjYW4gYmUgc3BsaXQgYXQgYXJiaXRyYXJ5IHBvc2l0
aW9uIGxldCdzIGp1c3QgcmV0dXJuIHRoZSBlbnRpcmUgcnVuIHdoZW4gaXQgaXMgaW50ZW5kZWQg
dG8gZml0IG9uIHRoZSBsaW5lLgorICAgICAgICAgICAgICAgIEFTU0VSVChpbmxpbmVUZXh0SXRl
bS5sZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgYXV0byB0cmFpbGluZ1BhcnRpYWxSdW5XaWR0
aCA9IFRleHRVdGlsOjp3aWR0aChpbmxpbmVUZXh0SXRlbSwgZm9udENhc2NhZGUsIGNhbmRpZGF0
ZVRleHRSdW4ubG9naWNhbExlZnQpOworICAgICAgICAgICAgICAgIHJldHVybiB7IGlubGluZVRl
eHRJdGVtLmxlbmd0aCgpLCB0cmFpbGluZ1BhcnRpYWxSdW5XaWR0aCB9OworICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKCFsaW5lSGFzUm9vbUZvckNvbnRlbnQpIHsKKyAgICAgICAgICAg
ICAgICAvLyBGYXN0IHBhdGggZm9yIGNhc2VzIHdoZW4gdGhlcmUncyBubyByb29tIGF0IGFsbC4g
VGhlIGNvbnRlbnQgaXMgYnJlYWthYmxlIGJ1dCB3ZSBkb24ndCBoYXZlIHNwYWNlIGZvciBpdC4K
KyAgICAgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICAgICAgfQorICAgICAgICAgICAg
YXV0byBtaWRXb3JkQnJlYWsgPSBUZXh0VXRpbDo6bWlkV29yZEJyZWFrKGlubGluZVRleHRJdGVt
LCBmb250Q2FzY2FkZSwgY2FuZGlkYXRlUnVuLmxvZ2ljYWxXaWR0aCwgYXZhaWxhYmxlV2lkdGgs
IGNhbmRpZGF0ZVRleHRSdW4ubG9naWNhbExlZnQpOworICAgICAgICAgICAgcmV0dXJuIHsgbWlk
V29yZEJyZWFrLmxlbmd0aCwgbWlkV29yZEJyZWFrLmxvZ2ljYWxXaWR0aCB9OworICAgICAgICB9
OworICAgICAgICAvLyBXaXRoIGFyYml0cmFyeSBicmVha2luZyB0aGVyZSdzIGFsd2F5cyBhIHZh
bGlkIGJyZWFraW5nIHBvc2l0aW9uIChldmVuIGlmIGl0IGlzIGJlZm9yZSB0aGUgZmlyc3QgcG9z
aXRpb24pLgorICAgICAgICByZXR1cm4gdHJ5QnJlYWtpbmdBdEFyYml0cmFyeVBvc2l0aW9uKCk7
CisgICAgfQorCisgICAgcmV0dXJuIHsgfTsKK30KKwogc3RkOjpvcHRpb25hbDxJbmxpbmVDb250
ZW50QnJlYWtlcjo6T3ZlcmZsb3dpbmdUZXh0Q29udGVudDo6QnJlYWtpbmdQb3NpdGlvbj4gSW5s
aW5lQ29udGVudEJyZWFrZXI6OnRyeUJyZWFraW5nT3ZlcmZsb3dpbmdSdW4oY29uc3QgTGluZVN0
YXR1cyYgbGluZVN0YXR1cywgY29uc3QgQ29udGludW91c0NvbnRlbnQ6OlJ1bkxpc3QmIHJ1bnMs
IHNpemVfdCBvdmVyZmxvd2luZ1J1bkluZGV4LCBJbmxpbmVMYXlvdXRVbml0IG5vbk92ZXJmbG93
aW5nQ29udGVudFdpZHRoKSBjb25zdAogewogICAgIGF1dG8gb3ZlcmZsb3dpbmdSdW4gPSBydW5z
W292ZXJmbG93aW5nUnVuSW5kZXhdOwogICAgIGlmICghaXNXcmFwcGFibGVSdW4ob3ZlcmZsb3dp
bmdSdW4pKQogICAgICAgICByZXR1cm4geyB9OwotICAgIGF1dG8gcGFydGlhbE92ZXJmbG93aW5n
UnVuID0gdHJ5QnJlYWtpbmdUZXh0UnVuKHJ1bnMsIG92ZXJmbG93aW5nUnVuSW5kZXgsIGxpbmVT
dGF0dXMuY29udGVudExvZ2ljYWxSaWdodCArIG5vbk92ZXJmbG93aW5nQ29udGVudFdpZHRoLCBz
dGQ6Om1heCgwLjBmLCBsaW5lU3RhdHVzLmF2YWlsYWJsZVdpZHRoIC0gbm9uT3ZlcmZsb3dpbmdD
b250ZW50V2lkdGgpLCBsaW5lU3RhdHVzLmhhc1dyYXBPcHBvcnR1bml0eUF0UHJldmlvdXNQb3Np
dGlvbik7CisKKyAgICBhdXRvIGF2aWxhYmxlV2lkdGggPSBzdGQ6Om1heCgwLjBmLCBsaW5lU3Rh
dHVzLmF2YWlsYWJsZVdpZHRoIC0gbm9uT3ZlcmZsb3dpbmdDb250ZW50V2lkdGgpOworICAgIGF1
dG8gcGFydGlhbE92ZXJmbG93aW5nUnVuID0gdHJ5QnJlYWtpbmdUZXh0UnVuKHJ1bnMsIHsgb3Zl
cmZsb3dpbmdSdW5JbmRleCwgdHJ1ZSwgbGluZVN0YXR1cy5jb250ZW50TG9naWNhbFJpZ2h0ICsg
bm9uT3ZlcmZsb3dpbmdDb250ZW50V2lkdGggfSwgYXZpbGFibGVXaWR0aCwgbGluZVN0YXR1cy5o
YXNXcmFwT3Bwb3J0dW5pdHlBdFByZXZpb3VzUG9zaXRpb24pOwogICAgIGlmICghcGFydGlhbE92
ZXJmbG93aW5nUnVuKQogICAgICAgICByZXR1cm4geyB9OwogICAgIGlmIChwYXJ0aWFsT3ZlcmZs
b3dpbmdSdW4tPmxlbmd0aCkKQEAgLTMyNCw3ICs0NjEsOCBAQCBzdGQ6Om9wdGlvbmFsPElubGlu
ZUNvbnRlbnRCcmVha2VyOjpPdmVyZmxvd2luZ1RleHRDb250ZW50OjpCcmVha2luZ1Bvc2l0aW9u
PiBJbgogICAgICAgICBpZiAoIWlzV3JhcHBhYmxlUnVuKHJ1bikpCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgQVNTRVJUKHJ1bi5pbmxpbmVJdGVtLmlzVGV4dCgpKTsKLSAgICAgICAg
aWYgKGF1dG8gcGFydGlhbFJ1biA9IHRyeUJyZWFraW5nVGV4dFJ1bihydW5zLCBpbmRleCwgbGlu
ZVN0YXR1cy5jb250ZW50TG9naWNhbFJpZ2h0ICsgcHJldmlvdXNDb250ZW50V2lkdGgsIHsgfSwg
bGluZVN0YXR1cy5oYXNXcmFwT3Bwb3J0dW5pdHlBdFByZXZpb3VzUG9zaXRpb24pKSB7CisgICAg
ICAgIGF1dG8gYXZpbGFibGVXaWR0aCA9IHN0ZDo6bWF4KDAuMGYsIGxpbmVTdGF0dXMuYXZhaWxh
YmxlV2lkdGggLSBwcmV2aW91c0NvbnRlbnRXaWR0aCk7CisgICAgICAgIGlmIChhdXRvIHBhcnRp
YWxSdW4gPSB0cnlCcmVha2luZ1RleHRSdW4ocnVucywgeyBpbmRleCwgZmFsc2UsIGxpbmVTdGF0
dXMuY29udGVudExvZ2ljYWxSaWdodCArIHByZXZpb3VzQ29udGVudFdpZHRoIH0sIGF2aWxhYmxl
V2lkdGgsIGxpbmVTdGF0dXMuaGFzV3JhcE9wcG9ydHVuaXR5QXRQcmV2aW91c1Bvc2l0aW9uKSkg
ewogICAgICAgICAgICAgLy8gV2Uga25vdyB0aGlzIHJ1biBmaXRzLCBzbyBpZiBicmVha2luZyBp
cyBhbGxvd2VkIG9uIHRoZSBydW4sIGl0IHNob3VsZCByZXR1cm4gYSBub24tZW1wdHkgbGVmdC1z
aWRlCiAgICAgICAgICAgICAvLyBzaW5jZSBpdCdzIGVpdGhlciBhdCBoeXBoZW4gcG9zaXRpb24g
b3IgdGhlIGVudGlyZSBydW4gaXMgcmV0dXJuZWQuCiAgICAgICAgICAgICBBU1NFUlQocGFydGlh
bFJ1bi0+bGVuZ3RoKTsKQEAgLTM0Niw3ICs0ODQsNyBAQCBzdGQ6Om9wdGlvbmFsPElubGluZUNv
bnRlbnRCcmVha2VyOjpPdmVyZmxvd2luZ1RleHRDb250ZW50OjpCcmVha2luZ1Bvc2l0aW9uPiBJ
bgogICAgICAgICB9CiAgICAgICAgIEFTU0VSVChydW4uaW5saW5lSXRlbS5pc1RleHQoKSk7CiAg
ICAgICAgIC8vIEF0IHRoaXMgcG9pbnQgdGhlIGF2YWlsYWJsZSBzcGFjZSBpcyB6ZXJvLiBMZXQn
cyB0cnkgdGhlIGJyZWFrIHRoZXNlIG92ZXJmbG93aW5nIHNldCBvZiBydW5zIGF0IHRoZSBlYXJs
aWVzdCBwb3NzaWJsZS4KLSAgICAgICAgaWYgKGF1dG8gcGFydGlhbFJ1biA9IHRyeUJyZWFraW5n
VGV4dFJ1bihydW5zLCBpbmRleCwgbGluZVN0YXR1cy5jb250ZW50TG9naWNhbFJpZ2h0ICsgbmV4
dENvbnRlbnRXaWR0aCwgMCwgbGluZVN0YXR1cy5oYXNXcmFwT3Bwb3J0dW5pdHlBdFByZXZpb3Vz
UG9zaXRpb24pKSB7CisgICAgICAgIGlmIChhdXRvIHBhcnRpYWxSdW4gPSB0cnlCcmVha2luZ1Rl
eHRSdW4ocnVucywgeyBpbmRleCwgdHJ1ZSwgbGluZVN0YXR1cy5jb250ZW50TG9naWNhbFJpZ2h0
ICsgbmV4dENvbnRlbnRXaWR0aCB9LCAwLCBsaW5lU3RhdHVzLmhhc1dyYXBPcHBvcnR1bml0eUF0
UHJldmlvdXNQb3NpdGlvbikpIHsKICAgICAgICAgICAgIC8vIDxzcGFuPnVuYnJlYWthYmxlX2Fu
ZF9vdmVyZmxvd3M8c3BhbiBzdHlsZT0id29yZC1icmVhazogYnJlYWstYWxsIj5icmVha2FibGU8
L3NwYW4+CiAgICAgICAgICAgICAvLyBUaGUgcGFydGlhbCBydW4gbGVuZ3RoIGNvdWxkIHZlcnkg
d2VsbCBiZSAwIG1lYW5pbmcgdGhlIHRyYWlsaW5nIHJ1biBpcyBhY3R1YWxseSB0aGUgb3ZlcmZs
b3dpbmcgcnVuIChzZWUgYWJvdmUgaW4gdGhlIGV4YW1wbGUpLgogICAgICAgICAgICAgaWYgKHBh
cnRpYWxSdW4tPmxlbmd0aCkgewpAQCAtNDQxLDEzMyArNTc5LDYgQEAgT3B0aW9uU2V0PElubGlu
ZUNvbnRlbnRCcmVha2VyOjpXb3JkQnJlYWtSdWxlPiBJbmxpbmVDb250ZW50QnJlYWtlcjo6d29y
ZEJyZWFrQmUKICAgICByZXR1cm4gaW5jbHVkZUh5cGhlbmF0aW9uSWZBbGxvd2VkKHsgfSk7CiB9
CiAKLXN0ZDo6b3B0aW9uYWw8SW5saW5lQ29udGVudEJyZWFrZXI6OlBhcnRpYWxSdW4+IElubGlu
ZUNvbnRlbnRCcmVha2VyOjp0cnlCcmVha2luZ1RleHRSdW4oY29uc3QgQ29udGludW91c0NvbnRl
bnQ6OlJ1bkxpc3QmIHJ1bnMsIHNpemVfdCBjYW5kaWRhdGVSdW5JbmRleCwgSW5saW5lTGF5b3V0
VW5pdCBsb2dpY2FsTGVmdCwgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBhdmFpbGFi
bGVXaWR0aCwgYm9vbCBoYXNXcmFwT3Bwb3J0dW5pdHlBdFByZXZpb3VzUG9zaXRpb24pIGNvbnN0
Ci17Ci0gICAgYXV0byYgY2FuZGlkYXRlUnVuID0gcnVuc1tjYW5kaWRhdGVSdW5JbmRleF07Ci0g
ICAgQVNTRVJUKGNhbmRpZGF0ZVJ1bi5pbmxpbmVJdGVtLmlzVGV4dCgpKTsKLSAgICBhdXRvJiBp
bmxpbmVUZXh0SXRlbSA9IGRvd25jYXN0PElubGluZVRleHRJdGVtPihjYW5kaWRhdGVSdW4uaW5s
aW5lSXRlbSk7Ci0gICAgYXV0byYgc3R5bGUgPSBjYW5kaWRhdGVSdW4uc3R5bGU7Ci0gICAgYXV0
byBhdmFpbGFibGVTcGFjZUlzSW5maW5pdGUgPSAhYXZhaWxhYmxlV2lkdGguaGFzX3ZhbHVlKCk7
Ci0KLSAgICBhdXRvIGJyZWFrUnVsZXMgPSB3b3JkQnJlYWtCZWhhdmlvcihzdHlsZSwgaGFzV3Jh
cE9wcG9ydHVuaXR5QXRQcmV2aW91c1Bvc2l0aW9uKTsKLSAgICBpZiAoYnJlYWtSdWxlcy5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiB7IH07Ci0KLSAgICBhdXRvJiBmb250Q2FzY2FkZSA9IHN0
eWxlLmZvbnRDYXNjYWRlKCk7Ci0gICAgaWYgKGJyZWFrUnVsZXMuY29udGFpbnMoV29yZEJyZWFr
UnVsZTo6QXRBcmJpdHJhcnlQb3NpdGlvbldpdGhpbldvcmRzKSkgewotICAgICAgICAvLyBCcmVh
a2luZyBpcyBhbGxvd2VkIHdpdGhpbiDigJx3b3Jkc+KAnTogc3BlY2lmaWNhbGx5LCBpbiBhZGRp
dGlvbiB0byBzb2Z0IHdyYXAgb3Bwb3J0dW5pdGllcyBhbGxvd2VkIGZvciBub3JtYWwsIGFueSB0
eXBvZ3JhcGhpYyBsZXR0ZXIgdW5pdHMKLSAgICAgICAgLy8gSXQgZG9lcyBub3QgYWZmZWN0IHJ1
bGVzIGdvdmVybmluZyB0aGUgc29mdCB3cmFwIG9wcG9ydHVuaXRpZXMgY3JlYXRlZCBieSB3aGl0
ZSBzcGFjZS4gSHlwaGVuYXRpb24gaXMgbm90IGFwcGxpZWQuCi0gICAgICAgIEFTU0VSVCghYnJl
YWtSdWxlcy5jb250YWlucyhXb3JkQnJlYWtSdWxlOjpBdEh5cGhlbmF0aW9uT3Bwb3J0dW5pdGll
cykpOwotICAgICAgICBpZiAoaW5saW5lVGV4dEl0ZW0uaXNXaGl0ZXNwYWNlKCkpIHsKLSAgICAg
ICAgICAgIC8vIEF0QXJiaXRyYXJ5UG9zaXRpb25XaXRoaW5Xb3JkcyBkb2VzIG5vdCBhZmZlY3Qg
dGhlIGJyZWFraW5nIG9wcG9ydHVuaXRpZXMgYXJvdW5kIHdoaXRlc3BhY2UuCi0gICAgICAgICAg
ICByZXR1cm4geyB9OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFpbmxpbmVUZXh0SXRlbS5s
ZW5ndGgoKSkgewotICAgICAgICAgICAgLy8gRW1wdHkgdGV4dCBydW5zIG1heSBiZSBicmVha2Fi
bGUgYmFzZWQgb24gc3R5bGUsIGJ1dCBpbiBwcmFjdGljZSB3ZSBjYW4ndCByZWFsbHkgc3BsaXQg
dGhlbSBhbnkgZnVydGhlci4KLSAgICAgICAgICAgIHJldHVybiBQYXJ0aWFsUnVuIHsgfTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGlmIChhdmFpbGFibGVTcGFjZUlzSW5maW5pdGUpIHsKLSAgICAg
ICAgICAgIC8vIFdoZW4gdGhlIHJ1biBjYW4gYmUgc3BsaXQgYXQgYXJiaXRyYXJ5IHBvc2l0aW9u
IHdlIHdvdWxkIG5vcm1hbGx5IGp1c3QgcmV0dXJuIHRoZSBlbnRpcmUgcnVuIHdoZW4gaXQgaXMg
aW50ZW5kZWQgdG8gZml0IG9uIHRoZSBsaW5lCi0gICAgICAgICAgICAvLyBidXQgaGVyZSB3ZSBo
YXZlIHRvIGNoZWNrIGZvciBtaWQtd29yZCBicmVhay4KLSAgICAgICAgICAgIGF1dG8gbmV4dElu
ZGV4ID0gbmV4dFRleHRSdW5JbmRleChydW5zLCBjYW5kaWRhdGVSdW5JbmRleCk7Ci0gICAgICAg
ICAgICBpZiAoIW5leHRJbmRleCB8fCAhZG93bmNhc3Q8SW5saW5lVGV4dEl0ZW0+KHJ1bnNbKm5l
eHRJbmRleF0uaW5saW5lSXRlbSkuaXNXaGl0ZXNwYWNlKCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIFBhcnRpYWxSdW4geyBpbmxpbmVUZXh0SXRlbS5sZW5ndGgoKSwgVGV4dFV0aWw6OndpZHRo
KGlubGluZVRleHRJdGVtLCBmb250Q2FzY2FkZSwgbG9naWNhbExlZnQpIH07Ci0gICAgICAgICAg
ICAvLyBXZSd2ZSBnb3Qgcm9vbSBmb3IgdGhlIHJ1biBidXQgd2UgaGF2ZSB0byB0cnkgdG8gYnJl
YWsgaXQgbWlkLXdvcmQuCi0gICAgICAgICAgICBpZiAoaW5saW5lVGV4dEl0ZW0ubGVuZ3RoKCkg
PT0gMSkgewotICAgICAgICAgICAgICAgIC8vIFdlIGNhbid0IG1pZC13b3JkIGJyZWFrIGEgc2lu
Z2xlIGNoYXJhY3Rlci4KLSAgICAgICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgYXV0byBzdGFydFBvc2l0aW9uID0gaW5saW5lVGV4dEl0ZW0uc3RhcnQo
KTsKLSAgICAgICAgICAgIGF1dG8gZW5kUG9zaXRpb24gPSBpbmxpbmVUZXh0SXRlbS5lbmQoKSAt
IDE7Ci0gICAgICAgICAgICByZXR1cm4gUGFydGlhbFJ1biB7IGlubGluZVRleHRJdGVtLmxlbmd0
aCgpIC0gMSwgVGV4dFV0aWw6OndpZHRoKGlubGluZVRleHRJdGVtLCBmb250Q2FzY2FkZSwgc3Rh
cnRQb3NpdGlvbiwgZW5kUG9zaXRpb24sIGxvZ2ljYWxMZWZ0KSB9OwotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKCEqYXZhaWxhYmxlV2lkdGgpIHsKLSAgICAgICAgICAgIGF1dG8gcHJldmlvdXNJ
bmRleCA9IHByZXZpb3VzVGV4dFJ1bkluZGV4KHJ1bnMsIGNhbmRpZGF0ZVJ1bkluZGV4KTsKLSAg
ICAgICAgICAgIGlmICghcHJldmlvdXNJbmRleCB8fCAhZG93bmNhc3Q8SW5saW5lVGV4dEl0ZW0+
KHJ1bnNbKnByZXZpb3VzSW5kZXhdLmlubGluZUl0ZW0pLmlzV2hpdGVzcGFjZSgpKSB7Ci0gICAg
ICAgICAgICAgICAgLy8gRmFzdCBwYXRoIGZvciBjYXNlcyB3aGVuIHRoZXJlJ3Mgbm8gcm9vbSBh
dCBhbGwuIFdlIGNhbiBicmVhayB0aGlzIGNvbnRlbnQgYXQgdGhlIHN0YXJ0LgotICAgICAgICAg
ICAgICAgIHJldHVybiBQYXJ0aWFsUnVuIHsgfTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGlmIChpbmxpbmVUZXh0SXRlbS5sZW5ndGgoKSA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgLy8g
V2UgY2FuJ3QgbWlkLXdvcmQgYnJlYWsgYSBzaW5nbGUgY2hhcmFjdGVyLgotICAgICAgICAgICAg
ICAgIHJldHVybiB7IH07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBhdXRvIHN0YXJ0UG9z
aXRpb24gPSBpbmxpbmVUZXh0SXRlbS5zdGFydCgpICsgMTsKLSAgICAgICAgICAgIGF1dG8gZW5k
UG9zaXRpb24gPSBpbmxpbmVUZXh0SXRlbS5lbmQoKTsKLSAgICAgICAgICAgIHJldHVybiBQYXJ0
aWFsUnVuIHsgaW5saW5lVGV4dEl0ZW0ubGVuZ3RoKCkgLSAxLCBUZXh0VXRpbDo6d2lkdGgoaW5s
aW5lVGV4dEl0ZW0sIGZvbnRDYXNjYWRlLCBzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbiwgbG9n
aWNhbExlZnQpIH07Ci0gICAgICAgIH0KLSAgICAgICAgYXV0byBtaWRXb3JkQnJlYWsgPSBUZXh0
VXRpbDo6bWlkV29yZEJyZWFrKGlubGluZVRleHRJdGVtLCBmb250Q2FzY2FkZSwgY2FuZGlkYXRl
UnVuLmxvZ2ljYWxXaWR0aCwgKmF2YWlsYWJsZVdpZHRoLCBsb2dpY2FsTGVmdCk7Ci0gICAgICAg
IHJldHVybiBQYXJ0aWFsUnVuIHsgbWlkV29yZEJyZWFrLmxlbmd0aCwgbWlkV29yZEJyZWFrLmxv
Z2ljYWxXaWR0aCB9OwotICAgIH0KLQotICAgIGlmIChicmVha1J1bGVzLmNvbnRhaW5zKFdvcmRC
cmVha1J1bGU6OkF0SHlwaGVuYXRpb25PcHBvcnR1bml0aWVzKSkgewotICAgICAgICBhdXRvIHRy
eUJyZWFraW5nQXRIeXBoZW5hdGlvbk9wcG9ydHVuaXR5ID0gWyZdKCkgLT4gc3RkOjpvcHRpb25h
bDxQYXJ0aWFsUnVuPiB7Ci0gICAgICAgICAgICAvLyBGaW5kIHRoZSBoeXBoZW4gcG9zaXRpb24g
YXMgZm9sbG93czoKLSAgICAgICAgICAgIC8vIDEuIFNwbGl0IHRoZSB0ZXh0IGJ5IHRha2luZyB0
aGUgaHlwaGVuIHdpZHRoIGludG8gYWNjb3VudAotICAgICAgICAgICAgLy8gMi4gRmluZCB0aGUg
bGFzdCBoeXBoZW4gcG9zaXRpb24gYmVmb3JlIHRoZSBzcGxpdCBwb3NpdGlvbgotICAgICAgICAg
ICAgaWYgKCFhdmFpbGFibGVTcGFjZUlzSW5maW5pdGUgJiYgISphdmFpbGFibGVXaWR0aCkgewot
ICAgICAgICAgICAgICAgIC8vIFdlIHdvbid0IGJlIGFibGUgdG8gZmluZCBoeXBoZW4gbG9jYXRp
b24gd2hlbiB0aGVyZSdzIG5vIGF2YWlsYWJsZSBzcGFjZS4KLSAgICAgICAgICAgICAgICByZXR1
cm4geyB9OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYXV0byBydW5MZW5ndGggPSBpbmxp
bmVUZXh0SXRlbS5sZW5ndGgoKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxpbWl0QmVmb3JlID0g
c3R5bGUuaHlwaGVuYXRpb25MaW1pdEJlZm9yZSgpID09IFJlbmRlclN0eWxlOjppbml0aWFsSHlw
aGVuYXRpb25MaW1pdEJlZm9yZSgpID8gMCA6IHN0eWxlLmh5cGhlbmF0aW9uTGltaXRCZWZvcmUo
KTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxpbWl0QWZ0ZXIgPSBzdHlsZS5oeXBoZW5hdGlvbkxp
bWl0QWZ0ZXIoKSA9PSBSZW5kZXJTdHlsZTo6aW5pdGlhbEh5cGhlbmF0aW9uTGltaXRBZnRlcigp
ID8gMCA6IHN0eWxlLmh5cGhlbmF0aW9uTGltaXRBZnRlcigpOwotICAgICAgICAgICAgLy8gQ2hl
Y2sgaWYgdGhpcyBydW4gY2FuIGFjY29tbW9kYXRlIHRoZSBiZWZvcmUvYWZ0ZXIgbGltaXRzIGF0
IGFsbCBiZWZvcmUgc3RhcnQgbWVhc3VyaW5nIHRleHQuCi0gICAgICAgICAgICBpZiAobGltaXRC
ZWZvcmUgPj0gcnVuTGVuZ3RoIHx8IGxpbWl0QWZ0ZXIgPj0gcnVuTGVuZ3RoIHx8IGxpbWl0QmVm
b3JlICsgbGltaXRBZnRlciA+IHJ1bkxlbmd0aCkKLSAgICAgICAgICAgICAgICByZXR1cm4geyB9
OwotCi0gICAgICAgICAgICB1bnNpZ25lZCBsZWZ0U2lkZUxlbmd0aCA9IHJ1bkxlbmd0aDsKLSAg
ICAgICAgICAgIGF1dG8gaHlwaGVuV2lkdGggPSBJbmxpbmVMYXlvdXRVbml0IHsgZm9udENhc2Nh
ZGUud2lkdGgoVGV4dFJ1biB7IFN0cmluZ1ZpZXcgeyBzdHlsZS5oeXBoZW5TdHJpbmcoKSB9IH0p
IH07Ci0gICAgICAgICAgICBpZiAoIWF2YWlsYWJsZVNwYWNlSXNJbmZpbml0ZSkgewotICAgICAg
ICAgICAgICAgIGF1dG8gYXZhaWxhYmxlV2lkdGhFeGNsdWRpbmdIeXBoZW4gPSAqYXZhaWxhYmxl
V2lkdGggLSBoeXBoZW5XaWR0aDsKLSAgICAgICAgICAgICAgICBpZiAoYXZhaWxhYmxlV2lkdGhF
eGNsdWRpbmdIeXBoZW4gPD0gMCB8fCAhZW5vdWdoV2lkdGhGb3JIeXBoZW5hdGlvbihhdmFpbGFi
bGVXaWR0aEV4Y2x1ZGluZ0h5cGhlbiwgZm9udENhc2NhZGUucGl4ZWxTaXplKCkpKQotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICAgICAgICAgIGxlZnRTaWRlTGVuZ3Ro
ID0gVGV4dFV0aWw6Om1pZFdvcmRCcmVhayhpbmxpbmVUZXh0SXRlbSwgZm9udENhc2NhZGUsIGNh
bmRpZGF0ZVJ1bi5sb2dpY2FsV2lkdGgsIGF2YWlsYWJsZVdpZHRoRXhjbHVkaW5nSHlwaGVuLCBs
b2dpY2FsTGVmdCkubGVuZ3RoOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGxlZnRT
aWRlTGVuZ3RoIDwgbGltaXRCZWZvcmUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAg
ICAgICAgICAgIC8vIEFkanVzdCBiZWZvcmUgaW5kZXggdG8gYWNjb21tb2RhdGUgdGhlIGxpbWl0
LWFmdGVyIHZhbHVlIChpdCdzIHRoZSBsYXN0IHBvdGVudGlhbCBoeXBoZW4gbG9jYXRpb24gaW4g
dGhpcyBydW4pLgotICAgICAgICAgICAgYXV0byBoeXBoZW5CZWZvcmUgPSBzdGQ6Om1pbihsZWZ0
U2lkZUxlbmd0aCwgcnVuTGVuZ3RoIC0gbGltaXRBZnRlcikgKyAxOwotICAgICAgICAgICAgdW5z
aWduZWQgaHlwaGVuTG9jYXRpb24gPSBsYXN0SHlwaGVuTG9jYXRpb24oU3RyaW5nVmlldyhpbmxp
bmVUZXh0SXRlbS5pbmxpbmVUZXh0Qm94KCkuY29udGVudCgpKS5zdWJzdHJpbmcoaW5saW5lVGV4
dEl0ZW0uc3RhcnQoKSwgaW5saW5lVGV4dEl0ZW0ubGVuZ3RoKCkpLCBoeXBoZW5CZWZvcmUsIHN0
eWxlLmNvbXB1dGVkTG9jYWxlKCkpOwotICAgICAgICAgICAgaWYgKCFoeXBoZW5Mb2NhdGlvbiB8
fCBoeXBoZW5Mb2NhdGlvbiA8IGxpbWl0QmVmb3JlKQotICAgICAgICAgICAgICAgIHJldHVybiB7
IH07Ci0gICAgICAgICAgICAvLyBoeXBoZW5Mb2NhdGlvbiBpcyByZWxhdGl2ZSB0byB0aGUgc3Rh
cnQgb2YgdGhpcyBJbmxpbmVJdGVtVGV4dC4KLSAgICAgICAgICAgIEFTU0VSVChpbmxpbmVUZXh0
SXRlbS5zdGFydCgpICsgaHlwaGVuTG9jYXRpb24gPCBpbmxpbmVUZXh0SXRlbS5lbmQoKSk7Ci0g
ICAgICAgICAgICBhdXRvIHRyYWlsaW5nUGFydGlhbFJ1bldpZHRoV2l0aEh5cGhlbiA9IFRleHRV
dGlsOjp3aWR0aChpbmxpbmVUZXh0SXRlbSwgZm9udENhc2NhZGUsIGlubGluZVRleHRJdGVtLnN0
YXJ0KCksIGlubGluZVRleHRJdGVtLnN0YXJ0KCkgKyBoeXBoZW5Mb2NhdGlvbiwgbG9naWNhbExl
ZnQpOwotICAgICAgICAgICAgcmV0dXJuIFBhcnRpYWxSdW4geyBoeXBoZW5Mb2NhdGlvbiwgdHJh
aWxpbmdQYXJ0aWFsUnVuV2lkdGhXaXRoSHlwaGVuLCBoeXBoZW5XaWR0aCB9OwotICAgICAgICB9
OwotICAgICAgICBpZiAoYXV0byBwYXJ0aWFsUnVuID0gdHJ5QnJlYWtpbmdBdEh5cGhlbmF0aW9u
T3Bwb3J0dW5pdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBwYXJ0aWFsUnVuOwotICAgIH0KLQot
ICAgIGlmIChicmVha1J1bGVzLmNvbnRhaW5zKFdvcmRCcmVha1J1bGU6OkF0QXJiaXRyYXJ5UG9z
aXRpb24pKSB7Ci0gICAgICAgIGF1dG8gdHJ5QnJlYWtpbmdBdEFyYml0cmFyeVBvc2l0aW9uID0g
WyZdKCkgLT4gUGFydGlhbFJ1biB7Ci0gICAgICAgICAgICBpZiAoIWlubGluZVRleHRJdGVtLmxl
bmd0aCgpKSB7Ci0gICAgICAgICAgICAgICAgLy8gRW1wdHkgdGV4dCBydW5zIG1heSBiZSBicmVh
a2FibGUgYmFzZWQgb24gc3R5bGUsIGJ1dCBpbiBwcmFjdGljZSB3ZSBjYW4ndCByZWFsbHkgc3Bs
aXQgdGhlbSBhbnkgZnVydGhlci4KLSAgICAgICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgaWYgKGF2YWlsYWJsZVNwYWNlSXNJbmZpbml0ZSkgewotICAg
ICAgICAgICAgICAgIC8vIFdoZW4gdGhlIHJ1biBjYW4gYmUgc3BsaXQgYXQgYXJiaXRyYXJ5IHBv
c2l0aW9uIGxldCdzIGp1c3QgcmV0dXJuIHRoZSBlbnRpcmUgcnVuIHdoZW4gaXQgaXMgaW50ZW5k
ZWQgdG8gZml0IG9uIHRoZSBsaW5lLgotICAgICAgICAgICAgICAgIEFTU0VSVChpbmxpbmVUZXh0
SXRlbS5sZW5ndGgoKSk7Ci0gICAgICAgICAgICAgICAgYXV0byB0cmFpbGluZ1BhcnRpYWxSdW5X
aWR0aCA9IFRleHRVdGlsOjp3aWR0aChpbmxpbmVUZXh0SXRlbSwgZm9udENhc2NhZGUsIGxvZ2lj
YWxMZWZ0KTsKLSAgICAgICAgICAgICAgICByZXR1cm4geyBpbmxpbmVUZXh0SXRlbS5sZW5ndGgo
KSwgdHJhaWxpbmdQYXJ0aWFsUnVuV2lkdGggfTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGlmICghKmF2YWlsYWJsZVdpZHRoKSB7Ci0gICAgICAgICAgICAgICAgLy8gRmFzdCBwYXRoIGZv
ciBjYXNlcyB3aGVuIHRoZXJlJ3Mgbm8gcm9vbSBhdCBhbGwuIFRoZSBjb250ZW50IGlzIGJyZWFr
YWJsZSBidXQgd2UgZG9uJ3QgaGF2ZSBzcGFjZSBmb3IgaXQuCi0gICAgICAgICAgICAgICAgcmV0
dXJuIHsgfTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGF1dG8gbWlkV29yZEJyZWFrID0g
VGV4dFV0aWw6Om1pZFdvcmRCcmVhayhpbmxpbmVUZXh0SXRlbSwgZm9udENhc2NhZGUsIGNhbmRp
ZGF0ZVJ1bi5sb2dpY2FsV2lkdGgsICphdmFpbGFibGVXaWR0aCwgbG9naWNhbExlZnQpOwotICAg
ICAgICAgICAgcmV0dXJuIHsgbWlkV29yZEJyZWFrLmxlbmd0aCwgbWlkV29yZEJyZWFrLmxvZ2lj
YWxXaWR0aCB9OwotICAgICAgICB9OwotICAgICAgICAvLyBXaXRoIGFyYml0cmFyeSBicmVha2lu
ZyB0aGVyZSdzIGFsd2F5cyBhIHZhbGlkIGJyZWFraW5nIHBvc2l0aW9uIChldmVuIGlmIGl0IGlz
IGJlZm9yZSB0aGUgZmlyc3QgcG9zaXRpb24pLgotICAgICAgICByZXR1cm4gdHJ5QnJlYWtpbmdB
dEFyYml0cmFyeVBvc2l0aW9uKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHsgfTsKLX0KLQogdm9p
ZCBJbmxpbmVDb250ZW50QnJlYWtlcjo6Q29udGludW91c0NvbnRlbnQ6OmFwcGVuZChjb25zdCBJ
bmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIElubGluZUxh
eW91dFVuaXQgbG9naWNhbFdpZHRoLCBzdGQ6Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IGNv
bGxhcHNpYmxlV2lkdGgpCiB7CiAgICAgQVNTRVJUKGlubGluZUl0ZW0uaXNUZXh0KCkgfHwgaW5s
aW5lSXRlbS5pc0JveCgpIHx8IGlubGluZUl0ZW0uaXNJbmxpbmVCb3hTdGFydCgpIHx8IGlubGlu
ZUl0ZW0uaXNJbmxpbmVCb3hFbmQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QnJlYWtlci5oIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVu
dEJyZWFrZXIuaAppbmRleCBjM2E0ZDllMTBiOGI3ZDNhMjhmZDliY2I5YzQxZGRiOGUzOTcxZTVl
Li41NzNiYTRkOTAwYTNkNGYzZDQyODI3YzA5OGI3MDNjYTYxOWI4MGU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250
ZW50QnJlYWtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91dCB7CiAKIGNsYXNzIElubGluZUl0ZW07Citz
dHJ1Y3QgQ2FuZGlkYXRlVGV4dFJ1bkZvckJyZWFraW5nOwogCiBjbGFzcyBJbmxpbmVDb250ZW50
QnJlYWtlciB7CiBwdWJsaWM6CkBAIC0xMzQsNyArMTM1LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
c3RkOjpvcHRpb25hbDxCcmVha2luZ1Bvc2l0aW9uPiBicmVha2luZ1Bvc2l0aW9uIHsgfTsgLy8g
V2hlcmUgd2UgYWN0dWFsbHkgYnJlYWsgdGhpcyBvdmVyZmxvd2luZyBjb250ZW50LgogICAgIH07
CiAgICAgT3ZlcmZsb3dpbmdUZXh0Q29udGVudCBwcm9jZXNzT3ZlcmZsb3dpbmdDb250ZW50V2l0
aFRleHQoY29uc3QgQ29udGludW91c0NvbnRlbnQmLCBjb25zdCBMaW5lU3RhdHVzJikgY29uc3Q7
Ci0gICAgc3RkOjpvcHRpb25hbDxQYXJ0aWFsUnVuPiB0cnlCcmVha2luZ1RleHRSdW4oY29uc3Qg
Q29udGludW91c0NvbnRlbnQ6OlJ1bkxpc3QmIHJ1bnMsIHNpemVfdCBjYW5kaWRhdGVSdW5JbmRl
eCwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCwgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlv
dXRVbml0PiBhdmFpbGFibGVXaWR0aCwgYm9vbCBoYXNXcmFwT3Bwb3J0dW5pdHlBdFByZXZpb3Vz
UG9zaXRpb24pIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8UGFydGlhbFJ1bj4gdHJ5QnJlYWtp
bmdUZXh0UnVuKGNvbnN0IENvbnRpbnVvdXNDb250ZW50OjpSdW5MaXN0JiBydW5zLCBjb25zdCBD
YW5kaWRhdGVUZXh0UnVuRm9yQnJlYWtpbmcmLCBJbmxpbmVMYXlvdXRVbml0IGF2YWlsYWJsZVdp
ZHRoLCBib29sIGxpbmVIYXNXcmFwT3Bwb3J0dW5pdHlBdFByZXZpb3VzUG9zaXRpb24pIGNvbnN0
OwogICAgIHN0ZDo6b3B0aW9uYWw8T3ZlcmZsb3dpbmdUZXh0Q29udGVudDo6QnJlYWtpbmdQb3Np
dGlvbj4gdHJ5QnJlYWtpbmdPdmVyZmxvd2luZ1J1bihjb25zdCBMaW5lU3RhdHVzJiwgY29uc3Qg
Q29udGludW91c0NvbnRlbnQ6OlJ1bkxpc3QmLCBzaXplX3Qgb3ZlcmZsb3dpbmdSdW5JbmRleCwg
SW5saW5lTGF5b3V0VW5pdCBub25PdmVyZmxvd2luZ0NvbnRlbnRXaWR0aCkgY29uc3Q7CiAgICAg
c3RkOjpvcHRpb25hbDxPdmVyZmxvd2luZ1RleHRDb250ZW50OjpCcmVha2luZ1Bvc2l0aW9uPiB0
cnlCcmVha2luZ1ByZXZpb3VzTm9uT3ZlcmZsb3dpbmdSdW5zKGNvbnN0IExpbmVTdGF0dXMmLCBj
b25zdCBDb250aW51b3VzQ29udGVudDo6UnVuTGlzdCYsIHNpemVfdCBvdmVyZmxvd2luZ1J1bklu
ZGV4LCBJbmxpbmVMYXlvdXRVbml0IG5vbk92ZXJmbG93aW5nQ29udGVudFdpZHRoKSBjb25zdDsK
ICAgICBzdGQ6Om9wdGlvbmFsPE92ZXJmbG93aW5nVGV4dENvbnRlbnQ6OkJyZWFraW5nUG9zaXRp
b24+IHRyeUJyZWFraW5nTmV4dE92ZXJmbG93aW5nUnVucyhjb25zdCBMaW5lU3RhdHVzJiwgY29u
c3QgQ29udGludW91c0NvbnRlbnQ6OlJ1bkxpc3QmLCBzaXplX3Qgb3ZlcmZsb3dpbmdSdW5JbmRl
eCwgSW5saW5lTGF5b3V0VW5pdCBub25PdmVyZmxvd2luZ0NvbnRlbnRXaWR0aCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdy
YXRpb25Db3ZlcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5
b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAKaW5kZXggNGQzOTExOWU5YzRiZmNkMDRmMWFiMmY2
OTczOWFjM2I1OGViNjM5MS4uNTFiYzQyMTQwY2UwMTZlY2M3ZThkZjYwNzRjMzEyYjcwNzY2ZjE0
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uQ292ZXJhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3Jh
dGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcApAQCAtNDgwLDggKzQ4MCw2IEBAIHN0
YXRpYyBPcHRpb25TZXQ8QXZvaWRhbmNlUmVhc29uPiBjYW5Vc2VGb3JSZW5kZXJJbmxpbmVDaGls
ZChjb25zdCBSZW5kZXJJbmxpbmUmCiAgICAgYXV0byYgc3R5bGUgPSByZW5kZXJJbmxpbmUuc3R5
bGUoKTsKICAgICBpZiAoc3R5bGUuYm94U2hhZG93KCkgfHwgIXN0eWxlLmhhbmdpbmdQdW5jdHVh
dGlvbigpLmlzRW1wdHkoKSkKICAgICAgICAgU0VUX1JFQVNPTl9BTkRfUkVUVVJOX0lGX05FRURF
RChDaGlsZEJveEhhc1Vuc3VwcG9ydGVkU3R5bGUsIHJlYXNvbnMsIGluY2x1ZGVSZWFzb25zKQot
ICAgIGlmIChzdHlsZS5oYXNCb3JkZXIoKSB8fCBzdHlsZS5ib3JkZXJJbWFnZSgpLmhhc0ltYWdl
KCkpCi0gICAgICAgIFNFVF9SRUFTT05fQU5EX1JFVFVSTl9JRl9ORUVERUQoSW5saW5lQm94SGFz
Qm9yZGVyT3JCb3JkZXJJbWFnZSwgcmVhc29ucywgaW5jbHVkZVJlYXNvbnMpOwogICAgIGlmIChz
dHlsZS5oYXNCYWNrZ3JvdW5kKCkpCiAgICAgICAgIFNFVF9SRUFTT05fQU5EX1JFVFVSTl9JRl9O
RUVERUQoSW5saW5lQm94SGFzQmFja2dyb3VuZCwgcmVhc29ucywgaW5jbHVkZVJlYXNvbnMpOwog
ICAgIGlmIChzdHlsZS5iYWNrZ3JvdW5kQ2xpcCgpID09IEZpbGxCb3g6OlRleHQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441230</attachid>
            <date>2021-10-14 09:55:35 -0700</date>
            <delta_ts>2021-10-14 15:07:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231743-20211014095534.patch</filename>
            <type>text/plain</type>
            <size>24337</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTRmMWM0MzkwY2QyNWNh
ZjhiYjcxMTJiZTE1MmFkZDYxYWQxNjYzOS4uNTczNDkyYWJhOWJiMGZkNWVlZWE4OGVlMTY2MjQ5
ZWUyZGZjNDkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIxLTEwLTE0ICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtJRkNdIHRyeUJyZWFr
aW5nVGV4dFJ1biBzaG91bGQgbm90IHRha2Ugc3RkOjpudWxsb3B0ICJhdmFpbGFibGUgd2lkdGgi
IHRvIGluZGljYXRlIHRoYXQgdGhlIHJ1biBpcyBub3Qgb3ZlcmZsb3dpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTc0MworCisgICAgICAgIFJl
dmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgIExldCdzIG5vdCB1c2UgbWFnaWMg
dmFsdWUgdG8gaW5kaWNhdGUgdGhhdCB0aGUgY2FuZGlkYXRlIHJ1biBmb3IgYnJlYWtpbmcgZG9l
cyBub3Qgb3ZlcmZsb3cgdGhlIGxpbmUgKGF2YWlsYWJsZSB3aWR0aCBpcyBudWxsb3B0IC0+IGlu
ZmluaXRlIGF2YWlsYWJsZSB3aWR0aCAtPiBuZXZlciBvdmVyZmxvdykuCisKKyAgICAgICAgKiBs
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QnJlYWtlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUNvbnRlbnRCcmVha2VyOjp0cnlCcmVh
a2luZ1RleHRSdW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVDb250
ZW50QnJlYWtlcjo6dHJ5QnJlYWtpbmdPdmVyZmxvd2luZ1J1biBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OklubGluZUNvbnRlbnRCcmVha2VyOjp0cnlCcmVha2luZ1ByZXZpb3Vz
Tm9uT3ZlcmZsb3dpbmdSdW5zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5s
aW5lQ29udGVudEJyZWFrZXI6OnRyeUJyZWFraW5nTmV4dE92ZXJmbG93aW5nUnVucyBjb25zdCk6
CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVu
dEJyZWFrZXIuaDoKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRp
b25Db3ZlcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6Y2Fu
VXNlRm9yUmVuZGVySW5saW5lQ2hpbGQpOgorCiAyMDIxLTEwLTEzICBBbGFuIEJ1anRhcyAgPHph
bGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIFVzZSB0aGUgbGluZS1nYXAgZm9u
dCBtZXRyaWNzIHRvIGNvbXB1dGUgdGhlIGxheW91dCBib3VuZHMgZm9yIGlubGluZSBib3hlcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lQ29udGVudEJyZWFrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuY3BwCmluZGV4IDE0NmIy
NWY5OTljMjEzODkxN2Q1ODAzNDMyYjI3YjE5ZWI2M2I4NTIuLmQ3ZGViMjMxYWYxZDc1ZGYwMTQ4
NDQxYjY2Njc3N2ExZWE0ZDJmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250
ZW50QnJlYWtlci5jcHAKQEAgLTI5NywxMiArMjk3LDE0OSBAQCBzdGF0aWMgYm9vbCBpc1dyYXBw
YWJsZVJ1bihjb25zdCBJbmxpbmVDb250ZW50QnJlYWtlcjo6Q29udGludW91c0NvbnRlbnQ6OlJ1
biYgcgogICAgIHJldHVybiBUZXh0VXRpbDo6aXNXcmFwcGluZ0FsbG93ZWQocnVuLnN0eWxlKTsK
IH0KIAorc3RydWN0IENhbmRpZGF0ZVRleHRSdW5Gb3JCcmVha2luZyB7CisgICAgc2l6ZV90IGlu
ZGV4IHsgMCB9OworICAgIGJvb2wgaXNPdmVyZmxvd2luZ1J1biB7IHRydWUgfTsKKyAgICBJbmxp
bmVMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0IHsgMCB9OworfTsKK3N0ZDo6b3B0aW9uYWw8SW5saW5l
Q29udGVudEJyZWFrZXI6OlBhcnRpYWxSdW4+IElubGluZUNvbnRlbnRCcmVha2VyOjp0cnlCcmVh
a2luZ1RleHRSdW4oY29uc3QgQ29udGludW91c0NvbnRlbnQ6OlJ1bkxpc3QmIHJ1bnMsIGNvbnN0
IENhbmRpZGF0ZVRleHRSdW5Gb3JCcmVha2luZyYgY2FuZGlkYXRlVGV4dFJ1biwgSW5saW5lTGF5
b3V0VW5pdCBhdmFpbGFibGVXaWR0aCwgYm9vbCBsaW5lSGFzV3JhcE9wcG9ydHVuaXR5QXRQcmV2
aW91c1Bvc2l0aW9uKSBjb25zdAoreworICAgIGF1dG8mIGNhbmRpZGF0ZVJ1biA9IHJ1bnNbY2Fu
ZGlkYXRlVGV4dFJ1bi5pbmRleF07CisgICAgQVNTRVJUKGNhbmRpZGF0ZVJ1bi5pbmxpbmVJdGVt
LmlzVGV4dCgpKTsKKyAgICBhdXRvJiBpbmxpbmVUZXh0SXRlbSA9IGRvd25jYXN0PElubGluZVRl
eHRJdGVtPihjYW5kaWRhdGVSdW4uaW5saW5lSXRlbSk7CisgICAgYXV0byYgc3R5bGUgPSBjYW5k
aWRhdGVSdW4uc3R5bGU7CisgICAgYXV0byBsaW5lSGFzUm9vbUZvckNvbnRlbnQgPSBhdmFpbGFi
bGVXaWR0aCA+IDA7CisKKyAgICBhdXRvIGJyZWFrUnVsZXMgPSB3b3JkQnJlYWtCZWhhdmlvcihz
dHlsZSwgbGluZUhhc1dyYXBPcHBvcnR1bml0eUF0UHJldmlvdXNQb3NpdGlvbik7CisgICAgaWYg
KGJyZWFrUnVsZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byYg
Zm9udENhc2NhZGUgPSBzdHlsZS5mb250Q2FzY2FkZSgpOworICAgIGlmIChicmVha1J1bGVzLmNv
bnRhaW5zKFdvcmRCcmVha1J1bGU6OkF0QXJiaXRyYXJ5UG9zaXRpb25XaXRoaW5Xb3JkcykpIHsK
KyAgICAgICAgYXV0byB0cnlCcmVha2luZ0F0QXJiaXRyYXJ5UG9zaXRpb25XaXRoaW5Xb3JkcyA9
IFsmXSgpIC0+IHN0ZDo6b3B0aW9uYWw8UGFydGlhbFJ1bj4geworICAgICAgICAgICAgLy8gQnJl
YWtpbmcgaXMgYWxsb3dlZCB3aXRoaW4g4oCcd29yZHPigJ06IHNwZWNpZmljYWxseSwgaW4gYWRk
aXRpb24gdG8gc29mdCB3cmFwIG9wcG9ydHVuaXRpZXMgYWxsb3dlZCBmb3Igbm9ybWFsLCBhbnkg
dHlwb2dyYXBoaWMgbGV0dGVyIHVuaXRzCisgICAgICAgICAgICAvLyBJdCBkb2VzIG5vdCBhZmZl
Y3QgcnVsZXMgZ292ZXJuaW5nIHRoZSBzb2Z0IHdyYXAgb3Bwb3J0dW5pdGllcyBjcmVhdGVkIGJ5
IHdoaXRlIHNwYWNlLiBIeXBoZW5hdGlvbiBpcyBub3QgYXBwbGllZC4KKyAgICAgICAgICAgIEFT
U0VSVCghYnJlYWtSdWxlcy5jb250YWlucyhXb3JkQnJlYWtSdWxlOjpBdEh5cGhlbmF0aW9uT3Bw
b3J0dW5pdGllcykpOworICAgICAgICAgICAgaWYgKGlubGluZVRleHRJdGVtLmlzV2hpdGVzcGFj
ZSgpKSB7CisgICAgICAgICAgICAgICAgLy8gQXRBcmJpdHJhcnlQb3NpdGlvbldpdGhpbldvcmRz
IGRvZXMgbm90IGFmZmVjdCB0aGUgYnJlYWtpbmcgb3Bwb3J0dW5pdGllcyBhcm91bmQgd2hpdGVz
cGFjZS4KKyAgICAgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAoIWlubGluZVRleHRJdGVtLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAg
Ly8gRW1wdHkgdGV4dCBydW5zIG1heSBiZSBicmVha2FibGUgYmFzZWQgb24gc3R5bGUsIGJ1dCBp
biBwcmFjdGljZSB3ZSBjYW4ndCByZWFsbHkgc3BsaXQgdGhlbSBhbnkgZnVydGhlci4KKyAgICAg
ICAgICAgICAgICByZXR1cm4gUGFydGlhbFJ1biB7IH07CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGlmICghY2FuZGlkYXRlVGV4dFJ1bi5pc092ZXJmbG93aW5nUnVuKSB7CisgICAgICAg
ICAgICAgICAgLy8gV2hlbiB0aGUgcnVuIGNhbiBiZSBzcGxpdCBhdCBhcmJpdHJhcnkgcG9zaXRp
b24gd2Ugd291bGQgbm9ybWFsbHkganVzdCByZXR1cm4gdGhlIGVudGlyZSBydW4gd2hlbiBpdCBp
cyBpbnRlbmRlZCB0byBmaXQgb24gdGhlIGxpbmUKKyAgICAgICAgICAgICAgICAvLyBidXQgaGVy
ZSB3ZSBoYXZlIHRvIGNoZWNrIGZvciBtaWQtd29yZCBicmVhay4KKyAgICAgICAgICAgICAgICBh
dXRvIG5leHRJbmRleCA9IG5leHRUZXh0UnVuSW5kZXgocnVucywgY2FuZGlkYXRlVGV4dFJ1bi5p
bmRleCk7CisgICAgICAgICAgICAgICAgaWYgKCFuZXh0SW5kZXggfHwgIWRvd25jYXN0PElubGlu
ZVRleHRJdGVtPihydW5zWypuZXh0SW5kZXhdLmlubGluZUl0ZW0pLmlzV2hpdGVzcGFjZSgpKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gUGFydGlhbFJ1biB7IGlubGluZVRleHRJdGVtLmxl
bmd0aCgpLCBUZXh0VXRpbDo6d2lkdGgoaW5saW5lVGV4dEl0ZW0sIGZvbnRDYXNjYWRlLCBjYW5k
aWRhdGVUZXh0UnVuLmxvZ2ljYWxMZWZ0KSB9OworICAgICAgICAgICAgICAgIC8vIFdlJ3ZlIGdv
dCByb29tIGZvciB0aGUgcnVuIGJ1dCB3ZSBoYXZlIHRvIHRyeSB0byBicmVhayBpdCBtaWQtd29y
ZC4KKyAgICAgICAgICAgICAgICBpZiAoaW5saW5lVGV4dEl0ZW0ubGVuZ3RoKCkgPT0gMSkgewor
ICAgICAgICAgICAgICAgICAgICAvLyBXZSBjYW4ndCBtaWQtd29yZCBicmVhayBhIHNpbmdsZSBj
aGFyYWN0ZXIuCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGF1dG8gc3RhcnRQb3NpdGlvbiA9IGlubGluZVRleHRJdGVt
LnN0YXJ0KCk7CisgICAgICAgICAgICAgICAgYXV0byBlbmRQb3NpdGlvbiA9IGlubGluZVRleHRJ
dGVtLmVuZCgpIC0gMTsKKyAgICAgICAgICAgICAgICByZXR1cm4gUGFydGlhbFJ1biB7IGlubGlu
ZVRleHRJdGVtLmxlbmd0aCgpIC0gMSwgVGV4dFV0aWw6OndpZHRoKGlubGluZVRleHRJdGVtLCBm
b250Q2FzY2FkZSwgc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24sIGNhbmRpZGF0ZVRleHRSdW4u
bG9naWNhbExlZnQpIH07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghbGluZUhh
c1Jvb21Gb3JDb250ZW50KSB7CisgICAgICAgICAgICAgICAgYXV0byBwcmV2aW91c0luZGV4ID0g
cHJldmlvdXNUZXh0UnVuSW5kZXgocnVucywgY2FuZGlkYXRlVGV4dFJ1bi5pbmRleCk7CisgICAg
ICAgICAgICAgICAgaWYgKCFwcmV2aW91c0luZGV4IHx8ICFkb3duY2FzdDxJbmxpbmVUZXh0SXRl
bT4ocnVuc1sqcHJldmlvdXNJbmRleF0uaW5saW5lSXRlbSkuaXNXaGl0ZXNwYWNlKCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgLy8gRmFzdCBwYXRoIGZvciBjYXNlcyB3aGVuIHRoZXJlJ3Mgbm8g
cm9vbSBhdCBhbGwuIFdlIGNhbiBicmVhayB0aGlzIGNvbnRlbnQgYXQgdGhlIHN0YXJ0LgorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gUGFydGlhbFJ1biB7IH07CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGlmIChpbmxpbmVUZXh0SXRlbS5sZW5ndGgoKSA9PSAxKSB7Cisg
ICAgICAgICAgICAgICAgICAgIC8vIFdlIGNhbid0IG1pZC13b3JkIGJyZWFrIGEgc2luZ2xlIGNo
YXJhY3Rlci4KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgYXV0byBzdGFydFBvc2l0aW9uID0gaW5saW5lVGV4dEl0ZW0u
c3RhcnQoKSArIDE7CisgICAgICAgICAgICAgICAgYXV0byBlbmRQb3NpdGlvbiA9IGlubGluZVRl
eHRJdGVtLmVuZCgpOworICAgICAgICAgICAgICAgIHJldHVybiBQYXJ0aWFsUnVuIHsgaW5saW5l
VGV4dEl0ZW0ubGVuZ3RoKCkgLSAxLCBUZXh0VXRpbDo6d2lkdGgoaW5saW5lVGV4dEl0ZW0sIGZv
bnRDYXNjYWRlLCBzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbiwgY2FuZGlkYXRlVGV4dFJ1bi5s
b2dpY2FsTGVmdCkgfTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGF1dG8gbWlkV29yZEJy
ZWFrID0gVGV4dFV0aWw6Om1pZFdvcmRCcmVhayhpbmxpbmVUZXh0SXRlbSwgZm9udENhc2NhZGUs
IGNhbmRpZGF0ZVJ1bi5sb2dpY2FsV2lkdGgsIGF2YWlsYWJsZVdpZHRoLCBjYW5kaWRhdGVUZXh0
UnVuLmxvZ2ljYWxMZWZ0KTsKKyAgICAgICAgICAgIHJldHVybiBQYXJ0aWFsUnVuIHsgbWlkV29y
ZEJyZWFrLmxlbmd0aCwgbWlkV29yZEJyZWFrLmxvZ2ljYWxXaWR0aCB9OworICAgICAgICB9Owor
ICAgICAgICByZXR1cm4gdHJ5QnJlYWtpbmdBdEFyYml0cmFyeVBvc2l0aW9uV2l0aGluV29yZHMo
KTsKKyAgICB9CisKKyAgICBpZiAoYnJlYWtSdWxlcy5jb250YWlucyhXb3JkQnJlYWtSdWxlOjpB
dEh5cGhlbmF0aW9uT3Bwb3J0dW5pdGllcykpIHsKKyAgICAgICAgYXV0byB0cnlCcmVha2luZ0F0
SHlwaGVuYXRpb25PcHBvcnR1bml0eSA9IFsmXSgpIC0+IHN0ZDo6b3B0aW9uYWw8UGFydGlhbFJ1
bj4geworICAgICAgICAgICAgLy8gRmluZCB0aGUgaHlwaGVuIHBvc2l0aW9uIGFzIGZvbGxvd3M6
CisgICAgICAgICAgICAvLyAxLiBTcGxpdCB0aGUgdGV4dCBieSB0YWtpbmcgdGhlIGh5cGhlbiB3
aWR0aCBpbnRvIGFjY291bnQKKyAgICAgICAgICAgIC8vIDIuIEZpbmQgdGhlIGxhc3QgaHlwaGVu
IHBvc2l0aW9uIGJlZm9yZSB0aGUgc3BsaXQgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChjYW5k
aWRhdGVUZXh0UnVuLmlzT3ZlcmZsb3dpbmdSdW4gJiYgIWxpbmVIYXNSb29tRm9yQ29udGVudCkg
eworICAgICAgICAgICAgICAgIC8vIFdlIHdvbid0IGJlIGFibGUgdG8gZmluZCBoeXBoZW4gbG9j
YXRpb24gd2hlbiB0aGVyZSdzIG5vIGF2YWlsYWJsZSBzcGFjZS4KKyAgICAgICAgICAgICAgICBy
ZXR1cm4geyB9OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYXV0byBydW5MZW5ndGggPSBp
bmxpbmVUZXh0SXRlbS5sZW5ndGgoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxpbWl0QmVmb3Jl
ID0gc3R5bGUuaHlwaGVuYXRpb25MaW1pdEJlZm9yZSgpID09IFJlbmRlclN0eWxlOjppbml0aWFs
SHlwaGVuYXRpb25MaW1pdEJlZm9yZSgpID8gMCA6IHN0eWxlLmh5cGhlbmF0aW9uTGltaXRCZWZv
cmUoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxpbWl0QWZ0ZXIgPSBzdHlsZS5oeXBoZW5hdGlv
bkxpbWl0QWZ0ZXIoKSA9PSBSZW5kZXJTdHlsZTo6aW5pdGlhbEh5cGhlbmF0aW9uTGltaXRBZnRl
cigpID8gMCA6IHN0eWxlLmh5cGhlbmF0aW9uTGltaXRBZnRlcigpOworICAgICAgICAgICAgLy8g
Q2hlY2sgaWYgdGhpcyBydW4gY2FuIGFjY29tbW9kYXRlIHRoZSBiZWZvcmUvYWZ0ZXIgbGltaXRz
IGF0IGFsbCBiZWZvcmUgc3RhcnQgbWVhc3VyaW5nIHRleHQuCisgICAgICAgICAgICBpZiAobGlt
aXRCZWZvcmUgPj0gcnVuTGVuZ3RoIHx8IGxpbWl0QWZ0ZXIgPj0gcnVuTGVuZ3RoIHx8IGxpbWl0
QmVmb3JlICsgbGltaXRBZnRlciA+IHJ1bkxlbmd0aCkKKyAgICAgICAgICAgICAgICByZXR1cm4g
eyB9OworCisgICAgICAgICAgICB1bnNpZ25lZCBsZWZ0U2lkZUxlbmd0aCA9IHJ1bkxlbmd0aDsK
KyAgICAgICAgICAgIGF1dG8gaHlwaGVuV2lkdGggPSBJbmxpbmVMYXlvdXRVbml0IHsgZm9udENh
c2NhZGUud2lkdGgoVGV4dFJ1biB7IFN0cmluZ1ZpZXcgeyBzdHlsZS5oeXBoZW5TdHJpbmcoKSB9
IH0pIH07CisgICAgICAgICAgICBpZiAoY2FuZGlkYXRlVGV4dFJ1bi5pc092ZXJmbG93aW5nUnVu
KSB7CisgICAgICAgICAgICAgICAgYXV0byBhdmFpbGFibGVXaWR0aEV4Y2x1ZGluZ0h5cGhlbiA9
IGF2YWlsYWJsZVdpZHRoIC0gaHlwaGVuV2lkdGg7CisgICAgICAgICAgICAgICAgaWYgKGF2YWls
YWJsZVdpZHRoRXhjbHVkaW5nSHlwaGVuIDw9IDAgfHwgIWVub3VnaFdpZHRoRm9ySHlwaGVuYXRp
b24oYXZhaWxhYmxlV2lkdGhFeGNsdWRpbmdIeXBoZW4sIGZvbnRDYXNjYWRlLnBpeGVsU2l6ZSgp
KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgICAgICAgICBsZWZ0
U2lkZUxlbmd0aCA9IFRleHRVdGlsOjptaWRXb3JkQnJlYWsoaW5saW5lVGV4dEl0ZW0sIGZvbnRD
YXNjYWRlLCBjYW5kaWRhdGVSdW4ubG9naWNhbFdpZHRoLCBhdmFpbGFibGVXaWR0aEV4Y2x1ZGlu
Z0h5cGhlbiwgY2FuZGlkYXRlVGV4dFJ1bi5sb2dpY2FsTGVmdCkubGVuZ3RoOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgaWYgKGxlZnRTaWRlTGVuZ3RoIDwgbGltaXRCZWZvcmUpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgICAgIC8vIEFkanVzdCBiZWZvcmUgaW5k
ZXggdG8gYWNjb21tb2RhdGUgdGhlIGxpbWl0LWFmdGVyIHZhbHVlIChpdCdzIHRoZSBsYXN0IHBv
dGVudGlhbCBoeXBoZW4gbG9jYXRpb24gaW4gdGhpcyBydW4pLgorICAgICAgICAgICAgYXV0byBo
eXBoZW5CZWZvcmUgPSBzdGQ6Om1pbihsZWZ0U2lkZUxlbmd0aCwgcnVuTGVuZ3RoIC0gbGltaXRB
ZnRlcikgKyAxOworICAgICAgICAgICAgdW5zaWduZWQgaHlwaGVuTG9jYXRpb24gPSBsYXN0SHlw
aGVuTG9jYXRpb24oU3RyaW5nVmlldyhpbmxpbmVUZXh0SXRlbS5pbmxpbmVUZXh0Qm94KCkuY29u
dGVudCgpKS5zdWJzdHJpbmcoaW5saW5lVGV4dEl0ZW0uc3RhcnQoKSwgaW5saW5lVGV4dEl0ZW0u
bGVuZ3RoKCkpLCBoeXBoZW5CZWZvcmUsIHN0eWxlLmNvbXB1dGVkTG9jYWxlKCkpOworICAgICAg
ICAgICAgaWYgKCFoeXBoZW5Mb2NhdGlvbiB8fCBoeXBoZW5Mb2NhdGlvbiA8IGxpbWl0QmVmb3Jl
KQorICAgICAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAgICAvLyBoeXBoZW5Mb2Nh
dGlvbiBpcyByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhpcyBJbmxpbmVJdGVtVGV4dC4KKyAg
ICAgICAgICAgIEFTU0VSVChpbmxpbmVUZXh0SXRlbS5zdGFydCgpICsgaHlwaGVuTG9jYXRpb24g
PCBpbmxpbmVUZXh0SXRlbS5lbmQoKSk7CisgICAgICAgICAgICBhdXRvIHRyYWlsaW5nUGFydGlh
bFJ1bldpZHRoV2l0aEh5cGhlbiA9IFRleHRVdGlsOjp3aWR0aChpbmxpbmVUZXh0SXRlbSwgZm9u
dENhc2NhZGUsIGlubGluZVRleHRJdGVtLnN0YXJ0KCksIGlubGluZVRleHRJdGVtLnN0YXJ0KCkg
KyBoeXBoZW5Mb2NhdGlvbiwgY2FuZGlkYXRlVGV4dFJ1bi5sb2dpY2FsTGVmdCk7CisgICAgICAg
ICAgICByZXR1cm4gUGFydGlhbFJ1biB7IGh5cGhlbkxvY2F0aW9uLCB0cmFpbGluZ1BhcnRpYWxS
dW5XaWR0aFdpdGhIeXBoZW4sIGh5cGhlbldpZHRoIH07CisgICAgICAgIH07CisgICAgICAgIGlm
IChhdXRvIHBhcnRpYWxSdW4gPSB0cnlCcmVha2luZ0F0SHlwaGVuYXRpb25PcHBvcnR1bml0eSgp
KQorICAgICAgICAgICAgcmV0dXJuIHBhcnRpYWxSdW47CisgICAgfQorCisgICAgaWYgKGJyZWFr
UnVsZXMuY29udGFpbnMoV29yZEJyZWFrUnVsZTo6QXRBcmJpdHJhcnlQb3NpdGlvbikpIHsKKyAg
ICAgICAgYXV0byB0cnlCcmVha2luZ0F0QXJiaXRyYXJ5UG9zaXRpb24gPSBbJl0oKSAtPiBQYXJ0
aWFsUnVuIHsKKyAgICAgICAgICAgIGlmICghaW5saW5lVGV4dEl0ZW0ubGVuZ3RoKCkpIHsKKyAg
ICAgICAgICAgICAgICAvLyBFbXB0eSB0ZXh0IHJ1bnMgbWF5IGJlIGJyZWFrYWJsZSBiYXNlZCBv
biBzdHlsZSwgYnV0IGluIHByYWN0aWNlIHdlIGNhbid0IHJlYWxseSBzcGxpdCB0aGVtIGFueSBm
dXJ0aGVyLgorICAgICAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAoIWNhbmRpZGF0ZVRleHRSdW4uaXNPdmVyZmxvd2luZ1J1bikgeworICAgICAg
ICAgICAgICAgIC8vIFdoZW4gdGhlIHJ1biBjYW4gYmUgc3BsaXQgYXQgYXJiaXRyYXJ5IHBvc2l0
aW9uIGxldCdzIGp1c3QgcmV0dXJuIHRoZSBlbnRpcmUgcnVuIHdoZW4gaXQgaXMgaW50ZW5kZWQg
dG8gZml0IG9uIHRoZSBsaW5lLgorICAgICAgICAgICAgICAgIEFTU0VSVChpbmxpbmVUZXh0SXRl
bS5sZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgYXV0byB0cmFpbGluZ1BhcnRpYWxSdW5XaWR0
aCA9IFRleHRVdGlsOjp3aWR0aChpbmxpbmVUZXh0SXRlbSwgZm9udENhc2NhZGUsIGNhbmRpZGF0
ZVRleHRSdW4ubG9naWNhbExlZnQpOworICAgICAgICAgICAgICAgIHJldHVybiB7IGlubGluZVRl
eHRJdGVtLmxlbmd0aCgpLCB0cmFpbGluZ1BhcnRpYWxSdW5XaWR0aCB9OworICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKCFsaW5lSGFzUm9vbUZvckNvbnRlbnQpIHsKKyAgICAgICAgICAg
ICAgICAvLyBGYXN0IHBhdGggZm9yIGNhc2VzIHdoZW4gdGhlcmUncyBubyByb29tIGF0IGFsbC4g
VGhlIGNvbnRlbnQgaXMgYnJlYWthYmxlIGJ1dCB3ZSBkb24ndCBoYXZlIHNwYWNlIGZvciBpdC4K
KyAgICAgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICAgICAgfQorICAgICAgICAgICAg
YXV0byBtaWRXb3JkQnJlYWsgPSBUZXh0VXRpbDo6bWlkV29yZEJyZWFrKGlubGluZVRleHRJdGVt
LCBmb250Q2FzY2FkZSwgY2FuZGlkYXRlUnVuLmxvZ2ljYWxXaWR0aCwgYXZhaWxhYmxlV2lkdGgs
IGNhbmRpZGF0ZVRleHRSdW4ubG9naWNhbExlZnQpOworICAgICAgICAgICAgcmV0dXJuIHsgbWlk
V29yZEJyZWFrLmxlbmd0aCwgbWlkV29yZEJyZWFrLmxvZ2ljYWxXaWR0aCB9OworICAgICAgICB9
OworICAgICAgICAvLyBXaXRoIGFyYml0cmFyeSBicmVha2luZyB0aGVyZSdzIGFsd2F5cyBhIHZh
bGlkIGJyZWFraW5nIHBvc2l0aW9uIChldmVuIGlmIGl0IGlzIGJlZm9yZSB0aGUgZmlyc3QgcG9z
aXRpb24pLgorICAgICAgICByZXR1cm4gdHJ5QnJlYWtpbmdBdEFyYml0cmFyeVBvc2l0aW9uKCk7
CisgICAgfQorCisgICAgcmV0dXJuIHsgfTsKK30KKwogc3RkOjpvcHRpb25hbDxJbmxpbmVDb250
ZW50QnJlYWtlcjo6T3ZlcmZsb3dpbmdUZXh0Q29udGVudDo6QnJlYWtpbmdQb3NpdGlvbj4gSW5s
aW5lQ29udGVudEJyZWFrZXI6OnRyeUJyZWFraW5nT3ZlcmZsb3dpbmdSdW4oY29uc3QgTGluZVN0
YXR1cyYgbGluZVN0YXR1cywgY29uc3QgQ29udGludW91c0NvbnRlbnQ6OlJ1bkxpc3QmIHJ1bnMs
IHNpemVfdCBvdmVyZmxvd2luZ1J1bkluZGV4LCBJbmxpbmVMYXlvdXRVbml0IG5vbk92ZXJmbG93
aW5nQ29udGVudFdpZHRoKSBjb25zdAogewogICAgIGF1dG8gb3ZlcmZsb3dpbmdSdW4gPSBydW5z
W292ZXJmbG93aW5nUnVuSW5kZXhdOwogICAgIGlmICghaXNXcmFwcGFibGVSdW4ob3ZlcmZsb3dp
bmdSdW4pKQogICAgICAgICByZXR1cm4geyB9OwotICAgIGF1dG8gcGFydGlhbE92ZXJmbG93aW5n
UnVuID0gdHJ5QnJlYWtpbmdUZXh0UnVuKHJ1bnMsIG92ZXJmbG93aW5nUnVuSW5kZXgsIGxpbmVT
dGF0dXMuY29udGVudExvZ2ljYWxSaWdodCArIG5vbk92ZXJmbG93aW5nQ29udGVudFdpZHRoLCBz
dGQ6Om1heCgwLjBmLCBsaW5lU3RhdHVzLmF2YWlsYWJsZVdpZHRoIC0gbm9uT3ZlcmZsb3dpbmdD
b250ZW50V2lkdGgpLCBsaW5lU3RhdHVzLmhhc1dyYXBPcHBvcnR1bml0eUF0UHJldmlvdXNQb3Np
dGlvbik7CisKKyAgICBhdXRvIGF2aWxhYmxlV2lkdGggPSBzdGQ6Om1heCgwLjBmLCBsaW5lU3Rh
dHVzLmF2YWlsYWJsZVdpZHRoIC0gbm9uT3ZlcmZsb3dpbmdDb250ZW50V2lkdGgpOworICAgIGF1
dG8gcGFydGlhbE92ZXJmbG93aW5nUnVuID0gdHJ5QnJlYWtpbmdUZXh0UnVuKHJ1bnMsIHsgb3Zl
cmZsb3dpbmdSdW5JbmRleCwgdHJ1ZSwgbGluZVN0YXR1cy5jb250ZW50TG9naWNhbFJpZ2h0ICsg
bm9uT3ZlcmZsb3dpbmdDb250ZW50V2lkdGggfSwgYXZpbGFibGVXaWR0aCwgbGluZVN0YXR1cy5o
YXNXcmFwT3Bwb3J0dW5pdHlBdFByZXZpb3VzUG9zaXRpb24pOwogICAgIGlmICghcGFydGlhbE92
ZXJmbG93aW5nUnVuKQogICAgICAgICByZXR1cm4geyB9OwogICAgIGlmIChwYXJ0aWFsT3ZlcmZs
b3dpbmdSdW4tPmxlbmd0aCkKQEAgLTMyNCw3ICs0NjEsOCBAQCBzdGQ6Om9wdGlvbmFsPElubGlu
ZUNvbnRlbnRCcmVha2VyOjpPdmVyZmxvd2luZ1RleHRDb250ZW50OjpCcmVha2luZ1Bvc2l0aW9u
PiBJbgogICAgICAgICBpZiAoIWlzV3JhcHBhYmxlUnVuKHJ1bikpCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgQVNTRVJUKHJ1bi5pbmxpbmVJdGVtLmlzVGV4dCgpKTsKLSAgICAgICAg
aWYgKGF1dG8gcGFydGlhbFJ1biA9IHRyeUJyZWFraW5nVGV4dFJ1bihydW5zLCBpbmRleCwgbGlu
ZVN0YXR1cy5jb250ZW50TG9naWNhbFJpZ2h0ICsgcHJldmlvdXNDb250ZW50V2lkdGgsIHsgfSwg
bGluZVN0YXR1cy5oYXNXcmFwT3Bwb3J0dW5pdHlBdFByZXZpb3VzUG9zaXRpb24pKSB7CisgICAg
ICAgIGF1dG8gYXZpbGFibGVXaWR0aCA9IHN0ZDo6bWF4KDAuMGYsIGxpbmVTdGF0dXMuYXZhaWxh
YmxlV2lkdGggLSBwcmV2aW91c0NvbnRlbnRXaWR0aCk7CisgICAgICAgIGlmIChhdXRvIHBhcnRp
YWxSdW4gPSB0cnlCcmVha2luZ1RleHRSdW4ocnVucywgeyBpbmRleCwgZmFsc2UsIGxpbmVTdGF0
dXMuY29udGVudExvZ2ljYWxSaWdodCArIHByZXZpb3VzQ29udGVudFdpZHRoIH0sIGF2aWxhYmxl
V2lkdGgsIGxpbmVTdGF0dXMuaGFzV3JhcE9wcG9ydHVuaXR5QXRQcmV2aW91c1Bvc2l0aW9uKSkg
ewogICAgICAgICAgICAgLy8gV2Uga25vdyB0aGlzIHJ1biBmaXRzLCBzbyBpZiBicmVha2luZyBp
cyBhbGxvd2VkIG9uIHRoZSBydW4sIGl0IHNob3VsZCByZXR1cm4gYSBub24tZW1wdHkgbGVmdC1z
aWRlCiAgICAgICAgICAgICAvLyBzaW5jZSBpdCdzIGVpdGhlciBhdCBoeXBoZW4gcG9zaXRpb24g
b3IgdGhlIGVudGlyZSBydW4gaXMgcmV0dXJuZWQuCiAgICAgICAgICAgICBBU1NFUlQocGFydGlh
bFJ1bi0+bGVuZ3RoKTsKQEAgLTM0Niw3ICs0ODQsNyBAQCBzdGQ6Om9wdGlvbmFsPElubGluZUNv
bnRlbnRCcmVha2VyOjpPdmVyZmxvd2luZ1RleHRDb250ZW50OjpCcmVha2luZ1Bvc2l0aW9uPiBJ
bgogICAgICAgICB9CiAgICAgICAgIEFTU0VSVChydW4uaW5saW5lSXRlbS5pc1RleHQoKSk7CiAg
ICAgICAgIC8vIEF0IHRoaXMgcG9pbnQgdGhlIGF2YWlsYWJsZSBzcGFjZSBpcyB6ZXJvLiBMZXQn
cyB0cnkgdGhlIGJyZWFrIHRoZXNlIG92ZXJmbG93aW5nIHNldCBvZiBydW5zIGF0IHRoZSBlYXJs
aWVzdCBwb3NzaWJsZS4KLSAgICAgICAgaWYgKGF1dG8gcGFydGlhbFJ1biA9IHRyeUJyZWFraW5n
VGV4dFJ1bihydW5zLCBpbmRleCwgbGluZVN0YXR1cy5jb250ZW50TG9naWNhbFJpZ2h0ICsgbmV4
dENvbnRlbnRXaWR0aCwgMCwgbGluZVN0YXR1cy5oYXNXcmFwT3Bwb3J0dW5pdHlBdFByZXZpb3Vz
UG9zaXRpb24pKSB7CisgICAgICAgIGlmIChhdXRvIHBhcnRpYWxSdW4gPSB0cnlCcmVha2luZ1Rl
eHRSdW4ocnVucywgeyBpbmRleCwgdHJ1ZSwgbGluZVN0YXR1cy5jb250ZW50TG9naWNhbFJpZ2h0
ICsgbmV4dENvbnRlbnRXaWR0aCB9LCAwLCBsaW5lU3RhdHVzLmhhc1dyYXBPcHBvcnR1bml0eUF0
UHJldmlvdXNQb3NpdGlvbikpIHsKICAgICAgICAgICAgIC8vIDxzcGFuPnVuYnJlYWthYmxlX2Fu
ZF9vdmVyZmxvd3M8c3BhbiBzdHlsZT0id29yZC1icmVhazogYnJlYWstYWxsIj5icmVha2FibGU8
L3NwYW4+CiAgICAgICAgICAgICAvLyBUaGUgcGFydGlhbCBydW4gbGVuZ3RoIGNvdWxkIHZlcnkg
d2VsbCBiZSAwIG1lYW5pbmcgdGhlIHRyYWlsaW5nIHJ1biBpcyBhY3R1YWxseSB0aGUgb3ZlcmZs
b3dpbmcgcnVuIChzZWUgYWJvdmUgaW4gdGhlIGV4YW1wbGUpLgogICAgICAgICAgICAgaWYgKHBh
cnRpYWxSdW4tPmxlbmd0aCkgewpAQCAtNDQxLDEzMyArNTc5LDYgQEAgT3B0aW9uU2V0PElubGlu
ZUNvbnRlbnRCcmVha2VyOjpXb3JkQnJlYWtSdWxlPiBJbmxpbmVDb250ZW50QnJlYWtlcjo6d29y
ZEJyZWFrQmUKICAgICByZXR1cm4gaW5jbHVkZUh5cGhlbmF0aW9uSWZBbGxvd2VkKHsgfSk7CiB9
CiAKLXN0ZDo6b3B0aW9uYWw8SW5saW5lQ29udGVudEJyZWFrZXI6OlBhcnRpYWxSdW4+IElubGlu
ZUNvbnRlbnRCcmVha2VyOjp0cnlCcmVha2luZ1RleHRSdW4oY29uc3QgQ29udGludW91c0NvbnRl
bnQ6OlJ1bkxpc3QmIHJ1bnMsIHNpemVfdCBjYW5kaWRhdGVSdW5JbmRleCwgSW5saW5lTGF5b3V0
VW5pdCBsb2dpY2FsTGVmdCwgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBhdmFpbGFi
bGVXaWR0aCwgYm9vbCBoYXNXcmFwT3Bwb3J0dW5pdHlBdFByZXZpb3VzUG9zaXRpb24pIGNvbnN0
Ci17Ci0gICAgYXV0byYgY2FuZGlkYXRlUnVuID0gcnVuc1tjYW5kaWRhdGVSdW5JbmRleF07Ci0g
ICAgQVNTRVJUKGNhbmRpZGF0ZVJ1bi5pbmxpbmVJdGVtLmlzVGV4dCgpKTsKLSAgICBhdXRvJiBp
bmxpbmVUZXh0SXRlbSA9IGRvd25jYXN0PElubGluZVRleHRJdGVtPihjYW5kaWRhdGVSdW4uaW5s
aW5lSXRlbSk7Ci0gICAgYXV0byYgc3R5bGUgPSBjYW5kaWRhdGVSdW4uc3R5bGU7Ci0gICAgYXV0
byBhdmFpbGFibGVTcGFjZUlzSW5maW5pdGUgPSAhYXZhaWxhYmxlV2lkdGguaGFzX3ZhbHVlKCk7
Ci0KLSAgICBhdXRvIGJyZWFrUnVsZXMgPSB3b3JkQnJlYWtCZWhhdmlvcihzdHlsZSwgaGFzV3Jh
cE9wcG9ydHVuaXR5QXRQcmV2aW91c1Bvc2l0aW9uKTsKLSAgICBpZiAoYnJlYWtSdWxlcy5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiB7IH07Ci0KLSAgICBhdXRvJiBmb250Q2FzY2FkZSA9IHN0
eWxlLmZvbnRDYXNjYWRlKCk7Ci0gICAgaWYgKGJyZWFrUnVsZXMuY29udGFpbnMoV29yZEJyZWFr
UnVsZTo6QXRBcmJpdHJhcnlQb3NpdGlvbldpdGhpbldvcmRzKSkgewotICAgICAgICAvLyBCcmVh
a2luZyBpcyBhbGxvd2VkIHdpdGhpbiDigJx3b3Jkc+KAnTogc3BlY2lmaWNhbGx5LCBpbiBhZGRp
dGlvbiB0byBzb2Z0IHdyYXAgb3Bwb3J0dW5pdGllcyBhbGxvd2VkIGZvciBub3JtYWwsIGFueSB0
eXBvZ3JhcGhpYyBsZXR0ZXIgdW5pdHMKLSAgICAgICAgLy8gSXQgZG9lcyBub3QgYWZmZWN0IHJ1
bGVzIGdvdmVybmluZyB0aGUgc29mdCB3cmFwIG9wcG9ydHVuaXRpZXMgY3JlYXRlZCBieSB3aGl0
ZSBzcGFjZS4gSHlwaGVuYXRpb24gaXMgbm90IGFwcGxpZWQuCi0gICAgICAgIEFTU0VSVCghYnJl
YWtSdWxlcy5jb250YWlucyhXb3JkQnJlYWtSdWxlOjpBdEh5cGhlbmF0aW9uT3Bwb3J0dW5pdGll
cykpOwotICAgICAgICBpZiAoaW5saW5lVGV4dEl0ZW0uaXNXaGl0ZXNwYWNlKCkpIHsKLSAgICAg
ICAgICAgIC8vIEF0QXJiaXRyYXJ5UG9zaXRpb25XaXRoaW5Xb3JkcyBkb2VzIG5vdCBhZmZlY3Qg
dGhlIGJyZWFraW5nIG9wcG9ydHVuaXRpZXMgYXJvdW5kIHdoaXRlc3BhY2UuCi0gICAgICAgICAg
ICByZXR1cm4geyB9OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFpbmxpbmVUZXh0SXRlbS5s
ZW5ndGgoKSkgewotICAgICAgICAgICAgLy8gRW1wdHkgdGV4dCBydW5zIG1heSBiZSBicmVha2Fi
bGUgYmFzZWQgb24gc3R5bGUsIGJ1dCBpbiBwcmFjdGljZSB3ZSBjYW4ndCByZWFsbHkgc3BsaXQg
dGhlbSBhbnkgZnVydGhlci4KLSAgICAgICAgICAgIHJldHVybiBQYXJ0aWFsUnVuIHsgfTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGlmIChhdmFpbGFibGVTcGFjZUlzSW5maW5pdGUpIHsKLSAgICAg
ICAgICAgIC8vIFdoZW4gdGhlIHJ1biBjYW4gYmUgc3BsaXQgYXQgYXJiaXRyYXJ5IHBvc2l0aW9u
IHdlIHdvdWxkIG5vcm1hbGx5IGp1c3QgcmV0dXJuIHRoZSBlbnRpcmUgcnVuIHdoZW4gaXQgaXMg
aW50ZW5kZWQgdG8gZml0IG9uIHRoZSBsaW5lCi0gICAgICAgICAgICAvLyBidXQgaGVyZSB3ZSBo
YXZlIHRvIGNoZWNrIGZvciBtaWQtd29yZCBicmVhay4KLSAgICAgICAgICAgIGF1dG8gbmV4dElu
ZGV4ID0gbmV4dFRleHRSdW5JbmRleChydW5zLCBjYW5kaWRhdGVSdW5JbmRleCk7Ci0gICAgICAg
ICAgICBpZiAoIW5leHRJbmRleCB8fCAhZG93bmNhc3Q8SW5saW5lVGV4dEl0ZW0+KHJ1bnNbKm5l
eHRJbmRleF0uaW5saW5lSXRlbSkuaXNXaGl0ZXNwYWNlKCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIFBhcnRpYWxSdW4geyBpbmxpbmVUZXh0SXRlbS5sZW5ndGgoKSwgVGV4dFV0aWw6OndpZHRo
KGlubGluZVRleHRJdGVtLCBmb250Q2FzY2FkZSwgbG9naWNhbExlZnQpIH07Ci0gICAgICAgICAg
ICAvLyBXZSd2ZSBnb3Qgcm9vbSBmb3IgdGhlIHJ1biBidXQgd2UgaGF2ZSB0byB0cnkgdG8gYnJl
YWsgaXQgbWlkLXdvcmQuCi0gICAgICAgICAgICBpZiAoaW5saW5lVGV4dEl0ZW0ubGVuZ3RoKCkg
PT0gMSkgewotICAgICAgICAgICAgICAgIC8vIFdlIGNhbid0IG1pZC13b3JkIGJyZWFrIGEgc2lu
Z2xlIGNoYXJhY3Rlci4KLSAgICAgICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgYXV0byBzdGFydFBvc2l0aW9uID0gaW5saW5lVGV4dEl0ZW0uc3RhcnQo
KTsKLSAgICAgICAgICAgIGF1dG8gZW5kUG9zaXRpb24gPSBpbmxpbmVUZXh0SXRlbS5lbmQoKSAt
IDE7Ci0gICAgICAgICAgICByZXR1cm4gUGFydGlhbFJ1biB7IGlubGluZVRleHRJdGVtLmxlbmd0
aCgpIC0gMSwgVGV4dFV0aWw6OndpZHRoKGlubGluZVRleHRJdGVtLCBmb250Q2FzY2FkZSwgc3Rh
cnRQb3NpdGlvbiwgZW5kUG9zaXRpb24sIGxvZ2ljYWxMZWZ0KSB9OwotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKCEqYXZhaWxhYmxlV2lkdGgpIHsKLSAgICAgICAgICAgIGF1dG8gcHJldmlvdXNJ
bmRleCA9IHByZXZpb3VzVGV4dFJ1bkluZGV4KHJ1bnMsIGNhbmRpZGF0ZVJ1bkluZGV4KTsKLSAg
ICAgICAgICAgIGlmICghcHJldmlvdXNJbmRleCB8fCAhZG93bmNhc3Q8SW5saW5lVGV4dEl0ZW0+
KHJ1bnNbKnByZXZpb3VzSW5kZXhdLmlubGluZUl0ZW0pLmlzV2hpdGVzcGFjZSgpKSB7Ci0gICAg
ICAgICAgICAgICAgLy8gRmFzdCBwYXRoIGZvciBjYXNlcyB3aGVuIHRoZXJlJ3Mgbm8gcm9vbSBh
dCBhbGwuIFdlIGNhbiBicmVhayB0aGlzIGNvbnRlbnQgYXQgdGhlIHN0YXJ0LgotICAgICAgICAg
ICAgICAgIHJldHVybiBQYXJ0aWFsUnVuIHsgfTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGlmIChpbmxpbmVUZXh0SXRlbS5sZW5ndGgoKSA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgLy8g
V2UgY2FuJ3QgbWlkLXdvcmQgYnJlYWsgYSBzaW5nbGUgY2hhcmFjdGVyLgotICAgICAgICAgICAg
ICAgIHJldHVybiB7IH07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBhdXRvIHN0YXJ0UG9z
aXRpb24gPSBpbmxpbmVUZXh0SXRlbS5zdGFydCgpICsgMTsKLSAgICAgICAgICAgIGF1dG8gZW5k
UG9zaXRpb24gPSBpbmxpbmVUZXh0SXRlbS5lbmQoKTsKLSAgICAgICAgICAgIHJldHVybiBQYXJ0
aWFsUnVuIHsgaW5saW5lVGV4dEl0ZW0ubGVuZ3RoKCkgLSAxLCBUZXh0VXRpbDo6d2lkdGgoaW5s
aW5lVGV4dEl0ZW0sIGZvbnRDYXNjYWRlLCBzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbiwgbG9n
aWNhbExlZnQpIH07Ci0gICAgICAgIH0KLSAgICAgICAgYXV0byBtaWRXb3JkQnJlYWsgPSBUZXh0
VXRpbDo6bWlkV29yZEJyZWFrKGlubGluZVRleHRJdGVtLCBmb250Q2FzY2FkZSwgY2FuZGlkYXRl
UnVuLmxvZ2ljYWxXaWR0aCwgKmF2YWlsYWJsZVdpZHRoLCBsb2dpY2FsTGVmdCk7Ci0gICAgICAg
IHJldHVybiBQYXJ0aWFsUnVuIHsgbWlkV29yZEJyZWFrLmxlbmd0aCwgbWlkV29yZEJyZWFrLmxv
Z2ljYWxXaWR0aCB9OwotICAgIH0KLQotICAgIGlmIChicmVha1J1bGVzLmNvbnRhaW5zKFdvcmRC
cmVha1J1bGU6OkF0SHlwaGVuYXRpb25PcHBvcnR1bml0aWVzKSkgewotICAgICAgICBhdXRvIHRy
eUJyZWFraW5nQXRIeXBoZW5hdGlvbk9wcG9ydHVuaXR5ID0gWyZdKCkgLT4gc3RkOjpvcHRpb25h
bDxQYXJ0aWFsUnVuPiB7Ci0gICAgICAgICAgICAvLyBGaW5kIHRoZSBoeXBoZW4gcG9zaXRpb24g
YXMgZm9sbG93czoKLSAgICAgICAgICAgIC8vIDEuIFNwbGl0IHRoZSB0ZXh0IGJ5IHRha2luZyB0
aGUgaHlwaGVuIHdpZHRoIGludG8gYWNjb3VudAotICAgICAgICAgICAgLy8gMi4gRmluZCB0aGUg
bGFzdCBoeXBoZW4gcG9zaXRpb24gYmVmb3JlIHRoZSBzcGxpdCBwb3NpdGlvbgotICAgICAgICAg
ICAgaWYgKCFhdmFpbGFibGVTcGFjZUlzSW5maW5pdGUgJiYgISphdmFpbGFibGVXaWR0aCkgewot
ICAgICAgICAgICAgICAgIC8vIFdlIHdvbid0IGJlIGFibGUgdG8gZmluZCBoeXBoZW4gbG9jYXRp
b24gd2hlbiB0aGVyZSdzIG5vIGF2YWlsYWJsZSBzcGFjZS4KLSAgICAgICAgICAgICAgICByZXR1
cm4geyB9OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYXV0byBydW5MZW5ndGggPSBpbmxp
bmVUZXh0SXRlbS5sZW5ndGgoKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxpbWl0QmVmb3JlID0g
c3R5bGUuaHlwaGVuYXRpb25MaW1pdEJlZm9yZSgpID09IFJlbmRlclN0eWxlOjppbml0aWFsSHlw
aGVuYXRpb25MaW1pdEJlZm9yZSgpID8gMCA6IHN0eWxlLmh5cGhlbmF0aW9uTGltaXRCZWZvcmUo
KTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxpbWl0QWZ0ZXIgPSBzdHlsZS5oeXBoZW5hdGlvbkxp
bWl0QWZ0ZXIoKSA9PSBSZW5kZXJTdHlsZTo6aW5pdGlhbEh5cGhlbmF0aW9uTGltaXRBZnRlcigp
ID8gMCA6IHN0eWxlLmh5cGhlbmF0aW9uTGltaXRBZnRlcigpOwotICAgICAgICAgICAgLy8gQ2hl
Y2sgaWYgdGhpcyBydW4gY2FuIGFjY29tbW9kYXRlIHRoZSBiZWZvcmUvYWZ0ZXIgbGltaXRzIGF0
IGFsbCBiZWZvcmUgc3RhcnQgbWVhc3VyaW5nIHRleHQuCi0gICAgICAgICAgICBpZiAobGltaXRC
ZWZvcmUgPj0gcnVuTGVuZ3RoIHx8IGxpbWl0QWZ0ZXIgPj0gcnVuTGVuZ3RoIHx8IGxpbWl0QmVm
b3JlICsgbGltaXRBZnRlciA+IHJ1bkxlbmd0aCkKLSAgICAgICAgICAgICAgICByZXR1cm4geyB9
OwotCi0gICAgICAgICAgICB1bnNpZ25lZCBsZWZ0U2lkZUxlbmd0aCA9IHJ1bkxlbmd0aDsKLSAg
ICAgICAgICAgIGF1dG8gaHlwaGVuV2lkdGggPSBJbmxpbmVMYXlvdXRVbml0IHsgZm9udENhc2Nh
ZGUud2lkdGgoVGV4dFJ1biB7IFN0cmluZ1ZpZXcgeyBzdHlsZS5oeXBoZW5TdHJpbmcoKSB9IH0p
IH07Ci0gICAgICAgICAgICBpZiAoIWF2YWlsYWJsZVNwYWNlSXNJbmZpbml0ZSkgewotICAgICAg
ICAgICAgICAgIGF1dG8gYXZhaWxhYmxlV2lkdGhFeGNsdWRpbmdIeXBoZW4gPSAqYXZhaWxhYmxl
V2lkdGggLSBoeXBoZW5XaWR0aDsKLSAgICAgICAgICAgICAgICBpZiAoYXZhaWxhYmxlV2lkdGhF
eGNsdWRpbmdIeXBoZW4gPD0gMCB8fCAhZW5vdWdoV2lkdGhGb3JIeXBoZW5hdGlvbihhdmFpbGFi
bGVXaWR0aEV4Y2x1ZGluZ0h5cGhlbiwgZm9udENhc2NhZGUucGl4ZWxTaXplKCkpKQotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICAgICAgICAgIGxlZnRTaWRlTGVuZ3Ro
ID0gVGV4dFV0aWw6Om1pZFdvcmRCcmVhayhpbmxpbmVUZXh0SXRlbSwgZm9udENhc2NhZGUsIGNh
bmRpZGF0ZVJ1bi5sb2dpY2FsV2lkdGgsIGF2YWlsYWJsZVdpZHRoRXhjbHVkaW5nSHlwaGVuLCBs
b2dpY2FsTGVmdCkubGVuZ3RoOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGxlZnRT
aWRlTGVuZ3RoIDwgbGltaXRCZWZvcmUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAg
ICAgICAgICAgIC8vIEFkanVzdCBiZWZvcmUgaW5kZXggdG8gYWNjb21tb2RhdGUgdGhlIGxpbWl0
LWFmdGVyIHZhbHVlIChpdCdzIHRoZSBsYXN0IHBvdGVudGlhbCBoeXBoZW4gbG9jYXRpb24gaW4g
dGhpcyBydW4pLgotICAgICAgICAgICAgYXV0byBoeXBoZW5CZWZvcmUgPSBzdGQ6Om1pbihsZWZ0
U2lkZUxlbmd0aCwgcnVuTGVuZ3RoIC0gbGltaXRBZnRlcikgKyAxOwotICAgICAgICAgICAgdW5z
aWduZWQgaHlwaGVuTG9jYXRpb24gPSBsYXN0SHlwaGVuTG9jYXRpb24oU3RyaW5nVmlldyhpbmxp
bmVUZXh0SXRlbS5pbmxpbmVUZXh0Qm94KCkuY29udGVudCgpKS5zdWJzdHJpbmcoaW5saW5lVGV4
dEl0ZW0uc3RhcnQoKSwgaW5saW5lVGV4dEl0ZW0ubGVuZ3RoKCkpLCBoeXBoZW5CZWZvcmUsIHN0
eWxlLmNvbXB1dGVkTG9jYWxlKCkpOwotICAgICAgICAgICAgaWYgKCFoeXBoZW5Mb2NhdGlvbiB8
fCBoeXBoZW5Mb2NhdGlvbiA8IGxpbWl0QmVmb3JlKQotICAgICAgICAgICAgICAgIHJldHVybiB7
IH07Ci0gICAgICAgICAgICAvLyBoeXBoZW5Mb2NhdGlvbiBpcyByZWxhdGl2ZSB0byB0aGUgc3Rh
cnQgb2YgdGhpcyBJbmxpbmVJdGVtVGV4dC4KLSAgICAgICAgICAgIEFTU0VSVChpbmxpbmVUZXh0
SXRlbS5zdGFydCgpICsgaHlwaGVuTG9jYXRpb24gPCBpbmxpbmVUZXh0SXRlbS5lbmQoKSk7Ci0g
ICAgICAgICAgICBhdXRvIHRyYWlsaW5nUGFydGlhbFJ1bldpZHRoV2l0aEh5cGhlbiA9IFRleHRV
dGlsOjp3aWR0aChpbmxpbmVUZXh0SXRlbSwgZm9udENhc2NhZGUsIGlubGluZVRleHRJdGVtLnN0
YXJ0KCksIGlubGluZVRleHRJdGVtLnN0YXJ0KCkgKyBoeXBoZW5Mb2NhdGlvbiwgbG9naWNhbExl
ZnQpOwotICAgICAgICAgICAgcmV0dXJuIFBhcnRpYWxSdW4geyBoeXBoZW5Mb2NhdGlvbiwgdHJh
aWxpbmdQYXJ0aWFsUnVuV2lkdGhXaXRoSHlwaGVuLCBoeXBoZW5XaWR0aCB9OwotICAgICAgICB9
OwotICAgICAgICBpZiAoYXV0byBwYXJ0aWFsUnVuID0gdHJ5QnJlYWtpbmdBdEh5cGhlbmF0aW9u
T3Bwb3J0dW5pdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBwYXJ0aWFsUnVuOwotICAgIH0KLQot
ICAgIGlmIChicmVha1J1bGVzLmNvbnRhaW5zKFdvcmRCcmVha1J1bGU6OkF0QXJiaXRyYXJ5UG9z
aXRpb24pKSB7Ci0gICAgICAgIGF1dG8gdHJ5QnJlYWtpbmdBdEFyYml0cmFyeVBvc2l0aW9uID0g
WyZdKCkgLT4gUGFydGlhbFJ1biB7Ci0gICAgICAgICAgICBpZiAoIWlubGluZVRleHRJdGVtLmxl
bmd0aCgpKSB7Ci0gICAgICAgICAgICAgICAgLy8gRW1wdHkgdGV4dCBydW5zIG1heSBiZSBicmVh
a2FibGUgYmFzZWQgb24gc3R5bGUsIGJ1dCBpbiBwcmFjdGljZSB3ZSBjYW4ndCByZWFsbHkgc3Bs
aXQgdGhlbSBhbnkgZnVydGhlci4KLSAgICAgICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgaWYgKGF2YWlsYWJsZVNwYWNlSXNJbmZpbml0ZSkgewotICAg
ICAgICAgICAgICAgIC8vIFdoZW4gdGhlIHJ1biBjYW4gYmUgc3BsaXQgYXQgYXJiaXRyYXJ5IHBv
c2l0aW9uIGxldCdzIGp1c3QgcmV0dXJuIHRoZSBlbnRpcmUgcnVuIHdoZW4gaXQgaXMgaW50ZW5k
ZWQgdG8gZml0IG9uIHRoZSBsaW5lLgotICAgICAgICAgICAgICAgIEFTU0VSVChpbmxpbmVUZXh0
SXRlbS5sZW5ndGgoKSk7Ci0gICAgICAgICAgICAgICAgYXV0byB0cmFpbGluZ1BhcnRpYWxSdW5X
aWR0aCA9IFRleHRVdGlsOjp3aWR0aChpbmxpbmVUZXh0SXRlbSwgZm9udENhc2NhZGUsIGxvZ2lj
YWxMZWZ0KTsKLSAgICAgICAgICAgICAgICByZXR1cm4geyBpbmxpbmVUZXh0SXRlbS5sZW5ndGgo
KSwgdHJhaWxpbmdQYXJ0aWFsUnVuV2lkdGggfTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGlmICghKmF2YWlsYWJsZVdpZHRoKSB7Ci0gICAgICAgICAgICAgICAgLy8gRmFzdCBwYXRoIGZv
ciBjYXNlcyB3aGVuIHRoZXJlJ3Mgbm8gcm9vbSBhdCBhbGwuIFRoZSBjb250ZW50IGlzIGJyZWFr
YWJsZSBidXQgd2UgZG9uJ3QgaGF2ZSBzcGFjZSBmb3IgaXQuCi0gICAgICAgICAgICAgICAgcmV0
dXJuIHsgfTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGF1dG8gbWlkV29yZEJyZWFrID0g
VGV4dFV0aWw6Om1pZFdvcmRCcmVhayhpbmxpbmVUZXh0SXRlbSwgZm9udENhc2NhZGUsIGNhbmRp
ZGF0ZVJ1bi5sb2dpY2FsV2lkdGgsICphdmFpbGFibGVXaWR0aCwgbG9naWNhbExlZnQpOwotICAg
ICAgICAgICAgcmV0dXJuIHsgbWlkV29yZEJyZWFrLmxlbmd0aCwgbWlkV29yZEJyZWFrLmxvZ2lj
YWxXaWR0aCB9OwotICAgICAgICB9OwotICAgICAgICAvLyBXaXRoIGFyYml0cmFyeSBicmVha2lu
ZyB0aGVyZSdzIGFsd2F5cyBhIHZhbGlkIGJyZWFraW5nIHBvc2l0aW9uIChldmVuIGlmIGl0IGlz
IGJlZm9yZSB0aGUgZmlyc3QgcG9zaXRpb24pLgotICAgICAgICByZXR1cm4gdHJ5QnJlYWtpbmdB
dEFyYml0cmFyeVBvc2l0aW9uKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHsgfTsKLX0KLQogdm9p
ZCBJbmxpbmVDb250ZW50QnJlYWtlcjo6Q29udGludW91c0NvbnRlbnQ6OmFwcGVuZChjb25zdCBJ
bmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIElubGluZUxh
eW91dFVuaXQgbG9naWNhbFdpZHRoLCBzdGQ6Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IGNv
bGxhcHNpYmxlV2lkdGgpCiB7CiAgICAgQVNTRVJUKGlubGluZUl0ZW0uaXNUZXh0KCkgfHwgaW5s
aW5lSXRlbS5pc0JveCgpIHx8IGlubGluZUl0ZW0uaXNJbmxpbmVCb3hTdGFydCgpIHx8IGlubGlu
ZUl0ZW0uaXNJbmxpbmVCb3hFbmQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QnJlYWtlci5oIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVu
dEJyZWFrZXIuaAppbmRleCBjM2E0ZDllMTBiOGI3ZDNhMjhmZDliY2I5YzQxZGRiOGUzOTcxZTVl
Li41NzNiYTRkOTAwYTNkNGYzZDQyODI3YzA5OGI3MDNjYTYxOWI4MGU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250
ZW50QnJlYWtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91dCB7CiAKIGNsYXNzIElubGluZUl0ZW07Citz
dHJ1Y3QgQ2FuZGlkYXRlVGV4dFJ1bkZvckJyZWFraW5nOwogCiBjbGFzcyBJbmxpbmVDb250ZW50
QnJlYWtlciB7CiBwdWJsaWM6CkBAIC0xMzQsNyArMTM1LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
c3RkOjpvcHRpb25hbDxCcmVha2luZ1Bvc2l0aW9uPiBicmVha2luZ1Bvc2l0aW9uIHsgfTsgLy8g
V2hlcmUgd2UgYWN0dWFsbHkgYnJlYWsgdGhpcyBvdmVyZmxvd2luZyBjb250ZW50LgogICAgIH07
CiAgICAgT3ZlcmZsb3dpbmdUZXh0Q29udGVudCBwcm9jZXNzT3ZlcmZsb3dpbmdDb250ZW50V2l0
aFRleHQoY29uc3QgQ29udGludW91c0NvbnRlbnQmLCBjb25zdCBMaW5lU3RhdHVzJikgY29uc3Q7
Ci0gICAgc3RkOjpvcHRpb25hbDxQYXJ0aWFsUnVuPiB0cnlCcmVha2luZ1RleHRSdW4oY29uc3Qg
Q29udGludW91c0NvbnRlbnQ6OlJ1bkxpc3QmIHJ1bnMsIHNpemVfdCBjYW5kaWRhdGVSdW5JbmRl
eCwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCwgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlv
dXRVbml0PiBhdmFpbGFibGVXaWR0aCwgYm9vbCBoYXNXcmFwT3Bwb3J0dW5pdHlBdFByZXZpb3Vz
UG9zaXRpb24pIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8UGFydGlhbFJ1bj4gdHJ5QnJlYWtp
bmdUZXh0UnVuKGNvbnN0IENvbnRpbnVvdXNDb250ZW50OjpSdW5MaXN0JiBydW5zLCBjb25zdCBD
YW5kaWRhdGVUZXh0UnVuRm9yQnJlYWtpbmcmLCBJbmxpbmVMYXlvdXRVbml0IGF2YWlsYWJsZVdp
ZHRoLCBib29sIGxpbmVIYXNXcmFwT3Bwb3J0dW5pdHlBdFByZXZpb3VzUG9zaXRpb24pIGNvbnN0
OwogICAgIHN0ZDo6b3B0aW9uYWw8T3ZlcmZsb3dpbmdUZXh0Q29udGVudDo6QnJlYWtpbmdQb3Np
dGlvbj4gdHJ5QnJlYWtpbmdPdmVyZmxvd2luZ1J1bihjb25zdCBMaW5lU3RhdHVzJiwgY29uc3Qg
Q29udGludW91c0NvbnRlbnQ6OlJ1bkxpc3QmLCBzaXplX3Qgb3ZlcmZsb3dpbmdSdW5JbmRleCwg
SW5saW5lTGF5b3V0VW5pdCBub25PdmVyZmxvd2luZ0NvbnRlbnRXaWR0aCkgY29uc3Q7CiAgICAg
c3RkOjpvcHRpb25hbDxPdmVyZmxvd2luZ1RleHRDb250ZW50OjpCcmVha2luZ1Bvc2l0aW9uPiB0
cnlCcmVha2luZ1ByZXZpb3VzTm9uT3ZlcmZsb3dpbmdSdW5zKGNvbnN0IExpbmVTdGF0dXMmLCBj
b25zdCBDb250aW51b3VzQ29udGVudDo6UnVuTGlzdCYsIHNpemVfdCBvdmVyZmxvd2luZ1J1bklu
ZGV4LCBJbmxpbmVMYXlvdXRVbml0IG5vbk92ZXJmbG93aW5nQ29udGVudFdpZHRoKSBjb25zdDsK
ICAgICBzdGQ6Om9wdGlvbmFsPE92ZXJmbG93aW5nVGV4dENvbnRlbnQ6OkJyZWFraW5nUG9zaXRp
b24+IHRyeUJyZWFraW5nTmV4dE92ZXJmbG93aW5nUnVucyhjb25zdCBMaW5lU3RhdHVzJiwgY29u
c3QgQ29udGludW91c0NvbnRlbnQ6OlJ1bkxpc3QmLCBzaXplX3Qgb3ZlcmZsb3dpbmdSdW5JbmRl
eCwgSW5saW5lTGF5b3V0VW5pdCBub25PdmVyZmxvd2luZ0NvbnRlbnRXaWR0aCkgY29uc3Q7Cg==
</data>
<flag name="commit-queue"
          id="465490"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>